@itwin/appui-react 4.2.0-dev.1 → 4.2.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 (194) hide show
  1. package/CHANGELOG.md +12 -1
  2. package/lib/cjs/appui-react/UiFramework.js +5 -9
  3. package/lib/cjs/appui-react/UiFramework.js.map +1 -1
  4. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +1 -2
  5. package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  6. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +1 -1
  7. package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  8. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  9. package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  10. package/lib/cjs/appui-react/configurableui/TimeTracker.js +1 -2
  11. package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
  12. package/lib/cjs/appui-react/content/ContentLayout.js +9 -12
  13. package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
  14. package/lib/cjs/appui-react/content/DefaultViewOverlay.js +3 -4
  15. package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
  16. package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -2
  17. package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
  18. package/lib/cjs/appui-react/content/IModelViewport.js +3 -6
  19. package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
  20. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +1 -2
  21. package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  22. package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
  23. package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
  24. package/lib/cjs/appui-react/content/split-pane/SplitPane.js +10 -12
  25. package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
  26. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +2 -3
  27. package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  28. package/lib/cjs/appui-react/dialog/ContentDialog.js +3 -6
  29. package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
  30. package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -3
  31. package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
  32. package/lib/cjs/appui-react/frontstage/FrontstageDef.js +3 -4
  33. package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
  34. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +2 -3
  35. package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  36. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
  37. package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  38. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
  39. package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  40. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
  41. package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  42. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +8 -13
  43. package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  44. package/lib/cjs/appui-react/messages/ActivityMessage.js +5 -7
  45. package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
  46. package/lib/cjs/appui-react/pickers/ViewSelector.js +5 -6
  47. package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
  48. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +1 -2
  49. package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  50. package/lib/cjs/appui-react/popup/PopupManager.js +1 -2
  51. package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
  52. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
  53. package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  54. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +5 -7
  55. package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  56. package/lib/cjs/appui-react/statusbar/Indicator.js +1 -2
  57. package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
  58. package/lib/cjs/appui-react/statusbar/StatusBar.js +3 -5
  59. package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
  60. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  61. package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  62. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +10 -17
  63. package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  64. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
  65. package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  66. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +12 -14
  67. package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  68. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
  69. package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  70. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
  71. package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  72. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +8 -14
  73. package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  74. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  75. package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  76. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +1 -1
  77. package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  78. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +3 -3
  79. package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  80. package/lib/cjs/appui-react/widget-panels/Content.js +8 -9
  81. package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
  82. package/lib/cjs/appui-react/widget-panels/Frontstage.js +38 -39
  83. package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
  84. package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
  85. package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
  86. package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
  87. package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
  88. package/lib/cjs/appui-react/widget-panels/ToolSettings.js +12 -17
  89. package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
  90. package/lib/cjs/appui-react/widget-panels/Toolbars.js +2 -3
  91. package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
  92. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  93. package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  94. package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -1
  95. package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
  96. package/lib/cjs/appui-react/widgets/WidgetHost.js +2 -3
  97. package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
  98. package/lib/esm/appui-react/UiFramework.js +5 -9
  99. package/lib/esm/appui-react/UiFramework.js.map +1 -1
  100. package/lib/esm/appui-react/backstage/BackstageComposerItem.js +1 -2
  101. package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
  102. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +1 -1
  103. package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
  104. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
  105. package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
  106. package/lib/esm/appui-react/configurableui/TimeTracker.js +1 -2
  107. package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
  108. package/lib/esm/appui-react/content/ContentLayout.js +9 -12
  109. package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
  110. package/lib/esm/appui-react/content/DefaultViewOverlay.js +3 -4
  111. package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
  112. package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -2
  113. package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
  114. package/lib/esm/appui-react/content/IModelViewport.js +3 -6
  115. package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
  116. package/lib/esm/appui-react/content/InternalContentLayoutManager.js +1 -2
  117. package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
  118. package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -1
  119. package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
  120. package/lib/esm/appui-react/content/split-pane/SplitPane.js +10 -12
  121. package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
  122. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +2 -3
  123. package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
  124. package/lib/esm/appui-react/dialog/ContentDialog.js +3 -6
  125. package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
  126. package/lib/esm/appui-react/dialog/DialogManagerBase.js +2 -3
  127. package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
  128. package/lib/esm/appui-react/frontstage/FrontstageDef.js +3 -4
  129. package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
  130. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -3
  131. package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
  132. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
  133. package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
  134. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
  135. package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
  136. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
  137. package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
  138. package/lib/esm/appui-react/hooks/useSolarDataProvider.js +8 -13
  139. package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
  140. package/lib/esm/appui-react/messages/ActivityMessage.js +5 -7
  141. package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
  142. package/lib/esm/appui-react/pickers/ViewSelector.js +5 -6
  143. package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
  144. package/lib/esm/appui-react/popup/KeyinPalettePanel.js +1 -2
  145. package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
  146. package/lib/esm/appui-react/popup/PopupManager.js +1 -2
  147. package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
  148. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
  149. package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
  150. package/lib/esm/appui-react/stagepanels/StagePanelDef.js +5 -7
  151. package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
  152. package/lib/esm/appui-react/statusbar/Indicator.js +1 -2
  153. package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
  154. package/lib/esm/appui-react/statusbar/StatusBar.js +3 -5
  155. package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
  156. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
  157. package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
  158. package/lib/esm/appui-react/tools/CoreToolDefinitions.js +10 -17
  159. package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
  160. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
  161. package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
  162. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +12 -14
  163. package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
  164. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
  165. package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
  166. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
  167. package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
  168. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +8 -14
  169. package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
  170. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
  171. package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
  172. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +1 -1
  173. package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
  174. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +3 -3
  175. package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
  176. package/lib/esm/appui-react/widget-panels/Content.js +8 -9
  177. package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
  178. package/lib/esm/appui-react/widget-panels/Frontstage.js +38 -39
  179. package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
  180. package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
  181. package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
  182. package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
  183. package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
  184. package/lib/esm/appui-react/widget-panels/ToolSettings.js +12 -17
  185. package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
  186. package/lib/esm/appui-react/widget-panels/Toolbars.js +2 -3
  187. package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
  188. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -2
  189. package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
  190. package/lib/esm/appui-react/widgets/WidgetDef.js +1 -1
  191. package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
  192. package/lib/esm/appui-react/widgets/WidgetHost.js +2 -3
  193. package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
  194. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"Frontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.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\n// cSpell:ignore popout\n\nimport \"./Frontstage.scss\";\nimport produce from \"immer\";\nimport * as React from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport { assert, Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport type {\n RectangleProps,\n SizeProps,\n UiStateStorageResult,\n} from \"@itwin/core-react\";\nimport { Rectangle, Size, UiStateStorageStatus } from \"@itwin/core-react\";\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\nimport type {\n FloatingWidgetHomeState,\n LayoutStore,\n NineZoneAction,\n NineZoneDispatch,\n NineZoneLabels,\n NineZoneState,\n PanelSide,\n TabState,\n} from \"@itwin/appui-layout-react\";\nimport {\n addFloatingWidget,\n addPanelWidget,\n addTab,\n addTabToWidget,\n convertAllPopupWidgetContainersToFloating,\n createLayoutStore,\n createNineZoneState,\n floatingWidgetBringToFront,\n FloatingWidgets,\n getTabLocation,\n getUniqueId,\n getWidgetPanelSectionId,\n insertPanelWidget,\n insertTabToWidget,\n isFloatingTabLocation,\n isHorizontalPanelSide,\n isPanelTabLocation,\n isPopoutTabLocation,\n NineZone,\n NineZoneStateReducer,\n panelSides,\n removeTab,\n removeTabFromWidget,\n toolSettingsTabId,\n WidgetPanels,\n} from \"@itwin/appui-layout-react\";\nimport type {\n FrontstageDef,\n FrontstageEventArgs,\n} from \"../frontstage/FrontstageDef\";\nimport type { StagePanelMaxSizeSpec } from \"../stagepanels/StagePanelConfig\";\nimport { StagePanelState, toPanelSide } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type {\n TabLocation,\n WidgetDef,\n WidgetEventArgs,\n WidgetStateChangedEventArgs,\n} from \"../widgets/WidgetDef\";\nimport { WidgetContent } from \"./Content\";\nimport { WidgetPanelsFrontstageContent } from \"./FrontstageContent\";\nimport {\n ModalFrontstageComposer,\n useActiveModalFrontstageInfo,\n} from \"./ModalFrontstageComposer\";\nimport { WidgetPanelsStatusBar } from \"./StatusBar\";\nimport { WidgetPanelsTab } from \"./Tab\";\nimport { WidgetPanelsToolbars } from \"./Toolbars\";\nimport { ToolSettingsContent, WidgetPanelsToolSettings } from \"./ToolSettings\";\nimport { useEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome\";\nimport type { FrameworkRootState } from \"../redux/StateManager\";\nimport { useSelector } from \"react-redux\";\nimport { useUiVisibility } from \"../hooks/useUiVisibility\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { FloatingWidget } from \"./FloatingWidget\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager\";\nimport { WidgetState } from \"../widgets/WidgetState\";\nimport { StagePanelSection } from \"../stagepanels/StagePanelSection\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { UiItemsManager } from \"../ui-items-provider/UiItemsManager\";\n\nfunction WidgetPanelsFrontstageComponent() {\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\n const uiIsVisible = useUiVisibility();\n\n return (\n <>\n <WidgetPanelsToolSettings />\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\n <WidgetPanels\n className=\"uifw-widgetPanels\"\n centerContent={<WidgetPanelsToolbars />}\n >\n <WidgetPanelsFrontstageContent />\n </WidgetPanels>\n <WidgetPanelsStatusBar />\n <FloatingWidgets />\n </ToolbarPopupAutoHideContext.Provider>\n </>\n );\n}\n\nconst widgetContent = <WidgetContent />;\nconst toolSettingsContent = <ToolSettingsContent />;\nconst widgetPanelsFrontstage = <WidgetPanelsFrontstageComponent />;\n\n/** @internal */\nexport function useLayoutStore() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n const [layout, setLayout] = React.useState(() =>\n createLayoutStore(def?.nineZoneState)\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n unstable_batchedUpdates(() => {\n setDef(args.activatedFrontstageDef);\n setLayout(\n createLayoutStore(args.activatedFrontstageDef.nineZoneState)\n );\n });\n }\n );\n }, []);\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(\n (args) => {\n if (\n args.frontstageDef !== def ||\n def.isStageClosing ||\n def.isApplicationClosing\n )\n return;\n unstable_batchedUpdates(() => {\n // https://github.com/pmndrs/zustand/blob/main/docs/guides/event-handler-in-pre-react-18.md\n layout.setState(args.state || defaultNineZone);\n });\n }\n );\n }, [def, layout]);\n return [layout, def] as const;\n}\n\n/** Update in-memory NineZoneState of newly activated frontstage with up to date size.\n * @internal\n */\nexport function useUpdateNineZoneSize(frontstageDef: FrontstageDef) {\n React.useEffect(() => {\n const size = InternalFrontstageManager.nineZoneSize;\n let state = frontstageDef.nineZoneState;\n if (!size || !state) return;\n state = FrameworkStateReducer(\n state,\n {\n type: \"RESIZE\",\n size: {\n height: size.height,\n width: size.width,\n },\n },\n frontstageDef\n );\n frontstageDef.nineZoneState = state;\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function FrameworkStateReducer(\n state: NineZoneState,\n action: NineZoneAction,\n frontstageDef: FrontstageDef\n) {\n state = NineZoneStateReducer(state, action);\n if (action.type === \"RESIZE\") {\n state = produce(state, (draft) => {\n for (const panelSide of panelSides) {\n const panel = draft.panels[panelSide];\n const location = toStagePanelLocation(panelSide);\n const panelDef = frontstageDef.getStagePanelDef(location);\n if (panelDef?.maxSizeSpec) {\n panel.maxSize = getPanelMaxSize(\n panelDef.maxSizeSpec,\n panelSide,\n action.size\n );\n if (panel.size) {\n panel.size = Math.min(\n Math.max(panel.size, panel.minSize),\n panel.maxSize\n );\n }\n }\n }\n });\n }\n return state;\n}\n\n/** @internal */\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\n const dispatch = React.useCallback<NineZoneDispatch>(\n (action) => {\n if (action.type === \"RESIZE\") {\n InternalFrontstageManager.nineZoneSize = Size.create(action.size);\n }\n // istanbul ignore if\n if (action.type === \"TOOL_SETTINGS_DRAG_START\") {\n void UiFramework.postTelemetry(\n \"Tool Settings Undocking\",\n \"28B04E07-AE73-4533-A0BA-8E2A8DC99ADF\"\n );\n }\n // istanbul ignore if\n if (action.type === \"TOOL_SETTINGS_DOCK\") {\n void UiFramework.postTelemetry(\n \"Tool Settings Docking to Settings Bar\",\n \"BEDE684B-B3DB-4637-B3AF-DC3CBA223F94\"\n );\n }\n if (action.type === \"WIDGET_TAB_POPOUT\") {\n const tabId = action.id;\n frontstageDef.popoutWidget(tabId);\n return;\n }\n\n const state = frontstageDef.nineZoneState;\n if (!state) return;\n frontstageDef.nineZoneState = FrameworkStateReducer(\n state,\n action,\n frontstageDef\n );\n },\n [frontstageDef]\n );\n return dispatch;\n}\n\n/** @internal */\nexport function WidgetPanelsFrontstage() {\n const [layout, frontstageDef] = useLayoutStore();\n\n React.useEffect(() => {\n const triggerWidowCloseProcessing = () => {\n frontstageDef && frontstageDef.setIsApplicationClosing(true);\n };\n\n frontstageDef && frontstageDef.setIsApplicationClosing(false);\n\n window.addEventListener(\"unload\", triggerWidowCloseProcessing);\n return () => {\n window.removeEventListener(\"unload\", triggerWidowCloseProcessing);\n };\n }, [frontstageDef]);\n\n if (!frontstageDef) return null;\n return (\n <ActiveFrontstageDefProvider\n frontstageDef={frontstageDef}\n layout={layout}\n />\n );\n}\n\nconst defaultNineZone = createNineZoneState();\nconst tabElement = <WidgetPanelsTab />;\nconst floatingWidgetElement = <FloatingWidget />;\n\ninterface ActiveFrontstageDefProviderProps {\n layout: LayoutStore;\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport function ActiveFrontstageDefProvider({\n frontstageDef,\n layout,\n}: ActiveFrontstageDefProviderProps) {\n const dispatch = useNineZoneDispatch(frontstageDef);\n useUpdateNineZoneSize(frontstageDef);\n useSavedFrontstageState(frontstageDef);\n useSaveFrontstageSettings(frontstageDef, layout);\n useItemsManager(frontstageDef);\n const labels = useLabels();\n const uiIsVisible = useUiVisibility();\n const showWidgetIcon = useSelector((state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.showWidgetIcon;\n });\n const autoCollapseUnpinnedPanels = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.autoCollapseUnpinnedPanels;\n }\n );\n const animateToolSettings = useSelector((state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.animateToolSettings;\n });\n const useToolAsToolSettingsLabel = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.useToolAsToolSettingsLabel;\n }\n );\n useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel);\n\n const handleKeyDown = useEscapeSetFocusToHome();\n\n return (\n <div\n className=\"uifw-widgetPanels-frontstage\"\n onKeyDown={handleKeyDown}\n role=\"presentation\"\n >\n <NineZone\n dispatch={dispatch}\n labels={labels}\n layout={layout}\n tab={tabElement}\n floatingWidget={floatingWidgetElement}\n showWidgetIcon={showWidgetIcon}\n autoCollapseUnpinnedPanels={autoCollapseUnpinnedPanels}\n toolSettingsContent={toolSettingsContent}\n widgetContent={widgetContent}\n animateDockedToolSettings={animateToolSettings}\n uiIsVisible={uiIsVisible}\n >\n {widgetPanelsFrontstage}\n </NineZone>\n </div>\n );\n}\n\n/** @internal */\nexport function useLabels() {\n return React.useMemo<NineZoneLabels>(\n () => ({\n dockToolSettingsTitle: UiFramework.translate(\n \"widget.tooltips.dockToolSettings\"\n ),\n moreWidgetsTitle: UiFramework.translate(\"widget.tooltips.moreWidgets\"),\n moreToolSettingsTitle: UiFramework.translate(\n \"widget.tooltips.moreToolSettings\"\n ),\n pinPanelTitle: UiFramework.translate(\"widget.tooltips.pinPanel\"),\n resizeGripTitle: UiFramework.translate(\"widget.tooltips.resizeGrip\"),\n sendWidgetHomeTitle: UiFramework.translate(\"widget.tooltips.sendHome\"),\n toolSettingsHandleTitle: UiFramework.translate(\n \"widget.tooltips.toolSettingsHandle\"\n ),\n unpinPanelTitle: UiFramework.translate(\"widget.tooltips.unpinPanel\"),\n popoutActiveTab: UiFramework.translate(\"widget.tooltips.popoutActiveTab\"),\n }),\n []\n );\n}\n\n/** @internal */\nexport function addWidgets(\n state: NineZoneState,\n widgets: ReadonlyArray<WidgetDef>,\n side: PanelSide,\n widgetId: WidgetId\n): NineZoneState {\n const visibleWidgets = widgets.filter(\n (w) => w.isVisible && w.defaultState !== WidgetState.Floating\n );\n if (visibleWidgets.length === 0) return state;\n\n const tabs = new Array<string>();\n for (const widget of visibleWidgets) {\n const label = getWidgetLabel(widget.label);\n state = addTab(state, widget.id, {\n label,\n iconSpec: widget.iconSpec,\n preferredPanelWidgetSize: widget.preferredPanelSize,\n preferredFloatingWidgetSize: widget.defaultFloatingSize,\n canPopout: widget.canPopout,\n isFloatingStateWindowResizable: widget.isFloatingStateWindowResizable,\n hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,\n allowedPanelTargets: widget.allowedPanelTargets?.map((location) =>\n toPanelSide(location)\n ),\n });\n tabs.push(widget.id);\n }\n\n const activeWidget = visibleWidgets.find((widget) => widget.isActive);\n const minimized = false;\n // istanbul ignore else\n if (activeWidget?.defaultState !== WidgetState.Floating) {\n state = addPanelWidget(state, side, widgetId, tabs, {\n activeTabId: activeWidget ? activeWidget.id : tabs[0],\n minimized,\n });\n }\n\n return state;\n}\n\n/** @internal */\n// istanbul ignore next\nexport function appendWidgets(\n state: NineZoneState,\n widgetDefs: ReadonlyArray<WidgetDef>,\n location: StagePanelLocation,\n section: StagePanelSection\n): NineZoneState {\n if (widgetDefs.length === 0) return state;\n\n const side = toPanelSide(location);\n\n // Add missing widget tabs.\n for (const widgetDef of widgetDefs) {\n const label = getWidgetLabel(widgetDef.label);\n const saveTab = state.tabs[widgetDef.id];\n const preferredPanelWidgetSize = saveTab\n ? saveTab.preferredPanelWidgetSize\n : widgetDef.preferredPanelSize;\n const preferredFloatingWidgetSize = saveTab\n ? saveTab.preferredFloatingWidgetSize\n : widgetDef.defaultFloatingSize;\n // if a defaultFloatingSize is specified then this mean the widget can't determine its intrinsic size and must be explicitly sized\n const userSized = saveTab\n ? saveTab.userSized ||\n (!!widgetDef.defaultFloatingSize &&\n !!saveTab.preferredFloatingWidgetSize)\n : !!widgetDef.defaultFloatingSize;\n state = addTab(state, widgetDef.id, {\n label,\n iconSpec: widgetDef.iconSpec,\n canPopout: widgetDef.canPopout,\n preferredPanelWidgetSize,\n preferredFloatingWidgetSize,\n userSized,\n isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,\n hideWithUiWhenFloating: !!widgetDef.hideWithUiWhenFloating,\n allowedPanelTargets: widgetDef.allowedPanelTargets?.map((l) =>\n toPanelSide(l)\n ),\n });\n\n if (\n widgetDef.isFloatingStateSupported &&\n widgetDef.defaultState === WidgetState.Floating\n ) {\n const floatingContainerId =\n widgetDef.floatingContainerId ?? getUniqueId();\n const widgetContainerId = getWidgetId(location, section);\n const home: FloatingWidgetHomeState = {\n side,\n widgetId: widgetContainerId,\n widgetIndex: 0,\n };\n const preferredPosition = widgetDef.defaultFloatingPosition;\n\n if (floatingContainerId in state.widgets) {\n state = addTabToWidget(state, widgetDef.id, floatingContainerId);\n } else {\n const tab = state.tabs[widgetDef.id];\n\n const size = {\n height: 200,\n width: 300,\n ...tab.preferredFloatingWidgetSize,\n };\n const preferredPoint = preferredPosition ?? {\n x: (state.size.width - size.width) / 2,\n y: (state.size.height - size.height) / 2,\n };\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.createFromSize(size).offset(preferredPoint);\n const containedBounds = bounds.containIn(nzBounds);\n\n state = addFloatingWidget(\n state,\n floatingContainerId,\n [widgetDef.id],\n {\n bounds: containedBounds.toProps(),\n home,\n userSized,\n },\n {\n isFloatingStateWindowResizable:\n widgetDef.isFloatingStateWindowResizable,\n }\n );\n }\n } else {\n const preferredWidgetIndex: number = section;\n const widgetPanelSectionId = getWidgetPanelSectionId(\n side,\n preferredWidgetIndex\n );\n if (widgetPanelSectionId in state.widgets) {\n state = addTabToWidget(state, widgetDef.id, widgetPanelSectionId);\n } else {\n const panel = state.panels[side];\n if (panel.widgets.length < panel.maxWidgetCount) {\n state = addPanelWidget(state, side, widgetPanelSectionId, [\n widgetDef.id,\n ]);\n } else {\n const widgetIndex = Math.min(\n preferredWidgetIndex,\n panel.widgets.length - 1\n );\n const widgetId = panel.widgets[widgetIndex];\n state = addTabToWidget(state, widgetDef.id, widgetId);\n }\n }\n }\n }\n\n return state;\n}\n\nfunction processPopoutWidgets(\n initialState: NineZoneState,\n frontstageDef: FrontstageDef\n): NineZoneState {\n // istanbul ignore next\n if (!initialState.popoutWidgets) return initialState;\n\n // istanbul ignore next - not unit testing electron case that reopens popout windows\n if (initialState.popoutWidgets && ProcessDetector.isElectronAppFrontend) {\n if (\n initialState.popoutWidgets.allIds.length &&\n ProcessDetector.isElectronAppFrontend\n ) {\n for (const widgetContainerId of initialState.popoutWidgets.allIds) {\n frontstageDef.openPopoutWidgetContainer(\n initialState,\n widgetContainerId\n );\n }\n }\n return initialState;\n }\n\n return convertAllPopupWidgetContainersToFloating(initialState);\n}\n\n/** Adds frontstageDef widgets that are missing in NineZoneState.\n * @internal\n */\nexport function addMissingWidgets(\n frontstageDef: FrontstageDef,\n initialState: NineZoneState\n): NineZoneState {\n let state = initialState;\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.leftPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Left,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.leftPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Left,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.rightPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Right,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.rightPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Right,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Top,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Top,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Bottom,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Bottom,\n StagePanelSection.End\n );\n\n return state;\n}\n\n/** Hide widgets with Hidden defaultState. */\nfunction hideWidgets(\n state: NineZoneState,\n frontstageDef: FrontstageDef\n): NineZoneState {\n const tabs = Object.values(state.tabs);\n for (const tab of tabs) {\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (!widgetDef) continue;\n\n if (widgetDef.defaultState === WidgetState.Hidden) {\n state = hideWidget(state, widgetDef);\n }\n }\n\n return state;\n}\n\n/** Removes NineZoneState widgets that are missing in frontstageDef.\n * @internal\n */\nexport function removeMissingWidgets(\n frontstageDef: FrontstageDef,\n initialState: NineZoneState\n): NineZoneState {\n let state = initialState;\n for (const [, tab] of Object.entries(state.tabs)) {\n if (tab.id === toolSettingsTabId) continue;\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (widgetDef) continue;\n state = removeTab(state, tab.id);\n }\n return state;\n}\n\nfunction getWidgetLabel(label: string) {\n return label === \"\" ? \"Widget\" : label;\n}\n\ntype WidgetId =\n | \"leftStart\"\n | \"leftEnd\"\n | \"rightStart\"\n | \"rightEnd\"\n | \"topStart\"\n | \"topEnd\"\n | \"bottomStart\"\n | \"bottomEnd\";\n\nfunction 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/** @internal */\nexport function getWidgetId(\n location: StagePanelLocation,\n section: StagePanelSection\n): WidgetId {\n switch (location) {\n case StagePanelLocation.Left: {\n if (section === StagePanelSection.Start) return \"leftStart\";\n return \"leftEnd\";\n }\n case StagePanelLocation.Right: {\n if (section === StagePanelSection.Start) return \"rightStart\";\n return \"rightEnd\";\n }\n case StagePanelLocation.Top: {\n if (section === StagePanelSection.Start) return \"topStart\";\n return \"topEnd\";\n }\n case StagePanelLocation.Bottom: {\n if (section === StagePanelSection.Start) return \"bottomStart\";\n return \"bottomEnd\";\n }\n }\n}\n\n/** @internal */\nexport function getPanelSectionWidgets(\n frontstageDef: FrontstageDef,\n location: StagePanelLocation,\n section: StagePanelSection\n): ReadonlyArray<WidgetDef> {\n const stagePanel = frontstageDef.getStagePanelDef(location);\n const panelSection = stagePanel?.getPanelSectionDef(section);\n return panelSection?.widgetDefs || [];\n}\n\n/** @internal */\nexport function addPanelWidgets(\n state: NineZoneState,\n frontstageDef: FrontstageDef,\n location: StagePanelLocation\n): NineZoneState {\n const side = toPanelSide(location);\n\n const start = getWidgetId(location, StagePanelSection.Start);\n const startWidgets = getPanelSectionWidgets(\n frontstageDef,\n location,\n StagePanelSection.Start\n );\n state = addWidgets(\n state,\n determineNewWidgets(startWidgets, state),\n side,\n start\n );\n\n const end = getWidgetId(location, StagePanelSection.End);\n const endWidgets = getPanelSectionWidgets(\n frontstageDef,\n location,\n StagePanelSection.End\n );\n state = addWidgets(state, determineNewWidgets(endWidgets, state), side, end);\n return state;\n}\n\n/** @internal */\nexport function isFrontstageStateSettingResult(\n settingsResult: UiStateStorageResult\n): settingsResult is {\n status: UiStateStorageStatus.Success;\n setting: WidgetPanelsFrontstageState;\n} {\n if (settingsResult.status === UiStateStorageStatus.Success) return true;\n return false;\n}\n\n/** @internal */\nexport function initializePanel(\n state: NineZoneState,\n frontstageDef: FrontstageDef,\n location: StagePanelLocation\n) {\n const panelSide = toPanelSide(location);\n\n state = addPanelWidgets(state, frontstageDef, location);\n const panelDef = frontstageDef.getStagePanelDef(location);\n state = produce(state, (draft) => {\n const panel = draft.panels[panelSide];\n panel.minSize = panelDef?.minSize ?? panel.minSize;\n panel.pinned = panelDef?.pinned ?? panel.pinned;\n panel.resizable = panelDef?.resizable ?? panel.resizable;\n if (panelDef?.maxSizeSpec) {\n panel.maxSize = getPanelMaxSize(\n panelDef.maxSizeSpec,\n panelSide,\n state.size\n );\n }\n\n const size = panelDef?.size;\n panel.size =\n size === undefined\n ? size\n : Math.min(Math.max(size, panel.minSize), panel.maxSize);\n });\n return state;\n}\n\nfunction getPanelMaxSize(\n maxSizeSpec: StagePanelMaxSizeSpec,\n panel: PanelSide,\n nineZoneSize: SizeProps\n) {\n if (typeof maxSizeSpec === \"number\") {\n return maxSizeSpec;\n }\n const size = isHorizontalPanelSide(panel)\n ? nineZoneSize.height\n : nineZoneSize.width;\n return (maxSizeSpec.percentage / 100) * size;\n}\n\nconst stateVersion = 13; // this needs to be bumped when NineZoneState is changed (to recreate the layout).\n\n/** @internal */\nexport function initializeNineZoneState(\n frontstageDef: FrontstageDef\n): NineZoneState {\n let nineZone = defaultNineZone;\n nineZone = produce(nineZone, (stateDraft) => {\n // istanbul ignore next\n if (!InternalFrontstageManager.nineZoneSize) return;\n stateDraft.size = {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n };\n });\n\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Left);\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Right);\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Top);\n nineZone = initializePanel(\n nineZone,\n frontstageDef,\n StagePanelLocation.Bottom\n );\n nineZone = produce(nineZone, (stateDraft) => {\n for (const [, panel] of Object.entries(stateDraft.panels)) {\n const expanded = panel.widgets.find(\n (widgetId) => stateDraft.widgets[widgetId].minimized === false\n );\n const firstWidget =\n panel.widgets.length > 0\n ? stateDraft.widgets[panel.widgets[0]]\n : undefined;\n // istanbul ignore next\n if (!expanded && firstWidget) {\n firstWidget.minimized = false;\n }\n }\n stateDraft.panels.left.collapsed = isPanelCollapsed(\n frontstageDef.leftPanel?.panelState\n );\n stateDraft.panels.right.collapsed = isPanelCollapsed(\n frontstageDef.rightPanel?.panelState\n );\n stateDraft.panels.top.collapsed = isPanelCollapsed(\n frontstageDef.topPanel?.panelState\n );\n stateDraft.panels.bottom.collapsed = isPanelCollapsed(\n frontstageDef.bottomPanel?.panelState\n );\n\n const toolSettingsWidgetDef = frontstageDef.toolSettings;\n if (toolSettingsWidgetDef) {\n const toolSettingsTab = stateDraft.tabs[toolSettingsTabId];\n toolSettingsTab.preferredPanelWidgetSize =\n toolSettingsWidgetDef.preferredPanelSize;\n }\n });\n nineZone = addMissingWidgets(frontstageDef, nineZone);\n nineZone = hideWidgets(nineZone, frontstageDef);\n nineZone = processPopoutWidgets(nineZone, frontstageDef);\n\n return nineZone;\n}\n\n/** Converts from saved NineZoneState to NineZoneState.\n * @note Restores toolSettings tab.\n * @note Restores tab labels.\n * @internal\n */\nexport function restoreNineZoneState(\n frontstageDef: FrontstageDef,\n saved: SavedNineZoneState\n): NineZoneState {\n let restored: NineZoneState = {\n ...saved,\n tabs: defaultNineZone.tabs,\n };\n\n for (const [, tab] of Object.entries(saved.tabs)) {\n // Re-add the placeholder tab in order to correctly remove it from the state if WidgetDef is not found.\n restored = addTab(restored, tab.id);\n\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (!widgetDef) {\n Logger.logInfo(\n UiFramework.loggerCategory(restoreNineZoneState),\n \"WidgetDef is not found for saved tab.\",\n () => ({\n frontstageId: frontstageDef.id,\n tabId: tab.id,\n })\n );\n restored = removeTab(restored, tab.id);\n continue;\n }\n restored = produce(restored, (draft) => {\n draft.tabs[tab.id] = {\n ...tab,\n label: getWidgetLabel(widgetDef.label),\n hideWithUiWhenFloating: widgetDef.hideWithUiWhenFloating,\n iconSpec: widgetDef.iconSpec,\n canPopout: widgetDef.canPopout,\n isFloatingStateWindowResizable:\n widgetDef.isFloatingStateWindowResizable,\n allowedPanelTargets: widgetDef.allowedPanelTargets?.map((location) =>\n toPanelSide(location)\n ),\n };\n });\n }\n restored = produce(restored, (draft) => {\n // remove center panel section if one is found in left or right panels\n const oldLeftMiddleIndex = saved.panels.left.widgets.findIndex(\n (value) => value === \"leftMiddle\"\n );\n // istanbul ignore next\n if (-1 !== oldLeftMiddleIndex) {\n draft.panels.left.widgets = saved.panels.left.widgets.filter(\n (value) => value !== \"leftMiddle\"\n );\n if (\"leftEnd\" in draft.widgets) {\n draft.widgets.leftMiddle.tabs.forEach((tab) =>\n draft.widgets.leftEnd.tabs.push(tab)\n );\n } else {\n draft.widgets.leftEnd = { ...draft.widgets.leftMiddle };\n delete draft.widgets.leftMiddle;\n }\n }\n\n const oldRightMiddleIndex = saved.panels.right.widgets.findIndex(\n (value) => value === \"rightMiddle\"\n );\n // istanbul ignore next\n if (-1 !== oldRightMiddleIndex) {\n draft.panels.right.widgets = saved.panels.right.widgets.filter(\n (value) => value !== \"rightMiddle\"\n );\n if (\"rightEnd\" in draft.widgets) {\n draft.widgets.rightMiddle.tabs.forEach((tab) =>\n draft.widgets.rightEnd.tabs.push(tab)\n );\n } else {\n draft.widgets.rightEnd = { ...draft.widgets.rightMiddle };\n delete draft.widgets.rightMiddle;\n }\n }\n\n return;\n });\n\n if (\n InternalFrontstageManager.nineZoneSize &&\n (0 !== InternalFrontstageManager.nineZoneSize.height ||\n 0 !== InternalFrontstageManager.nineZoneSize.width)\n ) {\n restored = FrameworkStateReducer(\n restored,\n {\n type: \"RESIZE\",\n size: {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n },\n },\n frontstageDef\n );\n }\n return restored;\n}\n\n/** Prepares NineZoneState to be saved.\n * @note Removes toolSettings tab.\n * @note Removes tab labels and iconSpec.\n * @internal\n */\nexport function packNineZoneState(state: NineZoneState): SavedNineZoneState {\n let packed: SavedNineZoneState = {\n ...state,\n tabs: {},\n };\n packed = produce(packed, (draft) => {\n for (const [, tab] of Object.entries(state.tabs)) {\n if (tab.id === toolSettingsTabId) continue;\n\n draft.tabs[tab.id] = {\n id: tab.id,\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n allowedPanelTargets: tab.allowedPanelTargets,\n userSized: tab.userSized,\n };\n }\n });\n return packed;\n}\n\n// istanbul ignore next\nfunction packSavedWidgets(frontstageDef: FrontstageDef): SavedWidgets {\n let savedWidgets: Array<SavedWidget> = [];\n for (const widgetDef of frontstageDef.widgetDefs) {\n const id = widgetDef.id;\n const initialWidget: SavedWidget = {\n id,\n };\n const widget = produce(initialWidget, (draft) => {\n if (widgetDef.tabLocation) {\n draft.tabLocation = { ...widgetDef.tabLocation };\n }\n if (widgetDef.popoutBounds) {\n draft.popoutBounds = widgetDef.popoutBounds.toProps();\n }\n });\n if (widget === initialWidget) continue;\n\n savedWidgets.push(widget);\n }\n\n // Add previously saved widgets.\n const prevSavedWidgets = frontstageDef.savedWidgetDefs || [];\n for (const prevWidget of prevSavedWidgets) {\n if (savedWidgets.find((w) => w.id === prevWidget.id)) continue;\n\n savedWidgets.push(prevWidget);\n }\n\n // Limit number of saved widgets.\n const maxWidgets = 100;\n if (savedWidgets.length > maxWidgets)\n savedWidgets = savedWidgets.slice(0, maxWidgets);\n\n return savedWidgets;\n}\n\n// istanbul ignore next\nfunction restoreSavedWidgets(frontstage: FrontstageDef) {\n const savedWidgets = frontstage.savedWidgetDefs || [];\n for (const savedWidget of savedWidgets) {\n const widgetId = savedWidget.id;\n const widgetDef = frontstage.findWidgetDef(widgetId);\n if (!widgetDef) continue;\n\n if (savedWidget.tabLocation) {\n widgetDef.tabLocation = { ...savedWidget.tabLocation };\n }\n if (savedWidget.popoutBounds) {\n widgetDef.popoutBounds = Rectangle.create(savedWidget.popoutBounds);\n }\n }\n}\n\n/** @internal */\nexport function isPanelCollapsed(panelState: StagePanelState | undefined) {\n return panelState !== StagePanelState.Open;\n}\n\n/** FrontstageState is saved in UiStateStorage.\n * @internal\n */\nexport interface WidgetPanelsFrontstageState {\n nineZone: SavedNineZoneState;\n widgets: SavedWidgets;\n id: FrontstageDef[\"id\"];\n /** Frontstage version used to create the frontstage state. Allows to invalidate the layout from the frontstage. */\n version: number;\n /** Platform provided frontstage version. Allows to invalidate the layout from the platform. */\n stateVersion: number;\n}\n\n/** Saved data specific to `WidgetDef`. I.e. used to restore hidden widgets.\n * @internal\n */\nexport interface SavedWidget {\n readonly id: WidgetDef[\"id\"];\n readonly tabLocation?: TabLocation;\n readonly popoutBounds?: RectangleProps;\n}\n\n/** @internal */\nexport type SavedWidgets = ReadonlyArray<SavedWidget>;\n\n// We don't save tab labels or if widget is allowed to \"pop-out\".\ntype SavedTabState = Omit<\n TabState,\n \"label\" | \"canPopout\" | \"isFloatingStateWindowResizable\" | \"iconSpec\"\n>;\n\ninterface SavedTabsState {\n readonly [id: string]: SavedTabState;\n}\n\n// // We don't save if widget is allowed to \"pop-out\" or if floating widget can be resized.\n// type SavedWidgetState = Omit<WidgetState, | \"canPopout\" | \"isFloatingStateWindowResizable\">;\n//\n// interface SavedWidgetsState {\n// readonly [id: string]: SavedWidgetState;\n// }\n\ninterface SavedNineZoneState extends Omit<NineZoneState, \"tabs\"> {\n readonly tabs: SavedTabsState;\n // readonly widgets: SavedWidgetsState;\n}\n\nfunction addHiddenWidget(\n state: NineZoneState,\n widgetDef: WidgetDef\n): NineZoneState {\n const tabLocation = widgetDef.tabLocation || widgetDef.defaultTabLocation;\n const tabId = widgetDef.id;\n const { widgetId, tabIndex } = tabLocation;\n\n if (widgetId in state.widgets) {\n // Add to an existing widget (by widget id).\n return insertTabToWidget(state, tabId, widgetId, tabIndex);\n } else if (tabLocation.floatingWidget) {\n const floatingWidget = tabLocation.floatingWidget;\n assert(widgetId === floatingWidget.id);\n\n // Add to a new floating widget.\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.create(floatingWidget.bounds).containIn(nzBounds);\n return addFloatingWidget(state, floatingWidget.id, [tabId], {\n ...floatingWidget,\n bounds: bounds.toProps(),\n });\n }\n\n // Add to a panel section.\n const panel = state.panels[tabLocation.side];\n\n // Add to existing panel section.\n if (panel.widgets.length >= panel.maxWidgetCount) {\n const sectionIndex = Math.min(\n panel.maxWidgetCount - 1,\n tabLocation.widgetIndex\n );\n const sectionId = panel.widgets[sectionIndex];\n return insertTabToWidget(state, tabId, sectionId, tabLocation.tabIndex);\n }\n\n // Create a new panel section.\n const newSectionId = getUniqueId();\n return insertPanelWidget(\n state,\n panel.side,\n newSectionId,\n [tabId],\n tabLocation.widgetIndex\n );\n}\n\n/** @internal */\nexport function setWidgetState(\n state: NineZoneState,\n widgetDef: WidgetDef,\n widgetState: WidgetState\n) {\n if (widgetState === WidgetState.Hidden) {\n return hideWidget(state, widgetDef);\n } else if (widgetState === WidgetState.Open) {\n const id = widgetDef.id;\n let location = getTabLocation(state, id);\n if (!location) {\n state = addHiddenWidget(state, widgetDef);\n location = getTabLocation(state, id);\n }\n\n return produce(state, (draft) => {\n assert(!!location);\n const widget = draft.widgets[location.widgetId];\n widget.minimized = false;\n widget.activeTabId = id;\n\n if (isFloatingTabLocation(location)) {\n const floatingWidget =\n draft.floatingWidgets.byId[location.floatingWidgetId];\n floatingWidget.hidden = false;\n // istanbul ignore else\n } else if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.collapsed = false;\n if (undefined === panel.size || 0 === panel.size) {\n // istanbul ignore next\n panel.size = panel.minSize ?? 200;\n }\n }\n });\n } else if (widgetState === WidgetState.Closed) {\n const id = widgetDef.id;\n let location = getTabLocation(state, id);\n if (!location) {\n state = addHiddenWidget(state, widgetDef);\n location = getTabLocation(state, id);\n }\n\n // TODO: should change activeTabId of a widget with multiple tabs.\n return produce(state, (draft) => {\n assert(!!location);\n const widget = draft.widgets[location.widgetId];\n\n if (isFloatingTabLocation(location)) {\n if (id === widget.activeTabId) {\n widget.minimized = true;\n }\n }\n });\n } else if (widgetState === WidgetState.Floating) {\n const id = widgetDef.id;\n let location = getTabLocation(state, id);\n if (!location) {\n state = addHiddenWidget(state, widgetDef);\n location = getTabLocation(state, id);\n }\n\n assert(!!location);\n if (isFloatingTabLocation(location)) return state;\n\n // Widget is not floating.\n state = removeTabFromWidget(state, id);\n const bounds = widgetDef.tabLocation?.floatingWidget?.bounds;\n state = addFloatingWidget(state, getUniqueId(), [id], { bounds });\n }\n return state;\n}\n\n/** Stores widget location and hides it in the UI. */\nfunction hideWidget(state: NineZoneState, widgetDef: WidgetDef) {\n const location = getTabLocation(state, widgetDef.id);\n if (!location) return state;\n // istanbul ignore else\n if (isFloatingTabLocation(location)) {\n const floatingWidget = state.floatingWidgets.byId[location.widgetId];\n widgetDef.setFloatingContainerId(location.floatingWidgetId);\n widgetDef.tabLocation = {\n side: floatingWidget.home.side,\n tabIndex: floatingWidget.home.widgetIndex,\n widgetId: floatingWidget.id,\n widgetIndex: floatingWidget.home.widgetIndex,\n floatingWidget,\n };\n } else if (!isPopoutTabLocation(location)) {\n const widgetId = location.widgetId;\n const side = isPanelTabLocation(location) ? location.side : \"left\";\n const widgetIndex = isPanelTabLocation(location)\n ? state.panels[side].widgets.indexOf(widgetId)\n : 0;\n const tabIndex = state.widgets[location.widgetId].tabs.indexOf(\n widgetDef.id\n );\n widgetDef.tabLocation = {\n side,\n tabIndex,\n widgetId,\n widgetIndex,\n };\n }\n return removeTabFromWidget(state, widgetDef.id);\n}\n\n/** @internal */\nexport function showWidget(state: NineZoneState, id: TabState[\"id\"]) {\n const location = getTabLocation(state, id);\n if (!location) return state;\n state = produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n widget.activeTabId = id;\n widget.minimized = false;\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.collapsed = false;\n }\n });\n if (isFloatingTabLocation(location)) {\n state = floatingWidgetBringToFront(state, location.floatingWidgetId);\n }\n return state;\n}\n\n/** @internal */\nexport function expandWidget(state: NineZoneState, id: TabState[\"id\"]) {\n const location = getTabLocation(state, id);\n if (!location) return state;\n\n return produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.splitterPercent =\n panel.widgets.findIndex((wId) => wId === location.widgetId) === 0\n ? 100\n : 0;\n }\n widget.minimized = false;\n });\n}\n\n/** @internal */\nexport function setWidgetLabel(\n state: NineZoneState,\n id: TabState[\"id\"],\n label: string\n) {\n if (!(id in state.tabs)) return state;\n\n return produce(state, (draft) => {\n const tab = draft.tabs[id];\n tab.label = label;\n });\n}\n\n/** @internal */\nexport function useSavedFrontstageState(frontstageDef: FrontstageDef) {\n const uiStateStorage = useUiStateStorageHandler();\n const uiStateStorageRef = React.useRef(uiStateStorage);\n const isMountedRef = React.useRef(false);\n React.useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n React.useEffect(() => {\n uiStateStorageRef.current = uiStateStorage;\n }, [uiStateStorage]);\n React.useEffect(() => {\n async function fetchFrontstageState() {\n if (frontstageDef.nineZoneState) {\n frontstageDef.nineZoneState = processPopoutWidgets(\n frontstageDef.nineZoneState,\n frontstageDef\n );\n return;\n }\n const id = frontstageDef.id;\n const version = frontstageDef.version;\n const settingResult = await uiStateStorageRef.current.getSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(id)\n );\n if (!isMountedRef.current) return;\n\n if (isFrontstageStateSettingResult(settingResult)) {\n const setting = settingResult.setting;\n if (\n setting.version >= version &&\n setting.stateVersion >= stateVersion\n ) {\n const restored = restoreNineZoneState(\n frontstageDef,\n setting.nineZone\n );\n\n frontstageDef.savedWidgetDefs = setting.widgets;\n restoreSavedWidgets(frontstageDef);\n\n let state = addMissingWidgets(frontstageDef, restored);\n state = hideWidgets(state, frontstageDef);\n state = processPopoutWidgets(state, frontstageDef);\n\n frontstageDef.nineZoneState = state;\n return;\n }\n }\n frontstageDef.nineZoneState = initializeNineZoneState(frontstageDef);\n }\n void fetchFrontstageState();\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function useSaveFrontstageSettings(\n frontstageDef: FrontstageDef,\n store: LayoutStore\n) {\n const uiSettingsStorage = useUiStateStorageHandler();\n const saveSetting = React.useMemo(() => {\n const debounced = debounce(\n async (frontstage: FrontstageDef, state: NineZoneState) => {\n const id = frontstage.id;\n const widgets = packSavedWidgets(frontstage);\n frontstage.savedWidgetDefs = widgets;\n const setting: WidgetPanelsFrontstageState = {\n id,\n version: frontstage.version,\n stateVersion,\n nineZone: packNineZoneState(state),\n widgets,\n };\n await uiSettingsStorage.saveSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(id),\n setting\n );\n },\n 1000\n );\n\n const save = (frontstage: FrontstageDef, state: NineZoneState) => {\n if (state.draggedTab) return;\n debounced(frontstage, state);\n };\n save.cancel = debounced.cancel;\n return save;\n }, [uiSettingsStorage]);\n React.useEffect(() => {\n return () => {\n saveSetting.cancel();\n };\n }, [saveSetting]);\n\n React.useEffect(() => {\n saveSetting(frontstageDef, store.getState());\n }, [saveSetting, frontstageDef, store]);\n React.useEffect(() => {\n return store.subscribe(() => {\n saveSetting(frontstageDef, store.getState());\n });\n }, [saveSetting, frontstageDef, store]);\n}\n\n/** @internal */\nexport const FRONTSTAGE_SETTINGS_NAMESPACE = \"uifw-frontstageSettings\";\n\n/** @internal */\nexport function getFrontstageStateSettingName(\n frontstageId: WidgetPanelsFrontstageState[\"id\"]\n) {\n return `frontstageState[${frontstageId}]`;\n}\n\n// istanbul ignore next\nfunction debounce<T extends (...args: any[]) => any>(\n func: T,\n duration: number\n) {\n let timeout: number | undefined;\n const debounced = (...args: Parameters<T>) => {\n const handler = () => {\n timeout = undefined;\n return func(...args);\n };\n window.clearTimeout(timeout);\n timeout = window.setTimeout(handler, duration);\n };\n debounced.cancel = () => {\n window.clearTimeout(timeout);\n };\n return debounced;\n}\n\nconst createListener = <T extends (...args: any[]) => void>(\n frontstageDef: FrontstageDef,\n listener: T\n) => {\n return (...args: Parameters<T>) => {\n if (!frontstageDef.nineZoneState) return;\n listener(...args);\n };\n};\n\n/** @internal */\nexport function useFrontstageManager(\n frontstageDef: FrontstageDef,\n useToolAsToolSettingsLabel?: boolean\n) {\n React.useEffect(() => {\n const listener = createListener(\n frontstageDef,\n ({ widgetDef, widgetState }: WidgetStateChangedEventArgs) => {\n assert(!!frontstageDef.nineZoneState);\n frontstageDef.nineZoneState = setWidgetState(\n frontstageDef.nineZoneState,\n widgetDef,\n widgetState\n );\n }\n );\n UiFramework.frontstages.onWidgetStateChangedEvent.addListener(listener);\n return () => {\n UiFramework.frontstages.onWidgetStateChangedEvent.removeListener(\n listener\n );\n };\n }, [frontstageDef]);\n React.useEffect(() => {\n const listener = createListener(\n frontstageDef,\n ({ widgetDef }: WidgetEventArgs) => {\n assert(!!frontstageDef.nineZoneState);\n const nineZoneState = setWidgetState(\n frontstageDef.nineZoneState,\n widgetDef,\n WidgetState.Open\n );\n frontstageDef.nineZoneState = showWidget(nineZoneState, widgetDef.id);\n }\n );\n InternalFrontstageManager.onWidgetShowEvent.addListener(listener);\n return () => {\n InternalFrontstageManager.onWidgetShowEvent.removeListener(listener);\n };\n }, [frontstageDef]);\n React.useEffect(() => {\n const listener = createListener(\n frontstageDef,\n ({ widgetDef }: WidgetEventArgs) => {\n assert(!!frontstageDef.nineZoneState);\n let nineZoneState = setWidgetState(\n frontstageDef.nineZoneState,\n widgetDef,\n WidgetState.Open\n );\n nineZoneState = showWidget(nineZoneState, widgetDef.id);\n nineZoneState = expandWidget(nineZoneState, widgetDef.id);\n frontstageDef.nineZoneState = nineZoneState;\n }\n );\n InternalFrontstageManager.onWidgetExpandEvent.addListener(listener);\n return () => {\n InternalFrontstageManager.onWidgetExpandEvent.removeListener(listener);\n };\n }, [frontstageDef]);\n const uiSettingsStorage = useUiStateStorageHandler();\n React.useEffect(() => {\n const listener = (args: FrontstageEventArgs) => {\n // TODO: track restoring frontstages to support workflows: i.e. prevent loading frontstage OR saving layout when delete is pending\n void uiSettingsStorage.deleteSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(args.frontstageDef.id)\n );\n if (frontstageDef.id === args.frontstageDef.id) {\n args.frontstageDef.nineZoneState =\n initializeNineZoneState(frontstageDef);\n } else {\n args.frontstageDef.nineZoneState = undefined;\n }\n };\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n listener\n );\n return () => {\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.removeListener(\n listener\n );\n };\n }, [uiSettingsStorage, frontstageDef]);\n React.useEffect(() => {\n const listener = createListener(\n frontstageDef,\n ({ widgetDef }: WidgetEventArgs) => {\n assert(!!frontstageDef.nineZoneState);\n const label = widgetDef.label;\n frontstageDef.nineZoneState = setWidgetLabel(\n frontstageDef.nineZoneState,\n widgetDef.id,\n label\n );\n }\n );\n InternalFrontstageManager.onWidgetLabelChangedEvent.addListener(listener);\n return () => {\n InternalFrontstageManager.onWidgetLabelChangedEvent.removeListener(\n listener\n );\n };\n }, [frontstageDef]);\n\n const defaultLabel = React.useMemo(\n () => UiFramework.translate(\"widget.labels.toolSettings\"),\n []\n );\n React.useEffect(() => {\n const updateLabel = createListener(frontstageDef, () => {\n const toolId = UiFramework.frontstages.activeToolId;\n assert(!!frontstageDef.nineZoneState);\n const label = useToolAsToolSettingsLabel\n ? IModelApp.tools.find(toolId)?.flyover || defaultLabel\n : defaultLabel;\n frontstageDef.nineZoneState = setWidgetLabel(\n frontstageDef.nineZoneState,\n toolSettingsTabId,\n label\n );\n });\n // Whenever the frontstageDef or the useTool... changes, keep the label up to date.\n updateLabel();\n // If useTool... is true, listen for events to keep up the label up to date.\n if (useToolAsToolSettingsLabel) {\n UiFramework.frontstages.onFrontstageReadyEvent.addListener(updateLabel);\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n updateLabel\n );\n UiFramework.frontstages.onToolActivatedEvent.addListener(updateLabel);\n UiFramework.frontstages.onToolSettingsReloadEvent.addListener(\n updateLabel\n );\n }\n return () => {\n if (useToolAsToolSettingsLabel) {\n UiFramework.frontstages.onFrontstageReadyEvent.removeListener(\n updateLabel\n );\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.removeListener(\n updateLabel\n );\n UiFramework.frontstages.onToolActivatedEvent.removeListener(\n updateLabel\n );\n UiFramework.frontstages.onToolSettingsReloadEvent.removeListener(\n updateLabel\n );\n }\n };\n }, [frontstageDef, useToolAsToolSettingsLabel, defaultLabel]);\n}\n\n/** @internal */\n// istanbul ignore next\nexport function useItemsManager(frontstageDef: FrontstageDef) {\n const refreshNineZoneState = (def: FrontstageDef) => {\n // Fired for both registered/unregistered. Update definitions and remove/add missing widgets.\n def.updateWidgetDefs();\n restoreSavedWidgets(def);\n let state = def.nineZoneState;\n if (!state) return;\n state = addMissingWidgets(def, state);\n state = removeMissingWidgets(def, state);\n state = hideWidgets(state, def); // TODO: should only apply to widgets provided by registered provider in onUiProviderRegisteredEvent.\n def.nineZoneState = state;\n };\n\n React.useEffect(() => {\n const remove = UiItemsManager.onUiProviderRegisteredEvent.addListener(\n () => {\n refreshNineZoneState(frontstageDef);\n }\n );\n // Need to refresh anytime frontstageDef changes because uiItemsProvider may have added something to\n // another stage before it was possibly unloaded in this stage.\n refreshNineZoneState(frontstageDef);\n return remove;\n }, [frontstageDef]);\n}\n\n// istanbul ignore next\nfunction determineNewWidgets(\n defs: readonly WidgetDef[] | undefined,\n state: NineZoneState\n) {\n defs = defs || [];\n const uniqueDefs = defs.filter((def, index, array) => {\n return index === array.findIndex((def1) => def.id === def1.id);\n });\n return uniqueDefs.filter((def) => !(def.id in state.tabs));\n}\n"]}
