@itwin/appui-react 3.0.0-dev.147 → 3.0.0-dev.152

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 (251) 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 +4 -3
  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/content/split-pane/Pane.d.ts +21 -0
  25. package/lib/cjs/appui-react/content/split-pane/Pane.d.ts.map +1 -0
  26. package/lib/cjs/appui-react/content/split-pane/Pane.js +43 -0
  27. package/lib/cjs/appui-react/content/split-pane/Pane.js.map +1 -0
  28. package/lib/cjs/appui-react/content/split-pane/Resizer.d.ts +23 -0
  29. package/lib/cjs/appui-react/content/split-pane/Resizer.d.ts.map +1 -0
  30. package/lib/cjs/appui-react/content/split-pane/Resizer.js +39 -0
  31. package/lib/cjs/appui-react/content/split-pane/Resizer.js.map +1 -0
  32. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts +70 -0
  33. package/lib/cjs/appui-react/content/split-pane/SplitPane.d.ts.map +1 -0
  34. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +243 -0
  35. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -0
  36. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts +1 -2
  37. package/lib/cjs/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  38. package/lib/cjs/appui-react/cursor/CursorInformation.js +1 -1
  39. package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
  40. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  41. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  42. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  43. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  44. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +3 -3
  45. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  46. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  47. package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  48. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -2
  49. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  50. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts +2 -2
  51. package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  52. package/lib/cjs/appui-react/feedback/ElementTooltip.js +2 -1
  53. package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
  54. package/lib/cjs/appui-react/frontstage/Frontstage.d.ts.map +1 -1
  55. package/lib/cjs/appui-react/frontstage/Frontstage.js +2 -0
  56. package/lib/cjs/appui-react/frontstage/Frontstage.js.map +1 -1
  57. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  58. package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  59. package/lib/cjs/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  60. package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
  61. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  62. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  63. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  64. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  65. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -1
  66. package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  67. package/lib/cjs/appui-react/messages/MessageManager.d.ts +1 -2
  68. package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
  69. package/lib/cjs/appui-react/messages/MessageManager.js +8 -8
  70. package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
  71. package/lib/cjs/appui-react/messages/Pointer.d.ts +2 -2
  72. package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
  73. package/lib/cjs/appui-react/messages/Pointer.js +2 -2
  74. package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
  75. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  76. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  77. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js +2 -2
  78. package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  79. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  80. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  81. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  82. package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  83. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts +1 -1
  84. package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  85. package/lib/cjs/appui-react/pickers/ViewSelector.js +3 -3
  86. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  87. package/lib/cjs/appui-react/popup/PopupManager.d.ts +2 -2
  88. package/lib/cjs/appui-react/popup/PopupManager.d.ts.map +1 -1
  89. package/lib/cjs/appui-react/popup/PopupManager.js +1 -1
  90. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  91. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  92. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  93. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts +2 -2
  94. package/lib/cjs/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  95. package/lib/cjs/appui-react/syncui/BooleanListener.js +2 -1
  96. package/lib/cjs/appui-react/syncui/BooleanListener.js.map +1 -1
  97. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -16
  98. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  99. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +28 -101
  100. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  101. package/lib/cjs/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  102. package/lib/cjs/appui-react/toolbar/ActionItemButton.js.map +1 -1
  103. package/lib/cjs/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  104. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  105. package/lib/cjs/appui-react/toolbar/ToolButton.js.map +1 -1
  106. package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  107. package/lib/cjs/appui-react/toolbar/Toolbar.js +1 -1
  108. package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
  109. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  110. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  111. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  112. package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  113. package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
  114. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +1 -2
  115. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  116. package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -2
  117. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  118. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  119. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  120. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js +3 -2
  121. package/lib/cjs/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  122. package/lib/cjs/appui-react.d.ts +3 -2
  123. package/lib/cjs/appui-react.d.ts.map +1 -1
  124. package/lib/cjs/appui-react.js +3 -2
  125. package/lib/cjs/appui-react.js.map +1 -1
  126. package/lib/esm/appui-react/UiFramework.d.ts +2 -1
  127. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  128. package/lib/esm/appui-react/UiFramework.js +2 -2
  129. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  130. package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
  131. package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
  132. package/lib/esm/appui-react/backstage/CommandLaunch.d.ts.map +1 -1
  133. package/lib/esm/appui-react/backstage/CommandLaunch.js.map +1 -1
  134. package/lib/esm/appui-react/childwindow/ChildWindowManager.d.ts +1 -1
  135. package/lib/esm/appui-react/childwindow/ChildWindowManager.js +1 -1
  136. package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  137. package/lib/esm/appui-react/content/ContentControl.d.ts +1 -1
  138. package/lib/esm/appui-react/content/ContentControl.d.ts.map +1 -1
  139. package/lib/esm/appui-react/content/ContentControl.js +1 -1
  140. package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
  141. package/lib/esm/appui-react/content/ContentLayout.d.ts +2 -2
  142. package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
  143. package/lib/esm/appui-react/content/ContentLayout.js +3 -2
  144. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  145. package/lib/esm/appui-react/content/ContentViewManager.d.ts +1 -1
  146. package/lib/esm/appui-react/content/ContentViewManager.d.ts.map +1 -1
  147. package/lib/esm/appui-react/content/ContentViewManager.js +1 -1
  148. package/lib/esm/appui-react/content/ContentViewManager.js.map +1 -1
  149. package/lib/esm/appui-react/content/split-pane/Pane.d.ts +21 -0
  150. package/lib/esm/appui-react/content/split-pane/Pane.d.ts.map +1 -0
  151. package/lib/esm/appui-react/content/split-pane/Pane.js +39 -0
  152. package/lib/esm/appui-react/content/split-pane/Pane.js.map +1 -0
  153. package/lib/esm/appui-react/content/split-pane/Resizer.d.ts +23 -0
  154. package/lib/esm/appui-react/content/split-pane/Resizer.d.ts.map +1 -0
  155. package/lib/esm/appui-react/content/split-pane/Resizer.js +35 -0
  156. package/lib/esm/appui-react/content/split-pane/Resizer.js.map +1 -0
  157. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts +70 -0
  158. package/lib/esm/appui-react/content/split-pane/SplitPane.d.ts.map +1 -0
  159. package/lib/esm/appui-react/content/split-pane/SplitPane.js +239 -0
  160. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -0
  161. package/lib/esm/appui-react/cursor/CursorInformation.d.ts +1 -2
  162. package/lib/esm/appui-react/cursor/CursorInformation.d.ts.map +1 -1
  163. package/lib/esm/appui-react/cursor/CursorInformation.js +2 -2
  164. package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
  165. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
  166. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  167. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +2 -2
  168. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
  169. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +2 -2
  170. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  171. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts +1 -1
  172. package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
  173. package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -1
  174. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  175. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts +2 -2
  176. package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
  177. package/lib/esm/appui-react/feedback/ElementTooltip.js +2 -1
  178. package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
  179. package/lib/esm/appui-react/frontstage/Frontstage.d.ts.map +1 -1
  180. package/lib/esm/appui-react/frontstage/Frontstage.js +2 -0
  181. package/lib/esm/appui-react/frontstage/Frontstage.js.map +1 -1
  182. package/lib/esm/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
  183. package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
  184. package/lib/esm/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
  185. package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
  186. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
  187. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  188. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts +2 -1
  189. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
  190. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +2 -2
  191. package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  192. package/lib/esm/appui-react/messages/MessageManager.d.ts +1 -2
  193. package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
  194. package/lib/esm/appui-react/messages/MessageManager.js +2 -2
  195. package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
  196. package/lib/esm/appui-react/messages/Pointer.d.ts +2 -2
  197. package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
  198. package/lib/esm/appui-react/messages/Pointer.js +2 -2
  199. package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
  200. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts +1 -1
  201. package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
  202. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js +1 -1
  203. package/lib/esm/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  204. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts +2 -1
  205. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
  206. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +2 -1
  207. package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  208. package/lib/esm/appui-react/pickers/ViewSelector.d.ts +1 -1
  209. package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
  210. package/lib/esm/appui-react/pickers/ViewSelector.js +1 -1
  211. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  212. package/lib/esm/appui-react/popup/PopupManager.d.ts +2 -2
  213. package/lib/esm/appui-react/popup/PopupManager.d.ts.map +1 -1
  214. package/lib/esm/appui-react/popup/PopupManager.js +2 -2
  215. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  216. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  217. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  218. package/lib/esm/appui-react/syncui/BooleanListener.d.ts +2 -2
  219. package/lib/esm/appui-react/syncui/BooleanListener.d.ts.map +1 -1
  220. package/lib/esm/appui-react/syncui/BooleanListener.js +2 -1
  221. package/lib/esm/appui-react/syncui/BooleanListener.js.map +1 -1
  222. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -16
  223. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  224. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +27 -99
  225. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  226. package/lib/esm/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  227. package/lib/esm/appui-react/toolbar/ActionItemButton.js.map +1 -1
  228. package/lib/esm/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  229. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  230. package/lib/esm/appui-react/toolbar/ToolButton.js.map +1 -1
  231. package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
  232. package/lib/esm/appui-react/toolbar/Toolbar.js +1 -1
  233. package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
  234. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  235. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  236. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  237. package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
  238. package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
  239. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +1 -2
  240. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  241. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -2
  242. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  243. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts +1 -2
  244. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.d.ts.map +1 -1
  245. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js +2 -1
  246. package/lib/esm/appui-react/zones/toolsettings/ToolSettingsManager.js.map +1 -1
  247. package/lib/esm/appui-react.d.ts +3 -2
  248. package/lib/esm/appui-react.d.ts.map +1 -1
  249. package/lib/esm/appui-react.js +3 -2
  250. package/lib/esm/appui-react.js.map +1 -1
  251. package/package.json +34 -35
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBarComposer.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 StatusBar\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport {\r\n AbstractStatusBarActionItem, AbstractStatusBarLabelItem, CommonStatusBarItem, ConditionalBooleanValue, ConditionalStringValue,\r\n isAbstractStatusBarActionItem, isAbstractStatusBarLabelItem, StatusBarItemsManager, StatusBarLabelSide, StatusBarSection,\r\n} from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Icon, useRefs, useResizeObserver } from \"@itwin/core-react\";\r\nimport { eqlOverflown, FooterIndicator } from \"@itwin/appui-layout-react\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { Indicator } from \"../statusfields/Indicator\";\r\nimport { StatusBarOverflow } from \"./Overflow\";\r\nimport { StatusBarOverflowPanel } from \"./OverflowPanel\";\r\nimport { StatusBarCenterSection, StatusBarContext, StatusBarLeftSection, StatusBarRightSection, StatusBarSpaceBetween } from \"./StatusBar\";\r\nimport { isStatusBarItem } from \"./StatusBarItem\";\r\nimport { useDefaultStatusBarItems } from \"./useDefaultStatusBarItems\";\r\nimport { useUiItemsProviderStatusBarItems } from \"./useUiItemsProviderStatusBarItems\";\r\n\r\n/** Private function to generate a value that will allow the proper order to be maintained when items are placed in overflow panel */\r\nfunction getCombinedSectionItemPriority(item: CommonStatusBarItem) {\r\n let sectionValue = 0;\r\n if (item.section === StatusBarSection.Center)\r\n sectionValue = 100000;\r\n else if (item.section === StatusBarSection.Context)\r\n sectionValue = 200000;\r\n else if (item.section === StatusBarSection.Right)\r\n sectionValue = 300000;\r\n return sectionValue + item.itemPriority;\r\n}\r\n\r\ninterface DockedStatusBarEntryContextArg {\r\n readonly isOverflown: boolean;\r\n readonly onResize: (w: number) => void;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nconst DockedStatusBarEntryContext = React.createContext<DockedStatusBarEntryContextArg>(null!);\r\nDockedStatusBarEntryContext.displayName = \"nz:DockedStatusBarEntryContext\";\r\n\r\n/** @internal */\r\nexport function useStatusBarEntry() {\r\n return React.useContext(DockedStatusBarEntryContext);\r\n}\r\n\r\n/** Properties of [[DockedStatusBarItem]] component.\r\n * @internal future\r\n */\r\nexport interface StatusBarItemProps extends CommonProps {\r\n /** Tool setting content. */\r\n children?: React.ReactNode;\r\n}\r\n\r\n/** Used in [[StatusBarComposer]] component to display a statusbar item.\r\n * @internal future\r\n */\r\nexport function DockedStatusBarItem(props: StatusBarItemProps) {\r\n const { onResize } = useStatusBarEntry();\r\n const ref = useResizeObserver<HTMLDivElement>(onResize);\r\n const className = classnames(\r\n \"uifw-statusbar-item-container\",\r\n props.className,\r\n );\r\n return (\r\n <div\r\n data-item-id={props.itemId}\r\n data-item-type=\"status-bar-item\"\r\n className={className}\r\n ref={ref}\r\n style={props.style}\r\n >\r\n {props.children}\r\n </div>\r\n );\r\n}\r\n\r\ninterface DockedStatusBarEntryProps {\r\n children?: React.ReactNode;\r\n entryKey: string;\r\n getOnResize: (key: string) => (w: number) => void;\r\n}\r\n\r\n/** Wrapper for status bar entries so their size can be used to determine if the status bar container can display them or if they will need to be placed in an overflow panel. */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention, no-shadow\r\nconst DockedStatusBarEntry = React.memo<DockedStatusBarEntryProps>(function DockedStatusbarEntry({ children, entryKey, getOnResize }) {\r\n const onResize = React.useMemo(() => getOnResize(entryKey), [getOnResize, entryKey]);\r\n const entry = React.useMemo<DockedStatusBarEntryContextArg>(() => ({\r\n isOverflown: false,\r\n onResize,\r\n }), [onResize]);\r\n return (\r\n <DockedStatusBarEntryContext.Provider value={entry}>\r\n {children}\r\n </DockedStatusBarEntryContext.Provider>\r\n );\r\n});\r\n\r\n/** Private function to set up sync event monitoring of statusbar items */\r\nfunction useStatusBarItemSyncEffect(itemsManager: StatusBarItemsManager, syncIdsOfInterest: string[]) {\r\n React.useEffect(() => {\r\n const handleSyncUiEvent = (args: SyncUiEventArgs) => {\r\n if (0 === syncIdsOfInterest.length)\r\n return;\r\n\r\n // istanbul ignore else\r\n if (syncIdsOfInterest.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) {\r\n // process each item that has interest\r\n itemsManager.refreshAffectedItems(args.eventIds);\r\n }\r\n };\r\n\r\n // Note: that items with conditions have condition run when loaded into the items manager\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n return () => {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\r\n };\r\n }, [itemsManager, itemsManager.items, syncIdsOfInterest]);\r\n}\r\n\r\n/** function to produce a StatusBarItem component from an AbstractStatusBarLabelItem */\r\nfunction generateActionStatusLabelItem(item: AbstractStatusBarLabelItem, isInFooterMode: boolean): React.ReactNode {\r\n const iconPaddingClass = item.labelSide === StatusBarLabelSide.Left ? \"nz-icon-padding-right\" : \"nz-icon-padding-left\";\r\n return (<FooterIndicator\r\n isInFooterMode={isInFooterMode}\r\n >\r\n {item.icon && <Icon iconSpec={item.icon} />}\r\n {item.label && <span className={iconPaddingClass}>{ConditionalStringValue.getValue(item.label)}</span>}\r\n </FooterIndicator>\r\n );\r\n}\r\n\r\n/** function to produce a StatusBarItem component from an AbstractStatusBarActionItem */\r\nfunction generateActionStatusBarItem(item: AbstractStatusBarActionItem, isInFooterMode: boolean): React.ReactNode {\r\n return <Indicator toolTip={ConditionalStringValue.getValue(item.tooltip)} opened={false} onClick={item.execute} iconSpec={item.icon}\r\n isInFooterMode={isInFooterMode} />;\r\n}\r\n\r\n/** local function to combine items from Stage and from Extensions */\r\nfunction combineItems(stageItems: ReadonlyArray<CommonStatusBarItem>, addonItems: ReadonlyArray<CommonStatusBarItem>) {\r\n const items: CommonStatusBarItem[] = [];\r\n if (stageItems.length) {\r\n // Walk through each and ensure no duplicate ids are added.\r\n stageItems.forEach((srcItem) => {\r\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\r\n items.push(srcItem);\r\n }\r\n });\r\n }\r\n if (addonItems.length) {\r\n // Walk through each and ensure no duplicate ids are added.\r\n addonItems.forEach((srcItem) => {\r\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\r\n items.push(srcItem);\r\n }\r\n });\r\n }\r\n return items;\r\n}\r\n\r\n/** local function to ensure a width value is defined for a status bar entries. */\r\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\r\n for (const [, val] of map) {\r\n // istanbul ignore next\r\n if (val === undefined)\r\n return undefined;\r\n }\r\n return map as Map<string, T>;\r\n}\r\n\r\n/** Returns a subset of docked entry keys that exceed given width and should be placed in overflow panel. */\r\nfunction getItemToPlaceInOverflow(width: number, docked: ReadonlyArray<readonly [string, number]>, overflowWidth: number) {\r\n let settingsWidth = 0;\r\n\r\n let i = 0;\r\n for (; i < docked.length; i++) {\r\n const w = docked[i][1];\r\n const newSettingsWidth = settingsWidth + w;\r\n if (newSettingsWidth > width) {\r\n settingsWidth += overflowWidth;\r\n break;\r\n }\r\n settingsWidth = newSettingsWidth;\r\n }\r\n\r\n let j = i;\r\n for (; j > 0; j--) {\r\n if (settingsWidth <= width)\r\n break;\r\n const w = docked[j][1];\r\n settingsWidth -= w;\r\n }\r\n\r\n const overflowItems = new Array<string>();\r\n for (i = j; i < docked.length; i++) {\r\n overflowItems.push(docked[i][0]);\r\n }\r\n return overflowItems;\r\n}\r\n\r\nfunction isItemInOverflow(id: string, overflowItemIds: ReadonlyArray<string> | undefined) {\r\n if (!overflowItemIds || 0 === overflowItemIds.length)\r\n return false;\r\n return !!overflowItemIds.find((value) => value === id);\r\n}\r\n\r\n/** Properties for the [[StatusBarComposer]] React components\r\n * @public\r\n */\r\nexport interface StatusBarComposerProps extends CommonProps {\r\n /** Status Bar items */\r\n items: CommonStatusBarItem[];\r\n\r\n /** CSS class name override for the overall Status Bar */\r\n mainClassName?: string;\r\n /** CSS class name override for the left section */\r\n leftClassName?: string;\r\n /** CSS class name override for the center section */\r\n centerClassName?: string;\r\n /** CSS class name override for the right section */\r\n rightClassName?: string;\r\n}\r\n\r\n/** Component to load components into the [[StatusBar]].\r\n * @public\r\n */\r\nexport function StatusBarComposer(props: StatusBarComposerProps) {\r\n const { className, style, items, mainClassName, leftClassName, centerClassName, rightClassName } = props;\r\n const [defaultItemsManager, setDefaultItemsManager] = React.useState(() => new StatusBarItemsManager(items));\r\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\r\n const containerWidth = React.useRef<number | undefined>(undefined);\r\n\r\n const isInitialMount = React.useRef(true);\r\n React.useEffect(() => {\r\n if (isInitialMount.current)\r\n isInitialMount.current = false;\r\n else {\r\n setDefaultItemsManager(new StatusBarItemsManager(items));\r\n }\r\n }, [items]);\r\n const defaultItems = useDefaultStatusBarItems(defaultItemsManager);\r\n const syncIdsOfInterest = React.useMemo(() => StatusBarItemsManager.getSyncIdsOfInterest(defaultItems), [defaultItems]);\r\n useStatusBarItemSyncEffect(defaultItemsManager, syncIdsOfInterest);\r\n\r\n const statusBarContext = React.useContext(StatusBarContext);\r\n const [addonItemsManager] = React.useState(() => new StatusBarItemsManager());\r\n const addonItems = useUiItemsProviderStatusBarItems(addonItemsManager);\r\n const addonSyncIdsOfInterest = React.useMemo(() => StatusBarItemsManager.getSyncIdsOfInterest(addonItems), [addonItems]);\r\n useStatusBarItemSyncEffect(addonItemsManager, addonSyncIdsOfInterest);\r\n\r\n const statusBarItems = React.useMemo(() => combineItems(defaultItems, addonItems), [defaultItems, addonItems]);\r\n const entryWidths = React.useRef(new Map<string, number | undefined>());\r\n const overflowWidth = React.useRef<number | undefined>(undefined);\r\n const [overflown, setOverflown] = React.useState<ReadonlyArray<string>>();\r\n\r\n const calculateOverflow = React.useCallback(() => {\r\n const widths = verifiedMapEntries(entryWidths.current);\r\n if (containerWidth.current === undefined ||\r\n widths === undefined ||\r\n overflowWidth.current === undefined\r\n ) {\r\n setOverflown(new Array<string>());\r\n return;\r\n }\r\n\r\n // Calculate overflow.\r\n const newOverflown = getItemToPlaceInOverflow(containerWidth.current, [...widths.entries()], overflowWidth.current);\r\n if (!eqlOverflown(overflown, newOverflown)) {\r\n setOverflown(newOverflown);\r\n // istanbul ignore next\r\n if (0 === newOverflown.length && isOverflowPanelOpen)\r\n setIsOverflowPanelOpen(false);\r\n }\r\n }, [isOverflowPanelOpen, overflown]);\r\n\r\n const handleOverflowResize = React.useCallback((w: number) => {\r\n const calculate = overflowWidth.current !== w;\r\n overflowWidth.current = w;\r\n calculate && calculateOverflow();\r\n }, [calculateOverflow]);\r\n\r\n const handleEntryResize = React.useCallback((key: string) => (w: number) => {\r\n const oldW = entryWidths.current.get(key);\r\n if ((undefined === oldW) || Math.abs(oldW - w) > 2) {\r\n entryWidths.current.set(key, w);\r\n calculateOverflow();\r\n }\r\n }, [calculateOverflow]);\r\n\r\n /** generate a wrapped status bar entry that will report its size. */\r\n const getComponent = React.useCallback((item: CommonStatusBarItem, key: string): React.ReactNode => {\r\n return (\r\n <DockedStatusBarEntry\r\n key={key}\r\n entryKey={key}\r\n getOnResize={handleEntryResize}\r\n >\r\n <DockedStatusBarItem key={key} itemId={item.id} >\r\n {isStatusBarItem(item) && item.reactNode}\r\n {isAbstractStatusBarActionItem(item) && generateActionStatusBarItem(item, statusBarContext.isInFooterMode)}\r\n {isAbstractStatusBarLabelItem(item) && generateActionStatusLabelItem(item, statusBarContext.isInFooterMode)}\r\n </DockedStatusBarItem>\r\n </DockedStatusBarEntry>\r\n );\r\n }, [statusBarContext.isInFooterMode, handleEntryResize]);\r\n\r\n const getSectionItems = React.useCallback((section: StatusBarSection): React.ReactNode[] => {\r\n const sectionItems = statusBarItems\r\n .filter((item) => item.section as number === section && !isItemInOverflow(item.id, overflown) && !ConditionalBooleanValue.getValue(item.isHidden))\r\n .sort((a, b) => a.itemPriority - b.itemPriority);\r\n\r\n return sectionItems.map((sectionItem) => (\r\n <React.Fragment key={sectionItem.id}>\r\n {getComponent(sectionItem, sectionItem.id)}\r\n </React.Fragment>\r\n ));\r\n }, [statusBarItems, overflown, getComponent]);\r\n\r\n const getOverflowItems = React.useCallback((): React.ReactNode[] => {\r\n const itemsInOverflow = statusBarItems\r\n .filter((item) => isItemInOverflow(item.id, overflown) && !ConditionalBooleanValue.getValue(item.isHidden))\r\n .sort((a, b) => getCombinedSectionItemPriority(a) - getCombinedSectionItemPriority(b)).reverse();\r\n\r\n return itemsInOverflow.map((item) => (\r\n <React.Fragment key={item.id}>\r\n {getComponent(item, item.id)}\r\n </React.Fragment>\r\n ));\r\n }, [statusBarItems, overflown, getComponent]);\r\n\r\n const handleContainerResize = React.useCallback((w: number) => {\r\n if ((undefined === containerWidth.current) || Math.abs(containerWidth.current - w) > 2) {\r\n containerWidth.current = w;\r\n calculateOverflow();\r\n }\r\n }, [calculateOverflow]);\r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const targetRef = React.useRef<HTMLDivElement>(null);\r\n const resizeObserverRef = useResizeObserver(handleContainerResize);\r\n // allow both the containerRef and the resize observer function that takes a ref to be processed when the ref is set.\r\n const refs = useRefs(containerRef, resizeObserverRef);\r\n\r\n const onOverflowClick = React.useCallback(() => {\r\n setIsOverflowPanelOpen((prev) => !prev);\r\n }, []);\r\n // istanbul ignore next\r\n const handleOnClose = React.useCallback(() => {\r\n setIsOverflowPanelOpen(false);\r\n }, []);\r\n const leftItems = React.useMemo(() => getSectionItems(StatusBarSection.Left), [getSectionItems]);\r\n const centerItems = React.useMemo(() => getSectionItems(StatusBarSection.Center), [getSectionItems]);\r\n const rightItems = React.useMemo(() => getSectionItems(StatusBarSection.Right), [getSectionItems]);\r\n const contextItems = React.useMemo(() => getSectionItems(StatusBarSection.Context), [getSectionItems]);\r\n const overflowItems = React.useMemo(() => getOverflowItems(), [getOverflowItems]);\r\n\r\n const containerClassName = classnames(\r\n \"uifw-statusbar-docked\",\r\n className,\r\n );\r\n\r\n return (\r\n <div\r\n className={containerClassName}\r\n ref={refs}\r\n style={style}\r\n role=\"presentation\"\r\n >\r\n <StatusBarSpaceBetween className={mainClassName}>\r\n <StatusBarLeftSection className={leftClassName}>\r\n {leftItems}\r\n </StatusBarLeftSection>\r\n <StatusBarCenterSection className={centerClassName}>\r\n {centerItems}\r\n {contextItems}\r\n </StatusBarCenterSection>\r\n <StatusBarRightSection className={rightClassName}>\r\n {rightItems}\r\n {(!overflown || overflown.length > 0) && (\r\n <>\r\n <StatusBarOverflow\r\n onClick={onOverflowClick}\r\n onResize={handleOverflowResize}\r\n ref={targetRef}\r\n />\r\n {overflowItems.length > 0 && isOverflowPanelOpen && targetRef.current &&\r\n <StatusBarOverflowPanel\r\n onClose={handleOnClose}\r\n open={true}\r\n target={targetRef.current}\r\n >\r\n <div className=\"uifw-statusbar-overflow-items-container\" data-testid=\"uifw-statusbar-overflow-items-container\">\r\n {overflowItems.map((overflowEntry) => overflowEntry)}\r\n </div>\r\n </StatusBarOverflowPanel>\r\n }\r\n </>\r\n )}\r\n\r\n </StatusBarRightSection>\r\n </StatusBarSpaceBetween>\r\n </div>\r\n );\r\n}\r\n"]}
1
+ {"version":3,"file":"StatusBarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBarComposer.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,2CAAoC;AACpC,+BAA+B;AAC/B,0DAG+B;AAC/B,kDAAkF;AAClF,kEAA0E;AAC1E,2EAAwE;AACxE,yDAAsD;AACtD,yCAA+C;AAC/C,mDAAyD;AACzD,2CAA2I;AAC3I,mDAAkD;AAClD,yEAAsE;AACtE,yFAAsF;AAEtF,sIAAsI;AACtI,SAAS,8BAA8B,CAAC,IAAyB;IAC/D,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,IAAI,CAAC,OAAO,KAAK,iCAAgB,CAAC,MAAM;QAC1C,YAAY,GAAG,MAAM,CAAC;SACnB,IAAI,IAAI,CAAC,OAAO,KAAK,iCAAgB,CAAC,OAAO;QAChD,YAAY,GAAG,MAAM,CAAC;SACnB,IAAI,IAAI,CAAC,OAAO,KAAK,iCAAgB,CAAC,KAAK;QAC9C,YAAY,GAAG,MAAM,CAAC;IACxB,OAAO,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1C,CAAC;AAOD,gEAAgE;AAChE,MAAM,2BAA2B,GAAG,KAAK,CAAC,aAAa,CAAiC,IAAK,CAAC,CAAC;AAC/F,2BAA2B,CAAC,WAAW,GAAG,gCAAgC,CAAC;AAE3E,gBAAgB;AAChB,SAAgB,iBAAiB;IAC/B,OAAO,KAAK,CAAC,UAAU,CAAC,2BAA2B,CAAC,CAAC;AACvD,CAAC;AAFD,8CAEC;AAUD;;GAEG;AACH,SAAgB,mBAAmB,CAAC,KAAyB;IAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACzC,MAAM,GAAG,GAAG,IAAA,8BAAiB,EAAiB,QAAQ,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,IAAA,oBAAU,EAC1B,+BAA+B,EAC/B,KAAK,CAAC,SAAS,CAChB,CAAC;IACF,OAAO,CACL,6CACgB,KAAK,CAAC,MAAM,oBACX,iBAAiB,EAChC,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,CAAC,KAAK,IAEjB,KAAK,CAAC,QAAQ,CACX,CACP,CAAC;AACJ,CAAC;AAlBD,kDAkBC;AAQD,iLAAiL;AACjL,2EAA2E;AAC3E,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAA4B,SAAS,oBAAoB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE;IAClI,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAiC,GAAG,EAAE,CAAC,CAAC;QACjE,WAAW,EAAE,KAAK;QAClB,QAAQ;KACT,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChB,OAAO,CACL,oBAAC,2BAA2B,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAC/C,QAAQ,CAC4B,CACxC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,0EAA0E;AAC1E,SAAS,0BAA0B,CAAC,YAAmC,EAAE,iBAA2B;IAClG,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAE,EAAE;YAClD,IAAI,CAAC,KAAK,iBAAiB,CAAC,MAAM;gBAChC,OAAO;YAET,uBAAuB;YACvB,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;gBAC9F,sCAAsC;gBACtC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAClD;QACH,CAAC,CAAC;QAEF,yFAAyF;QACzF,6CAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACnE,OAAO,GAAG,EAAE;YACV,6CAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,uFAAuF;AACvF,SAAS,6BAA6B,CAAC,IAAgC,EAAE,cAAuB;IAC9F,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,KAAK,mCAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,sBAAsB,CAAC;IACvH,OAAO,CAAC,oBAAC,oCAAe,IACtB,cAAc,EAAE,cAAc;QAE7B,IAAI,CAAC,IAAI,IAAI,oBAAC,iBAAI,IAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,GAAI;QAC1C,IAAI,CAAC,KAAK,IAAI,8BAAM,SAAS,EAAE,gBAAgB,IAAG,uCAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAQ,CACtF,CACjB,CAAC;AACJ,CAAC;AAED,wFAAwF;AACxF,SAAS,2BAA2B,CAAC,IAAiC,EAAE,cAAuB;IAC7F,OAAO,oBAAC,qBAAS,IAAC,OAAO,EAAE,uCAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EACjI,cAAc,EAAE,cAAc,GAAI,CAAC;AACvC,CAAC;AAED,qEAAqE;AACrE,SAAS,YAAY,CAAC,UAA8C,EAAE,UAA8C;IAClH,MAAM,KAAK,GAA0B,EAAE,CAAC;IACxC,IAAI,UAAU,CAAC,MAAM,EAAE;QACrB,2DAA2D;QAC3D,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE;gBAC5D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;KACJ;IACD,IAAI,UAAU,CAAC,MAAM,EAAE;QACrB,2DAA2D;QAC3D,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE;gBAC5D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mFAAmF;AACnF,SAAS,kBAAkB,CAAI,GAA+B;IAC5D,KAAK,MAAM,CAAC,EAAE,GAAG,CAAC,IAAI,GAAG,EAAE;QACzB,uBAAuB;QACvB,IAAI,GAAG,KAAK,SAAS;YACnB,OAAO,SAAS,CAAC;KACpB;IACD,OAAO,GAAqB,CAAC;AAC/B,CAAC;AAED,4GAA4G;AAC5G,SAAS,wBAAwB,CAAC,KAAa,EAAE,MAAgD,EAAE,aAAqB;IACtH,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,MAAM,gBAAgB,GAAG,aAAa,GAAG,CAAC,CAAC;QAC3C,IAAI,gBAAgB,GAAG,KAAK,EAAE;YAC5B,aAAa,IAAI,aAAa,CAAC;YAC/B,MAAM;SACP;QACD,aAAa,GAAG,gBAAgB,CAAC;KAClC;IAED,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,IAAI,aAAa,IAAI,KAAK;YACxB,MAAM;QACR,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,aAAa,IAAI,CAAC,CAAC;KACpB;IAED,MAAM,aAAa,GAAG,IAAI,KAAK,EAAU,CAAC;IAC1C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAClC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAU,EAAE,eAAkD;IACtF,IAAI,CAAC,eAAe,IAAI,CAAC,KAAK,eAAe,CAAC,MAAM;QAClD,OAAO,KAAK,CAAC;IACf,OAAO,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;AACzD,CAAC;AAmBD;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACzG,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,sCAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7G,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAqB,SAAS,CAAC,CAAC;IAEnE,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1C,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,IAAI,cAAc,CAAC,OAAO;YACxB,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;aAC5B;YACH,sBAAsB,CAAC,IAAI,sCAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;SAC1D;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,MAAM,YAAY,GAAG,IAAA,mDAAwB,EAAC,mBAAmB,CAAC,CAAC;IACnE,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,sCAAqB,CAAC,oBAAoB,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IACxH,0BAA0B,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;IAEnE,MAAM,gBAAgB,GAAG,KAAK,CAAC,UAAU,CAAC,4BAAgB,CAAC,CAAC;IAC5D,MAAM,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,sCAAqB,EAAE,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAA,mEAAgC,EAAC,iBAAiB,CAAC,CAAC;IACvE,MAAM,sBAAsB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,sCAAqB,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IACzH,0BAA0B,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC;IAEtE,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;IAC/G,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,EAA8B,CAAC,CAAC;IACxE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAqB,SAAS,CAAC,CAAC;IAClE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAyB,CAAC;IAE1E,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC/C,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACvD,IAAI,cAAc,CAAC,OAAO,KAAK,SAAS;YACtC,MAAM,KAAK,SAAS;YACpB,aAAa,CAAC,OAAO,KAAK,SAAS,EACnC;YACA,YAAY,CAAC,IAAI,KAAK,EAAU,CAAC,CAAC;YAClC,OAAO;SACR;QAED,sBAAsB;QACtB,MAAM,YAAY,GAAG,wBAAwB,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QACpH,IAAI,CAAC,IAAA,iCAAY,EAAC,SAAS,EAAE,YAAY,CAAC,EAAE;YAC1C,YAAY,CAAC,YAAY,CAAC,CAAC;YAC3B,uBAAuB;YACvB,IAAI,CAAC,KAAK,YAAY,CAAC,MAAM,IAAI,mBAAmB;gBAClD,sBAAsB,CAAC,KAAK,CAAC,CAAC;SACjC;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC;IAErC,MAAM,oBAAoB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAS,EAAE,EAAE;QAC3D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,KAAK,CAAC,CAAC;QAC9C,aAAa,CAAC,OAAO,GAAG,CAAC,CAAC;QAC1B,SAAS,IAAI,iBAAiB,EAAE,CAAC;IACnC,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE;QACzE,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;YAClD,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAChC,iBAAiB,EAAE,CAAC;SACrB;IACH,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,qEAAqE;IACrE,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,IAAyB,EAAE,GAAW,EAAmB,EAAE;QACjG,OAAO,CACL,oBAAC,oBAAoB,IACnB,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,GAAG,EACb,WAAW,EAAE,iBAAiB;YAE9B,oBAAC,mBAAmB,IAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;gBAC3C,IAAA,+BAAe,EAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS;gBACvC,IAAA,8CAA6B,EAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC;gBACzG,IAAA,6CAA4B,EAAC,IAAI,CAAC,IAAI,6BAA6B,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,CACvF,CACD,CACxB,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAEzD,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,OAAyB,EAAqB,EAAE;QACzF,MAAM,YAAY,GAAG,cAAc;aAChC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAiB,KAAK,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,wCAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACjJ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;QAEnD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CACvC,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,WAAW,CAAC,EAAE,IAChC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,CAAC,CAC3B,CAClB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9C,MAAM,gBAAgB,GAAG,KAAK,CAAC,WAAW,CAAC,GAAsB,EAAE;QACjE,MAAM,eAAe,GAAG,cAAc;aACnC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,wCAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC1G,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,GAAG,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QAEnG,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnC,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IACzB,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CACb,CAClB,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC;IAE9C,MAAM,qBAAqB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAS,EAAE,EAAE;QAC5D,IAAI,CAAC,SAAS,KAAK,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE;YACtF,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC;YAC3B,iBAAiB,EAAE,CAAC;SACrB;IACH,CAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAExB,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IACrD,MAAM,iBAAiB,GAAG,IAAA,8BAAiB,EAAC,qBAAqB,CAAC,CAAC;IACnE,sHAAsH;IACtH,MAAM,IAAI,GAAG,IAAA,oBAAO,EAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IAEtD,MAAM,eAAe,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC7C,sBAAsB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,uBAAuB;IACvB,MAAM,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC3C,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,iCAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACjG,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,iCAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACrG,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,iCAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACnG,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,iCAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IACvG,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAElF,MAAM,kBAAkB,GAAG,IAAA,oBAAU,EACnC,uBAAuB,EACvB,SAAS,CACV,CAAC;IAEF,OAAO,CACL,6BACE,SAAS,EAAE,kBAAkB,EAC7B,GAAG,EAAE,IAAI,EACT,KAAK,EAAE,KAAK,EACZ,IAAI,EAAC,cAAc;QAEnB,oBAAC,iCAAqB,IAAC,SAAS,EAAE,aAAa;YAC7C,oBAAC,gCAAoB,IAAC,SAAS,EAAE,aAAa,IAC3C,SAAS,CACW;YACvB,oBAAC,kCAAsB,IAAC,SAAS,EAAE,eAAe;gBAC/C,WAAW;gBACX,YAAY,CACU;YACzB,oBAAC,iCAAqB,IAAC,SAAS,EAAE,cAAc;gBAC7C,UAAU;gBACV,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CACvC;oBACE,oBAAC,4BAAiB,IAChB,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,EAAE,SAAS,GACd;oBACD,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,mBAAmB,IAAI,SAAS,CAAC,OAAO;wBACnE,oBAAC,sCAAsB,IACrB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,CAAC,OAAO;4BAEzB,6BAAK,SAAS,EAAC,yCAAyC,iBAAa,yCAAyC,IAC3G,aAAa,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,CAChD,CACiB,CAE1B,CACJ,CAEqB,CACF,CACpB,CACP,CAAC;AACJ,CAAC;AAjLD,8CAiLC","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 StatusBar\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport {\r\n AbstractStatusBarActionItem, AbstractStatusBarLabelItem, CommonStatusBarItem, ConditionalBooleanValue, ConditionalStringValue,\r\n isAbstractStatusBarActionItem, isAbstractStatusBarLabelItem, StatusBarItemsManager, StatusBarLabelSide, StatusBarSection, UiSyncEventArgs,\r\n} from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Icon, useRefs, useResizeObserver } from \"@itwin/core-react\";\r\nimport { eqlOverflown, FooterIndicator } from \"@itwin/appui-layout-react\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { Indicator } from \"../statusfields/Indicator\";\r\nimport { StatusBarOverflow } from \"./Overflow\";\r\nimport { StatusBarOverflowPanel } from \"./OverflowPanel\";\r\nimport { StatusBarCenterSection, StatusBarContext, StatusBarLeftSection, StatusBarRightSection, StatusBarSpaceBetween } from \"./StatusBar\";\r\nimport { isStatusBarItem } from \"./StatusBarItem\";\r\nimport { useDefaultStatusBarItems } from \"./useDefaultStatusBarItems\";\r\nimport { useUiItemsProviderStatusBarItems } from \"./useUiItemsProviderStatusBarItems\";\r\n\r\n/** Private function to generate a value that will allow the proper order to be maintained when items are placed in overflow panel */\r\nfunction getCombinedSectionItemPriority(item: CommonStatusBarItem) {\r\n let sectionValue = 0;\r\n if (item.section === StatusBarSection.Center)\r\n sectionValue = 100000;\r\n else if (item.section === StatusBarSection.Context)\r\n sectionValue = 200000;\r\n else if (item.section === StatusBarSection.Right)\r\n sectionValue = 300000;\r\n return sectionValue + item.itemPriority;\r\n}\r\n\r\ninterface DockedStatusBarEntryContextArg {\r\n readonly isOverflown: boolean;\r\n readonly onResize: (w: number) => void;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nconst DockedStatusBarEntryContext = React.createContext<DockedStatusBarEntryContextArg>(null!);\r\nDockedStatusBarEntryContext.displayName = \"nz:DockedStatusBarEntryContext\";\r\n\r\n/** @internal */\r\nexport function useStatusBarEntry() {\r\n return React.useContext(DockedStatusBarEntryContext);\r\n}\r\n\r\n/** Properties of [[DockedStatusBarItem]] component.\r\n * @internal future\r\n */\r\nexport interface StatusBarItemProps extends CommonProps {\r\n /** Tool setting content. */\r\n children?: React.ReactNode;\r\n}\r\n\r\n/** Used in [[StatusBarComposer]] component to display a statusbar item.\r\n * @internal future\r\n */\r\nexport function DockedStatusBarItem(props: StatusBarItemProps) {\r\n const { onResize } = useStatusBarEntry();\r\n const ref = useResizeObserver<HTMLDivElement>(onResize);\r\n const className = classnames(\r\n \"uifw-statusbar-item-container\",\r\n props.className,\r\n );\r\n return (\r\n <div\r\n data-item-id={props.itemId}\r\n data-item-type=\"status-bar-item\"\r\n className={className}\r\n ref={ref}\r\n style={props.style}\r\n >\r\n {props.children}\r\n </div>\r\n );\r\n}\r\n\r\ninterface DockedStatusBarEntryProps {\r\n children?: React.ReactNode;\r\n entryKey: string;\r\n getOnResize: (key: string) => (w: number) => void;\r\n}\r\n\r\n/** Wrapper for status bar entries so their size can be used to determine if the status bar container can display them or if they will need to be placed in an overflow panel. */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention, no-shadow\r\nconst DockedStatusBarEntry = React.memo<DockedStatusBarEntryProps>(function DockedStatusbarEntry({ children, entryKey, getOnResize }) {\r\n const onResize = React.useMemo(() => getOnResize(entryKey), [getOnResize, entryKey]);\r\n const entry = React.useMemo<DockedStatusBarEntryContextArg>(() => ({\r\n isOverflown: false,\r\n onResize,\r\n }), [onResize]);\r\n return (\r\n <DockedStatusBarEntryContext.Provider value={entry}>\r\n {children}\r\n </DockedStatusBarEntryContext.Provider>\r\n );\r\n});\r\n\r\n/** Private function to set up sync event monitoring of statusbar items */\r\nfunction useStatusBarItemSyncEffect(itemsManager: StatusBarItemsManager, syncIdsOfInterest: string[]) {\r\n React.useEffect(() => {\r\n const handleSyncUiEvent = (args: UiSyncEventArgs) => {\r\n if (0 === syncIdsOfInterest.length)\r\n return;\r\n\r\n // istanbul ignore else\r\n if (syncIdsOfInterest.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) {\r\n // process each item that has interest\r\n itemsManager.refreshAffectedItems(args.eventIds);\r\n }\r\n };\r\n\r\n // Note: that items with conditions have condition run when loaded into the items manager\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n return () => {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\r\n };\r\n }, [itemsManager, itemsManager.items, syncIdsOfInterest]);\r\n}\r\n\r\n/** function to produce a StatusBarItem component from an AbstractStatusBarLabelItem */\r\nfunction generateActionStatusLabelItem(item: AbstractStatusBarLabelItem, isInFooterMode: boolean): React.ReactNode {\r\n const iconPaddingClass = item.labelSide === StatusBarLabelSide.Left ? \"nz-icon-padding-right\" : \"nz-icon-padding-left\";\r\n return (<FooterIndicator\r\n isInFooterMode={isInFooterMode}\r\n >\r\n {item.icon && <Icon iconSpec={item.icon} />}\r\n {item.label && <span className={iconPaddingClass}>{ConditionalStringValue.getValue(item.label)}</span>}\r\n </FooterIndicator>\r\n );\r\n}\r\n\r\n/** function to produce a StatusBarItem component from an AbstractStatusBarActionItem */\r\nfunction generateActionStatusBarItem(item: AbstractStatusBarActionItem, isInFooterMode: boolean): React.ReactNode {\r\n return <Indicator toolTip={ConditionalStringValue.getValue(item.tooltip)} opened={false} onClick={item.execute} iconSpec={item.icon}\r\n isInFooterMode={isInFooterMode} />;\r\n}\r\n\r\n/** local function to combine items from Stage and from Extensions */\r\nfunction combineItems(stageItems: ReadonlyArray<CommonStatusBarItem>, addonItems: ReadonlyArray<CommonStatusBarItem>) {\r\n const items: CommonStatusBarItem[] = [];\r\n if (stageItems.length) {\r\n // Walk through each and ensure no duplicate ids are added.\r\n stageItems.forEach((srcItem) => {\r\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\r\n items.push(srcItem);\r\n }\r\n });\r\n }\r\n if (addonItems.length) {\r\n // Walk through each and ensure no duplicate ids are added.\r\n addonItems.forEach((srcItem) => {\r\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\r\n items.push(srcItem);\r\n }\r\n });\r\n }\r\n return items;\r\n}\r\n\r\n/** local function to ensure a width value is defined for a status bar entries. */\r\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\r\n for (const [, val] of map) {\r\n // istanbul ignore next\r\n if (val === undefined)\r\n return undefined;\r\n }\r\n return map as Map<string, T>;\r\n}\r\n\r\n/** Returns a subset of docked entry keys that exceed given width and should be placed in overflow panel. */\r\nfunction getItemToPlaceInOverflow(width: number, docked: ReadonlyArray<readonly [string, number]>, overflowWidth: number) {\r\n let settingsWidth = 0;\r\n\r\n let i = 0;\r\n for (; i < docked.length; i++) {\r\n const w = docked[i][1];\r\n const newSettingsWidth = settingsWidth + w;\r\n if (newSettingsWidth > width) {\r\n settingsWidth += overflowWidth;\r\n break;\r\n }\r\n settingsWidth = newSettingsWidth;\r\n }\r\n\r\n let j = i;\r\n for (; j > 0; j--) {\r\n if (settingsWidth <= width)\r\n break;\r\n const w = docked[j][1];\r\n settingsWidth -= w;\r\n }\r\n\r\n const overflowItems = new Array<string>();\r\n for (i = j; i < docked.length; i++) {\r\n overflowItems.push(docked[i][0]);\r\n }\r\n return overflowItems;\r\n}\r\n\r\nfunction isItemInOverflow(id: string, overflowItemIds: ReadonlyArray<string> | undefined) {\r\n if (!overflowItemIds || 0 === overflowItemIds.length)\r\n return false;\r\n return !!overflowItemIds.find((value) => value === id);\r\n}\r\n\r\n/** Properties for the [[StatusBarComposer]] React components\r\n * @public\r\n */\r\nexport interface StatusBarComposerProps extends CommonProps {\r\n /** Status Bar items */\r\n items: CommonStatusBarItem[];\r\n\r\n /** CSS class name override for the overall Status Bar */\r\n mainClassName?: string;\r\n /** CSS class name override for the left section */\r\n leftClassName?: string;\r\n /** CSS class name override for the center section */\r\n centerClassName?: string;\r\n /** CSS class name override for the right section */\r\n rightClassName?: string;\r\n}\r\n\r\n/** Component to load components into the [[StatusBar]].\r\n * @public\r\n */\r\nexport function StatusBarComposer(props: StatusBarComposerProps) {\r\n const { className, style, items, mainClassName, leftClassName, centerClassName, rightClassName } = props;\r\n const [defaultItemsManager, setDefaultItemsManager] = React.useState(() => new StatusBarItemsManager(items));\r\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\r\n const containerWidth = React.useRef<number | undefined>(undefined);\r\n\r\n const isInitialMount = React.useRef(true);\r\n React.useEffect(() => {\r\n if (isInitialMount.current)\r\n isInitialMount.current = false;\r\n else {\r\n setDefaultItemsManager(new StatusBarItemsManager(items));\r\n }\r\n }, [items]);\r\n const defaultItems = useDefaultStatusBarItems(defaultItemsManager);\r\n const syncIdsOfInterest = React.useMemo(() => StatusBarItemsManager.getSyncIdsOfInterest(defaultItems), [defaultItems]);\r\n useStatusBarItemSyncEffect(defaultItemsManager, syncIdsOfInterest);\r\n\r\n const statusBarContext = React.useContext(StatusBarContext);\r\n const [addonItemsManager] = React.useState(() => new StatusBarItemsManager());\r\n const addonItems = useUiItemsProviderStatusBarItems(addonItemsManager);\r\n const addonSyncIdsOfInterest = React.useMemo(() => StatusBarItemsManager.getSyncIdsOfInterest(addonItems), [addonItems]);\r\n useStatusBarItemSyncEffect(addonItemsManager, addonSyncIdsOfInterest);\r\n\r\n const statusBarItems = React.useMemo(() => combineItems(defaultItems, addonItems), [defaultItems, addonItems]);\r\n const entryWidths = React.useRef(new Map<string, number | undefined>());\r\n const overflowWidth = React.useRef<number | undefined>(undefined);\r\n const [overflown, setOverflown] = React.useState<ReadonlyArray<string>>();\r\n\r\n const calculateOverflow = React.useCallback(() => {\r\n const widths = verifiedMapEntries(entryWidths.current);\r\n if (containerWidth.current === undefined ||\r\n widths === undefined ||\r\n overflowWidth.current === undefined\r\n ) {\r\n setOverflown(new Array<string>());\r\n return;\r\n }\r\n\r\n // Calculate overflow.\r\n const newOverflown = getItemToPlaceInOverflow(containerWidth.current, [...widths.entries()], overflowWidth.current);\r\n if (!eqlOverflown(overflown, newOverflown)) {\r\n setOverflown(newOverflown);\r\n // istanbul ignore next\r\n if (0 === newOverflown.length && isOverflowPanelOpen)\r\n setIsOverflowPanelOpen(false);\r\n }\r\n }, [isOverflowPanelOpen, overflown]);\r\n\r\n const handleOverflowResize = React.useCallback((w: number) => {\r\n const calculate = overflowWidth.current !== w;\r\n overflowWidth.current = w;\r\n calculate && calculateOverflow();\r\n }, [calculateOverflow]);\r\n\r\n const handleEntryResize = React.useCallback((key: string) => (w: number) => {\r\n const oldW = entryWidths.current.get(key);\r\n if ((undefined === oldW) || Math.abs(oldW - w) > 2) {\r\n entryWidths.current.set(key, w);\r\n calculateOverflow();\r\n }\r\n }, [calculateOverflow]);\r\n\r\n /** generate a wrapped status bar entry that will report its size. */\r\n const getComponent = React.useCallback((item: CommonStatusBarItem, key: string): React.ReactNode => {\r\n return (\r\n <DockedStatusBarEntry\r\n key={key}\r\n entryKey={key}\r\n getOnResize={handleEntryResize}\r\n >\r\n <DockedStatusBarItem key={key} itemId={item.id} >\r\n {isStatusBarItem(item) && item.reactNode}\r\n {isAbstractStatusBarActionItem(item) && generateActionStatusBarItem(item, statusBarContext.isInFooterMode)}\r\n {isAbstractStatusBarLabelItem(item) && generateActionStatusLabelItem(item, statusBarContext.isInFooterMode)}\r\n </DockedStatusBarItem>\r\n </DockedStatusBarEntry>\r\n );\r\n }, [statusBarContext.isInFooterMode, handleEntryResize]);\r\n\r\n const getSectionItems = React.useCallback((section: StatusBarSection): React.ReactNode[] => {\r\n const sectionItems = statusBarItems\r\n .filter((item) => item.section as number === section && !isItemInOverflow(item.id, overflown) && !ConditionalBooleanValue.getValue(item.isHidden))\r\n .sort((a, b) => a.itemPriority - b.itemPriority);\r\n\r\n return sectionItems.map((sectionItem) => (\r\n <React.Fragment key={sectionItem.id}>\r\n {getComponent(sectionItem, sectionItem.id)}\r\n </React.Fragment>\r\n ));\r\n }, [statusBarItems, overflown, getComponent]);\r\n\r\n const getOverflowItems = React.useCallback((): React.ReactNode[] => {\r\n const itemsInOverflow = statusBarItems\r\n .filter((item) => isItemInOverflow(item.id, overflown) && !ConditionalBooleanValue.getValue(item.isHidden))\r\n .sort((a, b) => getCombinedSectionItemPriority(a) - getCombinedSectionItemPriority(b)).reverse();\r\n\r\n return itemsInOverflow.map((item) => (\r\n <React.Fragment key={item.id}>\r\n {getComponent(item, item.id)}\r\n </React.Fragment>\r\n ));\r\n }, [statusBarItems, overflown, getComponent]);\r\n\r\n const handleContainerResize = React.useCallback((w: number) => {\r\n if ((undefined === containerWidth.current) || Math.abs(containerWidth.current - w) > 2) {\r\n containerWidth.current = w;\r\n calculateOverflow();\r\n }\r\n }, [calculateOverflow]);\r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const targetRef = React.useRef<HTMLDivElement>(null);\r\n const resizeObserverRef = useResizeObserver(handleContainerResize);\r\n // allow both the containerRef and the resize observer function that takes a ref to be processed when the ref is set.\r\n const refs = useRefs(containerRef, resizeObserverRef);\r\n\r\n const onOverflowClick = React.useCallback(() => {\r\n setIsOverflowPanelOpen((prev) => !prev);\r\n }, []);\r\n // istanbul ignore next\r\n const handleOnClose = React.useCallback(() => {\r\n setIsOverflowPanelOpen(false);\r\n }, []);\r\n const leftItems = React.useMemo(() => getSectionItems(StatusBarSection.Left), [getSectionItems]);\r\n const centerItems = React.useMemo(() => getSectionItems(StatusBarSection.Center), [getSectionItems]);\r\n const rightItems = React.useMemo(() => getSectionItems(StatusBarSection.Right), [getSectionItems]);\r\n const contextItems = React.useMemo(() => getSectionItems(StatusBarSection.Context), [getSectionItems]);\r\n const overflowItems = React.useMemo(() => getOverflowItems(), [getOverflowItems]);\r\n\r\n const containerClassName = classnames(\r\n \"uifw-statusbar-docked\",\r\n className,\r\n );\r\n\r\n return (\r\n <div\r\n className={containerClassName}\r\n ref={refs}\r\n style={style}\r\n role=\"presentation\"\r\n >\r\n <StatusBarSpaceBetween className={mainClassName}>\r\n <StatusBarLeftSection className={leftClassName}>\r\n {leftItems}\r\n </StatusBarLeftSection>\r\n <StatusBarCenterSection className={centerClassName}>\r\n {centerItems}\r\n {contextItems}\r\n </StatusBarCenterSection>\r\n <StatusBarRightSection className={rightClassName}>\r\n {rightItems}\r\n {(!overflown || overflown.length > 0) && (\r\n <>\r\n <StatusBarOverflow\r\n onClick={onOverflowClick}\r\n onResize={handleOverflowResize}\r\n ref={targetRef}\r\n />\r\n {overflowItems.length > 0 && isOverflowPanelOpen && targetRef.current &&\r\n <StatusBarOverflowPanel\r\n onClose={handleOnClose}\r\n open={true}\r\n target={targetRef.current}\r\n >\r\n <div className=\"uifw-statusbar-overflow-items-container\" data-testid=\"uifw-statusbar-overflow-items-container\">\r\n {overflowItems.map((overflowEntry) => overflowEntry)}\r\n </div>\r\n </StatusBarOverflowPanel>\r\n }\r\n </>\r\n )}\r\n\r\n </StatusBarRightSection>\r\n </StatusBarSpaceBetween>\r\n </div>\r\n );\r\n}\r\n"]}
@@ -4,7 +4,7 @@
4
4
  import * as React from "react";
