@itwin/appui-react 5.18.0 → 5.20.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 (250) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/lib/appui-react/UiFramework.js +20 -13
  3. package/lib/appui-react/UiFramework.js.map +1 -1
  4. package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
  5. package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
  6. package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
  7. package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
  8. package/lib/appui-react/accudraw/Calculator.js +92 -98
  9. package/lib/appui-react/accudraw/Calculator.js.map +1 -1
  10. package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
  11. package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
  12. package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
  13. package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
  14. package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
  15. package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
  16. package/lib/appui-react/accudraw/MenuButton.js +20 -20
  17. package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
  18. package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
  19. package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
  20. package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
  21. package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
  22. package/lib/appui-react/backstage/BackstageManager.js +1 -3
  23. package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
  24. package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
  25. package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
  26. package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
  27. package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  28. package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
  29. package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
  30. package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  31. package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
  32. package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
  33. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
  34. package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  35. package/lib/appui-react/configurableui/TimeTracker.js +25 -27
  36. package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
  37. package/lib/appui-react/content/ContentControl.js +2 -1
  38. package/lib/appui-react/content/ContentControl.js.map +1 -1
  39. package/lib/appui-react/content/ContentGroup.js +8 -4
  40. package/lib/appui-react/content/ContentGroup.js.map +1 -1
  41. package/lib/appui-react/content/ContentLayout.js +47 -38
  42. package/lib/appui-react/content/ContentLayout.js.map +1 -1
  43. package/lib/appui-react/content/IModelViewport.js +28 -23
  44. package/lib/appui-react/content/IModelViewport.js.map +1 -1
  45. package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
  46. package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  47. package/lib/appui-react/content/InternalContentViewManager.js +9 -8
  48. package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
  49. package/lib/appui-react/content/StandardContentLayouts.js +141 -141
  50. package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
  51. package/lib/appui-react/content/ViewportContentControl.js +25 -22
  52. package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
  53. package/lib/appui-react/cursor/CursorInformation.js +7 -6
  54. package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
  55. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
  56. package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
  57. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
  58. package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
  59. package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
  60. package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
  61. package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
  62. package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
  63. package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
  64. package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
  65. package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
  66. package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
  67. package/lib/appui-react/dialog/ModelessDialog.js +3 -3
  68. package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
  69. package/lib/appui-react/feedback/ElementTooltip.js +3 -1
  70. package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
  71. package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
  72. package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
  73. package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
  74. package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
  75. package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
  76. package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
  77. package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
  78. package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
  79. package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
  80. package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  81. package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
  82. package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  83. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
  84. package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
  85. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
  86. package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
  87. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
  88. package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
  89. package/lib/appui-react/layout/backstage/Backstage.js +11 -14
  90. package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
  91. package/lib/appui-react/layout/base/DragManager.js +6 -7
  92. package/lib/appui-react/layout/base/DragManager.js.map +1 -1
  93. package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
  94. package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
  95. package/lib/appui-react/layout/popup/Tooltip.js +8 -11
  96. package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
  97. package/lib/appui-react/layout/state/NineZoneStateReducer.d.ts.map +1 -1
  98. package/lib/appui-react/layout/state/NineZoneStateReducer.js +8 -4
  99. package/lib/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
  100. package/lib/appui-react/layout/widget/Overflow.d.ts.map +1 -1
  101. package/lib/appui-react/layout/widget/Overflow.js +11 -17
  102. package/lib/appui-react/layout/widget/Overflow.js.map +1 -1
  103. package/lib/appui-react/layout/widget/Overflow.scss +3 -48
  104. package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
  105. package/lib/appui-react/layout/widget/Tab.js +7 -5
  106. package/lib/appui-react/layout/widget/Tab.js.map +1 -1
  107. package/lib/appui-react/messages/InputField.js +21 -24
  108. package/lib/appui-react/messages/InputField.js.map +1 -1
  109. package/lib/appui-react/messages/MessageManager.js +39 -38
  110. package/lib/appui-react/messages/MessageManager.js.map +1 -1
  111. package/lib/appui-react/messages/Pointer.js +38 -38
  112. package/lib/appui-react/messages/Pointer.js.map +1 -1
  113. package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
  114. package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
  115. package/lib/appui-react/messages/StatusMessageManager.js +2 -4
  116. package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
  117. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
  118. package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
  119. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
  120. package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
  121. package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
  122. package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
  123. package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
  124. package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
  125. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
  126. package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
  127. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
  128. package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
  129. package/lib/appui-react/pickers/ListPicker.js +28 -28
  130. package/lib/appui-react/pickers/ListPicker.js.map +1 -1
  131. package/lib/appui-react/pickers/ViewSelector.js +87 -86
  132. package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
  133. package/lib/appui-react/popup/CardPopup.js +18 -21
  134. package/lib/appui-react/popup/CardPopup.js.map +1 -1
  135. package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
  136. package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
  137. package/lib/appui-react/popup/InputEditorPopup.js +18 -20
  138. package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
  139. package/lib/appui-react/popup/PopupManager.js +22 -25
  140. package/lib/appui-react/popup/PopupManager.js.map +1 -1
  141. package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
  142. package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
  143. package/lib/appui-react/popup/ToolbarPopup.js +18 -21
  144. package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
  145. package/lib/appui-react/redux/ReducerRegistry.js +2 -0
  146. package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
  147. package/lib/appui-react/redux/StateManager.js +4 -1
  148. package/lib/appui-react/redux/StateManager.js.map +1 -1
  149. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
  150. package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
  151. package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
  152. package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
  153. package/lib/appui-react/shared/CommandItemDef.js +3 -3
  154. package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
  155. package/lib/appui-react/shared/CustomItemDef.js +4 -2
  156. package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
  157. package/lib/appui-react/shared/ItemDefBase.js +13 -5
  158. package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
  159. package/lib/appui-react/shared/MenuItem.js +6 -1
  160. package/lib/appui-react/shared/MenuItem.js.map +1 -1
  161. package/lib/appui-react/shared/ToolItemDef.js +1 -1
  162. package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
  163. package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
  164. package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  165. package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
  166. package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
  167. package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
  168. package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
  169. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
  170. package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
  171. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
  172. package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
  173. package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
  174. package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
  175. package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
  176. package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
  177. package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
  178. package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
  179. package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
  180. package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
  181. package/lib/appui-react/toolbar/GroupItem.js +11 -5
  182. package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
  183. package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
  184. package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
  185. package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
  186. package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
  187. package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
  188. package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
  189. package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
  190. package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
  191. package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
  192. package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
  193. package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
  194. package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
  195. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
  196. package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  197. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
  198. package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
  199. package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
  200. package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
  201. package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
  202. package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
  203. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
  204. package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  205. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
  206. package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
  207. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
  208. package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
  209. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
  210. package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  211. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
  212. package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
  213. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
  214. package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
  215. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
  216. package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
  217. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
  218. package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  219. package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
  220. package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  221. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
  222. package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  223. package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
  224. package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  225. package/lib/appui-react/uistate/AppUiSettings.js +41 -33
  226. package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
  227. package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
  228. package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  229. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
  230. package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
  231. package/lib/appui-react/widgets/WidgetControl.js +2 -0
  232. package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
  233. package/lib/appui-react/widgets/WidgetDef.js +28 -7
  234. package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
  235. package/lib/appui-react/widgets/WidgetHost.js +4 -4
  236. package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
  237. package/lib/appui-react/widgets/WidgetManager.js +5 -7
  238. package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
  239. package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  240. package/lib/cjs/appui-react/layout/widget/Overflow.scss +3 -48
  241. package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
  242. package/lib/esm/appui-react/layout/widget/Overflow.scss +3 -48
  243. package/package.json +10 -11
  244. package/lib/appui-react/layout/widget/Menu.d.ts +0 -16
  245. package/lib/appui-react/layout/widget/Menu.d.ts.map +0 -1
  246. package/lib/appui-react/layout/widget/Menu.js +0 -21
  247. package/lib/appui-react/layout/widget/Menu.js.map +0 -1
  248. package/lib/appui-react/layout/widget/Menu.scss +0 -12
  249. package/lib/cjs/appui-react/layout/widget/Menu.scss +0 -12
  250. package/lib/esm/appui-react/layout/widget/Menu.scss +0 -12