1
+ {"version":3,"file":"Frontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.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\n// cSpell:ignore popout\n\nimport \"./Frontstage.scss\";\nimport produce from \"immer\";\nimport * as React from \"react\";\nimport { unstable_batchedUpdates } from \"react-dom\";\nimport { assert, Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport type {\n RectangleProps,\n SizeProps,\n UiStateStorageResult,\n} from \"@itwin/core-react\";\nimport { Rectangle, Size, UiStateStorageStatus } from \"@itwin/core-react\";\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\nimport type {\n FloatingWidgetHomeState,\n LayoutStore,\n NineZoneAction,\n NineZoneDispatch,\n NineZoneLabels,\n NineZoneState,\n PanelSide,\n TabState,\n} from \"@itwin/appui-layout-react\";\nimport {\n addFloatingWidget,\n addPanelWidget,\n addTab,\n addTabToWidget,\n convertAllPopupWidgetContainersToFloating,\n createLayoutStore,\n createNineZoneState,\n floatingWidgetBringToFront,\n FloatingWidgets,\n getTabLocation,\n getUniqueId,\n getWidgetPanelSectionId,\n insertPanelWidget,\n insertTabToWidget,\n isFloatingTabLocation,\n isHorizontalPanelSide,\n isPanelTabLocation,\n isPopoutTabLocation,\n NineZone,\n NineZoneStateReducer,\n panelSides,\n removeTab,\n removeTabFromWidget,\n toolSettingsTabId,\n WidgetPanels,\n} from \"@itwin/appui-layout-react\";\nimport type {\n FrontstageDef,\n FrontstageEventArgs,\n} from \"../frontstage/FrontstageDef\";\nimport type { StagePanelMaxSizeSpec } from \"../stagepanels/StagePanelConfig\";\nimport { StagePanelState, toPanelSide } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type {\n TabLocation,\n WidgetDef,\n WidgetEventArgs,\n WidgetStateChangedEventArgs,\n} from \"../widgets/WidgetDef\";\nimport { WidgetContent } from \"./Content\";\nimport { WidgetPanelsFrontstageContent } from \"./FrontstageContent\";\nimport {\n ModalFrontstageComposer,\n useActiveModalFrontstageInfo,\n} from \"./ModalFrontstageComposer\";\nimport { WidgetPanelsStatusBar } from \"./StatusBar\";\nimport { WidgetPanelsTab } from \"./Tab\";\nimport { WidgetPanelsToolbars } from \"./Toolbars\";\nimport { ToolSettingsContent, WidgetPanelsToolSettings } from \"./ToolSettings\";\nimport { useEscapeSetFocusToHome } from \"../hooks/useEscapeSetFocusToHome\";\nimport type { FrameworkRootState } from \"../redux/StateManager\";\nimport { useSelector } from \"react-redux\";\nimport { useUiVisibility } from \"../hooks/useUiVisibility\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { FloatingWidget } from \"./FloatingWidget\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager\";\nimport { WidgetState } from \"../widgets/WidgetState\";\nimport { StagePanelSection } from \"../stagepanels/StagePanelSection\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { UiItemsManager } from \"../ui-items-provider/UiItemsManager\";\n\nfunction WidgetPanelsFrontstageComponent() {\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\n const uiIsVisible = useUiVisibility();\n\n return (\n <>\n <WidgetPanelsToolSettings />\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\n <WidgetPanels\n className=\"uifw-widgetPanels\"\n centerContent={<WidgetPanelsToolbars />}\n >\n <WidgetPanelsFrontstageContent />\n </WidgetPanels>\n <WidgetPanelsStatusBar />\n <FloatingWidgets />\n </ToolbarPopupAutoHideContext.Provider>\n </>\n );\n}\n\nconst widgetContent = <WidgetContent />;\nconst toolSettingsContent = <ToolSettingsContent />;\nconst widgetPanelsFrontstage = <WidgetPanelsFrontstageComponent />;\n\n/** @internal */\nexport function useLayoutStore() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n const [layout, setLayout] = React.useState(() =>\n createLayoutStore(def?.nineZoneState)\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n unstable_batchedUpdates(() => {\n setDef(args.activatedFrontstageDef);\n setLayout(\n createLayoutStore(args.activatedFrontstageDef.nineZoneState)\n );\n });\n }\n );\n }, []);\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(\n (args) => {\n if (\n args.frontstageDef !== def ||\n def.isStageClosing ||\n def.isApplicationClosing\n )\n return;\n unstable_batchedUpdates(() => {\n // https://github.com/pmndrs/zustand/blob/main/docs/guides/event-handler-in-pre-react-18.md\n layout.setState(args.state || defaultNineZone);\n });\n }\n );\n }, [def, layout]);\n return [layout, def] as const;\n}\n\n/** Update in-memory NineZoneState of newly activated frontstage with up to date size.\n * @internal\n */\nexport function useUpdateNineZoneSize(frontstageDef: FrontstageDef) {\n React.useEffect(() => {\n const size = InternalFrontstageManager.nineZoneSize;\n let state = frontstageDef.nineZoneState;\n if (!size || !state) return;\n state = FrameworkStateReducer(\n state,\n {\n type: \"RESIZE\",\n size: {\n height: size.height,\n width: size.width,\n },\n },\n frontstageDef\n );\n frontstageDef.nineZoneState = state;\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function FrameworkStateReducer(\n state: NineZoneState,\n action: NineZoneAction,\n frontstageDef: FrontstageDef\n) {\n state = NineZoneStateReducer(state, action);\n if (action.type === \"RESIZE\") {\n state = produce(state, (draft) => {\n for (const panelSide of panelSides) {\n const panel = draft.panels[panelSide];\n const location = toStagePanelLocation(panelSide);\n const panelDef = frontstageDef.getStagePanelDef(location);\n if (panelDef?.maxSizeSpec) {\n panel.maxSize = getPanelMaxSize(\n panelDef.maxSizeSpec,\n panelSide,\n action.size\n );\n if (panel.size) {\n panel.size = Math.min(\n Math.max(panel.size, panel.minSize),\n panel.maxSize\n );\n }\n }\n }\n });\n }\n return state;\n}\n\n/** @internal */\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\n const dispatch = React.useCallback<NineZoneDispatch>(\n (action) => {\n if (action.type === \"RESIZE\") {\n InternalFrontstageManager.nineZoneSize = Size.create(action.size);\n }\n // istanbul ignore if\n if (action.type === \"TOOL_SETTINGS_DRAG_START\") {\n void UiFramework.postTelemetry(\n \"Tool Settings Undocking\",\n \"28B04E07-AE73-4533-A0BA-8E2A8DC99ADF\"\n );\n }\n // istanbul ignore if\n if (action.type === \"TOOL_SETTINGS_DOCK\") {\n void UiFramework.postTelemetry(\n \"Tool Settings Docking to Settings Bar\",\n \"BEDE684B-B3DB-4637-B3AF-DC3CBA223F94\"\n );\n }\n if (action.type === \"WIDGET_TAB_POPOUT\") {\n const tabId = action.id;\n frontstageDef.popoutWidget(tabId);\n return;\n }\n\n const state = frontstageDef.nineZoneState;\n if (!state) return;\n frontstageDef.nineZoneState = FrameworkStateReducer(\n state,\n action,\n frontstageDef\n );\n },\n [frontstageDef]\n );\n return dispatch;\n}\n\n/** @internal */\nexport function WidgetPanelsFrontstage() {\n const [layout, frontstageDef] = useLayoutStore();\n\n React.useEffect(() => {\n const triggerWidowCloseProcessing = () => {\n frontstageDef && frontstageDef.setIsApplicationClosing(true);\n };\n\n frontstageDef && frontstageDef.setIsApplicationClosing(false);\n\n window.addEventListener(\"unload\", triggerWidowCloseProcessing);\n return () => {\n window.removeEventListener(\"unload\", triggerWidowCloseProcessing);\n };\n }, [frontstageDef]);\n\n if (!frontstageDef) return null;\n return (\n <ActiveFrontstageDefProvider\n frontstageDef={frontstageDef}\n layout={layout}\n />\n );\n}\n\nconst defaultNineZone = createNineZoneState();\nconst tabElement = <WidgetPanelsTab />;\nconst floatingWidgetElement = <FloatingWidget />;\n\ninterface ActiveFrontstageDefProviderProps {\n layout: LayoutStore;\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport function ActiveFrontstageDefProvider({\n frontstageDef,\n layout,\n}: ActiveFrontstageDefProviderProps) {\n const dispatch = useNineZoneDispatch(frontstageDef);\n useUpdateNineZoneSize(frontstageDef);\n useSavedFrontstageState(frontstageDef);\n useSaveFrontstageSettings(frontstageDef, layout);\n useItemsManager(frontstageDef);\n const labels = useLabels();\n const uiIsVisible = useUiVisibility();\n const showWidgetIcon = useSelector((state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.showWidgetIcon;\n });\n const autoCollapseUnpinnedPanels = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.autoCollapseUnpinnedPanels;\n }\n );\n const animateToolSettings = useSelector((state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.animateToolSettings;\n });\n const useToolAsToolSettingsLabel = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState = (state as any)[UiFramework.frameworkStateKey];\n return !!frameworkState.configurableUiState.useToolAsToolSettingsLabel;\n }\n );\n useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel);\n\n const handleKeyDown = useEscapeSetFocusToHome();\n\n return (\n <div\n className=\"uifw-widgetPanels-frontstage\"\n onKeyDown={handleKeyDown}\n role=\"presentation\"\n >\n <NineZone\n dispatch={dispatch}\n labels={labels}\n layout={layout}\n tab={tabElement}\n floatingWidget={floatingWidgetElement}\n showWidgetIcon={showWidgetIcon}\n autoCollapseUnpinnedPanels={autoCollapseUnpinnedPanels}\n toolSettingsContent={toolSettingsContent}\n widgetContent={widgetContent}\n animateDockedToolSettings={animateToolSettings}\n uiIsVisible={uiIsVisible}\n >\n {widgetPanelsFrontstage}\n </NineZone>\n </div>\n );\n}\n\n/** @internal */\nexport function useLabels() {\n return React.useMemo<NineZoneLabels>(\n () => ({\n dockToolSettingsTitle: UiFramework.translate(\n \"widget.tooltips.dockToolSettings\"\n ),\n moreWidgetsTitle: UiFramework.translate(\"widget.tooltips.moreWidgets\"),\n moreToolSettingsTitle: UiFramework.translate(\n \"widget.tooltips.moreToolSettings\"\n ),\n pinPanelTitle: UiFramework.translate(\"widget.tooltips.pinPanel\"),\n resizeGripTitle: UiFramework.translate(\"widget.tooltips.resizeGrip\"),\n sendWidgetHomeTitle: UiFramework.translate(\"widget.tooltips.sendHome\"),\n toolSettingsHandleTitle: UiFramework.translate(\n \"widget.tooltips.toolSettingsHandle\"\n ),\n unpinPanelTitle: UiFramework.translate(\"widget.tooltips.unpinPanel\"),\n popoutActiveTab: UiFramework.translate(\"widget.tooltips.popoutActiveTab\"),\n }),\n []\n );\n}\n\n/** @internal */\nexport function addWidgets(\n state: NineZoneState,\n widgets: ReadonlyArray<WidgetDef>,\n side: PanelSide,\n widgetId: WidgetId\n): NineZoneState {\n const visibleWidgets = widgets.filter(\n (w) => w.isVisible && w.defaultState !== WidgetState.Floating\n );\n if (visibleWidgets.length === 0) return state;\n\n const tabs = new Array<string>();\n for (const widget of visibleWidgets) {\n const label = getWidgetLabel(widget.label);\n state = addTab(state, widget.id, {\n label,\n iconSpec: widget.iconSpec,\n preferredPanelWidgetSize: widget.preferredPanelSize,\n preferredFloatingWidgetSize: widget.defaultFloatingSize,\n canPopout: widget.canPopout,\n isFloatingStateWindowResizable: widget.isFloatingStateWindowResizable,\n hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,\n allowedPanelTargets: widget.allowedPanelTargets?.map((location) =>\n toPanelSide(location)\n ),\n });\n tabs.push(widget.id);\n }\n\n const activeWidget = visibleWidgets.find((widget) => widget.isActive);\n const minimized = false;\n // istanbul ignore else\n if (activeWidget?.defaultState !== WidgetState.Floating) {\n state = addPanelWidget(state, side, widgetId, tabs, {\n activeTabId: activeWidget ? activeWidget.id : tabs[0],\n minimized,\n });\n }\n\n return state;\n}\n\n/** @internal */\n// istanbul ignore next\nexport function appendWidgets(\n state: NineZoneState,\n widgetDefs: ReadonlyArray<WidgetDef>,\n location: StagePanelLocation,\n section: StagePanelSection\n): NineZoneState {\n if (widgetDefs.length === 0) return state;\n\n const side = toPanelSide(location);\n\n // Add missing widget tabs.\n for (const widgetDef of widgetDefs) {\n const label = getWidgetLabel(widgetDef.label);\n const saveTab = state.tabs[widgetDef.id];\n const preferredPanelWidgetSize = saveTab\n ? saveTab.preferredPanelWidgetSize\n : widgetDef.preferredPanelSize;\n const preferredFloatingWidgetSize = saveTab\n ? saveTab.preferredFloatingWidgetSize\n : widgetDef.defaultFloatingSize;\n // if a defaultFloatingSize is specified then this mean the widget can't determine its intrinsic size and must be explicitly sized\n const userSized = saveTab\n ? saveTab.userSized ||\n (!!widgetDef.defaultFloatingSize &&\n !!saveTab.preferredFloatingWidgetSize)\n : !!widgetDef.defaultFloatingSize;\n state = addTab(state, widgetDef.id, {\n label,\n iconSpec: widgetDef.iconSpec,\n canPopout: widgetDef.canPopout,\n preferredPanelWidgetSize,\n preferredFloatingWidgetSize,\n userSized,\n isFloatingStateWindowResizable: widgetDef.isFloatingStateWindowResizable,\n hideWithUiWhenFloating: !!widgetDef.hideWithUiWhenFloating,\n allowedPanelTargets: widgetDef.allowedPanelTargets?.map((l) =>\n toPanelSide(l)\n ),\n });\n\n if (\n widgetDef.isFloatingStateSupported &&\n widgetDef.defaultState === WidgetState.Floating\n ) {\n const floatingContainerId =\n widgetDef.floatingContainerId ?? getUniqueId();\n const widgetContainerId = getWidgetId(location, section);\n const home: FloatingWidgetHomeState = {\n side,\n widgetId: widgetContainerId,\n widgetIndex: 0,\n };\n const preferredPosition = widgetDef.defaultFloatingPosition;\n\n if (floatingContainerId in state.widgets) {\n state = addTabToWidget(state, widgetDef.id, floatingContainerId);\n } else {\n const tab = state.tabs[widgetDef.id];\n\n const size = {\n height: 200,\n width: 300,\n ...tab.preferredFloatingWidgetSize,\n };\n const preferredPoint = preferredPosition ?? {\n x: (state.size.width - size.width) / 2,\n y: (state.size.height - size.height) / 2,\n };\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.createFromSize(size).offset(preferredPoint);\n const containedBounds = bounds.containIn(nzBounds);\n\n state = addFloatingWidget(\n state,\n floatingContainerId,\n [widgetDef.id],\n {\n bounds: containedBounds.toProps(),\n home,\n userSized,\n },\n {\n isFloatingStateWindowResizable:\n widgetDef.isFloatingStateWindowResizable,\n }\n );\n }\n } else {\n const preferredWidgetIndex: number = section;\n const widgetPanelSectionId = getWidgetPanelSectionId(\n side,\n preferredWidgetIndex\n );\n if (widgetPanelSectionId in state.widgets) {\n state = addTabToWidget(state, widgetDef.id, widgetPanelSectionId);\n } else {\n const panel = state.panels[side];\n if (panel.widgets.length < panel.maxWidgetCount) {\n state = addPanelWidget(state, side, widgetPanelSectionId, [\n widgetDef.id,\n ]);\n } else {\n const widgetIndex = Math.min(\n preferredWidgetIndex,\n panel.widgets.length - 1\n );\n const widgetId = panel.widgets[widgetIndex];\n state = addTabToWidget(state, widgetDef.id, widgetId);\n }\n }\n }\n }\n\n return state;\n}\n\nfunction processPopoutWidgets(\n initialState: NineZoneState,\n frontstageDef: FrontstageDef\n): NineZoneState {\n // istanbul ignore next\n if (!initialState.popoutWidgets) return initialState;\n\n // istanbul ignore next - not unit testing electron case that reopens popout windows\n if (initialState.popoutWidgets && ProcessDetector.isElectronAppFrontend) {\n if (\n initialState.popoutWidgets.allIds.length &&\n ProcessDetector.isElectronAppFrontend\n ) {\n for (const widgetContainerId of initialState.popoutWidgets.allIds) {\n frontstageDef.openPopoutWidgetContainer(\n initialState,\n widgetContainerId\n );\n }\n }\n return initialState;\n }\n\n return convertAllPopupWidgetContainersToFloating(initialState);\n}\n\n/** Adds frontstageDef widgets that are missing in NineZoneState.\n * @internal\n */\nexport function addMissingWidgets(\n frontstageDef: FrontstageDef,\n initialState: NineZoneState\n): NineZoneState {\n let state = initialState;\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.leftPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Left,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.leftPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Left,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.rightPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Right,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.rightPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Right,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Top,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Top,\n StagePanelSection.End\n );\n\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection.Start)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Bottom,\n StagePanelSection.Start\n );\n state = appendWidgets(\n state,\n determineNewWidgets(\n frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection.End)\n .widgetDefs,\n state\n ),\n StagePanelLocation.Bottom,\n StagePanelSection.End\n );\n\n return state;\n}\n\n/** Hide widgets with Hidden defaultState. */\nfunction hideWidgets(\n state: NineZoneState,\n frontstageDef: FrontstageDef\n): NineZoneState {\n const tabs = Object.values(state.tabs);\n for (const tab of tabs) {\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (!widgetDef) continue;\n\n if (widgetDef.defaultState === WidgetState.Hidden) {\n state = hideWidget(state, widgetDef);\n }\n }\n\n return state;\n}\n\n/** Removes NineZoneState widgets that are missing in frontstageDef.\n * @internal\n */\nexport function removeMissingWidgets(\n frontstageDef: FrontstageDef,\n initialState: NineZoneState\n): NineZoneState {\n let state = initialState;\n for (const [, tab] of Object.entries(state.tabs)) {\n if (tab.id === toolSettingsTabId) continue;\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (widgetDef) continue;\n state = removeTab(state, tab.id);\n }\n return state;\n}\n\nfunction getWidgetLabel(label: string) {\n return label === \"\" ? \"Widget\" : label;\n}\n\ntype WidgetId =\n | \"leftStart\"\n | \"leftEnd\"\n | \"rightStart\"\n | \"rightEnd\"\n | \"topStart\"\n | \"topEnd\"\n | \"bottomStart\"\n | \"bottomEnd\";\n\nfunction 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/** @internal */\nexport function getWidgetId(\n location: StagePanelLocation,\n section: StagePanelSection\n): WidgetId {\n switch (location) {\n case StagePanelLocation.Left: {\n if (section === StagePanelSection.Start) return \"leftStart\";\n return \"leftEnd\";\n }\n case StagePanelLocation.Right: {\n if (section === StagePanelSection.Start) return \"rightStart\";\n return \"rightEnd\";\n }\n case StagePanelLocation.Top: {\n if (section === StagePanelSection.Start) return \"topStart\";\n return \"topEnd\";\n }\n case StagePanelLocation.Bottom: {\n if (section === StagePanelSection.Start) return \"bottomStart\";\n return \"bottomEnd\";\n }\n }\n}\n\n/** @internal */\nexport function getPanelSectionWidgets(\n frontstageDef: FrontstageDef,\n location: StagePanelLocation,\n section: StagePanelSection\n): ReadonlyArray<WidgetDef> {\n const stagePanel = frontstageDef.getStagePanelDef(location);\n const panelSection = stagePanel?.getPanelSectionDef(section);\n return panelSection?.widgetDefs || [];\n}\n\n/** @internal */\nexport function addPanelWidgets(\n state: NineZoneState,\n frontstageDef: FrontstageDef,\n location: StagePanelLocation\n): NineZoneState {\n const side = toPanelSide(location);\n\n const start = getWidgetId(location, StagePanelSection.Start);\n const startWidgets = getPanelSectionWidgets(\n frontstageDef,\n location,\n StagePanelSection.Start\n );\n state = addWidgets(\n state,\n determineNewWidgets(startWidgets, state),\n side,\n start\n );\n\n const end = getWidgetId(location, StagePanelSection.End);\n const endWidgets = getPanelSectionWidgets(\n frontstageDef,\n location,\n StagePanelSection.End\n );\n state = addWidgets(state, determineNewWidgets(endWidgets, state), side, end);\n return state;\n}\n\n/** @internal */\nexport function isFrontstageStateSettingResult(\n settingsResult: UiStateStorageResult\n): settingsResult is {\n status: UiStateStorageStatus.Success;\n setting: WidgetPanelsFrontstageState;\n} {\n if (settingsResult.status === UiStateStorageStatus.Success) return true;\n return false;\n}\n\n/** @internal */\nexport function initializePanel(\n state: NineZoneState,\n frontstageDef: FrontstageDef,\n location: StagePanelLocation\n) {\n const panelSide = toPanelSide(location);\n\n state = addPanelWidgets(state, frontstageDef, location);\n const panelDef = frontstageDef.getStagePanelDef(location);\n state = produce(state, (draft) => {\n const panel = draft.panels[panelSide];\n panel.minSize = panelDef?.minSize ?? panel.minSize;\n panel.pinned = panelDef?.pinned ?? panel.pinned;\n panel.resizable = panelDef?.resizable ?? panel.resizable;\n if (panelDef?.maxSizeSpec) {\n panel.maxSize = getPanelMaxSize(\n panelDef.maxSizeSpec,\n panelSide,\n state.size\n );\n }\n\n const size = panelDef?.size;\n panel.size =\n size === undefined\n ? size\n : Math.min(Math.max(size, panel.minSize), panel.maxSize);\n });\n return state;\n}\n\nfunction getPanelMaxSize(\n maxSizeSpec: StagePanelMaxSizeSpec,\n panel: PanelSide,\n nineZoneSize: SizeProps\n) {\n if (typeof maxSizeSpec === \"number\") {\n return maxSizeSpec;\n }\n const size = isHorizontalPanelSide(panel)\n ? nineZoneSize.height\n : nineZoneSize.width;\n return (maxSizeSpec.percentage / 100) * size;\n}\n\nconst stateVersion = 13; // this needs to be bumped when NineZoneState is changed (to recreate the layout).\n\n/** @internal */\nexport function initializeNineZoneState(\n frontstageDef: FrontstageDef\n): NineZoneState {\n let nineZone = defaultNineZone;\n nineZone = produce(nineZone, (stateDraft) => {\n // istanbul ignore next\n if (!InternalFrontstageManager.nineZoneSize) return;\n stateDraft.size = {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n };\n });\n\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Left);\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Right);\n nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation.Top);\n nineZone = initializePanel(\n nineZone,\n frontstageDef,\n StagePanelLocation.Bottom\n );\n nineZone = produce(nineZone, (stateDraft) => {\n for (const [, panel] of Object.entries(stateDraft.panels)) {\n const expanded = panel.widgets.find(\n (widgetId) => stateDraft.widgets[widgetId].minimized === false\n );\n const firstWidget =\n panel.widgets.length > 0\n ? stateDraft.widgets[panel.widgets[0]]\n : undefined;\n // istanbul ignore next\n if (!expanded && firstWidget) {\n firstWidget.minimized = false;\n }\n }\n stateDraft.panels.left.collapsed = isPanelCollapsed(\n frontstageDef.leftPanel?.panelState\n );\n stateDraft.panels.right.collapsed = isPanelCollapsed(\n frontstageDef.rightPanel?.panelState\n );\n stateDraft.panels.top.collapsed = isPanelCollapsed(\n frontstageDef.topPanel?.panelState\n );\n stateDraft.panels.bottom.collapsed = isPanelCollapsed(\n frontstageDef.bottomPanel?.panelState\n );\n\n const toolSettingsWidgetDef = frontstageDef.toolSettings;\n if (toolSettingsWidgetDef) {\n const toolSettingsTab = stateDraft.tabs[toolSettingsTabId];\n toolSettingsTab.preferredPanelWidgetSize =\n toolSettingsWidgetDef.preferredPanelSize;\n }\n });\n nineZone = addMissingWidgets(frontstageDef, nineZone);\n nineZone = hideWidgets(nineZone, frontstageDef);\n nineZone = processPopoutWidgets(nineZone, frontstageDef);\n\n return nineZone;\n}\n\n/** Converts from saved NineZoneState to NineZoneState.\n * @note Restores toolSettings tab.\n * @note Restores tab labels.\n * @internal\n */\nexport function restoreNineZoneState(\n frontstageDef: FrontstageDef,\n saved: SavedNineZoneState\n): NineZoneState {\n let restored: NineZoneState = {\n ...saved,\n tabs: defaultNineZone.tabs,\n };\n\n for (const [, tab] of Object.entries(saved.tabs)) {\n // Re-add the placeholder tab in order to correctly remove it from the state if WidgetDef is not found.\n restored = addTab(restored, tab.id);\n\n const widgetDef = frontstageDef.findWidgetDef(tab.id);\n if (!widgetDef) {\n Logger.logInfo(\n UiFramework.loggerCategory(restoreNineZoneState),\n \"WidgetDef is not found for saved tab.\",\n () => ({\n frontstageId: frontstageDef.id,\n tabId: tab.id,\n })\n );\n restored = removeTab(restored, tab.id);\n continue;\n }\n restored = produce(restored, (draft) => {\n draft.tabs[tab.id] = {\n ...tab,\n label: getWidgetLabel(widgetDef.label),\n hideWithUiWhenFloating: widgetDef.hideWithUiWhenFloating,\n iconSpec: widgetDef.iconSpec,\n canPopout: widgetDef.canPopout,\n isFloatingStateWindowResizable:\n widgetDef.isFloatingStateWindowResizable,\n allowedPanelTargets: widgetDef.allowedPanelTargets?.map((location) =>\n toPanelSide(location)\n ),\n };\n });\n }\n restored = produce(restored, (draft) => {\n // remove center panel section if one is found in left or right panels\n const oldLeftMiddleIndex = saved.panels.left.widgets.findIndex(\n (value) => value === \"leftMiddle\"\n );\n // istanbul ignore next\n if (-1 !== oldLeftMiddleIndex) {\n draft.panels.left.widgets = saved.panels.left.widgets.filter(\n (value) => value !== \"leftMiddle\"\n );\n if (\"leftEnd\" in draft.widgets) {\n draft.widgets.leftMiddle.tabs.forEach((tab) =>\n draft.widgets.leftEnd.tabs.push(tab)\n );\n } else {\n draft.widgets.leftEnd = { ...draft.widgets.leftMiddle };\n delete draft.widgets.leftMiddle;\n }\n }\n\n const oldRightMiddleIndex = saved.panels.right.widgets.findIndex(\n (value) => value === \"rightMiddle\"\n );\n // istanbul ignore next\n if (-1 !== oldRightMiddleIndex) {\n draft.panels.right.widgets = saved.panels.right.widgets.filter(\n (value) => value !== \"rightMiddle\"\n );\n if (\"rightEnd\" in draft.widgets) {\n draft.widgets.rightMiddle.tabs.forEach((tab) =>\n draft.widgets.rightEnd.tabs.push(tab)\n );\n } else {\n draft.widgets.rightEnd = { ...draft.widgets.rightMiddle };\n delete draft.widgets.rightMiddle;\n }\n }\n\n return;\n });\n\n if (\n InternalFrontstageManager.nineZoneSize &&\n (0 !== InternalFrontstageManager.nineZoneSize.height ||\n 0 !== InternalFrontstageManager.nineZoneSize.width)\n ) {\n restored = FrameworkStateReducer(\n restored,\n {\n type: \"RESIZE\",\n size: {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n },\n },\n frontstageDef\n );\n }\n return restored;\n}\n\n/** Prepares NineZoneState to be saved.\n * @note Removes toolSettings tab.\n * @note Removes tab labels and iconSpec.\n * @internal\n */\nexport function packNineZoneState(state: NineZoneState): SavedNineZoneState {\n let packed: SavedNineZoneState = {\n ...state,\n tabs: {},\n };\n packed = produce(packed, (draft) => {\n for (const [, tab] of Object.entries(state.tabs)) {\n if (tab.id === toolSettingsTabId) continue;\n\n draft.tabs[tab.id] = {\n id: tab.id,\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n allowedPanelTargets: tab.allowedPanelTargets,\n userSized: tab.userSized,\n };\n }\n });\n return packed;\n}\n\n// istanbul ignore next\nfunction packSavedWidgets(frontstageDef: FrontstageDef): SavedWidgets {\n let savedWidgets: Array<SavedWidget> = [];\n for (const widgetDef of frontstageDef.widgetDefs) {\n const id = widgetDef.id;\n const initialWidget: SavedWidget = {\n id,\n };\n const widget = produce(initialWidget, (draft) => {\n if (widgetDef.tabLocation) {\n draft.tabLocation = { ...widgetDef.tabLocation };\n }\n if (widgetDef.popoutBounds) {\n draft.popoutBounds = widgetDef.popoutBounds.toProps();\n }\n });\n if (widget === initialWidget) continue;\n\n savedWidgets.push(widget);\n }\n\n // Add previously saved widgets.\n const prevSavedWidgets = frontstageDef.savedWidgetDefs || [];\n for (const prevWidget of prevSavedWidgets) {\n if (savedWidgets.find((w) => w.id === prevWidget.id)) continue;\n\n savedWidgets.push(prevWidget);\n }\n\n // Limit number of saved widgets.\n const maxWidgets = 100;\n if (savedWidgets.length > maxWidgets)\n savedWidgets = savedWidgets.slice(0, maxWidgets);\n\n return savedWidgets;\n}\n\n// istanbul ignore next\nfunction restoreSavedWidgets(frontstage: FrontstageDef) {\n const savedWidgets = frontstage.savedWidgetDefs || [];\n for (const savedWidget of savedWidgets) {\n const widgetId = savedWidget.id;\n const widgetDef = frontstage.findWidgetDef(widgetId);\n if (!widgetDef) continue;\n\n if (savedWidget.tabLocation) {\n widgetDef.tabLocation = { ...savedWidget.tabLocation };\n }\n if (savedWidget.popoutBounds) {\n widgetDef.popoutBounds = Rectangle.create(savedWidget.popoutBounds);\n }\n }\n}\n\n/** @internal */\nexport function isPanelCollapsed(panelState: StagePanelState | undefined) {\n return panelState !== StagePanelState.Open;\n}\n\n/** FrontstageState is saved in UiStateStorage.\n * @internal\n */\nexport interface WidgetPanelsFrontstageState {\n nineZone: SavedNineZoneState;\n widgets: SavedWidgets;\n id: FrontstageDef[\"id\"];\n /** Frontstage version used to create the frontstage state. Allows to invalidate the layout from the frontstage. */\n version: number;\n /** Platform provided frontstage version. Allows to invalidate the layout from the platform. */\n stateVersion: number;\n}\n\n/** Saved data specific to `WidgetDef`. I.e. used to restore hidden widgets.\n * @internal\n */\nexport interface SavedWidget {\n readonly id: WidgetDef[\"id\"];\n readonly tabLocation?: TabLocation;\n readonly popoutBounds?: RectangleProps;\n}\n\n/** @internal */\nexport type SavedWidgets = ReadonlyArray<SavedWidget>;\n\n// We don't save tab labels or if widget is allowed to \"pop-out\".\ntype SavedTabState = Omit<\n TabState,\n \"label\" | \"canPopout\" | \"isFloatingStateWindowResizable\" | \"iconSpec\"\n>;\n\ninterface SavedTabsState {\n readonly [id: string]: SavedTabState;\n}\n\n// // We don't save if widget is allowed to \"pop-out\" or if floating widget can be resized.\n// type SavedWidgetState = Omit<WidgetState, | \"canPopout\" | \"isFloatingStateWindowResizable\">;\n//\n// interface SavedWidgetsState {\n// readonly [id: string]: SavedWidgetState;\n// }\n\ninterface SavedNineZoneState extends Omit<NineZoneState, \"tabs\"> {\n readonly tabs: SavedTabsState;\n // readonly widgets: SavedWidgetsState;\n}\n\nfunction addHiddenWidget(\n state: NineZoneState,\n widgetDef: WidgetDef\n): NineZoneState {\n const tabLocation = widgetDef.tabLocation || widgetDef.defaultTabLocation;\n const tabId = widgetDef.id;\n const { widgetId, tabIndex } = tabLocation;\n\n if (widgetId in state.widgets) {\n // Add to an existing widget (by widget id).\n return insertTabToWidget(state, tabId, widgetId, tabIndex);\n } else if (tabLocation.floatingWidget) {\n const floatingWidget = tabLocation.floatingWidget;\n assert(widgetId === floatingWidget.id);\n\n // Add to a new floating widget.\n const nzBounds = Rectangle.createFromSize(state.size);\n const bounds = Rectangle.create(floatingWidget.bounds).containIn(nzBounds);\n return addFloatingWidget(state, floatingWidget.id, [tabId], {\n ...floatingWidget,\n bounds: bounds.toProps(),\n });\n }\n\n // Add to a panel section.\n const panel = state.panels[tabLocation.side];\n\n // Add to existing panel section.\n if (panel.widgets.length >= panel.maxWidgetCount) {\n const sectionIndex = Math.min(\n panel.maxWidgetCount - 1,\n tabLocation.widgetIndex\n );\n const sectionId = panel.widgets[sectionIndex];\n return insertTabToWidget(state, tabId, sectionId, tabLocation.tabIndex);\n }\n\n // Create a new panel section.\n const newSectionId = getUniqueId();\n return insertPanelWidget(\n state,\n panel.side,\n newSectionId,\n [tabId],\n tabLocation.widgetIndex\n );\n}\n\n/** @internal */\nexport function setWidgetState(\n state: NineZoneState,\n widgetDef: WidgetDef,\n widgetState: WidgetState\n) {\n if (widgetState === WidgetState.Hidden) {\n return hideWidget(state, widgetDef);\n } else if (widgetState === WidgetState.Open) {\n const id = widgetDef.id;\n let location = getTabLocation(state, id);\n if (!location) {\n state = addHiddenWidget(state, widgetDef);\n location = getTabLocation(state, id);\n }\n\n return produce(state, (draft) => {\n assert(!!location);\n const widget = draft.widgets[location.widgetId];\n widget.minimized = false;\n widget.activeTabId = id;\n\n if (isFloatingTabLocation(location)) {\n const floatingWidget =\n draft.floatingWidgets.byId[location.floatingWidgetId];\n floatingWidget.hidden = false;\n // istanbul ignore else\n } else if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.collapsed = false;\n if (undefined === panel.size || 0 === panel.size) {\n // istanbul ignore next\n panel.size = panel.minSize ?? 200;\n }\n }\n });\n } else if (widgetState === WidgetState.Closed) {\n const id = widgetDef.id;\n let location = getTabLocation(state, id);\n if (!location) {\n state = addHiddenWidget(state, widgetDef);\n location = getTabLocation(state, id);\n }\n\n // TODO: should change activeTabId of a widget with multiple tabs.\n return produce(state, (draft) => {\n assert(!!location);\n const widget = draft.widgets[location.widgetId];\n\n if (isFloatingTabLocation(location)) {\n if (id === widget.activeTabId) {\n widget.minimized = true;\n }\n }\n });\n } else if (widgetState === WidgetState.Floating) {\n const id = widgetDef.id;\n let location = getTabLocation(state, id);\n if (!location) {\n state = addHiddenWidget(state, widgetDef);\n location = getTabLocation(state, id);\n }\n\n assert(!!location);\n if (isFloatingTabLocation(location)) return state;\n\n // Widget is not floating.\n state = removeTabFromWidget(state, id);\n const bounds = widgetDef.tabLocation?.floatingWidget?.bounds;\n state = addFloatingWidget(state, getUniqueId(), [id], { bounds });\n }\n return state;\n}\n\n/** Stores widget location and hides it in the UI. */\nfunction hideWidget(state: NineZoneState, widgetDef: WidgetDef) {\n const location = getTabLocation(state, widgetDef.id);\n if (!location) return state;\n // istanbul ignore else\n if (isFloatingTabLocation(location)) {\n const floatingWidget = state.floatingWidgets.byId[location.widgetId];\n widgetDef.setFloatingContainerId(location.floatingWidgetId);\n widgetDef.tabLocation = {\n side: floatingWidget.home.side,\n tabIndex: floatingWidget.home.widgetIndex,\n widgetId: floatingWidget.id,\n widgetIndex: floatingWidget.home.widgetIndex,\n floatingWidget,\n };\n } else if (!isPopoutTabLocation(location)) {\n const widgetId = location.widgetId;\n const side = isPanelTabLocation(location) ? location.side : \"left\";\n const widgetIndex = isPanelTabLocation(location)\n ? state.panels[side].widgets.indexOf(widgetId)\n : 0;\n const tabIndex = state.widgets[location.widgetId].tabs.indexOf(\n widgetDef.id\n );\n widgetDef.tabLocation = {\n side,\n tabIndex,\n widgetId,\n widgetIndex,\n };\n }\n return removeTabFromWidget(state, widgetDef.id);\n}\n\n/** @internal */\nexport function showWidget(state: NineZoneState, id: TabState[\"id\"]) {\n const location = getTabLocation(state, id);\n if (!location) return state;\n state = produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n widget.activeTabId = id;\n widget.minimized = false;\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.collapsed = false;\n }\n });\n if (isFloatingTabLocation(location)) {\n state = floatingWidgetBringToFront(state, location.floatingWidgetId);\n }\n return state;\n}\n\n/** @internal */\nexport function expandWidget(state: NineZoneState, id: TabState[\"id\"]) {\n const location = getTabLocation(state, id);\n if (!location) return state;\n\n return produce(state, (draft) => {\n const widget = draft.widgets[location.widgetId];\n if (isPanelTabLocation(location)) {\n const panel = draft.panels[location.side];\n panel.splitterPercent =\n panel.widgets.findIndex((wId) => wId === location.widgetId) === 0\n ? 100\n : 0;\n }\n widget.minimized = false;\n });\n}\n\n/** @internal */\nexport function setWidgetLabel(\n state: NineZoneState,\n id: TabState[\"id\"],\n label: string\n) {\n if (!(id in state.tabs)) return state;\n\n return produce(state, (draft) => {\n const tab = draft.tabs[id];\n tab.label = label;\n });\n}\n\n/** @internal */\nexport function useSavedFrontstageState(frontstageDef: FrontstageDef) {\n const uiStateStorage = useUiStateStorageHandler();\n const uiStateStorageRef = React.useRef(uiStateStorage);\n const isMountedRef = React.useRef(false);\n React.useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n React.useEffect(() => {\n uiStateStorageRef.current = uiStateStorage;\n }, [uiStateStorage]);\n React.useEffect(() => {\n async function fetchFrontstageState() {\n if (frontstageDef.nineZoneState) {\n frontstageDef.nineZoneState = processPopoutWidgets(\n frontstageDef.nineZoneState,\n frontstageDef\n );\n return;\n }\n const id = frontstageDef.id;\n const version = frontstageDef.version;\n const settingResult = await uiStateStorageRef.current.getSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(id)\n );\n if (!isMountedRef.current) return;\n\n if (isFrontstageStateSettingResult(settingResult)) {\n const setting = settingResult.setting;\n if (\n setting.version >= version &&\n setting.stateVersion >= stateVersion\n ) {\n const restored = restoreNineZoneState(\n frontstageDef,\n setting.nineZone\n );\n\n frontstageDef.savedWidgetDefs = setting.widgets;\n restoreSavedWidgets(frontstageDef);\n\n let state = addMissingWidgets(frontstageDef, restored);\n state = hideWidgets(state, frontstageDef);\n state = processPopoutWidgets(state, frontstageDef);\n\n frontstageDef.nineZoneState = state;\n return;\n }\n }\n frontstageDef.nineZoneState = initializeNineZoneState(frontstageDef);\n }\n void fetchFrontstageState();\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function useSaveFrontstageSettings(\n frontstageDef: FrontstageDef,\n store: LayoutStore\n) {\n const uiSettingsStorage = useUiStateStorageHandler();\n const saveSetting = React.useMemo(() => {\n const debounced = debounce(\n async (frontstage: FrontstageDef, state: NineZoneState) => {\n const id = frontstage.id;\n const widgets = packSavedWidgets(frontstage);\n frontstage.savedWidgetDefs = widgets;\n const setting: WidgetPanelsFrontstageState = {\n id,\n version: frontstage.version,\n stateVersion,\n nineZone: packNineZoneState(state),\n widgets,\n };\n await uiSettingsStorage.saveSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(id),\n setting\n );\n },\n 1000\n );\n\n const save = (frontstage: FrontstageDef, state: NineZoneState) => {\n if (state.draggedTab) return;\n debounced(frontstage, state);\n };\n save.cancel = debounced.cancel;\n return save;\n }, [uiSettingsStorage]);\n React.useEffect(() => {\n return () => {\n saveSetting.cancel();\n };\n }, [saveSetting]);\n\n React.useEffect(() => {\n saveSetting(frontstageDef, store.getState());\n }, [saveSetting, frontstageDef, store]);\n React.useEffect(() => {\n return store.subscribe(() => {\n saveSetting(frontstageDef, store.getState());\n });\n }, [saveSetting, frontstageDef, store]);\n}\n\n/** @internal */\nexport const FRONTSTAGE_SETTINGS_NAMESPACE = \"uifw-frontstageSettings\";\n\n/** @internal */\nexport function getFrontstageStateSettingName(\n frontstageId: WidgetPanelsFrontstageState[\"id\"]\n) {\n return `frontstageState[${frontstageId}]`;\n}\n\n// istanbul ignore next\nfunction debounce<T extends (...args: any[]) => any>(\n func: T,\n duration: number\n) {\n let timeout: number | undefined;\n const debounced = (...args: Parameters<T>) => {\n const handler = () => {\n timeout = undefined;\n return func(...args);\n };\n window.clearTimeout(timeout);\n timeout = window.setTimeout(handler, duration);\n };\n debounced.cancel = () => {\n window.clearTimeout(timeout);\n };\n return debounced;\n}\n\nconst createListener = <T extends (...args: any[]) => void>(\n frontstageDef: FrontstageDef,\n listener: T\n) => {\n return (...args: Parameters<T>) => {\n if (!frontstageDef.nineZoneState) return;\n listener(...args);\n };\n};\n\n/** @internal */\nexport function useFrontstageManager(\n frontstageDef: FrontstageDef,\n useToolAsToolSettingsLabel?: boolean\n) {\n React.useEffect(() => {\n const listener = createListener(\n frontstageDef,\n ({ widgetDef, widgetState }: WidgetStateChangedEventArgs) => {\n assert(!!frontstageDef.nineZoneState);\n frontstageDef.nineZoneState = setWidgetState(\n frontstageDef.nineZoneState,\n widgetDef,\n widgetState\n );\n }\n );\n UiFramework.frontstages.onWidgetStateChangedEvent.addListener(listener);\n return () => {\n UiFramework.frontstages.onWidgetStateChangedEvent.removeListener(\n listener\n );\n };\n }, [frontstageDef]);\n React.useEffect(() => {\n const listener = createListener(\n frontstageDef,\n ({ widgetDef }: WidgetEventArgs) => {\n assert(!!frontstageDef.nineZoneState);\n const nineZoneState = setWidgetState(\n frontstageDef.nineZoneState,\n widgetDef,\n WidgetState.Open\n );\n frontstageDef.nineZoneState = showWidget(nineZoneState, widgetDef.id);\n }\n );\n InternalFrontstageManager.onWidgetShowEvent.addListener(listener);\n return () => {\n InternalFrontstageManager.onWidgetShowEvent.removeListener(listener);\n };\n }, [frontstageDef]);\n React.useEffect(() => {\n const listener = createListener(\n frontstageDef,\n ({ widgetDef }: WidgetEventArgs) => {\n assert(!!frontstageDef.nineZoneState);\n let nineZoneState = setWidgetState(\n frontstageDef.nineZoneState,\n widgetDef,\n WidgetState.Open\n );\n nineZoneState = showWidget(nineZoneState, widgetDef.id);\n nineZoneState = expandWidget(nineZoneState, widgetDef.id);\n frontstageDef.nineZoneState = nineZoneState;\n }\n );\n InternalFrontstageManager.onWidgetExpandEvent.addListener(listener);\n return () => {\n InternalFrontstageManager.onWidgetExpandEvent.removeListener(listener);\n };\n }, [frontstageDef]);\n const uiSettingsStorage = useUiStateStorageHandler();\n React.useEffect(() => {\n const listener = (args: FrontstageEventArgs) => {\n // TODO: track restoring frontstages to support workflows: i.e. prevent loading frontstage OR saving layout when delete is pending\n void uiSettingsStorage.deleteSetting(\n FRONTSTAGE_SETTINGS_NAMESPACE,\n getFrontstageStateSettingName(args.frontstageDef.id)\n );\n if (frontstageDef.id === args.frontstageDef.id) {\n args.frontstageDef.nineZoneState =\n initializeNineZoneState(frontstageDef);\n } else {\n args.frontstageDef.nineZoneState = undefined;\n }\n };\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n listener\n );\n return () => {\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.removeListener(\n listener\n );\n };\n }, [uiSettingsStorage, frontstageDef]);\n React.useEffect(() => {\n const listener = createListener(\n frontstageDef,\n ({ widgetDef }: WidgetEventArgs) => {\n assert(!!frontstageDef.nineZoneState);\n const label = widgetDef.label;\n frontstageDef.nineZoneState = setWidgetLabel(\n frontstageDef.nineZoneState,\n widgetDef.id,\n label\n );\n }\n );\n InternalFrontstageManager.onWidgetLabelChangedEvent.addListener(listener);\n return () => {\n InternalFrontstageManager.onWidgetLabelChangedEvent.removeListener(\n listener\n );\n };\n }, [frontstageDef]);\n\n const defaultLabel = React.useMemo(\n () => UiFramework.translate(\"widget.labels.toolSettings\"),\n []\n );\n React.useEffect(() => {\n const updateLabel = createListener(frontstageDef, () => {\n const toolId = UiFramework.frontstages.activeToolId;\n assert(!!frontstageDef.nineZoneState);\n const label = useToolAsToolSettingsLabel\n ? IModelApp.tools.find(toolId)?.flyover || defaultLabel\n : defaultLabel;\n frontstageDef.nineZoneState = setWidgetLabel(\n frontstageDef.nineZoneState,\n toolSettingsTabId,\n label\n );\n });\n // Whenever the frontstageDef or the useTool... changes, keep the label up to date.\n updateLabel();\n // If useTool... is true, listen for events to keep up the label up to date.\n if (useToolAsToolSettingsLabel) {\n UiFramework.frontstages.onFrontstageReadyEvent.addListener(updateLabel);\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n updateLabel\n );\n UiFramework.frontstages.onToolActivatedEvent.addListener(updateLabel);\n UiFramework.frontstages.onToolSettingsReloadEvent.addListener(\n updateLabel\n );\n }\n return () => {\n if (useToolAsToolSettingsLabel) {\n UiFramework.frontstages.onFrontstageReadyEvent.removeListener(\n updateLabel\n );\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.removeListener(\n updateLabel\n );\n UiFramework.frontstages.onToolActivatedEvent.removeListener(\n updateLabel\n );\n UiFramework.frontstages.onToolSettingsReloadEvent.removeListener(\n updateLabel\n );\n }\n };\n }, [frontstageDef, useToolAsToolSettingsLabel, defaultLabel]);\n}\n\n/** @internal */\n// istanbul ignore next\nexport function useItemsManager(frontstageDef: FrontstageDef) {\n const refreshNineZoneState = (def: FrontstageDef) => {\n // Fired for both registered/unregistered. Update definitions and remove/add missing widgets.\n def.updateWidgetDefs();\n restoreSavedWidgets(def);\n let state = def.nineZoneState;\n if (!state) return;\n state = addMissingWidgets(def, state);\n state = removeMissingWidgets(def, state);\n state = hideWidgets(state, def); // TODO: should only apply to widgets provided by registered provider in onUiProviderRegisteredEvent.\n def.nineZoneState = state;\n };\n\n React.useEffect(() => {\n const remove = UiItemsManager.onUiProviderRegisteredEvent.addListener(\n () => {\n refreshNineZoneState(frontstageDef);\n }\n );\n // Need to refresh anytime frontstageDef changes because uiItemsProvider may have added something to\n // another stage before it was possibly unloaded in this stage.\n refreshNineZoneState(frontstageDef);\n return remove;\n }, [frontstageDef]);\n}\n\n// istanbul ignore next\nfunction determineNewWidgets(\n defs: readonly WidgetDef[] | undefined,\n state: NineZoneState\n) {\n defs = defs || [];\n const uniqueDefs = defs.filter((def, index, array) => {\n return index === array.findIndex((def1) => def.id === def1.id);\n });\n return uniqueDefs.filter((def) => !(def.id in state.tabs));\n}\n"]}
@@ -17,7 +17,7 @@ const FrontstageDef_1 = require("../frontstage/FrontstageDef");
17
17
  /** @internal */