5
5
  /**
6
6
  * Properties supported by [[BooleanSyncUiListener]] component.
7
- * @public
7
+ * @public @deprecated
8
8
  */
9
9
  export interface BooleanListenerProps {
10
10
  /** One or more SyncUi event Ids that will trigger the function to be called. */
@@ -27,7 +27,7 @@ interface BooleanListenerState {
27
27
  }
28
28
  /**
29
29
  * A component that expect its children to be a function that will be passed the current boolValue state.
30
- * @public
30
+ * @public @deprecated
31
31
  */
32
32
  export declare class BooleanSyncUiListener extends React.Component<BooleanListenerProps, BooleanListenerState> {
33
33
  private _componentUnmounting;
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanListener.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/syncui/BooleanListener.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,UAAU,oBAAoB;IAC5B,SAAS,EAAE,OAAO,CAAC;CACpB;AAGD;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpG,OAAO,CAAC,oBAAoB,CAAS;IAErC,gBAAgB;IAChB,SAAyB,KAAK,EAAE,oBAAoB,CAAC;gBAEzC,KAAK,EAAE,oBAAoB;IAOvC,OAAO,CAAC,4BAA4B,CAalC;IAEc,iBAAiB;IAMjB,oBAAoB;IASpC,OAAO,CAAC,cAAc,CAA2D;IAEjE,MAAM,IAAI,KAAK,CAAC,SAAS;CAiB1C"}
1
+ {"version":3,"file":"BooleanListener.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/syncui/BooleanListener.tsx"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;OAEG;IACH,QAAQ,EAAE,MAAM,OAAO,CAAC;IACxB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,UAAU,oBAAoB;IAC5B,SAAS,EAAE,OAAO,CAAC;CACpB;AAGD;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IACpG,OAAO,CAAC,oBAAoB,CAAS;IAErC,gBAAgB;IAChB,SAAyB,KAAK,EAAE,oBAAoB,CAAC;gBAEzC,KAAK,EAAE,oBAAoB;IAOvC,OAAO,CAAC,4BAA4B,CAalC;IAEc,iBAAiB;IAMjB,oBAAoB;IASpC,OAAO,CAAC,cAAc,CAA2D;IAEjE,MAAM,IAAI,KAAK,CAAC,SAAS;CAiB1C"}
@@ -3,6 +3,7 @@
3
3
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
4
  * See LICENSE.md in the project root for license terms and full copyright notice.
5
5
  *--------------------------------------------------------------------------------------------*/
6
+ /* eslint-disable deprecation/deprecation */
6
7
  /** @packageDocumentation
7
8
  * @module SyncUi
8
9
  */
@@ -13,7 +14,7 @@ const SyncUiEventDispatcher_1 = require("./SyncUiEventDispatcher");
13
14
  // cSpell:Ignore Unmounting
14
15
  /**
15
16
  * A component that expect its children to be a function that will be passed the current boolValue state.
16
- * @public
17
+ * @public @deprecated
17
18
  */
18
19
  class BooleanSyncUiListener extends React.Component {
19
20
  constructor(props) {
@@ -1 +1 @@
1
- {"version":3,"file":"BooleanListener.js","sourceRoot":"","sources":["../../../../src/appui-react/syncui/BooleanListener.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAC/B,mEAAiF;AA2BjF,2BAA2B;AAC3B;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,KAAK,CAAC,SAAqD;IAMpG,YAAY,KAA2B;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QANP,yBAAoB,GAAG,KAAK,CAAC;QAY7B,iCAA4B,GAAG,CAAC,IAAqB,EAAQ,EAAE;YACrE,0BAA0B;YAC1B,IAAI,IAAI,CAAC,oBAAoB;gBAC3B,OAAO;YAET,0BAA0B;YAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;gBAChG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxC,0BAA0B;gBAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;oBACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC,CAAC;QAgBF,uBAAuB;QACf,mBAAc,GAAG,CAAC,QAAa,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAnC/E,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,SAAS,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;SACxE,CAAC;IACJ,CAAC;IAiBe,iBAAiB;QAC/B,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACvE,6CAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvF,CAAC;IAEe,oBAAoB;QAClC,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACzE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,6CAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;SACvF;IACH,CAAC;IAKe,MAAM;QACpB,MAAM;QACJ,yBAAyB;QACzB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,wDAAwD;QACpG,wCAAwC;QACxC,GAAG,UAAU,CAAC,qBAAqB;UACpC,GAAG,IAAI,CAAC,KAAK,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEvC,OAAO,CACL,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC;YAC9B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;YAC/B,CAAC,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBACzD,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC/B,CAAC,CAAC,IAAI,CACX,CAAC;IACJ,CAAC;CACF;AA9DD,sDA8DC","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 SyncUi\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher } from \"./SyncUiEventDispatcher\";\r\n\r\n/**\r\n * Properties supported by [[BooleanSyncUiListener]] component.\r\n * @public\r\n */\r\nexport interface BooleanListenerProps {\r\n /** One or more SyncUi event Ids that will trigger the function to be called. */\r\n eventIds: string[];\r\n /** Function to be called to return a boolean value. If the boolean value is different than the component's state value setState is\r\n * called to update the value and trigger a re-render.\r\n */\r\n boolFunc: () => boolean;\r\n /** Optional, default/initial boolean value that is saved in the components state. If\r\n * not defined it will default to true.\r\n */\r\n defaultValue?: boolean;\r\n}\r\n\r\n/**\r\n * State for the [[BooleanSyncUiListener]] component.\r\n * @internal\r\n */\r\ninterface BooleanListenerState {\r\n boolValue: boolean;\r\n}\r\n\r\n// cSpell:Ignore Unmounting\r\n/**\r\n * A component that expect its children to be a function that will be passed the current boolValue state.\r\n * @public\r\n */\r\nexport class BooleanSyncUiListener extends React.Component<BooleanListenerProps, BooleanListenerState> {\r\n private _componentUnmounting = false;\r\n\r\n /** @internal */\r\n public override readonly state: BooleanListenerState;\r\n\r\n constructor(props: BooleanListenerProps) {\r\n super(props);\r\n this.state = {\r\n boolValue: undefined !== props.defaultValue ? props.defaultValue : true,\r\n };\r\n }\r\n\r\n private _handleVisibilitySyncUiEvent = (args: SyncUiEventArgs): void => {\r\n /* istanbul ignore next */\r\n if (this._componentUnmounting)\r\n return;\r\n\r\n /* istanbul ignore else */\r\n if (this.props.eventIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) {\r\n const boolValue = this.props.boolFunc();\r\n /* istanbul ignore else */\r\n if (this.state.boolValue !== boolValue) {\r\n this.setState({ boolValue });\r\n }\r\n }\r\n };\r\n\r\n public override componentDidMount() {\r\n /* istanbul ignore else */\r\n if ((this.props.boolFunc !== undefined) && this.props.eventIds.length > 0)\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this._handleVisibilitySyncUiEvent);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n /* istanbul ignore else */\r\n if ((this.props.boolFunc !== undefined) && this.props.eventIds.length > 0) {\r\n this._componentUnmounting = true;\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(this._handleVisibilitySyncUiEvent);\r\n }\r\n }\r\n\r\n // istanbul ignore next\r\n private _hasNoChildren = (children: any) => React.Children.count(children) === 0;\r\n\r\n public override render(): React.ReactNode {\r\n const {\r\n // do not bleed our props\r\n children, eventIds, boolFunc, defaultValue, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n // eslint-disable-next-line comma-dangle\r\n ...otherProps // pass-through props\r\n } = this.props;\r\n const boolValue = this.state.boolValue;\r\n\r\n return (\r\n typeof children === \"function\" ?\r\n children(boolValue, otherProps)\r\n : /* istanbul ignore next */ !this._hasNoChildren(children)\r\n ? React.Children.only(children)\r\n : null\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"BooleanListener.js","sourceRoot":"","sources":["../../../../src/appui-react/syncui/BooleanListener.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F,4CAA4C;AAC5C;;GAEG;;;AAEH,+BAA+B;AAC/B,mEAAiF;AA2BjF,2BAA2B;AAC3B;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,KAAK,CAAC,SAAqD;IAMpG,YAAY,KAA2B;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QANP,yBAAoB,GAAG,KAAK,CAAC;QAY7B,iCAA4B,GAAG,CAAC,IAAqB,EAAQ,EAAE;YACrE,0BAA0B;YAC1B,IAAI,IAAI,CAAC,oBAAoB;gBAC3B,OAAO;YAET,0BAA0B;YAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE;gBAChG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACxC,0BAA0B;gBAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE;oBACtC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC,CAAC;QAgBF,uBAAuB;QACf,mBAAc,GAAG,CAAC,QAAa,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAnC/E,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,SAAS,KAAK,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;SACxE,CAAC;IACJ,CAAC;IAiBe,iBAAiB;QAC/B,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACvE,6CAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACvF,CAAC;IAEe,oBAAoB;QAClC,0BAA0B;QAC1B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACzE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,6CAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;SACvF;IACH,CAAC;IAKe,MAAM;QACpB,MAAM;QACJ,yBAAyB;QACzB,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,wDAAwD;QACpG,wCAAwC;QACxC,GAAG,UAAU,CAAC,qBAAqB;UACpC,GAAG,IAAI,CAAC,KAAK,CAAC;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAEvC,OAAO,CACL,OAAO,QAAQ,KAAK,UAAU,CAAC,CAAC;YAC9B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;YAC/B,CAAC,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;gBACzD,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC/B,CAAC,CAAC,IAAI,CACX,CAAC;IACJ,CAAC;CACF;AA9DD,sDA8DC","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/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module SyncUi\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { SyncUiEventArgs, SyncUiEventDispatcher } from \"./SyncUiEventDispatcher\";\r\n\r\n/**\r\n * Properties supported by [[BooleanSyncUiListener]] component.\r\n * @public @deprecated\r\n */\r\nexport interface BooleanListenerProps {\r\n /** One or more SyncUi event Ids that will trigger the function to be called. */\r\n eventIds: string[];\r\n /** Function to be called to return a boolean value. If the boolean value is different than the component's state value setState is\r\n * called to update the value and trigger a re-render.\r\n */\r\n boolFunc: () => boolean;\r\n /** Optional, default/initial boolean value that is saved in the components state. If\r\n * not defined it will default to true.\r\n */\r\n defaultValue?: boolean;\r\n}\r\n\r\n/**\r\n * State for the [[BooleanSyncUiListener]] component.\r\n * @internal\r\n */\r\ninterface BooleanListenerState {\r\n boolValue: boolean;\r\n}\r\n\r\n// cSpell:Ignore Unmounting\r\n/**\r\n * A component that expect its children to be a function that will be passed the current boolValue state.\r\n * @public @deprecated\r\n */\r\nexport class BooleanSyncUiListener extends React.Component<BooleanListenerProps, BooleanListenerState> {\r\n private _componentUnmounting = false;\r\n\r\n /** @internal */\r\n public override readonly state: BooleanListenerState;\r\n\r\n constructor(props: BooleanListenerProps) {\r\n super(props);\r\n this.state = {\r\n boolValue: undefined !== props.defaultValue ? props.defaultValue : true,\r\n };\r\n }\r\n\r\n private _handleVisibilitySyncUiEvent = (args: SyncUiEventArgs): void => {\r\n /* istanbul ignore next */\r\n if (this._componentUnmounting)\r\n return;\r\n\r\n /* istanbul ignore else */\r\n if (this.props.eventIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) {\r\n const boolValue = this.props.boolFunc();\r\n /* istanbul ignore else */\r\n if (this.state.boolValue !== boolValue) {\r\n this.setState({ boolValue });\r\n }\r\n }\r\n };\r\n\r\n public override componentDidMount() {\r\n /* istanbul ignore else */\r\n if ((this.props.boolFunc !== undefined) && this.props.eventIds.length > 0)\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this._handleVisibilitySyncUiEvent);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n /* istanbul ignore else */\r\n if ((this.props.boolFunc !== undefined) && this.props.eventIds.length > 0) {\r\n this._componentUnmounting = true;\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(this._handleVisibilitySyncUiEvent);\r\n }\r\n }\r\n\r\n // istanbul ignore next\r\n private _hasNoChildren = (children: any) => React.Children.count(children) === 0;\r\n\r\n public override render(): React.ReactNode {\r\n const {\r\n // do not bleed our props\r\n children, eventIds, boolFunc, defaultValue, // eslint-disable-line @typescript-eslint/no-unused-vars\r\n // eslint-disable-next-line comma-dangle\r\n ...otherProps // pass-through props\r\n } = this.props;\r\n const boolValue = this.state.boolValue;\r\n\r\n return (\r\n typeof children === \"function\" ?\r\n children(boolValue, otherProps)\r\n : /* istanbul ignore next */ !this._hasNoChildren(children)\r\n ? React.Children.only(children)\r\n : null\r\n );\r\n }\r\n}\r\n"]}
@@ -1,8 +1,8 @@
1
1
  /** @packageDocumentation
2
2
  * @module SyncUi
3
3
  */
4
+ import { UiSyncEvent, UiSyncEventArgs } from "@itwin/appui-abstract";
4
5
  import { IModelConnection } from "@itwin/core-frontend";
5
- import { UiEvent } from "@itwin/core-react";
6
6
  /** Event Id used to sync UI components. Used to refresh visibility or enable state of control.
7
7
  * @public
8
8
  */
@@ -56,27 +56,19 @@ export declare enum SyncUiEventId {
56
56
  ShowHideManagerSettingChange = "show-hide-setting-change"
57
57
  }
58
58
  /** SyncUi Event arguments. Contains a set of lower case event Ids.
59
- * @public
59
+ * @public @deprecated use UiSyncEventArgs in appui-abstract instead
60
60
  */
61
- export interface SyncUiEventArgs {
62
- eventIds: Set<string>;
63
- }
61
+ export declare type SyncUiEventArgs = UiSyncEventArgs;
64
62
  /** SyncUi Event class.
65
- * @public
63
+ * @public @deprecated use UiSyncEvent in appui-abstract instead
66
64
  */
67
- export declare class SyncUiEvent extends UiEvent<SyncUiEventArgs> {
68
- }
65
+ export declare type SyncUiEvent = UiSyncEvent;
69
66
  /** This class is used to send eventIds to interested UI components so the component can determine if it needs
70
67
  * to refresh its display by calling setState on itself.
71
68
  * @public
72
69
  */
73
70
  export declare class SyncUiEventDispatcher {
74
- private static _syncEventTimerId;
75
- private static _eventIds;
76
- private static _eventIdAdded;
77
- private static _syncUiEvent;
78
- private static _timeoutPeriod;
79
- private static _secondaryTimeoutPeriod;
71
+ private static _uiEventDispatcher;
80
72
  private static _unregisterListenerFunc?;
81
73
  private static _unregisterListenerFuncs;
82
74
  private static initialized;
@@ -92,8 +84,6 @@ export declare class SyncUiEventDispatcher {
92
84
  static dispatchSyncUiEvent(eventId: string): void;
93
85
  /** Save multiple eventIds in Set for processing. */
94
86
  static dispatchSyncUiEvents(eventIds: string[]): void;
95
- /** Trigger registered event processing when timer has expired and no addition eventId are added. */
96
- private static checkForAdditionalIds;
97
87
  /** Checks to see if an eventId of interest is contained in the set of eventIds */
98
88
  static hasEventOfInterest(eventIds: Set<string>, idsOfInterest: string[]): boolean;
99
89
  private static _dispatchViewChange;
@@ -1 +1 @@
1
- {"version":3,"file":"SyncUiEventDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SyncUiEventDispatcher.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAqB,WAAW,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAa,gBAAgB,EAAkD,MAAM,sBAAsB,CAAC;AAiBnH;;GAEG;AACH,oBAAY,aAAa;IACvB,yCAAyC;IACzC,0BAA0B,+BAA+B;IACzD,qCAAqC;IACrC,uBAAuB,4BAA4B;IACnD,8EAA8E;IAC9E,oBAAoB,yBAAyB;IAC7C,iEAAiE;IACjE,qBAAqB,0BAA0B;IAC/C;;OAEG;IACH,mBAAmB,wBAAwB;IAC3C,iCAAiC;IACjC,cAAc,mBAAmB;IACjC,4CAA4C;IAC5C,sBAAsB,2BAA2B;IACjD,4EAA4E;IAC5E,uBAAuB,4BAA4B;IACnD,kCAAkC;IAClC,oBAAoB,yBAAyB;IAC7C,yEAAyE;IACzE,eAAe,oBAAoB;IACnC,oDAAoD;IACpD,sBAAsB,2BAA2B;IACjD,gDAAgD;IAChD,kBAAkB,uBAAuB;IACzC,0CAA0C;IAC1C,sBAAsB,2BAA2B;IACjD,+DAA+D;IAC/D,aAAa,kBAAkB;IAC/B;qBACiB;IACjB,aAAa,kBAAkB;IAC/B,yCAAyC;IACzC,kBAAkB,uBAAuB;IACzC;qBACiB;IACjB,iBAAiB,sBAAsB;IACvC,oEAAoE;IACpE,mBAAmB,wBAAwB;IAC3C,kFAAkF;IAClF,wBAAwB,6BAA6B;IACrD,mFAAmF;IACnF,gBAAgB,qBAAqB;IACrC,mEAAmE;IACnE,qBAAqB,0BAA0B;IAC/C,4BAA4B,6BAA6B;CAC1D;AAED;;GAEG;AACH,oBAAY,eAAe,GAAG,eAAe,CAAC;AAE9C;;GAEG;AACH,oBAAY,WAAW,GAAG,WAAW,CAAC;AAEtC;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAA2B;IAC5D,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAa;IACpD,OAAO,CAAC,MAAM,CAAC,wBAAwB,CAAyB;IAChE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAS;IAEnC,wCAAwC;WAE1B,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpD,+DAA+D;IAC/D,WAAkB,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAE5C;IAED,oEAAoE;IAEpE,WAAkB,aAAa,IAAI,WAAW,CAE7C;IAED,iDAAiD;WACnC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjE,0CAA0C;WAC5B,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQxD,oDAAoD;WACtC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAQ5D,kFAAkF;WACpE,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE;IAK/E,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAIlC,gFAAgF;WAClE,UAAU;IA0ExB,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAItC,qFAAqF;WACvE,qBAAqB,CAAC,gBAAgB,EAAE,gBAAgB;IAKtE,0FAA0F;WAC5E,0BAA0B,CAAC,gBAAgB,EAAE,gBAAgB;CA4C5E"}
@@ -7,13 +7,13 @@
7
7
  * @module SyncUi
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.SyncUiEventDispatcher = exports.SyncUiEvent = exports.SyncUiEventId = void 0;
10
+ exports.SyncUiEventDispatcher = exports.SyncUiEventId = void 0;
11
+ const appui_abstract_1 = require("@itwin/appui-abstract");
11
12
  const core_bentley_1 = require("@itwin/core-bentley");
12
13
  const core_frontend_1 = require("@itwin/core-frontend");
13
14
  const presentation_common_1 = require("@itwin/presentation-common");
14
15
  const presentation_frontend_1 = require("@itwin/presentation-frontend");
15
16
  // cSpell:ignore configurableui
16
- const core_react_1 = require("@itwin/core-react");
17
17
  const Backstage_1 = require("../backstage/Backstage");
18
18
  const ContentViewManager_1 = require("../content/ContentViewManager");
19
19
  const FrontstageManager_1 = require("../frontstage/FrontstageManager");
@@ -78,12 +78,6 @@ var SyncUiEventId;
78
78
  SyncUiEventId["UiStateStorageChanged"] = "uistatestoragechanged";
79
79
  SyncUiEventId["ShowHideManagerSettingChange"] = "show-hide-setting-change";
80
80
  })(SyncUiEventId = exports.SyncUiEventId || (exports.SyncUiEventId = {}));
81
- /** SyncUi Event class.
82
- * @public
83
- */
84
- class SyncUiEvent extends core_react_1.UiEvent {
85
- }
86
- exports.SyncUiEvent = SyncUiEvent;
87
81
  /** This class is used to send eventIds to interested UI components so the component can determine if it needs
88
82
  * to refresh its display by calling setState on itself.
89
83
  * @public
@@ -92,109 +86,44 @@ class SyncUiEventDispatcher {
92
86
  /** @internal - used for testing only */
93
87
  /* istanbul ignore next */
94
88
  static setTimeoutPeriod(period) {
95
- SyncUiEventDispatcher._timeoutPeriod = period;
96
- SyncUiEventDispatcher._secondaryTimeoutPeriod = Math.floor(SyncUiEventDispatcher._timeoutPeriod / 2);
97
- if (SyncUiEventDispatcher._secondaryTimeoutPeriod < 1)
98
- SyncUiEventDispatcher._secondaryTimeoutPeriod = 1;
99
- if (SyncUiEventDispatcher._syncEventTimerId) {
100
- window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);
101
- SyncUiEventDispatcher._syncEventTimerId = undefined;
102
- }
103
- if (SyncUiEventDispatcher._eventIds)
104
- SyncUiEventDispatcher._eventIds.clear();
105
- SyncUiEventDispatcher._eventIdAdded = false;
89
+ SyncUiEventDispatcher._uiEventDispatcher.setTimeoutPeriod(period);
106
90
  }
107
91
  /** Return set of event ids that will be sent to listeners/. */
108
92
  static get syncEventIds() {
109
- if (!SyncUiEventDispatcher._eventIds)
110
- SyncUiEventDispatcher._eventIds = new Set();
111
- return SyncUiEventDispatcher._eventIds;
93
+ return SyncUiEventDispatcher._uiEventDispatcher.syncEventIds;
112
94
  }
113
95
  /** Return SyncUiEvent so callers can register an event callback. */
96
+ // eslint-disable-next-line deprecation/deprecation
114
97
  static get onSyncUiEvent() {
115
- if (!SyncUiEventDispatcher._syncUiEvent)
116
- SyncUiEventDispatcher._syncUiEvent = new SyncUiEvent();
117
- return SyncUiEventDispatcher._syncUiEvent;
98
+ return SyncUiEventDispatcher._uiEventDispatcher.onSyncUiEvent;
118
99
  }
119
100
  /** Immediately trigger sync event processing. */
120
101
  static dispatchImmediateSyncUiEvent(eventId) {
121
- const eventIds = new Set();
122
- eventIds.add(eventId.toLowerCase());
123
- SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });
102
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchImmediateSyncUiEvent(eventId);
124
103
  }
125
104
  /** Save eventId in Set for processing. */
126
105
  static dispatchSyncUiEvent(eventId) {
127
- if (0 === SyncUiEventDispatcher._timeoutPeriod) {
128
- core_bentley_1.Logger.logInfo(UiFramework_1.UiFramework.loggerCategory(this), `[dispatchSyncUiEvent] not processed because _timeoutPeriod=0`);
106
+ if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {
107
+ core_bentley_1.Logger.logInfo(UiFramework_1.UiFramework.loggerCategory(this), `[dispatchSyncUiEvent] not processed because timeoutPeriod=0`);
129
108
  return;
130
109
  }
131
- SyncUiEventDispatcher.syncEventIds.add(eventId.toLowerCase());
132
- if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one
133
- SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);
134
- }
135
- else {
136
- SyncUiEventDispatcher._eventIdAdded = true;
137
- }
110
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(eventId);
138
111
  }
139
112
  /** Save multiple eventIds in Set for processing. */
140
113
  static dispatchSyncUiEvents(eventIds) {
141
114
  // istanbul ignore if
142
- if (0 === SyncUiEventDispatcher._timeoutPeriod) {
115
+ if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {
143
116
  core_bentley_1.Logger.logInfo(UiFramework_1.UiFramework.loggerCategory(this), `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`);
144
- return;
145
- }
146
- eventIds.forEach((id) => SyncUiEventDispatcher.syncEventIds.add(id.toLowerCase()));
147
- // istanbul ignore else
148
- if (!SyncUiEventDispatcher._syncEventTimerId) { // if there is not a timer active, create one
149
- SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._timeoutPeriod);
150
- }
151
- else {
152
- SyncUiEventDispatcher._eventIdAdded = true;
153
- }
154
- }
155
- /** Trigger registered event processing when timer has expired and no addition eventId are added. */
156
- static checkForAdditionalIds() {
157
- /* istanbul ignore else */
158
- if (!SyncUiEventDispatcher._eventIdAdded) {
159
- // istanbul ignore else
160
- if (SyncUiEventDispatcher._syncEventTimerId) {
161
- window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);
162
- SyncUiEventDispatcher._syncEventTimerId = undefined;
163
- }
164
- else {
165
- core_bentley_1.Logger.logError(UiFramework_1.UiFramework.loggerCategory(this), "SyncUiEventDispatcher.checkForAdditionalIds - expected _syncEventTimerId to be defined");
166
- }
167
- SyncUiEventDispatcher._eventIdAdded = false;
168
- // istanbul ignore else
169
- if (SyncUiEventDispatcher.syncEventIds.size > 0) {
170
- const eventIds = new Set();
171
- SyncUiEventDispatcher.syncEventIds.forEach((value) => eventIds.add(value));
172
- SyncUiEventDispatcher._eventIds.clear();
173
- SyncUiEventDispatcher.onSyncUiEvent.emit({ eventIds });
174
- }
175
- return;
176
- }
177
- // istanbul ignore next
178
- if (SyncUiEventDispatcher._syncEventTimerId) {
179
- window.clearTimeout(SyncUiEventDispatcher._syncEventTimerId);
180
- SyncUiEventDispatcher._syncEventTimerId = undefined;
181
117
  }
182
- // istanbul ignore next
183
- SyncUiEventDispatcher._eventIdAdded = false;
184
- // if events have been added before the initial timer expired wait half that time to see if events are still being added.
185
- // istanbul ignore next
186
- SyncUiEventDispatcher._syncEventTimerId = window.setTimeout(SyncUiEventDispatcher.checkForAdditionalIds, SyncUiEventDispatcher._secondaryTimeoutPeriod);
118
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvents(eventIds);
187
119
  }