@@ -1 +1 @@
1
- {"version":3,"file":"FrontstageDef.js","sourceRoot":"","sources":["../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { Rectangle } from \"@itwin/core-react/internal\";\nimport * as React from \"react\";\nimport { appUi, UiFramework } from \"../UiFramework.js\";\nimport { ChildWindowWidget } from \"../childwindow/ChildWindowWidget.js\";\nimport { TimeTracker } from \"../configurableui/TimeTracker.js\";\nimport type { ContentControl } from \"../content/ContentControl.js\";\nimport type { ContentGroup } from \"../content/ContentGroup.js\";\nimport { ContentGroupProvider } from \"../content/ContentGroup.js\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout.js\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager.js\";\nimport type { ChildWindowLocationProps } from \"../framework/FrameworkChildWindows.js\";\nimport type { NineZoneDispatch } from \"../layout/base/NineZone.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { NineZoneStateReducer } from \"../layout/state/NineZoneStateReducer.js\";\nimport {\n getTabLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n} from \"../layout/state/TabLocation.js\";\nimport {\n getWidgetLocation,\n isFloatingWidgetLocation,\n isPopoutWidgetLocation,\n} from \"../layout/state/WidgetLocation.js\";\nimport type { PanelSide } from \"../layout/widget-panels/PanelTypes.js\";\nimport { panelSides } from \"../layout/widget-panels/Panel.js\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig.js\";\nimport { StagePanelDef } from \"../stagepanels/StagePanelDef.js\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport { StagePanelState } from \"../stagepanels/StagePanelState.js\";\nimport type { WidgetConfig } from \"../widgets/WidgetConfig.js\";\nimport type { WidgetControl } from \"../widgets/WidgetControl.js\";\nimport { getWidgetState, WidgetDef, WidgetType } from \"../widgets/WidgetDef.js\";\nimport { WidgetState } from \"../widgets/WidgetState.js\";\nimport type { FrontstageProvider } from \"./FrontstageProvider.js\";\nimport { InternalFrontstageManager } from \"./InternalFrontstageManager.js\";\nimport { StageUsage } from \"./StageUsage.js\";\nimport type { Frontstage } from \"./Frontstage.js\";\nimport { UiItemsProvider } from \"../ui-items-provider/UiItemsProvider.js\";\nimport { FrameworkContent } from \"../framework/FrameworkContent.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../utils/RectangleProps.js\";\nimport {\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName,\n} from \"../widget-panels/Frontstage.js\";\n\n/** FrontstageDef class provides an API for a Frontstage.\n * @public\n */\nexport class FrontstageDef {\n private _id: string = \"\";\n private _initialConfig?: Frontstage;\n private _isStageClosing = false;\n private _isReady = false;\n private _isApplicationClosing = false;\n private _usage?: string;\n private _version: number = 0;\n private _toolSettings?: WidgetDef;\n private _activeToolEmptyNode?: React.ReactNode;\n private _statusBar?: WidgetDef;\n private _contentManipulation?: WidgetDef;\n private _viewNavigation?: WidgetDef;\n private _topPanel?: StagePanelDef;\n private _leftPanel?: StagePanelDef;\n private _rightPanel?: StagePanelDef;\n private _bottomPanel?: StagePanelDef;\n private _contentLayoutDef?: ContentLayoutDef;\n private _contentGroup?: ContentGroup;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _frontstageProvider?: FrontstageProvider;\n private _timeTracker = new TimeTracker();\n private _nineZoneState?: NineZoneState;\n private _contentGroupProvider?: ContentGroupProvider;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _floatingContentControls?: ContentControl[];\n private _toolAdminDefaultToolId?: string;\n private _dispatch?: NineZoneDispatch;\n private _batching = false;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n /** @deprecated in 4.17.0. Returns instances of a deprecated {@link ContentControl} type. */\n public get floatingContentControls() {\n return this._floatingContentControls;\n }\n\n public get toolSettings(): WidgetDef | undefined {\n return this._toolSettings;\n }\n /** @internal */\n public get activeToolEmptyNode(): React.ReactNode | undefined {\n return this._activeToolEmptyNode;\n }\n public get statusBar(): WidgetDef | undefined {\n return this._statusBar;\n }\n public get contentManipulation(): WidgetDef | undefined {\n return this._contentManipulation;\n }\n public get viewNavigation(): WidgetDef | undefined {\n return this._viewNavigation;\n }\n\n public get topPanel(): StagePanelDef | undefined {\n return this._topPanel;\n }\n public get leftPanel(): StagePanelDef | undefined {\n return this._leftPanel;\n }\n public get rightPanel(): StagePanelDef | undefined {\n return this._rightPanel;\n }\n public get bottomPanel(): StagePanelDef | undefined {\n return this._bottomPanel;\n }\n\n public get contentLayoutDef(): ContentLayoutDef | undefined {\n return this._contentLayoutDef;\n }\n public get contentGroup(): ContentGroup | undefined {\n return this._contentGroup;\n }\n\n /** @internal */\n public get initialConfig(): Frontstage | undefined {\n return this._initialConfig;\n }\n\n private toStagePanelLocation(side: PanelSide): StagePanelLocation {\n switch (side) {\n case \"bottom\":\n return StagePanelLocation.Bottom;\n case \"left\":\n return StagePanelLocation.Left;\n case \"right\":\n return StagePanelLocation.Right;\n case \"top\":\n return StagePanelLocation.Top;\n }\n }\n\n private populateStateMaps(nineZone: NineZoneState) {\n const panelMap = new Map<StagePanelDef, StagePanelState>();\n const widgetMap = new Map<WidgetDef, WidgetState>();\n\n for (const panelSide of panelSides) {\n const panel = nineZone.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n const panelState = panel.collapsed\n ? StagePanelState.Minimized\n : StagePanelState.Open;\n panelMap.set(panelDef, panelState);\n }\n\n for (const widgetDef of this.widgetDefs) {\n const widgetState = getWidgetState(widgetDef.id, nineZone);\n widgetMap.set(widgetDef, widgetState);\n }\n return { panelMap, widgetMap };\n }\n\n private triggerStateChangeEvents(oldState: NineZoneState) {\n const newState = this.nineZoneState;\n if (!newState) return;\n\n if (this._isStageClosing || this._isApplicationClosing) return;\n\n const { panelMap, widgetMap } = this.populateStateMaps(oldState);\n const { panelMap: newPanelMap, widgetMap: newWidgetMap } =\n this.populateStateMaps(newState);\n\n // Now walk and trigger set state events\n newWidgetMap.forEach((newWidgetState, widgetDef) => {\n const originalState = widgetMap.get(widgetDef);\n if (originalState === newWidgetState) return;\n widgetDef.handleWidgetStateChanged(newWidgetState);\n });\n newPanelMap.forEach((newPanelState, panelDef) => {\n const originalState = panelMap.get(panelDef);\n if (originalState === newPanelState) return;\n panelDef.handlePanelStateChanged(newPanelState);\n });\n\n for (const panelSide of panelSides) {\n const panel = newState.panels[panelSide];\n const oldPanel = oldState.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n\n if (panel.size !== oldPanel.size) {\n panelDef.handleSizeChanged(panel.size);\n }\n\n if (panel.pinned !== oldPanel.pinned) {\n panelDef.handlePinnedChanged(panel.pinned);\n }\n }\n }\n\n private handlePopouts(oldState: NineZoneState | undefined) {\n const newState = this.nineZoneState;\n\n const oldPopouts = oldState?.popoutWidgets.allIds || [];\n const newPopouts = newState?.popoutWidgets.allIds || [];\n const popoutsToClose = oldPopouts.filter((p) => !newPopouts.includes(p));\n const popoutsToOpen = newPopouts.filter((p) => !oldPopouts.includes(p));\n\n for (const popoutId of popoutsToClose) {\n UiFramework.childWindows.close(popoutId, true);\n }\n\n for (const popoutId of popoutsToOpen) {\n const result = this.openPopoutWidgetContainer(popoutId, oldState);\n if (!result) return result;\n }\n\n return true;\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n\n if (this._batching) return;\n\n const popoutResult = this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n if (popoutResult === false) {\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(\n OutputMessagePriority.Error,\n UiFramework.translate(\"widget.errorMessage.widgetPopoutFail\"),\n undefined,\n OutputMessageType.Toast\n )\n );\n return;\n }\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n const state = this.nineZoneState;\n if (!state) return;\n this.nineZoneState = NineZoneStateReducer(state, action);\n });\n }\n public set dispatch(dispatch: NineZoneDispatch) {\n this._dispatch = dispatch;\n }\n\n /** Dispatch multiple actions inside `fn`, but trigger events once.\n * @internal\n */\n public batch(fn: () => void): void {\n const initialState = this._nineZoneState;\n\n this._batching = true;\n fn();\n this._batching = false;\n\n const updatedState = this._nineZoneState;\n this._nineZoneState = initialState;\n this.nineZoneState = updatedState;\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** Creates a [[FrontstageDef]] and initializes it. */\n public static async create(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n providerOrFrontstage: FrontstageProvider | Frontstage\n ) {\n const def = new FrontstageDef();\n\n let config;\n if (\"frontstageConfig\" in providerOrFrontstage) {\n def._frontstageProvider = providerOrFrontstage;\n config = providerOrFrontstage.frontstageConfig();\n } else {\n config = providerOrFrontstage;\n }\n\n await def.initializeFromConfig(config);\n return def;\n }\n\n /** Handles when the Frontstage becomes activated */\n protected async _onActivated() {}\n\n /** Handles when the Frontstage becomes activated */\n public async onActivated() {\n this.updateWidgetDefs();\n\n const provider = this._contentGroupProvider;\n if (provider && this._initialConfig) {\n this._contentGroup = await provider.contentGroup(this._initialConfig);\n }\n\n if (!this._contentGroup)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"FrontstageDef\"),\n `onActivated: Content Group not defined`\n );\n\n this._contentLayoutDef = UiFramework.content.layouts.getForGroup(\n this._contentGroup\n );\n UiFramework.frontstages.onContentLayoutActivatedEvent.emit({\n contentLayout: this._contentLayoutDef,\n contentGroup: this._contentGroup,\n });\n\n this._timeTracker.startTiming();\n await this._onActivated();\n }\n\n /** Handles when the Frontstage becomes inactive */\n protected async _onDeactivated() {}\n\n /** Handles when the Frontstage becomes inactive */\n public async onDeactivated() {\n for (const control of this._widgetControls) {\n control.onFrontstageDeactivated();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for (const control of this.contentControls) {\n control.onFrontstageDeactivated();\n }\n\n if (this.contentGroup) this.contentGroup.onFrontstageDeactivated();\n if (this.contentGroupProvider)\n await this.contentGroupProvider.onFrontstageDeactivated();\n\n this._timeTracker.stopTiming();\n\n this._isStageClosing = true; // this keeps widgets in child windows from automatically re-docking\n UiFramework.childWindows.closeAll();\n\n if (this._floatingContentControls) {\n InternalContentDialogManager.closeAll();\n this._floatingContentControls = undefined;\n }\n\n if (this._toolAdminDefaultToolId) {\n IModelApp.toolAdmin.defaultToolId = this._toolAdminDefaultToolId;\n this._toolAdminDefaultToolId = undefined;\n }\n\n await this._onDeactivated();\n this._isStageClosing = false;\n }\n\n /** @internal */\n public setIsApplicationClosing(value: boolean) {\n this._isApplicationClosing = value;\n }\n\n /** Returns once the contained widgets and content controls are ready to use */\n public async waitUntilReady(): Promise<void> {\n this._isReady = false;\n // create an array of control-ready promises\n const controlReadyPromises = new Array<Promise<void>>();\n this._widgetControls.forEach((control) => {\n controlReadyPromises.push(control.isReady);\n });\n\n if (this.contentLayoutDef) {\n const usedContentIndexes = this.contentLayoutDef.getUsedContentIndexes();\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.contentControls.forEach((control, index) => {\n if (usedContentIndexes.includes(index))\n controlReadyPromises.push(control.isReady);\n });\n }\n\n await Promise.all(controlReadyPromises);\n // Frontstage ready\n this._isReady = true;\n }\n\n /** Handles when the Frontstage becomes active */\n protected _onFrontstageReady(): void {}\n\n /** Handles when the Frontstage becomes active */\n public onFrontstageReady(): void {\n for (const control of this._widgetControls) {\n control.onFrontstageReady();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for (const control of this.contentControls) {\n control.onFrontstageReady();\n }\n\n if (this.contentGroup) this.contentGroup.onFrontstageReady();\n\n if (IModelApp.toolAdmin && IModelApp.viewManager && this._initialConfig) {\n const defaultTool = this._initialConfig.defaultTool;\n if (defaultTool) {\n this._toolAdminDefaultToolId = IModelApp.toolAdmin.defaultToolId;\n IModelApp.toolAdmin.defaultToolId = defaultTool;\n void IModelApp.tools.run(defaultTool);\n } else {\n void IModelApp.toolAdmin.startDefaultTool();\n }\n }\n\n this._onFrontstageReady();\n }\n\n /** Sets the Content Layout and Content Group */\n public setContentLayoutAndGroup(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): void {\n this._contentLayoutDef = contentLayoutDef;\n this._contentGroup = contentGroup;\n }\n\n /** Sets the active view content to the default or first. */\n public async setActiveContent(): Promise<boolean> {\n const content = this.contentGroup?.contentPropsList?.[0];\n if (!content) return false;\n\n let contentReactNode = content.content;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n let control: ContentControl | undefined;\n if (!contentReactNode) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n control = this.contentGroup.getContentControl(content, 0);\n contentReactNode = control?.reactNode;\n }\n\n if (!contentReactNode) return false;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.content.setActive(contentReactNode, true);\n if (!control?.viewport) return true;\n\n const status = await IModelApp.viewManager.setSelectedView(\n control.viewport\n );\n return status === BentleyStatus.SUCCESS;\n }\n\n /** Gets a [[StagePanelDef]] based on a given panel location\n * @beta\n */\n public getStagePanelDef(\n location: StagePanelLocation\n ): StagePanelDef | undefined {\n let panelDef: StagePanelDef | undefined;\n\n switch (location) {\n case StagePanelLocation.Top:\n panelDef = this.topPanel;\n break;\n case StagePanelLocation.Left:\n panelDef = this.leftPanel;\n break;\n case StagePanelLocation.Right:\n panelDef = this.rightPanel;\n break;\n case StagePanelLocation.Bottom:\n panelDef = this.bottomPanel;\n break;\n }\n\n // Panels can be undefined in a Frontstage\n return panelDef;\n }\n\n /** Gets a list of [[StagePanelDef]]s\n * @beta\n */\n public get panelDefs(): StagePanelDef[] {\n const locations = [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ];\n const panels: StagePanelDef[] = [];\n\n locations.forEach((location: StagePanelLocation) => {\n const panel = this.getStagePanelDef(location);\n if (panel) panels.push(panel);\n });\n\n return panels;\n }\n\n /** Finds a [[WidgetDef]] based on a given id */\n public findWidgetDef(id: string): WidgetDef | undefined {\n for (const widgetDef of this.widgetDefs) {\n if (widgetDef.id === id) return widgetDef;\n }\n return undefined;\n }\n\n /** Gets the list of [[WidgetControl]]s */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private get _widgetControls(): WidgetControl[] {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControls = new Array<WidgetControl>();\n\n this.panelDefs.forEach((panelDef) => {\n panelDef.widgetDefs.forEach((widgetDef) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControl = widgetDef.widgetControl;\n if (widgetControl) widgetControls.push(widgetControl);\n });\n });\n\n return widgetControls;\n }\n\n /** Initializes a FrontstageDef from frontstage.\n * @internal\n */\n public async initializeFromConfig(config: Frontstage): Promise<void> {\n this._id = config.id;\n this._initialConfig = config;\n\n if (config.contentGroup instanceof ContentGroupProvider) {\n this._contentGroupProvider = config.contentGroup;\n } else {\n this._contentGroup = config.contentGroup;\n }\n\n this._usage = config.usage;\n this._version = config.version;\n\n this._toolSettings = createWidgetDef(\n config.toolSettings,\n WidgetType.ToolSettings\n );\n this._activeToolEmptyNode = config.toolSettings?.activeToolEmptyNode;\n this._statusBar = createWidgetDef(config.statusBar, WidgetType.StatusBar);\n this._contentManipulation = createWidgetDef(\n config.contentManipulation,\n WidgetType.Tool\n );\n this._viewNavigation = createWidgetDef(\n config.viewNavigation,\n WidgetType.Navigation\n );\n this._topPanel = createStagePanelDef(config, StagePanelLocation.Top);\n this._leftPanel = createStagePanelDef(config, StagePanelLocation.Left);\n this._rightPanel = createStagePanelDef(config, StagePanelLocation.Right);\n this._bottomPanel = createStagePanelDef(config, StagePanelLocation.Bottom);\n }\n\n /** @internal */\n public updateWidgetDefs(): void {\n // Tracks provided widgets to prevent duplicates.\n const allStageWidgetDefs: WidgetDef[] = [];\n\n // Process panels before zones so extension can explicitly target a widget for a StagePanelSection\n this.panelDefs.forEach((stagePanelDef: StagePanelDef) => {\n stagePanelDef.updateDynamicWidgetDefs(\n this.id,\n this.usage,\n stagePanelDef.location,\n undefined,\n allStageWidgetDefs\n );\n });\n\n InternalFrontstageManager.onFrontstageWidgetsChangedEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Restores frontstage layout to initial configuration.\n * @beta\n */\n public restoreLayout() {\n for (const panelDef of this.panelDefs) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n panelDef.size = panelDef.initialConfig?.size;\n panelDef.sizeSpec = panelDef.initialConfig?.sizeSpec;\n panelDef.panelState = panelDef.defaultState;\n panelDef.pinned = panelDef.initialConfig?.pinned ?? true;\n }\n for (const widgetDef of this.widgetDefs) {\n widgetDef.setWidgetState(widgetDef.defaultState);\n }\n\n const storage = UiFramework.getUiStateStorage();\n void storage.deleteSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(this.id)\n );\n this.nineZoneState = undefined;\n\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.emit({\n frontstageDef: this,\n });\n }\n\n public isPopoutWidget(widgetId: string) {\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) return isPopoutTabLocation(location);\n }\n\n return false;\n }\n\n public isFloatingWidget(widgetId: string) {\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) return isFloatingTabLocation(location);\n }\n\n return false;\n }\n\n /** Create a new floating panel that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(\n widgetContainerId: string,\n oldState: NineZoneState | undefined\n ): boolean {\n const state = this.nineZoneState;\n if (!state) return false;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return false;\n if (!isPopoutWidgetLocation(location)) return false;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return false;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return false;\n\n const popoutContent = (\n <ChildWindowWidget\n widgetContainerId={widgetContainerId}\n widgetDef={widgetDef}\n />\n );\n\n const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];\n const bounds = Rectangle.create(popoutWidget.bounds);\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n\n const childWindow = appUi.windowManager.openWindow({\n childWindowId: widgetContainerId,\n title: widgetDef.label,\n content: popoutContent,\n location: position,\n useDefaultPopoutUrl: UiFramework.useDefaultPopoutUrl,\n tabId,\n });\n\n // Use outer size if available to avoid inner size + browser zoom issues: https://github.com/iTwin/appui/issues/563\n const savedTab = state.savedTabs.byId[tabId];\n if (childWindow && savedTab?.popout?.size) {\n childWindow.resizeTo(\n savedTab.popout.size.width,\n savedTab.popout.size.height\n );\n }\n\n if (!childWindow && oldState) {\n this.nineZoneState = oldState;\n return false;\n }\n\n return true;\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: Window\n ) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, childWindowId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[location.popoutWidgetId];\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_SET_POPOUT_BOUNDS\",\n id: tabId,\n position: {\n x: childWindow.screenLeft,\n y: childWindow.screenTop,\n },\n size: {\n height: childWindow.outerHeight,\n width: childWindow.outerWidth,\n },\n contentSize: {\n height: childWindow.innerHeight,\n width: childWindow.innerWidth,\n },\n });\n }\n\n /** @internal */\n public dockWidgetContainerByContainerId(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n\n if (isFloatingWidgetLocation(location)) {\n this.dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id: location.floatingWidgetId,\n });\n return;\n }\n if (isPopoutWidgetLocation(location)) {\n this.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id: location.popoutWidgetId,\n });\n return;\n }\n }\n\n /** Finds the container with the specified widget and re-docks all widgets\n * back to the panel zone location that was used when the floating container\n * was generated.\n * @param widgetId case sensitive Widget Id.\n * @beta\n */\n public dockWidgetContainer(widgetId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getTabLocation(state, widgetId);\n if (!location) return;\n\n this.dockWidgetContainerByContainerId(location.widgetId);\n }\n\n public setFloatingWidgetContainerBounds(\n floatingWidgetId: string,\n bounds: RectangleProps\n ) {\n if (\n !this.nineZoneState ||\n !(floatingWidgetId in this.nineZoneState.floatingWidgets.byId)\n )\n return false;\n\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_BOUNDS\",\n id: floatingWidgetId,\n bounds,\n });\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_USER_SIZED\",\n id: floatingWidgetId,\n userSized: true,\n });\n return true;\n }\n\n public getFloatingWidgetContainerIds(): string[] {\n if (!this.nineZoneState) return [];\n\n return [...this.nineZoneState.floatingWidgets.allIds];\n }\n\n public getFloatingWidgetContainerIdByWidgetId(\n widgetId: string\n ): string | undefined {\n if (!this.nineZoneState) return undefined;\n\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location && isFloatingTabLocation(location)) {\n return location.floatingWidgetId;\n }\n return undefined;\n }\n\n public getFloatingWidgetContainerBounds(\n floatingWidgetId: string | undefined\n ) {\n if (!floatingWidgetId) return undefined;\n\n if (\n this.nineZoneState &&\n floatingWidgetId in this.nineZoneState.floatingWidgets.byId\n ) {\n const foundWidget = document.querySelector(\n `div.nz-widget-floatingWidget[data-widget-id='${floatingWidgetId}']`\n );\n if (foundWidget) {\n const domRect = foundWidget.getBoundingClientRect();\n return {\n left: domRect.left,\n right: domRect.right,\n top: domRect.top,\n bottom: domRect.bottom,\n };\n }\n return this.nineZoneState.floatingWidgets.byId[floatingWidgetId].bounds;\n }\n return undefined;\n }\n\n private *_widgetDefs(): Iterator<WidgetDef> {\n for (const panelDef of this.panelDefs) {\n for (const widgetDef of panelDef.widgetDefs) {\n yield widgetDef;\n }\n }\n if (this.toolSettings) yield this.toolSettings;\n if (this.statusBar) yield this.statusBar;\n return undefined;\n }\n\n /** Iterable of all widget definitions in a frontstage.\n * @internal\n */\n public get widgetDefs() {\n const defs = this._widgetDefs();\n return {\n [Symbol.iterator]() {\n return defs;\n },\n };\n }\n\n /* eslint-disable @typescript-eslint/no-deprecated */\n\n /** @deprecated in 4.15.0. Use {@link FrontstageDef.id} to look up a frontstage. */\n public get frontstageProvider(): FrontstageProvider | undefined {\n return this._frontstageProvider;\n }\n\n /** Sets the active view content control.\n * @deprecated in 4.16.0. Uses a deprecated class {@link ContentControl}.\n */\n public setActiveView(\n newContent: ContentControl,\n oldContent?: ContentControl\n ): void {\n if (oldContent) oldContent.onDeactivated();\n newContent.onActivated();\n UiFramework.frontstages.onContentControlActivatedEvent.emit({\n activeContentControl: newContent,\n oldContentControl: oldContent,\n });\n }\n\n /** @deprecated in 4.16.0. Use {@link UiItemsProvider} to provide a floating widget. */\n public addFloatingContentControl(contentControl?: ContentControl) {\n if (!contentControl) return;\n if (!this._floatingContentControls)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._floatingContentControls = new Array<ContentControl>();\n\n this._floatingContentControls.push(contentControl);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n\n /** @deprecated in 4.16.0. Unregister {@link UiItemsProvider} to remove a floating widget. */\n public dropFloatingContentControl(contentControl?: ContentControl) {\n if (!contentControl || !this._floatingContentControls) return;\n\n const index = this._floatingContentControls.indexOf(contentControl);\n if (index > -1) {\n this._floatingContentControls.splice(index, 1);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n }\n\n /** Gets the list of {@link ContentControl}s.\n * @deprecated in 4.16.0. Uses a deprecated class {@link ContentControl}.\n */\n public get contentControls(): ContentControl[] {\n const contentControls = new Array<ContentControl>();\n if (this.contentGroup) {\n contentControls.push(...this.contentGroup.getContentControls());\n }\n if (this._floatingContentControls) {\n contentControls.push(...this._floatingContentControls);\n }\n return contentControls;\n }\n\n /** Sets the active view content control based on the selected viewport.\n * @deprecated in 4.16.0. Use {@link FrameworkContent.setActiveId} instead.\n */\n public setActiveViewFromViewport(viewport: ScreenViewport): boolean {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const contentControl = this.contentControls.find(\n (control) => control.viewport === viewport\n );\n if (contentControl) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.content.setActive(contentControl.reactNode, true);\n return true;\n }\n\n return false;\n }\n\n /* eslint-enable @typescript-eslint/no-deprecated */\n}\n\nfunction createWidgetDef(\n config: WidgetConfig | undefined,\n type: WidgetType\n): WidgetDef | undefined {\n if (!config) return undefined;\n\n const widgetDef = WidgetDef.create(config, type);\n return widgetDef;\n}\n\nfunction createStagePanelDef(\n frontstage: Frontstage,\n location: StagePanelLocation\n): StagePanelDef {\n const config = getStagePanel(location, frontstage);\n\n const panelDef = new StagePanelDef();\n panelDef.initializeFromConfig(config, location);\n return panelDef;\n}\n\nfunction getStagePanel(\n location: StagePanelLocation,\n config: Frontstage\n): StagePanelConfig | undefined {\n switch (location) {\n case StagePanelLocation.Top:\n return config.topPanel;\n case StagePanelLocation.Left:\n return config.leftPanel;\n case StagePanelLocation.Right:\n return config.rightPanel;\n case StagePanelLocation.Bottom:\n return config.bottomPanel;\n }\n}\n\n/** Hook that returns active frontstage id.\n * @public\n */\nexport const useActiveFrontstageId = () => {\n const def = useActiveFrontstageDef();\n const id = React.useMemo(() => (def ? def.id : \"\"), [def]);\n return id;\n};\n\n/** Hook to return the active Frontstage def.\n * @public\n */\nexport function useActiveFrontstageDef() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n setDef(args.activatedFrontstageDef);\n }\n );\n }, []);\n return def;\n}\n\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\n * @public\n */\nexport function useSpecificWidgetDef(widgetId: string) {\n const frontstageDef = useActiveFrontstageDef();\n const [widgetDef, setWidgetDef] = React.useState(() =>\n frontstageDef?.findWidgetDef(widgetId)\n );\n React.useEffect(() => {\n setWidgetDef(frontstageDef?.findWidgetDef(widgetId));\n return InternalFrontstageManager.onFrontstageWidgetsChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n setWidgetDef(frontstageDef.findWidgetDef(widgetId));\n }\n );\n }, [frontstageDef, widgetId]);\n return widgetDef;\n}\n"]}
1
+ {"version":3,"file":"FrontstageDef.js","sourceRoot":"","sources":["../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { UiError } from \"@itwin/appui-abstract\";\nimport { BentleyStatus } from \"@itwin/core-bentley\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { Rectangle } from \"@itwin/core-react/internal\";\nimport * as React from \"react\";\nimport { appUi, UiFramework } from \"../UiFramework.js\";\nimport { ChildWindowWidget } from \"../childwindow/ChildWindowWidget.js\";\nimport { TimeTracker } from \"../configurableui/TimeTracker.js\";\nimport type { ContentControl } from \"../content/ContentControl.js\";\nimport type { ContentGroup } from \"../content/ContentGroup.js\";\nimport { ContentGroupProvider } from \"../content/ContentGroup.js\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout.js\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager.js\";\nimport type { ChildWindowLocationProps } from \"../framework/FrameworkChildWindows.js\";\nimport type { NineZoneDispatch } from \"../layout/base/NineZone.js\";\nimport type { NineZoneState } from \"../layout/state/NineZoneState.js\";\nimport { NineZoneStateReducer } from \"../layout/state/NineZoneStateReducer.js\";\nimport {\n getTabLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n} from \"../layout/state/TabLocation.js\";\nimport {\n getWidgetLocation,\n isFloatingWidgetLocation,\n isPopoutWidgetLocation,\n} from \"../layout/state/WidgetLocation.js\";\nimport type { PanelSide } from \"../layout/widget-panels/PanelTypes.js\";\nimport { panelSides } from \"../layout/widget-panels/Panel.js\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig.js\";\nimport { StagePanelDef } from \"../stagepanels/StagePanelDef.js\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation.js\";\nimport { StagePanelState } from \"../stagepanels/StagePanelState.js\";\nimport type { WidgetConfig } from \"../widgets/WidgetConfig.js\";\nimport type { WidgetControl } from \"../widgets/WidgetControl.js\";\nimport { getWidgetState, WidgetDef, WidgetType } from \"../widgets/WidgetDef.js\";\nimport { WidgetState } from \"../widgets/WidgetState.js\";\nimport type { FrontstageProvider } from \"./FrontstageProvider.js\";\nimport { InternalFrontstageManager } from \"./InternalFrontstageManager.js\";\nimport { StageUsage } from \"./StageUsage.js\";\nimport type { Frontstage } from \"./Frontstage.js\";\nimport { UiItemsProvider } from \"../ui-items-provider/UiItemsProvider.js\";\nimport { FrameworkContent } from \"../framework/FrameworkContent.js\";\nimport type { SizeProps } from \"../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../utils/RectangleProps.js\";\nimport {\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName,\n} from \"../widget-panels/Frontstage.js\";\n\n/** FrontstageDef class provides an API for a Frontstage.\n * @public\n */\nexport class FrontstageDef {\n private _id: string = \"\";\n private _initialConfig?: Frontstage;\n private _isStageClosing = false;\n private _isReady = false;\n private _isApplicationClosing = false;\n private _usage?: string;\n private _version: number = 0;\n private _toolSettings?: WidgetDef;\n private _activeToolEmptyNode?: React.ReactNode;\n private _statusBar?: WidgetDef;\n private _contentManipulation?: WidgetDef;\n private _viewNavigation?: WidgetDef;\n private _topPanel?: StagePanelDef;\n private _leftPanel?: StagePanelDef;\n private _rightPanel?: StagePanelDef;\n private _bottomPanel?: StagePanelDef;\n private _contentLayoutDef?: ContentLayoutDef;\n private _contentGroup?: ContentGroup;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _frontstageProvider?: FrontstageProvider;\n private _timeTracker = new TimeTracker();\n private _nineZoneState?: NineZoneState;\n private _contentGroupProvider?: ContentGroupProvider;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _floatingContentControls?: ContentControl[];\n private _toolAdminDefaultToolId?: string;\n private _dispatch?: NineZoneDispatch;\n private _batching = false;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n /** @deprecated in 4.17.0. Returns instances of a deprecated {@link ContentControl} type. */\n public get floatingContentControls() {\n return this._floatingContentControls;\n }\n\n public get toolSettings(): WidgetDef | undefined {\n return this._toolSettings;\n }\n /** @internal */\n public get activeToolEmptyNode(): React.ReactNode | undefined {\n return this._activeToolEmptyNode;\n }\n public get statusBar(): WidgetDef | undefined {\n return this._statusBar;\n }\n public get contentManipulation(): WidgetDef | undefined {\n return this._contentManipulation;\n }\n public get viewNavigation(): WidgetDef | undefined {\n return this._viewNavigation;\n }\n\n public get topPanel(): StagePanelDef | undefined {\n return this._topPanel;\n }\n public get leftPanel(): StagePanelDef | undefined {\n return this._leftPanel;\n }\n public get rightPanel(): StagePanelDef | undefined {\n return this._rightPanel;\n }\n public get bottomPanel(): StagePanelDef | undefined {\n return this._bottomPanel;\n }\n\n public get contentLayoutDef(): ContentLayoutDef | undefined {\n return this._contentLayoutDef;\n }\n public get contentGroup(): ContentGroup | undefined {\n return this._contentGroup;\n }\n\n /** @internal */\n public get initialConfig(): Frontstage | undefined {\n return this._initialConfig;\n }\n\n private toStagePanelLocation(side: PanelSide): StagePanelLocation {\n switch (side) {\n case \"bottom\":\n return StagePanelLocation.Bottom;\n case \"left\":\n return StagePanelLocation.Left;\n case \"right\":\n return StagePanelLocation.Right;\n case \"top\":\n return StagePanelLocation.Top;\n }\n }\n\n private populateStateMaps(nineZone: NineZoneState) {\n const panelMap = new Map<StagePanelDef, StagePanelState>();\n const widgetMap = new Map<WidgetDef, WidgetState>();\n\n for (const panelSide of panelSides) {\n const panel = nineZone.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n const panelState = panel.collapsed\n ? StagePanelState.Minimized\n : StagePanelState.Open;\n panelMap.set(panelDef, panelState);\n }\n\n for (const widgetDef of this.widgetDefs) {\n const widgetState = getWidgetState(widgetDef.id, nineZone);\n widgetMap.set(widgetDef, widgetState);\n }\n return { panelMap, widgetMap };\n }\n\n private triggerStateChangeEvents(oldState: NineZoneState) {\n const newState = this.nineZoneState;\n if (!newState) return;\n\n if (this._isStageClosing || this._isApplicationClosing) return;\n\n const { panelMap, widgetMap } = this.populateStateMaps(oldState);\n const { panelMap: newPanelMap, widgetMap: newWidgetMap } =\n this.populateStateMaps(newState);\n\n // Now walk and trigger set state events\n newWidgetMap.forEach((newWidgetState, widgetDef) => {\n const originalState = widgetMap.get(widgetDef);\n if (originalState === newWidgetState) return;\n widgetDef.handleWidgetStateChanged(newWidgetState);\n });\n newPanelMap.forEach((newPanelState, panelDef) => {\n const originalState = panelMap.get(panelDef);\n if (originalState === newPanelState) return;\n panelDef.handlePanelStateChanged(newPanelState);\n });\n\n for (const panelSide of panelSides) {\n const panel = newState.panels[panelSide];\n const oldPanel = oldState.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n\n if (panel.size !== oldPanel.size) {\n panelDef.handleSizeChanged(panel.size);\n }\n\n if (panel.pinned !== oldPanel.pinned) {\n panelDef.handlePinnedChanged(panel.pinned);\n }\n }\n }\n\n private handlePopouts(oldState: NineZoneState | undefined) {\n const newState = this.nineZoneState;\n\n const oldPopouts = oldState?.popoutWidgets.allIds || [];\n const newPopouts = newState?.popoutWidgets.allIds || [];\n const popoutsToClose = oldPopouts.filter((p) => !newPopouts.includes(p));\n const popoutsToOpen = newPopouts.filter((p) => !oldPopouts.includes(p));\n\n for (const popoutId of popoutsToClose) {\n UiFramework.childWindows.close(popoutId, true);\n }\n\n for (const popoutId of popoutsToOpen) {\n const result = this.openPopoutWidgetContainer(popoutId, oldState);\n if (!result) return result;\n }\n\n return true;\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n\n if (this._batching) return;\n\n const popoutResult = this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n if (popoutResult === false) {\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(\n OutputMessagePriority.Error,\n UiFramework.translate(\"widget.errorMessage.widgetPopoutFail\"),\n undefined,\n OutputMessageType.Toast\n )\n );\n return;\n }\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n const state = this.nineZoneState;\n if (!state) return;\n this.nineZoneState = NineZoneStateReducer(state, action);\n });\n }\n public set dispatch(dispatch: NineZoneDispatch) {\n this._dispatch = dispatch;\n }\n\n /** Dispatch multiple actions inside `fn`, but trigger events once.\n * @internal\n */\n public batch(fn: () => void): void {\n const initialState = this._nineZoneState;\n\n this._batching = true;\n fn();\n this._batching = false;\n\n const updatedState = this._nineZoneState;\n this._nineZoneState = initialState;\n this.nineZoneState = updatedState;\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** Creates a [[FrontstageDef]] and initializes it. */\n public static async create(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n providerOrFrontstage: FrontstageProvider | Frontstage\n ) {\n const def = new FrontstageDef();\n\n let config;\n if (\"frontstageConfig\" in providerOrFrontstage) {\n def._frontstageProvider = providerOrFrontstage;\n config = providerOrFrontstage.frontstageConfig();\n } else {\n config = providerOrFrontstage;\n }\n\n await def.initializeFromConfig(config);\n return def;\n }\n\n /** Handles when the Frontstage becomes activated */\n protected async _onActivated() {}\n\n /** Handles when the Frontstage becomes activated */\n public async onActivated() {\n this.updateWidgetDefs();\n\n const provider = this._contentGroupProvider;\n if (provider && this._initialConfig) {\n this._contentGroup = await provider.contentGroup(this._initialConfig);\n }\n\n if (!this._contentGroup)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n throw new UiError(\n UiFramework.loggerCategory(\"FrontstageDef\"),\n `onActivated: Content Group not defined`\n );\n\n this._contentLayoutDef = UiFramework.content.layouts.getForGroup(\n this._contentGroup\n );\n UiFramework.frontstages.onContentLayoutActivatedEvent.emit({\n contentLayout: this._contentLayoutDef,\n contentGroup: this._contentGroup,\n });\n\n this._timeTracker.startTiming();\n await this._onActivated();\n }\n\n /** Handles when the Frontstage becomes inactive */\n protected async _onDeactivated() {}\n\n /** Handles when the Frontstage becomes inactive */\n public async onDeactivated() {\n for (const control of this._widgetControls) {\n control.onFrontstageDeactivated();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for (const control of this.contentControls) {\n control.onFrontstageDeactivated();\n }\n\n if (this.contentGroup) this.contentGroup.onFrontstageDeactivated();\n if (this.contentGroupProvider)\n await this.contentGroupProvider.onFrontstageDeactivated();\n\n this._timeTracker.stopTiming();\n\n this._isStageClosing = true; // this keeps widgets in child windows from automatically re-docking\n UiFramework.childWindows.closeAll();\n\n if (this._floatingContentControls) {\n InternalContentDialogManager.closeAll();\n this._floatingContentControls = undefined;\n }\n\n if (this._toolAdminDefaultToolId) {\n IModelApp.toolAdmin.defaultToolId = this._toolAdminDefaultToolId;\n this._toolAdminDefaultToolId = undefined;\n }\n\n await this._onDeactivated();\n this._isStageClosing = false;\n }\n\n /** @internal */\n public setIsApplicationClosing(value: boolean) {\n this._isApplicationClosing = value;\n }\n\n /** Returns once the contained widgets and content controls are ready to use */\n public async waitUntilReady(): Promise<void> {\n this._isReady = false;\n // create an array of control-ready promises\n const controlReadyPromises = new Array<Promise<void>>();\n this._widgetControls.forEach((control) => {\n controlReadyPromises.push(control.isReady);\n });\n\n if (this.contentLayoutDef) {\n const usedContentIndexes = this.contentLayoutDef.getUsedContentIndexes();\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.contentControls.forEach((control, index) => {\n if (usedContentIndexes.includes(index))\n controlReadyPromises.push(control.isReady);\n });\n }\n\n await Promise.all(controlReadyPromises);\n // Frontstage ready\n this._isReady = true;\n }\n\n /** Handles when the Frontstage becomes active */\n protected _onFrontstageReady(): void {}\n\n /** Handles when the Frontstage becomes active */\n public onFrontstageReady(): void {\n for (const control of this._widgetControls) {\n control.onFrontstageReady();\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n for (const control of this.contentControls) {\n control.onFrontstageReady();\n }\n\n if (this.contentGroup) this.contentGroup.onFrontstageReady();\n\n if (IModelApp.toolAdmin && IModelApp.viewManager && this._initialConfig) {\n const defaultTool = this._initialConfig.defaultTool;\n if (defaultTool) {\n this._toolAdminDefaultToolId = IModelApp.toolAdmin.defaultToolId;\n IModelApp.toolAdmin.defaultToolId = defaultTool;\n void IModelApp.tools.run(defaultTool);\n } else {\n void IModelApp.toolAdmin.startDefaultTool();\n }\n }\n\n this._onFrontstageReady();\n }\n\n /** Sets the Content Layout and Content Group */\n public setContentLayoutAndGroup(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): void {\n this._contentLayoutDef = contentLayoutDef;\n this._contentGroup = contentGroup;\n }\n\n /** Sets the active view content to the default or first. */\n public async setActiveContent(): Promise<boolean> {\n const content = this.contentGroup?.contentPropsList?.[0];\n if (!content) return false;\n\n let contentReactNode = content.content;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n let control: ContentControl | undefined;\n if (!contentReactNode) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n control = this.contentGroup.getContentControl(content, 0);\n contentReactNode = control?.reactNode;\n }\n\n if (!contentReactNode) return false;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.content.setActive(contentReactNode, true);\n if (!control?.viewport) return true;\n\n const status = await IModelApp.viewManager.setSelectedView(\n control.viewport\n );\n return status === BentleyStatus.SUCCESS;\n }\n\n /** Gets a [[StagePanelDef]] based on a given panel location\n * @beta\n */\n public getStagePanelDef(\n location: StagePanelLocation\n ): StagePanelDef | undefined {\n let panelDef: StagePanelDef | undefined;\n\n switch (location) {\n case StagePanelLocation.Top:\n panelDef = this.topPanel;\n break;\n case StagePanelLocation.Left:\n panelDef = this.leftPanel;\n break;\n case StagePanelLocation.Right:\n panelDef = this.rightPanel;\n break;\n case StagePanelLocation.Bottom:\n panelDef = this.bottomPanel;\n break;\n }\n\n // Panels can be undefined in a Frontstage\n return panelDef;\n }\n\n /** Gets a list of [[StagePanelDef]]s\n * @beta\n */\n public get panelDefs(): StagePanelDef[] {\n const locations = [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ];\n const panels: StagePanelDef[] = [];\n\n locations.forEach((location: StagePanelLocation) => {\n const panel = this.getStagePanelDef(location);\n if (panel) panels.push(panel);\n });\n\n return panels;\n }\n\n /** Finds a [[WidgetDef]] based on a given id */\n public findWidgetDef(id: string): WidgetDef | undefined {\n for (const widgetDef of this.widgetDefs) {\n if (widgetDef.id === id) return widgetDef;\n }\n return undefined;\n }\n\n /** Gets the list of [[WidgetControl]]s */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private get _widgetControls(): WidgetControl[] {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControls = new Array<WidgetControl>();\n\n this.panelDefs.forEach((panelDef) => {\n panelDef.widgetDefs.forEach((widgetDef) => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const widgetControl = widgetDef.widgetControl;\n if (widgetControl) widgetControls.push(widgetControl);\n });\n });\n\n return widgetControls;\n }\n\n /** Initializes a FrontstageDef from frontstage.\n * @internal\n */\n public async initializeFromConfig(config: Frontstage): Promise<void> {\n this._id = config.id;\n this._initialConfig = config;\n\n if (config.contentGroup instanceof ContentGroupProvider) {\n this._contentGroupProvider = config.contentGroup;\n } else {\n this._contentGroup = config.contentGroup;\n }\n\n this._usage = config.usage;\n this._version = config.version;\n\n this._toolSettings = createWidgetDef(\n config.toolSettings,\n WidgetType.ToolSettings\n );\n this._activeToolEmptyNode = config.toolSettings?.activeToolEmptyNode;\n this._statusBar = createWidgetDef(config.statusBar, WidgetType.StatusBar);\n this._contentManipulation = createWidgetDef(\n config.contentManipulation,\n WidgetType.Tool\n );\n this._viewNavigation = createWidgetDef(\n config.viewNavigation,\n WidgetType.Navigation\n );\n this._topPanel = createStagePanelDef(config, StagePanelLocation.Top);\n this._leftPanel = createStagePanelDef(config, StagePanelLocation.Left);\n this._rightPanel = createStagePanelDef(config, StagePanelLocation.Right);\n this._bottomPanel = createStagePanelDef(config, StagePanelLocation.Bottom);\n }\n\n /** @internal */\n public updateWidgetDefs(): void {\n // Tracks provided widgets to prevent duplicates.\n const allStageWidgetDefs: WidgetDef[] = [];\n\n // Process panels before zones so extension can explicitly target a widget for a StagePanelSection\n this.panelDefs.forEach((stagePanelDef: StagePanelDef) => {\n stagePanelDef.updateDynamicWidgetDefs(\n this.id,\n this.usage,\n stagePanelDef.location,\n undefined,\n allStageWidgetDefs\n );\n });\n\n InternalFrontstageManager.onFrontstageWidgetsChangedEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Restores frontstage layout to initial configuration.\n * @beta\n */\n public restoreLayout() {\n for (const panelDef of this.panelDefs) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n panelDef.size = panelDef.initialConfig?.size;\n panelDef.sizeSpec = panelDef.initialConfig?.sizeSpec;\n panelDef.panelState = panelDef.defaultState;\n panelDef.pinned = panelDef.initialConfig?.pinned ?? true;\n }\n for (const widgetDef of this.widgetDefs) {\n widgetDef.setWidgetState(widgetDef.defaultState);\n }\n\n const storage = UiFramework.getUiStateStorage();\n void storage.deleteSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(this.id)\n );\n this.nineZoneState = undefined;\n\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.emit({\n frontstageDef: this,\n });\n }\n\n public isPopoutWidget(widgetId: string) {\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) return isPopoutTabLocation(location);\n }\n\n return false;\n }\n\n public isFloatingWidget(widgetId: string) {\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) return isFloatingTabLocation(location);\n }\n\n return false;\n }\n\n /** Create a new floating panel that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(\n widgetContainerId: string,\n oldState: NineZoneState | undefined\n ): boolean {\n const state = this.nineZoneState;\n if (!state) return false;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return false;\n if (!isPopoutWidgetLocation(location)) return false;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return false;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return false;\n\n const popoutContent = (\n <ChildWindowWidget\n widgetContainerId={widgetContainerId}\n widgetDef={widgetDef}\n />\n );\n\n const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];\n const bounds = Rectangle.create(popoutWidget.bounds);\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n\n const childWindow = appUi.windowManager.openWindow({\n childWindowId: widgetContainerId,\n title: widgetDef.label,\n content: popoutContent,\n location: position,\n useDefaultPopoutUrl: UiFramework.useDefaultPopoutUrl,\n tabId,\n });\n\n // Use outer size if available to avoid inner size + browser zoom issues: https://github.com/iTwin/appui/issues/563\n const savedTab = state.savedTabs.byId[tabId];\n if (childWindow && savedTab?.popout?.size) {\n childWindow.resizeTo(\n savedTab.popout.size.width,\n savedTab.popout.size.height\n );\n }\n\n if (!childWindow && oldState) {\n this.nineZoneState = oldState;\n return false;\n }\n\n return true;\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: Window\n ) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, childWindowId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[location.popoutWidgetId];\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_SET_POPOUT_BOUNDS\",\n id: tabId,\n position: {\n x: childWindow.screenLeft,\n y: childWindow.screenTop,\n },\n size: {\n height: childWindow.outerHeight,\n width: childWindow.outerWidth,\n },\n contentSize: {\n height: childWindow.innerHeight,\n width: childWindow.innerWidth,\n },\n });\n }\n\n /** @internal */\n public dockWidgetContainerByContainerId(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n\n if (isFloatingWidgetLocation(location)) {\n this.dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id: location.floatingWidgetId,\n });\n return;\n }\n if (isPopoutWidgetLocation(location)) {\n this.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id: location.popoutWidgetId,\n });\n return;\n }\n }\n\n /** Finds the container with the specified widget and re-docks all widgets\n * back to the panel zone location that was used when the floating container\n * was generated.\n * @param widgetId case sensitive Widget Id.\n * @beta\n */\n public dockWidgetContainer(widgetId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getTabLocation(state, widgetId);\n if (!location) return;\n\n this.dockWidgetContainerByContainerId(location.widgetId);\n }\n\n public setFloatingWidgetContainerBounds(\n floatingWidgetId: string,\n bounds: RectangleProps\n ) {\n if (\n !this.nineZoneState ||\n !(floatingWidgetId in this.nineZoneState.floatingWidgets.byId)\n )\n return false;\n\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_BOUNDS\",\n id: floatingWidgetId,\n bounds,\n });\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_USER_SIZED\",\n id: floatingWidgetId,\n userSized: true,\n });\n return true;\n }\n\n public getFloatingWidgetContainerIds(): string[] {\n if (!this.nineZoneState) return [];\n\n return [...this.nineZoneState.floatingWidgets.allIds];\n }\n\n public getFloatingWidgetContainerIdByWidgetId(\n widgetId: string\n ): string | undefined {\n if (!this.nineZoneState) return undefined;\n\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location && isFloatingTabLocation(location)) {\n return location.floatingWidgetId;\n }\n return undefined;\n }\n\n public getFloatingWidgetContainerBounds(\n floatingWidgetId: string | undefined\n ) {\n if (!floatingWidgetId) return undefined;\n\n if (\n this.nineZoneState &&\n floatingWidgetId in this.nineZoneState.floatingWidgets.byId\n ) {\n const foundWidget = document.querySelector(\n `div.nz-widget-floatingWidget[data-widget-id='${floatingWidgetId}']`\n );\n if (foundWidget) {\n const domRect = foundWidget.getBoundingClientRect();\n return {\n left: domRect.left,\n right: domRect.right,\n top: domRect.top,\n bottom: domRect.bottom,\n };\n }\n return this.nineZoneState.floatingWidgets.byId[floatingWidgetId].bounds;\n }\n return undefined;\n }\n\n private *_widgetDefs(): Iterator<WidgetDef> {\n for (const panelDef of this.panelDefs) {\n for (const widgetDef of panelDef.widgetDefs) {\n yield widgetDef;\n }\n }\n if (this.toolSettings) yield this.toolSettings;\n if (this.statusBar) yield this.statusBar;\n return undefined;\n }\n\n /** Iterable of all widget definitions in a frontstage.\n * @internal\n */\n public get widgetDefs() {\n const defs = this._widgetDefs();\n return {\n [Symbol.iterator]() {\n return defs;\n },\n };\n }\n\n /* eslint-disable @typescript-eslint/no-deprecated */\n\n /** @deprecated in 4.15.0. Use {@link FrontstageDef.id} to look up a frontstage. */\n public get frontstageProvider(): FrontstageProvider | undefined {\n return this._frontstageProvider;\n }\n\n /** Sets the active view content control.\n * @deprecated in 4.16.0. Uses a deprecated class {@link ContentControl}.\n */\n public setActiveView(\n newContent: ContentControl,\n oldContent?: ContentControl\n ): void {\n if (oldContent) oldContent.onDeactivated();\n newContent.onActivated();\n UiFramework.frontstages.onContentControlActivatedEvent.emit({\n activeContentControl: newContent,\n oldContentControl: oldContent,\n });\n }\n\n /** @deprecated in 4.16.0. Use {@link UiItemsProvider} to provide a floating widget. */\n public addFloatingContentControl(contentControl?: ContentControl) {\n if (!contentControl) return;\n if (!this._floatingContentControls)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this._floatingContentControls = new Array<ContentControl>();\n\n this._floatingContentControls.push(contentControl);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n\n /** @deprecated in 4.16.0. Unregister {@link UiItemsProvider} to remove a floating widget. */\n public dropFloatingContentControl(contentControl?: ContentControl) {\n if (!contentControl || !this._floatingContentControls) return;\n\n const index = this._floatingContentControls.indexOf(contentControl);\n if (index > -1) {\n this._floatingContentControls.splice(index, 1);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n }\n\n /** Gets the list of {@link ContentControl}s.\n * @deprecated in 4.16.0. Uses a deprecated class {@link ContentControl}.\n */\n public get contentControls(): ContentControl[] {\n const contentControls = new Array<ContentControl>();\n if (this.contentGroup) {\n contentControls.push(...this.contentGroup.getContentControls());\n }\n if (this._floatingContentControls) {\n contentControls.push(...this._floatingContentControls);\n }\n return contentControls;\n }\n\n /** Sets the active view content control based on the selected viewport.\n * @deprecated in 4.16.0. Use {@link FrameworkContent.setActiveId} instead.\n */\n public setActiveViewFromViewport(viewport: ScreenViewport): boolean {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const contentControl = this.contentControls.find(\n (control) => control.viewport === viewport\n );\n if (contentControl) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.content.setActive(contentControl.reactNode, true);\n return true;\n }\n\n return false;\n }\n\n /* eslint-enable @typescript-eslint/no-deprecated */\n}\n\nfunction createWidgetDef(\n config: WidgetConfig | undefined,\n type: WidgetType\n): WidgetDef | undefined {\n if (!config) return undefined;\n\n const widgetDef = WidgetDef.create(config, type);\n return widgetDef;\n}\n\nfunction createStagePanelDef(\n frontstage: Frontstage,\n location: StagePanelLocation\n): StagePanelDef {\n const config = getStagePanel(location, frontstage);\n\n const panelDef = new StagePanelDef();\n panelDef.initializeFromConfig(config, location);\n return panelDef;\n}\n\nfunction getStagePanel(\n location: StagePanelLocation,\n config: Frontstage\n): StagePanelConfig | undefined {\n switch (location) {\n case StagePanelLocation.Top:\n return config.topPanel;\n case StagePanelLocation.Left:\n return config.leftPanel;\n case StagePanelLocation.Right:\n return config.rightPanel;\n case StagePanelLocation.Bottom:\n return config.bottomPanel;\n }\n}\n\n/** Hook that returns active frontstage id.\n * @public\n */\nexport const useActiveFrontstageId = () => {\n const def = useActiveFrontstageDef();\n const id = React.useMemo(() => (def ? def.id : \"\"), [def]);\n return id;\n};\n\n/** Hook to return the active Frontstage def.\n * @public\n */\nexport function useActiveFrontstageDef() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n setDef(args.activatedFrontstageDef);\n }\n );\n }, []);\n return def;\n}\n\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\n * @public\n */\nexport function useSpecificWidgetDef(widgetId: string) {\n const frontstageDef = useActiveFrontstageDef();\n const [widgetDef, setWidgetDef] = React.useState(() =>\n frontstageDef?.findWidgetDef(widgetId)\n );\n React.useEffect(() => {\n setWidgetDef(frontstageDef?.findWidgetDef(widgetId));\n return InternalFrontstageManager.onFrontstageWidgetsChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n setWidgetDef(frontstageDef.findWidgetDef(widgetId));\n }\n );\n }, [frontstageDef, widgetId]);\n return widgetDef;\n}\n"]}
@@ -5,7 +5,6 @@
5
5
  /** @packageDocumentation
6
6
  * @module Frontstage
7
7
  */