18
18
  function WidgetPanelsStatusBar(props) {
19
19
  const frontstageDef = (0, FrontstageDef_1.useActiveFrontstageDef)();
20
- const widgetDef = frontstageDef === null || frontstageDef === void 0 ? void 0 : frontstageDef.statusBar;
20
+ const widgetDef = frontstageDef?.statusBar;
21
21
  if (!widgetDef)
22
22
  return null;
23
23
  const content = widgetDef.reactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/StatusBar.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,4BAA0B;AAC1B,2CAAoC;AACpC,+BAA+B;AAE/B,mFAAoF;AACpF,sDAAmD;AAEnD,+DAAqE;AAErE,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,KAAkB;IACtD,MAAM,aAAa,GAAG,IAAA,sCAAsB,GAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,SAAS,CAAC;IAC3C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;IACpC,MAAM,aAAa,GACjB,OAAO,KAAK,SAAS;QACnB,CAAC,CAAE,SAAS,CAAC,gBAAgB,CACzB,iDAAyB,CAAC,eAAe,CACH;QAC1C,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,SAAS,GAAG,IAAA,oBAAU,EAAC,6BAA6B,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7E,OAAO,CACL,oBAAC,qBAAS,IACR,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,aAAa,EAAE,aAAa,IAE3B,SAAS,CAAC,SAAS,CACV,CACb,CAAC;AACJ,CAAC;AArBD,sDAqBC","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 StatusBar\n */\n\nimport \"./StatusBar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { ConfigurableUiControlType } from \"../configurableui/ConfigurableUiControl\";\nimport { StatusBar } from \"../statusbar/StatusBar\";\nimport type { StatusBarWidgetControl } from \"../statusbar/StatusBarWidgetControl\";\nimport { useActiveFrontstageDef } from \"../frontstage/FrontstageDef\";\n\n/** @internal */\nexport function WidgetPanelsStatusBar(props: CommonProps) {\n const frontstageDef = useActiveFrontstageDef();\n const widgetDef = frontstageDef?.statusBar;\n if (!widgetDef) return null;\n const content = widgetDef.reactNode;\n const widgetControl =\n content === undefined\n ? (widgetDef.getWidgetControl(\n ConfigurableUiControlType.StatusBarWidget\n ) as StatusBarWidgetControl | undefined)\n : undefined;\n const className = classnames(\"uifw-widgetPanels-statusBar\", props.className);\n return (\n <StatusBar\n className={className}\n style={props.style}\n widgetControl={widgetControl}\n >\n {widgetDef.reactNode}\n </StatusBar>\n );\n}\n"]}
