@itwin/appui-react 4.7.2 → 4.8.1
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.
- package/CHANGELOG.md +14 -3
- package/lib/cjs/appui-react/UiFramework.js +7 -4
- package/lib/cjs/appui-react/UiFramework.js.map +1 -1
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +2 -1
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/ChildWindowConfig.d.ts +17 -0
- package/lib/cjs/appui-react/childwindow/ChildWindowConfig.d.ts.map +1 -0
- package/lib/cjs/appui-react/childwindow/ChildWindowConfig.js +3 -0
- package/lib/cjs/appui-react/childwindow/ChildWindowConfig.js.map +1 -0
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +18 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/TimeTracker.js +2 -1
- package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.js +12 -9
- package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/content/DefaultViewOverlay.js +4 -3
- package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.js +2 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/cjs/appui-react/content/IModelViewport.js +7 -4
- package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +2 -1
- package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentViewManager.js +2 -2
- package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js +12 -10
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +3 -2
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/cjs/appui-react/dialog/ContentDialog.js +6 -3
- package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js +3 -2
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +2 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +56 -38
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +3 -2
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +2 -1
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +11 -7
- package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +11 -7
- package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +13 -8
- package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/messages/ActivityMessage.js +7 -5
- package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.js +2 -1
- package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/cjs/appui-react/pickers/ViewSelector.js +6 -5
- package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +2 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/cjs/appui-react/popup/PopupManager.js +2 -1
- package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts +1 -0
- package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.js +2 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -1
- package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +2 -2
- package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +1 -2
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +16 -11
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/Indicator.js +2 -1
- package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBar.js +5 -3
- package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js +1 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.js +4 -6
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js +4 -3
- package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +17 -10
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts +1 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js +1 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +2 -3
- package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +22 -20
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +10 -9
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +2 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +14 -8
- package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
- package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +1 -1
- package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +3 -3
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Content.js +9 -8
- package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +50 -47
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
- package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
- package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js +23 -15
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Toolbars.js +3 -2
- package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
- package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -2
- package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/cjs/appui-react/widgets/Widget.d.ts +1 -1
- package/lib/cjs/appui-react/widgets/Widget.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/Widget.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +15 -7
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetHost.js +3 -2
- package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/esm/appui-react/UiFramework.js +7 -4
- package/lib/esm/appui-react/UiFramework.js.map +1 -1
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js +2 -1
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowConfig.d.ts +17 -0
- package/lib/esm/appui-react/childwindow/ChildWindowConfig.d.ts.map +1 -0
- package/lib/esm/appui-react/childwindow/ChildWindowConfig.js +2 -0
- package/lib/esm/appui-react/childwindow/ChildWindowConfig.js.map +1 -0
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +18 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/TimeTracker.js +2 -1
- package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.js +12 -9
- package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/esm/appui-react/content/DefaultViewOverlay.js +4 -3
- package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.js +2 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/esm/appui-react/content/IModelViewport.js +7 -4
- package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentLayoutManager.js +2 -1
- package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentViewManager.js +2 -2
- package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/esm/appui-react/content/split-pane/SplitPane.js +12 -10
- package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +3 -2
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/esm/appui-react/dialog/ContentDialog.js +6 -3
- package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/esm/appui-react/dialog/DialogManagerBase.js +3 -2
- package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +2 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +57 -39
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +3 -2
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +2 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +11 -7
- package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +11 -7
- package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useSolarDataProvider.js +13 -8
- package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
- package/lib/esm/appui-react/messages/ActivityMessage.js +7 -5
- package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.js +2 -1
- package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/esm/appui-react/pickers/ViewSelector.js +6 -5
- package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js +2 -1
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/esm/appui-react/popup/PopupManager.js +2 -1
- package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.d.ts +1 -0
- package/lib/esm/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.js +2 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -1
- package/lib/esm/appui-react/selection/SelectionContextItemDef.js +2 -2
- package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +1 -2
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js +16 -11
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/esm/appui-react/statusbar/Indicator.js +2 -1
- package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBar.js +5 -3
- package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/theme/ThemeManager.js +1 -1
- package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/esm/appui-react/toolbar/ToolbarHelper.js +4 -6
- package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
- package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js +4 -3
- package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js +17 -10
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts +1 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.js +1 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +2 -3
- package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +22 -20
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +10 -9
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +2 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +14 -8
- package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
- package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +1 -1
- package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +3 -3
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Content.js +9 -8
- package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +50 -47
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
- package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
- package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.js +23 -15
- package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Toolbars.js +3 -2
- package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
- package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -2
- package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/esm/appui-react/widgets/Widget.d.ts +1 -1
- package/lib/esm/appui-react/widgets/Widget.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/Widget.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +15 -7
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetHost.js +3 -2
- package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/public/locales/en/UiFramework.json +2 -1
- package/package.json +9 -9
|
@@ -67,7 +67,7 @@ const toolSettingsContent = React.createElement(ToolSettings_1.ToolSettingsConte
|
|
|
67
67
|
const widgetPanelsFrontstage = React.createElement(WidgetPanelsFrontstageComponent, null);
|
|
68
68
|
/** @internal */
|
|
69
69
|
function useLayoutStore(frontstageDef) {
|
|
70
|
-
const layoutStore = React.useMemo(() => (0, appui_layout_react_1.createLayoutStore)(frontstageDef
|
|
70
|
+
const layoutStore = React.useMemo(() => (0, appui_layout_react_1.createLayoutStore)(frontstageDef === null || frontstageDef === void 0 ? void 0 : frontstageDef.nineZoneState), [frontstageDef]);
|
|
71
71
|
React.useEffect(() => {
|
|
72
72
|
return InternalFrontstageManager_1.InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener((args) => {
|
|
73
73
|
if (args.frontstageDef !== frontstageDef)
|
|
@@ -173,9 +173,10 @@ function useLabels() {
|
|
|
173
173
|
}
|
|
174
174
|
exports.useLabels = useLabels;
|
|
175
175
|
function toTabArgs(widget) {
|
|
176
|
+
var _a;
|
|
176
177
|
const label = getWidgetLabel(widget.label);
|
|
177
178
|
const args = {
|
|
178
|
-
allowedPanelTargets: widget.allowedPanelTargets
|
|
179
|
+
allowedPanelTargets: (_a = widget.allowedPanelTargets) === null || _a === void 0 ? void 0 : _a.map((location) => (0, StagePanelDef_1.toPanelSide)(location)),
|
|
179
180
|
hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,
|
|
180
181
|
canPopout: widget.canPopout,
|
|
181
182
|
iconSpec: widget.iconSpec,
|
|
@@ -199,7 +200,7 @@ function addWidgets(state, widgets, side, widgetId) {
|
|
|
199
200
|
const activeWidget = visibleWidgets.find((widget) => widget.isActive);
|
|
200
201
|
const minimized = false;
|
|
201
202
|
// istanbul ignore else
|
|
202
|
-
if (activeWidget
|
|
203
|
+
if ((activeWidget === null || activeWidget === void 0 ? void 0 : activeWidget.defaultState) !== WidgetState_1.WidgetState.Floating) {
|
|
203
204
|
state = (0, appui_layout_react_1.addPanelWidget)(state, side, widgetId, tabs, {
|
|
204
205
|
activeTabId: activeWidget ? activeWidget.id : tabs[0],
|
|
205
206
|
minimized,
|
|
@@ -243,11 +244,6 @@ function appendWidgets(state, widgetDefs, location, section) {
|
|
|
243
244
|
? widgetDef.floatingContainerId
|
|
244
245
|
: (0, appui_layout_react_1.getUniqueId)();
|
|
245
246
|
const widgetContainerId = getWidgetId(location, section);
|
|
246
|
-
const home = {
|
|
247
|
-
side,
|
|
248
|
-
widgetId: widgetContainerId,
|
|
249
|
-
widgetIndex: 0,
|
|
250
|
-
};
|
|
251
247
|
const preferredPosition = widgetDef.defaultFloatingPosition;
|
|
252
248
|
if (floatingContainerId in state.widgets) {
|
|
253
249
|
state = (0, appui_layout_react_1.addTabToWidget)(state, widgetDef.id, floatingContainerId);
|
|
@@ -259,7 +255,7 @@ function appendWidgets(state, widgetDefs, location, section) {
|
|
|
259
255
|
width: 300,
|
|
260
256
|
...tab.preferredFloatingWidgetSize,
|
|
261
257
|
};
|
|
262
|
-
const preferredPoint = preferredPosition
|
|
258
|
+
const preferredPoint = preferredPosition !== null && preferredPosition !== void 0 ? preferredPosition : {
|
|
263
259
|
x: (state.size.width - size.width) / 2,
|
|
264
260
|
y: (state.size.height - size.height) / 2,
|
|
265
261
|
};
|
|
@@ -268,7 +264,11 @@ function appendWidgets(state, widgetDefs, location, section) {
|
|
|
268
264
|
const containedBounds = bounds.containIn(nzBounds);
|
|
269
265
|
state = (0, appui_layout_react_1.addFloatingWidget)(state, floatingContainerId, [widgetDef.id], {
|
|
270
266
|
bounds: containedBounds.toProps(),
|
|
271
|
-
home
|
|
267
|
+
home: {
|
|
268
|
+
widgetId: widgetContainerId,
|
|
269
|
+
side,
|
|
270
|
+
widgetIndex: 0,
|
|
271
|
+
},
|
|
272
272
|
userSized,
|
|
273
273
|
});
|
|
274
274
|
}
|
|
@@ -304,15 +304,14 @@ function appendWidgets(state, widgetDefs, location, section) {
|
|
|
304
304
|
}
|
|
305
305
|
exports.appendWidgets = appendWidgets;
|
|
306
306
|
function processPopoutWidgets(state) {
|
|
307
|
-
// Electron reopens popout windows
|
|
307
|
+
// Electron reopens popout windows w/o user interaction.
|
|
308
308
|
if (core_bentley_1.ProcessDetector.isElectronAppFrontend) {
|
|
309
309
|
return state;
|
|
310
310
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
const id = widget.tabs[0];
|
|
311
|
+
// Restore popout widgets to main window.
|
|
312
|
+
for (const id of state.popoutWidgets.allIds) {
|
|
314
313
|
state = (0, appui_layout_react_1.NineZoneStateReducer)(state, {
|
|
315
|
-
type: "
|
|
314
|
+
type: "POPOUT_WIDGET_SEND_BACK",
|
|
316
315
|
id,
|
|
317
316
|
});
|
|
318
317
|
}
|
|
@@ -322,23 +321,16 @@ function processPopoutWidgets(state) {
|
|
|
322
321
|
* @internal
|
|
323
322
|
*/
|
|
324
323
|
function addMissingWidgets(frontstageDef, initialState) {
|
|
324
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
325
325
|
let state = initialState;
|
|
326
|
-
state = appendWidgets(state, determineNewWidgets(frontstageDef.leftPanel
|
|
327
|
-
|
|
328
|
-
state = appendWidgets(state, determineNewWidgets(frontstageDef.
|
|
329
|
-
|
|
330
|
-
state = appendWidgets(state, determineNewWidgets(frontstageDef.
|
|
331
|
-
|
|
332
|
-
state = appendWidgets(state, determineNewWidgets(frontstageDef.
|
|
333
|
-
|
|
334
|
-
state = appendWidgets(state, determineNewWidgets(frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection_1.StagePanelSection.Start)
|
|
335
|
-
.widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Top, StagePanelSection_1.StagePanelSection.Start);
|
|
336
|
-
state = appendWidgets(state, determineNewWidgets(frontstageDef.topPanel?.getPanelSectionDef(StagePanelSection_1.StagePanelSection.End)
|
|
337
|
-
.widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Top, StagePanelSection_1.StagePanelSection.End);
|
|
338
|
-
state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection_1.StagePanelSection.Start)
|
|
339
|
-
.widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Bottom, StagePanelSection_1.StagePanelSection.Start);
|
|
340
|
-
state = appendWidgets(state, determineNewWidgets(frontstageDef.bottomPanel?.getPanelSectionDef(StagePanelSection_1.StagePanelSection.End)
|
|
341
|
-
.widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Bottom, StagePanelSection_1.StagePanelSection.End);
|
|
326
|
+
state = appendWidgets(state, determineNewWidgets((_a = frontstageDef.leftPanel) === null || _a === void 0 ? void 0 : _a.getPanelSectionDef(StagePanelSection_1.StagePanelSection.Start).widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Left, StagePanelSection_1.StagePanelSection.Start);
|
|
327
|
+
state = appendWidgets(state, determineNewWidgets((_b = frontstageDef.leftPanel) === null || _b === void 0 ? void 0 : _b.getPanelSectionDef(StagePanelSection_1.StagePanelSection.End).widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Left, StagePanelSection_1.StagePanelSection.End);
|
|
328
|
+
state = appendWidgets(state, determineNewWidgets((_c = frontstageDef.rightPanel) === null || _c === void 0 ? void 0 : _c.getPanelSectionDef(StagePanelSection_1.StagePanelSection.Start).widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Right, StagePanelSection_1.StagePanelSection.Start);
|
|
329
|
+
state = appendWidgets(state, determineNewWidgets((_d = frontstageDef.rightPanel) === null || _d === void 0 ? void 0 : _d.getPanelSectionDef(StagePanelSection_1.StagePanelSection.End).widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Right, StagePanelSection_1.StagePanelSection.End);
|
|
330
|
+
state = appendWidgets(state, determineNewWidgets((_e = frontstageDef.topPanel) === null || _e === void 0 ? void 0 : _e.getPanelSectionDef(StagePanelSection_1.StagePanelSection.Start).widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Top, StagePanelSection_1.StagePanelSection.Start);
|
|
331
|
+
state = appendWidgets(state, determineNewWidgets((_f = frontstageDef.topPanel) === null || _f === void 0 ? void 0 : _f.getPanelSectionDef(StagePanelSection_1.StagePanelSection.End).widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Top, StagePanelSection_1.StagePanelSection.End);
|
|
332
|
+
state = appendWidgets(state, determineNewWidgets((_g = frontstageDef.bottomPanel) === null || _g === void 0 ? void 0 : _g.getPanelSectionDef(StagePanelSection_1.StagePanelSection.Start).widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Bottom, StagePanelSection_1.StagePanelSection.Start);
|
|
333
|
+
state = appendWidgets(state, determineNewWidgets((_h = frontstageDef.bottomPanel) === null || _h === void 0 ? void 0 : _h.getPanelSectionDef(StagePanelSection_1.StagePanelSection.End).widgetDefs, state), StagePanelLocation_1.StagePanelLocation.Bottom, StagePanelSection_1.StagePanelSection.End);
|
|
342
334
|
if (frontstageDef.toolSettings) {
|
|
343
335
|
const newToolSettingsWidgets = determineNewWidgets([frontstageDef.toolSettings], state);
|
|
344
336
|
for (const newToolSettingsWidget of newToolSettingsWidgets) {
|
|
@@ -361,6 +353,12 @@ function hideWidgets(state, frontstageDef) {
|
|
|
361
353
|
id: widgetDef.id,
|
|
362
354
|
});
|
|
363
355
|
}
|
|
356
|
+
if (widgetDef.defaultState === WidgetState_1.WidgetState.Unloaded) {
|
|
357
|
+
state = (0, appui_layout_react_1.NineZoneStateReducer)(state, {
|
|
358
|
+
type: "WIDGET_TAB_UNLOAD",
|
|
359
|
+
id: widgetDef.id,
|
|
360
|
+
});
|
|
361
|
+
}
|
|
364
362
|
}
|
|
365
363
|
return state;
|
|
366
364
|
}
|
|
@@ -368,7 +366,8 @@ function hideWidgets(state, frontstageDef) {
|
|
|
368
366
|
* @internal
|
|
369
367
|
*/
|
|
370
368
|
function removeMissingWidgets(frontstageDef, state) {
|
|
371
|
-
|
|
369
|
+
var _a;
|
|
370
|
+
const toolSettingsTabId = (_a = state.toolSettings) === null || _a === void 0 ? void 0 : _a.tabId;
|
|
372
371
|
for (const [, tab] of Object.entries(state.tabs)) {
|
|
373
372
|
if (tab.id === toolSettingsTabId)
|
|
374
373
|
continue;
|
|
@@ -415,8 +414,8 @@ exports.getWidgetId = getWidgetId;
|
|
|
415
414
|
/** @internal */
|
|
416
415
|
function getPanelSectionWidgets(frontstageDef, location, section) {
|
|
417
416
|
const stagePanel = frontstageDef.getStagePanelDef(location);
|
|
418
|
-
const panelSection = stagePanel
|
|
419
|
-
return panelSection
|
|
417
|
+
const panelSection = stagePanel === null || stagePanel === void 0 ? void 0 : stagePanel.getPanelSectionDef(section);
|
|
418
|
+
return (panelSection === null || panelSection === void 0 ? void 0 : panelSection.widgetDefs) || [];
|
|
420
419
|
}
|
|
421
420
|
exports.getPanelSectionWidgets = getPanelSectionWidgets;
|
|
422
421
|
/** @internal */
|
|
@@ -444,13 +443,14 @@ function initializePanel(state, frontstageDef, location) {
|
|
|
444
443
|
state = addPanelWidgets(state, frontstageDef, location);
|
|
445
444
|
const panelDef = frontstageDef.getStagePanelDef(location);
|
|
446
445
|
state = (0, immer_1.default)(state, (draft) => {
|
|
446
|
+
var _a, _b, _c, _d, _e, _f;
|
|
447
447
|
const panel = draft.panels[side];
|
|
448
|
-
panel.minSize = panelDef
|
|
449
|
-
panel.pinned = panelDef
|
|
450
|
-
panel.resizable = panelDef
|
|
451
|
-
panel.maxSize = panelDef
|
|
448
|
+
panel.minSize = (_b = (_a = panelDef === null || panelDef === void 0 ? void 0 : panelDef.initialConfig) === null || _a === void 0 ? void 0 : _a.minSize) !== null && _b !== void 0 ? _b : panel.minSize;
|
|
449
|
+
panel.pinned = (_c = panelDef === null || panelDef === void 0 ? void 0 : panelDef.pinned) !== null && _c !== void 0 ? _c : panel.pinned;
|
|
450
|
+
panel.resizable = (_d = panelDef === null || panelDef === void 0 ? void 0 : panelDef.resizable) !== null && _d !== void 0 ? _d : panel.resizable;
|
|
451
|
+
panel.maxSize = (_f = (_e = panelDef === null || panelDef === void 0 ? void 0 : panelDef.initialConfig) === null || _e === void 0 ? void 0 : _e.maxSize) !== null && _f !== void 0 ? _f : panel.maxSize;
|
|
452
452
|
});
|
|
453
|
-
if (panelDef
|
|
453
|
+
if ((panelDef === null || panelDef === void 0 ? void 0 : panelDef.size) !== undefined) {
|
|
454
454
|
state = (0, appui_layout_react_1.NineZoneStateReducer)(state, {
|
|
455
455
|
type: "PANEL_SET_SIZE",
|
|
456
456
|
side,
|
|
@@ -461,7 +461,7 @@ function initializePanel(state, frontstageDef, location) {
|
|
|
461
461
|
}
|
|
462
462
|
exports.initializePanel = initializePanel;
|
|
463
463
|
/** @internal */
|
|
464
|
-
exports.stateVersion =
|
|
464
|
+
exports.stateVersion = 17; // this needs to be bumped when NineZoneState is changed (to recreate the layout).
|
|
465
465
|
/** @internal */
|
|
466
466
|
function initializeNineZoneState(frontstageDef) {
|
|
467
467
|
let nineZone = defaultNineZone;
|
|
@@ -479,6 +479,7 @@ function initializeNineZoneState(frontstageDef) {
|
|
|
479
479
|
nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation_1.StagePanelLocation.Top);
|
|
480
480
|
nineZone = initializePanel(nineZone, frontstageDef, StagePanelLocation_1.StagePanelLocation.Bottom);
|
|
481
481
|
nineZone = (0, immer_1.default)(nineZone, (draft) => {
|
|
482
|
+
var _a, _b, _c, _d;
|
|
482
483
|
for (const [, panel] of Object.entries(draft.panels)) {
|
|
483
484
|
const expanded = panel.widgets.find((widgetId) => draft.widgets[widgetId].minimized === false);
|
|
484
485
|
const firstWidget = panel.widgets.length > 0 ? draft.widgets[panel.widgets[0]] : undefined;
|
|
@@ -487,10 +488,10 @@ function initializeNineZoneState(frontstageDef) {
|
|
|
487
488
|
firstWidget.minimized = false;
|
|
488
489
|
}
|
|
489
490
|
}
|
|
490
|
-
draft.panels.left.collapsed = isPanelCollapsed(frontstageDef.leftPanel
|
|
491
|
-
draft.panels.right.collapsed = isPanelCollapsed(frontstageDef.rightPanel
|
|
492
|
-
draft.panels.top.collapsed = isPanelCollapsed(frontstageDef.topPanel
|
|
493
|
-
draft.panels.bottom.collapsed = isPanelCollapsed(frontstageDef.bottomPanel
|
|
491
|
+
draft.panels.left.collapsed = isPanelCollapsed((_a = frontstageDef.leftPanel) === null || _a === void 0 ? void 0 : _a.panelState);
|
|
492
|
+
draft.panels.right.collapsed = isPanelCollapsed((_b = frontstageDef.rightPanel) === null || _b === void 0 ? void 0 : _b.panelState);
|
|
493
|
+
draft.panels.top.collapsed = isPanelCollapsed((_c = frontstageDef.topPanel) === null || _c === void 0 ? void 0 : _c.panelState);
|
|
494
|
+
draft.panels.bottom.collapsed = isPanelCollapsed((_d = frontstageDef.bottomPanel) === null || _d === void 0 ? void 0 : _d.panelState);
|
|
494
495
|
});
|
|
495
496
|
nineZone = addMissingWidgets(frontstageDef, nineZone);
|
|
496
497
|
const toolSettingsWidgetDef = frontstageDef.toolSettings;
|
|
@@ -660,6 +661,7 @@ function useSavedFrontstageState(frontstageDef) {
|
|
|
660
661
|
}, [uiStateStorage]);
|
|
661
662
|
React.useEffect(() => {
|
|
662
663
|
async function fetchFrontstageState() {
|
|
664
|
+
// Switching to previously initialized frontstage.
|
|
663
665
|
if (frontstageDef.nineZoneState) {
|
|
664
666
|
frontstageDef.nineZoneState = processPopoutWidgets(frontstageDef.nineZoneState);
|
|
665
667
|
return;
|
|
@@ -760,7 +762,7 @@ function debounce(func, duration) {
|
|
|
760
762
|
if (timeout === undefined)
|
|
761
763
|
return;
|
|
762
764
|
debounced.cancel();
|
|
763
|
-
handler
|
|
765
|
+
handler === null || handler === void 0 ? void 0 : handler();
|
|
764
766
|
};
|
|
765
767
|
return debounced;
|
|
766
768
|
}
|
|
@@ -783,15 +785,16 @@ function useFrontstageManager(frontstageDef, useToolAsToolSettingsLabel) {
|
|
|
783
785
|
const defaultLabel = React.useMemo(() => UiFramework_1.UiFramework.translate("widget.labels.toolSettings"), []);
|
|
784
786
|
React.useEffect(() => {
|
|
785
787
|
const updateLabel = () => {
|
|
788
|
+
var _a, _b;
|
|
786
789
|
const state = frontstageDef.nineZoneState;
|
|
787
790
|
if (!state)
|
|
788
791
|
return;
|
|
789
|
-
const toolSettingsTabId = state.toolSettings
|
|
792
|
+
const toolSettingsTabId = (_a = state.toolSettings) === null || _a === void 0 ? void 0 : _a.tabId;
|
|
790
793
|
if (!toolSettingsTabId)
|
|
791
794
|
return;
|
|
792
795
|
const toolId = UiFramework_1.UiFramework.frontstages.activeToolId;
|
|
793
796
|
const label = useToolAsToolSettingsLabel
|
|
794
|
-
? core_frontend_1.IModelApp.tools.find(toolId)
|
|
797
|
+
? ((_b = core_frontend_1.IModelApp.tools.find(toolId)) === null || _b === void 0 ? void 0 : _b.flyover) || defaultLabel
|
|
795
798
|
: defaultLabel;
|
|
796
799
|
frontstageDef.dispatch({
|
|
797
800
|
type: "WIDGET_TAB_SET_LABEL",
|
|
@@ -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 { Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport type { UiStateStorageResult } from \"@itwin/core-react\";\nimport { Rectangle, UiStateStorageStatus } from \"@itwin/core-react\";\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\nimport type {\n FloatingWidgetHomeState,\n LayoutStore,\n NineZoneLabels,\n NineZoneState,\n PanelSide,\n TabState,\n} from \"@itwin/appui-layout-react\";\nimport {\n addDockedToolSettings,\n addFloatingWidget,\n addPanelWidget,\n addRemovedTab,\n addTab,\n addTabToWidget,\n createLayoutStore,\n createNineZoneState,\n floatingWidgetBringToFront,\n FloatingWidgets,\n getTabLocation,\n getUniqueId,\n getWidgetPanelSectionId,\n isFloatingTabLocation,\n isPanelTabLocation,\n NineZone,\n NineZoneStateReducer,\n PreviewLayoutFeaturesProvider,\n PreviewMaximizedWidgetFeatureProvider,\n removeTab,\n useLayout,\n WidgetPanels,\n} from \"@itwin/appui-layout-react\";\nimport {\n type FrontstageDef,\n useActiveFrontstageDef,\n} from \"../frontstage/FrontstageDef\";\nimport { StagePanelState, toPanelSide } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type { WidgetDef } 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 {\n ToolSettingsContent,\n useShouldRenderDockedToolSettings,\n WidgetPanelsToolSettings,\n} 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\";\nimport { usePreviewFeatures } from \"../preview/PreviewFeatures\";\nimport classNames from \"classnames\";\nimport type { FrameworkState } from \"../redux/FrameworkState\";\n\nfunction WidgetPanelsFrontstageComponent() {\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\n const uiIsVisible = useUiVisibility();\n const previewFeatures = usePreviewFeatures();\n\n const previewContentAlwaysMaxSizeDockedClass =\n useShouldRenderDockedToolSettings() &&\n previewFeatures.contentAlwaysMaxSize &&\n \"preview-contentAlwaysMaxSize-toolSettingsDocked\";\n const previewContentAlwaysMaxSizeTopPanelClass =\n useLayout((state) => {\n return state.panels.top.widgets.length > 0;\n }) &&\n previewFeatures.contentAlwaysMaxSize &&\n \"preview-contentAlwaysMaxSize-topPanelActive\";\n\n return (\n <PreviewLayoutFeaturesProvider {...previewFeatures}>\n <PreviewMaximizedWidgetFeatureProvider\n enabled={previewFeatures.enableMaximizedFloatingWidget}\n >\n <WidgetPanelsToolSettings />\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\n <WidgetPanels\n className={classNames(\n \"uifw-widgetPanels\",\n previewContentAlwaysMaxSizeDockedClass,\n previewContentAlwaysMaxSizeTopPanelClass\n )}\n centerContent={<WidgetPanelsToolbars />}\n >\n <WidgetPanelsFrontstageContent />\n </WidgetPanels>\n <WidgetPanelsStatusBar />\n <FloatingWidgets />\n </ToolbarPopupAutoHideContext.Provider>\n </PreviewMaximizedWidgetFeatureProvider>\n </PreviewLayoutFeaturesProvider>\n );\n}\n\nconst widgetContent = <WidgetContent />;\nconst toolSettingsContent = <ToolSettingsContent />;\nconst widgetPanelsFrontstage = <WidgetPanelsFrontstageComponent />;\n\n/** @internal */\nexport function useLayoutStore(frontstageDef: FrontstageDef | undefined) {\n const layoutStore = React.useMemo(\n () => createLayoutStore(frontstageDef?.nineZoneState),\n [frontstageDef]\n );\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n unstable_batchedUpdates(() => {\n // https://github.com/pmndrs/zustand/blob/main/docs/guides/event-handler-in-pre-react-18.md\n layoutStore.setState(args.state || defaultNineZone);\n });\n }\n );\n }, [frontstageDef, layoutStore]);\n return layoutStore;\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 const state = frontstageDef.nineZoneState;\n if (!size || !state) return;\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size: {\n height: size.height,\n width: size.width,\n },\n });\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\n return React.useMemo(() => frontstageDef.dispatch, [frontstageDef]);\n}\n\n/** @internal */\nexport function WidgetPanelsFrontstage() {\n const frontstageDef = useActiveFrontstageDef();\n const layout = useLayoutStore(frontstageDef);\n\n React.useEffect(() => {\n const triggerWidowCloseProcessing = () => {\n frontstageDef && frontstageDef.setIsApplicationClosing(true);\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: FrameworkState = (state as any)[\n UiFramework.frameworkStateKey\n ];\n return !!frameworkState.configurableUiState.showWidgetIcon;\n });\n const autoCollapseUnpinnedPanels = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState: FrameworkState = (state as any)[\n UiFramework.frameworkStateKey\n ];\n return !!frameworkState.configurableUiState.autoCollapseUnpinnedPanels;\n }\n );\n const animateToolSettings = useSelector((state: FrameworkRootState) => {\n const frameworkState: FrameworkState = (state as any)[\n UiFramework.frameworkStateKey\n ];\n return !!frameworkState.configurableUiState.animateToolSettings;\n });\n const useToolAsToolSettingsLabel = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState: FrameworkState = (state as any)[\n UiFramework.frameworkStateKey\n ];\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\nfunction toTabArgs(widget: WidgetDef) {\n const label = getWidgetLabel(widget.label);\n const args = {\n allowedPanelTargets: widget.allowedPanelTargets?.map((location) =>\n toPanelSide(location)\n ),\n hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,\n canPopout: widget.canPopout,\n iconSpec: widget.iconSpec,\n isFloatingWidgetResizable: widget.isFloatingStateWindowResizable,\n label,\n preferredFloatingWidgetSize: widget.defaultFloatingSize,\n preferredPanelWidgetSize: widget.preferredPanelSize,\n };\n return args satisfies Pick<TabState, keyof typeof args>;\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 state = addTab(state, widget.id, toTabArgs(widget));\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 const side = toPanelSide(location);\n\n // Add missing widget tabs.\n for (const widgetDef of widgetDefs) {\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 ...toTabArgs(widgetDef),\n preferredFloatingWidgetSize,\n preferredPanelWidgetSize,\n userSized,\n });\n\n const savedTab = state.savedTabs.byId[widgetDef.id];\n if (savedTab) {\n state = addRemovedTab(state, widgetDef.id);\n } else if (\n widgetDef.isFloatingStateSupported &&\n widgetDef.defaultState === WidgetState.Floating\n ) {\n const floatingContainerId = widgetDef.floatingContainerId\n ? widgetDef.floatingContainerId\n : 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(state, floatingContainerId, [widgetDef.id], {\n bounds: containedBounds.toProps(),\n home,\n userSized,\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 if (widgetDef.defaultState === WidgetState.Hidden) {\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n }\n\n return state;\n}\n\nfunction processPopoutWidgets(state: NineZoneState): NineZoneState {\n // Electron reopens popout windows\n if (ProcessDetector.isElectronAppFrontend) {\n return state;\n }\n\n for (const popoutWidgetId of state.popoutWidgets.allIds) {\n const widget = state.widgets[popoutWidgetId];\n const id = widget.tabs[0];\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_FLOAT\",\n id,\n });\n }\n return state;\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 if (frontstageDef.toolSettings) {\n const newToolSettingsWidgets = determineNewWidgets(\n [frontstageDef.toolSettings],\n state\n );\n for (const newToolSettingsWidget of newToolSettingsWidgets) {\n state = addTab(\n state,\n newToolSettingsWidget.id,\n toTabArgs(newToolSettingsWidget)\n );\n }\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 = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n }\n\n return state;\n}\n\n/** Removes NineZoneState widgets that are missing in frontstageDef.\n * @internal\n */\nfunction removeMissingWidgets(\n frontstageDef: FrontstageDef,\n state: NineZoneState\n): NineZoneState {\n const toolSettingsTabId = state.toolSettings?.tabId;\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 = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: tab.id,\n });\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\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 side = 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[side];\n panel.minSize = panelDef?.initialConfig?.minSize ?? panel.minSize;\n panel.pinned = panelDef?.pinned ?? panel.pinned;\n panel.resizable = panelDef?.resizable ?? panel.resizable;\n panel.maxSize = panelDef?.initialConfig?.maxSize ?? panel.maxSize;\n });\n if (panelDef?.size !== undefined) {\n state = NineZoneStateReducer(state, {\n type: \"PANEL_SET_SIZE\",\n side,\n size: panelDef.size,\n });\n }\n\n return state;\n}\n\n/** @internal */\nexport const stateVersion = 16; // 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, (draft) => {\n for (const [, panel] of Object.entries(draft.panels)) {\n const expanded = panel.widgets.find(\n (widgetId) => draft.widgets[widgetId].minimized === false\n );\n const firstWidget =\n panel.widgets.length > 0 ? draft.widgets[panel.widgets[0]] : undefined;\n // istanbul ignore next\n if (!expanded && firstWidget) {\n firstWidget.minimized = false;\n }\n }\n draft.panels.left.collapsed = isPanelCollapsed(\n frontstageDef.leftPanel?.panelState\n );\n draft.panels.right.collapsed = isPanelCollapsed(\n frontstageDef.rightPanel?.panelState\n );\n draft.panels.top.collapsed = isPanelCollapsed(\n frontstageDef.topPanel?.panelState\n );\n draft.panels.bottom.collapsed = isPanelCollapsed(\n frontstageDef.bottomPanel?.panelState\n );\n });\n\n nineZone = addMissingWidgets(frontstageDef, nineZone);\n\n const toolSettingsWidgetDef = frontstageDef.toolSettings;\n if (toolSettingsWidgetDef) {\n const toolSettingsTabId = toolSettingsWidgetDef.id;\n nineZone = addDockedToolSettings(nineZone, toolSettingsTabId);\n }\n\n nineZone = hideWidgets(nineZone, frontstageDef);\n nineZone = processPopoutWidgets(nineZone);\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 state: NineZoneState = {\n ...saved,\n 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 state = addTab(state, 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 state = removeTab(state, tab.id);\n continue;\n }\n state = produce(state, (draft) => {\n draft.tabs[tab.id] = {\n ...tab,\n ...toTabArgs(widgetDef),\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n preferredPanelWidgetSize: tab.preferredPanelWidgetSize,\n };\n });\n }\n state = produce(state, (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 state = NineZoneStateReducer(state, {\n type: \"RESIZE\",\n size: {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n },\n });\n }\n\n state = addMissingWidgets(frontstageDef, state);\n state = hideWidgets(state, frontstageDef);\n state = processPopoutWidgets(state);\n return state;\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 draft.tabs[tab.id] = {\n id: tab.id,\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n userSized: tab.userSized,\n };\n }\n });\n return packed;\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 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// 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\ninterface SavedNineZoneState extends Omit<NineZoneState, \"tabs\"> {\n readonly tabs: SavedTabsState;\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 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 );\n return;\n }\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 frontstageDef.nineZoneState = restoreNineZoneState(\n frontstageDef,\n setting.nineZone\n );\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 pendingSave = React.useRef(() => {});\n const saveSetting = React.useMemo(() => {\n const debounced = debounce(\n async (frontstage: FrontstageDef, state: NineZoneState) => {\n const id = frontstage.id;\n const setting: WidgetPanelsFrontstageState = {\n id,\n version: frontstage.version,\n stateVersion,\n nineZone: packNineZoneState(state),\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 pendingSave.current = debounced.immediate;\n return save;\n }, [uiSettingsStorage]);\n React.useEffect(() => {\n return () => {\n pendingSave.current();\n };\n }, [frontstageDef]);\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 let handler: () => any | undefined;\n const debounced = (...args: Parameters<T>) => {\n handler = () => {\n timeout = undefined;\n return func(...args);\n };\n window.clearTimeout(timeout);\n timeout = window.setTimeout(handler, duration);\n };\n /**\n * Will cancel the timeout without running the function.\n */\n debounced.cancel = () => {\n window.clearTimeout(timeout);\n timeout = undefined;\n };\n /**\n * If not already ran, will run the function immediately and remove the timeout.\n */\n debounced.immediate = () => {\n if (timeout === undefined) return;\n debounced.cancel();\n handler?.();\n };\n return debounced;\n}\n\n/** @internal */\nexport function useFrontstageManager(\n frontstageDef: FrontstageDef,\n useToolAsToolSettingsLabel?: boolean\n) {\n const uiSettingsStorage = useUiStateStorageHandler();\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n (args) => {\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 );\n }, [uiSettingsStorage, frontstageDef]);\n const defaultLabel = React.useMemo(\n () => UiFramework.translate(\"widget.labels.toolSettings\"),\n []\n );\n React.useEffect(() => {\n const updateLabel = () => {\n const state = frontstageDef.nineZoneState;\n if (!state) return;\n const toolSettingsTabId = state.toolSettings?.tabId;\n if (!toolSettingsTabId) return;\n\n const toolId = UiFramework.frontstages.activeToolId;\n const label = useToolAsToolSettingsLabel\n ? IModelApp.tools.find(toolId)?.flyover || defaultLabel\n : defaultLabel;\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SET_LABEL\",\n id: toolSettingsTabId,\n label,\n });\n };\n // Whenever the frontstageDef or the useTool... changes, keep the label up to date.\n updateLabel();\n\n const removeListenerFuncs: (() => void)[] = [];\n // If useTool... is true, listen for events to keep up the label up to date.\n if (useToolAsToolSettingsLabel) {\n removeListenerFuncs.push(\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 }\n return () => {\n removeListenerFuncs.forEach((removeListener) => removeListener());\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 let state = def.nineZoneState;\n if (!state) return;\n state = addMissingWidgets(def, state);\n state = removeMissingWidgets(def, state);\n def.nineZoneState = state;\n };\n\n React.useEffect(() => {\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 }, [frontstageDef]);\n React.useEffect(() => {\n return UiItemsManager.onUiProviderRegisteredEvent.addListener(() => {\n refreshNineZoneState(frontstageDef);\n });\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 { Logger, ProcessDetector } from \"@itwin/core-bentley\";\nimport type { UiStateStorageResult } from \"@itwin/core-react\";\nimport { Rectangle, UiStateStorageStatus } from \"@itwin/core-react\";\nimport { ToolbarPopupAutoHideContext } from \"@itwin/components-react\";\nimport type {\n LayoutStore,\n NineZoneLabels,\n NineZoneState,\n PanelSide,\n TabState,\n} from \"@itwin/appui-layout-react\";\nimport {\n addDockedToolSettings,\n addFloatingWidget,\n addPanelWidget,\n addRemovedTab,\n addTab,\n addTabToWidget,\n createLayoutStore,\n createNineZoneState,\n floatingWidgetBringToFront,\n FloatingWidgets,\n getTabLocation,\n getUniqueId,\n getWidgetPanelSectionId,\n isFloatingTabLocation,\n isPanelTabLocation,\n NineZone,\n NineZoneStateReducer,\n PreviewLayoutFeaturesProvider,\n PreviewMaximizedWidgetFeatureProvider,\n removeTab,\n useLayout,\n WidgetPanels,\n} from \"@itwin/appui-layout-react\";\nimport {\n type FrontstageDef,\n useActiveFrontstageDef,\n} from \"../frontstage/FrontstageDef\";\nimport { StagePanelState, toPanelSide } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport { useUiStateStorageHandler } from \"../uistate/useUiStateStorage\";\nimport type { WidgetDef } 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 {\n ToolSettingsContent,\n useShouldRenderDockedToolSettings,\n WidgetPanelsToolSettings,\n} 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\";\nimport { usePreviewFeatures } from \"../preview/PreviewFeatures\";\nimport classNames from \"classnames\";\nimport type { FrameworkState } from \"../redux/FrameworkState\";\n\nfunction WidgetPanelsFrontstageComponent() {\n const activeModalFrontstageInfo = useActiveModalFrontstageInfo();\n const uiIsVisible = useUiVisibility();\n const previewFeatures = usePreviewFeatures();\n\n const previewContentAlwaysMaxSizeDockedClass =\n useShouldRenderDockedToolSettings() &&\n previewFeatures.contentAlwaysMaxSize &&\n \"preview-contentAlwaysMaxSize-toolSettingsDocked\";\n const previewContentAlwaysMaxSizeTopPanelClass =\n useLayout((state) => {\n return state.panels.top.widgets.length > 0;\n }) &&\n previewFeatures.contentAlwaysMaxSize &&\n \"preview-contentAlwaysMaxSize-topPanelActive\";\n\n return (\n <PreviewLayoutFeaturesProvider {...previewFeatures}>\n <PreviewMaximizedWidgetFeatureProvider\n enabled={previewFeatures.enableMaximizedFloatingWidget}\n >\n <WidgetPanelsToolSettings />\n <ToolbarPopupAutoHideContext.Provider value={!uiIsVisible}>\n <ModalFrontstageComposer stageInfo={activeModalFrontstageInfo} />\n <WidgetPanels\n className={classNames(\n \"uifw-widgetPanels\",\n previewContentAlwaysMaxSizeDockedClass,\n previewContentAlwaysMaxSizeTopPanelClass\n )}\n centerContent={<WidgetPanelsToolbars />}\n >\n <WidgetPanelsFrontstageContent />\n </WidgetPanels>\n <WidgetPanelsStatusBar />\n <FloatingWidgets />\n </ToolbarPopupAutoHideContext.Provider>\n </PreviewMaximizedWidgetFeatureProvider>\n </PreviewLayoutFeaturesProvider>\n );\n}\n\nconst widgetContent = <WidgetContent />;\nconst toolSettingsContent = <ToolSettingsContent />;\nconst widgetPanelsFrontstage = <WidgetPanelsFrontstageComponent />;\n\n/** @internal */\nexport function useLayoutStore(frontstageDef: FrontstageDef | undefined) {\n const layoutStore = React.useMemo(\n () => createLayoutStore(frontstageDef?.nineZoneState),\n [frontstageDef]\n );\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n unstable_batchedUpdates(() => {\n // https://github.com/pmndrs/zustand/blob/main/docs/guides/event-handler-in-pre-react-18.md\n layoutStore.setState(args.state || defaultNineZone);\n });\n }\n );\n }, [frontstageDef, layoutStore]);\n return layoutStore;\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 const state = frontstageDef.nineZoneState;\n if (!size || !state) return;\n frontstageDef.dispatch({\n type: \"RESIZE\",\n size: {\n height: size.height,\n width: size.width,\n },\n });\n }, [frontstageDef]);\n}\n\n/** @internal */\nexport function useNineZoneDispatch(frontstageDef: FrontstageDef) {\n return React.useMemo(() => frontstageDef.dispatch, [frontstageDef]);\n}\n\n/** @internal */\nexport function WidgetPanelsFrontstage() {\n const frontstageDef = useActiveFrontstageDef();\n const layout = useLayoutStore(frontstageDef);\n\n React.useEffect(() => {\n const triggerWidowCloseProcessing = () => {\n frontstageDef && frontstageDef.setIsApplicationClosing(true);\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: FrameworkState = (state as any)[\n UiFramework.frameworkStateKey\n ];\n return !!frameworkState.configurableUiState.showWidgetIcon;\n });\n const autoCollapseUnpinnedPanels = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState: FrameworkState = (state as any)[\n UiFramework.frameworkStateKey\n ];\n return !!frameworkState.configurableUiState.autoCollapseUnpinnedPanels;\n }\n );\n const animateToolSettings = useSelector((state: FrameworkRootState) => {\n const frameworkState: FrameworkState = (state as any)[\n UiFramework.frameworkStateKey\n ];\n return !!frameworkState.configurableUiState.animateToolSettings;\n });\n const useToolAsToolSettingsLabel = useSelector(\n (state: FrameworkRootState) => {\n const frameworkState: FrameworkState = (state as any)[\n UiFramework.frameworkStateKey\n ];\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\nfunction toTabArgs(widget: WidgetDef) {\n const label = getWidgetLabel(widget.label);\n const args = {\n allowedPanelTargets: widget.allowedPanelTargets?.map((location) =>\n toPanelSide(location)\n ),\n hideWithUiWhenFloating: !!widget.hideWithUiWhenFloating,\n canPopout: widget.canPopout,\n iconSpec: widget.iconSpec,\n isFloatingWidgetResizable: widget.isFloatingStateWindowResizable,\n label,\n preferredFloatingWidgetSize: widget.defaultFloatingSize,\n preferredPanelWidgetSize: widget.preferredPanelSize,\n };\n return args satisfies Pick<TabState, keyof typeof args>;\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 state = addTab(state, widget.id, toTabArgs(widget));\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 const side = toPanelSide(location);\n\n // Add missing widget tabs.\n for (const widgetDef of widgetDefs) {\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 ...toTabArgs(widgetDef),\n preferredFloatingWidgetSize,\n preferredPanelWidgetSize,\n userSized,\n });\n\n const savedTab = state.savedTabs.byId[widgetDef.id];\n if (savedTab) {\n state = addRemovedTab(state, widgetDef.id);\n } else if (\n widgetDef.isFloatingStateSupported &&\n widgetDef.defaultState === WidgetState.Floating\n ) {\n const floatingContainerId = widgetDef.floatingContainerId\n ? widgetDef.floatingContainerId\n : getUniqueId();\n const widgetContainerId = getWidgetId(location, section);\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(state, floatingContainerId, [widgetDef.id], {\n bounds: containedBounds.toProps(),\n home: {\n widgetId: widgetContainerId,\n side,\n widgetIndex: 0,\n },\n userSized,\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 if (widgetDef.defaultState === WidgetState.Hidden) {\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n }\n\n return state;\n}\n\nfunction processPopoutWidgets(state: NineZoneState): NineZoneState {\n // Electron reopens popout windows w/o user interaction.\n if (ProcessDetector.isElectronAppFrontend) {\n return state;\n }\n\n // Restore popout widgets to main window.\n for (const id of state.popoutWidgets.allIds) {\n state = NineZoneStateReducer(state, {\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id,\n });\n }\n return state;\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 if (frontstageDef.toolSettings) {\n const newToolSettingsWidgets = determineNewWidgets(\n [frontstageDef.toolSettings],\n state\n );\n for (const newToolSettingsWidget of newToolSettingsWidgets) {\n state = addTab(\n state,\n newToolSettingsWidget.id,\n toTabArgs(newToolSettingsWidget)\n );\n }\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 = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: widgetDef.id,\n });\n }\n if (widgetDef.defaultState === WidgetState.Unloaded) {\n state = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_UNLOAD\",\n id: widgetDef.id,\n });\n }\n }\n\n return state;\n}\n\n/** Removes NineZoneState widgets that are missing in frontstageDef.\n * @internal\n */\nfunction removeMissingWidgets(\n frontstageDef: FrontstageDef,\n state: NineZoneState\n): NineZoneState {\n const toolSettingsTabId = state.toolSettings?.tabId;\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 = NineZoneStateReducer(state, {\n type: \"WIDGET_TAB_HIDE\",\n id: tab.id,\n });\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\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 side = 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[side];\n panel.minSize = panelDef?.initialConfig?.minSize ?? panel.minSize;\n panel.pinned = panelDef?.pinned ?? panel.pinned;\n panel.resizable = panelDef?.resizable ?? panel.resizable;\n panel.maxSize = panelDef?.initialConfig?.maxSize ?? panel.maxSize;\n });\n if (panelDef?.size !== undefined) {\n state = NineZoneStateReducer(state, {\n type: \"PANEL_SET_SIZE\",\n side,\n size: panelDef.size,\n });\n }\n\n return state;\n}\n\n/** @internal */\nexport const stateVersion = 17; // 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, (draft) => {\n for (const [, panel] of Object.entries(draft.panels)) {\n const expanded = panel.widgets.find(\n (widgetId) => draft.widgets[widgetId].minimized === false\n );\n const firstWidget =\n panel.widgets.length > 0 ? draft.widgets[panel.widgets[0]] : undefined;\n // istanbul ignore next\n if (!expanded && firstWidget) {\n firstWidget.minimized = false;\n }\n }\n draft.panels.left.collapsed = isPanelCollapsed(\n frontstageDef.leftPanel?.panelState\n );\n draft.panels.right.collapsed = isPanelCollapsed(\n frontstageDef.rightPanel?.panelState\n );\n draft.panels.top.collapsed = isPanelCollapsed(\n frontstageDef.topPanel?.panelState\n );\n draft.panels.bottom.collapsed = isPanelCollapsed(\n frontstageDef.bottomPanel?.panelState\n );\n });\n\n nineZone = addMissingWidgets(frontstageDef, nineZone);\n\n const toolSettingsWidgetDef = frontstageDef.toolSettings;\n if (toolSettingsWidgetDef) {\n const toolSettingsTabId = toolSettingsWidgetDef.id;\n nineZone = addDockedToolSettings(nineZone, toolSettingsTabId);\n }\n\n nineZone = hideWidgets(nineZone, frontstageDef);\n nineZone = processPopoutWidgets(nineZone);\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 state: NineZoneState = {\n ...saved,\n 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 state = addTab(state, 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 state = removeTab(state, tab.id);\n continue;\n }\n state = produce(state, (draft) => {\n draft.tabs[tab.id] = {\n ...tab,\n ...toTabArgs(widgetDef),\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n preferredPanelWidgetSize: tab.preferredPanelWidgetSize,\n };\n });\n }\n state = produce(state, (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 state = NineZoneStateReducer(state, {\n type: \"RESIZE\",\n size: {\n height: InternalFrontstageManager.nineZoneSize.height,\n width: InternalFrontstageManager.nineZoneSize.width,\n },\n });\n }\n\n state = addMissingWidgets(frontstageDef, state);\n state = hideWidgets(state, frontstageDef);\n state = processPopoutWidgets(state);\n return state;\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 draft.tabs[tab.id] = {\n id: tab.id,\n preferredFloatingWidgetSize: tab.preferredFloatingWidgetSize,\n userSized: tab.userSized,\n };\n }\n });\n return packed;\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 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// 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\ninterface SavedNineZoneState extends Omit<NineZoneState, \"tabs\"> {\n readonly tabs: SavedTabsState;\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 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 // Switching to previously initialized frontstage.\n if (frontstageDef.nineZoneState) {\n frontstageDef.nineZoneState = processPopoutWidgets(\n frontstageDef.nineZoneState\n );\n return;\n }\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 frontstageDef.nineZoneState = restoreNineZoneState(\n frontstageDef,\n setting.nineZone\n );\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 pendingSave = React.useRef(() => {});\n const saveSetting = React.useMemo(() => {\n const debounced = debounce(\n async (frontstage: FrontstageDef, state: NineZoneState) => {\n const id = frontstage.id;\n const setting: WidgetPanelsFrontstageState = {\n id,\n version: frontstage.version,\n stateVersion,\n nineZone: packNineZoneState(state),\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 pendingSave.current = debounced.immediate;\n return save;\n }, [uiSettingsStorage]);\n React.useEffect(() => {\n return () => {\n pendingSave.current();\n };\n }, [frontstageDef]);\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 let handler: () => any | undefined;\n const debounced = (...args: Parameters<T>) => {\n handler = () => {\n timeout = undefined;\n return func(...args);\n };\n window.clearTimeout(timeout);\n timeout = window.setTimeout(handler, duration);\n };\n /**\n * Will cancel the timeout without running the function.\n */\n debounced.cancel = () => {\n window.clearTimeout(timeout);\n timeout = undefined;\n };\n /**\n * If not already ran, will run the function immediately and remove the timeout.\n */\n debounced.immediate = () => {\n if (timeout === undefined) return;\n debounced.cancel();\n handler?.();\n };\n return debounced;\n}\n\n/** @internal */\nexport function useFrontstageManager(\n frontstageDef: FrontstageDef,\n useToolAsToolSettingsLabel?: boolean\n) {\n const uiSettingsStorage = useUiStateStorageHandler();\n React.useEffect(() => {\n return InternalFrontstageManager.onFrontstageRestoreLayoutEvent.addListener(\n (args) => {\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 );\n }, [uiSettingsStorage, frontstageDef]);\n const defaultLabel = React.useMemo(\n () => UiFramework.translate(\"widget.labels.toolSettings\"),\n []\n );\n React.useEffect(() => {\n const updateLabel = () => {\n const state = frontstageDef.nineZoneState;\n if (!state) return;\n const toolSettingsTabId = state.toolSettings?.tabId;\n if (!toolSettingsTabId) return;\n\n const toolId = UiFramework.frontstages.activeToolId;\n const label = useToolAsToolSettingsLabel\n ? IModelApp.tools.find(toolId)?.flyover || defaultLabel\n : defaultLabel;\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SET_LABEL\",\n id: toolSettingsTabId,\n label,\n });\n };\n // Whenever the frontstageDef or the useTool... changes, keep the label up to date.\n updateLabel();\n\n const removeListenerFuncs: (() => void)[] = [];\n // If useTool... is true, listen for events to keep up the label up to date.\n if (useToolAsToolSettingsLabel) {\n removeListenerFuncs.push(\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 }\n return () => {\n removeListenerFuncs.forEach((removeListener) => removeListener());\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 let state = def.nineZoneState;\n if (!state) return;\n state = addMissingWidgets(def, state);\n state = removeMissingWidgets(def, state);\n def.nineZoneState = state;\n };\n\n React.useEffect(() => {\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 }, [frontstageDef]);\n React.useEffect(() => {\n return UiItemsManager.onUiProviderRegisteredEvent.addListener(() => {\n refreshNineZoneState(frontstageDef);\n });\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
|
|
20
|
+
const widgetDef = frontstageDef === null || frontstageDef === void 0 ? void 0 : 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,
|
|
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"]}
|
|
@@ -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
|
|
20
|
+
const badgeType = widgetDef === null || widgetDef === void 0 ? void 0 : 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 });
|