@itwin/appui-react 3.0.0-dev.146 → 3.0.0-dev.151

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 (219) hide show
  1. package/lib/cjs/appui-react/UiFramework.d.ts +2 -1
  2. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  3. package/lib/cjs/appui-react/UiFramework.js +2 -2
  4. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  5. package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  6. package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
  7. package/lib/cjs/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  8. package/lib/cjs/appui-react/backstage/CommandLaunch.js.map +1 -1
  9. package/lib/cjs/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
  10. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +1 -1
  11. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  12. package/lib/cjs/appui-react/content/ContentControl.d.ts +1 -1
  13. package/lib/cjs/appui-react/content/ContentControl.d.ts.map +1 -1
  14. package/lib/cjs/appui-react/content/ContentControl.js +2 -2
  15. package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
  16. package/lib/cjs/appui-react/content/ContentLayout.d.ts +2 -2
  17. package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
  18. package/lib/cjs/appui-react/content/ContentLayout.js +2 -1
  19. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  20. package/lib/cjs/appui-react/content/ContentViewManager.d.ts +1 -1
  21. package/lib/cjs/appui-react/content/ContentViewManager.d.ts.map +1 -1
  22. package/lib/cjs/appui-react/content/ContentViewManager.js +3 -3
  23. package/lib/cjs/appui-react/content/ContentViewManager.js.map +1 -1
  24. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts +1 -2
  25. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  26. package/lib/cjs/appui-react/cursor/CursorInformation.js +1 -1
  27. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  28. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  29. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  30. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  31. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  32. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +3 -3
  33. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  34. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  35. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  36. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -2
  37. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  38. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts +2 -2
  39. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  40. package/lib/cjs/appui-react/feedback/ElementTooltip.js +2 -1
  41. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  42. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  43. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  44. package/lib/cjs/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  45. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  46. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  47. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  48. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  49. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  50. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -1
  51. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  52. package/lib/cjs/appui-react/messages/MessageManager.d.ts +1 -2
  53. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  54. package/lib/cjs/appui-react/messages/MessageManager.js +8 -8
  55. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  56. package/lib/cjs/appui-react/messages/Pointer.d.ts +2 -2
  57. package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
  58. package/lib/cjs/appui-react/messages/Pointer.js +2 -2
  59. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  60. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  61. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  62. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js +2 -2
  63. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  64. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  65. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  66. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  67. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  68. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +1 -1
  69. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  70. package/lib/cjs/appui-react/pickers/ViewSelector.js +3 -3
  71. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  72. package/lib/cjs/appui-react/popup/PopupManager.d.ts +2 -2
  73. package/lib/cjs/appui-react/popup/PopupManager.d.ts.map +1 -1
  74. package/lib/cjs/appui-react/popup/PopupManager.js +1 -1
  75. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  76. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  77. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  78. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts +2 -2
  79. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  80. package/lib/cjs/appui-react/syncui/BooleanListener.js +2 -1
  81. package/lib/cjs/appui-react/syncui/BooleanListener.js.map +1 -1
  82. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -16
  83. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  84. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +28 -101
  85. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  86. package/lib/cjs/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  87. package/lib/cjs/appui-react/toolbar/ActionItemButton.js.map +1 -1
  88. package/lib/cjs/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  90. package/lib/cjs/appui-react/toolbar/ToolButton.js.map +1 -1
  91. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  92. package/lib/cjs/appui-react/toolbar/Toolbar.js +1 -1
  93. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  94. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  95. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  96. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  97. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  98. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  99. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -2
  100. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  101. package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -2
  102. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  103. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  104. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  105. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js +3 -2
  106. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  107. package/lib/cjs/appui-react.d.ts +2 -2
  108. package/lib/cjs/appui-react.js +2 -2
  109. package/lib/cjs/appui-react.js.map +1 -1
  110. package/lib/esm/appui-react/UiFramework.d.ts +2 -1
  111. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  112. package/lib/esm/appui-react/UiFramework.js +2 -2
  113. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  114. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  115. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  116. package/lib/esm/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  117. package/lib/esm/appui-react/backstage/CommandLaunch.js.map +1 -1
  118. package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
  119. package/lib/esm/appui-react/childwindow/ChildWindowManager.js +1 -1
  120. package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  121. package/lib/esm/appui-react/content/ContentControl.d.ts +1 -1
  122. package/lib/esm/appui-react/content/ContentControl.d.ts.map +1 -1
  123. package/lib/esm/appui-react/content/ContentControl.js +1 -1
  124. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  125. package/lib/esm/appui-react/content/ContentLayout.d.ts +2 -2
  126. package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
  127. package/lib/esm/appui-react/content/ContentLayout.js +2 -1
  128. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  129. package/lib/esm/appui-react/content/ContentViewManager.d.ts +1 -1
  130. package/lib/esm/appui-react/content/ContentViewManager.d.ts.map +1 -1
  131. package/lib/esm/appui-react/content/ContentViewManager.js +1 -1
  132. package/lib/esm/appui-react/content/ContentViewManager.js.map +1 -1
  133. package/lib/esm/appui-react/cursor/CursorInformation.d.ts +1 -2
  134. package/lib/esm/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  135. package/lib/esm/appui-react/cursor/CursorInformation.js +2 -2
  136. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  137. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  138. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  139. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  140. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  141. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +2 -2
  142. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  143. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  144. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  145. package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -1
  146. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  147. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts +2 -2
  148. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  149. package/lib/esm/appui-react/feedback/ElementTooltip.js +2 -1
  150. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  151. package/lib/esm/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  152. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  153. package/lib/esm/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  154. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  155. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  156. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  157. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  158. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  159. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +2 -2
  160. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  161. package/lib/esm/appui-react/messages/MessageManager.d.ts +1 -2
  162. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  163. package/lib/esm/appui-react/messages/MessageManager.js +2 -2
  164. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  165. package/lib/esm/appui-react/messages/Pointer.d.ts +2 -2
  166. package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
  167. package/lib/esm/appui-react/messages/Pointer.js +2 -2
  168. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  169. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  170. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  171. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js +1 -1
  172. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  173. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  174. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  175. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  176. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  177. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +1 -1
  178. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  179. package/lib/esm/appui-react/pickers/ViewSelector.js +1 -1
  180. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  181. package/lib/esm/appui-react/popup/PopupManager.d.ts +2 -2
  182. package/lib/esm/appui-react/popup/PopupManager.d.ts.map +1 -1
  183. package/lib/esm/appui-react/popup/PopupManager.js +2 -2
  184. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  185. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  186. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  187. package/lib/esm/appui-react/syncui/BooleanListener.d.ts +2 -2
  188. package/lib/esm/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  189. package/lib/esm/appui-react/syncui/BooleanListener.js +2 -1
  190. package/lib/esm/appui-react/syncui/BooleanListener.js.map +1 -1
  191. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -16
  192. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  193. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +27 -99
  194. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  195. package/lib/esm/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  196. package/lib/esm/appui-react/toolbar/ActionItemButton.js.map +1 -1
  197. package/lib/esm/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  198. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  199. package/lib/esm/appui-react/toolbar/ToolButton.js.map +1 -1
  200. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  201. package/lib/esm/appui-react/toolbar/Toolbar.js +1 -1
  202. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  203. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  204. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  205. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  206. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  207. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  208. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -2
  209. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  210. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -2
  211. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  212. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  213. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  214. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js +2 -1
  215. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  216. package/lib/esm/appui-react.d.ts +2 -2
  217. package/lib/esm/appui-react.js +2 -2
  218. package/lib/esm/appui-react.js.map +1 -1
  219. package/package.json +34 -34
@@ -1 +1 @@
1
- {"version":3,"file":"DialogManagerBase.js","sourceRoot":"","sources":["../../../../src/appui-react/dialog/DialogManagerBase.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAU5C;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,OAA+B;CAAI;AAW3E;;GAEG;AACH,MAAM,OAAO,iBAAiB;IAK5B,YAAY,oBAAwC;QAH5C,aAAQ,GAAiB,IAAI,KAAK,EAAc,CAAC;QAIvD,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;IACpD,CAAC;IAED,IAAW,OAAO,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE9C,IAAW,oBAAoB,KAAyB,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE5F;;;;;OAKG;IACI,UAAU,CAAC,MAAuB,EAAE,EAAW,EAAE,cAAyB;QAC/E,IAAI,CAAC,EAAE;YACL,EAAE,GAAG,UAAU,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAE5C,uBAAuB;QACvB,MAAM,SAAS,GAAG,cAAc,aAAd,cAAc,cAAd,cAAc,GAAI,QAAQ,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,gBAAgB;IACT,UAAU,CAAC,UAAsB;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEM,WAAW,CAAC,MAAwB;QACzC,IAAI,YAAY,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM;YACT,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAEnC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,gBAAgB;IACT,QAAQ;QACb,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,gBAAgB;IACT,YAAY,CAAC,MAAuB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAsB,EAAE,EAAE;YAC/D,OAAO,MAAM,KAAK,UAAU,CAAC,SAAS,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,KAAK,IAAI,CAAC;YACZ,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC;IAEM,sBAAsB;QAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACtG,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,IAAW,YAAY;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;;AA1Ec,sBAAI,GAAG,CAAC,CAAC;AAwF1B;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK,CAAC,aAAuD;IAArG;;QACE,gBAAgB;QACS,UAAK,GAAwB;YACpD,cAAc,EAAE,IAAI;SACrB,CAAC;QAEM,kBAAa,GAAG,CAAC,QAA4B,EAAE,EAAE;;YACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,aAAa,mCAAI,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC,CAAC;QA8BM,8BAAyB,GAAG,CAAC,KAA6B,EAAE,EAAE;YACpE,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC,CAAC;IAEJ,CAAC;IAhCiB,MAAM;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC;YAC3C,OAAO,IAAI,CAAC;QAEd,OAAO,CACL,6BAAK,SAAS,EAAC,qCAAqC,EAAC,GAAG,EAAE,IAAI,CAAC,aAAa,IACzE,IAAI,CAAC,KAAK,CAAC,cAAc;YACxB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;iBACjG,GAAG,CAAC,CAAC,UAAsB,EAAE,EAAE;gBAC9B,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,UAAU,CAAC,EAAE,IAC/B,UAAU,CAAC,SAAS,CACN,CAClB,CAAC;YACJ,CAAC,CAAC,CAEF,CACP,CAAC;IACJ,CAAC;IAEe,iBAAiB;QAC/B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC5F,CAAC;IAEe,oBAAoB;QAClC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC/F,CAAC;CAMF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Dialog\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { UiEvent } from \"@itwin/core-react\";\r\n\r\n/** Dialog Stack Changed Event Args class.\r\n * @public\r\n */\r\nexport interface DialogChangedEventArgs {\r\n dialogCount: number;\r\n activeDialog: React.ReactNode | undefined;\r\n}\r\n\r\n/** Dialog Changed Event class.\r\n * @public\r\n */\r\nexport class DialogChangedEvent extends UiEvent<DialogChangedEventArgs> { }\r\n\r\n/** Information maintained by a Dialog Manager about a dialog\r\n * @public\r\n */\r\nexport interface DialogInfo {\r\n reactNode: React.ReactNode;\r\n id: string;\r\n parentDocument: Document;\r\n}\r\n\r\n/** Dialog Manager class.\r\n * @internal\r\n */\r\nexport class DialogManagerBase {\r\n private static _sId = 0;\r\n private _dialogs: DialogInfo[] = new Array<DialogInfo>();\r\n private _onDialogChangedEvent: DialogChangedEvent;\r\n\r\n constructor(onDialogChangedEvent: DialogChangedEvent) {\r\n this._onDialogChangedEvent = onDialogChangedEvent;\r\n }\r\n\r\n public get dialogs() { return this._dialogs; }\r\n\r\n public get onDialogChangedEvent(): DialogChangedEvent { return this._onDialogChangedEvent; }\r\n\r\n /**\r\n * Triggers opening a dialog.\r\n * @param dialog Dialog React component.\r\n * @param id The unique Id the identifies the dialog.\r\n * @param parentDocument Optional document required when displaying a dialog in a child popup window.\r\n */\r\n public openDialog(dialog: React.ReactNode, id?: string, parentDocument?: Document): void {\r\n if (!id)\r\n id = `Dialog-${++DialogManagerBase._sId}`;\r\n\r\n // istanbul ignore next\r\n const owningDoc = parentDocument ?? document;\r\n this.pushDialog({ reactNode: dialog, id, parentDocument: owningDoc });\r\n }\r\n\r\n /** @internal */\r\n public pushDialog(dialogInfo: DialogInfo): void {\r\n this._dialogs.push(dialogInfo);\r\n this.emitDialogChangedEvent();\r\n }\r\n\r\n public closeDialog(dialog?: React.ReactNode): void {\r\n let targetDialog = dialog;\r\n if (!dialog)\r\n targetDialog = this.activeDialog;\r\n\r\n this.removeDialog(targetDialog);\r\n this.emitDialogChangedEvent();\r\n }\r\n\r\n /** @internal */\r\n public closeAll(): void {\r\n this._dialogs = [];\r\n this.emitDialogChangedEvent();\r\n }\r\n\r\n /** @internal */\r\n public removeDialog(dialog: React.ReactNode): void {\r\n const index = this._dialogs.findIndex((dialogInfo: DialogInfo) => {\r\n return dialog === dialogInfo.reactNode;\r\n });\r\n if (index >= 0)\r\n this._dialogs.splice(index, 1);\r\n }\r\n\r\n public emitDialogChangedEvent(): void {\r\n this._onDialogChangedEvent.emit({ dialogCount: this.dialogCount, activeDialog: this.activeDialog });\r\n }\r\n\r\n public update(): void {\r\n this.emitDialogChangedEvent();\r\n }\r\n\r\n public get activeDialog(): React.ReactNode | undefined {\r\n if (this._dialogs.length > 0)\r\n return this._dialogs[this._dialogs.length - 1].reactNode;\r\n\r\n return undefined;\r\n }\r\n\r\n public get dialogCount(): number {\r\n return this._dialogs.length;\r\n }\r\n}\r\n\r\n/** Properties for the [[DialogRendererBase]] component\r\n * @internal\r\n */\r\nexport interface DialogRendererProps {\r\n dialogManager: DialogManagerBase;\r\n}\r\n\r\n/** @internal */\r\ninterface DialogRendererState {\r\n parentDocument: Document | null;\r\n}\r\n/** DialogRenderer React component.\r\n * @internal\r\n */\r\nexport class DialogRendererBase extends React.PureComponent<DialogRendererProps, DialogRendererState> {\r\n /** @internal */\r\n public override readonly state: DialogRendererState = {\r\n parentDocument: null,\r\n };\r\n\r\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\r\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n if (this.props.dialogManager.dialogCount <= 0)\r\n return null;\r\n\r\n return (\r\n <div className=\"appui-react-dialog-render-container\" ref={this._handleRefSet}>\r\n {this.state.parentDocument &&\r\n this.props.dialogManager.dialogs.filter((info) => info.parentDocument === this.state.parentDocument)\r\n .map((dialogInfo: DialogInfo) => {\r\n return (\r\n <React.Fragment key={dialogInfo.id} >\r\n {dialogInfo.reactNode}\r\n </React.Fragment>\r\n );\r\n })\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n public override componentDidMount(): void {\r\n this.props.dialogManager.onDialogChangedEvent.addListener(this._handleDialogChangedEvent);\r\n }\r\n\r\n public override componentWillUnmount(): void {\r\n this.props.dialogManager.onDialogChangedEvent.removeListener(this._handleDialogChangedEvent);\r\n }\r\n\r\n private _handleDialogChangedEvent = (_args: DialogChangedEventArgs) => {\r\n this.forceUpdate();\r\n };\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"DialogManagerBase.js","sourceRoot":"","sources":["../../../../src/appui-react/dialog/DialogManagerBase.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Dialog\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { UiEvent } from \"@itwin/appui-abstract\";\r\n\r\n/** Dialog Stack Changed Event Args class.\r\n * @public\r\n */\r\nexport interface DialogChangedEventArgs {\r\n dialogCount: number;\r\n activeDialog: React.ReactNode | undefined;\r\n}\r\n\r\n/** Dialog Changed Event class.\r\n * @public\r\n */\r\nexport class DialogChangedEvent extends UiEvent<DialogChangedEventArgs> { }\r\n\r\n/** Information maintained by a Dialog Manager about a dialog\r\n * @public\r\n */\r\nexport interface DialogInfo {\r\n reactNode: React.ReactNode;\r\n id: string;\r\n parentDocument: Document;\r\n}\r\n\r\n/** Dialog Manager class.\r\n * @internal\r\n */\r\nexport class DialogManagerBase {\r\n private static _sId = 0;\r\n private _dialogs: DialogInfo[] = new Array<DialogInfo>();\r\n private _onDialogChangedEvent: DialogChangedEvent;\r\n\r\n constructor(onDialogChangedEvent: DialogChangedEvent) {\r\n this._onDialogChangedEvent = onDialogChangedEvent;\r\n }\r\n\r\n public get dialogs() { return this._dialogs; }\r\n\r\n public get onDialogChangedEvent(): DialogChangedEvent { return this._onDialogChangedEvent; }\r\n\r\n /**\r\n * Triggers opening a dialog.\r\n * @param dialog Dialog React component.\r\n * @param id The unique Id the identifies the dialog.\r\n * @param parentDocument Optional document required when displaying a dialog in a child popup window.\r\n */\r\n public openDialog(dialog: React.ReactNode, id?: string, parentDocument?: Document): void {\r\n if (!id)\r\n id = `Dialog-${++DialogManagerBase._sId}`;\r\n\r\n // istanbul ignore next\r\n const owningDoc = parentDocument ?? document;\r\n this.pushDialog({ reactNode: dialog, id, parentDocument: owningDoc });\r\n }\r\n\r\n /** @internal */\r\n public pushDialog(dialogInfo: DialogInfo): void {\r\n this._dialogs.push(dialogInfo);\r\n this.emitDialogChangedEvent();\r\n }\r\n\r\n public closeDialog(dialog?: React.ReactNode): void {\r\n let targetDialog = dialog;\r\n if (!dialog)\r\n targetDialog = this.activeDialog;\r\n\r\n this.removeDialog(targetDialog);\r\n this.emitDialogChangedEvent();\r\n }\r\n\r\n /** @internal */\r\n public closeAll(): void {\r\n this._dialogs = [];\r\n this.emitDialogChangedEvent();\r\n }\r\n\r\n /** @internal */\r\n public removeDialog(dialog: React.ReactNode): void {\r\n const index = this._dialogs.findIndex((dialogInfo: DialogInfo) => {\r\n return dialog === dialogInfo.reactNode;\r\n });\r\n if (index >= 0)\r\n this._dialogs.splice(index, 1);\r\n }\r\n\r\n public emitDialogChangedEvent(): void {\r\n this._onDialogChangedEvent.emit({ dialogCount: this.dialogCount, activeDialog: this.activeDialog });\r\n }\r\n\r\n public update(): void {\r\n this.emitDialogChangedEvent();\r\n }\r\n\r\n public get activeDialog(): React.ReactNode | undefined {\r\n if (this._dialogs.length > 0)\r\n return this._dialogs[this._dialogs.length - 1].reactNode;\r\n\r\n return undefined;\r\n }\r\n\r\n public get dialogCount(): number {\r\n return this._dialogs.length;\r\n }\r\n}\r\n\r\n/** Properties for the [[DialogRendererBase]] component\r\n * @internal\r\n */\r\nexport interface DialogRendererProps {\r\n dialogManager: DialogManagerBase;\r\n}\r\n\r\n/** @internal */\r\ninterface DialogRendererState {\r\n parentDocument: Document | null;\r\n}\r\n/** DialogRenderer React component.\r\n * @internal\r\n */\r\nexport class DialogRendererBase extends React.PureComponent<DialogRendererProps, DialogRendererState> {\r\n /** @internal */\r\n public override readonly state: DialogRendererState = {\r\n parentDocument: null,\r\n };\r\n\r\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\r\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n if (this.props.dialogManager.dialogCount <= 0)\r\n return null;\r\n\r\n return (\r\n <div className=\"appui-react-dialog-render-container\" ref={this._handleRefSet}>\r\n {this.state.parentDocument &&\r\n this.props.dialogManager.dialogs.filter((info) => info.parentDocument === this.state.parentDocument)\r\n .map((dialogInfo: DialogInfo) => {\r\n return (\r\n <React.Fragment key={dialogInfo.id} >\r\n {dialogInfo.reactNode}\r\n </React.Fragment>\r\n );\r\n })\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n public override componentDidMount(): void {\r\n this.props.dialogManager.onDialogChangedEvent.addListener(this._handleDialogChangedEvent);\r\n }\r\n\r\n public override componentWillUnmount(): void {\r\n this.props.dialogManager.onDialogChangedEvent.removeListener(this._handleDialogChangedEvent);\r\n }\r\n\r\n private _handleDialogChangedEvent = (_args: DialogChangedEventArgs) => {\r\n this.forceUpdate();\r\n };\r\n\r\n}\r\n"]}
@@ -4,8 +4,8 @@
4
4
  import * as React from "react";