1
+ {"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/StatusBar.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,4BAA0B;AAC1B,2CAAoC;AACpC,+BAA+B;AAE/B,mFAAoF;AACpF,sDAAmD;AAEnD,+DAAqE;AAErE,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,KAAkB;IACtD,MAAM,aAAa,GAAG,IAAA,sCAAsB,GAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,aAAa,EAAE,SAAS,CAAC;IAC3C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC;IACpC,MAAM,aAAa,GACjB,OAAO,KAAK,SAAS;QACnB,CAAC,CAAE,SAAS,CAAC,gBAAgB,CACzB,iDAAyB,CAAC,eAAe,CACH;QAC1C,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,SAAS,GAAG,IAAA,oBAAU,EAAC,6BAA6B,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7E,OAAO,CACL,oBAAC,qBAAS,IACR,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,aAAa,EAAE,aAAa,IAE3B,SAAS,CAAC,SAAS,CACV,CACb,CAAC;AACJ,CAAC;AArBD,sDAqBC","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 StatusBar\n */\n\nimport \"./StatusBar.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { ConfigurableUiControlType } from \"../configurableui/ConfigurableUiControl\";\nimport { StatusBar } from \"../statusbar/StatusBar\";\nimport type { StatusBarWidgetControl } from \"../statusbar/StatusBarWidgetControl\";\nimport { useActiveFrontstageDef } from \"../frontstage/FrontstageDef\";\n\n/** @internal */\nexport function WidgetPanelsStatusBar(props: CommonProps) {\n const frontstageDef = useActiveFrontstageDef();\n const widgetDef = frontstageDef?.statusBar;\n if (!widgetDef) return null;\n const content = widgetDef.reactNode;\n const widgetControl =\n content === undefined\n ? (widgetDef.getWidgetControl(\n ConfigurableUiControlType.StatusBarWidget\n ) as StatusBarWidgetControl | undefined)\n : undefined;\n const className = classnames(\"uifw-widgetPanels-statusBar\", props.className);\n return (\n <StatusBar\n className={className}\n style={props.style}\n widgetControl={widgetControl}\n >\n {widgetDef.reactNode}\n </StatusBar>\n );\n}\n"]}
@@ -17,7 +17,7 @@ const appui_abstract_1 = require("@itwin/appui-abstract");
17
17
  /** @internal */