188
120
  /** Checks to see if an eventId of interest is contained in the set of eventIds */
189
121
  static hasEventOfInterest(eventIds, idsOfInterest) {
190
- /* istanbul ignore else */
191
- if ((idsOfInterest.length > 0) && idsOfInterest.some((value) => eventIds.has(value.toLowerCase())))
192
- return true;
193
- return false;
122
+ return SyncUiEventDispatcher._uiEventDispatcher.hasEventOfInterest(eventIds, idsOfInterest);
194
123
  }
195
124
  // istanbul ignore next
196
125
  static _dispatchViewChange() {
197
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ViewStateChanged);
126
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ViewStateChanged);
198
127
  }
199
128
  /** Initializes the Monitoring of Events that trigger dispatching sync events */
200
129
  static initialize() {
@@ -204,42 +133,42 @@ class SyncUiEventDispatcher {
204
133
  SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentControlActivated);
205
134
  }));
206
135
  this._unregisterListenerFuncs.push(FrontstageManager_1.FrontstageManager.onContentLayoutActivatedEvent.addListener(() => {
207
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentLayoutActivated);
136
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ContentLayoutActivated);
208
137
  }));
209
138
  this._unregisterListenerFuncs.push(FrontstageManager_1.FrontstageManager.onFrontstageActivatedEvent.addListener(() => {
210
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageActivating);
139
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageActivating);
211
140
  }));
