@itwin/appui-react 4.5.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/CHANGELOG.md +13 -1
  2. package/lib/cjs/appui-react/UiFramework.js +7 -4
  3. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  4. package/lib/cjs/appui-react/accudraw/MenuButton.d.ts +2 -2
  5. package/lib/cjs/appui-react/accudraw/MenuButton.d.ts.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/MenuButton.js.map +1 -1
  7. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  8. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  9. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +2 -1
  10. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  11. package/lib/cjs/appui-react/childwindow/CopyStyles.d.ts.map +1 -1
  12. package/lib/cjs/appui-react/childwindow/CopyStyles.js +3 -1
  13. package/lib/cjs/appui-react/childwindow/CopyStyles.js.map +1 -1
  14. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  15. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +3 -2
  16. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  17. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  18. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  19. package/lib/cjs/appui-react/configurableui/TimeTracker.js +2 -1
  20. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  21. package/lib/cjs/appui-react/content/ContentLayout.js +12 -9
  22. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  23. package/lib/cjs/appui-react/content/DefaultViewOverlay.js +4 -3
  24. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  25. package/lib/cjs/appui-react/content/FloatingViewportContent.js +2 -1
  26. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  27. package/lib/cjs/appui-react/content/IModelViewport.js +6 -3
  28. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  29. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +2 -1
  30. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  31. package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
  32. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  33. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +12 -10
  34. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  35. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts +6 -6
  36. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  37. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  38. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  39. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +3 -2
  40. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  41. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.d.ts +4 -4
  42. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.d.ts.map +1 -1
  43. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  44. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +5 -5
  45. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  46. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  47. package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.d.ts +2 -2
  48. package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.d.ts.map +1 -1
  49. package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  50. package/lib/cjs/appui-react/dialog/ContentDialog.js +6 -3
  51. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  52. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +3 -2
  53. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  54. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts +1 -2
  55. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  56. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  57. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +22 -26
  58. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  59. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +166 -217
  60. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  61. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts +1 -7
  62. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  63. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +0 -6
  64. package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  65. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +3 -2
  66. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  67. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +2 -1
  68. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  69. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  70. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  71. package/lib/cjs/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  72. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  73. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +11 -7
  74. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  75. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +11 -7
  76. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  77. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +13 -8
  78. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  79. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.d.ts.map +1 -1
  80. package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  81. package/lib/cjs/appui-react/messages/ActivityMessage.js +7 -5
  82. package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
  83. package/lib/cjs/appui-react/messages/MessageManager.d.ts +0 -1
  84. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  85. package/lib/cjs/appui-react/messages/MessageManager.js +1 -2
  86. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  87. package/lib/cjs/appui-react/messages/Pointer.d.ts +1 -2
  88. package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/messages/Pointer.js +1 -1
  90. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  91. package/lib/cjs/appui-react/pickers/ViewSelector.js +6 -5
  92. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  93. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +2 -1
  94. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  95. package/lib/cjs/appui-react/popup/PopupManager.js +2 -1
  96. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  97. package/lib/cjs/appui-react/popup/PositionPopup.d.ts +2 -2
  98. package/lib/cjs/appui-react/popup/PositionPopup.d.ts.map +1 -1
  99. package/lib/cjs/appui-react/popup/PositionPopup.js.map +1 -1
  100. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +2 -2
  101. package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  102. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +1 -2
  103. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  104. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  105. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts +16 -20
  106. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  107. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +86 -116
  108. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  109. package/lib/cjs/appui-react/statusbar/Indicator.js +2 -1
  110. package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
  111. package/lib/cjs/appui-react/statusbar/StatusBar.js +5 -3
  112. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  113. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  114. package/lib/cjs/appui-react/statusfields/MessageCenter.js +1 -2
  115. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  116. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  117. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  118. package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.d.ts +36 -0
  119. package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.d.ts.map +1 -0
  120. package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.js +134 -0
  121. package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -0
  122. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +1 -1
  123. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  124. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
  125. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  126. package/lib/cjs/appui-react/syncui/UiSyncEvent.d.ts +16 -0
  127. package/lib/cjs/appui-react/syncui/UiSyncEvent.d.ts.map +1 -0
  128. package/lib/cjs/appui-react/syncui/UiSyncEvent.js +18 -0
  129. package/lib/cjs/appui-react/syncui/UiSyncEvent.js.map +1 -0
  130. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js +4 -6
  131. package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  132. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js +4 -3
  133. package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
  134. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +17 -10
  135. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  136. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +2 -3
  137. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  138. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +14 -12
  139. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  140. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +10 -9
  141. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  142. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +2 -1
  143. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  144. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +14 -8
  145. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  146. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  147. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  148. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +1 -1
  149. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  150. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  151. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  152. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  153. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  154. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +3 -3
  155. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  156. package/lib/cjs/appui-react/widget-panels/Content.js +9 -8
  157. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  158. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +7 -29
  159. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  160. package/lib/cjs/appui-react/widget-panels/Frontstage.js +128 -463
  161. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  162. package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
  163. package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
  164. package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
  165. package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
  166. package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  167. package/lib/cjs/appui-react/widget-panels/ToolSettings.js +34 -15
  168. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  169. package/lib/cjs/appui-react/widget-panels/Toolbars.js +3 -2
  170. package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
  171. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  172. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  173. package/lib/cjs/appui-react/widgets/Widget.d.ts +10 -4
  174. package/lib/cjs/appui-react/widgets/Widget.d.ts.map +1 -1
  175. package/lib/cjs/appui-react/widgets/Widget.js.map +1 -1
  176. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +9 -29
  177. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  178. package/lib/cjs/appui-react/widgets/WidgetDef.js +90 -46
  179. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  180. package/lib/cjs/appui-react/widgets/WidgetHost.js +3 -2
  181. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  182. package/lib/cjs/appui-react.d.ts +1 -0
  183. package/lib/cjs/appui-react.d.ts.map +1 -1
  184. package/lib/cjs/appui-react.js +1 -0
  185. package/lib/cjs/appui-react.js.map +1 -1
  186. package/lib/esm/appui-react/UiFramework.js +7 -4
  187. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  188. package/lib/esm/appui-react/accudraw/MenuButton.d.ts +2 -2
  189. package/lib/esm/appui-react/accudraw/MenuButton.d.ts.map +1 -1
  190. package/lib/esm/appui-react/accudraw/MenuButton.js.map +1 -1
  191. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  192. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  193. package/lib/esm/appui-react/backstage/BackstageComposerItem.js +2 -1
  194. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  195. package/lib/esm/appui-react/childwindow/CopyStyles.d.ts.map +1 -1
  196. package/lib/esm/appui-react/childwindow/CopyStyles.js +3 -1
  197. package/lib/esm/appui-react/childwindow/CopyStyles.js.map +1 -1
  198. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
  199. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +3 -2
  200. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  201. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  202. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  203. package/lib/esm/appui-react/configurableui/TimeTracker.js +2 -1
  204. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  205. package/lib/esm/appui-react/content/ContentLayout.js +12 -9
  206. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  207. package/lib/esm/appui-react/content/DefaultViewOverlay.js +4 -3
  208. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  209. package/lib/esm/appui-react/content/FloatingViewportContent.js +2 -1
  210. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  211. package/lib/esm/appui-react/content/IModelViewport.js +6 -3
  212. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  213. package/lib/esm/appui-react/content/InternalContentLayoutManager.js +2 -1
  214. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  215. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -1
  216. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  217. package/lib/esm/appui-react/content/split-pane/SplitPane.js +12 -10
  218. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  219. package/lib/esm/appui-react/cursor/CursorInformation.d.ts +6 -6
  220. package/lib/esm/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  221. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  222. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  223. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +3 -2
  224. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  225. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.d.ts +4 -4
  226. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.d.ts.map +1 -1
  227. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  228. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +5 -5
  229. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  230. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  231. package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.d.ts +2 -2
  232. package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.d.ts.map +1 -1
  233. package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
  234. package/lib/esm/appui-react/dialog/ContentDialog.js +6 -3
  235. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  236. package/lib/esm/appui-react/dialog/DialogManagerBase.js +3 -2
  237. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  238. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts +1 -2
  239. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  240. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  241. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +22 -26
  242. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  243. package/lib/esm/appui-react/frontstage/FrontstageDef.js +170 -221
  244. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  245. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts +1 -7
  246. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
  247. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +0 -6
  248. package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  249. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +3 -2
  250. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  251. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +2 -1
  252. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  253. package/lib/esm/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  254. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  255. package/lib/esm/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  256. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  257. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +11 -7
  258. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  259. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +11 -7
  260. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  261. package/lib/esm/appui-react/hooks/useSolarDataProvider.js +13 -8
  262. package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  263. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.d.ts.map +1 -1
  264. package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  265. package/lib/esm/appui-react/messages/ActivityMessage.js +7 -5
  266. package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
  267. package/lib/esm/appui-react/messages/MessageManager.d.ts +0 -1
  268. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  269. package/lib/esm/appui-react/messages/MessageManager.js +1 -2
  270. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  271. package/lib/esm/appui-react/messages/Pointer.d.ts +1 -2
  272. package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
  273. package/lib/esm/appui-react/messages/Pointer.js +1 -1
  274. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  275. package/lib/esm/appui-react/pickers/ViewSelector.js +6 -5
  276. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  277. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +2 -1
  278. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  279. package/lib/esm/appui-react/popup/PopupManager.js +2 -1
  280. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  281. package/lib/esm/appui-react/popup/PositionPopup.d.ts +2 -2
  282. package/lib/esm/appui-react/popup/PositionPopup.d.ts.map +1 -1
  283. package/lib/esm/appui-react/popup/PositionPopup.js.map +1 -1
  284. package/lib/esm/appui-react/selection/SelectionContextItemDef.js +2 -2
  285. package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
  286. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +1 -2
  287. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  288. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  289. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts +16 -20
  290. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  291. package/lib/esm/appui-react/stagepanels/StagePanelDef.js +84 -115
  292. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  293. package/lib/esm/appui-react/statusbar/Indicator.js +2 -1
  294. package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
  295. package/lib/esm/appui-react/statusbar/StatusBar.js +5 -3
  296. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  297. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  298. package/lib/esm/appui-react/statusfields/MessageCenter.js +1 -2
  299. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  300. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  301. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  302. package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.d.ts +36 -0
  303. package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.d.ts.map +1 -0
  304. package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.js +130 -0
  305. package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -0
  306. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +1 -1
  307. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  308. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
  309. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  310. package/lib/esm/appui-react/syncui/UiSyncEvent.d.ts +16 -0
  311. package/lib/esm/appui-react/syncui/UiSyncEvent.d.ts.map +1 -0
  312. package/lib/esm/appui-react/syncui/UiSyncEvent.js +14 -0
  313. package/lib/esm/appui-react/syncui/UiSyncEvent.js.map +1 -0
  314. package/lib/esm/appui-react/toolbar/ToolbarHelper.js +4 -6
  315. package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
  316. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js +4 -3
  317. package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
  318. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +17 -10
  319. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  320. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +2 -3
  321. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  322. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +14 -12
  323. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  324. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +10 -9
  325. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  326. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +2 -1
  327. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  328. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +14 -8
  329. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  330. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  331. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  332. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +1 -1
  333. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  334. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  335. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  336. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  337. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  338. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +3 -3
  339. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  340. package/lib/esm/appui-react/widget-panels/Content.js +9 -8
  341. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  342. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +7 -29
  343. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  344. package/lib/esm/appui-react/widget-panels/Frontstage.js +131 -462
  345. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  346. package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
  347. package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
  348. package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
  349. package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
  350. package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
  351. package/lib/esm/appui-react/widget-panels/ToolSettings.js +34 -15
  352. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  353. package/lib/esm/appui-react/widget-panels/Toolbars.js +3 -2
  354. package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
  355. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  356. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  357. package/lib/esm/appui-react/widgets/Widget.d.ts +10 -4
  358. package/lib/esm/appui-react/widgets/Widget.d.ts.map +1 -1
  359. package/lib/esm/appui-react/widgets/Widget.js.map +1 -1
  360. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +9 -29
  361. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  362. package/lib/esm/appui-react/widgets/WidgetDef.js +90 -46
  363. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  364. package/lib/esm/appui-react/widgets/WidgetHost.js +3 -2
  365. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  366. package/lib/esm/appui-react.d.ts +1 -0
  367. package/lib/esm/appui-react.d.ts.map +1 -1
  368. package/lib/esm/appui-react.js +1 -0
  369. package/lib/esm/appui-react.js.map +1 -1
  370. package/package.json +10 -10