18
18
  function WidgetPanelsTab() {
19
19
  const widgetDef = (0, Content_1.useWidgetDef)();
20
- const badgeType = widgetDef === null || widgetDef === void 0 ? void 0 : widgetDef.badgeType;
20
+ const badgeType = widgetDef?.badgeType;
21
21
  const badgeClassName = getBadgeClassName(badgeType);
22
22
  const badge = React.useMemo(() => core_react_1.BadgeUtilities.getComponentForBadgeType(badgeType), [badgeType]);
23
23
  return React.createElement(appui_layout_react_1.WidgetTab, { className: badgeClassName, badge: badge });
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Tab.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,sBAAoB;AACpB,+BAA+B;AAC/B,kEAAsD;AACtD,uCAAyC;AACzC,kDAAmD;AACnD,0DAAkD;AAElD,gBAAgB;AAChB,SAAgB,eAAe;IAC7B,MAAM,SAAS,GAAG,IAAA,sBAAY,GAAE,CAAC;IACjC,MAAM,SAAS,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC;IACvC,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,2BAAc,CAAC,wBAAwB,CAAC,SAAS,CAAC,EACxD,CAAC,SAAS,CAAC,CACZ,CAAC;IACF,OAAO,oBAAC,8BAAS,IAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AAChE,CAAC;AATD,0CASC;AAED,gBAAgB;AAChB,SAAgB,iBAAiB,CAAC,SAAgC;IAChE,IAAI,SAAS,KAAK,0BAAS,CAAC,GAAG;QAAE,OAAO,gBAAgB,CAAC;SACpD,IAAI,SAAS,KAAK,0BAAS,CAAC,gBAAgB;QAAE,OAAO,eAAe,CAAC;IAC1E,OAAO,SAAS,CAAC;AACnB,CAAC;AAJD,8CAIC","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 Widget\n */\n\nimport \"./Tab.scss\";\nimport * as React from \"react\";\nimport { WidgetTab } from \"@itwin/appui-layout-react\";\nimport { useWidgetDef } from \"./Content\";\nimport { BadgeUtilities } from \"@itwin/core-react\";\nimport { BadgeType } from \"@itwin/appui-abstract\";\n\n/** @internal */\nexport function WidgetPanelsTab() {\n const widgetDef = useWidgetDef();\n const badgeType = widgetDef?.badgeType;\n const badgeClassName = getBadgeClassName(badgeType);\n const badge = React.useMemo(\n () => BadgeUtilities.getComponentForBadgeType(badgeType),\n [badgeType]\n );\n return <WidgetTab className={badgeClassName} badge={badge} />;\n}\n\n/** @internal */\nexport function getBadgeClassName(badgeType: BadgeType | undefined) {\n if (badgeType === BadgeType.New) return \"uifw-badge-new\";\n else if (badgeType === BadgeType.TechnicalPreview) return \"uifw-badge-tp\";\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Tab.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,sBAAoB;AACpB,+BAA+B;AAC/B,kEAAsD;AACtD,uCAAyC;AACzC,kDAAmD;AACnD,0DAAkD;AAElD,gBAAgB;AAChB,SAAgB,eAAe;IAC7B,MAAM,SAAS,GAAG,IAAA,sBAAY,GAAE,CAAC;IACjC,MAAM,SAAS,GAAG,SAAS,EAAE,SAAS,CAAC;IACvC,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,2BAAc,CAAC,wBAAwB,CAAC,SAAS,CAAC,EACxD,CAAC,SAAS,CAAC,CACZ,CAAC;IACF,OAAO,oBAAC,8BAAS,IAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AAChE,CAAC;AATD,0CASC;AAED,gBAAgB;AAChB,SAAgB,iBAAiB,CAAC,SAAgC;IAChE,IAAI,SAAS,KAAK,0BAAS,CAAC,GAAG;QAAE,OAAO,gBAAgB,CAAC;SACpD,IAAI,SAAS,KAAK,0BAAS,CAAC,gBAAgB;QAAE,OAAO,eAAe,CAAC;IAC1E,OAAO,SAAS,CAAC;AACnB,CAAC;AAJD,8CAIC","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 Widget\n */\n\nimport \"./Tab.scss\";\nimport * as React from \"react\";\nimport { WidgetTab } from \"@itwin/appui-layout-react\";\nimport { useWidgetDef } from \"./Content\";\nimport { BadgeUtilities } from \"@itwin/core-react\";\nimport { BadgeType } from \"@itwin/appui-abstract\";\n\n/** @internal */\nexport function WidgetPanelsTab() {\n const widgetDef = useWidgetDef();\n const badgeType = widgetDef?.badgeType;\n const badgeClassName = getBadgeClassName(badgeType);\n const badge = React.useMemo(\n () => BadgeUtilities.getComponentForBadgeType(badgeType),\n [badgeType]\n );\n return <WidgetTab className={badgeClassName} badge={badge} />;\n}\n\n/** @internal */\nexport function getBadgeClassName(badgeType: BadgeType | undefined) {\n if (badgeType === BadgeType.New) return \"uifw-badge-new\";\n else if (badgeType === BadgeType.TechnicalPreview) return \"uifw-badge-tp\";\n return undefined;\n}\n"]}
@@ -30,7 +30,7 @@ function TsLabel({ children }) {
30
30
  function WidgetPanelsToolSettings() {
31
31
  const frontstageDef = (0, FrontstageDef_1.useActiveFrontstageDef)();
32
32
  const toolSettingsType = (0, appui_layout_react_1.useLayout)((state) => state.toolSettings.type);
33
- const toolSettings = frontstageDef === null || frontstageDef === void 0 ? void 0 : frontstageDef.toolSettings;
33
+ const toolSettings = frontstageDef?.toolSettings;
34
34
  if (!toolSettings || toolSettingsType === "widget")
35
35
  return null;
36
36
  return React.createElement(ToolSettingsDockedContent, null);
@@ -38,10 +38,9 @@ function WidgetPanelsToolSettings() {
38
38
  exports.WidgetPanelsToolSettings = WidgetPanelsToolSettings;
39
39
  /** @internal */
40
40
  function ToolSettingsDockedContent() {
41
- var _a, _b;
42
41
  const settings = useHorizontalToolSettingNodes();
43
42
  // for the overflow to work properly each setting in the DockedToolSettings should be wrapped by a DockedToolSetting component
44
- return (React.createElement(appui_layout_react_1.DockedToolSettings, { itemId: (_b = (_a = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.uniqueId) !== null && _b !== void 0 ? _b : "none", key: Date.now() }, settings &&
43
+ return (React.createElement(appui_layout_react_1.DockedToolSettings, { itemId: InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider?.uniqueId ?? "none", key: Date.now() }, settings &&
45
44
  settings.map((entry, index) => (React.createElement(appui_layout_react_1.DockedToolSetting, { key: index },
46
45
  React.createElement(TsLabel, null, entry.labelNode),
47
46
  entry.editorNode)))));
@@ -49,12 +48,12 @@ function ToolSettingsDockedContent() {
49
48
  exports.ToolSettingsDockedContent = ToolSettingsDockedContent;
50
49
  /** @internal */
51
50
  function useHorizontalToolSettingNodes() {
52
- var _a;
53
- const [settings, setSettings] = React.useState((_a = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.horizontalToolSettingNodes);
51
+ const [settings, setSettings] = React.useState(InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider
52
+ ?.horizontalToolSettingNodes);
54
53
  React.useEffect(() => {
55
54
  const handleToolActivatedEvent = () => {
56
- var _a;
57
- const nodes = (_a = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.horizontalToolSettingNodes;
55
+ const nodes = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider
56
+ ?.horizontalToolSettingNodes;
58
57
  if (!nodes || nodes.length === 0)
59
58
  setSettings([EmptyToolSettingsEntry()]);
60
59
  else
@@ -67,8 +66,8 @@ function useHorizontalToolSettingNodes() {
67
66
  }, [setSettings]);
68
67
  React.useEffect(() => {
69
68
  const handleToolSettingsReloadEvent = () => {
70
- var _a;
71
- const nodes = (_a = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.horizontalToolSettingNodes;
69
+ const nodes = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider
70
+ ?.horizontalToolSettingNodes;
72
71
  if (!nodes || nodes.length === 0)
73
72
  setSettings([EmptyToolSettingsEntry()]);
74
73
  else
@@ -98,12 +97,10 @@ function ToolSettingsGrid({ settings }) {
98
97
  exports.ToolSettingsGrid = ToolSettingsGrid;
99
98
  /** @internal */
100
99
  function useToolSettingsNode() {
101
- var _a;
102
- const [settings, setSettings] = React.useState((_a = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.toolSettingsNode);
100
+ const [settings, setSettings] = React.useState(InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode);
103
101
  React.useEffect(() => {
104
102
  const handleToolActivatedEvent = () => {
105
- var _a;
106
- const nodes = (_a = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.toolSettingsNode;
103
+ const nodes = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode;
107
104
  setSettings(nodes);
108
105
  };
109
106
  UiFramework_1.UiFramework.frontstages.onToolActivatedEvent.addListener(handleToolActivatedEvent);
@@ -113,8 +110,7 @@ function useToolSettingsNode() {
113
110
  }, [setSettings]);
114
111
  React.useEffect(() => {
115
112
  const handleToolSettingsReloadEvent = () => {
116
- var _a;
117
- const nodes = (_a = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.toolSettingsNode;
113
+ const nodes = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode;
118
114
  setSettings(nodes);
119
115
  };
120
116
  UiFramework_1.UiFramework.frontstages.onToolSettingsReloadEvent.addListener(handleToolSettingsReloadEvent);
@@ -136,7 +132,6 @@ function ToolSettingsContent() {
136
132
  exports.ToolSettingsContent = ToolSettingsContent;
137
133
  /** @internal */
138
134
  function ToolSettingsWidgetContent() {
139
- var _a, _b;
140
135
  const floatingToolSettingsContainerRef = React.useRef(null);
141
136
  const node = useToolSettingsNode();
142
137
  // if no tool settings hide the floating widgets tab
@@ -153,7 +148,7 @@ function ToolSettingsWidgetContent() {
153
148
  }
154
149
  }, [node]);
155
150
  // istanbul ignore next
156
- const providerId = (_b = (_a = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.uniqueId) !== null && _b !== void 0 ? _b : "none";
151
+ const providerId = InternalFrontstageManager_1.InternalFrontstageManager.activeToolSettingsProvider?.uniqueId ?? "none";
157
152
  return (React.createElement("div", { "data-toolsettings-provider": providerId, className: "uifw-floating-toolsettings-container", ref: floatingToolSettingsContainerRef },
158
153
  React.createElement(appui_layout_react_1.ScrollableWidgetContent, null, node)));
159
154
  }