5
5
  import { XAndY } from "@itwin/core-geometry";
6
6
  import { ToolTipOptions } from "@itwin/core-frontend";
7
- import { PointProps } from "@itwin/appui-abstract";
8
- import { CommonProps, UiEvent } from "@itwin/core-react";
7
+ import { PointProps, UiEvent } from "@itwin/appui-abstract";
8
+ import { CommonProps } from "@itwin/core-react";
9
9
  import { NotifyMessageType } from "../messages/ReactNotifyMessageDetails";
10
10
  /** [[ElementTooltip]] State.
11
11
  * @internal
@@ -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,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAA+B,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E;;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;CAAI;AAE3F;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC;IACnF,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAgE;IAC1G,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAU;IAC1C,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAU;IAEzC,WAAkB,4BAA4B,IAAI,0BAA0B,CAAuD;IACnI,WAAkB,gBAAgB,IAAI,OAAO,CAA6C;WAE5E,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;WAQpG,WAAW,IAAI,IAAI;IAMjC,WAAkB,eAAe,IAAI,OAAO,CAA4C;IAExF,WAAkB,eAAe,CAAC,IAAI,EAAE,OAAO,EAI9C;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;IAwBN,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAI5C,OAAO,CAAC,iCAAiC,CAQvC;IAGF,OAAO,CAAC,kBAAkB,CAGxB;IAEF,OAAO,CAAC,cAAc;CAuBvB"}
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,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAA+B,MAAM,mBAAmB,CAAC;AAG7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAE1E;;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;CAAI;AAE3F;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,mBAAmB,CAAC;IACnF,OAAO,CAAC,MAAM,CAAC,2BAA2B,CAAgE;IAC1G,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAU;IAC1C,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAU;IAEzC,WAAkB,4BAA4B,IAAI,0BAA0B,CAAuD;IACnI,WAAkB,gBAAgB,IAAI,OAAO,CAA6C;WAE5E,WAAW,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI;WAQpG,WAAW,IAAI,IAAI;IAMjC,WAAkB,eAAe,IAAI,OAAO,CAA4C;IAExF,WAAkB,eAAe,CAAC,IAAI,EAAE,OAAO,EAI9C;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;IAwBN,iBAAiB,IAAI,IAAI;IAIzB,oBAAoB,IAAI,IAAI;IAI5C,OAAO,CAAC,iCAAiC,CAQvC;IAGF,OAAO,CAAC,kBAAkB,CAGxB;IAEF,OAAO,CAAC,cAAc;CAuBvB"}
@@ -7,7 +7,8 @@
7
7
  */
8
8
  import classnames from "classnames";
9
9
  import * as React from "react";
10
- import { Rectangle, UiEvent } from "@itwin/core-react";
10
+ import { UiEvent } from "@itwin/appui-abstract";
11
+ import { Rectangle } from "@itwin/core-react";
11
12
  import { offsetAndContainInContainer, Tooltip } from "@itwin/appui-layout-react";
12
13
  import { MessageDiv } from "../messages/MessageSpan";
