@itwin/appui-react 3.5.0-dev.7 → 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/CHANGELOG.md +90 -1
  2. package/lib/cjs/appui-react/UiFramework.d.ts +11 -1
  3. package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
  4. package/lib/cjs/appui-react/UiFramework.js +18 -3
  5. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  6. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js +2 -2
  7. package/lib/cjs/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  8. package/lib/cjs/appui-react/backstage/Backstage.d.ts +3 -0
  9. package/lib/cjs/appui-react/backstage/Backstage.d.ts.map +1 -1
  10. package/lib/cjs/appui-react/backstage/Backstage.js +3 -1
  11. package/lib/cjs/appui-react/backstage/Backstage.js.map +1 -1
  12. package/lib/cjs/appui-react/backstage/CommandLaunch.js +1 -1
  13. package/lib/cjs/appui-react/backstage/CommandLaunch.js.map +1 -1
  14. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +1 -0
  15. package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  16. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +1 -1
  17. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  18. package/lib/cjs/appui-react/configurableui/state.d.ts +4 -1
  19. package/lib/cjs/appui-react/configurableui/state.d.ts.map +1 -1
  20. package/lib/cjs/appui-react/configurableui/state.js +6 -0
  21. package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
  22. package/lib/cjs/appui-react/content/ContentGroup.d.ts +8 -0
  23. package/lib/cjs/appui-react/content/ContentGroup.d.ts.map +1 -1
  24. package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
  25. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js +2 -2
  26. package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  27. package/lib/cjs/appui-react/frontstage/Frontstage.d.ts +5 -1
  28. package/lib/cjs/appui-react/frontstage/Frontstage.d.ts.map +1 -1
  29. package/lib/cjs/appui-react/frontstage/Frontstage.js +1 -0
  30. package/lib/cjs/appui-react/frontstage/Frontstage.js.map +1 -1
  31. package/lib/cjs/appui-react/frontstage/FrontstageComposer.d.ts +3 -0
  32. package/lib/cjs/appui-react/frontstage/FrontstageComposer.d.ts.map +1 -1
  33. package/lib/cjs/appui-react/frontstage/FrontstageComposer.js +5 -2
  34. package/lib/cjs/appui-react/frontstage/FrontstageComposer.js.map +1 -1
  35. package/lib/cjs/appui-react/frontstage/FrontstageConfig.d.ts +40 -0
  36. package/lib/cjs/appui-react/frontstage/FrontstageConfig.d.ts.map +1 -0
  37. package/lib/cjs/appui-react/frontstage/FrontstageConfig.js +10 -0
  38. package/lib/cjs/appui-react/frontstage/FrontstageConfig.js.map +1 -0
  39. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +8 -0
  40. package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  41. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +114 -7
  42. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  43. package/lib/cjs/appui-react/frontstage/FrontstageManager.d.ts +2 -4
  44. package/lib/cjs/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
  45. package/lib/cjs/appui-react/frontstage/FrontstageManager.js +5 -8
  46. package/lib/cjs/appui-react/frontstage/FrontstageManager.js.map +1 -1
  47. package/lib/cjs/appui-react/frontstage/FrontstageProvider.d.ts +9 -1
  48. package/lib/cjs/appui-react/frontstage/FrontstageProvider.d.ts.map +1 -1
  49. package/lib/cjs/appui-react/frontstage/FrontstageProvider.js +1 -1
  50. package/lib/cjs/appui-react/frontstage/FrontstageProvider.js.map +1 -1
  51. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +14 -5
  52. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  53. package/lib/cjs/appui-react/hooks/useFrameworkVersion.d.ts +13 -3
  54. package/lib/cjs/appui-react/hooks/useFrameworkVersion.d.ts.map +1 -1
  55. package/lib/cjs/appui-react/hooks/useFrameworkVersion.js +15 -7
  56. package/lib/cjs/appui-react/hooks/useFrameworkVersion.js.map +1 -1
  57. package/lib/cjs/appui-react/messages/ActivityMessage.d.ts +1 -0
  58. package/lib/cjs/appui-react/messages/ActivityMessage.d.ts.map +1 -1
  59. package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
  60. package/lib/cjs/appui-react/messages/ActivityMessagePopup.d.ts +2 -0
  61. package/lib/cjs/appui-react/messages/ActivityMessagePopup.d.ts.map +1 -1
  62. package/lib/cjs/appui-react/messages/ActivityMessagePopup.js +1 -0
  63. package/lib/cjs/appui-react/messages/ActivityMessagePopup.js.map +1 -1
  64. package/lib/cjs/appui-react/messages/StatusMessageRenderer.d.ts +1 -0
  65. package/lib/cjs/appui-react/messages/StatusMessageRenderer.d.ts.map +1 -1
  66. package/lib/cjs/appui-react/messages/StatusMessageRenderer.js.map +1 -1
  67. package/lib/cjs/appui-react/messages/StickyMessage.d.ts +1 -0
  68. package/lib/cjs/appui-react/messages/StickyMessage.d.ts.map +1 -1
  69. package/lib/cjs/appui-react/messages/StickyMessage.js.map +1 -1
  70. package/lib/cjs/appui-react/messages/ToastMessage.d.ts +1 -0
  71. package/lib/cjs/appui-react/messages/ToastMessage.d.ts.map +1 -1
  72. package/lib/cjs/appui-react/messages/ToastMessage.js.map +1 -1
  73. package/lib/cjs/appui-react/pickers/ListPicker.d.ts +1 -0
  74. package/lib/cjs/appui-react/pickers/ListPicker.d.ts.map +1 -1
  75. package/lib/cjs/appui-react/pickers/ListPicker.js +4 -2
  76. package/lib/cjs/appui-react/pickers/ListPicker.js.map +1 -1
  77. package/lib/cjs/appui-react/pickers/ListPicker.scss +2 -1
  78. package/lib/cjs/appui-react/redux/FrameworkState.d.ts +1 -1
  79. package/lib/cjs/appui-react/safearea/SafeAreaContext.d.ts +1 -0
  80. package/lib/cjs/appui-react/safearea/SafeAreaContext.d.ts.map +1 -1
  81. package/lib/cjs/appui-react/safearea/SafeAreaContext.js +2 -1
  82. package/lib/cjs/appui-react/safearea/SafeAreaContext.js.map +1 -1
  83. package/lib/cjs/appui-react/safearea/SafeAreaInsets.d.ts +13 -0
  84. package/lib/cjs/appui-react/safearea/SafeAreaInsets.d.ts.map +1 -0
  85. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js +16 -0
  86. package/lib/cjs/appui-react/safearea/SafeAreaInsets.js.map +1 -0
  87. package/lib/cjs/appui-react/selection/ClearEmphasisStatusField.js +2 -1
  88. package/lib/cjs/appui-react/selection/ClearEmphasisStatusField.js.map +1 -1
  89. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  90. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +16 -3
  91. package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  92. package/lib/cjs/appui-react/shared/ActionButtonItemDef.d.ts.map +1 -1
  93. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js +3 -2
  94. package/lib/cjs/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  95. package/lib/cjs/appui-react/stagepanels/StagePanel.d.ts +3 -0
  96. package/lib/cjs/appui-react/stagepanels/StagePanel.d.ts.map +1 -1
  97. package/lib/cjs/appui-react/stagepanels/StagePanel.js +1 -0
  98. package/lib/cjs/appui-react/stagepanels/StagePanel.js.map +1 -1
  99. package/lib/cjs/appui-react/stagepanels/StagePanelConfig.d.ts +39 -0
  100. package/lib/cjs/appui-react/stagepanels/StagePanelConfig.d.ts.map +1 -0
  101. package/lib/cjs/appui-react/stagepanels/StagePanelConfig.js +11 -0
  102. package/lib/cjs/appui-react/stagepanels/StagePanelConfig.js.map +1 -0
  103. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts +6 -6
  104. package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  105. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +4 -7
  106. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  107. package/lib/cjs/appui-react/statusbar/Indicator.d.ts +26 -0
  108. package/lib/cjs/appui-react/statusbar/Indicator.d.ts.map +1 -0
  109. package/lib/cjs/appui-react/statusbar/Indicator.js +38 -0
  110. package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -0
  111. package/lib/cjs/appui-react/statusbar/Indicator.scss +110 -0
  112. package/lib/cjs/appui-react/statusbar/LabelIndicator.d.ts +24 -0
  113. package/lib/cjs/appui-react/statusbar/LabelIndicator.d.ts.map +1 -0
  114. package/lib/cjs/appui-react/statusbar/LabelIndicator.js +29 -0
  115. package/lib/cjs/appui-react/statusbar/LabelIndicator.js.map +1 -0
  116. package/lib/cjs/appui-react/statusbar/LabelIndicator.scss +43 -0
  117. package/lib/cjs/appui-react/statusbar/Separator.d.ts +10 -0
  118. package/lib/cjs/appui-react/statusbar/Separator.d.ts.map +1 -0
  119. package/lib/cjs/appui-react/statusbar/Separator.js +21 -0
  120. package/lib/cjs/appui-react/statusbar/Separator.js.map +1 -0
  121. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +2 -1
  122. package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  123. package/lib/cjs/appui-react/statusbar/dialog/Button.d.ts +21 -0
  124. package/lib/cjs/appui-react/statusbar/dialog/Button.d.ts.map +1 -0
  125. package/lib/cjs/appui-react/statusbar/dialog/Button.js +20 -0
  126. package/lib/cjs/appui-react/statusbar/dialog/Button.js.map +1 -0
  127. package/lib/cjs/appui-react/statusbar/dialog/Dialog.d.ts +30 -0
  128. package/lib/cjs/appui-react/statusbar/dialog/Dialog.d.ts.map +1 -0
  129. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js +31 -0
  130. package/lib/cjs/appui-react/statusbar/dialog/Dialog.js.map +1 -0
  131. package/lib/cjs/appui-react/statusbar/dialog/TitleBar.d.ts +19 -0
  132. package/lib/cjs/appui-react/statusbar/dialog/TitleBar.d.ts.map +1 -0
  133. package/lib/cjs/appui-react/statusbar/dialog/TitleBar.js +20 -0
  134. package/lib/cjs/appui-react/statusbar/dialog/TitleBar.js.map +1 -0
  135. package/lib/cjs/appui-react/statusfields/Indicator.d.ts +1 -0
  136. package/lib/cjs/appui-react/statusfields/Indicator.d.ts.map +1 -1
  137. package/lib/cjs/appui-react/statusfields/Indicator.js +1 -0
  138. package/lib/cjs/appui-react/statusfields/Indicator.js.map +1 -1
  139. package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  140. package/lib/cjs/appui-react/statusfields/MessageCenter.js +2 -5
  141. package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
  142. package/lib/cjs/appui-react/statusfields/PromptField.js +2 -1
  143. package/lib/cjs/appui-react/statusfields/PromptField.js.map +1 -1
  144. package/lib/cjs/appui-react/statusfields/SectionsField.d.ts.map +1 -1
  145. package/lib/cjs/appui-react/statusfields/SectionsField.js +4 -2
  146. package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
  147. package/lib/cjs/appui-react/statusfields/SelectionInfo.js +2 -1
  148. package/lib/cjs/appui-react/statusfields/SelectionInfo.js.map +1 -1
  149. package/lib/cjs/appui-react/statusfields/SelectionScope.js +2 -1
  150. package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
  151. package/lib/cjs/appui-react/statusfields/SnapMode.js +2 -1
  152. package/lib/cjs/appui-react/statusfields/SnapMode.js.map +1 -1
  153. package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  154. package/lib/cjs/appui-react/statusfields/ViewAttributes.js +3 -2
  155. package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
  156. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +0 -1
  157. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  158. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +13 -11
  159. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  160. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -1
  161. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  162. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +14 -0
  163. package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  164. package/lib/cjs/appui-react/theme/ThemeManager.d.ts +7 -1
  165. package/lib/cjs/appui-react/theme/ThemeManager.d.ts.map +1 -1
  166. package/lib/cjs/appui-react/theme/ThemeManager.js +14 -3
  167. package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
  168. package/lib/cjs/appui-react/toolbar/ActionItemButton.d.ts +2 -0
  169. package/lib/cjs/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  170. package/lib/cjs/appui-react/toolbar/ActionItemButton.js +1 -0
  171. package/lib/cjs/appui-react/toolbar/ActionItemButton.js.map +1 -1
  172. package/lib/cjs/appui-react/toolbar/GroupItem.d.ts +2 -0
  173. package/lib/cjs/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  174. package/lib/cjs/appui-react/toolbar/GroupItem.js +1 -0
  175. package/lib/cjs/appui-react/toolbar/GroupItem.js.map +1 -1
  176. package/lib/cjs/appui-react/toolbar/ToolButton.d.ts +2 -0
  177. package/lib/cjs/appui-react/toolbar/ToolButton.d.ts.map +1 -1
  178. package/lib/cjs/appui-react/toolbar/ToolButton.js +1 -0
  179. package/lib/cjs/appui-react/toolbar/ToolButton.js.map +1 -1
  180. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js +1 -1
  181. package/lib/cjs/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  182. package/lib/cjs/appui-react/tools/RestoreLayoutTool.d.ts +9 -0
  183. package/lib/cjs/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
  184. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js +17 -1
  185. package/lib/cjs/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  186. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  187. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +3 -3
  188. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  189. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +3 -3
  190. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  191. package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.js +1 -1
  192. package/lib/cjs/appui-react/uiprovider/DefaultDialogGridContainer.js.map +1 -1
  193. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts +2 -0
  194. package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  195. package/lib/cjs/appui-react/uistate/AppUiSettings.js +6 -1
  196. package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
  197. package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  198. package/lib/cjs/appui-react/utils/UiShowHideManager.js +8 -0
  199. package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
  200. package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  201. package/lib/cjs/appui-react/widget-panels/Frontstage.js +28 -19
  202. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  203. package/lib/cjs/appui-react/widget-panels/StatusBar.d.ts.map +1 -1
  204. package/lib/cjs/appui-react/widget-panels/StatusBar.js +5 -2
  205. package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
  206. package/lib/cjs/appui-react/widget-panels/Toolbars.d.ts.map +1 -1
  207. package/lib/cjs/appui-react/widget-panels/Toolbars.js +10 -3
  208. package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
  209. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.js +1 -1
  210. package/lib/cjs/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  211. package/lib/cjs/appui-react/widgets/BackstageAppButton.js +2 -2
  212. package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
  213. package/lib/cjs/appui-react/widgets/NavigationWidget.js.map +1 -1
  214. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +1 -1
  215. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  216. package/lib/cjs/appui-react/widgets/ToolWidget.js.map +1 -1
  217. package/lib/cjs/appui-react/widgets/ToolbarWidgetBase.js.map +1 -1
  218. package/lib/cjs/appui-react/widgets/Widget.d.ts +1 -0
  219. package/lib/cjs/appui-react/widgets/Widget.d.ts.map +1 -1
  220. package/lib/cjs/appui-react/widgets/Widget.js +1 -0
  221. package/lib/cjs/appui-react/widgets/Widget.js.map +1 -1
  222. package/lib/cjs/appui-react/widgets/WidgetConfig.d.ts +11 -0
  223. package/lib/cjs/appui-react/widgets/WidgetConfig.d.ts.map +1 -0
  224. package/lib/cjs/appui-react/widgets/WidgetConfig.js +10 -0
  225. package/lib/cjs/appui-react/widgets/WidgetConfig.js.map +1 -0
  226. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts +14 -1
  227. package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  228. package/lib/cjs/appui-react/widgets/WidgetDef.js +21 -11
  229. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  230. package/lib/cjs/appui-react/widgets/WidgetProps.d.ts +1 -0
  231. package/lib/cjs/appui-react/widgets/WidgetProps.d.ts.map +1 -1
  232. package/lib/cjs/appui-react/widgets/WidgetProps.js.map +1 -1
  233. package/lib/cjs/appui-react/zones/Zone.d.ts +5 -1
  234. package/lib/cjs/appui-react/zones/Zone.d.ts.map +1 -1
  235. package/lib/cjs/appui-react/zones/Zone.js +1 -0
  236. package/lib/cjs/appui-react/zones/Zone.js.map +1 -1
  237. package/lib/cjs/appui-react/zones/ZoneDef.d.ts +1 -0
  238. package/lib/cjs/appui-react/zones/ZoneDef.d.ts.map +1 -1
  239. package/lib/cjs/appui-react/zones/ZoneDef.js +2 -2
  240. package/lib/cjs/appui-react/zones/ZoneDef.js.map +1 -1
  241. package/lib/cjs/appui-react.d.ts +8 -0
  242. package/lib/cjs/appui-react.d.ts.map +1 -1
  243. package/lib/cjs/appui-react.js +8 -0
  244. package/lib/cjs/appui-react.js.map +1 -1
  245. package/lib/esm/appui-react/UiFramework.d.ts +11 -1
  246. package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
  247. package/lib/esm/appui-react/UiFramework.js +19 -4
  248. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  249. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js +2 -2
  250. package/lib/esm/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  251. package/lib/esm/appui-react/backstage/Backstage.d.ts +3 -0
  252. package/lib/esm/appui-react/backstage/Backstage.d.ts.map +1 -1
  253. package/lib/esm/appui-react/backstage/Backstage.js +3 -1
  254. package/lib/esm/appui-react/backstage/Backstage.js.map +1 -1
  255. package/lib/esm/appui-react/backstage/CommandLaunch.js +1 -1
  256. package/lib/esm/appui-react/backstage/CommandLaunch.js.map +1 -1
  257. package/lib/esm/appui-react/childwindow/ChildWindowManager.js +1 -0
  258. package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
  259. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +1 -1
  260. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
  261. package/lib/esm/appui-react/configurableui/state.d.ts +4 -1
  262. package/lib/esm/appui-react/configurableui/state.d.ts.map +1 -1
  263. package/lib/esm/appui-react/configurableui/state.js +7 -1
  264. package/lib/esm/appui-react/configurableui/state.js.map +1 -1
  265. package/lib/esm/appui-react/content/ContentGroup.d.ts +8 -0
  266. package/lib/esm/appui-react/content/ContentGroup.d.ts.map +1 -1
  267. package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
  268. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js +2 -2
  269. package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  270. package/lib/esm/appui-react/frontstage/Frontstage.d.ts +5 -1
  271. package/lib/esm/appui-react/frontstage/Frontstage.d.ts.map +1 -1
  272. package/lib/esm/appui-react/frontstage/Frontstage.js +1 -0
  273. package/lib/esm/appui-react/frontstage/Frontstage.js.map +1 -1
  274. package/lib/esm/appui-react/frontstage/FrontstageComposer.d.ts +3 -0
  275. package/lib/esm/appui-react/frontstage/FrontstageComposer.d.ts.map +1 -1
  276. package/lib/esm/appui-react/frontstage/FrontstageComposer.js +6 -3
  277. package/lib/esm/appui-react/frontstage/FrontstageComposer.js.map +1 -1
  278. package/lib/esm/appui-react/frontstage/FrontstageConfig.d.ts +40 -0
  279. package/lib/esm/appui-react/frontstage/FrontstageConfig.d.ts.map +1 -0
  280. package/lib/esm/appui-react/frontstage/FrontstageConfig.js +9 -0
  281. package/lib/esm/appui-react/frontstage/FrontstageConfig.js.map +1 -0
  282. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +8 -0
  283. package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
  284. package/lib/esm/appui-react/frontstage/FrontstageDef.js +115 -8
  285. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  286. package/lib/esm/appui-react/frontstage/FrontstageManager.d.ts +2 -4
  287. package/lib/esm/appui-react/frontstage/FrontstageManager.d.ts.map +1 -1
  288. package/lib/esm/appui-react/frontstage/FrontstageManager.js +5 -8
  289. package/lib/esm/appui-react/frontstage/FrontstageManager.js.map +1 -1
  290. package/lib/esm/appui-react/frontstage/FrontstageProvider.d.ts +9 -1
  291. package/lib/esm/appui-react/frontstage/FrontstageProvider.d.ts.map +1 -1
  292. package/lib/esm/appui-react/frontstage/FrontstageProvider.js +1 -1
  293. package/lib/esm/appui-react/frontstage/FrontstageProvider.js.map +1 -1
  294. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +14 -5
  295. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  296. package/lib/esm/appui-react/hooks/useFrameworkVersion.d.ts +13 -3
  297. package/lib/esm/appui-react/hooks/useFrameworkVersion.d.ts.map +1 -1
  298. package/lib/esm/appui-react/hooks/useFrameworkVersion.js +15 -7
  299. package/lib/esm/appui-react/hooks/useFrameworkVersion.js.map +1 -1
  300. package/lib/esm/appui-react/messages/ActivityMessage.d.ts +1 -0
  301. package/lib/esm/appui-react/messages/ActivityMessage.d.ts.map +1 -1
  302. package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
  303. package/lib/esm/appui-react/messages/ActivityMessagePopup.d.ts +2 -0
  304. package/lib/esm/appui-react/messages/ActivityMessagePopup.d.ts.map +1 -1
  305. package/lib/esm/appui-react/messages/ActivityMessagePopup.js +1 -0
  306. package/lib/esm/appui-react/messages/ActivityMessagePopup.js.map +1 -1
  307. package/lib/esm/appui-react/messages/StatusMessageRenderer.d.ts +1 -0
  308. package/lib/esm/appui-react/messages/StatusMessageRenderer.d.ts.map +1 -1
  309. package/lib/esm/appui-react/messages/StatusMessageRenderer.js.map +1 -1
  310. package/lib/esm/appui-react/messages/StickyMessage.d.ts +1 -0
  311. package/lib/esm/appui-react/messages/StickyMessage.d.ts.map +1 -1
  312. package/lib/esm/appui-react/messages/StickyMessage.js.map +1 -1
  313. package/lib/esm/appui-react/messages/ToastMessage.d.ts +1 -0
  314. package/lib/esm/appui-react/messages/ToastMessage.d.ts.map +1 -1
  315. package/lib/esm/appui-react/messages/ToastMessage.js.map +1 -1
  316. package/lib/esm/appui-react/pickers/ListPicker.d.ts +1 -0
  317. package/lib/esm/appui-react/pickers/ListPicker.d.ts.map +1 -1
  318. package/lib/esm/appui-react/pickers/ListPicker.js +4 -2
  319. package/lib/esm/appui-react/pickers/ListPicker.js.map +1 -1
  320. package/lib/esm/appui-react/pickers/ListPicker.scss +2 -1
  321. package/lib/esm/appui-react/redux/FrameworkState.d.ts +1 -1
  322. package/lib/esm/appui-react/safearea/SafeAreaContext.d.ts +1 -0
  323. package/lib/esm/appui-react/safearea/SafeAreaContext.d.ts.map +1 -1
  324. package/lib/esm/appui-react/safearea/SafeAreaContext.js +2 -1
  325. package/lib/esm/appui-react/safearea/SafeAreaContext.js.map +1 -1
  326. package/lib/esm/appui-react/safearea/SafeAreaInsets.d.ts +13 -0
  327. package/lib/esm/appui-react/safearea/SafeAreaInsets.d.ts.map +1 -0
  328. package/lib/esm/appui-react/safearea/SafeAreaInsets.js +13 -0
  329. package/lib/esm/appui-react/safearea/SafeAreaInsets.js.map +1 -0
  330. package/lib/esm/appui-react/selection/ClearEmphasisStatusField.js +2 -1
  331. package/lib/esm/appui-react/selection/ClearEmphasisStatusField.js.map +1 -1
  332. package/lib/esm/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
  333. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +16 -3
  334. package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
  335. package/lib/esm/appui-react/shared/ActionButtonItemDef.d.ts.map +1 -1
  336. package/lib/esm/appui-react/shared/ActionButtonItemDef.js +3 -2
  337. package/lib/esm/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  338. package/lib/esm/appui-react/stagepanels/StagePanel.d.ts +3 -0
  339. package/lib/esm/appui-react/stagepanels/StagePanel.d.ts.map +1 -1
  340. package/lib/esm/appui-react/stagepanels/StagePanel.js +1 -0
  341. package/lib/esm/appui-react/stagepanels/StagePanel.js.map +1 -1
  342. package/lib/esm/appui-react/stagepanels/StagePanelConfig.d.ts +39 -0
  343. package/lib/esm/appui-react/stagepanels/StagePanelConfig.d.ts.map +1 -0
  344. package/lib/esm/appui-react/stagepanels/StagePanelConfig.js +10 -0
  345. package/lib/esm/appui-react/stagepanels/StagePanelConfig.js.map +1 -0
  346. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts +6 -6
  347. package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
  348. package/lib/esm/appui-react/stagepanels/StagePanelDef.js +4 -7
  349. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  350. package/lib/esm/appui-react/statusbar/Indicator.d.ts +26 -0
  351. package/lib/esm/appui-react/statusbar/Indicator.d.ts.map +1 -0
  352. package/lib/esm/appui-react/statusbar/Indicator.js +34 -0
  353. package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -0
  354. package/lib/esm/appui-react/statusbar/Indicator.scss +110 -0
  355. package/lib/esm/appui-react/statusbar/LabelIndicator.d.ts +24 -0
  356. package/lib/esm/appui-react/statusbar/LabelIndicator.d.ts.map +1 -0
  357. package/lib/esm/appui-react/statusbar/LabelIndicator.js +25 -0
  358. package/lib/esm/appui-react/statusbar/LabelIndicator.js.map +1 -0
  359. package/lib/esm/appui-react/statusbar/LabelIndicator.scss +43 -0
  360. package/lib/esm/appui-react/statusbar/Separator.d.ts +10 -0
  361. package/lib/esm/appui-react/statusbar/Separator.d.ts.map +1 -0
  362. package/lib/esm/appui-react/statusbar/Separator.js +17 -0
  363. package/lib/esm/appui-react/statusbar/Separator.js.map +1 -0
  364. package/lib/esm/appui-react/statusbar/StatusBarComposer.js +2 -1
  365. package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
  366. package/lib/esm/appui-react/statusbar/dialog/Button.d.ts +21 -0
  367. package/lib/esm/appui-react/statusbar/dialog/Button.d.ts.map +1 -0
  368. package/lib/esm/appui-react/statusbar/dialog/Button.js +16 -0
  369. package/lib/esm/appui-react/statusbar/dialog/Button.js.map +1 -0
  370. package/lib/esm/appui-react/statusbar/dialog/Dialog.d.ts +30 -0
  371. package/lib/esm/appui-react/statusbar/dialog/Dialog.d.ts.map +1 -0
  372. package/lib/esm/appui-react/statusbar/dialog/Dialog.js +27 -0
  373. package/lib/esm/appui-react/statusbar/dialog/Dialog.js.map +1 -0
  374. package/lib/esm/appui-react/statusbar/dialog/TitleBar.d.ts +19 -0
  375. package/lib/esm/appui-react/statusbar/dialog/TitleBar.d.ts.map +1 -0
  376. package/lib/esm/appui-react/statusbar/dialog/TitleBar.js +16 -0
  377. package/lib/esm/appui-react/statusbar/dialog/TitleBar.js.map +1 -0
  378. package/lib/esm/appui-react/statusfields/Indicator.d.ts +1 -0
  379. package/lib/esm/appui-react/statusfields/Indicator.d.ts.map +1 -1
  380. package/lib/esm/appui-react/statusfields/Indicator.js +1 -0
  381. package/lib/esm/appui-react/statusfields/Indicator.js.map +1 -1
  382. package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
  383. package/lib/esm/appui-react/statusfields/MessageCenter.js +2 -5
  384. package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
  385. package/lib/esm/appui-react/statusfields/PromptField.js +2 -1
  386. package/lib/esm/appui-react/statusfields/PromptField.js.map +1 -1
  387. package/lib/esm/appui-react/statusfields/SectionsField.d.ts.map +1 -1
  388. package/lib/esm/appui-react/statusfields/SectionsField.js +5 -3
  389. package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
  390. package/lib/esm/appui-react/statusfields/SelectionInfo.js +2 -1
  391. package/lib/esm/appui-react/statusfields/SelectionInfo.js.map +1 -1
  392. package/lib/esm/appui-react/statusfields/SelectionScope.js +2 -1
  393. package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
  394. package/lib/esm/appui-react/statusfields/SnapMode.js +2 -1
  395. package/lib/esm/appui-react/statusfields/SnapMode.js.map +1 -1
  396. package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
  397. package/lib/esm/appui-react/statusfields/ViewAttributes.js +3 -2
  398. package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
  399. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +0 -1
  400. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
  401. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +15 -13
  402. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  403. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +6 -1
  404. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
  405. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +14 -0
  406. package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  407. package/lib/esm/appui-react/theme/ThemeManager.d.ts +7 -1
  408. package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
  409. package/lib/esm/appui-react/theme/ThemeManager.js +13 -2
  410. package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
  411. package/lib/esm/appui-react/toolbar/ActionItemButton.d.ts +2 -0
  412. package/lib/esm/appui-react/toolbar/ActionItemButton.d.ts.map +1 -1
  413. package/lib/esm/appui-react/toolbar/ActionItemButton.js +1 -0
  414. package/lib/esm/appui-react/toolbar/ActionItemButton.js.map +1 -1
  415. package/lib/esm/appui-react/toolbar/GroupItem.d.ts +2 -0
  416. package/lib/esm/appui-react/toolbar/GroupItem.d.ts.map +1 -1
  417. package/lib/esm/appui-react/toolbar/GroupItem.js +1 -0
  418. package/lib/esm/appui-react/toolbar/GroupItem.js.map +1 -1
  419. package/lib/esm/appui-react/toolbar/ToolButton.d.ts +2 -0
  420. package/lib/esm/appui-react/toolbar/ToolButton.d.ts.map +1 -1
  421. package/lib/esm/appui-react/toolbar/ToolButton.js +1 -0
  422. package/lib/esm/appui-react/toolbar/ToolButton.js.map +1 -1
  423. package/lib/esm/appui-react/toolbar/ToolbarComposer.js +1 -1
  424. package/lib/esm/appui-react/toolbar/ToolbarComposer.js.map +1 -1
  425. package/lib/esm/appui-react/tools/RestoreLayoutTool.d.ts +9 -0
  426. package/lib/esm/appui-react/tools/RestoreLayoutTool.d.ts.map +1 -1
  427. package/lib/esm/appui-react/tools/RestoreLayoutTool.js +15 -0
  428. package/lib/esm/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  429. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
  430. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +3 -3
  431. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  432. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +3 -3
  433. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  434. package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.js +1 -1
  435. package/lib/esm/appui-react/uiprovider/DefaultDialogGridContainer.js.map +1 -1
  436. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts +2 -0
  437. package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
  438. package/lib/esm/appui-react/uistate/AppUiSettings.js +6 -1
  439. package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
  440. package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
  441. package/lib/esm/appui-react/utils/UiShowHideManager.js +8 -0
  442. package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
  443. package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
  444. package/lib/esm/appui-react/widget-panels/Frontstage.js +28 -19
  445. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  446. package/lib/esm/appui-react/widget-panels/StatusBar.d.ts.map +1 -1
  447. package/lib/esm/appui-react/widget-panels/StatusBar.js +5 -2
  448. package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
  449. package/lib/esm/appui-react/widget-panels/Toolbars.d.ts.map +1 -1
  450. package/lib/esm/appui-react/widget-panels/Toolbars.js +10 -3
  451. package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
  452. package/lib/esm/appui-react/widget-panels/useWidgetDirection.js +1 -1
  453. package/lib/esm/appui-react/widget-panels/useWidgetDirection.js.map +1 -1
  454. package/lib/esm/appui-react/widgets/BackstageAppButton.js +2 -2
  455. package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
  456. package/lib/esm/appui-react/widgets/NavigationWidget.js.map +1 -1
  457. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +1 -1
  458. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  459. package/lib/esm/appui-react/widgets/ToolWidget.js.map +1 -1
  460. package/lib/esm/appui-react/widgets/ToolbarWidgetBase.js.map +1 -1
  461. package/lib/esm/appui-react/widgets/Widget.d.ts +1 -0
  462. package/lib/esm/appui-react/widgets/Widget.d.ts.map +1 -1
  463. package/lib/esm/appui-react/widgets/Widget.js +1 -0
  464. package/lib/esm/appui-react/widgets/Widget.js.map +1 -1
  465. package/lib/esm/appui-react/widgets/WidgetConfig.d.ts +11 -0
  466. package/lib/esm/appui-react/widgets/WidgetConfig.d.ts.map +1 -0
  467. package/lib/esm/appui-react/widgets/WidgetConfig.js +9 -0
  468. package/lib/esm/appui-react/widgets/WidgetConfig.js.map +1 -0
  469. package/lib/esm/appui-react/widgets/WidgetDef.d.ts +14 -1
  470. package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
  471. package/lib/esm/appui-react/widgets/WidgetDef.js +21 -11
  472. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  473. package/lib/esm/appui-react/widgets/WidgetProps.d.ts +1 -0
  474. package/lib/esm/appui-react/widgets/WidgetProps.d.ts.map +1 -1
  475. package/lib/esm/appui-react/widgets/WidgetProps.js.map +1 -1
  476. package/lib/esm/appui-react/zones/Zone.d.ts +5 -1
  477. package/lib/esm/appui-react/zones/Zone.d.ts.map +1 -1
  478. package/lib/esm/appui-react/zones/Zone.js +1 -0
  479. package/lib/esm/appui-react/zones/Zone.js.map +1 -1
  480. package/lib/esm/appui-react/zones/ZoneDef.d.ts +1 -0
  481. package/lib/esm/appui-react/zones/ZoneDef.d.ts.map +1 -1
  482. package/lib/esm/appui-react/zones/ZoneDef.js +2 -2
  483. package/lib/esm/appui-react/zones/ZoneDef.js.map +1 -1
  484. package/lib/esm/appui-react.d.ts +8 -0
  485. package/lib/esm/appui-react.d.ts.map +1 -1
  486. package/lib/esm/appui-react.js +8 -0
  487. package/lib/esm/appui-react.js.map +1 -1
  488. package/lib/public/locales/en/UiFramework.json +11 -4
  489. package/package.json +34 -34