@@ -1 +1 @@
1
- {"version":3,"file":"CursorPopup.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorpopup/CursorPopup.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,oBAAoB,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAO,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAK9C;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,EAAE,EAAE,UAAU,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACzC;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAA;IACJ,OAAO,IAAA;CACR;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAC9C,gBAAgB,EAChB,gBAAgB,CACjB;IACC,OAAO,CAAC,UAAU,CAAkB;IAEpC,gBAAgB;IAChB,OAAc,WAAW,SAAO;IAEhC,gBAAgB;gBACJ,KAAK,EAAE,gBAAgB;IASnB,iBAAiB;IAOjB,oBAAoB;IAOpC,OAAO,CAAC,8BAA8B,CAQpC;IAEF,gBAAgB;WACF,YAAY,CACxB,EAAE,EAAE,UAAU,EACd,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,gBAAgB,EAAE,gBAAgB,GACjC,cAAc;IA2DjB,OAAO,CAAC,SAAS;IAiBjB,gBAAgB;IACA,MAAM;CAoCvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,eAEvD"}
1
+ {"version":3,"file":"CursorPopup.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorpopup/CursorPopup.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,oBAAoB,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAO,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAK9C;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,KAAK,CAAC;IACd,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;CACzC;AAED;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,IAAA;IACJ,OAAO,IAAA;CACR;AAED;;GAEG;AACH,UAAU,gBAAgB;IACxB,SAAS,EAAE,eAAe,CAAC;IAC3B,IAAI,EAAE,IAAI,CAAC;CACZ;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,KAAK,CAAC,SAAS,CAC9C,gBAAgB,EAChB,gBAAgB,CACjB;IACC,OAAO,CAAC,UAAU,CAAkB;IAEpC,gBAAgB;IAChB,OAAc,WAAW,SAAO;IAEhC,gBAAgB;gBACJ,KAAK,EAAE,gBAAgB;IASnB,iBAAiB;IAOjB,oBAAoB;IAOpC,OAAO,CAAC,8BAA8B,CAQpC;IAEF,gBAAgB;WACF,YAAY,CACxB,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,KAAK,EACb,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,gBAAgB,EAAE,gBAAgB,GACjC,cAAc;IA2DjB,OAAO,CAAC,SAAS;IAiBjB,gBAAgB;IACA,MAAM;CAoCvB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,eAEvD"}
@@ -1 +1 @@
1
- {"version":3,"file":"CursorPopup.js","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorpopup/CursorPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport \"./CursorPopup.scss\";\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport type { PointProps } from \"@itwin/appui-abstract\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport type {\n CommonDivProps,\n CommonProps,\n RectangleProps,\n SizeProps,\n} from \"@itwin/core-react\";\nimport { Div, Size } from \"@itwin/core-react\";\nimport { TitleBar } from \"@itwin/appui-layout-react\";\nimport type { CursorPopupFadeOutEventArgs } from \"./CursorPopupManager\";\nimport { CursorPopupManager } from \"./CursorPopupManager\";\n\n/** Properties for the [[CursorPopup]] React component\n * @public\n */\nexport interface CursorPopupProps extends CommonProps {\n id: string;\n content: React.ReactNode;\n pt: PointProps;\n offset: PointProps;\n relativePosition: RelativePosition;\n title?: string;\n shadow?: boolean;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n}\n\n/** Enum for showing CursorPopup\n * @internal - unit testing\n */\nexport enum CursorPopupShow {\n Open,\n FadeOut,\n}\n\n/** State for the [[CursorPopup]] React component\n * @internal\n */\ninterface CursorPopupState {\n showPopup: CursorPopupShow;\n size: Size;\n}\n\n/** CursorPopup React component\n * @public\n */\nexport class CursorPopup extends React.Component<\n CursorPopupProps,\n CursorPopupState\n> {\n private _isMounted: boolean = false;\n\n /** @internal */\n public static fadeOutTime = 500;\n\n /** @internal */\n constructor(props: CursorPopupProps) {\n super(props);\n\n this.state = {\n showPopup: CursorPopupShow.Open,\n size: new Size(-1, -1),\n };\n }\n\n public override componentDidMount() {\n this._isMounted = true;\n CursorPopupManager.onCursorPopupFadeOutEvent.addListener(\n this._handleCursorPopupFadeOutEvent\n );\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n CursorPopupManager.onCursorPopupFadeOutEvent.removeListener(\n this._handleCursorPopupFadeOutEvent\n );\n }\n\n private _handleCursorPopupFadeOutEvent = (\n args: CursorPopupFadeOutEventArgs\n ) => {\n if (this.props.id === args.id) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ showPopup: CursorPopupShow.FadeOut });\n }\n };\n\n /** @internal */\n public static getPopupRect(\n pt: PointProps,\n offset: PointProps,\n popupSize: SizeProps | undefined,\n relativePosition: RelativePosition\n ): RectangleProps {\n const popupRect = { top: 0, left: 0, right: 0, bottom: 0 };\n\n if (popupSize === undefined) return popupRect;\n\n switch (relativePosition) {\n case RelativePosition.Top:\n popupRect.bottom = pt.y - offset.y;\n popupRect.left = pt.x - popupSize.width / 2;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.Left:\n popupRect.right = pt.x - offset.x;\n popupRect.top = pt.y - popupSize.height / 2;\n popupRect.left = popupRect.right - popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n break;\n case RelativePosition.Right:\n popupRect.left = pt.x + offset.x;\n popupRect.top = pt.y - popupSize.height / 2;\n popupRect.right = popupRect.left + popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n break;\n case RelativePosition.Bottom:\n popupRect.top = pt.y + offset.y;\n popupRect.left = pt.x - popupSize.width / 2;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.TopLeft:\n popupRect.bottom = pt.y - offset.y;\n popupRect.right = pt.x - offset.x;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.left = popupRect.right - popupSize.width;\n break;\n case RelativePosition.TopRight:\n popupRect.bottom = pt.y - offset.y;\n popupRect.left = pt.x + offset.x;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.BottomLeft:\n popupRect.top = pt.y + offset.y;\n popupRect.right = pt.x - offset.x;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.left = popupRect.right - popupSize.width;\n break;\n case RelativePosition.BottomRight:\n popupRect.top = pt.y + offset.y;\n popupRect.left = pt.x + offset.x;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n }\n\n return popupRect;\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n // istanbul ignore else\n if (div) {\n const rect = div.getBoundingClientRect();\n const newSize = new Size(rect.width, rect.height);\n\n // istanbul ignore else\n if (!this.state.size.equals(newSize)) {\n // istanbul ignore else\n if (this.props.onSizeKnown) this.props.onSizeKnown(newSize);\n\n // istanbul ignore else\n if (this._isMounted) this.setState({ size: newSize });\n }\n }\n }\n\n /** @internal */\n public override render() {\n const popupRect = CursorPopup.getPopupRect(\n this.props.pt,\n this.props.offset,\n this.state.size,\n this.props.relativePosition\n );\n\n const positioningStyle: React.CSSProperties = {\n left: popupRect.left,\n top: popupRect.top,\n };\n\n const classNames = classnames(\n \"uifw-cursorpopup\",\n this.props.shadow && \"core-popup-shadow\",\n this.state.showPopup === CursorPopupShow.FadeOut &&\n \"uifw-cursorpopup-fadeOut\"\n );\n\n return (\n <div\n className={classNames}\n ref={(e) => this.setDivRef(e)}\n style={positioningStyle}\n >\n {this.props.title && (\n <TitleBar\n title={this.props.title}\n className=\"uifw-cursorpopup-title\"\n />\n )}\n {this.props.content}\n </div>\n );\n }\n}\n\n/** CursorPopup content with padding\n * @public\n */\nexport function CursorPopupContent(props: CommonDivProps) {\n return <Div {...props} mainClassName=\"uifw-cursorpopup-content\" />;\n}\n"]}
1
+ {"version":3,"file":"CursorPopup.js","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorpopup/CursorPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport \"./CursorPopup.scss\";\nimport * as React from \"react\";\nimport classnames from \"classnames\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport type {\n CommonDivProps,\n CommonProps,\n RectangleProps,\n SizeProps,\n} from \"@itwin/core-react\";\nimport { Div, Size } from \"@itwin/core-react\";\nimport { TitleBar } from \"@itwin/appui-layout-react\";\nimport type { CursorPopupFadeOutEventArgs } from \"./CursorPopupManager\";\nimport { CursorPopupManager } from \"./CursorPopupManager\";\n\n/** Properties for the [[CursorPopup]] React component\n * @public\n */\nexport interface CursorPopupProps extends CommonProps {\n id: string;\n content: React.ReactNode;\n pt: XAndY;\n offset: XAndY;\n relativePosition: RelativePosition;\n title?: string;\n shadow?: boolean;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n}\n\n/** Enum for showing CursorPopup\n * @internal - unit testing\n */\nexport enum CursorPopupShow {\n Open,\n FadeOut,\n}\n\n/** State for the [[CursorPopup]] React component\n * @internal\n */\ninterface CursorPopupState {\n showPopup: CursorPopupShow;\n size: Size;\n}\n\n/** CursorPopup React component\n * @public\n */\nexport class CursorPopup extends React.Component<\n CursorPopupProps,\n CursorPopupState\n> {\n private _isMounted: boolean = false;\n\n /** @internal */\n public static fadeOutTime = 500;\n\n /** @internal */\n constructor(props: CursorPopupProps) {\n super(props);\n\n this.state = {\n showPopup: CursorPopupShow.Open,\n size: new Size(-1, -1),\n };\n }\n\n public override componentDidMount() {\n this._isMounted = true;\n CursorPopupManager.onCursorPopupFadeOutEvent.addListener(\n this._handleCursorPopupFadeOutEvent\n );\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n CursorPopupManager.onCursorPopupFadeOutEvent.removeListener(\n this._handleCursorPopupFadeOutEvent\n );\n }\n\n private _handleCursorPopupFadeOutEvent = (\n args: CursorPopupFadeOutEventArgs\n ) => {\n if (this.props.id === args.id) {\n // istanbul ignore else\n if (this._isMounted)\n this.setState({ showPopup: CursorPopupShow.FadeOut });\n }\n };\n\n /** @internal */\n public static getPopupRect(\n pt: XAndY,\n offset: XAndY,\n popupSize: SizeProps | undefined,\n relativePosition: RelativePosition\n ): RectangleProps {\n const popupRect = { top: 0, left: 0, right: 0, bottom: 0 };\n\n if (popupSize === undefined) return popupRect;\n\n switch (relativePosition) {\n case RelativePosition.Top:\n popupRect.bottom = pt.y - offset.y;\n popupRect.left = pt.x - popupSize.width / 2;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.Left:\n popupRect.right = pt.x - offset.x;\n popupRect.top = pt.y - popupSize.height / 2;\n popupRect.left = popupRect.right - popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n break;\n case RelativePosition.Right:\n popupRect.left = pt.x + offset.x;\n popupRect.top = pt.y - popupSize.height / 2;\n popupRect.right = popupRect.left + popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n break;\n case RelativePosition.Bottom:\n popupRect.top = pt.y + offset.y;\n popupRect.left = pt.x - popupSize.width / 2;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.TopLeft:\n popupRect.bottom = pt.y - offset.y;\n popupRect.right = pt.x - offset.x;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.left = popupRect.right - popupSize.width;\n break;\n case RelativePosition.TopRight:\n popupRect.bottom = pt.y - offset.y;\n popupRect.left = pt.x + offset.x;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.BottomLeft:\n popupRect.top = pt.y + offset.y;\n popupRect.right = pt.x - offset.x;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.left = popupRect.right - popupSize.width;\n break;\n case RelativePosition.BottomRight:\n popupRect.top = pt.y + offset.y;\n popupRect.left = pt.x + offset.x;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n }\n\n return popupRect;\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n // istanbul ignore else\n if (div) {\n const rect = div.getBoundingClientRect();\n const newSize = new Size(rect.width, rect.height);\n\n // istanbul ignore else\n if (!this.state.size.equals(newSize)) {\n // istanbul ignore else\n if (this.props.onSizeKnown) this.props.onSizeKnown(newSize);\n\n // istanbul ignore else\n if (this._isMounted) this.setState({ size: newSize });\n }\n }\n }\n\n /** @internal */\n public override render() {\n const popupRect = CursorPopup.getPopupRect(\n this.props.pt,\n this.props.offset,\n this.state.size,\n this.props.relativePosition\n );\n\n const positioningStyle: React.CSSProperties = {\n left: popupRect.left,\n top: popupRect.top,\n };\n\n const classNames = classnames(\n \"uifw-cursorpopup\",\n this.props.shadow && \"core-popup-shadow\",\n this.state.showPopup === CursorPopupShow.FadeOut &&\n \"uifw-cursorpopup-fadeOut\"\n );\n\n return (\n <div\n className={classNames}\n ref={(e) => this.setDivRef(e)}\n style={positioningStyle}\n >\n {this.props.title && (\n <TitleBar\n title={this.props.title}\n className=\"uifw-cursorpopup-title\"\n />\n )}\n {this.props.content}\n </div>\n );\n }\n}\n\n/** CursorPopup content with padding\n * @public\n */\nexport function CursorPopupContent(props: CommonDivProps) {\n return <Div {...props} mainClassName=\"uifw-cursorpopup-content\" />;\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  * @module Cursor
3
3
  */
4
4
  import * as React from "react";
5
- import type { PointProps } from "@itwin/appui-abstract";
5
+ import type { XAndY } from "@itwin/core-geometry";
6
6
  import { RelativePosition, UiEvent } from "@itwin/appui-abstract";
7
7
  import { Point, Size } from "@itwin/core-react";
8
8
  /** Options for the [[CursorPopupManager]] open method
@@ -22,7 +22,7 @@ export interface CursorPopupOptions {
22
22
  * @internal
23
23
  */
24
24
  export interface CursorPopupUpdatePositionEventArgs {
25
- pt: PointProps;
25
+ pt: XAndY;
26
26
  }
27
27
  /** CursorPopup Update Position Event class.
28
28
  * @internal
@@ -77,13 +77,13 @@ export declare class CursorPopupManager {
77
77
  private static pushPopup;
78
78
  /** Called to open popup with a new set of properties
79
79
  */
80
- static open(id: string, content: React.ReactNode, pt: PointProps, offset: PointProps, relativePosition: RelativePosition, priority?: number, options?: CursorPopupOptions): void;
80
+ static open(id: string, content: React.ReactNode, pt: XAndY, offset: XAndY, relativePosition: RelativePosition, priority?: number, options?: CursorPopupOptions): void;
81
81
  /** Called to update popup with a new set of properties
82
82
  */
83
- static update(id: string, content: React.ReactNode, pt: PointProps, offset: PointProps, relativePosition: RelativePosition, priority?: number): void;
83
+ static update(id: string, content: React.ReactNode, pt: XAndY, offset: XAndY, relativePosition: RelativePosition, priority?: number): void;
84
84
  /** Called to move the open popup to new location
85
85
  */
86
- static updatePosition(pt: PointProps): void;
86
+ static updatePosition(pt: XAndY): void;
87
87
  /** Called when tool wants to close the popup
88
88
  */
89
89
  static close(id: string, apply: boolean, fadeOut?: boolean): void;
@@ -1 +1 @@
1
- {"version":3,"file":"CursorPopupManager.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorpopup/CursorPopupManager.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CursorPopupManager.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorpopup/CursorPopupManager.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CursorPopupManager.js","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorpopup/CursorPopupManager.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,sDAA6C;AAE7C,0DAAkE;AAElE,kDAAgD;AAChD,mDAAgD;AAChD,+CAA4C;AAuB5C;;GAEG;AACH,MAAa,8BAA+B,SAAQ,wBAA2C;CAAG;AAAlG,wEAAkG;AASlG;;GAEG;AACH,MAAa,uBAAwB,SAAQ,wBAAoC;CAAG;AAApF,0DAAoF;AAiBpF;;GAEG;AACH,MAAM,wBAAyB,SAAQ,wBAAW;CAAG;AAErD;;GAEG;AACH,MAAa,kBAAkB;IAY7B,gBAAgB;IACT,MAAM,CAAC,WAAW;QACvB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;IAC/C,CAAC;IAEM,MAAM,KAAK,MAAM;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,MAAM,KAAK,UAAU;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,uBAAuB;QACpC,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,SAA0B;QACjD,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC3C,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;IAC/C,CAAC;IAED;OACG;IACI,MAAM,CAAC,IAAI,CAChB,EAAU,EACV,OAAwB,EACxB,EAAc,EACd,MAAkB,EAClB,gBAAkC,EAClC,WAAmB,CAAC,EACpB,OAA4B;QAE5B,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAC/C,CAAC,IAAqB,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAC1C,CAAC;QACF,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;YAC5B,SAAS,CAAC,MAAM,GAAG,kBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxC,SAAS,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAC9C,SAAS,CAAC,sBAAsB,GAAG,gBAAgB,CAAC;YACpD,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC9B,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;SAC7B;aAAM;YACL,MAAM,YAAY,GAAoB;gBACpC,EAAE;gBACF,OAAO;gBACP,MAAM,EAAE,kBAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC5B,gBAAgB;gBAChB,OAAO;gBACP,sBAAsB,EAAE,gBAAgB;gBACxC,QAAQ;aACT,CAAC;YACF,kBAAkB,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;SAC5C;QAED,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;OACG;IACI,MAAM,CAAC,MAAM,CAClB,EAAU,EACV,OAAwB,EACxB,EAAc,EACd,MAAkB,EAClB,gBAAkC,EAClC,WAAmB,CAAC;QAEpB,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAC/C,CAAC,IAAqB,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAC1C,CAAC;QACF,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;YAC5B,SAAS,CAAC,MAAM,GAAG,kBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACxC,SAAS,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAC9C,SAAS,CAAC,sBAAsB,GAAG,gBAAgB,CAAC;YACpD,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC/B;aAAM;YACL,qBAAM,CAAC,QAAQ,CACb,yBAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAChC,4CAA4C,EAAE,GAAG,CAClD,CAAC;SACH;QAED,kBAAkB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;OACG;IACI,MAAM,CAAC,cAAc,CAAC,EAAc;QACzC,kBAAkB,CAAC,iCAAiC,CAAC,kBAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,kBAAkB,CAAC,gCAAgC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;OACG;IACI,MAAM,CAAC,KAAK,CAAC,EAAU,EAAE,KAAc,EAAE,OAAiB;QAC/D,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAC/C,CAAC,IAAqB,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAC1C,CAAC;QAEF,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,CAAC,OAAO,EAAE;gBACrB,IAAI,KAAK,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO;oBAAE,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBAEpE,IAAI,SAAS,CAAC,OAAO,CAAC,OAAO;oBAAE,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aAC5D;YAED,IAAI,OAAO,EAAE;gBACX,kBAAkB,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC1D,UAAU,CAAC,GAAG,EAAE;oBACd,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;gBACrC,CAAC,EAAE,yBAAW,CAAC,WAAW,CAAC,CAAC;aAC7B;iBAAM;gBACL,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;aACpC;SACF;aAAM;YACL,qBAAM,CAAC,QAAQ,CACb,yBAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAChC,2CAA2C,EAAE,GAAG,CACjD,CAAC;SACH;IACH,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,EAAU;QACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAChD,CAAC,SAA0B,EAAE,EAAE,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CACpD,CAAC;QACF,uBAAuB;QACvB,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC5C,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;SAC9C;IACH,CAAC;IAEO,MAAM,CAAC,iCAAiC,CAAC,EAAS;QACxD,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,SAA0B,EAAE,EAAE;YAC/D,SAAS,CAAC,sBAAsB,GAAG,SAAS,CAAC,gBAAgB,CAAC;YAE9D,MAAM,OAAO,GAAG,kBAAkB,CAAC,8BAA8B,CAC/D,EAAE,EACF,SAAS,CACV,CAAC;YAEF,4CAA4C;YAC5C,IAAI,OAAO,EAAE;gBACX,kBAAkB,CAAC,8BAA8B,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;aAClE;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,MAAM,CAAC,8BAA8B,CAC3C,EAAS,EACT,SAA0B;QAE1B,MAAM,SAAS,GAAG,yBAAW,CAAC,YAAY,CACxC,EAAE,EACF,kBAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAC9B,SAAS,CAAC,SAAS,EACnB,SAAS,CAAC,sBAAsB,CACjC,CAAC;QACF,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CACrD,SAAS,CAAC,sBAAsB,EAChC,SAAS,EACT,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,WAAW,CACnB,CAAC;QAEF,IAAI,OAAO;YAAE,SAAS,CAAC,sBAAsB,GAAG,MAAM,CAAC;QAEvD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,QAAQ,CACrB,KAAuB,EACvB,IAAoB,EACpB,WAAmB,EACnB,YAAoB;QAEpB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,IAAI,IAAI,CAAC,KAAK,GAAG,WAAW,EAAE;YAC5B,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,KAAK,EAAE;gBACb,KAAK,iCAAgB,CAAC,GAAG,CAAC;gBAC1B,KAAK,iCAAgB,CAAC,QAAQ;oBAC5B,MAAM,GAAG,iCAAgB,CAAC,OAAO,CAAC;oBAClC,MAAM;gBACR,KAAK,iCAAgB,CAAC,KAAK;oBACzB,MAAM,GAAG,iCAAgB,CAAC,IAAI,CAAC;oBAC/B,MAAM;gBACR,KAAK,iCAAgB,CAAC,MAAM,CAAC;gBAC7B,KAAK,iCAAgB,CAAC,WAAW;oBAC/B,MAAM,GAAG,iCAAgB,CAAC,UAAU,CAAC;oBACrC,MAAM;aACT;SACF;QAED,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACjB,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,KAAK,EAAE;gBACb,KAAK,iCAAgB,CAAC,GAAG,CAAC;gBAC1B,KAAK,iCAAgB,CAAC,OAAO;oBAC3B,MAAM,GAAG,iCAAgB,CAAC,QAAQ,CAAC;oBACnC,MAAM;gBACR,KAAK,iCAAgB,CAAC,IAAI;oBACxB,MAAM,GAAG,iCAAgB,CAAC,KAAK,CAAC;oBAChC,MAAM;gBACR,KAAK,iCAAgB,CAAC,MAAM,CAAC;gBAC7B,KAAK,iCAAgB,CAAC,UAAU;oBAC9B,MAAM,GAAG,iCAAgB,CAAC,WAAW,CAAC;oBACtC,MAAM;aACT;SACF;QAED,IAAI,IAAI,CAAC,MAAM,GAAG,YAAY,EAAE;YAC9B,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,KAAK,EAAE;gBACb,KAAK,iCAAgB,CAAC,IAAI,CAAC;gBAC3B,KAAK,iCAAgB,CAAC,UAAU;oBAC9B,MAAM,GAAG,iCAAgB,CAAC,OAAO,CAAC;oBAClC,MAAM;gBACR,KAAK,iCAAgB,CAAC,MAAM;oBAC1B,MAAM,GAAG,iCAAgB,CAAC,GAAG,CAAC;oBAC9B,MAAM;gBACR,KAAK,iCAAgB,CAAC,KAAK,CAAC;gBAC5B,KAAK,iCAAgB,CAAC,WAAW;oBAC/B,MAAM,GAAG,iCAAgB,CAAC,QAAQ,CAAC;oBACnC,MAAM;aACT;SACF;QAED,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;YAChB,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,KAAK,EAAE;gBACb,KAAK,iCAAgB,CAAC,IAAI,CAAC;gBAC3B,KAAK,iCAAgB,CAAC,OAAO;oBAC3B,MAAM,GAAG,iCAAgB,CAAC,UAAU,CAAC;oBACrC,MAAM;gBACR,KAAK,iCAAgB,CAAC,GAAG;oBACvB,MAAM,GAAG,iCAAgB,CAAC,MAAM,CAAC;oBACjC,MAAM;gBACR,KAAK,iCAAgB,CAAC,KAAK,CAAC;gBAC5B,KAAK,iCAAgB,CAAC,QAAQ;oBAC5B,MAAM,GAAG,iCAAgB,CAAC,WAAW,CAAC;oBACtC,MAAM;aACT;SACF;QAED,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC7B,CAAC;;AAxQc,0BAAO,GAAsB,IAAI,KAAK,EAAmB,CAAC;AAEzE,gBAAgB;AACO,mDAAgC,GACrD,IAAI,8BAA8B,EAAE,CAAC;AACvC,gBAAgB;AACO,4CAAyB,GAC9C,IAAI,uBAAuB,EAAE,CAAC;AAChC,gBAAgB;AACO,6CAA0B,GAC/C,IAAI,wBAAwB,EAAE,CAAC;AAXtB,gDAAkB;AAiR/B;;GAEG;AACH,MAAa,mBAAoB,SAAQ,KAAK,CAAC,SAG9C;IACC,YAAY,KAAU;QACpB,KAAK,CAAC,KAAK,CAAC,CAAC;QAqKP,6BAAwB,GAAG,CAAC,KAAU,EAAE,EAAE;YAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC;QAEM,0CAAqC,GAAG,CAC9C,IAAwC,EACxC,EAAE;YACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,kBAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC;QA3KA,IAAI,CAAC,KAAK,GAAG;YACX,EAAE,EAAE,IAAI,kBAAK,EAAE;SAChB,CAAC;IACJ,CAAC;IAEe,MAAM;QACpB,IAAI,kBAAkB,CAAC,UAAU,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpD,OAAO,0CAAG,IAAI,CAAC,eAAe,EAAE,CAAI,CAAC;IACvC,CAAC;IAEO,gBAAgB,CAAC,SAA0B,EAAE,IAAe;QAClE,SAAS,CAAC,SAAS,GAAG,iBAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEO,eAAe;QACrB,MAAM,SAAS,GAAG,IAAI,KAAK,EAAmB,CAAC;QAC/C,IAAI,gBAAiC,CAAC;QACtC,MAAM,KAAK,GAAG,iCAAgB,CAAC,IAAI,CAAC;QACpC,MAAM,GAAG,GAAG,iCAAgB,CAAC,WAAW,CAAC;QAEzC,KAAK,IAAI,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE;YACtD,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,gBAAgB;gBAAE,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACxD;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,sBAAsB,CAC5B,gBAAkC;QAElC,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CACnD,CAAC,SAA0B,EAAE,EAAE,CAC7B,SAAS,CAAC,sBAAsB,KAAK,gBAAgB,CACxD,CAAC;QAEF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,IAAI,cAAc,GAAG,CAAC,CAAC;YACvB,MAAM,SAAS,GACb,gBAAgB,KAAK,iCAAgB,CAAC,KAAK;gBAC3C,gBAAgB,KAAK,iCAAgB,CAAC,WAAW;gBACjD,gBAAgB,KAAK,iCAAgB,CAAC,MAAM;gBAC5C,gBAAgB,KAAK,iCAAgB,CAAC,UAAU,CAAC;YAEnD,MAAM,cAAc,GAAG,YAAY;iBAChC,IAAI,CAAC,CAAC,CAAkB,EAAE,CAAkB,EAAU,EAAE,CACvD,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAC9D;iBACA,GAAG,CAAC,CAAC,SAA0B,EAAE,KAAa,EAAE,EAAE;gBACjD,MAAM,KAAK,GACT,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,MAAM,MAAM,GACV,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;gBACrE,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;gBAE9B,IAAI,KAAK,GAAG,CAAC;oBACX,MAAM,GAAG,IAAI,CAAC,YAAY,CACxB,MAAM,EACN,SAAS,CAAC,sBAAsB,EAChC,cAAc,CACf,CAAC;gBAEJ,IAAI,SAAS,CAAC,SAAS;oBACrB,cAAc,IAAI,IAAI,CAAC,YAAY,CACjC,SAAS,CAAC,SAAS,EACnB,gBAAgB,CACjB,CAAC;gBAEJ,OAAO,CACL,oBAAC,yBAAW,IACV,GAAG,EAAE,SAAS,CAAC,EAAE,EACjB,EAAE,EAAE,SAAS,CAAC,EAAE,EAChB,OAAO,EAAE,SAAS,CAAC,OAAO,EAC1B,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EACjB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,SAAS,CAAC,sBAAsB,EAClD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,CAAC,IAAe,EAAE,EAAE,CAC/B,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,GAExC,CACH,CAAC;YACJ,CAAC,CAAC,CAAC;YAEL,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,gBAAgB,CAAC,QAAQ,EAAE,IAC7C,cAAc,CACA,CAClB,CAAC;SACH;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,YAAY,CAClB,SAAe,EACf,gBAAkC;QAElC,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,QAAQ,gBAAgB,EAAE;YACxB,KAAK,iCAAgB,CAAC,GAAG,CAAC;YAC1B,KAAK,iCAAgB,CAAC,MAAM,CAAC;YAC7B,KAAK,iCAAgB,CAAC,OAAO,CAAC;YAC9B,KAAK,iCAAgB,CAAC,QAAQ,CAAC;YAC/B,KAAK,iCAAgB,CAAC,UAAU,CAAC;YACjC,KAAK,iCAAgB,CAAC,WAAW;gBAC/B,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;gBAC7B,MAAM;YACR,KAAK,iCAAgB,CAAC,IAAI,CAAC;YAC3B,KAAK,iCAAgB,CAAC,KAAK;gBACzB,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;gBAC5B,MAAM;SACT;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,YAAY,CAClB,MAAa,EACb,gBAAkC,EAClC,SAAiB;QAEjB,IAAI,SAAS,GAAG,kBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/C,QAAQ,gBAAgB,EAAE;YACxB,KAAK,iCAAgB,CAAC,GAAG,CAAC;YAC1B,KAAK,iCAAgB,CAAC,MAAM,CAAC;YAC7B,KAAK,iCAAgB,CAAC,OAAO,CAAC;YAC9B,KAAK,iCAAgB,CAAC,QAAQ,CAAC;YAC/B,KAAK,iCAAgB,CAAC,UAAU,CAAC;YACjC,KAAK,iCAAgB,CAAC,WAAW;gBAC/B,SAAS,GAAG,kBAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC;gBACnE,MAAM;YACR,KAAK,iCAAgB,CAAC,IAAI,CAAC;YAC3B,KAAK,iCAAgB,CAAC,KAAK;gBACzB,SAAS,GAAG,kBAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;gBACnE,MAAM;SACT;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEe,iBAAiB;QAC/B,kBAAkB,CAAC,0BAA0B,CAAC,WAAW,CACvD,IAAI,CAAC,wBAAwB,CAC9B,CAAC;QACF,kBAAkB,CAAC,gCAAgC,CAAC,WAAW,CAC7D,IAAI,CAAC,qCAAqC,CAC3C,CAAC;IACJ,CAAC;IAEe,oBAAoB;QAClC,kBAAkB,CAAC,0BAA0B,CAAC,cAAc,CAC1D,IAAI,CAAC,wBAAwB,CAC9B,CAAC;QACF,kBAAkB,CAAC,gCAAgC,CAAC,cAAc,CAChE,IAAI,CAAC,qCAAqC,CAC3C,CAAC;IACJ,CAAC;CAWF;AAnLD,kDAmLC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { PointProps } from \"@itwin/appui-abstract\";\nimport { RelativePosition, UiEvent } from \"@itwin/appui-abstract\";\nimport type { RectangleProps, SizeProps } from \"@itwin/core-react\";\nimport { Point, Size } from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { CursorPopup } from \"./CursorPopup\";\n\n/** Options for the [[CursorPopupManager]] open method\n * @public\n */\nexport interface CursorPopupOptions {\n /** Title of the popup */\n title?: string;\n /** Called on popup close */\n onClose?: () => void;\n /** Callback to apply changes */\n onApply?: () => void;\n /** Draw shadow */\n shadow?: boolean;\n}\n\n/** CursorPopup Update Position Event Args interface.\n * @internal\n */\nexport interface CursorPopupUpdatePositionEventArgs {\n pt: PointProps;\n}\n\n/** CursorPopup Update Position Event class.\n * @internal\n */\nexport class CursorPopupUpdatePositionEvent extends UiEvent<CursorPopupUpdatePositionEventArgs> {}\n\n/** CursorPopup FadeOut Event Args interface.\n * @internal\n */\nexport interface CursorPopupFadeOutEventArgs {\n id: string;\n}\n\n/** CursorPopup FadeOut Event class.\n * @internal\n */\nexport class CursorPopupFadeOutEvent extends UiEvent<CursorPopupFadeOutEventArgs> {}\n\n/** Information maintained by CursorPopupManager about a CursorPopup\n * @internal\n */\ninterface CursorPopupInfo {\n id: string;\n content: React.ReactNode;\n relativePosition: RelativePosition;\n offset: Point;\n priority: number;\n options?: CursorPopupOptions;\n\n renderRelativePosition: RelativePosition;\n popupSize?: Size;\n}\n\n/** Cursor Popups Changed Event class.\n * @internal\n */\nclass CursorPopupsChangedEvent extends UiEvent<{}> {}\n\n/** CursorPopup component\n * @public\n */\nexport class CursorPopupManager {\n private static _popups: CursorPopupInfo[] = new Array<CursorPopupInfo>();\n\n /** @internal */\n public static readonly onCursorPopupUpdatePositionEvent =\n new CursorPopupUpdatePositionEvent();\n /** @internal */\n public static readonly onCursorPopupFadeOutEvent =\n new CursorPopupFadeOutEvent();\n /** @internal */\n public static readonly onCursorPopupsChangedEvent =\n new CursorPopupsChangedEvent();\n /** @internal */\n public static clearPopups() {\n this._popups.length = 0;\n CursorPopupManager._emitPopupsChangedEvent();\n }\n\n public static get popups() {\n return this._popups;\n }\n\n public static get popupCount() {\n return this._popups.length;\n }\n\n private static _emitPopupsChangedEvent(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n\n private static pushPopup(popupInfo: CursorPopupInfo): void {\n CursorPopupManager._popups.push(popupInfo);\n CursorPopupManager._emitPopupsChangedEvent();\n }\n\n /** Called to open popup with a new set of properties\n */\n public static open(\n id: string,\n content: React.ReactNode,\n pt: PointProps,\n offset: PointProps,\n relativePosition: RelativePosition,\n priority: number = 0,\n options?: CursorPopupOptions\n ) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n if (popupInfo) {\n popupInfo.content = content;\n popupInfo.offset = Point.create(offset);\n popupInfo.relativePosition = relativePosition;\n popupInfo.renderRelativePosition = relativePosition;\n popupInfo.priority = priority;\n popupInfo.options = options;\n } else {\n const newPopupInfo: CursorPopupInfo = {\n id,\n content,\n offset: Point.create(offset),\n relativePosition,\n options,\n renderRelativePosition: relativePosition,\n priority,\n };\n CursorPopupManager.pushPopup(newPopupInfo);\n }\n\n CursorPopupManager.updatePosition(pt);\n }\n\n /** Called to update popup with a new set of properties\n */\n public static update(\n id: string,\n content: React.ReactNode,\n pt: PointProps,\n offset: PointProps,\n relativePosition: RelativePosition,\n priority: number = 0\n ) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n if (popupInfo) {\n popupInfo.content = content;\n popupInfo.offset = Point.create(offset);\n popupInfo.relativePosition = relativePosition;\n popupInfo.renderRelativePosition = relativePosition;\n popupInfo.priority = priority;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `update: Could not find popup with id of '${id}'`\n );\n }\n\n CursorPopupManager.updatePosition(pt);\n }\n\n /** Called to move the open popup to new location\n */\n public static updatePosition(pt: PointProps) {\n CursorPopupManager.resetPopupsRenderRelativePosition(Point.create(pt));\n CursorPopupManager.onCursorPopupUpdatePositionEvent.emit({ pt });\n }\n\n /** Called when tool wants to close the popup\n */\n public static close(id: string, apply: boolean, fadeOut?: boolean) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n\n if (popupInfo) {\n if (popupInfo.options) {\n if (apply && popupInfo.options.onApply) popupInfo.options.onApply();\n\n if (popupInfo.options.onClose) popupInfo.options.onClose();\n }\n\n if (fadeOut) {\n CursorPopupManager.onCursorPopupFadeOutEvent.emit({ id });\n setTimeout(() => {\n CursorPopupManager.removePopup(id);\n }, CursorPopup.fadeOutTime);\n } else {\n CursorPopupManager.removePopup(id);\n }\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `close: Could not find popup with id of '${id}'`\n );\n }\n }\n\n private static removePopup(id: string): void {\n const index = CursorPopupManager._popups.findIndex(\n (popupInfo: CursorPopupInfo) => id === popupInfo.id\n );\n // istanbul ignore else\n if (index >= 0) {\n CursorPopupManager._popups.splice(index, 1);\n CursorPopupManager._emitPopupsChangedEvent();\n }\n }\n\n private static resetPopupsRenderRelativePosition(pt: Point) {\n CursorPopupManager.popups.forEach((popupInfo: CursorPopupInfo) => {\n popupInfo.renderRelativePosition = popupInfo.relativePosition;\n\n const flipped = CursorPopupManager.validateRenderRelativePosition(\n pt,\n popupInfo\n );\n\n // If flipped, call again to validate again.\n if (flipped) {\n CursorPopupManager.validateRenderRelativePosition(pt, popupInfo);\n }\n });\n }\n\n private static validateRenderRelativePosition(\n pt: Point,\n popupInfo: CursorPopupInfo\n ): boolean {\n const popupRect = CursorPopup.getPopupRect(\n pt,\n Point.create(popupInfo.offset),\n popupInfo.popupSize,\n popupInfo.renderRelativePosition\n );\n const { outPos, flipped } = CursorPopupManager.autoFlip(\n popupInfo.renderRelativePosition,\n popupRect,\n window.innerWidth,\n window.innerHeight\n );\n\n if (flipped) popupInfo.renderRelativePosition = outPos;\n\n return flipped;\n }\n\n private static autoFlip(\n inPos: RelativePosition,\n rect: RectangleProps,\n windowWidth: number,\n windowHeight: number\n ): { outPos: RelativePosition; flipped: boolean } {\n let flipped = false;\n let outPos = inPos;\n\n if (rect.right > windowWidth) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Top:\n case RelativePosition.TopRight:\n outPos = RelativePosition.TopLeft;\n break;\n case RelativePosition.Right:\n outPos = RelativePosition.Left;\n break;\n case RelativePosition.Bottom:\n case RelativePosition.BottomRight:\n outPos = RelativePosition.BottomLeft;\n break;\n }\n }\n\n if (rect.left < 0) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Top:\n case RelativePosition.TopLeft:\n outPos = RelativePosition.TopRight;\n break;\n case RelativePosition.Left:\n outPos = RelativePosition.Right;\n break;\n case RelativePosition.Bottom:\n case RelativePosition.BottomLeft:\n outPos = RelativePosition.BottomRight;\n break;\n }\n }\n\n if (rect.bottom > windowHeight) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Left:\n case RelativePosition.BottomLeft:\n outPos = RelativePosition.TopLeft;\n break;\n case RelativePosition.Bottom:\n outPos = RelativePosition.Top;\n break;\n case RelativePosition.Right:\n case RelativePosition.BottomRight:\n outPos = RelativePosition.TopRight;\n break;\n }\n }\n\n if (rect.top < 0) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Left:\n case RelativePosition.TopLeft:\n outPos = RelativePosition.BottomLeft;\n break;\n case RelativePosition.Top:\n outPos = RelativePosition.Bottom;\n break;\n case RelativePosition.Right:\n case RelativePosition.TopRight:\n outPos = RelativePosition.BottomRight;\n break;\n }\n }\n\n return { outPos, flipped };\n }\n}\n\n/** State for the [[CursorPopupRenderer]] React component */\ninterface CursorPopupRendererState {\n pt: Point;\n}\n\n/** CursorPopupRenderer React component.\n * @public\n */\nexport class CursorPopupRenderer extends React.Component<\n any,\n CursorPopupRendererState\n> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n pt: new Point(),\n };\n }\n\n public override render(): React.ReactNode {\n if (CursorPopupManager.popupCount <= 0) return null;\n\n return <>{this.renderPositions()}</>;\n }\n\n private _handleSizeKnown(popupInfo: CursorPopupInfo, size: SizeProps) {\n popupInfo.popupSize = Size.create(size);\n }\n\n private renderPositions(): React.ReactNode[] {\n const positions = new Array<React.ReactNode>();\n let renderedPosition: React.ReactNode;\n const begin = RelativePosition.Left;\n const end = RelativePosition.BottomRight;\n\n for (let position = begin; position <= end; position++) {\n renderedPosition = this.renderRelativePosition(position);\n if (renderedPosition) positions.push(renderedPosition);\n }\n\n return positions;\n }\n\n private renderRelativePosition(\n relativePosition: RelativePosition\n ): React.ReactNode {\n const filteredInfo = CursorPopupManager.popups.filter(\n (popupInfo: CursorPopupInfo) =>\n popupInfo.renderRelativePosition === relativePosition\n );\n\n if (filteredInfo.length > 0) {\n let totalDimension = 0;\n const ascending =\n relativePosition === RelativePosition.Right ||\n relativePosition === RelativePosition.BottomRight ||\n relativePosition === RelativePosition.Bottom ||\n relativePosition === RelativePosition.BottomLeft;\n\n const positionPopups = filteredInfo\n .sort((a: CursorPopupInfo, b: CursorPopupInfo): number =>\n ascending ? a.priority - b.priority : b.priority - a.priority\n )\n .map((popupInfo: CursorPopupInfo, index: number) => {\n const title =\n popupInfo.options !== undefined ? popupInfo.options.title : \"\";\n const shadow =\n popupInfo.options !== undefined ? popupInfo.options.shadow : false;\n let offset = popupInfo.offset;\n\n if (index > 0)\n offset = this.adjustOffset(\n offset,\n popupInfo.renderRelativePosition,\n totalDimension\n );\n\n if (popupInfo.popupSize)\n totalDimension += this.getDimension(\n popupInfo.popupSize,\n relativePosition\n );\n\n return (\n <CursorPopup\n key={popupInfo.id}\n id={popupInfo.id}\n content={popupInfo.content}\n pt={this.state.pt}\n offset={offset}\n relativePosition={popupInfo.renderRelativePosition}\n title={title}\n shadow={shadow}\n onSizeKnown={(size: SizeProps) =>\n this._handleSizeKnown(popupInfo, size)\n }\n />\n );\n });\n\n return (\n <React.Fragment key={relativePosition.toString()}>\n {positionPopups}\n </React.Fragment>\n );\n }\n\n return null;\n }\n\n private getDimension(\n popupSize: Size,\n relativePosition: RelativePosition\n ): number {\n let dimension = 0;\n\n switch (relativePosition) {\n case RelativePosition.Top:\n case RelativePosition.Bottom:\n case RelativePosition.TopLeft:\n case RelativePosition.TopRight:\n case RelativePosition.BottomLeft:\n case RelativePosition.BottomRight:\n dimension = popupSize.height;\n break;\n case RelativePosition.Left:\n case RelativePosition.Right:\n dimension = popupSize.width;\n break;\n }\n\n return dimension;\n }\n\n private adjustOffset(\n offset: Point,\n relativePosition: RelativePosition,\n dimension: number\n ): Point {\n let outOffset = Point.create(offset.toProps());\n\n switch (relativePosition) {\n case RelativePosition.Top:\n case RelativePosition.Bottom:\n case RelativePosition.TopLeft:\n case RelativePosition.TopRight:\n case RelativePosition.BottomLeft:\n case RelativePosition.BottomRight:\n outOffset = Point.create({ x: offset.x, y: offset.y + dimension });\n break;\n case RelativePosition.Left:\n case RelativePosition.Right:\n outOffset = Point.create({ x: offset.x + dimension, y: offset.y });\n break;\n }\n\n return outOffset;\n }\n\n public override componentDidMount(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.addListener(\n this._handlePopupChangedEvent\n );\n CursorPopupManager.onCursorPopupUpdatePositionEvent.addListener(\n this._handleCursorPopupUpdatePositionEvent\n );\n }\n\n public override componentWillUnmount(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.removeListener(\n this._handlePopupChangedEvent\n );\n CursorPopupManager.onCursorPopupUpdatePositionEvent.removeListener(\n this._handleCursorPopupUpdatePositionEvent\n );\n }\n\n private _handlePopupChangedEvent = (_args: any) => {\n this.forceUpdate();\n };\n\n private _handleCursorPopupUpdatePositionEvent = (\n args: CursorPopupUpdatePositionEventArgs\n ) => {\n this.setState({ pt: Point.create(args.pt) });\n };\n}\n"]}
1
+ {"version":3,"file":"CursorPopupManager.js","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorpopup/CursorPopupManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { RelativePosition, UiEvent } from \"@itwin/appui-abstract\";\nimport type { RectangleProps, SizeProps } from \"@itwin/core-react\";\nimport { Point, Size } from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { CursorPopup } from \"./CursorPopup\";\n\n/** Options for the [[CursorPopupManager]] open method\n * @public\n */\nexport interface CursorPopupOptions {\n /** Title of the popup */\n title?: string;\n /** Called on popup close */\n onClose?: () => void;\n /** Callback to apply changes */\n onApply?: () => void;\n /** Draw shadow */\n shadow?: boolean;\n}\n\n/** CursorPopup Update Position Event Args interface.\n * @internal\n */\nexport interface CursorPopupUpdatePositionEventArgs {\n pt: XAndY;\n}\n\n/** CursorPopup Update Position Event class.\n * @internal\n */\nexport class CursorPopupUpdatePositionEvent extends UiEvent<CursorPopupUpdatePositionEventArgs> {}\n\n/** CursorPopup FadeOut Event Args interface.\n * @internal\n */\nexport interface CursorPopupFadeOutEventArgs {\n id: string;\n}\n\n/** CursorPopup FadeOut Event class.\n * @internal\n */\nexport class CursorPopupFadeOutEvent extends UiEvent<CursorPopupFadeOutEventArgs> {}\n\n/** Information maintained by CursorPopupManager about a CursorPopup\n * @internal\n */\ninterface CursorPopupInfo {\n id: string;\n content: React.ReactNode;\n relativePosition: RelativePosition;\n offset: Point;\n priority: number;\n options?: CursorPopupOptions;\n\n renderRelativePosition: RelativePosition;\n popupSize?: Size;\n}\n\n/** Cursor Popups Changed Event class.\n * @internal\n */\nclass CursorPopupsChangedEvent extends UiEvent<{}> {}\n\n/** CursorPopup component\n * @public\n */\nexport class CursorPopupManager {\n private static _popups: CursorPopupInfo[] = new Array<CursorPopupInfo>();\n\n /** @internal */\n public static readonly onCursorPopupUpdatePositionEvent =\n new CursorPopupUpdatePositionEvent();\n /** @internal */\n public static readonly onCursorPopupFadeOutEvent =\n new CursorPopupFadeOutEvent();\n /** @internal */\n public static readonly onCursorPopupsChangedEvent =\n new CursorPopupsChangedEvent();\n /** @internal */\n public static clearPopups() {\n this._popups.length = 0;\n CursorPopupManager._emitPopupsChangedEvent();\n }\n\n public static get popups() {\n return this._popups;\n }\n\n public static get popupCount() {\n return this._popups.length;\n }\n\n private static _emitPopupsChangedEvent(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n\n private static pushPopup(popupInfo: CursorPopupInfo): void {\n CursorPopupManager._popups.push(popupInfo);\n CursorPopupManager._emitPopupsChangedEvent();\n }\n\n /** Called to open popup with a new set of properties\n */\n public static open(\n id: string,\n content: React.ReactNode,\n pt: XAndY,\n offset: XAndY,\n relativePosition: RelativePosition,\n priority: number = 0,\n options?: CursorPopupOptions\n ) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n if (popupInfo) {\n popupInfo.content = content;\n popupInfo.offset = Point.create(offset);\n popupInfo.relativePosition = relativePosition;\n popupInfo.renderRelativePosition = relativePosition;\n popupInfo.priority = priority;\n popupInfo.options = options;\n } else {\n const newPopupInfo: CursorPopupInfo = {\n id,\n content,\n offset: Point.create(offset),\n relativePosition,\n options,\n renderRelativePosition: relativePosition,\n priority,\n };\n CursorPopupManager.pushPopup(newPopupInfo);\n }\n\n CursorPopupManager.updatePosition(pt);\n }\n\n /** Called to update popup with a new set of properties\n */\n public static update(\n id: string,\n content: React.ReactNode,\n pt: XAndY,\n offset: XAndY,\n relativePosition: RelativePosition,\n priority: number = 0\n ) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n if (popupInfo) {\n popupInfo.content = content;\n popupInfo.offset = Point.create(offset);\n popupInfo.relativePosition = relativePosition;\n popupInfo.renderRelativePosition = relativePosition;\n popupInfo.priority = priority;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `update: Could not find popup with id of '${id}'`\n );\n }\n\n CursorPopupManager.updatePosition(pt);\n }\n\n /** Called to move the open popup to new location\n */\n public static updatePosition(pt: XAndY) {\n CursorPopupManager.resetPopupsRenderRelativePosition(Point.create(pt));\n CursorPopupManager.onCursorPopupUpdatePositionEvent.emit({ pt });\n }\n\n /** Called when tool wants to close the popup\n */\n public static close(id: string, apply: boolean, fadeOut?: boolean) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n\n if (popupInfo) {\n if (popupInfo.options) {\n if (apply && popupInfo.options.onApply) popupInfo.options.onApply();\n\n if (popupInfo.options.onClose) popupInfo.options.onClose();\n }\n\n if (fadeOut) {\n CursorPopupManager.onCursorPopupFadeOutEvent.emit({ id });\n setTimeout(() => {\n CursorPopupManager.removePopup(id);\n }, CursorPopup.fadeOutTime);\n } else {\n CursorPopupManager.removePopup(id);\n }\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `close: Could not find popup with id of '${id}'`\n );\n }\n }\n\n private static removePopup(id: string): void {\n const index = CursorPopupManager._popups.findIndex(\n (popupInfo: CursorPopupInfo) => id === popupInfo.id\n );\n // istanbul ignore else\n if (index >= 0) {\n CursorPopupManager._popups.splice(index, 1);\n CursorPopupManager._emitPopupsChangedEvent();\n }\n }\n\n private static resetPopupsRenderRelativePosition(pt: Point) {\n CursorPopupManager.popups.forEach((popupInfo: CursorPopupInfo) => {\n popupInfo.renderRelativePosition = popupInfo.relativePosition;\n\n const flipped = CursorPopupManager.validateRenderRelativePosition(\n pt,\n popupInfo\n );\n\n // If flipped, call again to validate again.\n if (flipped) {\n CursorPopupManager.validateRenderRelativePosition(pt, popupInfo);\n }\n });\n }\n\n private static validateRenderRelativePosition(\n pt: Point,\n popupInfo: CursorPopupInfo\n ): boolean {\n const popupRect = CursorPopup.getPopupRect(\n pt,\n Point.create(popupInfo.offset),\n popupInfo.popupSize,\n popupInfo.renderRelativePosition\n );\n const { outPos, flipped } = CursorPopupManager.autoFlip(\n popupInfo.renderRelativePosition,\n popupRect,\n window.innerWidth,\n window.innerHeight\n );\n\n if (flipped) popupInfo.renderRelativePosition = outPos;\n\n return flipped;\n }\n\n private static autoFlip(\n inPos: RelativePosition,\n rect: RectangleProps,\n windowWidth: number,\n windowHeight: number\n ): { outPos: RelativePosition; flipped: boolean } {\n let flipped = false;\n let outPos = inPos;\n\n if (rect.right > windowWidth) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Top:\n case RelativePosition.TopRight:\n outPos = RelativePosition.TopLeft;\n break;\n case RelativePosition.Right:\n outPos = RelativePosition.Left;\n break;\n case RelativePosition.Bottom:\n case RelativePosition.BottomRight:\n outPos = RelativePosition.BottomLeft;\n break;\n }\n }\n\n if (rect.left < 0) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Top:\n case RelativePosition.TopLeft:\n outPos = RelativePosition.TopRight;\n break;\n case RelativePosition.Left:\n outPos = RelativePosition.Right;\n break;\n case RelativePosition.Bottom:\n case RelativePosition.BottomLeft:\n outPos = RelativePosition.BottomRight;\n break;\n }\n }\n\n if (rect.bottom > windowHeight) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Left:\n case RelativePosition.BottomLeft:\n outPos = RelativePosition.TopLeft;\n break;\n case RelativePosition.Bottom:\n outPos = RelativePosition.Top;\n break;\n case RelativePosition.Right:\n case RelativePosition.BottomRight:\n outPos = RelativePosition.TopRight;\n break;\n }\n }\n\n if (rect.top < 0) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Left:\n case RelativePosition.TopLeft:\n outPos = RelativePosition.BottomLeft;\n break;\n case RelativePosition.Top:\n outPos = RelativePosition.Bottom;\n break;\n case RelativePosition.Right:\n case RelativePosition.TopRight:\n outPos = RelativePosition.BottomRight;\n break;\n }\n }\n\n return { outPos, flipped };\n }\n}\n\n/** State for the [[CursorPopupRenderer]] React component */\ninterface CursorPopupRendererState {\n pt: Point;\n}\n\n/** CursorPopupRenderer React component.\n * @public\n */\nexport class CursorPopupRenderer extends React.Component<\n any,\n CursorPopupRendererState\n> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n pt: new Point(),\n };\n }\n\n public override render(): React.ReactNode {\n if (CursorPopupManager.popupCount <= 0) return null;\n\n return <>{this.renderPositions()}</>;\n }\n\n private _handleSizeKnown(popupInfo: CursorPopupInfo, size: SizeProps) {\n popupInfo.popupSize = Size.create(size);\n }\n\n private renderPositions(): React.ReactNode[] {\n const positions = new Array<React.ReactNode>();\n let renderedPosition: React.ReactNode;\n const begin = RelativePosition.Left;\n const end = RelativePosition.BottomRight;\n\n for (let position = begin; position <= end; position++) {\n renderedPosition = this.renderRelativePosition(position);\n if (renderedPosition) positions.push(renderedPosition);\n }\n\n return positions;\n }\n\n private renderRelativePosition(\n relativePosition: RelativePosition\n ): React.ReactNode {\n const filteredInfo = CursorPopupManager.popups.filter(\n (popupInfo: CursorPopupInfo) =>\n popupInfo.renderRelativePosition === relativePosition\n );\n\n if (filteredInfo.length > 0) {\n let totalDimension = 0;\n const ascending =\n relativePosition === RelativePosition.Right ||\n relativePosition === RelativePosition.BottomRight ||\n relativePosition === RelativePosition.Bottom ||\n relativePosition === RelativePosition.BottomLeft;\n\n const positionPopups = filteredInfo\n .sort((a: CursorPopupInfo, b: CursorPopupInfo): number =>\n ascending ? a.priority - b.priority : b.priority - a.priority\n )\n .map((popupInfo: CursorPopupInfo, index: number) => {\n const title =\n popupInfo.options !== undefined ? popupInfo.options.title : \"\";\n const shadow =\n popupInfo.options !== undefined ? popupInfo.options.shadow : false;\n let offset = popupInfo.offset;\n\n if (index > 0)\n offset = this.adjustOffset(\n offset,\n popupInfo.renderRelativePosition,\n totalDimension\n );\n\n if (popupInfo.popupSize)\n totalDimension += this.getDimension(\n popupInfo.popupSize,\n relativePosition\n );\n\n return (\n <CursorPopup\n key={popupInfo.id}\n id={popupInfo.id}\n content={popupInfo.content}\n pt={this.state.pt}\n offset={offset}\n relativePosition={popupInfo.renderRelativePosition}\n title={title}\n shadow={shadow}\n onSizeKnown={(size: SizeProps) =>\n this._handleSizeKnown(popupInfo, size)\n }\n />\n );\n });\n\n return (\n <React.Fragment key={relativePosition.toString()}>\n {positionPopups}\n </React.Fragment>\n );\n }\n\n return null;\n }\n\n private getDimension(\n popupSize: Size,\n relativePosition: RelativePosition\n ): number {\n let dimension = 0;\n\n switch (relativePosition) {\n case RelativePosition.Top:\n case RelativePosition.Bottom:\n case RelativePosition.TopLeft:\n case RelativePosition.TopRight:\n case RelativePosition.BottomLeft:\n case RelativePosition.BottomRight:\n dimension = popupSize.height;\n break;\n case RelativePosition.Left:\n case RelativePosition.Right:\n dimension = popupSize.width;\n break;\n }\n\n return dimension;\n }\n\n private adjustOffset(\n offset: Point,\n relativePosition: RelativePosition,\n dimension: number\n ): Point {\n let outOffset = Point.create(offset.toProps());\n\n switch (relativePosition) {\n case RelativePosition.Top:\n case RelativePosition.Bottom:\n case RelativePosition.TopLeft:\n case RelativePosition.TopRight:\n case RelativePosition.BottomLeft:\n case RelativePosition.BottomRight:\n outOffset = Point.create({ x: offset.x, y: offset.y + dimension });\n break;\n case RelativePosition.Left:\n case RelativePosition.Right:\n outOffset = Point.create({ x: offset.x + dimension, y: offset.y });\n break;\n }\n\n return outOffset;\n }\n\n public override componentDidMount(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.addListener(\n this._handlePopupChangedEvent\n );\n CursorPopupManager.onCursorPopupUpdatePositionEvent.addListener(\n this._handleCursorPopupUpdatePositionEvent\n );\n }\n\n public override componentWillUnmount(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.removeListener(\n this._handlePopupChangedEvent\n );\n CursorPopupManager.onCursorPopupUpdatePositionEvent.removeListener(\n this._handleCursorPopupUpdatePositionEvent\n );\n }\n\n private _handlePopupChangedEvent = (_args: any) => {\n this.forceUpdate();\n };\n\n private _handleCursorPopupUpdatePositionEvent = (\n args: CursorPopupUpdatePositionEventArgs\n ) => {\n this.setState({ pt: Point.create(args.pt) });\n };\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import "./CursorPrompt.scss";
5
5
  import type { ToolAssistanceInstruction } from "@itwin/core-frontend";
6
- import type { PointProps } from "@itwin/appui-abstract";
6
+ import type { XAndY } from "@itwin/core-geometry";
7
7
  import { RelativePosition } from "@itwin/appui-abstract";
8
8
  /** @internal */
9
9
  export declare class CursorPrompt {
@@ -14,7 +14,7 @@ export declare class CursorPrompt {
14
14
  private _offset;
15
15
  private _popupId;
16
16
  constructor(timeOut: number, fadeOut: boolean);
17
- display(toolIconSpec: string, instruction: ToolAssistanceInstruction, offset?: PointProps, relativePosition?: RelativePosition): void;
17
+ display(toolIconSpec: string, instruction: ToolAssistanceInstruction, offset?: XAndY, relativePosition?: RelativePosition): void;
18
18
  /** @internal - unit testing */
19
19
  close(fadeOut: boolean): void;
20
20
  private _startCursorPopup;
@@ -1 +1 @@
1
- {"version":3,"file":"CursorPrompt.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorprompt/CursorPrompt.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzD,gBAAgB;AAChB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAMtC,OAAO,CACZ,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,yBAAyB,EACtC,MAAM,GAAE,UAA6B,EACrC,gBAAgB,GAAE,gBAA+C;IA+BnE,+BAA+B;IACxB,KAAK,CAAC,OAAO,EAAE,OAAO;IAK7B,OAAO,CAAC,iBAAiB,CAevB;IAEF,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,oBAAoB,CAE1B;CACH"}
1
+ {"version":3,"file":"CursorPrompt.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorprompt/CursorPrompt.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAOzD,gBAAgB;AAChB,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,QAAQ,CAAmB;gBAEvB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAMtC,OAAO,CACZ,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,yBAAyB,EACtC,MAAM,GAAE,KAAwB,EAChC,gBAAgB,GAAE,gBAA+C;IA+BnE,+BAA+B;IACxB,KAAK,CAAC,OAAO,EAAE,OAAO;IAK7B,OAAO,CAAC,iBAAiB,CAevB;IAEF,OAAO,CAAC,eAAe,CAKrB;IAEF,OAAO,CAAC,oBAAoB,CAE1B;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"CursorPrompt.js","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorprompt/CursorPrompt.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport \"./CursorPrompt.scss\";\nimport * as React from \"react\";\nimport type { ToolAssistanceInstruction } from \"@itwin/core-frontend\";\nimport type { PointProps } from \"@itwin/appui-abstract\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport { Icon, Point, Timer } from \"@itwin/core-react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport type { CursorUpdatedEventArgs } from \"../CursorInformation\";\nimport { CursorInformation } from \"../CursorInformation\";\nimport { CursorPopupManager } from \"../cursorpopup/CursorPopupManager\";\n\n/** @internal */\nexport class CursorPrompt {\n private _timeOut: number;\n private _fadeOut: boolean;\n private _timer: Timer;\n private _relativePosition = RelativePosition.BottomRight;\n private _offset: Point = new Point(20, 20);\n private _popupId = \"cursor-prompt\";\n\n constructor(timeOut: number, fadeOut: boolean) {\n this._timeOut = timeOut;\n this._fadeOut = fadeOut;\n this._timer = new Timer(timeOut);\n }\n\n public display(\n toolIconSpec: string,\n instruction: ToolAssistanceInstruction,\n offset: PointProps = { x: 20, y: 20 },\n relativePosition: RelativePosition = RelativePosition.BottomRight\n ) {\n if (!instruction.text) {\n // istanbul ignore else\n if (this._timer.isRunning) this.close(false);\n return;\n }\n\n this._relativePosition = relativePosition;\n this._offset = Point.create(offset);\n\n const promptElement = (\n <div className=\"uifw-cursor-prompt\">\n {toolIconSpec && (\n <span className=\"uifw-cursor-prompt-icon\">\n <Icon iconSpec={toolIconSpec} />\n </span>\n )}\n <Text variant=\"body\" className=\"uifw-cursor-prompt-text\">\n {instruction.text}\n </Text>\n </div>\n );\n\n this._startCursorPopup(promptElement);\n\n this._timer.setOnExecute(() => this._endCursorPopup(this._fadeOut));\n this._timer.delay = this._timeOut;\n this._timer.start();\n }\n\n /** @internal - unit testing */\n public close(fadeOut: boolean) {\n this._timer.stop();\n this._endCursorPopup(fadeOut);\n }\n\n private _startCursorPopup = (promptElement: React.ReactElement) => {\n CursorPopupManager.open(\n this._popupId,\n promptElement,\n CursorInformation.cursorPosition,\n this._offset,\n this._relativePosition,\n 0,\n { shadow: true }\n );\n\n if (!CursorInformation.onCursorUpdatedEvent.has(this._handleCursorUpdated))\n CursorInformation.onCursorUpdatedEvent.addListener(\n this._handleCursorUpdated\n );\n };\n\n private _endCursorPopup = (fadeOut?: boolean) => {\n CursorPopupManager.close(this._popupId, false, fadeOut);\n CursorInformation.onCursorUpdatedEvent.removeListener(\n this._handleCursorUpdated\n );\n };\n\n private _handleCursorUpdated = (args: CursorUpdatedEventArgs) => {\n CursorPopupManager.updatePosition(args.newPt);\n };\n}\n"]}
1
+ {"version":3,"file":"CursorPrompt.js","sourceRoot":"","sources":["../../../../../src/appui-react/cursor/cursorprompt/CursorPrompt.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA6B;AAC7B,+BAA+B;AAG/B,0DAAyD;AACzD,kDAAuD;AACvD,wDAA4C;AAE5C,4DAAyD;AACzD,0EAAuE;AAEvE,gBAAgB;AAChB,MAAa,YAAY;IAQvB,YAAY,OAAe,EAAE,OAAgB;QAJrC,sBAAiB,GAAG,iCAAgB,CAAC,WAAW,CAAC;QACjD,YAAO,GAAU,IAAI,kBAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACnC,aAAQ,GAAG,eAAe,CAAC;QAiD3B,sBAAiB,GAAG,CAAC,aAAiC,EAAE,EAAE;YAChE,uCAAkB,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,EACb,aAAa,EACb,qCAAiB,CAAC,cAAc,EAChC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,iBAAiB,EACtB,CAAC,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;YAEF,IAAI,CAAC,qCAAiB,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;gBACxE,qCAAiB,CAAC,oBAAoB,CAAC,WAAW,CAChD,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QACN,CAAC,CAAC;QAEM,oBAAe,GAAG,CAAC,OAAiB,EAAE,EAAE;YAC9C,uCAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACxD,qCAAiB,CAAC,oBAAoB,CAAC,cAAc,CACnD,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QACJ,CAAC,CAAC;QAEM,yBAAoB,GAAG,CAAC,IAA4B,EAAE,EAAE;YAC9D,uCAAkB,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC,CAAC;QAxEA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAK,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEM,OAAO,CACZ,YAAoB,EACpB,WAAsC,EACtC,SAAgB,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAChC,mBAAqC,iCAAgB,CAAC,WAAW;QAEjE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;YACrB,uBAAuB;YACvB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS;gBAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC7C,OAAO;SACR;QAED,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,kBAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEpC,MAAM,aAAa,GAAG,CACpB,6BAAK,SAAS,EAAC,oBAAoB;YAChC,YAAY,IAAI,CACf,8BAAM,SAAS,EAAC,yBAAyB;gBACvC,oBAAC,iBAAI,IAAC,QAAQ,EAAE,YAAY,GAAI,CAC3B,CACR;YACD,oBAAC,oBAAI,IAAC,OAAO,EAAC,MAAM,EAAC,SAAS,EAAC,yBAAyB,IACrD,WAAW,CAAC,IAAI,CACZ,CACH,CACP,CAAC;QAEF,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,+BAA+B;IACxB,KAAK,CAAC,OAAgB;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;CA6BF;AAlFD,oCAkFC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport \"./CursorPrompt.scss\";\nimport * as React from \"react\";\nimport type { ToolAssistanceInstruction } from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport { Icon, Point, Timer } from \"@itwin/core-react\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport type { CursorUpdatedEventArgs } from \"../CursorInformation\";\nimport { CursorInformation } from \"../CursorInformation\";\nimport { CursorPopupManager } from \"../cursorpopup/CursorPopupManager\";\n\n/** @internal */\nexport class CursorPrompt {\n private _timeOut: number;\n private _fadeOut: boolean;\n private _timer: Timer;\n private _relativePosition = RelativePosition.BottomRight;\n private _offset: Point = new Point(20, 20);\n private _popupId = \"cursor-prompt\";\n\n constructor(timeOut: number, fadeOut: boolean) {\n this._timeOut = timeOut;\n this._fadeOut = fadeOut;\n this._timer = new Timer(timeOut);\n }\n\n public display(\n toolIconSpec: string,\n instruction: ToolAssistanceInstruction,\n offset: XAndY = { x: 20, y: 20 },\n relativePosition: RelativePosition = RelativePosition.BottomRight\n ) {\n if (!instruction.text) {\n // istanbul ignore else\n if (this._timer.isRunning) this.close(false);\n return;\n }\n\n this._relativePosition = relativePosition;\n this._offset = Point.create(offset);\n\n const promptElement = (\n <div className=\"uifw-cursor-prompt\">\n {toolIconSpec && (\n <span className=\"uifw-cursor-prompt-icon\">\n <Icon iconSpec={toolIconSpec} />\n </span>\n )}\n <Text variant=\"body\" className=\"uifw-cursor-prompt-text\">\n {instruction.text}\n </Text>\n </div>\n );\n\n this._startCursorPopup(promptElement);\n\n this._timer.setOnExecute(() => this._endCursorPopup(this._fadeOut));\n this._timer.delay = this._timeOut;\n this._timer.start();\n }\n\n /** @internal - unit testing */\n public close(fadeOut: boolean) {\n this._timer.stop();\n this._endCursorPopup(fadeOut);\n }\n\n private _startCursorPopup = (promptElement: React.ReactElement) => {\n CursorPopupManager.open(\n this._popupId,\n promptElement,\n CursorInformation.cursorPosition,\n this._offset,\n this._relativePosition,\n 0,\n { shadow: true }\n );\n\n if (!CursorInformation.onCursorUpdatedEvent.has(this._handleCursorUpdated))\n CursorInformation.onCursorUpdatedEvent.addListener(\n this._handleCursorUpdated\n );\n };\n\n private _endCursorPopup = (fadeOut?: boolean) => {\n CursorPopupManager.close(this._popupId, false, fadeOut);\n CursorInformation.onCursorUpdatedEvent.removeListener(\n this._handleCursorUpdated\n );\n };\n\n private _handleCursorUpdated = (args: CursorUpdatedEventArgs) => {\n CursorPopupManager.updatePosition(args.newPt);\n };\n}\n"]}
@@ -19,10 +19,12 @@ const classnames_1 = require("classnames");
19
19
  *@internal
20
20
  */
21
21
  function useActiveContentControlId() {
22
- const [activeContentId, setActiveContentId] = React.useState(UiFramework_1.UiFramework.content.getActiveContentControl()?.uniqueId);
22
+ var _a;
23
+ const [activeContentId, setActiveContentId] = React.useState((_a = UiFramework_1.UiFramework.content.getActiveContentControl()) === null || _a === void 0 ? void 0 : _a.uniqueId);
23
24
  React.useEffect(() => {
24
25
  const onActiveContentChanged = (_args) => {
25
- setActiveContentId(UiFramework_1.UiFramework.content.getActiveContentControl()?.uniqueId);
26
+ var _a;
27
+ setActiveContentId((_a = UiFramework_1.UiFramework.content.getActiveContentControl()) === null || _a === void 0 ? void 0 : _a.uniqueId);
26
28
  };
27
29
  // IModelApp.viewManager.onSelectedViewportChanged will often fire before UI components have mounted
28
30
  // so use UiFramework.content.onActiveContentChangedEvent which will always trigger once all stage components
@@ -39,9 +41,10 @@ function useActiveContentControlId() {
39
41
  SyncUiEventDispatcher_1.SyncUiEventId.FrontstageReady,
40
42
  ];
41
43
  const handleSyncUiEvent = (args) => {
44
+ var _a;
42
45
  // istanbul ignore else
43
46
  if (syncIdsOfInterest.some((value) => args.eventIds.has(value))) {
44
- setActiveContentId(UiFramework_1.UiFramework.content.getActiveContentControl()?.uniqueId);
47
+ setActiveContentId((_a = UiFramework_1.UiFramework.content.getActiveContentControl()) === null || _a === void 0 ? void 0 : _a.uniqueId);
45
48
  }
46
49
  };
47
50
  return SyncUiEventDispatcher_1.SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);
@@ -1 +1 @@
1
- {"version":3,"file":"ContentDialog.js","sourceRoot":"","sources":["../../../../src/appui-react/dialog/ContentDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Dialog\n */\n\nimport \"./ContentDialog.scss\";\nimport * as React from \"react\";\nimport type { DialogProps } from \"@itwin/core-react\";\nimport { Dialog } from \"@itwin/core-react\";\nimport type { ActiveContentChangedEventArgs } from \"../framework/FrameworkContent\";\nimport {\n SyncUiEventDispatcher,\n SyncUiEventId,\n} from \"../syncui/SyncUiEventDispatcher\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { UiSyncEventArgs } from \"@itwin/appui-abstract\";\nimport classnames from \"classnames\";\n\n// istanbul ignore next\n/**\n *@internal\n */\nexport function useActiveContentControlId(): string | undefined {\n const [activeContentId, setActiveContentId] = React.useState(\n UiFramework.content.getActiveContentControl()?.uniqueId\n );\n\n React.useEffect(() => {\n const onActiveContentChanged = (_args: ActiveContentChangedEventArgs) => {\n setActiveContentId(\n UiFramework.content.getActiveContentControl()?.uniqueId\n );\n };\n\n // IModelApp.viewManager.onSelectedViewportChanged will often fire before UI components have mounted\n // so use UiFramework.content.onActiveContentChangedEvent which will always trigger once all stage components\n // are loaded and when the IModelApp.viewManager.selectedView changes.\n UiFramework.content.onActiveContentChangedEvent.addListener(\n onActiveContentChanged\n );\n return () => {\n UiFramework.content.onActiveContentChangedEvent.removeListener(\n onActiveContentChanged\n );\n };\n }, []);\n\n React.useEffect(() => {\n const syncIdsOfInterest = [\n SyncUiEventId.ActiveContentChanged,\n SyncUiEventId.ContentControlActivated,\n SyncUiEventId.FrontstageReady,\n ];\n const handleSyncUiEvent = (args: UiSyncEventArgs): void => {\n // istanbul ignore else\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value)\n )\n ) {\n setActiveContentId(\n UiFramework.content.getActiveContentControl()?.uniqueId\n );\n }\n };\n\n return SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\n }, []);\n\n return activeContentId;\n}\n\n/** Properties for the [[ContentDialog]] component\n * @public\n */\nexport interface ContentDialogProps extends DialogProps {\n dialogId: string;\n movable?: boolean;\n children: React.ReactNode;\n}\n\n/** Content Dialog React component uses the Dialog component with a modal={false} prop.\n * It controls the z-index to keep the focused dialog above content but below widgets.\n * @public\n */\nexport function ContentDialog(props: ContentDialogProps) {\n const {\n className,\n children,\n dialogId,\n style,\n modal,\n modelessId,\n onModelessPointerDown,\n ...otherProps\n } = props;\n const activeContentControlId = useActiveContentControlId();\n // istanbul ignore next\n const dialogClassName = React.useMemo(\n () =>\n classnames(\n activeContentControlId === dialogId\n ? \"active-content-dialog\"\n : \"inactive-content-dialog\",\n className\n ),\n [activeContentControlId, className, dialogId]\n );\n\n const [zIndex, setZIndex] = React.useState(\n UiFramework.content.dialogs.getZIndex(dialogId)\n );\n const updateZIndex = React.useCallback(() => {\n const newZ = UiFramework.content.dialogs.getZIndex(dialogId);\n // istanbul ignore else\n if (newZ !== zIndex) {\n setZIndex(newZ);\n }\n }, [dialogId, zIndex]);\n\n return (\n <Dialog\n className={dialogClassName}\n data-item-type=\"content-dialog\"\n data-item-id={dialogId}\n resizable={true}\n movable={true}\n trapFocus={false}\n modal={false}\n {...otherProps}\n modelessId={dialogId}\n onModelessPointerDown={(event) =>\n UiFramework.content.dialogs.handlePointerDownEvent(\n event,\n dialogId,\n updateZIndex\n )\n }\n style={{ zIndex, ...style }}\n >\n {children}\n </Dialog>\n );\n}\n"]}
1
+ {"version":3,"file":"ContentDialog.js","sourceRoot":"","sources":["../../../../src/appui-react/dialog/ContentDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Dialog\n */\n\nimport \"./ContentDialog.scss\";\nimport * as React from \"react\";\nimport type { DialogProps } from \"@itwin/core-react\";\nimport { Dialog } from \"@itwin/core-react\";\nimport type { ActiveContentChangedEventArgs } from \"../framework/FrameworkContent\";\nimport {\n SyncUiEventDispatcher,\n SyncUiEventId,\n} from \"../syncui/SyncUiEventDispatcher\";\nimport { UiFramework } from \"../UiFramework\";\nimport classnames from \"classnames\";\nimport type { UiSyncEventArgs } from \"../syncui/UiSyncEvent\";\n\n// istanbul ignore next\n/**\n *@internal\n */\nexport function useActiveContentControlId(): string | undefined {\n const [activeContentId, setActiveContentId] = React.useState(\n UiFramework.content.getActiveContentControl()?.uniqueId\n );\n\n React.useEffect(() => {\n const onActiveContentChanged = (_args: ActiveContentChangedEventArgs) => {\n setActiveContentId(\n UiFramework.content.getActiveContentControl()?.uniqueId\n );\n };\n\n // IModelApp.viewManager.onSelectedViewportChanged will often fire before UI components have mounted\n // so use UiFramework.content.onActiveContentChangedEvent which will always trigger once all stage components\n // are loaded and when the IModelApp.viewManager.selectedView changes.\n UiFramework.content.onActiveContentChangedEvent.addListener(\n onActiveContentChanged\n );\n return () => {\n UiFramework.content.onActiveContentChangedEvent.removeListener(\n onActiveContentChanged\n );\n };\n }, []);\n\n React.useEffect(() => {\n const syncIdsOfInterest = [\n SyncUiEventId.ActiveContentChanged,\n SyncUiEventId.ContentControlActivated,\n SyncUiEventId.FrontstageReady,\n ];\n const handleSyncUiEvent = (args: UiSyncEventArgs): void => {\n // istanbul ignore else\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value)\n )\n ) {\n setActiveContentId(\n UiFramework.content.getActiveContentControl()?.uniqueId\n );\n }\n };\n\n return SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\n }, []);\n\n return activeContentId;\n}\n\n/** Properties for the [[ContentDialog]] component\n * @public\n */\nexport interface ContentDialogProps extends DialogProps {\n dialogId: string;\n movable?: boolean;\n children: React.ReactNode;\n}\n\n/** Content Dialog React component uses the Dialog component with a modal={false} prop.\n * It controls the z-index to keep the focused dialog above content but below widgets.\n * @public\n */\nexport function ContentDialog(props: ContentDialogProps) {\n const {\n className,\n children,\n dialogId,\n style,\n modal,\n modelessId,\n onModelessPointerDown,\n ...otherProps\n } = props;\n const activeContentControlId = useActiveContentControlId();\n // istanbul ignore next\n const dialogClassName = React.useMemo(\n () =>\n classnames(\n activeContentControlId === dialogId\n ? \"active-content-dialog\"\n : \"inactive-content-dialog\",\n className\n ),\n [activeContentControlId, className, dialogId]\n );\n\n const [zIndex, setZIndex] = React.useState(\n UiFramework.content.dialogs.getZIndex(dialogId)\n );\n const updateZIndex = React.useCallback(() => {\n const newZ = UiFramework.content.dialogs.getZIndex(dialogId);\n // istanbul ignore else\n if (newZ !== zIndex) {\n setZIndex(newZ);\n }\n }, [dialogId, zIndex]);\n\n return (\n <Dialog\n className={dialogClassName}\n data-item-type=\"content-dialog\"\n data-item-id={dialogId}\n resizable={true}\n movable={true}\n trapFocus={false}\n modal={false}\n {...otherProps}\n modelessId={dialogId}\n onModelessPointerDown={(event) =>\n UiFramework.content.dialogs.handlePointerDownEvent(\n event,\n dialogId,\n updateZIndex\n )\n }\n style={{ zIndex, ...style }}\n >\n {children}\n </Dialog>\n );\n}\n"]}
@@ -64,7 +64,7 @@ class DialogManagerBase {
64
64
  if (!id)
65
65
  id = `Dialog-${++DialogManagerBase._sId}`;
66
66
  // istanbul ignore next
67
- const owningDoc = parentDocument ?? document;
67
+ const owningDoc = parentDocument !== null && parentDocument !== void 0 ? parentDocument : document;
68
68
  this.pushDialog({ reactNode: dialog, id, parentDocument: owningDoc });
69
69
  }
70
70
  /** @internal */
@@ -126,7 +126,8 @@ class DialogRendererBase extends React.PureComponent {
126
126
  parentDocument: null,
127
127
  };
128
128
  this._handleRefSet = (popupDiv) => {
129
- this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });
129
+ var _a;
130
+ this.setState({ parentDocument: (_a = popupDiv === null || popupDiv === void 0 ? void 0 : popupDiv.ownerDocument) !== null && _a !== void 0 ? _a : null });
130
131
  };
131
132
  this._handleDialogChangedEvent = (_args) => {
132
133
  this.forceUpdate();
@@ -1 +1 @@
1
- {"version":3,"file":"DialogManagerBase.js","sourceRoot":"","sources":["../../../../src/appui-react/dialog/DialogManagerBase.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Dialog\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport { UiFramework } from \"../UiFramework\";\nimport { getCssVariableAsNumber } from \"@itwin/core-react\";\n\n/** Dialog Stack Changed Event Args class.\n * @public\n */\nexport interface DialogChangedEventArgs {\n dialogCount: number;\n activeDialog: React.ReactNode | undefined;\n}\n\n/** Dialog Changed Event class.\n * @public\n */\nexport class DialogChangedEvent extends UiEvent<DialogChangedEventArgs> {}\n\n/** Information maintained by a Dialog Manager about a dialog\n * @public\n */\nexport interface DialogInfo {\n reactNode: React.ReactNode;\n id: string;\n parentDocument: Document;\n}\n\n/** Used if the 'dialog' z-index CSS variable cannot be read */\nconst ZINDEX_DEFAULT = 12000;\n\n/** Dialog Manager class.\n * @internal\n */\nexport class DialogManagerBase {\n private static _sId = 0;\n private _dialogs: DialogInfo[] = new Array<DialogInfo>();\n private _onDialogChangedEvent: DialogChangedEvent;\n private static _topZIndex = ZINDEX_DEFAULT;\n\n constructor(onDialogChangedEvent: DialogChangedEvent) {\n this._onDialogChangedEvent = onDialogChangedEvent;\n }\n\n /** Initialize the modeless dialog manager */\n public static initialize(): void {\n DialogManagerBase._topZIndex = DialogManagerBase.getDialogZIndexDefault();\n }\n\n public static get topZIndex(): number {\n return DialogManagerBase._topZIndex;\n }\n\n public static set topZIndex(zIndex: number) {\n DialogManagerBase._topZIndex = zIndex;\n }\n public get dialogs() {\n return this._dialogs;\n }\n\n public get onDialogChangedEvent(): DialogChangedEvent {\n return this._onDialogChangedEvent;\n }\n\n public static getDialogZIndexDefault(): number {\n const variable = \"--uicore-z-index-dialog\";\n const value = getCssVariableAsNumber(variable);\n\n // istanbul ignore next\n if (!isNaN(value)) return value;\n\n Logger.logError(\n UiFramework.loggerCategory(this),\n `'${variable}' CSS variable not found`\n );\n return ZINDEX_DEFAULT;\n }\n\n /**\n * Triggers opening a dialog.\n * @param dialog Dialog React component.\n * @param id The unique Id the identifies the dialog.\n * @param parentDocument Optional document required when displaying a dialog in a child popup window.\n */\n public openDialog(\n dialog: React.ReactNode,\n id?: string,\n parentDocument?: Document\n ): void {\n if (!id) id = `Dialog-${++DialogManagerBase._sId}`;\n\n // istanbul ignore next\n const owningDoc = parentDocument ?? document;\n this.pushDialog({ reactNode: dialog, id, parentDocument: owningDoc });\n }\n\n /** @internal */\n public pushDialog(dialogInfo: DialogInfo): void {\n this._dialogs.push(dialogInfo);\n this.emitDialogChangedEvent();\n }\n\n public closeDialog(dialog?: React.ReactNode): void {\n let targetDialog = dialog;\n if (!dialog) targetDialog = this.activeDialog;\n\n this.removeDialog(targetDialog);\n this.emitDialogChangedEvent();\n }\n\n /** @internal */\n public closeAll(): void {\n this._dialogs = [];\n this.emitDialogChangedEvent();\n }\n\n /** @internal */\n public removeDialog(dialog: React.ReactNode): void {\n const index = this._dialogs.findIndex((dialogInfo: DialogInfo) => {\n return dialog === dialogInfo.reactNode;\n });\n if (index >= 0) this._dialogs.splice(index, 1);\n if (this._dialogs.length < 1)\n DialogManagerBase.topZIndex = DialogManagerBase.getDialogZIndexDefault();\n }\n\n public emitDialogChangedEvent(): void {\n this._onDialogChangedEvent.emit({\n dialogCount: this.dialogCount,\n activeDialog: this.activeDialog,\n });\n }\n\n public update(): void {\n this.emitDialogChangedEvent();\n }\n\n public get activeDialog(): React.ReactNode | undefined {\n if (this._dialogs.length > 0)\n return this._dialogs[this._dialogs.length - 1].reactNode;\n\n return undefined;\n }\n\n public get dialogCount(): number {\n return this._dialogs.length;\n }\n}\n\n/** Properties for the [[DialogRendererBase]] component\n * @internal\n */\nexport interface DialogRendererProps {\n dialogManager: DialogManagerBase;\n style?: React.CSSProperties;\n}\n\n/** @internal */\ninterface DialogRendererState {\n parentDocument: Document | null;\n}\n/** DialogRenderer React component.\n * @internal\n */\nexport class DialogRendererBase extends React.PureComponent<\n DialogRendererProps,\n DialogRendererState\n> {\n /** @internal */\n public override readonly state: DialogRendererState = {\n parentDocument: null,\n };\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (this.props.dialogManager.dialogCount <= 0) return null;\n\n return (\n <div\n className=\"appui-react-dialog-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.props.dialogManager.dialogs\n .filter((info) => info.parentDocument === this.state.parentDocument)\n .map((dialogInfo: DialogInfo) => {\n return (\n <React.Fragment key={dialogInfo.id}>\n {dialogInfo.reactNode}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n public override componentDidMount(): void {\n this.props.dialogManager.onDialogChangedEvent.addListener(\n this._handleDialogChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n this.props.dialogManager.onDialogChangedEvent.removeListener(\n this._handleDialogChangedEvent\n );\n }\n\n private _handleDialogChangedEvent = (_args: DialogChangedEventArgs) => {\n this.forceUpdate();\n };\n}\n"]}
1
+ {"version":3,"file":"DialogManagerBase.js","sourceRoot":"","sources":["../../../../src/appui-react/dialog/DialogManagerBase.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Dialog\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport { UiFramework } from \"../UiFramework\";\nimport { getCssVariableAsNumber } from \"@itwin/core-react\";\n\n/** Dialog Stack Changed Event Args class.\n * @public\n */\nexport interface DialogChangedEventArgs {\n dialogCount: number;\n activeDialog: React.ReactNode | undefined;\n}\n\n/** Dialog Changed Event class.\n * @public\n */\nexport class DialogChangedEvent extends UiEvent<DialogChangedEventArgs> {}\n\n/** Information maintained by a Dialog Manager about a dialog\n * @public\n */\nexport interface DialogInfo {\n reactNode: React.ReactNode;\n id: string;\n parentDocument: Document;\n}\n\n/** Used if the 'dialog' z-index CSS variable cannot be read */\nconst ZINDEX_DEFAULT = 12000;\n\n/** Dialog Manager class.\n * @internal\n */\nexport class DialogManagerBase {\n private static _sId = 0;\n private _dialogs: DialogInfo[] = new Array<DialogInfo>();\n private _onDialogChangedEvent: DialogChangedEvent;\n private static _topZIndex = ZINDEX_DEFAULT;\n\n constructor(onDialogChangedEvent: DialogChangedEvent) {\n this._onDialogChangedEvent = onDialogChangedEvent;\n }\n\n /** Initialize the modeless dialog manager */\n public static initialize(): void {\n DialogManagerBase._topZIndex = DialogManagerBase.getDialogZIndexDefault();\n }\n\n public static get topZIndex(): number {\n return DialogManagerBase._topZIndex;\n }\n\n public static set topZIndex(zIndex: number) {\n DialogManagerBase._topZIndex = zIndex;\n }\n public get dialogs() {\n return this._dialogs;\n }\n\n public get onDialogChangedEvent(): DialogChangedEvent {\n return this._onDialogChangedEvent;\n }\n\n public static getDialogZIndexDefault(): number {\n const variable = \"--uicore-z-index-dialog\";\n const value = getCssVariableAsNumber(variable);\n\n // istanbul ignore next\n if (!isNaN(value)) return value;\n\n Logger.logError(\n UiFramework.loggerCategory(this),\n `'${variable}' CSS variable not found`\n );\n return ZINDEX_DEFAULT;\n }\n\n /**\n * Triggers opening a dialog.\n * @param dialog Dialog React component.\n * @param id The unique Id the identifies the dialog.\n * @param parentDocument Optional document required when displaying a dialog in a child popup window.\n */\n public openDialog(\n dialog: React.ReactNode,\n id?: string,\n parentDocument?: Document\n ): void {\n if (!id) id = `Dialog-${++DialogManagerBase._sId}`;\n\n // istanbul ignore next\n const owningDoc = parentDocument ?? document;\n this.pushDialog({ reactNode: dialog, id, parentDocument: owningDoc });\n }\n\n /** @internal */\n public pushDialog(dialogInfo: DialogInfo): void {\n this._dialogs.push(dialogInfo);\n this.emitDialogChangedEvent();\n }\n\n public closeDialog(dialog?: React.ReactNode): void {\n let targetDialog = dialog;\n if (!dialog) targetDialog = this.activeDialog;\n\n this.removeDialog(targetDialog);\n this.emitDialogChangedEvent();\n }\n\n /** @internal */\n public closeAll(): void {\n this._dialogs = [];\n this.emitDialogChangedEvent();\n }\n\n /** @internal */\n public removeDialog(dialog: React.ReactNode): void {\n const index = this._dialogs.findIndex((dialogInfo: DialogInfo) => {\n return dialog === dialogInfo.reactNode;\n });\n if (index >= 0) this._dialogs.splice(index, 1);\n if (this._dialogs.length < 1)\n DialogManagerBase.topZIndex = DialogManagerBase.getDialogZIndexDefault();\n }\n\n public emitDialogChangedEvent(): void {\n this._onDialogChangedEvent.emit({\n dialogCount: this.dialogCount,\n activeDialog: this.activeDialog,\n });\n }\n\n public update(): void {\n this.emitDialogChangedEvent();\n }\n\n public get activeDialog(): React.ReactNode | undefined {\n if (this._dialogs.length > 0)\n return this._dialogs[this._dialogs.length - 1].reactNode;\n\n return undefined;\n }\n\n public get dialogCount(): number {\n return this._dialogs.length;\n }\n}\n\n/** Properties for the [[DialogRendererBase]] component\n * @internal\n */\nexport interface DialogRendererProps {\n dialogManager: DialogManagerBase;\n style?: React.CSSProperties;\n}\n\n/** @internal */\ninterface DialogRendererState {\n parentDocument: Document | null;\n}\n/** DialogRenderer React component.\n * @internal\n */\nexport class DialogRendererBase extends React.PureComponent<\n DialogRendererProps,\n DialogRendererState\n> {\n /** @internal */\n public override readonly state: DialogRendererState = {\n parentDocument: null,\n };\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (this.props.dialogManager.dialogCount <= 0) return null;\n\n return (\n <div\n className=\"appui-react-dialog-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.props.dialogManager.dialogs\n .filter((info) => info.parentDocument === this.state.parentDocument)\n .map((dialogInfo: DialogInfo) => {\n return (\n <React.Fragment key={dialogInfo.id}>\n {dialogInfo.reactNode}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n public override componentDidMount(): void {\n this.props.dialogManager.onDialogChangedEvent.addListener(\n this._handleDialogChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n this.props.dialogManager.onDialogChangedEvent.removeListener(\n this._handleDialogChangedEvent\n );\n }\n\n private _handleDialogChangedEvent = (_args: DialogChangedEventArgs) => {\n this.forceUpdate();\n };\n}\n"]}
@@ -4,7 +4,6 @@
4
4
  import * as React from "react";
5
5
  import type { XAndY } from "@itwin/core-geometry";
6
6
  import type { ToolTipOptions } from "@itwin/core-frontend";
7
- import type { PointProps } from "@itwin/appui-abstract";
8
7
  import { UiEvent } from "@itwin/appui-abstract";
9
8
  import type { CommonProps } from "@itwin/core-react";
10
9
  import type { NotifyMessageType } from "../messages/ReactNotifyMessageDetails";
@@ -14,7 +13,7 @@ import type { NotifyMessageType } from "../messages/ReactNotifyMessageDetails";
14
13
  interface ElementTooltipState {
15
14
  isVisible: boolean;
16
15
  message: NotifyMessageType;
17
- position: PointProps;
16
+ position: XAndY;
18
17
  options?: ToolTipOptions;
19
18
  }
20
19
  /** [[ElementTooltipChangedEvent]] arguments.
@@ -1 +1 @@
1
- {"version":3,"file":"ElementTooltip.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/feedback/ElementTooltip.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAOvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE/E;;GAEG;AACH,UAAU,mBAAmB;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,UAAU,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,OAAO,CAAC,8BAA8B,CAAC;CAAG;AAE1F;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CACjD,WAAW,EACX,mBAAmB,CACpB;IACC,OAAO,CAAC,MAAM,CAAC,2BAA2B,CACP;IACnC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAU;IAC1C,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAU;IAEzC,WAAkB,4BAA4B,IAAI,0BAA0B,CAE3E;IACD,WAAkB,gBAAgB,IAAI,OAAO,CAE5C;WAEa,WAAW,CACvB,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,iBAAiB,EAC1B,EAAE,CAAC,EAAE,KAAK,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI;WAiBO,WAAW,IAAI,IAAI;IASjC,WAAkB,eAAe,IAAI,OAAO,CAE3C;IAED,WAAkB,eAAe,CAAC,IAAI,EAAE,OAAO,EAG9C;IAED,OAAO,CAAC,KAAK,CAGX;IACF,OAAO,CAAC,QAAQ,CAAC,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAa;IAE/B,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAO3D;gBAEU,KAAK,EAAE,WAAW;IAId,MAAM;IAqBN,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5C,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAwB/B,OAAO,CAAC,iCAAiC,CAUvC;IAGF,OAAO,CAAC,kBAAkB,CAGxB;IAEF,OAAO,CAAC,cAAc;CA4BvB"}
1
+ {"version":3,"file":"ElementTooltip.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/feedback/ElementTooltip.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAOvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE/E;;GAEG;AACH,UAAU,mBAAmB;IAC3B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,QAAQ,EAAE,KAAK,CAAC;IAChB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,gBAAgB,EAAE,OAAO,CAAC;IAC1B,OAAO,EAAE,iBAAiB,CAAC;IAC3B,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,EAAE,CAAC,EAAE,KAAK,CAAC;IACX,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,OAAO,CAAC,8BAA8B,CAAC;CAAG;AAE1F;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CACjD,WAAW,EACX,mBAAmB,CACpB;IACC,OAAO,CAAC,MAAM,CAAC,2BAA2B,CACP;IACnC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAU;IAC1C,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAU;IAEzC,WAAkB,4BAA4B,IAAI,0BAA0B,CAE3E;IACD,WAAkB,gBAAgB,IAAI,OAAO,CAE5C;WAEa,WAAW,CACvB,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,iBAAiB,EAC1B,EAAE,CAAC,EAAE,KAAK,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI;WAiBO,WAAW,IAAI,IAAI;IASjC,WAAkB,eAAe,IAAI,OAAO,CAE3C;IAED,WAAkB,eAAe,CAAC,IAAI,EAAE,OAAO,EAG9C;IAED,OAAO,CAAC,KAAK,CAGX;IACF,OAAO,CAAC,QAAQ,CAAC,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAC,CAAQ;IAE1B,gBAAgB;IAChB,SAAyB,KAAK,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAO3D;gBAEU,KAAK,EAAE,WAAW;IAId,MAAM;IAqBN,iBAAiB,IAAI,IAAI;IAMzB,oBAAoB,IAAI,IAAI;IAM5C,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAwB/B,OAAO,CAAC,iCAAiC,CAUvC;IAGF,OAAO,CAAC,kBAAkB,CAGxB;IAEF,OAAO,CAAC,cAAc;CA4BvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ElementTooltip.js","sourceRoot":"","sources":["../../../../src/appui-react/feedback/ElementTooltip.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,2CAAoC;AACpC,+BAA+B;AAI/B,0DAAgD;AAEhD,kDAA8C;AAC9C,kEAGmC;AACnC,yDAAqD;AAwBrD;;GAEG;AACH,MAAa,0BAA2B,SAAQ,wBAAuC;CAAG;AAA1F,gEAA0F;AAE1F;;GAEG;AACH,MAAa,cAAe,SAAQ,KAAK,CAAC,SAGzC;IAMQ,MAAM,KAAK,4BAA4B;QAC5C,OAAO,cAAc,CAAC,2BAA2B,CAAC;IACpD,CAAC;IACM,MAAM,KAAK,gBAAgB;QAChC,OAAO,cAAc,CAAC,iBAAiB,CAAC;IAC1C,CAAC;IAEM,MAAM,CAAC,WAAW,CACvB,EAAe,EACf,OAA0B,EAC1B,EAAU,EACV,OAAwB;QAExB,qBAAqB;QACrB,IAAI,cAAc,CAAC,gBAAgB;YAAE,OAAO;QAC5C,cAAc,CAAC,iBAAiB,GAAG,IAAI,CAAC;QACxC,cAAc,CAAC,4BAA4B,CAAC,IAAI,CAAC;YAC/C,gBAAgB,EAAE,IAAI;YACtB,EAAE;YACF,OAAO;YACP,EAAE;YACF,OAAO;SACR,CAAC,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAC/B,WAAW,EACX,cAAc,CAAC,gBAAgB,CAChC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,WAAW;QACvB,cAAc,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACzC,cAAc,CAAC,4BAA4B,CAAC,IAAI,CAAC;YAC/C,gBAAgB,EAAE,KAAK;YACvB,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED,uBAAuB;IAChB,MAAM,KAAK,eAAe;QAC/B,OAAO,cAAc,CAAC,gBAAgB,CAAC;IACzC,CAAC;IACD,uBAAuB;IAChB,MAAM,KAAK,eAAe,CAAC,IAAa;QAC7C,cAAc,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACvC,IAAI,IAAI,IAAI,cAAc,CAAC,iBAAiB;YAAE,cAAc,CAAC,WAAW,EAAE,CAAC;IAC7E,CAAC;IAmBD,YAAY,KAAkB;QAC5B,KAAK,CAAC,KAAK,CAAC,CAAC;QAlBP,UAAK,GAAc;YACzB,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;SACT,CAAC;QAIF,gBAAgB;QACS,UAAK,GAAkC;YAC9D,OAAO,EAAE,EAAE;YACX,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE;gBACR,CAAC,EAAE,CAAC;gBACJ,CAAC,EAAE,CAAC;aACL;SACF,CAAC;QA+DM,sCAAiC,GAAG,CAC1C,IAAoC,EACpC,EAAE;YACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,CAAC;gBACZ,SAAS,EAAE,IAAI,CAAC,gBAAgB;gBAChC,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,uBAAuB;QACf,uBAAkB,GAAG,CAAC,IAAe,EAAE,EAAE;YAC/C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;IA3EF,CAAC;IAEe,MAAM;QACpB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAEvC,MAAM,SAAS,GAAG,IAAA,oBAAU,EAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE3E,MAAM,WAAW,GAAG,oBAAC,wBAAU,IAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAI,CAAC;QAEhE,OAAO,CACL,6BAAK,SAAS,EAAC,gCAAgC;YAC7C,oBAAC,4BAAO,IACN,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,aAAa,EAAE,IAAI,CAAC,kBAAkB,IAErC,WAAW,CACJ,CACN,CACP,CAAC;IACJ,CAAC;IAEe,iBAAiB;QAC/B,cAAc,CAAC,4BAA4B,CAAC,WAAW,CACrD,IAAI,CAAC,iCAAiC,CACvC,CAAC;IACJ,CAAC;IAEe,oBAAoB;QAClC,cAAc,CAAC,4BAA4B,CAAC,cAAc,CACxD,IAAI,CAAC,iCAAiC,CACvC,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,KAAiB;QAC/C,MAAM,EAAE,GAAG,KAAK,CAAC,aAAyB,CAAC;QAC3C,iEAAiE;QACjE,IACE,CAAC,EAAE,IAAI,cAAc,CAAC,gBAAgB,CAAC;YACvC,CAAC,cAAc,CAAC,iBAAiB,EACjC;YACA,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACrE,OAAO;SACR;QACD,MAAM,cAAc,GAAG,EAAE;YACvB,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YACnD,CAAC,CAAC,SAAS,CAAC;QACd,iGAAiG;QACjG,wBAAwB;QACxB,IAAI,cAAc,IAAI,cAAc,CAAC,SAAS,KAAK,QAAQ,EAAE;YAC3D,cAAc,CAAC,4BAA4B,CAAC,IAAI,CAAC;gBAC/C,gBAAgB,EAAE,KAAK;gBACvB,OAAO,EAAE,EAAE;aACZ,CAAC,CAAC;YACH,EAAE,CAAC,mBAAmB,CAAC,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACrE,OAAO;SACR;IACH,CAAC;IAmBO,cAAc;QACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,EAAE;YAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC;YAChC,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,OAAO,IAAI,CAAC;YAEjC,MAAM,eAAe,GAAG,sBAAS,CAAC,MAAM,CACtC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,CACtC,CAAC;YACF,MAAM,cAAc,GAAG,sBAAS,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAChE,IAAI,CAAC,SAAS,CACf,CAAC;YACF,MAAM,gBAAgB,GAAU,IAAA,gDAA2B,EACzD,cAAc,EACd,eAAe,CAAC,OAAO,EAAE,EACzB,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CACf,CAAC;YACF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAEpE,uBAAuB;YACvB,IAAI,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAAE,OAAO,IAAI,CAAC;YAErD,uBAAuB;YACvB,OAAO;gBACL,QAAQ;aACT,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AA/Kc,0CAA2B,GACxC,IAAI,0BAA0B,EAAE,AADQ,CACP;AALxB,wCAAc","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ToolTipOptions } from \"@itwin/core-frontend\";\nimport type { PointProps } from \"@itwin/appui-abstract\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { CommonProps, Point, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle } from \"@itwin/core-react\";\nimport {\n offsetAndContainInContainer,\n Tooltip,\n} from \"@itwin/appui-layout-react\";\nimport { MessageDiv } from \"../messages/MessageSpan\";\nimport type { NotifyMessageType } from \"../messages/ReactNotifyMessageDetails\";\n\n/** [[ElementTooltip]] State.\n * @internal\n */\ninterface ElementTooltipState {\n isVisible: boolean;\n message: NotifyMessageType;\n position: PointProps;\n options?: ToolTipOptions;\n}\n\n/** [[ElementTooltipChangedEvent]] arguments.\n * @public\n */\nexport interface ElementTooltipChangedEventArgs {\n isTooltipVisible: boolean;\n message: NotifyMessageType;\n el?: HTMLElement;\n pt?: XAndY;\n options?: ToolTipOptions;\n}\n\n/** ElementTooltip Changed Event class.\n * @public\n */\nexport class ElementTooltipChangedEvent extends UiEvent<ElementTooltipChangedEventArgs> {}\n\n/** ElementTooltip React component.\n * @public\n */\nexport class ElementTooltip extends React.Component<\n CommonProps,\n ElementTooltipState\n> {\n private static _elementTooltipChangedEvent: ElementTooltipChangedEvent =\n new ElementTooltipChangedEvent();\n private static _isTooltipVisible: boolean;\n private static _isTooltipHalted: boolean;\n\n public static get onElementTooltipChangedEvent(): ElementTooltipChangedEvent {\n return ElementTooltip._elementTooltipChangedEvent;\n }\n public static get isTooltipVisible(): boolean {\n return ElementTooltip._isTooltipVisible;\n }\n\n public static showTooltip(\n el: HTMLElement,\n message: NotifyMessageType,\n pt?: XAndY,\n options?: ToolTipOptions\n ): void {\n // istanbul ignore if\n if (ElementTooltip._isTooltipHalted) return;\n ElementTooltip._isTooltipVisible = true;\n ElementTooltip.onElementTooltipChangedEvent.emit({\n isTooltipVisible: true,\n el,\n message,\n pt,\n options,\n });\n el.ownerDocument.addEventListener(\n \"mousemove\",\n ElementTooltip._handleMouseMove\n );\n }\n\n public static hideTooltip(): void {\n ElementTooltip._isTooltipVisible = false;\n ElementTooltip.onElementTooltipChangedEvent.emit({\n isTooltipVisible: false,\n message: \"\",\n });\n }\n\n // istanbul ignore next\n public static get isTooltipHalted(): boolean {\n return ElementTooltip._isTooltipHalted;\n }\n // istanbul ignore next\n public static set isTooltipHalted(halt: boolean) {\n ElementTooltip._isTooltipHalted = halt;\n if (halt && ElementTooltip._isTooltipVisible) ElementTooltip.hideTooltip();\n }\n\n private _size: SizeProps = {\n height: 0,\n width: 0,\n };\n private _element?: HTMLElement;\n private _position?: PointProps;\n\n /** @internal */\n public override readonly state: Readonly<ElementTooltipState> = {\n message: \"\",\n isVisible: false,\n position: {\n x: 0,\n y: 0,\n },\n };\n\n constructor(props: CommonProps) {\n super(props);\n }\n\n public override render() {\n if (!this.state.isVisible) return null;\n\n const className = classnames(\"uifw-element-tooltip\", this.props.className);\n\n const messageNode = <MessageDiv message={this.state.message} />;\n\n return (\n <div className=\"uifw-element-tooltip-container\">\n <Tooltip\n className={className}\n style={this.props.style}\n position={this.state.position}\n onSizeChanged={this._handleSizeChanged}\n >\n {messageNode}\n </Tooltip>\n </div>\n );\n }\n\n public override componentDidMount(): void {\n ElementTooltip.onElementTooltipChangedEvent.addListener(\n this._handleElementTooltipChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n ElementTooltip.onElementTooltipChangedEvent.removeListener(\n this._handleElementTooltipChangedEvent\n );\n }\n\n private static _handleMouseMove(event: MouseEvent) {\n const el = event.currentTarget as Document;\n /* Only monitor mouse movement when an ElementTooltip is open. */\n if (\n (el && ElementTooltip._isTooltipHalted) ||\n !ElementTooltip._isTooltipVisible\n ) {\n el.removeEventListener(\"mousemove\", ElementTooltip._handleMouseMove);\n return;\n }\n const hoveredElement = el\n ? el.elementFromPoint(event.clientX, event.clientY)\n : undefined;\n /* If the mouse has moved to an element that is not the view canvas, close the ElementTooltip. */\n // istanbul ignore next.\n if (hoveredElement && hoveredElement.localName !== \"canvas\") {\n ElementTooltip.onElementTooltipChangedEvent.emit({\n isTooltipVisible: false,\n message: \"\",\n });\n el.removeEventListener(\"mousemove\", ElementTooltip._handleMouseMove);\n return;\n }\n }\n private _handleElementTooltipChangedEvent = (\n args: ElementTooltipChangedEventArgs\n ) => {\n this._element = args.el;\n this._position = args.pt;\n this.setState({\n isVisible: args.isTooltipVisible,\n message: args.message,\n });\n this.updatePosition();\n };\n\n // istanbul ignore next\n private _handleSizeChanged = (size: SizeProps) => {\n this._size = size;\n this.updatePosition();\n };\n\n private updatePosition() {\n this.setState((prevState) => {\n if (!this._element) return null;\n // istanbul ignore next\n if (!this._position) return null;\n\n const containerBounds = Rectangle.create(\n this._element.getBoundingClientRect()\n );\n const relativeBounds = Rectangle.createFromSize(this._size).offset(\n this._position\n );\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n { x: 8, y: 8 }\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n // istanbul ignore else\n if (position.equals(prevState.position)) return null;\n\n // istanbul ignore next\n return {\n position,\n };\n });\n }\n}\n"]}
1
+ {"version":3,"file":"ElementTooltip.js","sourceRoot":"","sources":["../../../../src/appui-react/feedback/ElementTooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ToolTipOptions } from \"@itwin/core-frontend\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { CommonProps, Point, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle } from \"@itwin/core-react\";\nimport {\n offsetAndContainInContainer,\n Tooltip,\n} from \"@itwin/appui-layout-react\";\nimport { MessageDiv } from \"../messages/MessageSpan\";\nimport type { NotifyMessageType } from \"../messages/ReactNotifyMessageDetails\";\n\n/** [[ElementTooltip]] State.\n * @internal\n */\ninterface ElementTooltipState {\n isVisible: boolean;\n message: NotifyMessageType;\n position: XAndY;\n options?: ToolTipOptions;\n}\n\n/** [[ElementTooltipChangedEvent]] arguments.\n * @public\n */\nexport interface ElementTooltipChangedEventArgs {\n isTooltipVisible: boolean;\n message: NotifyMessageType;\n el?: HTMLElement;\n pt?: XAndY;\n options?: ToolTipOptions;\n}\n\n/** ElementTooltip Changed Event class.\n * @public\n */\nexport class ElementTooltipChangedEvent extends UiEvent<ElementTooltipChangedEventArgs> {}\n\n/** ElementTooltip React component.\n * @public\n */\nexport class ElementTooltip extends React.Component<\n CommonProps,\n ElementTooltipState\n> {\n private static _elementTooltipChangedEvent: ElementTooltipChangedEvent =\n new ElementTooltipChangedEvent();\n private static _isTooltipVisible: boolean;\n private static _isTooltipHalted: boolean;\n\n public static get onElementTooltipChangedEvent(): ElementTooltipChangedEvent {\n return ElementTooltip._elementTooltipChangedEvent;\n }\n public static get isTooltipVisible(): boolean {\n return ElementTooltip._isTooltipVisible;\n }\n\n public static showTooltip(\n el: HTMLElement,\n message: NotifyMessageType,\n pt?: XAndY,\n options?: ToolTipOptions\n ): void {\n // istanbul ignore if\n if (ElementTooltip._isTooltipHalted) return;\n ElementTooltip._isTooltipVisible = true;\n ElementTooltip.onElementTooltipChangedEvent.emit({\n isTooltipVisible: true,\n el,\n message,\n pt,\n options,\n });\n el.ownerDocument.addEventListener(\n \"mousemove\",\n ElementTooltip._handleMouseMove\n );\n }\n\n public static hideTooltip(): void {\n ElementTooltip._isTooltipVisible = false;\n ElementTooltip.onElementTooltipChangedEvent.emit({\n isTooltipVisible: false,\n message: \"\",\n });\n }\n\n // istanbul ignore next\n public static get isTooltipHalted(): boolean {\n return ElementTooltip._isTooltipHalted;\n }\n // istanbul ignore next\n public static set isTooltipHalted(halt: boolean) {\n ElementTooltip._isTooltipHalted = halt;\n if (halt && ElementTooltip._isTooltipVisible) ElementTooltip.hideTooltip();\n }\n\n private _size: SizeProps = {\n height: 0,\n width: 0,\n };\n private _element?: HTMLElement;\n private _position?: XAndY;\n\n /** @internal */\n public override readonly state: Readonly<ElementTooltipState> = {\n message: \"\",\n isVisible: false,\n position: {\n x: 0,\n y: 0,\n },\n };\n\n constructor(props: CommonProps) {\n super(props);\n }\n\n public override render() {\n if (!this.state.isVisible) return null;\n\n const className = classnames(\"uifw-element-tooltip\", this.props.className);\n\n const messageNode = <MessageDiv message={this.state.message} />;\n\n return (\n <div className=\"uifw-element-tooltip-container\">\n <Tooltip\n className={className}\n style={this.props.style}\n position={this.state.position}\n onSizeChanged={this._handleSizeChanged}\n >\n {messageNode}\n </Tooltip>\n </div>\n );\n }\n\n public override componentDidMount(): void {\n ElementTooltip.onElementTooltipChangedEvent.addListener(\n this._handleElementTooltipChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n ElementTooltip.onElementTooltipChangedEvent.removeListener(\n this._handleElementTooltipChangedEvent\n );\n }\n\n private static _handleMouseMove(event: MouseEvent) {\n const el = event.currentTarget as Document;\n /* Only monitor mouse movement when an ElementTooltip is open. */\n if (\n (el && ElementTooltip._isTooltipHalted) ||\n !ElementTooltip._isTooltipVisible\n ) {\n el.removeEventListener(\"mousemove\", ElementTooltip._handleMouseMove);\n return;\n }\n const hoveredElement = el\n ? el.elementFromPoint(event.clientX, event.clientY)\n : undefined;\n /* If the mouse has moved to an element that is not the view canvas, close the ElementTooltip. */\n // istanbul ignore next.\n if (hoveredElement && hoveredElement.localName !== \"canvas\") {\n ElementTooltip.onElementTooltipChangedEvent.emit({\n isTooltipVisible: false,\n message: \"\",\n });\n el.removeEventListener(\"mousemove\", ElementTooltip._handleMouseMove);\n return;\n }\n }\n private _handleElementTooltipChangedEvent = (\n args: ElementTooltipChangedEventArgs\n ) => {\n this._element = args.el;\n this._position = args.pt;\n this.setState({\n isVisible: args.isTooltipVisible,\n message: args.message,\n });\n this.updatePosition();\n };\n\n // istanbul ignore next\n private _handleSizeChanged = (size: SizeProps) => {\n this._size = size;\n this.updatePosition();\n };\n\n private updatePosition() {\n this.setState((prevState) => {\n if (!this._element) return null;\n // istanbul ignore next\n if (!this._position) return null;\n\n const containerBounds = Rectangle.create(\n this._element.getBoundingClientRect()\n );\n const relativeBounds = Rectangle.createFromSize(this._size).offset(\n this._position\n );\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n { x: 8, y: 8 }\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n // istanbul ignore else\n if (position.equals(prevState.position)) return null;\n\n // istanbul ignore next\n return {\n position,\n };\n });\n }\n}\n"]}