8
- var _a;
9
8
  import { BeUiEvent, Logger } from "@itwin/core-bentley";
10
9
  import { IModelApp, InteractiveTool } from "@itwin/core-frontend";
11
10
  import { UiFramework } from "../UiFramework.js";
@@ -18,6 +17,20 @@ import { UiItemsManager } from "../ui-items-provider/UiItemsManager.js";
18
17
  * @internal
19
18
  */
20
19
  export class InternalFrontstageManager {
20
+ static _initialized = false;
21
+ static _isLoading = false;
22
+ static _activeToolId = "";
23
+ static _activeFrontstageDef;
24
+ static _frontstageDefs = new Map();
25
+ static _modalFrontstages = new Array();
26
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
27
+ static _frontstageProviders = new Map();
28
+ static _frontstages = new Map();
29
+ static _nineZoneSize = undefined;
30
+ static _nestedFrontstages = new Array();
31
+ static _activePrimaryFrontstageDef;
32
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
33
+ static _toolInformationMap = new Map();
21
34
  /** This should only be called within InternalFrontstageManager and its tests.
22
35
  * @internal
23
36
  */
@@ -28,6 +41,19 @@ export class InternalFrontstageManager {
28
41
  // eslint-disable-next-line @typescript-eslint/no-deprecated
29
42
  new ToolInformation(toolId));
30
43
  }