13
14
  /** ElementTooltip Changed Event class.
@@ -1 +1 @@
1
- {"version":3,"file":"ElementTooltip.js","sourceRoot":"","sources":["../../../../src/appui-react/feedback/ElementTooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { XAndY } from \"@itwin/core-geometry\";\r\nimport { ToolTipOptions } from \"@itwin/core-frontend\";\r\nimport { PointProps } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Point, Rectangle, SizeProps, UiEvent } from \"@itwin/core-react\";\r\nimport { offsetAndContainInContainer, Tooltip } from \"@itwin/appui-layout-react\";\r\nimport { MessageDiv } from \"../messages/MessageSpan\";\r\nimport { NotifyMessageType } from \"../messages/ReactNotifyMessageDetails\";\r\n\r\n/** [[ElementTooltip]] State.\r\n * @internal\r\n */\r\ninterface ElementTooltipState {\r\n isVisible: boolean;\r\n message: NotifyMessageType;\r\n position: PointProps;\r\n options?: ToolTipOptions;\r\n}\r\n\r\n/** [[ElementTooltipChangedEvent]] arguments.\r\n * @public\r\n */\r\nexport interface ElementTooltipChangedEventArgs {\r\n isTooltipVisible: boolean;\r\n message: NotifyMessageType;\r\n el?: HTMLElement;\r\n pt?: XAndY;\r\n options?: ToolTipOptions;\r\n}\r\n\r\n/** ElementTooltip Changed Event class.\r\n * @public\r\n */\r\nexport class ElementTooltipChangedEvent extends UiEvent<ElementTooltipChangedEventArgs> { }\r\n\r\n/** ElementTooltip React component.\r\n * @public\r\n */\r\nexport class ElementTooltip extends React.Component<CommonProps, ElementTooltipState> {\r\n private static _elementTooltipChangedEvent: ElementTooltipChangedEvent = new ElementTooltipChangedEvent();\r\n private static _isTooltipVisible: boolean;\r\n private static _isTooltipHalted: boolean;\r\n\r\n public static get onElementTooltipChangedEvent(): ElementTooltipChangedEvent { return ElementTooltip._elementTooltipChangedEvent; }\r\n public static get isTooltipVisible(): boolean { return ElementTooltip._isTooltipVisible; }\r\n\r\n public static showTooltip(el: HTMLElement, message: NotifyMessageType, pt?: XAndY, options?: ToolTipOptions): void {\r\n // istanbul ignore if\r\n if (ElementTooltip._isTooltipHalted)\r\n return;\r\n ElementTooltip._isTooltipVisible = true;\r\n ElementTooltip.onElementTooltipChangedEvent.emit({ isTooltipVisible: true, el, message, pt, options });\r\n }\r\n\r\n public static hideTooltip(): void {\r\n ElementTooltip._isTooltipVisible = false;\r\n ElementTooltip.onElementTooltipChangedEvent.emit({ isTooltipVisible: false, message: \"\" });\r\n }\r\n\r\n // istanbul ignore next\r\n public static get isTooltipHalted(): boolean { return ElementTooltip._isTooltipHalted; }\r\n // istanbul ignore next\r\n public static set isTooltipHalted(halt: boolean) {\r\n ElementTooltip._isTooltipHalted = halt;\r\n if (halt && ElementTooltip._isTooltipVisible)\r\n ElementTooltip.hideTooltip();\r\n }\r\n\r\n private _size: SizeProps = {\r\n height: 0,\r\n width: 0,\r\n };\r\n private _element?: HTMLElement;\r\n private _position?: PointProps;\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<ElementTooltipState> = {\r\n message: \"\",\r\n isVisible: false,\r\n position: {\r\n x: 0,\r\n y: 0,\r\n },\r\n };\r\n\r\n constructor(props: CommonProps) {\r\n super(props);\r\n }\r\n\r\n public override render() {\r\n if (!this.state.isVisible)\r\n return null;\r\n\r\n const className = classnames(\r\n \"uifw-element-tooltip\",\r\n this.props.className);\r\n\r\n const messageNode = <MessageDiv message={this.state.message} />;\r\n\r\n return (\r\n <div className=\"uifw-element-tooltip-container\">\r\n <Tooltip // eslint-disable-line deprecation/deprecation\r\n className={className}\r\n style={this.props.style}\r\n position={this.state.position}\r\n onSizeChanged={this._handleSizeChanged}\r\n >\r\n {messageNode}\r\n </Tooltip>\r\n </div>\r\n );\r\n }\r\n\r\n public override componentDidMount(): void {\r\n ElementTooltip.onElementTooltipChangedEvent.addListener(this._handleElementTooltipChangedEvent);\r\n }\r\n\r\n public override componentWillUnmount(): void {\r\n ElementTooltip.onElementTooltipChangedEvent.removeListener(this._handleElementTooltipChangedEvent);\r\n }\r\n\r\n private _handleElementTooltipChangedEvent = (args: ElementTooltipChangedEventArgs) => {\r\n this._element = args.el;\r\n this._position = args.pt;\r\n this.setState({\r\n isVisible: args.isTooltipVisible,\r\n message: args.message,\r\n });\r\n this.updatePosition();\r\n };\r\n\r\n // istanbul ignore next\r\n private _handleSizeChanged = (size: SizeProps) => {\r\n this._size = size;\r\n this.updatePosition();\r\n };\r\n\r\n private updatePosition() {\r\n this.setState((prevState) => {\r\n if (!this._element)\r\n return null;\r\n // istanbul ignore next\r\n if (!this._position)\r\n return null;\r\n\r\n const containerBounds = Rectangle.create(this._element.getBoundingClientRect());\r\n const relativeBounds = Rectangle.createFromSize(this._size).offset(this._position);\r\n const adjustedPosition: Point = offsetAndContainInContainer(relativeBounds, containerBounds.getSize(), { x: 8, y: 8 });\r\n const position = adjustedPosition.offset(containerBounds.topLeft());\r\n\r\n // istanbul ignore else\r\n if (position.equals(prevState.position))\r\n return null;\r\n\r\n // istanbul ignore next\r\n return {\r\n position,\r\n };\r\n });\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ElementTooltip.js","sourceRoot":"","sources":["../../../../src/appui-react/feedback/ElementTooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { XAndY } from \"@itwin/core-geometry\";\r\nimport { ToolTipOptions } from \"@itwin/core-frontend\";\r\nimport { PointProps, UiEvent } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Point, Rectangle, SizeProps } from \"@itwin/core-react\";\r\nimport { offsetAndContainInContainer, Tooltip } from \"@itwin/appui-layout-react\";\r\nimport { MessageDiv } from \"../messages/MessageSpan\";\r\nimport { NotifyMessageType } from \"../messages/ReactNotifyMessageDetails\";\r\n\r\n/** [[ElementTooltip]] State.\r\n * @internal\r\n */\r\ninterface ElementTooltipState {\r\n isVisible: boolean;\r\n message: NotifyMessageType;\r\n position: PointProps;\r\n options?: ToolTipOptions;\r\n}\r\n\r\n/** [[ElementTooltipChangedEvent]] arguments.\r\n * @public\r\n */\r\nexport interface ElementTooltipChangedEventArgs {\r\n isTooltipVisible: boolean;\r\n message: NotifyMessageType;\r\n el?: HTMLElement;\r\n pt?: XAndY;\r\n options?: ToolTipOptions;\r\n}\r\n\r\n/** ElementTooltip Changed Event class.\r\n * @public\r\n */\r\nexport class ElementTooltipChangedEvent extends UiEvent<ElementTooltipChangedEventArgs> { }\r\n\r\n/** ElementTooltip React component.\r\n * @public\r\n */\r\nexport class ElementTooltip extends React.Component<CommonProps, ElementTooltipState> {\r\n private static _elementTooltipChangedEvent: ElementTooltipChangedEvent = new ElementTooltipChangedEvent();\r\n private static _isTooltipVisible: boolean;\r\n private static _isTooltipHalted: boolean;\r\n\r\n public static get onElementTooltipChangedEvent(): ElementTooltipChangedEvent { return ElementTooltip._elementTooltipChangedEvent; }\r\n public static get isTooltipVisible(): boolean { return ElementTooltip._isTooltipVisible; }\r\n\r\n public static showTooltip(el: HTMLElement, message: NotifyMessageType, pt?: XAndY, options?: ToolTipOptions): void {\r\n // istanbul ignore if\r\n if (ElementTooltip._isTooltipHalted)\r\n return;\r\n ElementTooltip._isTooltipVisible = true;\r\n ElementTooltip.onElementTooltipChangedEvent.emit({ isTooltipVisible: true, el, message, pt, options });\r\n }\r\n\r\n public static hideTooltip(): void {\r\n ElementTooltip._isTooltipVisible = false;\r\n ElementTooltip.onElementTooltipChangedEvent.emit({ isTooltipVisible: false, message: \"\" });\r\n }\r\n\r\n // istanbul ignore next\r\n public static get isTooltipHalted(): boolean { return ElementTooltip._isTooltipHalted; }\r\n // istanbul ignore next\r\n public static set isTooltipHalted(halt: boolean) {\r\n ElementTooltip._isTooltipHalted = halt;\r\n if (halt && ElementTooltip._isTooltipVisible)\r\n ElementTooltip.hideTooltip();\r\n }\r\n\r\n private _size: SizeProps = {\r\n height: 0,\r\n width: 0,\r\n };\r\n private _element?: HTMLElement;\r\n private _position?: PointProps;\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<ElementTooltipState> = {\r\n message: \"\",\r\n isVisible: false,\r\n position: {\r\n x: 0,\r\n y: 0,\r\n },\r\n };\r\n\r\n constructor(props: CommonProps) {\r\n super(props);\r\n }\r\n\r\n public override render() {\r\n if (!this.state.isVisible)\r\n return null;\r\n\r\n const className = classnames(\r\n \"uifw-element-tooltip\",\r\n this.props.className);\r\n\r\n const messageNode = <MessageDiv message={this.state.message} />;\r\n\r\n return (\r\n <div className=\"uifw-element-tooltip-container\">\r\n <Tooltip // eslint-disable-line deprecation/deprecation\r\n className={className}\r\n style={this.props.style}\r\n position={this.state.position}\r\n onSizeChanged={this._handleSizeChanged}\r\n >\r\n {messageNode}\r\n </Tooltip>\r\n </div>\r\n );\r\n }\r\n\r\n public override componentDidMount(): void {\r\n ElementTooltip.onElementTooltipChangedEvent.addListener(this._handleElementTooltipChangedEvent);\r\n }\r\n\r\n public override componentWillUnmount(): void {\r\n ElementTooltip.onElementTooltipChangedEvent.removeListener(this._handleElementTooltipChangedEvent);\r\n }\r\n\r\n private _handleElementTooltipChangedEvent = (args: ElementTooltipChangedEventArgs) => {\r\n this._element = args.el;\r\n this._position = args.pt;\r\n this.setState({\r\n isVisible: args.isTooltipVisible,\r\n message: args.message,\r\n });\r\n this.updatePosition();\r\n };\r\n\r\n // istanbul ignore next\r\n private _handleSizeChanged = (size: SizeProps) => {\r\n this._size = size;\r\n this.updatePosition();\r\n };\r\n\r\n private updatePosition() {\r\n this.setState((prevState) => {\r\n if (!this._element)\r\n return null;\r\n // istanbul ignore next\r\n if (!this._position)\r\n return null;\r\n\r\n const containerBounds = Rectangle.create(this._element.getBoundingClientRect());\r\n const relativeBounds = Rectangle.createFromSize(this._size).offset(this._position);\r\n const adjustedPosition: Point = offsetAndContainInContainer(relativeBounds, containerBounds.getSize(), { x: 8, y: 8 });\r\n const position = adjustedPosition.offset(containerBounds.topLeft());\r\n\r\n // istanbul ignore else\r\n if (position.equals(prevState.position))\r\n return null;\r\n\r\n // istanbul ignore next\r\n return {\r\n position,\r\n };\r\n });\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveIModelConnection.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveIModelConnection.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,gBAAgB,GAAG,SAAS,CAkBxE"}
1
+ {"version":3,"file":"useActiveIModelConnection.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveIModelConnection.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,gBAAgB,GAAG,SAAS,CAkBxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveIModelConnection.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveIModelConnection.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAmB,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC5F,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAQ,EAAE;YACxD,MAAM,QAAQ,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;YAC5D,uBAAuB;YACvB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;gBACrF,mBAAmB,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC;aACxD;QACH,CAAC,CAAC;QAEF,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACnE,OAAO,GAAG,EAAE;YACV,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Hooks\r\n */\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { IModelConnection } from \"@itwin/core-frontend\";\r\nimport { SessionStateActionId } from \"../redux/SessionState\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework } from \"../UiFramework\";\r\n\r\n/** React hook that maintains the active IModelConnection. For this hook to work properly the\r\n * IModelConnection must be set using UiFramework.setIModelConnection method. This also requires\r\n * that the host app includes the UiFramework reducer into its Redux store.\r\n * @public\r\n */\r\nexport function useActiveIModelConnection(): IModelConnection | undefined {\r\n const [activeConnection, setActiveConnection] = useState(UiFramework.getIModelConnection());\r\n useEffect(() => {\r\n const handleSyncUiEvent = (args: SyncUiEventArgs): void => {\r\n const eventIds = [SessionStateActionId.SetIModelConnection];\r\n // istanbul ignore else\r\n if (eventIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) {\r\n setActiveConnection(UiFramework.getIModelConnection());\r\n }\r\n };\r\n\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n return () => {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\r\n };\r\n }, [activeConnection]);\r\n\r\n return activeConnection;\r\n}\r\n"]}
1
+ {"version":3,"file":"useActiveIModelConnection.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveIModelConnection.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAG5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC5F,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAQ,EAAE;YACxD,MAAM,QAAQ,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;YAC5D,uBAAuB;YACvB,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;gBACrF,mBAAmB,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC;aACxD;QACH,CAAC,CAAC;QAEF,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACnE,OAAO,GAAG,EAAE;YACV,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,gBAAgB,CAAC;AAC1B,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Hooks\r\n */\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { IModelConnection } from \"@itwin/core-frontend\";\r\nimport { SessionStateActionId } from \"../redux/SessionState\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework } from \"../UiFramework\";\r\n\r\n/** React hook that maintains the active IModelConnection. For this hook to work properly the\r\n * IModelConnection must be set using UiFramework.setIModelConnection method. This also requires\r\n * that the host app includes the UiFramework reducer into its Redux store.\r\n * @public\r\n */\r\nexport function useActiveIModelConnection(): IModelConnection | undefined {\r\n const [activeConnection, setActiveConnection] = useState(UiFramework.getIModelConnection());\r\n useEffect(() => {\r\n const handleSyncUiEvent = (args: UiSyncEventArgs): void => {\r\n const eventIds = [SessionStateActionId.SetIModelConnection];\r\n // istanbul ignore else\r\n if (eventIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) {\r\n setActiveConnection(UiFramework.getIModelConnection());\r\n }\r\n };\r\n\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n return () => {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\r\n };\r\n }, [activeConnection]);\r\n\r\n return activeConnection;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveViewport.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveViewport.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAa,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIjE;;GAEG;AAEH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CA8B9D"}
1
+ {"version":3,"file":"useActiveViewport.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveViewport.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAIH,OAAO,EAAa,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIjE;;GAEG;AAEH,wBAAgB,iBAAiB,IAAI,cAAc,GAAG,SAAS,CA8B9D"}
@@ -1 +1 @@
1
- {"version":3,"file":"useActiveViewport.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveViewport.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAkB,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAiC,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAmB,qBAAqB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAExG;;GAEG;AACH,uBAAuB;AACvB,MAAM,UAAU,iBAAiB;IAC/B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,sBAAsB,GAAG,CAAC,KAAoC,EAAE,EAAE;YACtE,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,oGAAoG;QACpG,4GAA4G;QAC5G,sEAAsE;QACtE,kBAAkB,CAAC,2BAA2B,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;QACnF,OAAO,GAAG,EAAE;YACV,kBAAkB,CAAC,2BAA2B,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,oBAAoB,EAAE,aAAa,CAAC,uBAAuB,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QACrI,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAQ,EAAE;YACxD,uBAAuB;YACvB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;gBAChF,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;gBAC1E,iBAAiB,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;aAC1E;QACH,CAAC,CAAC;QAEF,OAAO,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Hooks\r\n */\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { IModelApp, ScreenViewport } from \"@itwin/core-frontend\";\r\nimport { ActiveContentChangedEventArgs, ContentViewManager } from \"../content/ContentViewManager\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\n\r\n/** React hook that maintains the active viewport.\r\n * @public\r\n */\r\n// istanbul ignore next\r\nexport function useActiveViewport(): ScreenViewport | undefined {\r\n const [activeViewport, setActiveViewport] = useState(IModelApp.viewManager.selectedView);\r\n useEffect(() => {\r\n const onActiveContentChanged = (_args: ActiveContentChangedEventArgs) => {\r\n setActiveViewport(IModelApp.viewManager.selectedView);\r\n };\r\n\r\n // IModelApp.viewManager.onSelectedViewportChanged will often fire before UI components have mounted\r\n // so use ContentViewManager.onActiveContentChangedEvent which will always trigger once all stage components\r\n // are loaded and when the IModelApp.viewManager.selectedView changes.\r\n ContentViewManager.onActiveContentChangedEvent.addListener(onActiveContentChanged);\r\n return () => {\r\n ContentViewManager.onActiveContentChangedEvent.removeListener(onActiveContentChanged);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const syncIdsOfInterest = [SyncUiEventId.ActiveContentChanged, SyncUiEventId.ContentControlActivated, SyncUiEventId.FrontstageReady];\r\n const handleSyncUiEvent = (args: SyncUiEventArgs): void => {\r\n // istanbul ignore else\r\n if (syncIdsOfInterest.some((value: string): boolean => args.eventIds.has(value))) {\r\n const activeContentControl = ContentViewManager.getActiveContentControl();\r\n setActiveViewport(activeContentControl && activeContentControl.viewport);\r\n }\r\n };\r\n\r\n return SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n }, []);\r\n\r\n return activeViewport;\r\n}\r\n"]}
1
+ {"version":3,"file":"useActiveViewport.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveViewport.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAkB,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAiC,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEvF;;GAEG;AACH,uBAAuB;AACvB,MAAM,UAAU,iBAAiB;IAC/B,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,sBAAsB,GAAG,CAAC,KAAoC,EAAE,EAAE;YACtE,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACxD,CAAC,CAAC;QAEF,oGAAoG;QACpG,4GAA4G;QAC5G,sEAAsE;QACtE,kBAAkB,CAAC,2BAA2B,CAAC,WAAW,CAAC,sBAAsB,CAAC,CAAC;QACnF,OAAO,GAAG,EAAE;YACV,kBAAkB,CAAC,2BAA2B,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;QACxF,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,CAAC,aAAa,CAAC,oBAAoB,EAAE,aAAa,CAAC,uBAAuB,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QACrI,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAQ,EAAE;YACxD,uBAAuB;YACvB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;gBAChF,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,uBAAuB,EAAE,CAAC;gBAC1E,iBAAiB,CAAC,oBAAoB,IAAI,oBAAoB,CAAC,QAAQ,CAAC,CAAC;aAC1E;QACH,CAAC,CAAC;QAEF,OAAO,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAC5E,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,cAAc,CAAC;AACxB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Hooks\r\n */\r\n\r\nimport { useEffect, useState } from \"react\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { IModelApp, ScreenViewport } from \"@itwin/core-frontend\";\r\nimport { ActiveContentChangedEventArgs, ContentViewManager } from \"../content/ContentViewManager\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\n\r\n/** React hook that maintains the active viewport.\r\n * @public\r\n */\r\n// istanbul ignore next\r\nexport function useActiveViewport(): ScreenViewport | undefined {\r\n const [activeViewport, setActiveViewport] = useState(IModelApp.viewManager.selectedView);\r\n useEffect(() => {\r\n const onActiveContentChanged = (_args: ActiveContentChangedEventArgs) => {\r\n setActiveViewport(IModelApp.viewManager.selectedView);\r\n };\r\n\r\n // IModelApp.viewManager.onSelectedViewportChanged will often fire before UI components have mounted\r\n // so use ContentViewManager.onActiveContentChangedEvent which will always trigger once all stage components\r\n // are loaded and when the IModelApp.viewManager.selectedView changes.\r\n ContentViewManager.onActiveContentChangedEvent.addListener(onActiveContentChanged);\r\n return () => {\r\n ContentViewManager.onActiveContentChangedEvent.removeListener(onActiveContentChanged);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const syncIdsOfInterest = [SyncUiEventId.ActiveContentChanged, SyncUiEventId.ContentControlActivated, SyncUiEventId.FrontstageReady];\r\n const handleSyncUiEvent = (args: UiSyncEventArgs): void => {\r\n // istanbul ignore else\r\n if (syncIdsOfInterest.some((value: string): boolean => args.eventIds.has(value))) {\r\n const activeContentControl = ContentViewManager.getActiveContentControl();\r\n setActiveViewport(activeContentControl && activeContentControl.viewport);\r\n }\r\n };\r\n\r\n return SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n }, []);\r\n\r\n return activeViewport;\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardShortcut.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/keyboardshortcut/KeyboardShortcut.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KeyboardShortcut.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/keyboardshortcut/KeyboardShortcut.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardShortcut.js","sourceRoot":"","sources":["../../../../src/appui-react/keyboardshortcut/KeyboardShortcut.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module KeyboardShortcut\r\n */\r\n\r\nimport { ConditionalBooleanValue, FunctionKey, SpecialKey, UiError } from \"@itwin/appui-abstract\";\r\nimport { CursorInformation } from \"../cursor/CursorInformation\";\r\nimport { ActionButtonItemDef } from \"../shared/ActionButtonItemDef\";\r\nimport { ItemDefBase } from \"../shared/ItemDefBase\";\r\nimport { ItemProps } from \"../shared/ItemProps\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { KeyboardShortcutMenu } from \"./KeyboardShortcutMenu\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\n\r\n/** Properties for a Keyboard Shortcut\r\n * @public\r\n */\r\nexport interface KeyboardShortcutProps extends ItemProps {\r\n /** The key that invokes the shortcut.\r\n * This is either an alphanumeric key, a function key or a special key.\r\n */\r\n key: string | FunctionKey | SpecialKey;\r\n\r\n /** The item to execute when this shortcut is invoked. Either 'item' or 'shortcuts' must be specified. */\r\n item?: ActionButtonItemDef;\r\n /** Nested array of shortcut props. Either 'item' or 'shortcuts' must be specified. */\r\n shortcuts?: KeyboardShortcutProps[];\r\n\r\n /** Indicates whether the Alt key required. Default - false */\r\n isAltKeyRequired?: boolean;\r\n /** Indicates whether the Ctrl key required. Default - false */\r\n isCtrlKeyRequired?: boolean;\r\n /** Indicates whether the Shift key required. Default - false */\r\n isShiftKeyRequired?: boolean;\r\n}\r\n\r\n/** Keyboard Shortcut used to execute an action\r\n * @public\r\n */\r\nexport class KeyboardShortcut extends ItemDefBase {\r\n\r\n private _key: string;\r\n private _item?: ActionButtonItemDef;\r\n private _shortcuts: KeyboardShortcutContainer;\r\n\r\n private _isAltKeyRequired: boolean = false;\r\n private _isCtrlKeyRequired: boolean = false;\r\n private _isShiftKeyRequired: boolean = false;\r\n private _isFunctionKey: boolean = false;\r\n private _isSpecialKey: boolean = false;\r\n\r\n constructor(props: KeyboardShortcutProps) {\r\n super(props);\r\n\r\n this._key = props.key;\r\n\r\n if (this._key in FunctionKey)\r\n this._isFunctionKey = true;\r\n if (this._key in SpecialKey)\r\n this._isSpecialKey = true;\r\n\r\n this._shortcuts = new KeyboardShortcutContainer();\r\n\r\n if (props.item) {\r\n this._item = props.item;\r\n\r\n // Copy over icon, label & tooltip from the item\r\n if (!this.iconSpec)\r\n this.iconSpec = this._item.iconSpec;\r\n if (!this.label)\r\n this.setLabel(this._item.label);\r\n if (!this.tooltip)\r\n this.setTooltip(this._item.tooltip);\r\n if (this.isDisabled === undefined)\r\n this.isDisabled = this._item.isDisabled;\r\n if (this.isHidden === undefined)\r\n this.isHidden = this._item.isHidden;\r\n } else if (props.shortcuts) {\r\n props.shortcuts.forEach((childProps: KeyboardShortcutProps) => {\r\n const shortcut = new KeyboardShortcut(childProps);\r\n this._shortcuts.registerKey(shortcut.keyMapKey, shortcut);\r\n });\r\n } else {\r\n throw new UiError(UiFramework.loggerCategory(this), `Either 'item' or 'shortcuts' must be specified for '${props.key}' key.`);\r\n }\r\n\r\n if (props.isAltKeyRequired !== undefined)\r\n this._isAltKeyRequired = props.isAltKeyRequired;\r\n if (props.isCtrlKeyRequired !== undefined)\r\n this._isCtrlKeyRequired = props.isCtrlKeyRequired;\r\n if (props.isShiftKeyRequired !== undefined)\r\n this._isShiftKeyRequired = props.isShiftKeyRequired;\r\n }\r\n\r\n /** Returns the id for this shortcut */\r\n public get id(): string { return this.keyMapKey; }\r\n\r\n /** Returns the shortcut container */\r\n public get shortcutContainer(): KeyboardShortcutContainer {\r\n return this._shortcuts;\r\n }\r\n\r\n /** Finds a shortcut with a given key in the shortcut's container */\r\n public getShortcut(mapKey: string): KeyboardShortcut | undefined {\r\n return this._shortcuts.findKey(mapKey);\r\n }\r\n\r\n /** Returns the shortcut's key map key used as the id */\r\n public get keyMapKey(): string {\r\n const keyMapKey = KeyboardShortcutContainer.generateKeyMapKey(this.key, this._isAltKeyRequired, this._isCtrlKeyRequired, this._isShiftKeyRequired);\r\n return keyMapKey;\r\n }\r\n\r\n /** Returns the [[ActionButtonItemDef]] associated with this shortcut */\r\n public get item(): ActionButtonItemDef | undefined {\r\n return this._item;\r\n }\r\n\r\n /** Called when the [[ActionButtonItemDef]] associated with this shortcut is invoked */\r\n public itemPicked(): void {\r\n if (this._shortcuts.areKeyboardShortcutsAvailable()) {\r\n this._shortcuts.showShortcutsMenu();\r\n } else {\r\n setTimeout(() => {\r\n // istanbul ignore else\r\n if (this._item)\r\n this._item.execute();\r\n });\r\n }\r\n }\r\n\r\n /** Gets the keyboard key */\r\n public get key(): string { return this._key; }\r\n /** Gets whether the Alt key required. */\r\n public get isAltKeyRequired(): boolean { return this._isAltKeyRequired; }\r\n /** Gets whether the Ctrl key required. */\r\n public get isCtrlKeyRequired(): boolean { return this._isCtrlKeyRequired; }\r\n /** Gets whether the Shift key required. */\r\n public get isShiftKeyRequired(): boolean { return this._isShiftKeyRequired; }\r\n /** Gets whether this is a Function key. */\r\n public get isFunctionKey(): boolean { return this._isFunctionKey; }\r\n /** Gets whether this is a Special key. */\r\n public get isSpecialKey(): boolean { return this._isSpecialKey; }\r\n\r\n}\r\n\r\n/** Keyboard Shortcut Container\r\n * @public\r\n */\r\nexport class KeyboardShortcutContainer {\r\n private _keyMap: Map<string, KeyboardShortcut> = new Map<string, KeyboardShortcut>();\r\n private _keyArray: KeyboardShortcut[] = new Array<KeyboardShortcut>();\r\n\r\n /** Registers a Keyboard Shortcut associated with a given key in the managed list */\r\n public registerKey(keyMapKey: string, inShortcut: KeyboardShortcut): KeyboardShortcut | undefined {\r\n let shortcut: KeyboardShortcut | undefined;\r\n\r\n if ((shortcut = this.findKey(keyMapKey)) === undefined) {\r\n shortcut = inShortcut;\r\n this._keyArray.push(shortcut);\r\n } else {\r\n const index = this._keyArray.findIndex((value: KeyboardShortcut) => {\r\n return value.keyMapKey === keyMapKey;\r\n });\r\n // istanbul ignore else\r\n if (index >= 0) {\r\n shortcut = inShortcut;\r\n this._keyArray[index] = shortcut;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (shortcut)\r\n this._keyMap.set(keyMapKey, shortcut);\r\n\r\n return shortcut;\r\n }\r\n\r\n /** Finds a Keyboard Shortcut associated with a given key */\r\n public findKey(keyMapKey: string): KeyboardShortcut | undefined {\r\n return this._keyMap.get(keyMapKey);\r\n }\r\n\r\n /** Determines if any Keyboard Shortcuts are available in this container */\r\n public areKeyboardShortcutsAvailable(): boolean {\r\n return this._keyMap.size !== 0;\r\n }\r\n\r\n /** Empties any Keyboard Shortcuts from this container */\r\n public emptyData(): void {\r\n this._keyMap.clear();\r\n this._keyArray.length = 0;\r\n }\r\n\r\n public getAvailableKeyboardShortcuts(): KeyboardShortcut[] {\r\n return this._keyArray.slice();\r\n }\r\n\r\n /** Generates a key used for storing and finding the Keyboard Shortcuts in this container */\r\n public static generateKeyMapKey(keyboardKey: string, isAltKeyRequired: boolean, isCtrlKeyRequired: boolean, isShiftKeyRequired: boolean): string {\r\n let keyMapKey = keyboardKey;\r\n\r\n if (isAltKeyRequired)\r\n keyMapKey = `Alt+${keyMapKey}`;\r\n if (isShiftKeyRequired)\r\n keyMapKey = `Shift+${keyMapKey}`;\r\n if (isCtrlKeyRequired)\r\n keyMapKey = `Ctrl+${keyMapKey}`;\r\n\r\n return keyMapKey;\r\n }\r\n\r\n /** Displays a menu for the Keyboard Shortcuts in this container */\r\n public showShortcutsMenu() {\r\n const offset = 8;\r\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.emit({\r\n menuVisible: true,\r\n menuX: KeyboardShortcutManager.cursorX - offset,\r\n menuY: KeyboardShortcutManager.cursorY - offset,\r\n shortcuts: this.getAvailableKeyboardShortcuts(),\r\n });\r\n }\r\n}\r\n\r\ntype OnShortcutFunc = (shortcut: KeyboardShortcut) => void;\r\n\r\n/** Keyboard Shortcut Manager\r\n * @public\r\n */\r\nexport class KeyboardShortcutManager {\r\n\r\n private static _shortcuts: KeyboardShortcutContainer = new KeyboardShortcutContainer();\r\n\r\n /** Initialize the Keyboard Shortcut manager */\r\n public static initialize(): void {\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(KeyboardShortcutManager._handleSyncUiEvent);\r\n }\r\n\r\n /** Loads Keyboard Shortcuts into the managed list */\r\n public static loadKeyboardShortcuts(shortcutList: KeyboardShortcutProps[]) {\r\n shortcutList.forEach((shortcutProps: KeyboardShortcutProps) => {\r\n this.loadKeyboardShortcut(shortcutProps);\r\n });\r\n }\r\n\r\n /** Loads a Keyboard Shortcut into the managed list */\r\n public static loadKeyboardShortcut(shortcutProps: KeyboardShortcutProps) {\r\n const shortcut = new KeyboardShortcut(shortcutProps);\r\n this._shortcuts.registerKey(shortcut.keyMapKey, shortcut);\r\n }\r\n\r\n /** Processes a keystroke and invokes a matching Keyboard Shortcut */\r\n public static processKey(keyboardKey: string, isAltKeyPressed: boolean = false, isCtrlKeyPressed: boolean = false, isShiftKeyPressed: boolean = false): boolean {\r\n const keyMapKey = KeyboardShortcutContainer.generateKeyMapKey(keyboardKey, isAltKeyPressed, isCtrlKeyPressed, isShiftKeyPressed);\r\n\r\n const shortcut = this.getShortcut(keyMapKey);\r\n if (shortcut) {\r\n shortcut.itemPicked();\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /** Returns the managed list of Keyboard Shortcuts */\r\n public static get shortcutContainer(): KeyboardShortcutContainer {\r\n return this._shortcuts;\r\n }\r\n\r\n /** Returns a Keyboard Shortcut from the managed lists */\r\n public static getShortcut(keyMapKey: string): KeyboardShortcut | undefined {\r\n return this._shortcuts.findKey(keyMapKey);\r\n }\r\n\r\n /** Determines if focus is set to Home */\r\n public static get isFocusOnHome(): boolean {\r\n const element = document.activeElement as HTMLElement;\r\n return element && element === document.body;\r\n }\r\n\r\n /** Sets focus to Home */\r\n public static setFocusToHome(): void {\r\n const element = document.activeElement as HTMLElement;\r\n if (element && element !== document.body) {\r\n element.blur();\r\n document.body.focus();\r\n }\r\n }\r\n\r\n /** Displays the Keyboard Shortcuts menu at the cursor */\r\n public static displayShortcutsMenu(): void {\r\n if (this._shortcuts.areKeyboardShortcutsAvailable()) {\r\n this._shortcuts.showShortcutsMenu();\r\n }\r\n }\r\n\r\n /** Closes the Keyboard Shortcuts menu */\r\n public static closeShortcutsMenu(): void {\r\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.emit({\r\n menuVisible: false,\r\n menuX: 0,\r\n menuY: 0,\r\n shortcuts: undefined,\r\n });\r\n }\r\n\r\n /** Returns the cursor X position, which is mouseEvent.pageX. */\r\n public static get cursorX(): number { return CursorInformation.cursorX; }\r\n /** Returns the cursor Y position, which is mouseEvent.pageY. */\r\n public static get cursorY(): number { return CursorInformation.cursorY; }\r\n\r\n private static _handleSyncUiEvent = (args: SyncUiEventArgs) => {\r\n const updateBooleanValue = (booleanValue: ConditionalBooleanValue) => {\r\n if (SyncUiEventDispatcher.hasEventOfInterest(args.eventIds, booleanValue.syncEventIds))\r\n booleanValue.refresh();\r\n };\r\n const handleForSyncIds = (shortcut: KeyboardShortcut) => {\r\n if (shortcut.isDisabled instanceof ConditionalBooleanValue)\r\n updateBooleanValue(shortcut.isDisabled);\r\n if (shortcut.isHidden instanceof ConditionalBooleanValue)\r\n updateBooleanValue(shortcut.isHidden);\r\n };\r\n\r\n KeyboardShortcutManager._traverseShortcuts(KeyboardShortcutManager._shortcuts.getAvailableKeyboardShortcuts(), handleForSyncIds);\r\n };\r\n\r\n private static _traverseShortcuts = (shortcuts: KeyboardShortcut[], callback: OnShortcutFunc) => {\r\n shortcuts.forEach((shortcut: KeyboardShortcut) => {\r\n callback(shortcut);\r\n\r\n if (shortcut.shortcutContainer.areKeyboardShortcutsAvailable()) {\r\n const childShortcuts = shortcut.shortcutContainer.getAvailableKeyboardShortcuts();\r\n KeyboardShortcutManager._traverseShortcuts(childShortcuts, callback);\r\n }\r\n });\r\n };\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"KeyboardShortcut.js","sourceRoot":"","sources":["../../../../src/appui-react/keyboardshortcut/KeyboardShortcut.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module KeyboardShortcut\r\n */\r\n\r\nimport { ConditionalBooleanValue, FunctionKey, SpecialKey, UiError, UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { CursorInformation } from \"../cursor/CursorInformation\";\r\nimport { ActionButtonItemDef } from \"../shared/ActionButtonItemDef\";\r\nimport { ItemDefBase } from \"../shared/ItemDefBase\";\r\nimport { ItemProps } from \"../shared/ItemProps\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { KeyboardShortcutMenu } from \"./KeyboardShortcutMenu\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\n\r\n/** Properties for a Keyboard Shortcut\r\n * @public\r\n */\r\nexport interface KeyboardShortcutProps extends ItemProps {\r\n /** The key that invokes the shortcut.\r\n * This is either an alphanumeric key, a function key or a special key.\r\n */\r\n key: string | FunctionKey | SpecialKey;\r\n\r\n /** The item to execute when this shortcut is invoked. Either 'item' or 'shortcuts' must be specified. */\r\n item?: ActionButtonItemDef;\r\n /** Nested array of shortcut props. Either 'item' or 'shortcuts' must be specified. */\r\n shortcuts?: KeyboardShortcutProps[];\r\n\r\n /** Indicates whether the Alt key required. Default - false */\r\n isAltKeyRequired?: boolean;\r\n /** Indicates whether the Ctrl key required. Default - false */\r\n isCtrlKeyRequired?: boolean;\r\n /** Indicates whether the Shift key required. Default - false */\r\n isShiftKeyRequired?: boolean;\r\n}\r\n\r\n/** Keyboard Shortcut used to execute an action\r\n * @public\r\n */\r\nexport class KeyboardShortcut extends ItemDefBase {\r\n\r\n private _key: string;\r\n private _item?: ActionButtonItemDef;\r\n private _shortcuts: KeyboardShortcutContainer;\r\n\r\n private _isAltKeyRequired: boolean = false;\r\n private _isCtrlKeyRequired: boolean = false;\r\n private _isShiftKeyRequired: boolean = false;\r\n private _isFunctionKey: boolean = false;\r\n private _isSpecialKey: boolean = false;\r\n\r\n constructor(props: KeyboardShortcutProps) {\r\n super(props);\r\n\r\n this._key = props.key;\r\n\r\n if (this._key in FunctionKey)\r\n this._isFunctionKey = true;\r\n if (this._key in SpecialKey)\r\n this._isSpecialKey = true;\r\n\r\n this._shortcuts = new KeyboardShortcutContainer();\r\n\r\n if (props.item) {\r\n this._item = props.item;\r\n\r\n // Copy over icon, label & tooltip from the item\r\n if (!this.iconSpec)\r\n this.iconSpec = this._item.iconSpec;\r\n if (!this.label)\r\n this.setLabel(this._item.label);\r\n if (!this.tooltip)\r\n this.setTooltip(this._item.tooltip);\r\n if (this.isDisabled === undefined)\r\n this.isDisabled = this._item.isDisabled;\r\n if (this.isHidden === undefined)\r\n this.isHidden = this._item.isHidden;\r\n } else if (props.shortcuts) {\r\n props.shortcuts.forEach((childProps: KeyboardShortcutProps) => {\r\n const shortcut = new KeyboardShortcut(childProps);\r\n this._shortcuts.registerKey(shortcut.keyMapKey, shortcut);\r\n });\r\n } else {\r\n throw new UiError(UiFramework.loggerCategory(this), `Either 'item' or 'shortcuts' must be specified for '${props.key}' key.`);\r\n }\r\n\r\n if (props.isAltKeyRequired !== undefined)\r\n this._isAltKeyRequired = props.isAltKeyRequired;\r\n if (props.isCtrlKeyRequired !== undefined)\r\n this._isCtrlKeyRequired = props.isCtrlKeyRequired;\r\n if (props.isShiftKeyRequired !== undefined)\r\n this._isShiftKeyRequired = props.isShiftKeyRequired;\r\n }\r\n\r\n /** Returns the id for this shortcut */\r\n public get id(): string { return this.keyMapKey; }\r\n\r\n /** Returns the shortcut container */\r\n public get shortcutContainer(): KeyboardShortcutContainer {\r\n return this._shortcuts;\r\n }\r\n\r\n /** Finds a shortcut with a given key in the shortcut's container */\r\n public getShortcut(mapKey: string): KeyboardShortcut | undefined {\r\n return this._shortcuts.findKey(mapKey);\r\n }\r\n\r\n /** Returns the shortcut's key map key used as the id */\r\n public get keyMapKey(): string {\r\n const keyMapKey = KeyboardShortcutContainer.generateKeyMapKey(this.key, this._isAltKeyRequired, this._isCtrlKeyRequired, this._isShiftKeyRequired);\r\n return keyMapKey;\r\n }\r\n\r\n /** Returns the [[ActionButtonItemDef]] associated with this shortcut */\r\n public get item(): ActionButtonItemDef | undefined {\r\n return this._item;\r\n }\r\n\r\n /** Called when the [[ActionButtonItemDef]] associated with this shortcut is invoked */\r\n public itemPicked(): void {\r\n if (this._shortcuts.areKeyboardShortcutsAvailable()) {\r\n this._shortcuts.showShortcutsMenu();\r\n } else {\r\n setTimeout(() => {\r\n // istanbul ignore else\r\n if (this._item)\r\n this._item.execute();\r\n });\r\n }\r\n }\r\n\r\n /** Gets the keyboard key */\r\n public get key(): string { return this._key; }\r\n /** Gets whether the Alt key required. */\r\n public get isAltKeyRequired(): boolean { return this._isAltKeyRequired; }\r\n /** Gets whether the Ctrl key required. */\r\n public get isCtrlKeyRequired(): boolean { return this._isCtrlKeyRequired; }\r\n /** Gets whether the Shift key required. */\r\n public get isShiftKeyRequired(): boolean { return this._isShiftKeyRequired; }\r\n /** Gets whether this is a Function key. */\r\n public get isFunctionKey(): boolean { return this._isFunctionKey; }\r\n /** Gets whether this is a Special key. */\r\n public get isSpecialKey(): boolean { return this._isSpecialKey; }\r\n\r\n}\r\n\r\n/** Keyboard Shortcut Container\r\n * @public\r\n */\r\nexport class KeyboardShortcutContainer {\r\n private _keyMap: Map<string, KeyboardShortcut> = new Map<string, KeyboardShortcut>();\r\n private _keyArray: KeyboardShortcut[] = new Array<KeyboardShortcut>();\r\n\r\n /** Registers a Keyboard Shortcut associated with a given key in the managed list */\r\n public registerKey(keyMapKey: string, inShortcut: KeyboardShortcut): KeyboardShortcut | undefined {\r\n let shortcut: KeyboardShortcut | undefined;\r\n\r\n if ((shortcut = this.findKey(keyMapKey)) === undefined) {\r\n shortcut = inShortcut;\r\n this._keyArray.push(shortcut);\r\n } else {\r\n const index = this._keyArray.findIndex((value: KeyboardShortcut) => {\r\n return value.keyMapKey === keyMapKey;\r\n });\r\n // istanbul ignore else\r\n if (index >= 0) {\r\n shortcut = inShortcut;\r\n this._keyArray[index] = shortcut;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (shortcut)\r\n this._keyMap.set(keyMapKey, shortcut);\r\n\r\n return shortcut;\r\n }\r\n\r\n /** Finds a Keyboard Shortcut associated with a given key */\r\n public findKey(keyMapKey: string): KeyboardShortcut | undefined {\r\n return this._keyMap.get(keyMapKey);\r\n }\r\n\r\n /** Determines if any Keyboard Shortcuts are available in this container */\r\n public areKeyboardShortcutsAvailable(): boolean {\r\n return this._keyMap.size !== 0;\r\n }\r\n\r\n /** Empties any Keyboard Shortcuts from this container */\r\n public emptyData(): void {\r\n this._keyMap.clear();\r\n this._keyArray.length = 0;\r\n }\r\n\r\n public getAvailableKeyboardShortcuts(): KeyboardShortcut[] {\r\n return this._keyArray.slice();\r\n }\r\n\r\n /** Generates a key used for storing and finding the Keyboard Shortcuts in this container */\r\n public static generateKeyMapKey(keyboardKey: string, isAltKeyRequired: boolean, isCtrlKeyRequired: boolean, isShiftKeyRequired: boolean): string {\r\n let keyMapKey = keyboardKey;\r\n\r\n if (isAltKeyRequired)\r\n keyMapKey = `Alt+${keyMapKey}`;\r\n if (isShiftKeyRequired)\r\n keyMapKey = `Shift+${keyMapKey}`;\r\n if (isCtrlKeyRequired)\r\n keyMapKey = `Ctrl+${keyMapKey}`;\r\n\r\n return keyMapKey;\r\n }\r\n\r\n /** Displays a menu for the Keyboard Shortcuts in this container */\r\n public showShortcutsMenu() {\r\n const offset = 8;\r\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.emit({\r\n menuVisible: true,\r\n menuX: KeyboardShortcutManager.cursorX - offset,\r\n menuY: KeyboardShortcutManager.cursorY - offset,\r\n shortcuts: this.getAvailableKeyboardShortcuts(),\r\n });\r\n }\r\n}\r\n\r\ntype OnShortcutFunc = (shortcut: KeyboardShortcut) => void;\r\n\r\n/** Keyboard Shortcut Manager\r\n * @public\r\n */\r\nexport class KeyboardShortcutManager {\r\n\r\n private static _shortcuts: KeyboardShortcutContainer = new KeyboardShortcutContainer();\r\n\r\n /** Initialize the Keyboard Shortcut manager */\r\n public static initialize(): void {\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(KeyboardShortcutManager._handleSyncUiEvent);\r\n }\r\n\r\n /** Loads Keyboard Shortcuts into the managed list */\r\n public static loadKeyboardShortcuts(shortcutList: KeyboardShortcutProps[]) {\r\n shortcutList.forEach((shortcutProps: KeyboardShortcutProps) => {\r\n this.loadKeyboardShortcut(shortcutProps);\r\n });\r\n }\r\n\r\n /** Loads a Keyboard Shortcut into the managed list */\r\n public static loadKeyboardShortcut(shortcutProps: KeyboardShortcutProps) {\r\n const shortcut = new KeyboardShortcut(shortcutProps);\r\n this._shortcuts.registerKey(shortcut.keyMapKey, shortcut);\r\n }\r\n\r\n /** Processes a keystroke and invokes a matching Keyboard Shortcut */\r\n public static processKey(keyboardKey: string, isAltKeyPressed: boolean = false, isCtrlKeyPressed: boolean = false, isShiftKeyPressed: boolean = false): boolean {\r\n const keyMapKey = KeyboardShortcutContainer.generateKeyMapKey(keyboardKey, isAltKeyPressed, isCtrlKeyPressed, isShiftKeyPressed);\r\n\r\n const shortcut = this.getShortcut(keyMapKey);\r\n if (shortcut) {\r\n shortcut.itemPicked();\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /** Returns the managed list of Keyboard Shortcuts */\r\n public static get shortcutContainer(): KeyboardShortcutContainer {\r\n return this._shortcuts;\r\n }\r\n\r\n /** Returns a Keyboard Shortcut from the managed lists */\r\n public static getShortcut(keyMapKey: string): KeyboardShortcut | undefined {\r\n return this._shortcuts.findKey(keyMapKey);\r\n }\r\n\r\n /** Determines if focus is set to Home */\r\n public static get isFocusOnHome(): boolean {\r\n const element = document.activeElement as HTMLElement;\r\n return element && element === document.body;\r\n }\r\n\r\n /** Sets focus to Home */\r\n public static setFocusToHome(): void {\r\n const element = document.activeElement as HTMLElement;\r\n if (element && element !== document.body) {\r\n element.blur();\r\n document.body.focus();\r\n }\r\n }\r\n\r\n /** Displays the Keyboard Shortcuts menu at the cursor */\r\n public static displayShortcutsMenu(): void {\r\n if (this._shortcuts.areKeyboardShortcutsAvailable()) {\r\n this._shortcuts.showShortcutsMenu();\r\n }\r\n }\r\n\r\n /** Closes the Keyboard Shortcuts menu */\r\n public static closeShortcutsMenu(): void {\r\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.emit({\r\n menuVisible: false,\r\n menuX: 0,\r\n menuY: 0,\r\n shortcuts: undefined,\r\n });\r\n }\r\n\r\n /** Returns the cursor X position, which is mouseEvent.pageX. */\r\n public static get cursorX(): number { return CursorInformation.cursorX; }\r\n /** Returns the cursor Y position, which is mouseEvent.pageY. */\r\n public static get cursorY(): number { return CursorInformation.cursorY; }\r\n\r\n private static _handleSyncUiEvent = (args: UiSyncEventArgs) => {\r\n const updateBooleanValue = (booleanValue: ConditionalBooleanValue) => {\r\n if (SyncUiEventDispatcher.hasEventOfInterest(args.eventIds, booleanValue.syncEventIds))\r\n booleanValue.refresh();\r\n };\r\n const handleForSyncIds = (shortcut: KeyboardShortcut) => {\r\n if (shortcut.isDisabled instanceof ConditionalBooleanValue)\r\n updateBooleanValue(shortcut.isDisabled);\r\n if (shortcut.isHidden instanceof ConditionalBooleanValue)\r\n updateBooleanValue(shortcut.isHidden);\r\n };\r\n\r\n KeyboardShortcutManager._traverseShortcuts(KeyboardShortcutManager._shortcuts.getAvailableKeyboardShortcuts(), handleForSyncIds);\r\n };\r\n\r\n private static _traverseShortcuts = (shortcuts: KeyboardShortcut[], callback: OnShortcutFunc) => {\r\n shortcuts.forEach((shortcut: KeyboardShortcut) => {\r\n callback(shortcut);\r\n\r\n if (shortcut.shortcutContainer.areKeyboardShortcutsAvailable()) {\r\n const childShortcuts = shortcut.shortcutContainer.getAvailableKeyboardShortcuts();\r\n KeyboardShortcutManager._traverseShortcuts(childShortcuts, callback);\r\n }\r\n });\r\n };\r\n\r\n}\r\n"]}
@@ -2,8 +2,9 @@
2
2
  * @module KeyboardShortcut
3
3
  */
4
4
  import * as React from "react";
5
- import { CommonProps, UiEvent } from "@itwin/core-react";
5
+ import { CommonProps } from "@itwin/core-react";
6
6
  import { KeyboardShortcut } from "./KeyboardShortcut";
7
+ import { UiEvent } from "@itwin/appui-abstract";
7
8
  /** State for a [[KeyboardShortcutMenuEvent]] and [[KeyboardShortcutMenu]] component
8
9
  * @public
9
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardShortcutMenu.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/keyboardshortcut/KeyboardShortcutMenu.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAsD,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC7G,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,OAAO,CAAC,yBAAyB,CAAC;CAAI;AAErF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAEnG,gBAAgB;IAChB,SAAyB,KAAK,EAAE,yBAAyB,CAIvD;IAEF,uCAAuC;IACvC,gBAAuB,2BAA2B,4BAAmC;IAErE,iBAAiB;IAIjB,oBAAoB;IAIpC,OAAO,CAAC,gCAAgC,CAEtC;IAEc,MAAM,IAAI,KAAK,CAAC,SAAS;IA6BzC,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,WAAW,CAGjB;CACH"}
1
+ {"version":3,"file":"KeyboardShortcutMenu.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/keyboardshortcut/KeyboardShortcutMenu.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAsD,MAAM,mBAAmB,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAA2B,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEzE;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,OAAO,CAAC,yBAAyB,CAAC;CAAI;AAErF;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,yBAAyB,CAAC;IAEnG,gBAAgB;IAChB,SAAyB,KAAK,EAAE,yBAAyB,CAIvD;IAEF,uCAAuC;IACvC,gBAAuB,2BAA2B,4BAAmC;IAErE,iBAAiB;IAIjB,oBAAoB;IAIpC,OAAO,CAAC,gCAAgC,CAEtC;IAEc,MAAM,IAAI,KAAK,CAAC,SAAS;IA6BzC,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,mBAAmB;IAmC3B,OAAO,CAAC,gBAAgB,CAEtB;IAEF,OAAO,CAAC,WAAW,CAGjB;CACH"}
@@ -6,8 +6,8 @@
6
6
  * @module KeyboardShortcut
7
7
  */
8
8
  import * as React from "react";
9
- import { ContextMenuItem, ContextSubMenu, GlobalContextMenu, UiEvent } from "@itwin/core-react";
10
- import { ConditionalBooleanValue } from "@itwin/appui-abstract";
9
+ import { ContextMenuItem, ContextSubMenu, GlobalContextMenu } from "@itwin/core-react";
10
+ import { ConditionalBooleanValue, UiEvent } from "@itwin/appui-abstract";
11
11
  /** KeyboardShortcut Menu Event class.
12
12
  * @public
13
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"KeyboardShortcutMenu.js","sourceRoot":"","sources":["../../../../src/appui-react/keyboardshortcut/KeyboardShortcutMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module KeyboardShortcut\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { CommonProps, ContextMenuItem, ContextSubMenu, GlobalContextMenu, UiEvent } from \"@itwin/core-react\";\r\nimport { KeyboardShortcut } from \"./KeyboardShortcut\";\r\nimport { ConditionalBooleanValue } from \"@itwin/appui-abstract\";\r\n\r\n/** State for a [[KeyboardShortcutMenuEvent]] and [[KeyboardShortcutMenu]] component\r\n * @public\r\n */\r\nexport interface KeyboardShortcutMenuState {\r\n menuVisible: boolean;\r\n menuX: number;\r\n menuY: number;\r\n shortcuts?: KeyboardShortcut[];\r\n}\r\n\r\n/** KeyboardShortcut Menu Event class.\r\n * @public\r\n */\r\nexport class KeyboardShortcutMenuEvent extends UiEvent<KeyboardShortcutMenuState> { }\r\n\r\n/** React component that displays a context menu at the cursor containing keyboard shortcuts.\r\n * @public\r\n */\r\nexport class KeyboardShortcutMenu extends React.PureComponent<CommonProps, KeyboardShortcutMenuState> {\r\n\r\n /** @internal */\r\n public override readonly state: KeyboardShortcutMenuState = {\r\n menuVisible: false,\r\n menuX: 0,\r\n menuY: 0,\r\n };\r\n\r\n /** Get KeyboardShortcut Menu Event. */\r\n public static readonly onKeyboardShortcutMenuEvent = new KeyboardShortcutMenuEvent();\r\n\r\n public override componentDidMount() {\r\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.addListener(this._handleKeyboardShortcutMenuEvent);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.removeListener(this._handleKeyboardShortcutMenuEvent);\r\n }\r\n\r\n private _handleKeyboardShortcutMenuEvent = (state: KeyboardShortcutMenuState) => {\r\n this.setState(state);\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const { shortcuts, menuX, menuY, menuVisible } = this.state;\r\n const onClose = this._hideContextMenu;\r\n\r\n if (menuVisible) {\r\n const items = this.getShortcutMenuItems(shortcuts);\r\n\r\n return (\r\n <GlobalContextMenu\r\n className={this.props.className}\r\n style={this.props.style}\r\n identifier=\"keyboard-shortcuts\"\r\n x={menuX}\r\n y={menuY}\r\n opened={menuVisible}\r\n onEsc={onClose}\r\n onOutsideClick={onClose}\r\n edgeLimit={false}\r\n autoflip={true}\r\n ignoreNextKeyUp={true} // Executing the shortcut on the keydown, so ignore the keyup in the menu\r\n >\r\n {items}\r\n </GlobalContextMenu>\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private getShortcutMenuItems(shortcuts?: KeyboardShortcut[]): React.ReactNode[] {\r\n const items: React.ReactNode[] = [];\r\n\r\n // istanbul ignore else\r\n if (shortcuts) {\r\n shortcuts.forEach((shortcut: KeyboardShortcut, index: number) => {\r\n const item = this.getShortcutMenuItem(shortcut, index);\r\n // istanbul ignore else\r\n if (item)\r\n items.push(item);\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private getShortcutMenuItem(shortcut: KeyboardShortcut, index: number): React.ReactNode {\r\n const shortcutKey = shortcut.key;\r\n const isHidden = ConditionalBooleanValue.getValue(shortcut.isHidden);\r\n\r\n // Only pure characters go into the context menu\r\n if (shortcutKey !== shortcut.keyMapKey || shortcut.isFunctionKey || shortcut.isSpecialKey || isHidden)\r\n return null;\r\n\r\n let node: React.ReactNode = null;\r\n let label = shortcut.label;\r\n const iconSpec = shortcut.iconSpec;\r\n\r\n label = `~${shortcutKey.toLocaleUpperCase()} ${label}`;\r\n\r\n if (shortcut.shortcutContainer.areKeyboardShortcutsAvailable()) {\r\n const shortcuts = shortcut.shortcutContainer.getAvailableKeyboardShortcuts();\r\n const items = this.getShortcutMenuItems(shortcuts);\r\n\r\n node = (\r\n <ContextSubMenu key={index} icon={iconSpec} label={label} disabled={shortcut.isDisabled}>\r\n {items}\r\n </ContextSubMenu>\r\n );\r\n } else {\r\n const sel = () => this._itemPicked(shortcut);\r\n node = (\r\n <ContextMenuItem key={index} onSelect={sel} icon={iconSpec} disabled={shortcut.isDisabled}>\r\n {label}\r\n </ContextMenuItem>\r\n );\r\n }\r\n\r\n return node;\r\n }\r\n\r\n private _hideContextMenu = () => {\r\n this.setState({ menuVisible: false, shortcuts: undefined });\r\n };\r\n\r\n private _itemPicked = (shortcut: KeyboardShortcut): void => {\r\n this._hideContextMenu();\r\n shortcut.itemPicked();\r\n };\r\n}\r\n"]}
1
+ {"version":3,"file":"KeyboardShortcutMenu.js","sourceRoot":"","sources":["../../../../src/appui-react/keyboardshortcut/KeyboardShortcutMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module KeyboardShortcut\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { CommonProps, ContextMenuItem, ContextSubMenu, GlobalContextMenu } from \"@itwin/core-react\";\r\nimport { KeyboardShortcut } from \"./KeyboardShortcut\";\r\nimport { ConditionalBooleanValue, UiEvent } from \"@itwin/appui-abstract\";\r\n\r\n/** State for a [[KeyboardShortcutMenuEvent]] and [[KeyboardShortcutMenu]] component\r\n * @public\r\n */\r\nexport interface KeyboardShortcutMenuState {\r\n menuVisible: boolean;\r\n menuX: number;\r\n menuY: number;\r\n shortcuts?: KeyboardShortcut[];\r\n}\r\n\r\n/** KeyboardShortcut Menu Event class.\r\n * @public\r\n */\r\nexport class KeyboardShortcutMenuEvent extends UiEvent<KeyboardShortcutMenuState> { }\r\n\r\n/** React component that displays a context menu at the cursor containing keyboard shortcuts.\r\n * @public\r\n */\r\nexport class KeyboardShortcutMenu extends React.PureComponent<CommonProps, KeyboardShortcutMenuState> {\r\n\r\n /** @internal */\r\n public override readonly state: KeyboardShortcutMenuState = {\r\n menuVisible: false,\r\n menuX: 0,\r\n menuY: 0,\r\n };\r\n\r\n /** Get KeyboardShortcut Menu Event. */\r\n public static readonly onKeyboardShortcutMenuEvent = new KeyboardShortcutMenuEvent();\r\n\r\n public override componentDidMount() {\r\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.addListener(this._handleKeyboardShortcutMenuEvent);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n KeyboardShortcutMenu.onKeyboardShortcutMenuEvent.removeListener(this._handleKeyboardShortcutMenuEvent);\r\n }\r\n\r\n private _handleKeyboardShortcutMenuEvent = (state: KeyboardShortcutMenuState) => {\r\n this.setState(state);\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const { shortcuts, menuX, menuY, menuVisible } = this.state;\r\n const onClose = this._hideContextMenu;\r\n\r\n if (menuVisible) {\r\n const items = this.getShortcutMenuItems(shortcuts);\r\n\r\n return (\r\n <GlobalContextMenu\r\n className={this.props.className}\r\n style={this.props.style}\r\n identifier=\"keyboard-shortcuts\"\r\n x={menuX}\r\n y={menuY}\r\n opened={menuVisible}\r\n onEsc={onClose}\r\n onOutsideClick={onClose}\r\n edgeLimit={false}\r\n autoflip={true}\r\n ignoreNextKeyUp={true} // Executing the shortcut on the keydown, so ignore the keyup in the menu\r\n >\r\n {items}\r\n </GlobalContextMenu>\r\n );\r\n }\r\n\r\n return null;\r\n }\r\n\r\n private getShortcutMenuItems(shortcuts?: KeyboardShortcut[]): React.ReactNode[] {\r\n const items: React.ReactNode[] = [];\r\n\r\n // istanbul ignore else\r\n if (shortcuts) {\r\n shortcuts.forEach((shortcut: KeyboardShortcut, index: number) => {\r\n const item = this.getShortcutMenuItem(shortcut, index);\r\n // istanbul ignore else\r\n if (item)\r\n items.push(item);\r\n });\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private getShortcutMenuItem(shortcut: KeyboardShortcut, index: number): React.ReactNode {\r\n const shortcutKey = shortcut.key;\r\n const isHidden = ConditionalBooleanValue.getValue(shortcut.isHidden);\r\n\r\n // Only pure characters go into the context menu\r\n if (shortcutKey !== shortcut.keyMapKey || shortcut.isFunctionKey || shortcut.isSpecialKey || isHidden)\r\n return null;\r\n\r\n let node: React.ReactNode = null;\r\n let label = shortcut.label;\r\n const iconSpec = shortcut.iconSpec;\r\n\r\n label = `~${shortcutKey.toLocaleUpperCase()} ${label}`;\r\n\r\n if (shortcut.shortcutContainer.areKeyboardShortcutsAvailable()) {\r\n const shortcuts = shortcut.shortcutContainer.getAvailableKeyboardShortcuts();\r\n const items = this.getShortcutMenuItems(shortcuts);\r\n\r\n node = (\r\n <ContextSubMenu key={index} icon={iconSpec} label={label} disabled={shortcut.isDisabled}>\r\n {items}\r\n </ContextSubMenu>\r\n );\r\n } else {\r\n const sel = () => this._itemPicked(shortcut);\r\n node = (\r\n <ContextMenuItem key={index} onSelect={sel} icon={iconSpec} disabled={shortcut.isDisabled}>\r\n {label}\r\n </ContextMenuItem>\r\n );\r\n }\r\n\r\n return node;\r\n }\r\n\r\n private _hideContextMenu = () => {\r\n this.setState({ menuVisible: false, shortcuts: undefined });\r\n };\r\n\r\n private _itemPicked = (shortcut: KeyboardShortcut): void => {\r\n this._hideContextMenu();\r\n shortcut.itemPicked();\r\n };\r\n}\r\n"]}
@@ -3,8 +3,7 @@
3
3
  */
4
4
  import { XAndY } from "@itwin/core-geometry";
5
5
  import { ActivityMessageDetails, MessageBoxIconType, MessageBoxType, MessageBoxValue, OutputMessagePriority, ToolAssistanceInstructions, ToolTipOptions } from "@itwin/core-frontend";
6
- import { MessageSeverity } from "@itwin/appui-abstract";
7
- import { UiEvent } from "@itwin/core-react";
6
+ import { MessageSeverity, UiEvent } from "@itwin/appui-abstract";
8
7
  import { NotifyMessageDetailsType, NotifyMessageType } from "./ReactNotifyMessageDetails";
9
8
  import { StatusMessageManager } from "./StatusMessageManager";
10
9
  /** [[MessageAddedEvent]] arguments.
@@ -1 +1 @@
1
- {"version":3,"file":"MessageManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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"}
@@ -9,8 +9,8 @@ import classnames from "classnames";
9
9
  import * as _ from "lodash";
10
10
  import * as React from "react";
11
11
  import { ActivityMessageDetails, IModelApp, MessageBoxIconType, MessageBoxType, OutputMessageAlert, OutputMessagePriority, OutputMessageType, } from "@itwin/core-frontend";
12
- import { MessageSeverity } from "@itwin/appui-abstract";
13
- import { MessageContainer, UiEvent } from "@itwin/core-react";
12
+ import { MessageSeverity, UiEvent } from "@itwin/appui-abstract";
13
+ import { MessageContainer } from "@itwin/core-react";
14
14
  import { ConfigurableUiActionId } from "../configurableui/state";
15
15
  import { ModalDialogManager } from "../dialog/ModalDialogManager";
16
16
  import { StandardMessageBox } from "../dialog/StandardMessageBox";
@@ -1 +1 @@
1
- {"version":3,"file":"MessageManager.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as _ from \"lodash\";\r\nimport * as React from \"react\";\r\nimport { XAndY } from \"@itwin/core-geometry\";\r\nimport {\r\n ActivityMessageDetails, IModelApp, MessageBoxIconType, MessageBoxType, MessageBoxValue, OutputMessageAlert, OutputMessagePriority,\r\n OutputMessageType, ToolAssistanceInstructions, ToolTipOptions,\r\n} from \"@itwin/core-frontend\";\r\nimport { MessageSeverity } from \"@itwin/appui-abstract\";\r\nimport { MessageContainer, UiEvent } from \"@itwin/core-react\";\r\nimport { ConfigurableUiActionId } from \"../configurableui/state\";\r\nimport { ModalDialogManager } from \"../dialog/ModalDialogManager\";\r\nimport { StandardMessageBox } from \"../dialog/StandardMessageBox\";\r\nimport { ElementTooltip } from \"../feedback/ElementTooltip\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { MessageSpan } from \"./MessageSpan\";\r\nimport { PointerMessage } from \"./Pointer\";\r\nimport { NotifyMessageDetailsType, NotifyMessageType } from \"./ReactNotifyMessageDetails\";\r\nimport { StatusMessageManager } from \"./StatusMessageManager\";\r\n\r\nclass MessageBoxCallbacks {\r\n constructor(\r\n public readonly onFulfilled: (result: MessageBoxValue) => void,\r\n public readonly onRejected: (result: any) => void,\r\n ) { }\r\n\r\n public handleMessageBoxResult = (result: MessageBoxValue) => {\r\n this.onFulfilled(result);\r\n };\r\n}\r\n\r\n/** [[MessageAddedEvent]] arguments.\r\n * @public\r\n */\r\nexport interface MessageAddedEventArgs {\r\n /** Message details for the message added */\r\n message: NotifyMessageDetailsType;\r\n}\r\n\r\n/** Activity Message Event arguments.\r\n * @public\r\n */\r\nexport interface ActivityMessageEventArgs {\r\n /** Current message for the activity */\r\n message: NotifyMessageType;\r\n /** Current percentage for the activity */\r\n percentage: number;\r\n /** Message details set by calling NotificationManager.setupActivityMessage */\r\n details?: ActivityMessageDetails;\r\n /** Indicates whether the activity message popup is being restored */\r\n restored?: boolean;\r\n}\r\n\r\n/** Input Field Message Event arguments.\r\n * @public\r\n */\r\nexport interface InputFieldMessageEventArgs {\r\n /** Target HTML element for the Input Field message */\r\n target: Element;\r\n /** Message to be displayed near the input field */\r\n messageText: NotifyMessageType;\r\n /** Detailed message to be displayed near the input field */\r\n detailedMessage: NotifyMessageType;\r\n /** Priority of the input field message */\r\n priority: OutputMessagePriority;\r\n}\r\n\r\n/** Tool Assistance Changed event arguments.\r\n * @public\r\n */\r\nexport interface ToolAssistanceChangedEventArgs {\r\n /** Tool Assistance instructions for the active tool */\r\n instructions: ToolAssistanceInstructions | undefined;\r\n}\r\n\r\n/** Message Added Event class.\r\n * @public\r\n */\r\nexport class MessageAddedEvent extends UiEvent<MessageAddedEventArgs> { }\r\n\r\n/** Messages Updated Event class.\r\n * @public\r\n */\r\nexport class MessagesUpdatedEvent extends UiEvent<{}> { }\r\n\r\n/** Activity Message Added Event class.\r\n * @public\r\n */\r\nexport class ActivityMessageUpdatedEvent extends UiEvent<ActivityMessageEventArgs> { }\r\n\r\n/** Activity Message Cancelled Event class.\r\n * @public\r\n */\r\nexport class ActivityMessageCancelledEvent extends UiEvent<{}> { }\r\n\r\n/** Input Field Message Added Event class\r\n * @public\r\n */\r\nexport class InputFieldMessageAddedEvent extends UiEvent<InputFieldMessageEventArgs> { }\r\n\r\n/** Input Field Message Removed Event class.\r\n * @public\r\n */\r\nexport class InputFieldMessageRemovedEvent extends UiEvent<{}> { }\r\n\r\n/** Open Message Center Event class.\r\n * @public\r\n */\r\nexport class OpenMessageCenterEvent extends UiEvent<{}> { }\r\n\r\n/** Tool Assistance Changed event class\r\n * @public\r\n */\r\nexport class ToolAssistanceChangedEvent extends UiEvent<ToolAssistanceChangedEventArgs> { }\r\n\r\n/**\r\n * Keeps track of the current activity message, and updates whenever\r\n * setupActivityMessageDetails() or setupActivityMessageValues()\r\n * is called.\r\n * Used to display tracked progress in ActivityMessage.\r\n */\r\nclass OngoingActivityMessage {\r\n public message: NotifyMessageType = \"\";\r\n public percentage: number = 0;\r\n public details: ActivityMessageDetails = new ActivityMessageDetails(true, true, true);\r\n public isRestored: boolean = false;\r\n}\r\n\r\n/** The MessageManager class manages messages and prompts. It is used by the [[AppNotificationManager]] class.\r\n * @public\r\n */\r\nexport class MessageManager {\r\n private static _maxCachedMessages = 500;\r\n private static _maxDisplayedStickyMessages = 3;\r\n private static _messages: NotifyMessageDetailsType[] = [];\r\n private static _ongoingActivityMessage: OngoingActivityMessage = new OngoingActivityMessage();\r\n private static _lastMessage?: NotifyMessageDetailsType;\r\n private static _activeMessageManager = new StatusMessageManager();\r\n\r\n /** The MessageAddedEvent is fired when a message is added via outputMessage(). */\r\n public static readonly onMessageAddedEvent = new MessageAddedEvent();\r\n\r\n /** The MessagesUpdatedEvent is fired when a message is added or the messages are cleared. */\r\n public static readonly onMessagesUpdatedEvent = new MessagesUpdatedEvent();\r\n\r\n /** The ActivityMessageUpdatedEvent is fired when an Activity message updates via outputActivityMessage(). */\r\n public static readonly onActivityMessageUpdatedEvent = new ActivityMessageUpdatedEvent();\r\n\r\n /** The ActivityMessageCancelledEvent is fired when an Activity message is cancelled via\r\n * endActivityMessage(ActivityMessageEndReason.Cancelled) or\r\n * by the user clicking the 'Cancel' link.\r\n */\r\n public static readonly onActivityMessageCancelledEvent = new ActivityMessageCancelledEvent();\r\n\r\n public static readonly onInputFieldMessageAddedEvent = new InputFieldMessageAddedEvent();\r\n public static readonly onInputFieldMessageRemovedEvent = new InputFieldMessageRemovedEvent();\r\n\r\n public static readonly onOpenMessageCenterEvent = new OpenMessageCenterEvent();\r\n\r\n /** The ToolAssistanceChangedEvent is fired when a tool calls IModelApp.notifications.setToolAssistance().\r\n * @public\r\n */\r\n public static readonly onToolAssistanceChangedEvent = new ToolAssistanceChangedEvent();\r\n\r\n /** List of messages as NotifyMessageDetailsType. */\r\n public static get messages(): Readonly<NotifyMessageDetailsType[]> { return this._messages; }\r\n\r\n /** Manager of active messages. */\r\n public static get activeMessageManager(): StatusMessageManager { return this._activeMessageManager; }\r\n\r\n /** Clear the message list. */\r\n public static clearMessages(): void {\r\n this._messages.splice(0);\r\n this._activeMessageManager.initialize();\r\n\r\n this.onMessagesUpdatedEvent.emit({});\r\n this._lastMessage = undefined;\r\n }\r\n\r\n /** Update the message list. */\r\n public static updateMessages(): void {\r\n this.onMessagesUpdatedEvent.emit({});\r\n }\r\n\r\n /** Set the maximum number of cached message. */\r\n public static setMaxCachedMessages(max: number): void {\r\n this._maxCachedMessages = max;\r\n this.checkMaxCachedMessages();\r\n }\r\n\r\n /** The maximum number of displayed Sticky messages. */\r\n public static get maxDisplayedStickyMessages(): number { return this._maxDisplayedStickyMessages; }\r\n public static set maxDisplayedStickyMessages(max: number) { this._maxDisplayedStickyMessages = max; }\r\n\r\n /** Output a message and/or alert to the user.\r\n * @param message Details about the message to output.\r\n */\r\n public static outputMessage(message: NotifyMessageDetailsType): void {\r\n if (message.msgType === OutputMessageType.Pointer) {\r\n PointerMessage.showMessage(message);\r\n } else if (message.msgType === OutputMessageType.InputField) {\r\n if (message.inputField)\r\n MessageManager.displayInputFieldMessage(message.inputField, message.briefMessage, message.detailedMessage, message.priority);\r\n else\r\n message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for InputField without inputField\r\n } else if (message.msgType === OutputMessageType.Alert) {\r\n if (message.openAlert === OutputMessageAlert.Balloon)\r\n message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for Balloon\r\n else\r\n MessageManager.showAlertMessageBox(message);\r\n }\r\n\r\n MessageManager.addMessage(message);\r\n }\r\n\r\n /** Output a message and/or alert to the user.\r\n * @param message Details about the message to output.\r\n */\r\n public static addMessage(message: NotifyMessageDetailsType): void {\r\n if (!_.isEqual(message, this._lastMessage)) {\r\n this.addToMessageCenter(message);\r\n this._lastMessage = message;\r\n }\r\n\r\n this._activeMessageManager.add(message);\r\n\r\n this.onMessageAddedEvent.emit({ message });\r\n }\r\n\r\n /** Add a message to the Message Center.\r\n * @param message Details about the message to output.\r\n */\r\n public static addToMessageCenter(message: NotifyMessageDetailsType): void {\r\n this._messages.push(message);\r\n this.onMessagesUpdatedEvent.emit({});\r\n this.checkMaxCachedMessages();\r\n }\r\n\r\n /** Checks number of messages against the maximum. */\r\n private static checkMaxCachedMessages(): void {\r\n if (this._messages.length > this._maxCachedMessages) {\r\n const numToErase = this._maxCachedMessages / 4;\r\n this._messages.splice(0, numToErase);\r\n this.onMessagesUpdatedEvent.emit({});\r\n }\r\n }\r\n\r\n /**\r\n * Sets details for setting up an Activity message.\r\n * @param details Details for setup of ActivityMessage\r\n * @returns true if details is valid and can be used to display ActivityMessage\r\n */\r\n public static setupActivityMessageDetails(details: ActivityMessageDetails): boolean {\r\n this._ongoingActivityMessage.details = details;\r\n this._ongoingActivityMessage.isRestored = details.showDialogInitially;\r\n return true;\r\n }\r\n\r\n /**\r\n * Output an activity message to the user.\r\n * @param message The message text.\r\n * @param percentComplete The percentage of completion.\r\n * @return true if the message was displayed, false if the message could not be displayed.\r\n */\r\n public static outputActivityMessage(message: NotifyMessageType, percentComplete: number): boolean {\r\n return MessageManager.setupActivityMessageValues(message, percentComplete);\r\n }\r\n\r\n /**\r\n * Sets values on _OngoingActivityMessage to be referenced when displaying\r\n * an ActivityMessage.\r\n * @param message Message of the process that ActivityMessage is tracking\r\n * @param percentage Progress made by activity in percentage\r\n * @param restored True if original ActivityMessage has been closed and\r\n * is now being restored from the status bar.\r\n * @returns true if details is valid and can be used to display ActivityMessage\r\n */\r\n public static setupActivityMessageValues(message: NotifyMessageType, percentage: number, restored?: boolean): boolean {\r\n this._ongoingActivityMessage.message = message;\r\n this._ongoingActivityMessage.percentage = percentage;\r\n\r\n this.onActivityMessageUpdatedEvent.emit({\r\n message,\r\n percentage,\r\n details: this._ongoingActivityMessage.details,\r\n restored: (restored !== undefined) ? restored : this._ongoingActivityMessage.isRestored,\r\n });\r\n\r\n this._ongoingActivityMessage.isRestored = false;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Dismisses current ActivityMessage and ends activity if canceled.\r\n * @param isCompleted True if the activity was completed, false if it was canceled\r\n * @returns True if both ActivityMessage and activity process are ended.\r\n */\r\n public static endActivityMessage(isCompleted: boolean): boolean {\r\n this.endActivityProcessing(isCompleted);\r\n this.onActivityMessageCancelledEvent.emit({});\r\n return true;\r\n }\r\n\r\n /**\r\n * Ends processing for activity according to message definition.\r\n * @param isCompleted True if the activity was completed, false if it was canceled\r\n */\r\n private static endActivityProcessing(isCompleted: boolean): void {\r\n if (isCompleted)\r\n this._ongoingActivityMessage.details.onActivityCompleted();\r\n else\r\n this._ongoingActivityMessage.details.onActivityCancelled();\r\n }\r\n\r\n /**\r\n * Displays an input field message near target element.\r\n * @param target The currently focused or recently focused element to place the\r\n * input field message near.\r\n * @param messageText Text to display in the message.\r\n * @param detailedMessage Optional detailed message text to display.\r\n * @param priority Optional message priority which controls icon to display.\r\n */\r\n public static displayInputFieldMessage(target: HTMLElement, messageText: NotifyMessageType, detailedMessage: NotifyMessageType = \"\", priority = OutputMessagePriority.Error) {\r\n this.onInputFieldMessageAddedEvent.emit({\r\n target,\r\n messageText,\r\n detailedMessage,\r\n priority,\r\n });\r\n }\r\n\r\n /**\r\n * Hides the currently displayed input field message.\r\n */\r\n public static hideInputFieldMessage() {\r\n this.onInputFieldMessageRemovedEvent.emit({});\r\n }\r\n\r\n /**\r\n * Opens message center.\r\n */\r\n public static openMessageCenter() {\r\n this.onOpenMessageCenterEvent.emit({});\r\n }\r\n\r\n /** Output a prompt to the user. A 'prompt' indicates an action the user should take to proceed. */\r\n public static outputPrompt(prompt: string): void {\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetToolPrompt, prompt, true);\r\n }\r\n\r\n /** Gets an icon CSS class name based on a given NotifyMessageDetailsType. */\r\n public static getIconClassName(details: NotifyMessageDetailsType): string {\r\n const severity = MessageManager.getSeverity(details);\r\n const className = MessageContainer.getIconClassName(severity, false);\r\n const iconClassName = classnames(\"icon\", \"notifymessage-icon\", className);\r\n\r\n return iconClassName;\r\n }\r\n\r\n /** Gets a MessageSeverity based on a given NotifyMessageDetailsType. */\r\n public static getSeverity(details: NotifyMessageDetailsType): MessageSeverity {\r\n let severity = MessageSeverity.None;\r\n\r\n switch (details.priority) {\r\n case OutputMessagePriority.None:\r\n severity = MessageSeverity.None;\r\n break;\r\n case OutputMessagePriority.Info:\r\n severity = MessageSeverity.Information;\r\n break;\r\n case OutputMessagePriority.Warning:\r\n severity = MessageSeverity.Warning;\r\n break;\r\n case OutputMessagePriority.Error:\r\n severity = MessageSeverity.Error;\r\n break;\r\n case OutputMessagePriority.Fatal:\r\n severity = MessageSeverity.Fatal;\r\n break;\r\n }\r\n\r\n return severity;\r\n }\r\n\r\n /** Gets a MessageBoxIconType based on a given NotifyMessageDetailsType. */\r\n public static getIconType(details: NotifyMessageDetailsType): MessageBoxIconType {\r\n let iconType = MessageBoxIconType.NoSymbol;\r\n\r\n switch (details.priority) {\r\n case OutputMessagePriority.None:\r\n iconType = MessageBoxIconType.NoSymbol;\r\n break;\r\n case OutputMessagePriority.Info:\r\n iconType = MessageBoxIconType.Information;\r\n break;\r\n case OutputMessagePriority.Warning:\r\n iconType = MessageBoxIconType.Warning;\r\n break;\r\n case OutputMessagePriority.Error:\r\n iconType = MessageBoxIconType.Critical;\r\n break;\r\n case OutputMessagePriority.Fatal:\r\n iconType = MessageBoxIconType.Critical;\r\n break;\r\n }\r\n\r\n return iconType;\r\n }\r\n\r\n /** Output a MessageBox and wait for response from the user.\r\n * @param mbType The MessageBox type.\r\n * @param message The message to display.\r\n * @param icon The MessageBox icon type.\r\n * @return the response from the user.\r\n */\r\n public static async openMessageBox(mbType: MessageBoxType, message: NotifyMessageType, icon: MessageBoxIconType): Promise<MessageBoxValue> {\r\n const title = UiFramework.translate(\"general.alert\");\r\n\r\n return new Promise((onFulfilled: (result: MessageBoxValue) => void, onRejected: (reason: any) => void) => {\r\n const messageBoxCallbacks = new MessageBoxCallbacks(onFulfilled, onRejected);\r\n const messageElement = <MessageSpan message={message} />;\r\n ModalDialogManager.openDialog(this.standardMessageBox(mbType, icon, title, messageElement, messageBoxCallbacks));\r\n });\r\n }\r\n\r\n /** @internal */\r\n public static showAlertMessageBox(messageDetails: NotifyMessageDetailsType): void {\r\n const title = UiFramework.translate(\"general.alert\");\r\n const iconType = this.getIconType(messageDetails);\r\n const content = (\r\n <>\r\n <MessageSpan message={messageDetails.briefMessage} />\r\n {\r\n messageDetails.detailedMessage && (\r\n <p>\r\n <MessageSpan message={messageDetails.detailedMessage} />\r\n </p>\r\n )\r\n }\r\n </>\r\n );\r\n ModalDialogManager.openDialog(this.standardMessageBox(MessageBoxType.Ok, iconType, title, content));\r\n }\r\n\r\n private static standardMessageBox(mbType: MessageBoxType, iconType: MessageBoxIconType, title: string, messageElement: React.ReactNode, callbacks?: MessageBoxCallbacks): React.ReactNode {\r\n const onResult = (callbacks !== undefined) ? callbacks.handleMessageBoxResult : undefined;\r\n return (\r\n <StandardMessageBox\r\n opened={true}\r\n messageBoxType={mbType}\r\n iconType={iconType}\r\n title={title}\r\n onResult={onResult}\r\n >\r\n {messageElement}\r\n </StandardMessageBox>\r\n );\r\n }\r\n\r\n /** Setup tool assistance instructions for a tool. The instructions include the main instruction, which includes the current prompt.\r\n * @param instructions The tool assistance instructions.\r\n * @public\r\n */\r\n public static setToolAssistance(instructions: ToolAssistanceInstructions | undefined) {\r\n MessageManager.onToolAssistanceChangedEvent.emit({ instructions });\r\n }\r\n\r\n /** Show a tooltip window. Saves tooltip location for AccuSnap to test if cursor has moved far enough away to close tooltip.\r\n * @param htmlElement The HTMLElement that anchors the tooltip.\r\n * @param message What to display inside the tooltip.\r\n * @param location An optional location, relative to the origin of htmlElement, for the tooltip. If undefined, center of `htmlElement`.\r\n * @param options Options that supply additional information about how the tooltip should function.\r\n */\r\n public static openToolTip(htmlElement: HTMLElement, message: NotifyMessageType, location?: XAndY, options?: ToolTipOptions): void {\r\n IModelApp.notifications.toolTipLocation.setFrom(location);\r\n ElementTooltip.showTooltip(htmlElement, message, location, options);\r\n }\r\n\r\n /** @internal */\r\n public static closeAllMessages(): void {\r\n ElementTooltip.hideTooltip();\r\n PointerMessage.hideMessage();\r\n MessageManager.clearMessages();\r\n MessageManager.hideInputFieldMessage();\r\n MessageManager.endActivityMessage(false);\r\n }\r\n\r\n}\r\n"]}
1
+ {"version":3,"file":"MessageManager.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/MessageManager.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACL,sBAAsB,EAAE,SAAS,EAAE,kBAAkB,EAAE,cAAc,EAAmB,kBAAkB,EAAE,qBAAqB,EACjI,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,mBAAmB;IACvB,YACkB,WAA8C,EAC9C,UAAiC;QADjC,gBAAW,GAAX,WAAW,CAAmC;QAC9C,eAAU,GAAV,UAAU,CAAuB;QAG5C,2BAAsB,GAAG,CAAC,MAAuB,EAAE,EAAE;YAC1D,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC;IAJE,CAAC;CAKN;AA8CD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,OAA8B;CAAI;AAEzE;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,OAAW;CAAI;AAEzD;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,OAAiC;CAAI;AAEtF;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,OAAW;CAAI;AAElE;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,OAAmC;CAAI;AAExF;;GAEG;AACH,MAAM,OAAO,6BAA8B,SAAQ,OAAW;CAAI;AAElE;;GAEG;AACH,MAAM,OAAO,sBAAuB,SAAQ,OAAW;CAAI;AAE3D;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,OAAuC;CAAI;AAE3F;;;;;GAKG;AACH,MAAM,sBAAsB;IAA5B;QACS,YAAO,GAAsB,EAAE,CAAC;QAChC,eAAU,GAAW,CAAC,CAAC;QACvB,YAAO,GAA2B,IAAI,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/E,eAAU,GAAY,KAAK,CAAC;IACrC,CAAC;CAAA;AAED;;GAEG;AACH,MAAM,OAAO,cAAc;IAiCzB,oDAAoD;IAC7C,MAAM,KAAK,QAAQ,KAA2C,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAE7F,kCAAkC;IAC3B,MAAM,KAAK,oBAAoB,KAA2B,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAErG,8BAA8B;IACvB,MAAM,CAAC,aAAa;QACzB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC;QAExC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;IAChC,CAAC;IAED,+BAA+B;IACxB,MAAM,CAAC,cAAc;QAC1B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,gDAAgD;IACzC,MAAM,CAAC,oBAAoB,CAAC,GAAW;QAC5C,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAC9B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,uDAAuD;IAChD,MAAM,KAAK,0BAA0B,KAAa,OAAO,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;IAC5F,MAAM,KAAK,0BAA0B,CAAC,GAAW,IAAI,IAAI,CAAC,2BAA2B,GAAG,GAAG,CAAC,CAAC,CAAC;IAErG;;OAEG;IACI,MAAM,CAAC,aAAa,CAAC,OAAiC;QAC3D,IAAI,OAAO,CAAC,OAAO,KAAK,iBAAiB,CAAC,OAAO,EAAE;YACjD,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;SACrC;aAAM,IAAI,OAAO,CAAC,OAAO,KAAK,iBAAiB,CAAC,UAAU,EAAE;YAC3D,IAAI,OAAO,CAAC,UAAU;gBACpB,cAAc,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;;gBAE7H,OAAO,CAAC,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,4EAA4E;SAC3H;aAAM,IAAI,OAAO,CAAC,OAAO,KAAK,iBAAiB,CAAC,KAAK,EAAE;YACtD,IAAI,OAAO,CAAC,SAAS,KAAK,kBAAkB,CAAC,OAAO;gBAClD,OAAO,CAAC,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,sDAAsD;;gBAElG,cAAc,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;SAC/C;QAED,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,UAAU,CAAC,OAAiC;QACxD,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE;YAC1C,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;SAC7B;QAED,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,kBAAkB,CAAC,OAAiC;QAChE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,qDAAqD;IAC7C,MAAM,CAAC,sBAAsB;QACnC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE;YACnD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACtC;IACH,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,2BAA2B,CAAC,OAA+B;QACvE,IAAI,CAAC,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/C,IAAI,CAAC,uBAAuB,CAAC,UAAU,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,qBAAqB,CAAC,OAA0B,EAAE,eAAuB;QACrF,OAAO,cAAc,CAAC,0BAA0B,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;;OAQG;IACI,MAAM,CAAC,0BAA0B,CAAC,OAA0B,EAAE,UAAkB,EAAE,QAAkB;QACzG,IAAI,CAAC,uBAAuB,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/C,IAAI,CAAC,uBAAuB,CAAC,UAAU,GAAG,UAAU,CAAC;QAErD,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;YACtC,OAAO;YACP,UAAU;YACV,OAAO,EAAE,IAAI,CAAC,uBAAuB,CAAC,OAAO;YAC7C,QAAQ,EAAE,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU;SACxF,CAAC,CAAC;QAEH,IAAI,CAAC,uBAAuB,CAAC,UAAU,GAAG,KAAK,CAAC;QAEhD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,kBAAkB,CAAC,WAAoB;QACnD,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,qBAAqB,CAAC,WAAoB;QACvD,IAAI,WAAW;YACb,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;;YAE3D,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAC/D,CAAC;IAED;;;;;;;OAOG;IACI,MAAM,CAAC,wBAAwB,CAAC,MAAmB,EAAE,WAA8B,EAAE,kBAAqC,EAAE,EAAE,QAAQ,GAAG,qBAAqB,CAAC,KAAK;QACzK,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC;YACtC,MAAM;YACN,WAAW;YACX,eAAe;YACf,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,qBAAqB;QACjC,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,iBAAiB;QAC7B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,mGAAmG;IAC5F,MAAM,CAAC,YAAY,CAAC,MAAc;QACvC,WAAW,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACxF,CAAC;IAED,6EAA6E;IACtE,MAAM,CAAC,gBAAgB,CAAC,OAAiC;QAC9D,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACrE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;QAE1E,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,wEAAwE;IACjE,MAAM,CAAC,WAAW,CAAC,OAAiC;QACzD,IAAI,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC;QAEpC,QAAQ,OAAO,CAAC,QAAQ,EAAE;YACxB,KAAK,qBAAqB,CAAC,IAAI;gBAC7B,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC;gBAChC,MAAM;YACR,KAAK,qBAAqB,CAAC,IAAI;gBAC7B,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC;gBACvC,MAAM;YACR,KAAK,qBAAqB,CAAC,OAAO;gBAChC,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC;gBACnC,MAAM;YACR,KAAK,qBAAqB,CAAC,KAAK;gBAC9B,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC;gBACjC,MAAM;YACR,KAAK,qBAAqB,CAAC,KAAK;gBAC9B,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC;gBACjC,MAAM;SACT;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,2EAA2E;IACpE,MAAM,CAAC,WAAW,CAAC,OAAiC;QACzD,IAAI,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;QAE3C,QAAQ,OAAO,CAAC,QAAQ,EAAE;YACxB,KAAK,qBAAqB,CAAC,IAAI;gBAC7B,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;gBACvC,MAAM;YACR,KAAK,qBAAqB,CAAC,IAAI;gBAC7B,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC;gBAC1C,MAAM;YACR,KAAK,qBAAqB,CAAC,OAAO;gBAChC,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC;gBACtC,MAAM;YACR,KAAK,qBAAqB,CAAC,KAAK;gBAC9B,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;gBACvC,MAAM;YACR,KAAK,qBAAqB,CAAC,KAAK;gBAC9B,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC;gBACvC,MAAM;SACT;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAsB,EAAE,OAA0B,EAAE,IAAwB;QAC7G,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAErD,OAAO,IAAI,OAAO,CAAC,CAAC,WAA8C,EAAE,UAAiC,EAAE,EAAE;YACvG,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;YAC7E,MAAM,cAAc,GAAG,oBAAC,WAAW,IAAC,OAAO,EAAE,OAAO,GAAI,CAAC;YACzD,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC;QACnH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,mBAAmB,CAAC,cAAwC;QACxE,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,CACd;YACE,oBAAC,WAAW,IAAC,OAAO,EAAE,cAAc,CAAC,YAAY,GAAI;YAEnD,cAAc,CAAC,eAAe,IAAI,CAChC;gBACE,oBAAC,WAAW,IAAC,OAAO,EAAE,cAAc,CAAC,eAAe,GAAI,CACtD,CACL,CAEF,CACJ,CAAC;QACF,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IACtG,CAAC;IAEO,MAAM,CAAC,kBAAkB,CAAC,MAAsB,EAAE,QAA4B,EAAE,KAAa,EAAE,cAA+B,EAAE,SAA+B;QACrK,MAAM,QAAQ,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,OAAO,CACL,oBAAC,kBAAkB,IACjB,MAAM,EAAE,IAAI,EACZ,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,IAEjB,cAAc,CACI,CACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,iBAAiB,CAAC,YAAoD;QAClF,cAAc,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,WAAwB,EAAE,OAA0B,EAAE,QAAgB,EAAE,OAAwB;QACxH,SAAS,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,cAAc,CAAC,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB;IACT,MAAM,CAAC,gBAAgB;QAC5B,cAAc,CAAC,WAAW,EAAE,CAAC;QAC7B,cAAc,CAAC,WAAW,EAAE,CAAC;QAC7B,cAAc,CAAC,aAAa,EAAE,CAAC;QAC/B,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACvC,cAAc,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;;AAlWc,iCAAkB,GAAG,GAAG,CAAC;AACzB,0CAA2B,GAAG,CAAC,CAAC;AAChC,wBAAS,GAA+B,EAAE,CAAC;AAC3C,sCAAuB,GAA2B,IAAI,sBAAsB,EAAE,CAAC;AAE/E,oCAAqB,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAElE,kFAAkF;AAC3D,kCAAmB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAErE,6FAA6F;AACtE,qCAAsB,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAE3E,6GAA6G;AACtF,4CAA6B,GAAG,IAAI,2BAA2B,EAAE,CAAC;AAEzF;;;GAGG;AACoB,8CAA+B,GAAG,IAAI,6BAA6B,EAAE,CAAC;AAEtE,4CAA6B,GAAG,IAAI,2BAA2B,EAAE,CAAC;AAClE,8CAA+B,GAAG,IAAI,6BAA6B,EAAE,CAAC;AAEtE,uCAAwB,GAAG,IAAI,sBAAsB,EAAE,CAAC;AAE/E;;GAEG;AACoB,2CAA4B,GAAG,IAAI,0BAA0B,EAAE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as _ from \"lodash\";\r\nimport * as React from \"react\";\r\nimport { XAndY } from \"@itwin/core-geometry\";\r\nimport {\r\n ActivityMessageDetails, IModelApp, MessageBoxIconType, MessageBoxType, MessageBoxValue, OutputMessageAlert, OutputMessagePriority,\r\n OutputMessageType, ToolAssistanceInstructions, ToolTipOptions,\r\n} from \"@itwin/core-frontend\";\r\nimport { MessageSeverity, UiEvent } from \"@itwin/appui-abstract\";\r\nimport { MessageContainer } from \"@itwin/core-react\";\r\nimport { ConfigurableUiActionId } from \"../configurableui/state\";\r\nimport { ModalDialogManager } from \"../dialog/ModalDialogManager\";\r\nimport { StandardMessageBox } from \"../dialog/StandardMessageBox\";\r\nimport { ElementTooltip } from \"../feedback/ElementTooltip\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { MessageSpan } from \"./MessageSpan\";\r\nimport { PointerMessage } from \"./Pointer\";\r\nimport { NotifyMessageDetailsType, NotifyMessageType } from \"./ReactNotifyMessageDetails\";\r\nimport { StatusMessageManager } from \"./StatusMessageManager\";\r\n\r\nclass MessageBoxCallbacks {\r\n constructor(\r\n public readonly onFulfilled: (result: MessageBoxValue) => void,\r\n public readonly onRejected: (result: any) => void,\r\n ) { }\r\n\r\n public handleMessageBoxResult = (result: MessageBoxValue) => {\r\n this.onFulfilled(result);\r\n };\r\n}\r\n\r\n/** [[MessageAddedEvent]] arguments.\r\n * @public\r\n */\r\nexport interface MessageAddedEventArgs {\r\n /** Message details for the message added */\r\n message: NotifyMessageDetailsType;\r\n}\r\n\r\n/** Activity Message Event arguments.\r\n * @public\r\n */\r\nexport interface ActivityMessageEventArgs {\r\n /** Current message for the activity */\r\n message: NotifyMessageType;\r\n /** Current percentage for the activity */\r\n percentage: number;\r\n /** Message details set by calling NotificationManager.setupActivityMessage */\r\n details?: ActivityMessageDetails;\r\n /** Indicates whether the activity message popup is being restored */\r\n restored?: boolean;\r\n}\r\n\r\n/** Input Field Message Event arguments.\r\n * @public\r\n */\r\nexport interface InputFieldMessageEventArgs {\r\n /** Target HTML element for the Input Field message */\r\n target: Element;\r\n /** Message to be displayed near the input field */\r\n messageText: NotifyMessageType;\r\n /** Detailed message to be displayed near the input field */\r\n detailedMessage: NotifyMessageType;\r\n /** Priority of the input field message */\r\n priority: OutputMessagePriority;\r\n}\r\n\r\n/** Tool Assistance Changed event arguments.\r\n * @public\r\n */\r\nexport interface ToolAssistanceChangedEventArgs {\r\n /** Tool Assistance instructions for the active tool */\r\n instructions: ToolAssistanceInstructions | undefined;\r\n}\r\n\r\n/** Message Added Event class.\r\n * @public\r\n */\r\nexport class MessageAddedEvent extends UiEvent<MessageAddedEventArgs> { }\r\n\r\n/** Messages Updated Event class.\r\n * @public\r\n */\r\nexport class MessagesUpdatedEvent extends UiEvent<{}> { }\r\n\r\n/** Activity Message Added Event class.\r\n * @public\r\n */\r\nexport class ActivityMessageUpdatedEvent extends UiEvent<ActivityMessageEventArgs> { }\r\n\r\n/** Activity Message Cancelled Event class.\r\n * @public\r\n */\r\nexport class ActivityMessageCancelledEvent extends UiEvent<{}> { }\r\n\r\n/** Input Field Message Added Event class\r\n * @public\r\n */\r\nexport class InputFieldMessageAddedEvent extends UiEvent<InputFieldMessageEventArgs> { }\r\n\r\n/** Input Field Message Removed Event class.\r\n * @public\r\n */\r\nexport class InputFieldMessageRemovedEvent extends UiEvent<{}> { }\r\n\r\n/** Open Message Center Event class.\r\n * @public\r\n */\r\nexport class OpenMessageCenterEvent extends UiEvent<{}> { }\r\n\r\n/** Tool Assistance Changed event class\r\n * @public\r\n */\r\nexport class ToolAssistanceChangedEvent extends UiEvent<ToolAssistanceChangedEventArgs> { }\r\n\r\n/**\r\n * Keeps track of the current activity message, and updates whenever\r\n * setupActivityMessageDetails() or setupActivityMessageValues()\r\n * is called.\r\n * Used to display tracked progress in ActivityMessage.\r\n */\r\nclass OngoingActivityMessage {\r\n public message: NotifyMessageType = \"\";\r\n public percentage: number = 0;\r\n public details: ActivityMessageDetails = new ActivityMessageDetails(true, true, true);\r\n public isRestored: boolean = false;\r\n}\r\n\r\n/** The MessageManager class manages messages and prompts. It is used by the [[AppNotificationManager]] class.\r\n * @public\r\n */\r\nexport class MessageManager {\r\n private static _maxCachedMessages = 500;\r\n private static _maxDisplayedStickyMessages = 3;\r\n private static _messages: NotifyMessageDetailsType[] = [];\r\n private static _ongoingActivityMessage: OngoingActivityMessage = new OngoingActivityMessage();\r\n private static _lastMessage?: NotifyMessageDetailsType;\r\n private static _activeMessageManager = new StatusMessageManager();\r\n\r\n /** The MessageAddedEvent is fired when a message is added via outputMessage(). */\r\n public static readonly onMessageAddedEvent = new MessageAddedEvent();\r\n\r\n /** The MessagesUpdatedEvent is fired when a message is added or the messages are cleared. */\r\n public static readonly onMessagesUpdatedEvent = new MessagesUpdatedEvent();\r\n\r\n /** The ActivityMessageUpdatedEvent is fired when an Activity message updates via outputActivityMessage(). */\r\n public static readonly onActivityMessageUpdatedEvent = new ActivityMessageUpdatedEvent();\r\n\r\n /** The ActivityMessageCancelledEvent is fired when an Activity message is cancelled via\r\n * endActivityMessage(ActivityMessageEndReason.Cancelled) or\r\n * by the user clicking the 'Cancel' link.\r\n */\r\n public static readonly onActivityMessageCancelledEvent = new ActivityMessageCancelledEvent();\r\n\r\n public static readonly onInputFieldMessageAddedEvent = new InputFieldMessageAddedEvent();\r\n public static readonly onInputFieldMessageRemovedEvent = new InputFieldMessageRemovedEvent();\r\n\r\n public static readonly onOpenMessageCenterEvent = new OpenMessageCenterEvent();\r\n\r\n /** The ToolAssistanceChangedEvent is fired when a tool calls IModelApp.notifications.setToolAssistance().\r\n * @public\r\n */\r\n public static readonly onToolAssistanceChangedEvent = new ToolAssistanceChangedEvent();\r\n\r\n /** List of messages as NotifyMessageDetailsType. */\r\n public static get messages(): Readonly<NotifyMessageDetailsType[]> { return this._messages; }\r\n\r\n /** Manager of active messages. */\r\n public static get activeMessageManager(): StatusMessageManager { return this._activeMessageManager; }\r\n\r\n /** Clear the message list. */\r\n public static clearMessages(): void {\r\n this._messages.splice(0);\r\n this._activeMessageManager.initialize();\r\n\r\n this.onMessagesUpdatedEvent.emit({});\r\n this._lastMessage = undefined;\r\n }\r\n\r\n /** Update the message list. */\r\n public static updateMessages(): void {\r\n this.onMessagesUpdatedEvent.emit({});\r\n }\r\n\r\n /** Set the maximum number of cached message. */\r\n public static setMaxCachedMessages(max: number): void {\r\n this._maxCachedMessages = max;\r\n this.checkMaxCachedMessages();\r\n }\r\n\r\n /** The maximum number of displayed Sticky messages. */\r\n public static get maxDisplayedStickyMessages(): number { return this._maxDisplayedStickyMessages; }\r\n public static set maxDisplayedStickyMessages(max: number) { this._maxDisplayedStickyMessages = max; }\r\n\r\n /** Output a message and/or alert to the user.\r\n * @param message Details about the message to output.\r\n */\r\n public static outputMessage(message: NotifyMessageDetailsType): void {\r\n if (message.msgType === OutputMessageType.Pointer) {\r\n PointerMessage.showMessage(message);\r\n } else if (message.msgType === OutputMessageType.InputField) {\r\n if (message.inputField)\r\n MessageManager.displayInputFieldMessage(message.inputField, message.briefMessage, message.detailedMessage, message.priority);\r\n else\r\n message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for InputField without inputField\r\n } else if (message.msgType === OutputMessageType.Alert) {\r\n if (message.openAlert === OutputMessageAlert.Balloon)\r\n message.msgType = OutputMessageType.Sticky; // Note: Changing the message.msgType here for Balloon\r\n else\r\n MessageManager.showAlertMessageBox(message);\r\n }\r\n\r\n MessageManager.addMessage(message);\r\n }\r\n\r\n /** Output a message and/or alert to the user.\r\n * @param message Details about the message to output.\r\n */\r\n public static addMessage(message: NotifyMessageDetailsType): void {\r\n if (!_.isEqual(message, this._lastMessage)) {\r\n this.addToMessageCenter(message);\r\n this._lastMessage = message;\r\n }\r\n\r\n this._activeMessageManager.add(message);\r\n\r\n this.onMessageAddedEvent.emit({ message });\r\n }\r\n\r\n /** Add a message to the Message Center.\r\n * @param message Details about the message to output.\r\n */\r\n public static addToMessageCenter(message: NotifyMessageDetailsType): void {\r\n this._messages.push(message);\r\n this.onMessagesUpdatedEvent.emit({});\r\n this.checkMaxCachedMessages();\r\n }\r\n\r\n /** Checks number of messages against the maximum. */\r\n private static checkMaxCachedMessages(): void {\r\n if (this._messages.length > this._maxCachedMessages) {\r\n const numToErase = this._maxCachedMessages / 4;\r\n this._messages.splice(0, numToErase);\r\n this.onMessagesUpdatedEvent.emit({});\r\n }\r\n }\r\n\r\n /**\r\n * Sets details for setting up an Activity message.\r\n * @param details Details for setup of ActivityMessage\r\n * @returns true if details is valid and can be used to display ActivityMessage\r\n */\r\n public static setupActivityMessageDetails(details: ActivityMessageDetails): boolean {\r\n this._ongoingActivityMessage.details = details;\r\n this._ongoingActivityMessage.isRestored = details.showDialogInitially;\r\n return true;\r\n }\r\n\r\n /**\r\n * Output an activity message to the user.\r\n * @param message The message text.\r\n * @param percentComplete The percentage of completion.\r\n * @return true if the message was displayed, false if the message could not be displayed.\r\n */\r\n public static outputActivityMessage(message: NotifyMessageType, percentComplete: number): boolean {\r\n return MessageManager.setupActivityMessageValues(message, percentComplete);\r\n }\r\n\r\n /**\r\n * Sets values on _OngoingActivityMessage to be referenced when displaying\r\n * an ActivityMessage.\r\n * @param message Message of the process that ActivityMessage is tracking\r\n * @param percentage Progress made by activity in percentage\r\n * @param restored True if original ActivityMessage has been closed and\r\n * is now being restored from the status bar.\r\n * @returns true if details is valid and can be used to display ActivityMessage\r\n */\r\n public static setupActivityMessageValues(message: NotifyMessageType, percentage: number, restored?: boolean): boolean {\r\n this._ongoingActivityMessage.message = message;\r\n this._ongoingActivityMessage.percentage = percentage;\r\n\r\n this.onActivityMessageUpdatedEvent.emit({\r\n message,\r\n percentage,\r\n details: this._ongoingActivityMessage.details,\r\n restored: (restored !== undefined) ? restored : this._ongoingActivityMessage.isRestored,\r\n });\r\n\r\n this._ongoingActivityMessage.isRestored = false;\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * Dismisses current ActivityMessage and ends activity if canceled.\r\n * @param isCompleted True if the activity was completed, false if it was canceled\r\n * @returns True if both ActivityMessage and activity process are ended.\r\n */\r\n public static endActivityMessage(isCompleted: boolean): boolean {\r\n this.endActivityProcessing(isCompleted);\r\n this.onActivityMessageCancelledEvent.emit({});\r\n return true;\r\n }\r\n\r\n /**\r\n * Ends processing for activity according to message definition.\r\n * @param isCompleted True if the activity was completed, false if it was canceled\r\n */\r\n private static endActivityProcessing(isCompleted: boolean): void {\r\n if (isCompleted)\r\n this._ongoingActivityMessage.details.onActivityCompleted();\r\n else\r\n this._ongoingActivityMessage.details.onActivityCancelled();\r\n }\r\n\r\n /**\r\n * Displays an input field message near target element.\r\n * @param target The currently focused or recently focused element to place the\r\n * input field message near.\r\n * @param messageText Text to display in the message.\r\n * @param detailedMessage Optional detailed message text to display.\r\n * @param priority Optional message priority which controls icon to display.\r\n */\r\n public static displayInputFieldMessage(target: HTMLElement, messageText: NotifyMessageType, detailedMessage: NotifyMessageType = \"\", priority = OutputMessagePriority.Error) {\r\n this.onInputFieldMessageAddedEvent.emit({\r\n target,\r\n messageText,\r\n detailedMessage,\r\n priority,\r\n });\r\n }\r\n\r\n /**\r\n * Hides the currently displayed input field message.\r\n */\r\n public static hideInputFieldMessage() {\r\n this.onInputFieldMessageRemovedEvent.emit({});\r\n }\r\n\r\n /**\r\n * Opens message center.\r\n */\r\n public static openMessageCenter() {\r\n this.onOpenMessageCenterEvent.emit({});\r\n }\r\n\r\n /** Output a prompt to the user. A 'prompt' indicates an action the user should take to proceed. */\r\n public static outputPrompt(prompt: string): void {\r\n UiFramework.dispatchActionToStore(ConfigurableUiActionId.SetToolPrompt, prompt, true);\r\n }\r\n\r\n /** Gets an icon CSS class name based on a given NotifyMessageDetailsType. */\r\n public static getIconClassName(details: NotifyMessageDetailsType): string {\r\n const severity = MessageManager.getSeverity(details);\r\n const className = MessageContainer.getIconClassName(severity, false);\r\n const iconClassName = classnames(\"icon\", \"notifymessage-icon\", className);\r\n\r\n return iconClassName;\r\n }\r\n\r\n /** Gets a MessageSeverity based on a given NotifyMessageDetailsType. */\r\n public static getSeverity(details: NotifyMessageDetailsType): MessageSeverity {\r\n let severity = MessageSeverity.None;\r\n\r\n switch (details.priority) {\r\n case OutputMessagePriority.None:\r\n severity = MessageSeverity.None;\r\n break;\r\n case OutputMessagePriority.Info:\r\n severity = MessageSeverity.Information;\r\n break;\r\n case OutputMessagePriority.Warning:\r\n severity = MessageSeverity.Warning;\r\n break;\r\n case OutputMessagePriority.Error:\r\n severity = MessageSeverity.Error;\r\n break;\r\n case OutputMessagePriority.Fatal:\r\n severity = MessageSeverity.Fatal;\r\n break;\r\n }\r\n\r\n return severity;\r\n }\r\n\r\n /** Gets a MessageBoxIconType based on a given NotifyMessageDetailsType. */\r\n public static getIconType(details: NotifyMessageDetailsType): MessageBoxIconType {\r\n let iconType = MessageBoxIconType.NoSymbol;\r\n\r\n switch (details.priority) {\r\n case OutputMessagePriority.None:\r\n iconType = MessageBoxIconType.NoSymbol;\r\n break;\r\n case OutputMessagePriority.Info:\r\n iconType = MessageBoxIconType.Information;\r\n break;\r\n case OutputMessagePriority.Warning:\r\n iconType = MessageBoxIconType.Warning;\r\n break;\r\n case OutputMessagePriority.Error:\r\n iconType = MessageBoxIconType.Critical;\r\n break;\r\n case OutputMessagePriority.Fatal:\r\n iconType = MessageBoxIconType.Critical;\r\n break;\r\n }\r\n\r\n return iconType;\r\n }\r\n\r\n /** Output a MessageBox and wait for response from the user.\r\n * @param mbType The MessageBox type.\r\n * @param message The message to display.\r\n * @param icon The MessageBox icon type.\r\n * @return the response from the user.\r\n */\r\n public static async openMessageBox(mbType: MessageBoxType, message: NotifyMessageType, icon: MessageBoxIconType): Promise<MessageBoxValue> {\r\n const title = UiFramework.translate(\"general.alert\");\r\n\r\n return new Promise((onFulfilled: (result: MessageBoxValue) => void, onRejected: (reason: any) => void) => {\r\n const messageBoxCallbacks = new MessageBoxCallbacks(onFulfilled, onRejected);\r\n const messageElement = <MessageSpan message={message} />;\r\n ModalDialogManager.openDialog(this.standardMessageBox(mbType, icon, title, messageElement, messageBoxCallbacks));\r\n });\r\n }\r\n\r\n /** @internal */\r\n public static showAlertMessageBox(messageDetails: NotifyMessageDetailsType): void {\r\n const title = UiFramework.translate(\"general.alert\");\r\n const iconType = this.getIconType(messageDetails);\r\n const content = (\r\n <>\r\n <MessageSpan message={messageDetails.briefMessage} />\r\n {\r\n messageDetails.detailedMessage && (\r\n <p>\r\n <MessageSpan message={messageDetails.detailedMessage} />\r\n </p>\r\n )\r\n }\r\n </>\r\n );\r\n ModalDialogManager.openDialog(this.standardMessageBox(MessageBoxType.Ok, iconType, title, content));\r\n }\r\n\r\n private static standardMessageBox(mbType: MessageBoxType, iconType: MessageBoxIconType, title: string, messageElement: React.ReactNode, callbacks?: MessageBoxCallbacks): React.ReactNode {\r\n const onResult = (callbacks !== undefined) ? callbacks.handleMessageBoxResult : undefined;\r\n return (\r\n <StandardMessageBox\r\n opened={true}\r\n messageBoxType={mbType}\r\n iconType={iconType}\r\n title={title}\r\n onResult={onResult}\r\n >\r\n {messageElement}\r\n </StandardMessageBox>\r\n );\r\n }\r\n\r\n /** Setup tool assistance instructions for a tool. The instructions include the main instruction, which includes the current prompt.\r\n * @param instructions The tool assistance instructions.\r\n * @public\r\n */\r\n public static setToolAssistance(instructions: ToolAssistanceInstructions | undefined) {\r\n MessageManager.onToolAssistanceChangedEvent.emit({ instructions });\r\n }\r\n\r\n /** Show a tooltip window. Saves tooltip location for AccuSnap to test if cursor has moved far enough away to close tooltip.\r\n * @param htmlElement The HTMLElement that anchors the tooltip.\r\n * @param message What to display inside the tooltip.\r\n * @param location An optional location, relative to the origin of htmlElement, for the tooltip. If undefined, center of `htmlElement`.\r\n * @param options Options that supply additional information about how the tooltip should function.\r\n */\r\n public static openToolTip(htmlElement: HTMLElement, message: NotifyMessageType, location?: XAndY, options?: ToolTipOptions): void {\r\n IModelApp.notifications.toolTipLocation.setFrom(location);\r\n ElementTooltip.showTooltip(htmlElement, message, location, options);\r\n }\r\n\r\n /** @internal */\r\n public static closeAllMessages(): void {\r\n ElementTooltip.hideTooltip();\r\n PointerMessage.hideMessage();\r\n MessageManager.clearMessages();\r\n MessageManager.hideInputFieldMessage();\r\n MessageManager.endActivityMessage(false);\r\n }\r\n\r\n}\r\n"]}
@@ -5,8 +5,8 @@ import "./Pointer.scss";
5
5
  import * as React from "react";
6
6
  import { XAndY } from "@itwin/core-geometry";
7
7
  import { OutputMessagePriority } from "@itwin/core-frontend";
8
- import { PointProps, RelativePosition } from "@itwin/appui-abstract";
9
- import { CommonProps, UiEvent } from "@itwin/core-react";
8
+ import { PointProps, RelativePosition, UiEvent } from "@itwin/appui-abstract";
9
+ import { CommonProps } from "@itwin/core-react";
10
10
  import { NotifyMessageDetailsType, NotifyMessageType } from "./ReactNotifyMessageDetails";
11
11
  /** Properties of [[PointerMessage]] component.
12
12
  * @public