212
141
  this._unregisterListenerFuncs.push(FrontstageManager_1.FrontstageManager.onFrontstageReadyEvent.addListener(() => {
213
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageReady);
142
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.FrontstageReady);
214
143
  }));
215
144
  this._unregisterListenerFuncs.push(FrontstageManager_1.FrontstageManager.onModalFrontstageChangedEvent.addListener(() => {
216
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ModalFrontstageChanged);
145
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ModalFrontstageChanged);
217
146
  }));
218
147
  this._unregisterListenerFuncs.push(FrontstageManager_1.FrontstageManager.onNavigationAidActivatedEvent.addListener(() => {
219
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.NavigationAidActivated);
148
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.NavigationAidActivated);
220
149
  }));
221
150
  this._unregisterListenerFuncs.push(FrontstageManager_1.FrontstageManager.onToolActivatedEvent.addListener(() => {
222
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ToolActivated);
151
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ToolActivated);
223
152
  }));
224
153
  this._unregisterListenerFuncs.push(FrontstageManager_1.FrontstageManager.onWidgetStateChangedEvent.addListener(() => {
225
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WidgetStateChanged);
154
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WidgetStateChanged);
226
155
  }));
227
156
  this._unregisterListenerFuncs.push(Backstage_1.Backstage.onBackstageEvent.addListener(() => {
228
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.BackstageEvent);
157
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.BackstageEvent);
229
158
  }));