44
+ static _handleSyncToolSettingsPropertiesEvent = (args) => {
45
+ const provider = this.activeToolSettingsProvider;
46
+ if (!provider)
47
+ return;
48
+ provider.syncToolSettingsProperties(args);
49
+ };
50
+ // pass on ReloadToolSettingsEvent from ToolAdmin so they are treated by UiProviders
51
+ static _handleReloadToolSettingsEvent = () => {
52
+ const provider = this.activeToolSettingsProvider;
53
+ if (!provider)
54
+ return;
55
+ provider.reloadPropertiesFromTool();
56
+ };
31
57
  /** Initializes the InternalFrontstageManager
32
58
  * @internal
33
59
  */
@@ -54,6 +80,14 @@ export class InternalFrontstageManager {
54
80
  });
55
81
  this._initialized = true;
56
82
  }
83
+ /** Handles a Viewport change & sets the active view accordingly */
84
+ static _handleSelectedViewportChanged = (args) => {
85
+ const frontstageDef = this.activeFrontstageDef;
86
+ if (!args.current || !frontstageDef || UiFramework.frontstages.isLoading)
87
+ return;
88
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
89
+ frontstageDef.setActiveViewFromViewport(args.current);
90
+ };
57
91
  /** @internal */
58
92
  static get isInitialized() {
59
93
  return this._initialized;
@@ -76,6 +110,67 @@ export class InternalFrontstageManager {
76
110
  static get frontstageDefs() {
77
111
  return this._frontstageDefs;
78
112
  }
113
+ /** Get Frontstage Deactivated event. */
114
+ static onFrontstageDeactivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
115
+ /** Get Frontstage Activated event. */
116
+ static onFrontstageActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
117
+ /** Get Frontstage Activated event. */
118
+ static onFrontstageReadyEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
119
+ /** Get Modal Frontstage Changed event. */
120
+ static onModalFrontstageChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
121
+ /** Get Modal Frontstage Closed event. */
122
+ static onModalFrontstageClosedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
123
+ /** Get Modal Frontstage Requested Closed event.
124
+ * @alpha
125
+ */
126
+ static onCloseModalFrontstageRequestedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
127
+ /** Get Tool Activated event. */
128
+ static onToolActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
129
+ /** Get ToolSetting Reload event. */
130
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
131
+ static onToolSettingsReloadEvent = new BeUiEvent();
132
+ /** Get Tool Panel Opened event.
133
+ * @internal
134
+ */
135
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
136
+ static onToolPanelOpenedEvent = new BeUiEvent();
137
+ /** Get Tool Icon Changed event. */
138
+ static onToolIconChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
139
+ /** Get Content Layout Activated event. */
140
+ static onContentLayoutActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
141
+ /** Get Content Control Activated event. */
142
+ static onContentControlActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
143
+ /** Get Navigation Aid Activated event. */
144
+ static onNavigationAidActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
145
+ /** Get Widget State Changed event. */
146
+ static onWidgetStateChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
147
+ /** @internal */
148
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
149
+ static onWidgetDefsUpdatedEvent = new BeUiEvent();
150
+ /** @internal */
151
+ static onFrontstageNineZoneStateChangedEvent =
152
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
153
+ new BeUiEvent();
154
+ /** @internal */
155
+ static onFrontstageRestoreLayoutEvent =
156
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
157
+ new BeUiEvent();
158
+ /** @internal */
159
+ static onFrontstageWidgetsChangedEvent =
160
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
161
+ new BeUiEvent();
162
+ /** Get panel state changed event.
163
+ * @alpha
164
+ */
165
+ static onPanelStateChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
166
+ /** Get panel pinned changed event.
167
+ * @alpha
168
+ */
169
+ static onPanelPinnedChangedEvent =
170
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
171
+ new BeUiEvent();
172
+ /** @internal */
173
+ static onPanelSizeChangedEvent = new BeUiEvent();
79
174
  /** Clears the Frontstage map.
80
175
  */
81
176
  static clearFrontstageDefs() {
@@ -470,99 +565,4 @@ export class InternalFrontstageManager {
470
565
  return this._nestedFrontstages.length;
471
566
  }
472
567
  }
473
- _a = InternalFrontstageManager;
474
- InternalFrontstageManager._initialized = false;
475
- InternalFrontstageManager._isLoading = false;
476
- InternalFrontstageManager._activeToolId = "";
477
- InternalFrontstageManager._frontstageDefs = new Map();
478
- InternalFrontstageManager._modalFrontstages = new Array();
479
- // eslint-disable-next-line @typescript-eslint/no-deprecated
480
- InternalFrontstageManager._frontstageProviders = new Map();
481
- InternalFrontstageManager._frontstages = new Map();
482
- InternalFrontstageManager._nineZoneSize = undefined;
483
- InternalFrontstageManager._nestedFrontstages = new Array();
484
- // eslint-disable-next-line @typescript-eslint/no-deprecated
485
- InternalFrontstageManager._toolInformationMap = new Map();
486
- InternalFrontstageManager._handleSyncToolSettingsPropertiesEvent = (args) => {
487
- const provider = _a.activeToolSettingsProvider;
488
- if (!provider)
489
- return;
490
- provider.syncToolSettingsProperties(args);
491
- };
492
- // pass on ReloadToolSettingsEvent from ToolAdmin so they are treated by UiProviders
493
- InternalFrontstageManager._handleReloadToolSettingsEvent = () => {
494
- const provider = _a.activeToolSettingsProvider;
495
- if (!provider)
496
- return;
497
- provider.reloadPropertiesFromTool();
498
- };
499
- /** Handles a Viewport change & sets the active view accordingly */
500
- InternalFrontstageManager._handleSelectedViewportChanged = (args) => {
501
- const frontstageDef = _a.activeFrontstageDef;
502
- if (!args.current || !frontstageDef || UiFramework.frontstages.isLoading)
503
- return;
504
- // eslint-disable-next-line @typescript-eslint/no-deprecated
505
- frontstageDef.setActiveViewFromViewport(args.current);
506
- };
507
- /** Get Frontstage Deactivated event. */
508
- InternalFrontstageManager.onFrontstageDeactivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
509
- /** Get Frontstage Activated event. */
510
- InternalFrontstageManager.onFrontstageActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
511
- /** Get Frontstage Activated event. */
512
- InternalFrontstageManager.onFrontstageReadyEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
513
- /** Get Modal Frontstage Changed event. */
514
- InternalFrontstageManager.onModalFrontstageChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
515
- /** Get Modal Frontstage Closed event. */
516
- InternalFrontstageManager.onModalFrontstageClosedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
517
- /** Get Modal Frontstage Requested Closed event.
518
- * @alpha
519
- */
520
- InternalFrontstageManager.onCloseModalFrontstageRequestedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
521
- /** Get Tool Activated event. */
522
- InternalFrontstageManager.onToolActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
523
- /** Get ToolSetting Reload event. */
524
- // eslint-disable-next-line @typescript-eslint/no-deprecated
525
- InternalFrontstageManager.onToolSettingsReloadEvent = new BeUiEvent();
526
- /** Get Tool Panel Opened event.
527
- * @internal
528
- */
529
- // eslint-disable-next-line @typescript-eslint/no-deprecated
530
- InternalFrontstageManager.onToolPanelOpenedEvent = new BeUiEvent();
531
- /** Get Tool Icon Changed event. */
532
- InternalFrontstageManager.onToolIconChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
533
- /** Get Content Layout Activated event. */
534
- InternalFrontstageManager.onContentLayoutActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
535
- /** Get Content Control Activated event. */
536
- InternalFrontstageManager.onContentControlActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
537
- /** Get Navigation Aid Activated event. */
538
- InternalFrontstageManager.onNavigationAidActivatedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
539
- /** Get Widget State Changed event. */
540
- InternalFrontstageManager.onWidgetStateChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
541
- /** @internal */
542
- // eslint-disable-next-line @typescript-eslint/no-deprecated
543
- InternalFrontstageManager.onWidgetDefsUpdatedEvent = new BeUiEvent();
544
- /** @internal */
545
- InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent =
546
- // eslint-disable-next-line @typescript-eslint/no-deprecated
547
- new BeUiEvent();
548
- /** @internal */
549
- InternalFrontstageManager.onFrontstageRestoreLayoutEvent =
550
- // eslint-disable-next-line @typescript-eslint/no-deprecated
551
- new BeUiEvent();
552
- /** @internal */
553
- InternalFrontstageManager.onFrontstageWidgetsChangedEvent =
554
- // eslint-disable-next-line @typescript-eslint/no-deprecated
555
- new BeUiEvent();
556
- /** Get panel state changed event.
557
- * @alpha
558
- */
559
- InternalFrontstageManager.onPanelStateChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
560
- /** Get panel pinned changed event.
561
- * @alpha
562
- */
563
- InternalFrontstageManager.onPanelPinnedChangedEvent =
564
- // eslint-disable-next-line @typescript-eslint/no-deprecated
565
- new BeUiEvent();
566
- /** @internal */
567
- InternalFrontstageManager.onPanelSizeChangedEvent = new BeUiEvent();
568
568
  //# sourceMappingURL=InternalFrontstageManager.js.map