@@ -1 +1 @@
1
- {"version":3,"file":"StagePanelDef.js","sourceRoot":"","sources":["../../../../src/appui-react/stagepanels/StagePanelDef.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/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module Frontstage\r\n */\r\n\r\nimport produce, { Draft } from \"immer\";\r\nimport { StagePanelLocation, StagePanelSection, UiEvent } from \"@itwin/appui-abstract\";\r\nimport { NineZoneState, PanelSide } from \"@itwin/appui-layout-react\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { WidgetDef } from \"../widgets/WidgetDef\";\r\nimport { WidgetHost } from \"../widgets/WidgetHost\";\r\nimport { StagePanelMaxSizeSpec, StagePanelProps, StagePanelZoneProps, StagePanelZonesProps } from \"./StagePanel\";\r\nimport { getStableWidgetProps, ZoneLocation } from \"../zones/Zone\";\r\nimport { UiFramework } from \"../UiFramework\";\r\n\r\n/** Enum for StagePanel state.\r\n * @public\r\n */\r\nexport enum StagePanelState {\r\n Off,\r\n Minimized,\r\n Open,\r\n Popup,\r\n}\r\n\r\n/** Panel State Changed Event Args interface.\r\n * @public\r\n */\r\nexport interface PanelStateChangedEventArgs {\r\n panelDef: StagePanelDef;\r\n panelState: StagePanelState;\r\n}\r\n\r\n/** Panel State Changed Event class.\r\n * @beta\r\n */\r\nexport class PanelStateChangedEvent extends UiEvent<PanelStateChangedEventArgs> { }\r\n\r\n/** @internal */\r\nexport interface PanelSizeChangedEventArgs {\r\n panelDef: StagePanelDef;\r\n size: number | undefined;\r\n}\r\n\r\n/** @internal */\r\nexport class PanelSizeChangedEvent extends UiEvent<PanelSizeChangedEventArgs> { }\r\n\r\n/**\r\n * A StagePanelDef represents each Stage Panel within a Frontstage.\r\n * @public\r\n */\r\nexport class StagePanelDef extends WidgetHost {\r\n private _panelState = StagePanelState.Open;\r\n private _defaultState = StagePanelState.Open;\r\n private _maxSizeSpec: StagePanelMaxSizeSpec | undefined;\r\n private _minSize: number | undefined;\r\n private _size: number | undefined;\r\n private _defaultSize: number | undefined;\r\n private _resizable = true;\r\n private _pinned = true;\r\n private _applicationData?: any;\r\n private _location: StagePanelLocation = StagePanelLocation.Left;\r\n private _panelZones = new StagePanelZonesDef();\r\n\r\n /** Constructor for PanelDef.\r\n */\r\n constructor() {\r\n super();\r\n }\r\n\r\n /** @internal */\r\n public get maxSizeSpec() { return this._maxSizeSpec; }\r\n\r\n /** @internal */\r\n public get minSize() { return this._minSize; }\r\n\r\n /** Default size of the panel */\r\n public get size() {\r\n // istanbul ignore next\r\n if (\"1\" === UiFramework.uiVersion)\r\n return this._size;\r\n\r\n // istanbul ignore else\r\n if (FrontstageManager.activeFrontstageDef) {\r\n const [_, size] = FrontstageManager.activeFrontstageDef.getPanelCurrentState(this);\r\n return size;\r\n }\r\n // istanbul ignore next\r\n return this._defaultSize;\r\n }\r\n\r\n public set size(size) {\r\n if (this._size === size)\r\n return;\r\n\r\n // istanbul ignore else\r\n if (UiFramework.uiVersion === \"2\") {\r\n const frontstageDef = FrontstageManager.activeFrontstageDef;\r\n // istanbul ignore else\r\n if (frontstageDef && frontstageDef.nineZoneState) {\r\n const side = toPanelSide(this.location);\r\n frontstageDef.nineZoneState = setPanelSize(frontstageDef.nineZoneState, side, size);\r\n const panel = frontstageDef.nineZoneState.panels[side];\r\n if (panel.size === this._size)\r\n return;\r\n size = panel.size;\r\n }\r\n }\r\n this._size = size;\r\n FrontstageManager.onPanelSizeChangedEvent.emit({\r\n panelDef: this,\r\n size,\r\n });\r\n }\r\n\r\n /** Indicates whether the panel is resizable. */\r\n // istanbul ignore next\r\n public get resizable(): boolean { return this._resizable; }\r\n\r\n /** Indicates whether the panel is pinned. */\r\n public get pinned(): boolean { return this._pinned; }\r\n\r\n /** Any application data to attach to this Panel. */\r\n public get applicationData(): any | undefined { return this._applicationData; }\r\n /** Location of panel. */\r\n public get location(): StagePanelLocation { return this._location; }\r\n\r\n /** Panel state. Defaults to PanelState.Open. */\r\n public get panelState() {\r\n if (\"1\" === UiFramework.uiVersion)\r\n return this._panelState;\r\n\r\n // istanbul ignore else\r\n if (FrontstageManager.activeFrontstageDef) {\r\n const [state] = FrontstageManager.activeFrontstageDef?.getPanelCurrentState(this);\r\n return state;\r\n }\r\n // istanbul ignore next\r\n return this.defaultState;\r\n }\r\n\r\n public set panelState(panelState: StagePanelState) {\r\n if (panelState === this._panelState)\r\n return;\r\n const frontstageDef = FrontstageManager.activeFrontstageDef;\r\n if (UiFramework.uiVersion === \"2\" && frontstageDef && frontstageDef.nineZoneState) {\r\n const side = toPanelSide(this.location);\r\n frontstageDef.nineZoneState = produce(frontstageDef.nineZoneState, (nineZone) => {\r\n const panel = nineZone.panels[side];\r\n switch (panelState) {\r\n case StagePanelState.Minimized: {\r\n panel.collapsed = true;\r\n break;\r\n }\r\n case StagePanelState.Open: {\r\n panel.collapsed = false;\r\n break;\r\n }\r\n case StagePanelState.Off: {\r\n panel.collapsed = true;\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n this._panelState = panelState;\r\n FrontstageManager.onPanelStateChangedEvent.emit({\r\n panelDef: this,\r\n panelState,\r\n });\r\n }\r\n\r\n /** @internal */\r\n public get defaultState() { return this._defaultState; }\r\n\r\n /** @internal */\r\n public get defaultSize() { return this._defaultSize; }\r\n\r\n /** Panel zones.\r\n * @internal\r\n */\r\n public get panelZones() {\r\n return this._panelZones;\r\n }\r\n\r\n /** @internal */\r\n public initializeFromProps(props?: StagePanelProps, panelLocation?: StagePanelLocation): void {\r\n if (panelLocation !== undefined)\r\n this._location = panelLocation;\r\n if (!props)\r\n return;\r\n this._size = props.size;\r\n this._defaultSize = props.size;\r\n this._maxSizeSpec = props.maxSize;\r\n this._minSize = props.minSize;\r\n if (panelLocation !== undefined)\r\n this._location = panelLocation;\r\n if (props.defaultState !== undefined) {\r\n this._panelState = props.defaultState;\r\n this._defaultState = props.defaultState;\r\n }\r\n this._resizable = props.resizable;\r\n if (props.pinned !== undefined)\r\n this._pinned = props.pinned;\r\n if (props.applicationData !== undefined)\r\n this._applicationData = props.applicationData;\r\n if (props.panelZones) {\r\n this._panelZones.initializeFromProps(props.panelZones, this._location);\r\n }\r\n\r\n if (props.widgets) {\r\n props.widgets.forEach((widgetNode, index) => {\r\n const stableId = `uifw-sp-${StagePanelLocation[this._location]}-${index}`;\r\n const stableProps = getStableWidgetProps(widgetNode.props, stableId);\r\n const widgetDef = new WidgetDef(stableProps);\r\n this.addWidgetDef(widgetDef);\r\n });\r\n }\r\n }\r\n\r\n /** Gets the list of Widgets. */\r\n public override get widgetDefs(): ReadonlyArray<WidgetDef> {\r\n const widgetDefs = [...super.widgetDefs];\r\n for (const [, panelZone] of this.panelZones) {\r\n widgetDefs.push(...panelZone.widgetDefs);\r\n }\r\n return widgetDefs;\r\n }\r\n\r\n /** Gets the list of Widgets (w/o StagePanelZone widgets).\r\n * @internal\r\n */\r\n public get panelWidgetDefs() {\r\n return super.widgetDefs;\r\n }\r\n\r\n /** @internal */\r\n public override updateDynamicWidgetDefs(stageId: string, stageUsage: string, location: ZoneLocation | StagePanelLocation, _section: StagePanelSection | undefined,\r\n allStageWidgetDefs: WidgetDef[], frontstageApplicationData?: any,\r\n ): void {\r\n this.panelZones.start.updateDynamicWidgetDefs(stageId, stageUsage, location, StagePanelSection.Start, allStageWidgetDefs, frontstageApplicationData);\r\n this.panelZones.end.updateDynamicWidgetDefs(stageId, stageUsage, location, StagePanelSection.Middle, allStageWidgetDefs, frontstageApplicationData);\r\n this.panelZones.end.updateDynamicWidgetDefs(stageId, stageUsage, location, StagePanelSection.End, allStageWidgetDefs, frontstageApplicationData);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type StagePanelZoneDefKeys = keyof Pick<StagePanelZonesDef, \"start\" | \"end\">;\r\n\r\nconst stagePanelZoneDefKeys: StagePanelZoneDefKeys[] = [\"start\", \"end\"];\r\n\r\n/** @internal */\r\nexport class StagePanelZonesDef {\r\n private _start = new StagePanelZoneDef();\r\n private _end = new StagePanelZoneDef();\r\n\r\n public get start() {\r\n return this._start;\r\n }\r\n\r\n public get end() {\r\n return this._end;\r\n }\r\n\r\n /** @internal */\r\n public initializeFromProps(props: StagePanelZonesProps, panelLocation: StagePanelLocation): void {\r\n if (props.start) {\r\n this.start.initializeFromProps(props.start, panelLocation, \"start\");\r\n }\r\n if (props.middle) {\r\n this.end.initializeFromProps(props.middle, panelLocation, \"end\");\r\n }\r\n if (props.end) {\r\n this.end.initializeFromProps(props.end, panelLocation, \"end\");\r\n }\r\n }\r\n\r\n /** @internal */\r\n public *[Symbol.iterator](): Iterator<[StagePanelZoneDefKeys, StagePanelZoneDef]> {\r\n for (const key of stagePanelZoneDefKeys) {\r\n const value = this[key];\r\n yield [key, value];\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class StagePanelZoneDef extends WidgetHost {\r\n /** @internal */\r\n public initializeFromProps(props: StagePanelZoneProps, panelLocation: StagePanelLocation, panelZone: StagePanelZoneDefKeys): void {\r\n props.widgets.forEach((widgetNode, index) => {\r\n const stableId = `uifw-spz-${StagePanelLocation[panelLocation]}-${panelZone}-${index}`;\r\n const stableProps = getStableWidgetProps(widgetNode.props, stableId);\r\n const widgetDef = new WidgetDef(stableProps);\r\n this.addWidgetDef(widgetDef);\r\n });\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function toPanelSide(location: StagePanelLocation): PanelSide {\r\n switch (location) {\r\n case StagePanelLocation.Bottom:\r\n case StagePanelLocation.BottomMost:\r\n return \"bottom\";\r\n case StagePanelLocation.Left:\r\n return \"left\";\r\n case StagePanelLocation.Right:\r\n return \"right\";\r\n case StagePanelLocation.Top:\r\n case StagePanelLocation.TopMost:\r\n return \"top\";\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const setPanelSize = produce((\r\n nineZone: Draft<NineZoneState>,\r\n side: PanelSide,\r\n size: number | undefined,\r\n) => {\r\n const panel = nineZone.panels[side];\r\n panel.size = size === undefined ? size : Math.min(Math.max(size, panel.minSize), panel.maxSize);\r\n});\r\n"]}
1
+ {"version":3,"file":"StagePanelDef.js","sourceRoot":"","sources":["../../../../src/appui-react/stagepanels/StagePanelDef.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/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module Frontstage\r\n */\r\n\r\nimport produce, { Draft } from \"immer\";\r\nimport { StagePanelLocation, StagePanelSection, UiEvent } from \"@itwin/appui-abstract\";\r\nimport { NineZoneState, PanelSide } from \"@itwin/appui-layout-react\";\r\nimport { FrontstageManager } from \"../frontstage/FrontstageManager\";\r\nimport { WidgetDef } from \"../widgets/WidgetDef\";\r\nimport { WidgetHost } from \"../widgets/WidgetHost\";\r\nimport { StagePanelMaxSizeSpec, StagePanelProps, StagePanelZoneProps, StagePanelZonesProps } from \"./StagePanel\";\r\nimport { getStableWidgetProps, ZoneLocation } from \"../zones/Zone\";\r\nimport { UiFramework } from \"../UiFramework\";\r\n\r\n/** Enum for StagePanel state.\r\n * @public\r\n */\r\nexport enum StagePanelState {\r\n Off,\r\n Minimized,\r\n Open,\r\n Popup,\r\n}\r\n\r\n/** Panel State Changed Event Args interface.\r\n * @public\r\n */\r\nexport interface PanelStateChangedEventArgs {\r\n panelDef: StagePanelDef;\r\n panelState: StagePanelState;\r\n}\r\n\r\n/** Panel State Changed Event class.\r\n * @beta\r\n */\r\nexport class PanelStateChangedEvent extends UiEvent<PanelStateChangedEventArgs> { }\r\n\r\n/** @internal */\r\nexport interface PanelSizeChangedEventArgs {\r\n panelDef: StagePanelDef;\r\n size: number | undefined;\r\n}\r\n\r\n/** @internal */\r\nexport class PanelSizeChangedEvent extends UiEvent<PanelSizeChangedEventArgs> { }\r\n\r\n/**\r\n * A StagePanelDef represents each Stage Panel within a Frontstage.\r\n * @public\r\n */\r\nexport class StagePanelDef extends WidgetHost {\r\n private _panelState = StagePanelState.Open;\r\n private _defaultState = StagePanelState.Open;\r\n private _maxSizeSpec: StagePanelMaxSizeSpec | undefined;\r\n private _minSize: number | undefined;\r\n private _size: number | undefined;\r\n private _defaultSize: number | undefined;\r\n private _resizable = true;\r\n private _pinned = true;\r\n private _applicationData?: any;\r\n private _location: StagePanelLocation = StagePanelLocation.Left;\r\n private _panelZones = new StagePanelZonesDef();\r\n\r\n /** Constructor for PanelDef.\r\n */\r\n constructor() {\r\n super();\r\n }\r\n\r\n /** @internal */\r\n public get maxSizeSpec() { return this._maxSizeSpec; }\r\n\r\n /** @internal */\r\n public get minSize() { return this._minSize; }\r\n\r\n /** Default size of the panel */\r\n public get size() {\r\n // istanbul ignore next\r\n if (\"1\" === UiFramework.uiVersion)\r\n return this._size;\r\n\r\n // istanbul ignore else\r\n if (FrontstageManager.activeFrontstageDef) {\r\n const [_, size] = FrontstageManager.activeFrontstageDef.getPanelCurrentState(this);\r\n return size;\r\n }\r\n // istanbul ignore next\r\n return this._defaultSize;\r\n }\r\n\r\n public set size(size) {\r\n if (this._size === size)\r\n return;\r\n\r\n // istanbul ignore else\r\n if (UiFramework.uiVersion === \"2\") {\r\n const frontstageDef = FrontstageManager.activeFrontstageDef;\r\n // istanbul ignore else\r\n if (frontstageDef && frontstageDef.nineZoneState) {\r\n const side = toPanelSide(this.location);\r\n frontstageDef.nineZoneState = setPanelSize(frontstageDef.nineZoneState, side, size);\r\n const panel = frontstageDef.nineZoneState.panels[side];\r\n if (panel.size === this._size)\r\n return;\r\n size = panel.size;\r\n }\r\n }\r\n this._size = size;\r\n FrontstageManager.onPanelSizeChangedEvent.emit({\r\n panelDef: this,\r\n size,\r\n });\r\n }\r\n\r\n /** Indicates whether the panel is resizable. */\r\n // istanbul ignore next\r\n public get resizable(): boolean { return this._resizable; }\r\n\r\n /** Indicates whether the panel is pinned. */\r\n public get pinned(): boolean { return this._pinned; }\r\n\r\n /** Any application data to attach to this Panel. */\r\n public get applicationData(): any | undefined { return this._applicationData; }\r\n /** Location of panel. */\r\n public get location(): StagePanelLocation { return this._location; }\r\n\r\n /** Panel state. Defaults to PanelState.Open. */\r\n public get panelState() {\r\n if (\"1\" === UiFramework.uiVersion)\r\n return this._panelState;\r\n\r\n // istanbul ignore else\r\n if (FrontstageManager.activeFrontstageDef) {\r\n const [state] = FrontstageManager.activeFrontstageDef?.getPanelCurrentState(this);\r\n return state;\r\n }\r\n // istanbul ignore next\r\n return this.defaultState;\r\n }\r\n\r\n public set panelState(panelState: StagePanelState) {\r\n if (panelState === this._panelState)\r\n return;\r\n const frontstageDef = FrontstageManager.activeFrontstageDef;\r\n if (UiFramework.uiVersion === \"2\" && frontstageDef && frontstageDef.nineZoneState) {\r\n const side = toPanelSide(this.location);\r\n frontstageDef.nineZoneState = produce(frontstageDef.nineZoneState, (nineZone) => {\r\n const panel = nineZone.panels[side];\r\n switch (panelState) {\r\n case StagePanelState.Minimized: {\r\n panel.collapsed = true;\r\n break;\r\n }\r\n case StagePanelState.Open: {\r\n panel.collapsed = false;\r\n break;\r\n }\r\n case StagePanelState.Off: {\r\n panel.collapsed = true;\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n this._panelState = panelState;\r\n FrontstageManager.onPanelStateChangedEvent.emit({\r\n panelDef: this,\r\n panelState,\r\n });\r\n }\r\n\r\n /** @internal */\r\n public get defaultState() { return this._defaultState; }\r\n\r\n /** @internal */\r\n public get defaultSize() { return this._defaultSize; }\r\n\r\n /** Panel zones.\r\n * @internal\r\n */\r\n public get panelZones() {\r\n return this._panelZones;\r\n }\r\n\r\n /** @internal */\r\n public initializeFromProps(props?: StagePanelProps, location?: StagePanelLocation): void {\r\n if (location !== undefined)\r\n this._location = location;\r\n if (!props)\r\n return;\r\n this._size = props.size;\r\n this._defaultSize = props.size;\r\n this._maxSizeSpec = props.maxSize;\r\n this._minSize = props.minSize;\r\n if (props.defaultState !== undefined) {\r\n this._panelState = props.defaultState;\r\n this._defaultState = props.defaultState;\r\n }\r\n this._resizable = props.resizable;\r\n if (props.pinned !== undefined)\r\n this._pinned = props.pinned;\r\n this._applicationData = props.applicationData;\r\n if (props.panelZones) {\r\n this._panelZones.initializeFromProps(props.panelZones, this._location);\r\n }\r\n\r\n if (props.widgets) {\r\n props.widgets.forEach((widgetNode, index) => {\r\n const stableId = `uifw-sp-${StagePanelLocation[this._location]}-${index}`;\r\n const stableProps = getStableWidgetProps(widgetNode.props, stableId);\r\n const widgetDef = new WidgetDef(stableProps);\r\n this.addWidgetDef(widgetDef);\r\n });\r\n }\r\n }\r\n\r\n /** Gets the list of Widgets. */\r\n public override get widgetDefs(): ReadonlyArray<WidgetDef> {\r\n const widgetDefs = [...super.widgetDefs];\r\n for (const [, panelZone] of this.panelZones) {\r\n widgetDefs.push(...panelZone.widgetDefs);\r\n }\r\n return widgetDefs;\r\n }\r\n\r\n /** Gets the list of Widgets (w/o StagePanelZone widgets).\r\n * @internal\r\n */\r\n public get panelWidgetDefs() {\r\n return super.widgetDefs;\r\n }\r\n\r\n /** @internal */\r\n public override updateDynamicWidgetDefs(stageId: string, stageUsage: string, location: ZoneLocation | StagePanelLocation, _section: StagePanelSection | undefined,\r\n allStageWidgetDefs: WidgetDef[], frontstageApplicationData?: any,\r\n ): void {\r\n this.panelZones.start.updateDynamicWidgetDefs(stageId, stageUsage, location, StagePanelSection.Start, allStageWidgetDefs, frontstageApplicationData);\r\n this.panelZones.end.updateDynamicWidgetDefs(stageId, stageUsage, location, StagePanelSection.Middle, allStageWidgetDefs, frontstageApplicationData);\r\n this.panelZones.end.updateDynamicWidgetDefs(stageId, stageUsage, location, StagePanelSection.End, allStageWidgetDefs, frontstageApplicationData);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport type StagePanelZoneDefKeys = keyof Pick<StagePanelZonesDef, \"start\" | \"end\">;\r\n\r\nconst stagePanelZoneDefKeys: StagePanelZoneDefKeys[] = [\"start\", \"end\"];\r\n\r\n/** @internal */\r\nexport class StagePanelZonesDef {\r\n private _start = new StagePanelZoneDef();\r\n private _end = new StagePanelZoneDef();\r\n\r\n public get start() {\r\n return this._start;\r\n }\r\n\r\n public get end() {\r\n return this._end;\r\n }\r\n\r\n /** @internal */\r\n public initializeFromProps(props: StagePanelZonesProps, panelLocation: StagePanelLocation): void {\r\n if (props.start) {\r\n this.start.initializeFromProps(props.start, panelLocation, \"start\");\r\n }\r\n if (props.middle) {\r\n this.end.initializeFromProps(props.middle, panelLocation, \"end\");\r\n }\r\n if (props.end) {\r\n this.end.initializeFromProps(props.end, panelLocation, \"end\");\r\n }\r\n }\r\n\r\n /** @internal */\r\n public *[Symbol.iterator](): Iterator<[StagePanelZoneDefKeys, StagePanelZoneDef]> {\r\n for (const key of stagePanelZoneDefKeys) {\r\n const value = this[key];\r\n yield [key, value];\r\n }\r\n return undefined;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class StagePanelZoneDef extends WidgetHost {\r\n /** @internal */\r\n public initializeFromProps(props: StagePanelZoneProps, panelLocation: StagePanelLocation, panelZone: StagePanelZoneDefKeys): void {\r\n props.widgets.forEach((widgetNode, index) => {\r\n const stableId = `uifw-spz-${StagePanelLocation[panelLocation]}-${panelZone}-${index}`;\r\n const stableProps = getStableWidgetProps(widgetNode.props, stableId);\r\n const widgetDef = new WidgetDef(stableProps);\r\n this.addWidgetDef(widgetDef);\r\n });\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function toPanelSide(location: StagePanelLocation): PanelSide {\r\n switch (location) {\r\n case StagePanelLocation.Bottom:\r\n case StagePanelLocation.BottomMost:\r\n return \"bottom\";\r\n case StagePanelLocation.Left:\r\n return \"left\";\r\n case StagePanelLocation.Right:\r\n return \"right\";\r\n case StagePanelLocation.Top:\r\n case StagePanelLocation.TopMost:\r\n return \"top\";\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport const setPanelSize = produce((\r\n nineZone: Draft<NineZoneState>,\r\n side: PanelSide,\r\n size: number | undefined,\r\n) => {\r\n const panel = nineZone.panels[side];\r\n panel.size = size === undefined ? size : Math.min(Math.max(size, panel.minSize), panel.maxSize);\r\n});\r\n"]}
@@ -0,0 +1,26 @@
1
+ /** @packageDocumentation
2
+ * @module StatusBar
3
+ */
4
+ import "./Indicator.scss";
5
+ import * as React from "react";
6
+ import { CommonProps } from "@itwin/core-react";
7
+ /** Properties of [[StatusBarIndicator]] component.
8
+ * @beta
9
+ */
10
+ export interface StatusBarIndicatorProps extends CommonProps {
11
+ /** Indicator content. */
12
+ children?: React.ReactNode;
13
+ /** Content to display in a popup when indicator is clicked. */
14
+ popup?: React.ReactNode;
15
+ /** Function called when indicator is clicked. */
16
+ onClick?: () => void;
17
+ /** Default state of an indicator popup. */
18
+ defaultIsOpen?: boolean;
19
+ /** Title of an indicator. */
20
+ title?: string;
21
+ }
22
+ /** General-purpose [[StatusBar]] indicator.
23
+ * @beta
24
+ */
25
+ export declare function StatusBarIndicator(props: StatusBarIndicatorProps): JSX.Element;
26
+ //# sourceMappingURL=Indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Indicator.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/Indicator.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAE1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,yBAAyB;IACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,+DAA+D;IAC/D,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,2CAA2C;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,eAqChE"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module StatusBar
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.StatusBarIndicator = void 0;
11
+ require("./Indicator.scss");
12
+ const classnames_1 = require("classnames");
13
+ const React = require("react");
14
+ const appui_layout_react_1 = require("@itwin/appui-layout-react");
15
+ /** General-purpose [[StatusBar]] indicator.
16
+ * @beta
17
+ */
18
+ function StatusBarIndicator(props) {
19
+ const hasClickAction = !!props.onClick || !!props.popup;
20
+ const [isOpen, setIsOpen] = React.useState(!!props.defaultIsOpen);
21
+ const handleOnIndicatorClick = () => {
22
+ var _a;
23
+ setIsOpen(!isOpen);
24
+ (_a = props.onClick) === null || _a === void 0 ? void 0 : _a.call(props);
25
+ };
26
+ const target = React.useRef(null);
27
+ const classNames = (0, classnames_1.default)("uifw-statusbar-indicator", hasClickAction && "uifw-action", props.className);
28
+ return (React.createElement(React.Fragment, null,
29
+ React.createElement(appui_layout_react_1.FooterIndicator // eslint-disable-line deprecation/deprecation
30
+ , { ref: target, className: classNames, title: props.title, style: props.style, onClick: handleOnIndicatorClick, ...{
31
+ role: "button",
32
+ tabIndex: -1,
33
+ } }, props.children),
34
+ props.popup && React.createElement(appui_layout_react_1.FooterPopup // eslint-disable-line deprecation/deprecation
35
+ , { target: target.current, onClose: () => setIsOpen(false), isOpen: isOpen }, props.popup)));
36
+ }
37
+ exports.StatusBarIndicator = StatusBarIndicator;
38
+ //# sourceMappingURL=Indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Indicator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/Indicator.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,4BAA0B;AAC1B,2CAAoC;AACpC,+BAA+B;AAE/B,kEAAyE;AAkBzE;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;IACxD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClE,MAAM,sBAAsB,GAAG,GAAG,EAAE;;QAClC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;QACnB,MAAA,KAAK,CAAC,OAAO,+CAAb,KAAK,CAAY,CAAC;IACpB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,IAAA,oBAAU,EAC3B,0BAA0B,EAC1B,cAAc,IAAI,aAAa,EAC/B,KAAK,CAAC,SAAS,CAChB,CAAC;IACF,OAAO,CACL;QACE,oBAAC,oCAAe,CAAC,8CAA8C;YAC7D,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,sBAAsB,KAC3B;gBACF,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,CAAC;aACb,IAEA,KAAK,CAAC,QAAQ,CACC;QACjB,KAAK,CAAC,KAAK,IAAI,oBAAC,gCAAW,CAAC,8CAA8C;YACzE,MAAM,EAAE,MAAM,CAAC,OAAO,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAC/B,MAAM,EAAE,MAAM,IAEb,KAAK,CAAC,KAAK,CACA,CACb,CACJ,CAAC;AACJ,CAAC;AArCD,gDAqCC","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 \"./Indicator.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { FooterIndicator, FooterPopup } from \"@itwin/appui-layout-react\";\r\n\r\n/** Properties of [[StatusBarIndicator]] component.\r\n * @beta\r\n */\r\nexport interface StatusBarIndicatorProps extends CommonProps {\r\n /** Indicator content. */\r\n children?: React.ReactNode;\r\n /** Content to display in a popup when indicator is clicked. */\r\n popup?: React.ReactNode;\r\n /** Function called when indicator is clicked. */\r\n onClick?: () => void;\r\n /** Default state of an indicator popup. */\r\n defaultIsOpen?: boolean;\r\n /** Title of an indicator. */\r\n title?: string;\r\n}\r\n\r\n/** General-purpose [[StatusBar]] indicator.\r\n * @beta\r\n */\r\nexport function StatusBarIndicator(props: StatusBarIndicatorProps) {\r\n const hasClickAction = !!props.onClick || !!props.popup;\r\n const [isOpen, setIsOpen] = React.useState(!!props.defaultIsOpen);\r\n const handleOnIndicatorClick = () => {\r\n setIsOpen(!isOpen);\r\n props.onClick?.();\r\n };\r\n const target = React.useRef<HTMLDivElement>(null);\r\n const classNames = classnames(\r\n \"uifw-statusbar-indicator\",\r\n hasClickAction && \"uifw-action\",\r\n props.className,\r\n );\r\n return (\r\n <>\r\n <FooterIndicator // eslint-disable-line deprecation/deprecation\r\n ref={target}\r\n className={classNames}\r\n title={props.title}\r\n style={props.style}\r\n onClick={handleOnIndicatorClick}\r\n {...{\r\n role: \"button\",\r\n tabIndex: -1,\r\n }}\r\n >\r\n {props.children}\r\n </FooterIndicator>\r\n {props.popup && <FooterPopup // eslint-disable-line deprecation/deprecation\r\n target={target.current}\r\n onClose={() => setIsOpen(false)}\r\n isOpen={isOpen}\r\n >\r\n {props.popup}\r\n </FooterPopup>}\r\n </>\r\n );\r\n}\r\n"]}
@@ -0,0 +1,110 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/appui-layout-react/lib/cjs/appui-layout-react/footer/variables";
6
+ @import "~@itwin/core-react/lib/cjs/core-react/style/colors";
7
+ @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
8
+
9
+ @keyframes uifw-indicator-fadeIn {
10
+ 0% {
11
+ opacity: 0;
12
+ -webkit-transform: scale(.5);
13
+ transform: scale(.5);
14
+ }
15
+
16
+ 50% {
17
+ -webkit-transform: scale(1.5);
18
+ transform: scale(1.5);
19
+ }
20
+
21
+ 100% {
22
+ -webkit-transform: scale(1.0);
23
+ transform: scale(1.0);
24
+ opacity: 1;
25
+ }
26
+ }
27
+
28
+ @keyframes uifw-indicator-fadeOut {
29
+ 0% {
30
+ opacity: 1;
31
+ }
32
+
33
+ 100% {
34
+ opacity: 0;
35
+ }
36
+ }
37
+
38
+ .uifw-statusbar-indicator {
39
+ visibility: visible;
40
+ gap: 8px;
41
+
42
+ &.uifw-action {
43
+ cursor: pointer;
44
+
45
+ &:hover {
46
+ color: $buic-foreground-primary;
47
+ }
48
+ }
49
+
50
+ &.uifw-indicator-fade-in {
51
+ animation: uifw-indicator-fadeIn 1s linear;
52
+ opacity: 1;
53
+ pointer-events: auto;
54
+ }
55
+
56
+ &.uifw-indicator-fade-out {
57
+ animation: uifw-indicator-fadeOut 500ms linear;
58
+ opacity: 0;
59
+ pointer-events: none;
60
+ }
61
+
62
+ >.nz-balloon-container {
63
+ height: 100%;
64
+ position: relative;
65
+ display: grid;
66
+ align-content: center;
67
+
68
+ >.nz-balloon {
69
+ background-color: $buic-text-color;
70
+ text-align: center;
71
+ cursor: pointer;
72
+ min-width: $min-balloon-width;
73
+ min-height: $min-balloon-height;
74
+ border-radius: 50%;
75
+ padding: $balloon-padding;
76
+ filter: $icon-shadow;
77
+ position: relative;
78
+ align-self: center;
79
+
80
+ >.nz-arrow {
81
+ position: absolute;
82
+ width: 0;
83
+ bottom: -3px;
84
+ left: 0;
85
+ display: block;
86
+ border-width: 0;
87
+ border-bottom-width: $balloon-arrow-height;
88
+ border-left-width: $balloon-arrow-width;
89
+ border-style: solid;
90
+ border-color: transparent $buic-text-color;
91
+ transform: rotate(25deg);
92
+ }
93
+
94
+ >.nz-content {
95
+ position: relative;
96
+ color: #FFFFFF;
97
+ line-height: $min-balloon-height;
98
+ font-size: 11px;
99
+ }
100
+ }
101
+
102
+ >.nz-dialog {
103
+ height: 100%;
104
+ width: 100%;
105
+ position: absolute;
106
+ top: 0;
107
+ left: 50%;
108
+ }
109
+ }
110
+ }
@@ -0,0 +1,24 @@
1
+ /** @packageDocumentation
2
+ * @module StatusBar
3
+ */
4
+ /// <reference types="react" />
5
+ import "./LabelIndicator.scss";
6
+ import { StatusBarIndicatorProps } from "./Indicator";
7
+ import { IconSpec } from "@itwin/core-react";
8
+ import { StatusBarLabelSide } from "@itwin/appui-abstract";
9
+ /** Properties of [[StatusBarLabelIndicator]] component.
10
+ * @beta
11
+ */
12
+ export interface StatusBarLabelIndicatorProps extends Omit<StatusBarIndicatorProps, "children"> {
13
+ /** Specification of an icon. */
14
+ iconSpec?: IconSpec;
15
+ /** Indicator label. */
16
+ label?: string;
17
+ /** Side to display label. */
18
+ labelSide?: StatusBarLabelSide;
19
+ }
20
+ /** [[StatusBar]] indicator that shows a label with an icon.
21
+ * @beta
22
+ */
23
+ export declare function StatusBarLabelIndicator(props: StatusBarLabelIndicatorProps): JSX.Element;
24
+ //# sourceMappingURL=LabelIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelIndicator.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/LabelIndicator.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,uBAAuB,CAAC;AAG/B,OAAO,EAAsB,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAQ,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC;IAC7F,gCAAgC;IAChC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,SAAS,CAAC,EAAE,kBAAkB,CAAC;CAChC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,eAgB1E"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module StatusBar
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.StatusBarLabelIndicator = void 0;
11
+ require("./LabelIndicator.scss");
12
+ const classnames_1 = require("classnames");
13
+ const React = require("react");
14
+ const Indicator_1 = require("./Indicator");
15
+ const core_react_1 = require("@itwin/core-react");
16
+ const appui_abstract_1 = require("@itwin/appui-abstract");
17
+ /** [[StatusBar]] indicator that shows a label with an icon.
18
+ * @beta
19
+ */
20
+ function StatusBarLabelIndicator(props) {
21
+ const { className, iconSpec, label, labelSide, ...other } = props;
22
+ const classNames = (0, classnames_1.default)("uifw-statusbar-labelIndicator", labelSide === appui_abstract_1.StatusBarLabelSide.Right && "uifw-reversed", className);
23
+ return (React.createElement(Indicator_1.StatusBarIndicator, { className: classNames, ...other },
24
+ label && React.createElement("span", { className: "uifw-label" }, label),
25
+ iconSpec && React.createElement("div", { className: "uifw-icon" },
26
+ React.createElement(core_react_1.Icon, { iconSpec: iconSpec }))));
27
+ }
28
+ exports.StatusBarLabelIndicator = StatusBarLabelIndicator;
29
+ //# sourceMappingURL=LabelIndicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LabelIndicator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/LabelIndicator.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,iCAA+B;AAC/B,2CAAoC;AACpC,+BAA+B;AAC/B,2CAA0E;AAC1E,kDAAmD;AACnD,0DAA2D;AAc3D;;GAEG;AACH,SAAgB,uBAAuB,CAAC,KAAmC;IACzE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAClE,MAAM,UAAU,GAAG,IAAA,oBAAU,EAC3B,+BAA+B,EAC/B,SAAS,KAAK,mCAAkB,CAAC,KAAK,IAAI,eAAe,EACzD,SAAS,CACV,CAAC;IACF,OAAO,CACL,oBAAC,8BAAkB,IACjB,SAAS,EAAE,UAAU,KACjB,KAAK;QAER,KAAK,IAAI,8BAAM,SAAS,EAAC,YAAY,IAAE,KAAK,CAAQ;QACpD,QAAQ,IAAI,6BAAK,SAAS,EAAC,WAAW;YAAC,oBAAC,iBAAI,IAAC,QAAQ,EAAE,QAAQ,GAAI,CAAM,CACvD,CACtB,CAAC;AACJ,CAAC;AAhBD,0DAgBC","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 \"./LabelIndicator.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { StatusBarIndicator, StatusBarIndicatorProps } from \"./Indicator\";\r\nimport { Icon, IconSpec } from \"@itwin/core-react\";\r\nimport { StatusBarLabelSide } from \"@itwin/appui-abstract\";\r\n\r\n/** Properties of [[StatusBarLabelIndicator]] component.\r\n * @beta\r\n */\r\nexport interface StatusBarLabelIndicatorProps extends Omit<StatusBarIndicatorProps, \"children\"> {\r\n /** Specification of an icon. */\r\n iconSpec?: IconSpec;\r\n /** Indicator label. */\r\n label?: string;\r\n /** Side to display label. */\r\n labelSide?: StatusBarLabelSide;\r\n}\r\n\r\n/** [[StatusBar]] indicator that shows a label with an icon.\r\n * @beta\r\n */\r\nexport function StatusBarLabelIndicator(props: StatusBarLabelIndicatorProps) {\r\n const { className, iconSpec, label, labelSide, ...other } = props;\r\n const classNames = classnames(\r\n \"uifw-statusbar-labelIndicator\",\r\n labelSide === StatusBarLabelSide.Right && \"uifw-reversed\",\r\n className,\r\n );\r\n return (\r\n <StatusBarIndicator\r\n className={classNames}\r\n {...other}\r\n >\r\n {label && <span className=\"uifw-label\">{label}</span>}\r\n {iconSpec && <div className=\"uifw-icon\"><Icon iconSpec={iconSpec} /></div>}\r\n </StatusBarIndicator>\r\n );\r\n}\r\n"]}
@@ -0,0 +1,43 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
+ * See LICENSE.md in the project root for license terms and full copyright notice.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ @import "~@itwin/appui-layout-react/lib/cjs/appui-layout-react/footer/variables";
6
+ @import "~@itwin/core-react/lib/cjs/core-react/style/breakpoints";
7
+
8
+ .uifw-statusbar-labelIndicator {
9
+ &.uifw-reversed {
10
+ flex-direction: row-reverse;
11
+ }
12
+
13
+ >.uifw-label {
14
+ font-size: $text-font-size;
15
+ overflow: hidden;
16
+ text-overflow: ellipsis;
17
+ white-space: nowrap;
18
+
19
+ @include for-tablet-landscape-down {
20
+ display: none;
21
+ }
22
+ }
23
+
24
+ >.uifw-icon {
25
+ display: flex;
26
+ align-items: center;
27
+ justify-content: center;
28
+ font-size: $icon-size;
29
+ width: $icon-size;
30
+
31
+ /* Medium devices */
32
+ @include for-tablet-landscape-down {
33
+ font-size: $icon-size-medium;
34
+ width: $icon-size-medium;
35
+ }
36
+
37
+ /* Small devices */
38
+ @include for-phone-only {
39
+ font-size: $icon-size-small;
40
+ width: $icon-size-small;
41
+ }
42
+ }
43
+ }
@@ -0,0 +1,10 @@
1
+ /** @packageDocumentation
2
+ * @module StatusBar
3
+ */
4
+ /// <reference types="react" />
5
+ import { CommonProps } from "@itwin/core-react";
6
+ /** Component used to separate status fields in a status bar.
7
+ * @public
8
+ */
9
+ export declare function StatusBarSeparator(props: CommonProps): JSX.Element;
10
+ //# sourceMappingURL=Separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Separator.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/Separator.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,eAIpD"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module StatusBar
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.StatusBarSeparator = void 0;
11
+ const React = require("react");
12
+ const appui_layout_react_1 = require("@itwin/appui-layout-react");
13
+ /** Component used to separate status fields in a status bar.
14
+ * @public
15
+ */
16
+ function StatusBarSeparator(props) {
17
+ return (React.createElement(appui_layout_react_1.FooterSeparator, { ...props }) // eslint-disable-line deprecation/deprecation
18
+ );
19
+ }
20
+ exports.StatusBarSeparator = StatusBarSeparator;
21
+ //# sourceMappingURL=Separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Separator.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/Separator.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,+BAA+B;AAE/B,kEAA4D;AAE5D;;GAEG;AACH,SAAgB,kBAAkB,CAAC,KAAkB;IACnD,OAAO,CACL,oBAAC,oCAAe,OAAK,KAAK,GAAI,CAAC,8CAA8C;KAC9E,CAAC;AACJ,CAAC;AAJD,gDAIC","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 * as React from \"react\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { FooterSeparator } from \"@itwin/appui-layout-react\";\r\n\r\n/** Component used to separate status fields in a status bar.\r\n * @public\r\n */\r\nexport function StatusBarSeparator(props: CommonProps) {\r\n return (\r\n <FooterSeparator {...props} /> // eslint-disable-line deprecation/deprecation\r\n );\r\n}\r\n"]}
@@ -82,7 +82,8 @@ function useStatusBarItemSyncEffect(itemsManager, syncIdsOfInterest) {
82
82
  /** function to produce a StatusBarItem component from an AbstractStatusBarLabelItem */
83
83
  function generateActionStatusLabelItem(item, isInFooterMode) {
84
84
  const iconPaddingClass = item.labelSide === appui_abstract_1.StatusBarLabelSide.Left ? "nz-icon-padding-right" : "nz-icon-padding-left";
85
- return (React.createElement(appui_layout_react_1.FooterIndicator, { isInFooterMode: isInFooterMode },
85
+ return (React.createElement(appui_layout_react_1.FooterIndicator // eslint-disable-line deprecation/deprecation
86
+ , { isInFooterMode: isInFooterMode },
86
87
  item.icon && React.createElement(core_react_1.Icon, { iconSpec: item.icon }),
87
88
  item.label && React.createElement("span", { className: iconPaddingClass }, appui_abstract_1.ConditionalStringValue.getValue(item.label))));
88
89
  }
@@ -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, 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 itemPriority?: number;\r\n providerId?: string;\r\n section?: string;\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 data-item-location={props.section}\r\n data-item-priority={props.itemPriority}\r\n data-item-provider-id={props.providerId}\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 const getSectionName = (section: StatusBarSection) => {\r\n switch (section) {\r\n case StatusBarSection.Center:\r\n case StatusBarSection.Stage:\r\n return \"status-bar-center\";\r\n case StatusBarSection.Context:\r\n return \"status-bar-right-start\";\r\n case StatusBarSection.Right:\r\n case StatusBarSection.Selection:\r\n return \"status-bar-right-end\";\r\n case StatusBarSection.Left:\r\n case StatusBarSection.Message:\r\n return \"status-bar-left\";\r\n }\r\n };\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, itemPriority: number,\r\n section: StatusBarSection, providerId?: 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} itemPriority={itemPriority} providerId={providerId} section={getSectionName(section)} >\r\n {isStatusBarItem(item) && item.reactNode}\r\n {// eslint-disable-next-line deprecation/deprecation\r\n isAbstractStatusBarActionItem(item) && generateActionStatusBarItem(item, statusBarContext.isInFooterMode)}\r\n {// eslint-disable-next-line deprecation/deprecation\r\n isAbstractStatusBarLabelItem(item) && generateActionStatusLabelItem(item, statusBarContext.isInFooterMode)}\r\n </DockedStatusBarItem>\r\n </DockedStatusBarEntry>\r\n );\r\n // eslint-disable-next-line deprecation/deprecation\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, sectionItem.itemPriority, sectionItem.section, sectionItem.providerId)}\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, item.itemPriority, item.section, item.providerId)}\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":"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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, 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 itemPriority?: number;\r\n providerId?: string;\r\n section?: string;\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 data-item-location={props.section}\r\n data-item-priority={props.itemPriority}\r\n data-item-provider-id={props.providerId}\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 // eslint-disable-line deprecation/deprecation\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} // eslint-disable-line deprecation/deprecation\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 const getSectionName = (section: StatusBarSection) => {\r\n switch (section) {\r\n case StatusBarSection.Center:\r\n case StatusBarSection.Stage:\r\n return \"status-bar-center\";\r\n case StatusBarSection.Context:\r\n return \"status-bar-right-start\";\r\n case StatusBarSection.Right:\r\n case StatusBarSection.Selection:\r\n return \"status-bar-right-end\";\r\n case StatusBarSection.Left:\r\n case StatusBarSection.Message:\r\n return \"status-bar-left\";\r\n }\r\n };\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, itemPriority: number,\r\n section: StatusBarSection, providerId?: 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} itemPriority={itemPriority} providerId={providerId} section={getSectionName(section)} >\r\n {isStatusBarItem(item) && item.reactNode}\r\n {// eslint-disable-next-line deprecation/deprecation\r\n isAbstractStatusBarActionItem(item) && generateActionStatusBarItem(item, statusBarContext.isInFooterMode)}\r\n {// eslint-disable-next-line deprecation/deprecation\r\n isAbstractStatusBarLabelItem(item) && generateActionStatusLabelItem(item, statusBarContext.isInFooterMode)}\r\n </DockedStatusBarItem>\r\n </DockedStatusBarEntry>\r\n );\r\n // eslint-disable-next-line deprecation/deprecation\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, sectionItem.itemPriority, sectionItem.section, sectionItem.providerId)}\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, item.itemPriority, item.section, item.providerId)}\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"]}