230
159
  this._unregisterListenerFuncs.push(Workflow_1.WorkflowManager.onTaskActivatedEvent.addListener(() => {
231
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.TaskActivated); // eslint-disable-line deprecation/deprecation
160
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.TaskActivated); // eslint-disable-line deprecation/deprecation
232
161
  }));
233
162
  this._unregisterListenerFuncs.push(Workflow_1.WorkflowManager.onWorkflowActivatedEvent.addListener(() => {
234
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WorkflowActivated); // eslint-disable-line deprecation/deprecation
163
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.WorkflowActivated); // eslint-disable-line deprecation/deprecation
235
164
  }));
236
165
  this._unregisterListenerFuncs.push(ContentViewManager_1.ContentViewManager.onActiveContentChangedEvent.addListener(() => {
237
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveContentChanged);
166
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveContentChanged);
238
167
  }));
239
168
  // istanbul ignore else
240
169
  if (core_frontend_1.IModelApp && core_frontend_1.IModelApp.viewManager) {
241
170
  this._unregisterListenerFuncs.push(core_frontend_1.IModelApp.viewManager.onSelectedViewportChanged.addListener((args) => {
242
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveViewportChanged);
171
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.ActiveViewportChanged);
243
172
  // if this is the first view being opened up start the default tool so tool admin is happy.
244
173
  if (undefined === args.previous) {
245
174
  core_frontend_1.IModelApp.toolAdmin.startDefaultTool(); // eslint-disable-line @typescript-eslint/no-floating-promises
@@ -258,7 +187,7 @@ class SyncUiEventDispatcher {
258
187
  }
259
188
  }
260
189
  static selectionChangedHandler(_ev) {
261
- SyncUiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SelectionSetChanged);
190
+ SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(SyncUiEventId.SelectionSetChanged);
262
191
  }
263
192
  /** This should be called by IModelApp when the active IModelConnection is closed. */
264
193
  static clearConnectionEvents(iModelConnection) {
@@ -307,9 +236,7 @@ class SyncUiEventDispatcher {
307
236
  }
308
237
  }
309
238
  exports.SyncUiEventDispatcher = SyncUiEventDispatcher;
310
- SyncUiEventDispatcher._eventIdAdded = false;
311
- SyncUiEventDispatcher._timeoutPeriod = 100;
312
- SyncUiEventDispatcher._secondaryTimeoutPeriod = SyncUiEventDispatcher._timeoutPeriod / 2;
239
+ SyncUiEventDispatcher._uiEventDispatcher = new appui_abstract_1.UiEventDispatcher();
313
240
  SyncUiEventDispatcher._unregisterListenerFuncs = [];
314
241
  SyncUiEventDispatcher.initialized = false;
315
242
  //# sourceMappingURL=SyncUiEventDispatcher.js.map