@itwin/appui-react 4.5.1 → 4.6.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 +20 -1
- package/lib/cjs/appui-react/accudraw/MenuButton.d.ts +2 -2
- package/lib/cjs/appui-react/accudraw/MenuButton.d.ts.map +1 -1
- package/lib/cjs/appui-react/accudraw/MenuButton.js.map +1 -1
- package/lib/cjs/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
- package/lib/cjs/appui-react/backstage/BackstageComposer.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/CopyStyles.d.ts.map +1 -1
- package/lib/cjs/appui-react/childwindow/CopyStyles.js +3 -1
- package/lib/cjs/appui-react/childwindow/CopyStyles.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +2 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/cursor/CursorInformation.d.ts +6 -6
- package/lib/cjs/appui-react/cursor/CursorInformation.d.ts.map +1 -1
- package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.d.ts +4 -4
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.d.ts.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +5 -5
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.d.ts +2 -2
- package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.d.ts.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
- package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts +1 -2
- package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
- package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +22 -26
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +185 -254
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts +1 -7
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +0 -6
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
- package/lib/cjs/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
- package/lib/cjs/appui-react/hooks/useActiveViewport.js.map +1 -1
- package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.d.ts.map +1 -1
- package/lib/cjs/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.d.ts +0 -1
- package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.js +1 -2
- package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/cjs/appui-react/messages/Pointer.d.ts +1 -2
- package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/Pointer.js +1 -1
- package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
- package/lib/cjs/appui-react/popup/PositionPopup.d.ts +2 -2
- package/lib/cjs/appui-react/popup/PositionPopup.d.ts.map +1 -1
- package/lib/cjs/appui-react/popup/PositionPopup.js.map +1 -1
- package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts +16 -20
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +80 -115
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.js +1 -2
- package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.d.ts +36 -0
- package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.d.ts.map +1 -0
- package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.js +134 -0
- package/lib/cjs/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -0
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts +1 -1
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
- package/lib/cjs/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/cjs/appui-react/syncui/UiSyncEvent.d.ts +16 -0
- package/lib/cjs/appui-react/syncui/UiSyncEvent.d.ts.map +1 -0
- package/lib/cjs/appui-react/syncui/UiSyncEvent.js +18 -0
- package/lib/cjs/appui-react/syncui/UiSyncEvent.js.map +1 -0
- package/lib/cjs/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
- package/lib/cjs/appui-react/uistate/AppUiSettings.js.map +1 -1
- package/lib/cjs/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
- package/lib/cjs/appui-react/uistate/useUiStateStorage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +7 -29
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +101 -434
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js +16 -3
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/cjs/appui-react/widgets/Widget.d.ts +10 -4
- 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 +9 -29
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +89 -46
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/cjs/appui-react.d.ts +1 -0
- package/lib/cjs/appui-react.d.ts.map +1 -1
- package/lib/cjs/appui-react.js +1 -0
- package/lib/cjs/appui-react.js.map +1 -1
- package/lib/esm/appui-react/accudraw/MenuButton.d.ts +2 -2
- package/lib/esm/appui-react/accudraw/MenuButton.d.ts.map +1 -1
- package/lib/esm/appui-react/accudraw/MenuButton.js.map +1 -1
- package/lib/esm/appui-react/backstage/BackstageComposer.d.ts.map +1 -1
- package/lib/esm/appui-react/backstage/BackstageComposer.js.map +1 -1
- package/lib/esm/appui-react/childwindow/CopyStyles.d.ts.map +1 -1
- package/lib/esm/appui-react/childwindow/CopyStyles.js +3 -1
- package/lib/esm/appui-react/childwindow/CopyStyles.js.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +2 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/cursor/CursorInformation.d.ts +6 -6
- package/lib/esm/appui-react/cursor/CursorInformation.d.ts.map +1 -1
- package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.d.ts +4 -4
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.d.ts.map +1 -1
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +5 -5
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.d.ts +2 -2
- package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.d.ts.map +1 -1
- package/lib/esm/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
- package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/esm/appui-react/feedback/ElementTooltip.d.ts +1 -2
- package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
- package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +22 -26
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +189 -258
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts +1 -7
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +0 -6
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
- package/lib/esm/appui-react/hooks/useActiveIModelConnection.d.ts.map +1 -1
- package/lib/esm/appui-react/hooks/useActiveIModelConnection.js.map +1 -1
- package/lib/esm/appui-react/hooks/useActiveViewport.d.ts.map +1 -1
- package/lib/esm/appui-react/hooks/useActiveViewport.js.map +1 -1
- package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.d.ts.map +1 -1
- package/lib/esm/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.d.ts +0 -1
- package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.js +1 -2
- package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/esm/appui-react/messages/Pointer.d.ts +1 -2
- package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/Pointer.js +1 -1
- package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
- package/lib/esm/appui-react/popup/PositionPopup.d.ts +2 -2
- package/lib/esm/appui-react/popup/PositionPopup.d.ts.map +1 -1
- package/lib/esm/appui-react/popup/PositionPopup.js.map +1 -1
- package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts +16 -20
- package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js +78 -114
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.js +1 -2
- package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.d.ts +36 -0
- package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.d.ts.map +1 -0
- package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.js +130 -0
- package/lib/esm/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -0
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts +1 -1
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js +2 -2
- package/lib/esm/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/esm/appui-react/syncui/UiSyncEvent.d.ts +16 -0
- package/lib/esm/appui-react/syncui/UiSyncEvent.d.ts.map +1 -0
- package/lib/esm/appui-react/syncui/UiSyncEvent.js +14 -0
- package/lib/esm/appui-react/syncui/UiSyncEvent.js.map +1 -0
- package/lib/esm/appui-react/uistate/AppUiSettings.d.ts.map +1 -1
- package/lib/esm/appui-react/uistate/AppUiSettings.js.map +1 -1
- package/lib/esm/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
- package/lib/esm/appui-react/uistate/useUiStateStorage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +7 -29
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +104 -433
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.js +16 -3
- package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/esm/appui-react/widgets/Widget.d.ts +10 -4
- 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 +9 -29
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +89 -46
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react.d.ts +1 -0
- package/lib/esm/appui-react.d.ts.map +1 -1
- package/lib/esm/appui-react.js +1 -0
- package/lib/esm/appui-react.js.map +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrontstageDef.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\n// cSpell:ignore popout\n\nimport * as React from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { PointProps } from \"@itwin/appui-abstract\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport type { RectangleProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle } from \"@itwin/core-react\";\nimport type { NineZoneState, PanelSide } from \"@itwin/appui-layout-react\";\nimport {\n dockWidgetContainer,\n floatWidget,\n getTabLocation,\n getWidgetLocation,\n isFloatingTabLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n isPopoutWidgetLocation,\n panelSides,\n popoutWidgetToChildWindow,\n} from \"@itwin/appui-layout-react\";\nimport type { ContentControl } from \"../content/ContentControl\";\nimport type { ContentGroup } from \"../content/ContentGroup\";\nimport { ContentGroupProvider } from \"../content/ContentGroup\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout\";\nimport {\n StagePanelDef,\n StagePanelState,\n toPanelSide,\n} from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { WidgetControl } from \"../widgets/WidgetControl\";\nimport { WidgetDef, WidgetType } from \"../widgets/WidgetDef\";\nimport type { FrontstageProvider } from \"./FrontstageProvider\";\nimport { TimeTracker } from \"../configurableui/TimeTracker\";\nimport type { ChildWindowLocationProps } from \"../framework/FrameworkChildWindows\";\nimport { PopoutWidget } from \"../childwindow/PopoutWidget\";\nimport type { SavedWidgets } from \"../widget-panels/Frontstage\";\nimport { FrameworkStateReducer } from \"../widget-panels/Frontstage\";\nimport { assert, BentleyStatus, ProcessDetector } from \"@itwin/core-bentley\";\nimport type { FrontstageConfig } from \"./FrontstageConfig\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig\";\nimport type { WidgetConfig } from \"../widgets/WidgetConfig\";\nimport { StageUsage } from \"./StageUsage\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { WidgetState } from \"../widgets/WidgetState\";\nimport { InternalFrontstageManager } from \"./InternalFrontstageManager\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager\";\n\n/** @internal */\nexport interface FrontstageEventArgs {\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport interface FrontstageNineZoneStateChangedEventArgs\n extends FrontstageEventArgs {\n state: NineZoneState | undefined;\n}\n\n/** FrontstageDef class provides an API for a Frontstage.\n * @public\n */\nexport class FrontstageDef {\n private _id: string = \"\";\n private _initialConfig?: FrontstageConfig;\n private _isStageClosing = false;\n private _isReady = false;\n private _isApplicationClosing = false;\n private _usage?: string;\n private _version: number = 0;\n private _toolSettings?: WidgetDef;\n private _statusBar?: WidgetDef;\n private _contentManipulation?: WidgetDef;\n private _viewNavigation?: WidgetDef;\n private _topPanel?: StagePanelDef;\n private _leftPanel?: StagePanelDef;\n private _rightPanel?: StagePanelDef;\n private _bottomPanel?: StagePanelDef;\n private _contentLayoutDef?: ContentLayoutDef;\n private _contentGroup?: ContentGroup;\n private _frontstageProvider?: FrontstageProvider;\n private _timeTracker = new TimeTracker();\n private _nineZoneState?: NineZoneState;\n private _contentGroupProvider?: ContentGroupProvider;\n private _floatingContentControls?: ContentControl[];\n private _savedWidgetDefs?: SavedWidgets;\n private _toolAdminDefaultToolId?: string;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n public get floatingContentControls() {\n return this._floatingContentControls;\n }\n\n public get toolSettings(): WidgetDef | undefined {\n return this._toolSettings;\n }\n public get statusBar(): WidgetDef | undefined {\n return this._statusBar;\n }\n public get contentManipulation(): WidgetDef | undefined {\n return this._contentManipulation;\n }\n public get viewNavigation(): WidgetDef | undefined {\n return this._viewNavigation;\n }\n\n public get topPanel(): StagePanelDef | undefined {\n return this._topPanel;\n }\n public get leftPanel(): StagePanelDef | undefined {\n return this._leftPanel;\n }\n public get rightPanel(): StagePanelDef | undefined {\n return this._rightPanel;\n }\n public get bottomPanel(): StagePanelDef | undefined {\n return this._bottomPanel;\n }\n\n public get contentLayoutDef(): ContentLayoutDef | undefined {\n return this._contentLayoutDef;\n }\n public get contentGroup(): ContentGroup | undefined {\n return this._contentGroup;\n }\n public get frontstageProvider(): FrontstageProvider | undefined {\n return this._frontstageProvider;\n }\n\n private toStagePanelLocation(side: PanelSide): StagePanelLocation {\n switch (side) {\n case \"bottom\":\n return StagePanelLocation.Bottom;\n case \"left\":\n return StagePanelLocation.Left;\n case \"right\":\n return StagePanelLocation.Right;\n case \"top\":\n return StagePanelLocation.Top;\n }\n }\n\n private populateStateMaps(\n nineZone: NineZoneState,\n panelMap: Map<StagePanelDef, StagePanelState>,\n widgetMap: Map<WidgetDef, WidgetState>\n ) {\n for (const panelSide of panelSides) {\n const panel = nineZone.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (panelDef) {\n const panelState = panel.collapsed\n ? StagePanelState.Minimized\n : StagePanelState.Open;\n panelMap.set(panelDef, panelState);\n }\n for (const widgetId of panel.widgets) {\n const widget = nineZone.widgets[widgetId];\n // istanbul ignore else\n if (widget) {\n for (const tabId of widget.tabs) {\n const widgetDef = this.findWidgetDef(tabId);\n if (widgetDef) {\n let widgetState = WidgetState.Open;\n if (widget.minimized || tabId !== widget.activeTabId)\n widgetState = WidgetState.Closed;\n widgetMap.set(widgetDef, widgetState);\n }\n }\n }\n }\n }\n // istanbul ignore next\n for (const widgetId of nineZone.floatingWidgets.allIds) {\n const widget = nineZone.widgets[widgetId];\n if (widget) {\n for (const tabId of widget.tabs) {\n const widgetDef = this.findWidgetDef(tabId);\n if (widgetDef) {\n let widgetState = WidgetState.Open;\n if (widget.minimized || tabId !== widget.activeTabId)\n widgetState = WidgetState.Closed;\n widgetMap.set(widgetDef, widgetState);\n }\n }\n }\n }\n\n const toolSettingsDef = this.toolSettings;\n if (toolSettingsDef) {\n if (!nineZone.toolSettings) {\n widgetMap.set(toolSettingsDef, WidgetState.Hidden);\n } else if (nineZone.toolSettings.type === \"docked\") {\n widgetMap.set(toolSettingsDef, WidgetState.Open);\n }\n }\n }\n\n private triggerStateChangeEventForWidgetsAndPanels(\n state: NineZoneState | undefined\n ) {\n // istanbul ignore else\n if (!(this._isStageClosing || this._isApplicationClosing)) {\n if (state) {\n const originalPanelStateMap = new Map<StagePanelDef, StagePanelState>();\n const originalWidgetStateMap = new Map<WidgetDef, WidgetState>();\n const newPanelStateMap = new Map<StagePanelDef, StagePanelState>();\n const newWidgetStateMap = new Map<WidgetDef, WidgetState>();\n this._nineZoneState &&\n this.populateStateMaps(\n this._nineZoneState,\n originalPanelStateMap,\n originalWidgetStateMap\n );\n this.populateStateMaps(state, newPanelStateMap, newWidgetStateMap);\n\n // set internal state value before triggering events\n this._nineZoneState = state;\n\n // now walk and trigger set state events\n newWidgetStateMap.forEach((stateValue, widgetDef) => {\n const originalState = originalWidgetStateMap.get(widgetDef);\n if (originalState !== stateValue) {\n UiFramework.frontstages.onWidgetStateChangedEvent.emit({\n widgetDef,\n widgetState: stateValue,\n });\n widgetDef.onWidgetStateChanged();\n }\n });\n newPanelStateMap.forEach((stateValue, panelDef) => {\n const originalState = originalPanelStateMap.get(panelDef);\n if (originalState !== stateValue) {\n UiFramework.frontstages.onPanelStateChangedEvent.emit({\n panelDef,\n panelState: stateValue,\n });\n }\n });\n\n for (const panelSide of panelSides) {\n const panel = state.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (panelDef) {\n panelDef.size = panel.size;\n panelDef.pinned = panel.pinned;\n }\n }\n } else {\n this._nineZoneState = state;\n }\n }\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n if (!this._nineZoneState) {\n this._nineZoneState = state;\n } else {\n this.triggerStateChangeEventForWidgetsAndPanels(state);\n }\n\n // istanbul ignore next - don't trigger any side effects until stage \"isReady\"\n if (!(this._isStageClosing || this._isApplicationClosing) || this.isReady) {\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n }\n\n /** @internal */\n public get savedWidgetDefs() {\n return this._savedWidgetDefs;\n }\n public set savedWidgetDefs(widgets: SavedWidgets | undefined) {\n this._savedWidgetDefs = widgets;\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** Created a [[FrontstageDef]] and initialize it */\n public static async create(provider: FrontstageProvider) {\n const def = new FrontstageDef();\n def._frontstageProvider = provider;\n\n const config = provider.frontstageConfig();\n await def.initializeFromConfig(config);\n\n return def;\n }\n\n /** Handles when the Frontstage becomes activated */\n protected async _onActivated() {}\n\n /** Handles when the Frontstage becomes activated */\n public async onActivated() {\n this.updateWidgetDefs();\n\n const provider = this._contentGroupProvider;\n if (provider && this._initialConfig) {\n this._contentGroup = await provider.contentGroup(this._initialConfig);\n }\n\n // istanbul ignore next\n if (!this._contentGroup)\n throw new UiError(\n UiFramework.loggerCategory(this),\n `onActivated: Content Group not defined`\n );\n\n this._contentLayoutDef = UiFramework.content.layouts.getForGroup(\n this._contentGroup\n );\n UiFramework.frontstages.onContentLayoutActivatedEvent.emit({\n contentLayout: this._contentLayoutDef,\n contentGroup: this._contentGroup,\n });\n\n this._timeTracker.startTiming();\n await this._onActivated();\n }\n\n /** Handles when the Frontstage becomes inactive */\n protected async _onDeactivated() {}\n\n /** Handles when the Frontstage becomes inactive */\n public async onDeactivated() {\n for (const control of this._widgetControls) {\n control.onFrontstageDeactivated();\n }\n\n for (const control of this.contentControls) {\n control.onFrontstageDeactivated();\n }\n\n // istanbul ignore else\n if (this.contentGroup) this.contentGroup.onFrontstageDeactivated();\n // istanbul ignore next\n if (this.contentGroupProvider)\n await this.contentGroupProvider.onFrontstageDeactivated();\n\n this._timeTracker.stopTiming();\n\n this._isStageClosing = true; // this keeps widgets in child windows from automatically re-docking\n UiFramework.childWindows.closeAll();\n\n if (this._floatingContentControls) {\n InternalContentDialogManager.closeAll();\n this._floatingContentControls = undefined;\n }\n\n if (this._toolAdminDefaultToolId) {\n IModelApp.toolAdmin.defaultToolId = this._toolAdminDefaultToolId;\n this._toolAdminDefaultToolId = undefined;\n }\n\n await this._onDeactivated();\n this._isStageClosing = false;\n }\n\n /** @internal */\n public setIsApplicationClosing(value: boolean) {\n this._isApplicationClosing = value;\n }\n\n /** Returns once the contained widgets and content controls are ready to use */\n public async waitUntilReady(): Promise<void> {\n this._isReady = false;\n // create an array of control-ready promises\n const controlReadyPromises = new Array<Promise<void>>();\n this._widgetControls.forEach((control: WidgetControl) => {\n controlReadyPromises.push(control.isReady);\n });\n\n // istanbul ignore else\n if (this.contentLayoutDef) {\n const usedContentIndexes = this.contentLayoutDef.getUsedContentIndexes();\n this.contentControls.forEach((control: ContentControl, index: number) => {\n // istanbul ignore else\n if (usedContentIndexes.includes(index))\n controlReadyPromises.push(control.isReady);\n });\n }\n\n await Promise.all(controlReadyPromises);\n // Frontstage ready\n this._isReady = true;\n }\n\n /** Handles when the Frontstage becomes active */\n protected _onFrontstageReady(): void {}\n\n /** Handles when the Frontstage becomes active */\n public onFrontstageReady(): void {\n for (const control of this._widgetControls) {\n control.onFrontstageReady();\n }\n\n for (const control of this.contentControls) {\n control.onFrontstageReady();\n }\n\n // istanbul ignore else\n if (this.contentGroup) this.contentGroup.onFrontstageReady();\n\n if (IModelApp.toolAdmin && IModelApp.viewManager && this._initialConfig) {\n const defaultTool = this._initialConfig.defaultTool;\n if (defaultTool) {\n this._toolAdminDefaultToolId = IModelApp.toolAdmin.defaultToolId;\n IModelApp.toolAdmin.defaultToolId = defaultTool;\n void IModelApp.tools.run(defaultTool);\n } else {\n void IModelApp.toolAdmin.startDefaultTool();\n }\n }\n\n this._onFrontstageReady();\n }\n\n /** Sets the Content Layout and Content Group */\n public setContentLayoutAndGroup(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): void {\n this._contentLayoutDef = contentLayoutDef;\n this._contentGroup = contentGroup;\n }\n\n /** Sets the active view content control to the default or first */\n public async setActiveContent(): Promise<boolean> {\n let contentControl: ContentControl | undefined;\n let activated = false;\n\n // istanbul ignore else\n if (!contentControl && this.contentControls.length >= 0) {\n contentControl = this.contentControls[0];\n }\n\n if (contentControl) {\n UiFramework.content.setActive(contentControl.reactNode, true);\n if (contentControl.viewport) {\n const status = await IModelApp.viewManager.setSelectedView(\n contentControl.viewport\n );\n activated = status === BentleyStatus.SUCCESS;\n }\n }\n\n return activated;\n }\n\n /** Sets the active view content control */\n public setActiveView(\n newContent: ContentControl,\n oldContent?: ContentControl\n ): void {\n if (oldContent) oldContent.onDeactivated();\n newContent.onActivated();\n UiFramework.frontstages.onContentControlActivatedEvent.emit({\n activeContentControl: newContent,\n oldContentControl: oldContent,\n });\n }\n\n /** Sets the active view content control based on the selected viewport. */\n public setActiveViewFromViewport(viewport: ScreenViewport): boolean {\n const contentControl = this.contentControls.find(\n (control: ContentControl) => control.viewport === viewport\n );\n // istanbul ignore else\n if (contentControl) {\n UiFramework.content.setActive(contentControl.reactNode, true);\n return true;\n }\n\n // istanbul ignore next\n return false;\n }\n\n /** Gets a [[StagePanelDef]] based on a given panel location\n * @beta\n */\n public getStagePanelDef(\n location: StagePanelLocation\n ): StagePanelDef | undefined {\n let panelDef: StagePanelDef | undefined;\n\n switch (location) {\n case StagePanelLocation.Top:\n panelDef = this.topPanel;\n break;\n case StagePanelLocation.Left:\n panelDef = this.leftPanel;\n break;\n case StagePanelLocation.Right:\n panelDef = this.rightPanel;\n break;\n case StagePanelLocation.Bottom:\n panelDef = this.bottomPanel;\n break;\n }\n\n // Panels can be undefined in a Frontstage\n\n return panelDef;\n }\n\n /** Gets a list of [[StagePanelDef]]s\n * @beta\n */\n public get panelDefs(): StagePanelDef[] {\n const locations = [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ];\n const panels: StagePanelDef[] = [];\n\n locations.forEach((location: StagePanelLocation) => {\n const panel = this.getStagePanelDef(location);\n if (panel) panels.push(panel);\n });\n\n return panels;\n }\n\n /** Finds a [[WidgetDef]] based on a given id */\n public findWidgetDef(id: string): WidgetDef | undefined {\n for (const widgetDef of this.widgetDefs) {\n if (widgetDef.id === id) return widgetDef;\n }\n return undefined;\n }\n\n /** Gets the list of [[WidgetControl]]s */\n private get _widgetControls(): WidgetControl[] {\n const widgetControls = new Array<WidgetControl>();\n\n this.panelDefs.forEach((panelDef: StagePanelDef) => {\n panelDef.widgetDefs.forEach((widgetDef: WidgetDef) => {\n const widgetControl = widgetDef.widgetControl;\n // istanbul ignore if\n if (widgetControl) widgetControls.push(widgetControl);\n });\n });\n\n return widgetControls;\n }\n\n public addFloatingContentControl(contentControl?: ContentControl) {\n // istanbul ignore next\n if (!contentControl) return;\n if (!this._floatingContentControls)\n this._floatingContentControls = new Array<ContentControl>();\n\n this._floatingContentControls.push(contentControl);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n\n public dropFloatingContentControl(contentControl?: ContentControl) {\n // istanbul ignore next\n if (!contentControl || !this._floatingContentControls) return;\n\n const index = this._floatingContentControls.indexOf(contentControl);\n // istanbul ignore else\n if (index > -1) {\n this._floatingContentControls.splice(index, 1);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n }\n\n /** Gets the list of [[ContentControl]]s */\n public get contentControls(): ContentControl[] {\n const contentControls = new Array<ContentControl>();\n // istanbul ignore else\n if (this.contentGroup) {\n contentControls.push(...this.contentGroup.getContentControls());\n }\n if (this._floatingContentControls) {\n contentControls.push(...this._floatingContentControls);\n }\n return contentControls;\n }\n\n /** Initializes a FrontstageDef from FrontstageConfig.\n * @internal\n */\n public async initializeFromConfig(config: FrontstageConfig): Promise<void> {\n this._id = config.id;\n this._initialConfig = config;\n\n if (config.contentGroup instanceof ContentGroupProvider) {\n this._contentGroupProvider = config.contentGroup;\n } else {\n this._contentGroup = config.contentGroup;\n }\n\n this._usage = config.usage;\n this._version = config.version;\n\n this._toolSettings = createWidgetDef(\n config.toolSettings,\n WidgetType.ToolSettings\n );\n this._statusBar = createWidgetDef(config.statusBar, WidgetType.StatusBar);\n this._contentManipulation = createWidgetDef(\n config.contentManipulation,\n WidgetType.Tool\n );\n this._viewNavigation = createWidgetDef(\n config.viewNavigation,\n WidgetType.Navigation\n );\n this._topPanel = createStagePanelDef(config, StagePanelLocation.Top);\n this._leftPanel = createStagePanelDef(config, StagePanelLocation.Left);\n this._rightPanel = createStagePanelDef(config, StagePanelLocation.Right);\n this._bottomPanel = createStagePanelDef(config, StagePanelLocation.Bottom);\n }\n\n /** @internal */\n public updateWidgetDefs(): void {\n // Tracks provided widgets to prevent duplicates.\n const allStageWidgetDefs: WidgetDef[] = [];\n\n // Process panels before zones so extension can explicitly target a widget for a StagePanelSection\n this.panelDefs.forEach((stagePanelDef: StagePanelDef) => {\n stagePanelDef.updateDynamicWidgetDefs(\n this.id,\n this.usage,\n stagePanelDef.location,\n undefined,\n allStageWidgetDefs\n );\n });\n\n InternalFrontstageManager.onFrontstageWidgetsChangedEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** @beta */\n public restoreLayout() {\n for (const panelDef of this.panelDefs) {\n panelDef.size = panelDef.defaultSize;\n panelDef.panelState = panelDef.defaultState;\n }\n for (const widgetDef of this.widgetDefs) {\n widgetDef.setWidgetState(widgetDef.defaultState);\n }\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Used only in UI 2.0 to determine WidgetState from NinezoneState\n * @internal\n */\n public getWidgetCurrentState(widgetDef: WidgetDef): WidgetState | undefined {\n const state = this.nineZoneState;\n\n // istanbul ignore else\n if (state) {\n const toolSettingsTabId = state.toolSettings?.tabId;\n if (\n toolSettingsTabId === widgetDef.id &&\n state.toolSettings?.type === \"docked\"\n ) {\n return WidgetState.Open;\n }\n\n const location = getTabLocation(state, widgetDef.id);\n\n // istanbul ignore next\n if (!location) return WidgetState.Hidden;\n\n if (isFloatingTabLocation(location)) {\n const floatingWidget =\n state.floatingWidgets.byId[location.floatingWidgetId];\n if (floatingWidget && floatingWidget.hidden) return WidgetState.Hidden;\n else return WidgetState.Floating;\n }\n\n let collapsedPanel = false;\n // istanbul ignore else\n if (\"side\" in location) {\n const panel = state.panels[location.side];\n collapsedPanel =\n panel.collapsed || undefined === panel.size || 0 === panel.size;\n }\n const widgetContainer = state.widgets[location.widgetId];\n if (widgetDef.id === widgetContainer.activeTabId && !collapsedPanel)\n return WidgetState.Open;\n else return WidgetState.Closed;\n }\n return widgetDef.defaultState;\n }\n\n /** Used only in UI 2.0 to determine StagePanelState and size from NinezoneState\n * @internal\n */\n public getPanelCurrentState(\n panelDef: StagePanelDef\n ): [StagePanelState, number, boolean] {\n // istanbul ignore next\n if (this.nineZoneState) {\n const side = toPanelSide(panelDef.location);\n const panel = this.nineZoneState.panels[side];\n if (panel)\n return [\n panel.collapsed ? StagePanelState.Minimized : StagePanelState.Open,\n panel.size ?? 0,\n panel.pinned,\n ];\n return [StagePanelState.Off, 0, false];\n }\n return [panelDef.defaultState, panelDef.defaultSize ?? 0, true];\n }\n\n public isPopoutWidget(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location) return isPopoutTabLocation(location);\n }\n\n return false;\n }\n\n public isFloatingWidget(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location) return isFloatingTabLocation(location);\n }\n\n return false;\n }\n\n /** Create a new floating panel that contains the widget specified by its Id. Supported only when in\n * UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id\n * @param point Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, point?: PointProps, size?: SizeProps) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) {\n let popoutWidgetContainerId: string | undefined;\n if (isPopoutTabLocation(location)) {\n popoutWidgetContainerId = location.popoutWidgetId;\n }\n const state = floatWidget(this.nineZoneState, widgetId, point, size);\n // istanbul ignore else\n if (state) {\n this.nineZoneState = state;\n setTimeout(() => {\n popoutWidgetContainerId &&\n UiFramework.childWindows.close(popoutWidgetContainerId, true);\n }, 600);\n }\n }\n }\n }\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string) {\n let widgetIsVisible = false;\n // istanbul ignore else\n if (this.nineZoneState) {\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (tabLocation) {\n if (isFloatingTabLocation(tabLocation)) {\n const floatingWidget =\n this.nineZoneState.floatingWidgets.byId[\n tabLocation.floatingWidgetId\n ];\n // istanbul ignore else\n if (!!!floatingWidget.hidden) widgetIsVisible = true;\n } else if (isPopoutTabLocation(tabLocation)) {\n widgetIsVisible = true;\n } else {\n // istanbul ignore else\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n if (\n widgetDef &&\n widgetDef.state === WidgetState.Open &&\n !panel.collapsed\n )\n widgetIsVisible = true;\n }\n }\n }\n }\n return widgetIsVisible;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal */\n public openPopoutWidgetContainer(\n state: NineZoneState,\n widgetContainerId: string\n ) {\n const location = getWidgetLocation(state, widgetContainerId);\n // istanbul ignore next\n if (!location) return;\n // istanbul ignore next\n if (!isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[widgetContainerId];\n const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];\n\n // Popout widget should only contain a single tab.\n // istanbul ignore next\n if (widget.tabs.length !== 1) return;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n // istanbul ignore next\n if (!widgetDef) return;\n\n const popoutContent = (\n <PopoutWidget\n widgetContainerId={widgetContainerId}\n widgetDef={widgetDef}\n />\n );\n const bounds = Rectangle.create(popoutWidget.bounds);\n\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n UiFramework.childWindows.open(\n widgetContainerId,\n widgetDef.label,\n popoutContent,\n position,\n UiFramework.useDefaultPopoutUrl\n );\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id. Supported only when in\n * UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id\n * @param point Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, point?: PointProps, size?: SizeProps) {\n // istanbul ignore next\n if (!this.nineZoneState) return;\n\n let location = getTabLocation(this.nineZoneState, widgetId);\n if (!location || isPopoutTabLocation(location)) return;\n\n const widgetDef = this.findWidgetDef(widgetId);\n // istanbul ignore next\n if (!widgetDef) return;\n\n // get the state to apply that will pop-out the specified WidgetTab to child window.\n let preferredBounds = Rectangle.createFromSize({ height: 800, width: 600 });\n // istanbul ignore next\n if (widgetDef.popoutBounds) preferredBounds = widgetDef.popoutBounds;\n if (size) preferredBounds = preferredBounds.setSize(size);\n if (point) preferredBounds = preferredBounds.setPosition(point);\n\n const state = popoutWidgetToChildWindow(\n this.nineZoneState,\n widgetId,\n preferredBounds\n );\n this.nineZoneState = state;\n\n // now that the state is updated get the id of the container that houses the widgetTab/widgetId\n location = getTabLocation(state, widgetId);\n assert(!!location && isPopoutTabLocation(location));\n\n const widgetContainerId = location.widgetId;\n const popoutWidget = state.popoutWidgets.byId[widgetContainerId];\n const bounds = Rectangle.create(popoutWidget.bounds);\n\n setTimeout(() => {\n const popoutContent = (\n <PopoutWidget\n widgetContainerId={widgetContainerId}\n widgetDef={widgetDef}\n />\n );\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n UiFramework.childWindows.open(\n widgetContainerId,\n widgetDef.label,\n popoutContent,\n position,\n UiFramework.useDefaultPopoutUrl\n );\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: Window\n ) {\n if (!this.nineZoneState) return;\n\n const location = getWidgetLocation(this.nineZoneState, childWindowId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const widget = this.nineZoneState.widgets[location.popoutWidgetId];\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n const adjustmentWidth = ProcessDetector.isElectronAppFrontend ? 16 : 0;\n const adjustmentHeight = ProcessDetector.isElectronAppFrontend ? 39 : 0;\n\n const width = childWindow.innerWidth + adjustmentWidth;\n const height = childWindow.innerHeight + adjustmentHeight;\n const bounds = Rectangle.createFromSize({ width, height }).offset({\n x: childWindow.screenX,\n y: childWindow.screenY,\n });\n widgetDef.popoutBounds = bounds;\n }\n\n /** Method used to possibly change a Popout Widget back to a docked widget if the user was the one closing the popout's child\n * window.\n * @internal\n */\n public dockPopoutWidgetContainer(widgetContainerId: string) {\n if (!this.nineZoneState) return;\n\n // Make sure the widgetContainerId is still in popout state. We don't want to set it to docked if the window is being closed because\n // an API call has moved the widget from a popout state to a floating state.\n // istanbul ignore else\n const location = getWidgetLocation(this.nineZoneState, widgetContainerId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const state = dockWidgetContainer(\n this.nineZoneState,\n widgetContainerId,\n true\n );\n this.nineZoneState = state;\n }\n\n /** Finds the container with the specified widget and re-docks all widgets\n * back to the panel zone location that was used when the floating container\n * was generated. Supported only when in UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id.\n * @beta\n */\n public dockWidgetContainer(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n if (location) {\n const widgetContainerId = location.widgetId;\n const state = dockWidgetContainer(\n this.nineZoneState,\n widgetContainerId,\n true\n );\n state && (this.nineZoneState = state);\n if (isPopoutTabLocation(location)) {\n UiFramework.childWindows.close(location.widgetId, true);\n }\n }\n }\n }\n\n public setFloatingWidgetContainerBounds(\n floatingWidgetId: string,\n bounds: RectangleProps\n ) {\n if (\n !this.nineZoneState ||\n !(floatingWidgetId in this.nineZoneState.floatingWidgets.byId)\n )\n return false;\n\n let state = FrameworkStateReducer(\n this.nineZoneState,\n {\n type: \"FLOATING_WIDGET_SET_BOUNDS\",\n id: floatingWidgetId,\n bounds,\n },\n this\n );\n state = FrameworkStateReducer(\n state,\n {\n type: \"FLOATING_WIDGET_SET_USER_SIZED\",\n id: floatingWidgetId,\n userSized: true,\n },\n this\n );\n this.nineZoneState = state;\n return true;\n }\n\n public getFloatingWidgetContainerIds(): string[] {\n if (!this.nineZoneState) return [];\n\n return [...this.nineZoneState.floatingWidgets.allIds];\n }\n\n public getFloatingWidgetContainerIdByWidgetId(\n widgetId: string\n ): string | undefined {\n if (!this.nineZoneState) return undefined;\n\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location && isFloatingTabLocation(location)) {\n return location.floatingWidgetId;\n }\n // istanbul ignore next\n return undefined;\n }\n\n public getFloatingWidgetContainerBounds(\n floatingWidgetId: string | undefined\n ) {\n if (!floatingWidgetId) return undefined;\n\n // istanbul ignore else\n if (\n this.nineZoneState &&\n floatingWidgetId in this.nineZoneState.floatingWidgets.byId\n ) {\n const foundWidget = document.querySelector(\n `div.nz-widget-floatingWidget[data-widget-id='${floatingWidgetId}']`\n );\n // istanbul ignore next\n if (foundWidget) {\n const domRect = foundWidget.getBoundingClientRect();\n return {\n left: domRect.left,\n right: domRect.right,\n top: domRect.top,\n bottom: domRect.bottom,\n };\n }\n return this.nineZoneState.floatingWidgets.byId[floatingWidgetId].bounds;\n }\n return undefined;\n }\n\n private *_widgetDefs(): Iterator<WidgetDef> {\n for (const panelDef of this.panelDefs) {\n for (const widgetDef of panelDef.widgetDefs) {\n yield widgetDef;\n }\n }\n if (this.toolSettings) yield this.toolSettings;\n if (this.statusBar) yield this.statusBar;\n return undefined;\n }\n\n /** Iterable of all widget definitions in a frontstage.\n * @internal\n */\n public get widgetDefs() {\n const defs = this._widgetDefs();\n return {\n [Symbol.iterator]() {\n return defs;\n },\n };\n }\n}\n\nfunction createWidgetDef(\n config: WidgetConfig | undefined,\n type: WidgetType\n): WidgetDef | undefined {\n if (!config) return undefined;\n\n const widgetDef = WidgetDef.create(config, type);\n return widgetDef;\n}\n\nfunction createStagePanelDef(\n frontstageConfig: FrontstageConfig,\n location: StagePanelLocation\n): StagePanelDef {\n const config = getStagePanel(location, frontstageConfig);\n\n const panelDef = new StagePanelDef();\n panelDef.initializeFromConfig(config, location);\n return panelDef;\n}\n\nfunction getStagePanel(\n location: StagePanelLocation,\n config: FrontstageConfig\n): StagePanelConfig | undefined {\n switch (location) {\n case StagePanelLocation.Top:\n return config.topPanel;\n case StagePanelLocation.Left:\n return config.leftPanel;\n case StagePanelLocation.Right:\n return config.rightPanel;\n case StagePanelLocation.Bottom:\n return config.bottomPanel;\n }\n}\n\n/** Hook that returns active frontstage id.\n * @public\n */\nexport const useActiveFrontstageId = () => {\n const def = useActiveFrontstageDef();\n const id = React.useMemo(\n () => (def ? /* istanbul ignore next */ def.id : \"\"),\n [def]\n );\n return id;\n};\n\n/** Hook to return the active Frontstage def */\n/** @public */\nexport function useActiveFrontstageDef() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n setDef(args.activatedFrontstageDef);\n }\n );\n }, []);\n return def;\n}\n\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\n * @public\n */\nexport function useSpecificWidgetDef(widgetId: string) {\n const frontstageDef = useActiveFrontstageDef();\n const [widgetDef, setWidgetDef] = React.useState(() =>\n frontstageDef?.findWidgetDef(widgetId)\n );\n React.useEffect(() => {\n setWidgetDef(frontstageDef?.findWidgetDef(widgetId));\n return InternalFrontstageManager.onFrontstageWidgetsChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n setWidgetDef(frontstageDef.findWidgetDef(widgetId));\n }\n );\n }, [frontstageDef, widgetId]);\n return widgetDef;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FrontstageDef.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,uBAAuB;AAEvB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,UAAU,GACX,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAIrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AAatF;;GAEG;AACH,MAAM,OAAO,aAAa;IAA1B;QACU,QAAG,GAAW,EAAE,CAAC;QAEjB,oBAAe,GAAG,KAAK,CAAC;QACxB,aAAQ,GAAG,KAAK,CAAC;QACjB,0BAAqB,GAAG,KAAK,CAAC;QAE9B,aAAQ,GAAW,CAAC,CAAC;QAYrB,iBAAY,GAAG,IAAI,WAAW,EAAE,CAAC;IAi7B3C,CAAC;IA16BC,IAAW,EAAE;QACX,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IACtE,CAAC;IACD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IACD,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IACD,IAAW,uBAAuB;QAChC,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACvC,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,mBAAmB;QAC5B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IACD,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IACD,IAAW,SAAS;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IACD,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IACD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAW,gBAAgB;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IACD,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IACD,IAAW,kBAAkB;QAC3B,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAEO,oBAAoB,CAAC,IAAe;QAC1C,QAAQ,IAAI,EAAE;YACZ,KAAK,QAAQ;gBACX,OAAO,kBAAkB,CAAC,MAAM,CAAC;YACnC,KAAK,MAAM;gBACT,OAAO,kBAAkB,CAAC,IAAI,CAAC;YACjC,KAAK,OAAO;gBACV,OAAO,kBAAkB,CAAC,KAAK,CAAC;YAClC,KAAK,KAAK;gBACR,OAAO,kBAAkB,CAAC,GAAG,CAAC;SACjC;IACH,CAAC;IAEO,iBAAiB,CACvB,QAAuB,EACvB,QAA6C,EAC7C,SAAsC;QAEtC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YACxB,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS;gBAChC,CAAC,CAAC,eAAe,CAAC,SAAS;gBAC3B,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;YACzB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;SACpC;QAED,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,MAAM,QAAQ,GAAG,SAAS,CAAC,EAAE,CAAC;YAC9B,IAAI,SAAS,KAAK,IAAI,CAAC,YAAY,EAAE;gBACnC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE;oBAC1B,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC7C,SAAS;iBACV;qBAAM,IAAI,QAAQ,CAAC,YAAY,CAAC,IAAI,KAAK,QAAQ,EAAE;oBAClD,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC3C,SAAS;iBACV;aACF;YAED,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,EAAE;gBAChB,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC7C,SAAS;aACV;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtD,IAAI,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;YACnC,IAAI,MAAM,CAAC,SAAS,IAAI,QAAQ,KAAK,MAAM,CAAC,WAAW;gBACrD,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;YACnC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SACvC;IACH,CAAC;IAEO,wBAAwB,CAAC,QAAuB;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,qBAAqB;YAAE,OAAO;QAE/D,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAkC,CAAC;QACxE,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAA0B,CAAC;QACjE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkC,CAAC;QACnE,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA0B,CAAC;QAC5D,IAAI,CAAC,iBAAiB,CACpB,QAAQ,EACR,qBAAqB,EACrB,sBAAsB,CACvB,CAAC;QACF,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,iBAAiB,CAAC,CAAC;QAEtE,wCAAwC;QACxC,iBAAiB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,SAAS,EAAE,EAAE;YACtD,MAAM,aAAa,GAAG,sBAAsB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5D,IAAI,aAAa,KAAK,cAAc;gBAAE,OAAO;YAC7C,SAAS,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,gBAAgB,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE;YACnD,MAAM,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,aAAa,KAAK,aAAa;gBAAE,OAAO;YAC5C,QAAQ,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;YAClC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YACjD,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;gBAChC,QAAQ,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACxC;YAED,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;gBACpC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC5C;SACF;IACH,CAAC;IAEO,aAAa,CAAC,QAAmC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;QAEpC,MAAM,UAAU,GAAG,QAAQ,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,MAAM,UAAU,GAAG,QAAQ,EAAE,aAAa,CAAC,MAAM,IAAI,EAAE,CAAC;QACxD,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAExE,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE;YACrC,WAAW,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAChD;QAED,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE;YACpC,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;SAC1C;IACH,CAAC;IAED,gBAAgB;IAChB,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACD,IAAW,aAAa,CAAC,KAAgC;QACvD,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK;YAAE,OAAO;QAE1C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;SACzC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,qBAAqB,CAAC;QACrE,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QACvC,yBAAyB,CAAC,qCAAqC,CAAC,IAAI,CAAC;YACnE,aAAa,EAAE,IAAI;YACnB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,IAAW,QAAQ;QACjB,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,EAAE,EAAE;YACpC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC5B,yBAAyB,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACnE;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;YACjC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,oDAAoD;IAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAA4B;QACrD,MAAM,GAAG,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,GAAG,CAAC,mBAAmB,GAAG,QAAQ,CAAC;QAEnC,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QAC3C,MAAM,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAEvC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,oDAAoD;IAC1C,KAAK,CAAC,YAAY,KAAI,CAAC;IAEjC,oDAAoD;IAC7C,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC5C,IAAI,QAAQ,IAAI,IAAI,CAAC,cAAc,EAAE;YACnC,IAAI,CAAC,aAAa,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACvE;QAED,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,aAAa;YACrB,MAAM,IAAI,OAAO,CACf,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAChC,wCAAwC,CACzC,CAAC;QAEJ,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAC9D,IAAI,CAAC,aAAa,CACnB,CAAC;QACF,WAAW,CAAC,WAAW,CAAC,6BAA6B,CAAC,IAAI,CAAC;YACzD,aAAa,EAAE,IAAI,CAAC,iBAAiB;YACrC,YAAY,EAAE,IAAI,CAAC,aAAa;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,mDAAmD;IACzC,KAAK,CAAC,cAAc,KAAI,CAAC;IAEnC,mDAAmD;IAC5C,KAAK,CAAC,aAAa;QACxB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;YAC1C,OAAO,CAAC,uBAAuB,EAAE,CAAC;SACnC;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;YAC1C,OAAO,CAAC,uBAAuB,EAAE,CAAC;SACnC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,CAAC;QACnE,uBAAuB;QACvB,IAAI,IAAI,CAAC,oBAAoB;YAC3B,MAAM,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,EAAE,CAAC;QAE5D,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;QAE/B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC,oEAAoE;QACjG,WAAW,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAEpC,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,4BAA4B,CAAC,QAAQ,EAAE,CAAC;YACxC,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;SAC3C;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,CAAC;YACjE,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;SAC1C;QAED,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,gBAAgB;IACT,uBAAuB,CAAC,KAAc;QAC3C,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,+EAA+E;IACxE,KAAK,CAAC,cAAc;QACzB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,4CAA4C;QAC5C,MAAM,oBAAoB,GAAG,IAAI,KAAK,EAAiB,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAsB,EAAE,EAAE;YACtD,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,MAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;YACzE,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,OAAuB,EAAE,KAAa,EAAE,EAAE;gBACtE,uBAAuB;gBACvB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACpC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;SACJ;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACxC,mBAAmB;QACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,iDAAiD;IACvC,kBAAkB,KAAU,CAAC;IAEvC,iDAAiD;IAC1C,iBAAiB;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;YAC1C,OAAO,CAAC,iBAAiB,EAAE,CAAC;SAC7B;QAED,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,eAAe,EAAE;YAC1C,OAAO,CAAC,iBAAiB,EAAE,CAAC;SAC7B;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;QAE7D,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,EAAE;YACvE,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;YACpD,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC;gBACjE,SAAS,CAAC,SAAS,CAAC,aAAa,GAAG,WAAW,CAAC;gBAChD,KAAK,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;aACvC;iBAAM;gBACL,KAAK,SAAS,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;aAC7C;SACF;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,gDAAgD;IACzC,wBAAwB,CAC7B,gBAAkC,EAClC,YAA0B;QAE1B,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,mEAAmE;IAC5D,KAAK,CAAC,gBAAgB;QAC3B,IAAI,cAA0C,CAAC;QAC/C,IAAI,SAAS,GAAG,KAAK,CAAC;QAEtB,uBAAuB;QACvB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE;YACvD,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SAC1C;QAED,IAAI,cAAc,EAAE;YAClB,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC9D,IAAI,cAAc,CAAC,QAAQ,EAAE;gBAC3B,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,eAAe,CACxD,cAAc,CAAC,QAAQ,CACxB,CAAC;gBACF,SAAS,GAAG,MAAM,KAAK,aAAa,CAAC,OAAO,CAAC;aAC9C;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2CAA2C;IACpC,aAAa,CAClB,UAA0B,EAC1B,UAA2B;QAE3B,IAAI,UAAU;YAAE,UAAU,CAAC,aAAa,EAAE,CAAC;QAC3C,UAAU,CAAC,WAAW,EAAE,CAAC;QACzB,WAAW,CAAC,WAAW,CAAC,8BAA8B,CAAC,IAAI,CAAC;YAC1D,oBAAoB,EAAE,UAAU;YAChC,iBAAiB,EAAE,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,2EAA2E;IACpE,yBAAyB,CAAC,QAAwB;QACvD,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAC9C,CAAC,OAAuB,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAC3D,CAAC;QACF,uBAAuB;QACvB,IAAI,cAAc,EAAE;YAClB,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC;SACb;QAED,uBAAuB;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,gBAAgB,CACrB,QAA4B;QAE5B,IAAI,QAAmC,CAAC;QAExC,QAAQ,QAAQ,EAAE;YAChB,KAAK,kBAAkB,CAAC,GAAG;gBACzB,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBACzB,MAAM;YACR,KAAK,kBAAkB,CAAC,IAAI;gBAC1B,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC1B,MAAM;YACR,KAAK,kBAAkB,CAAC,KAAK;gBAC3B,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;gBAC3B,MAAM;YACR,KAAK,kBAAkB,CAAC,MAAM;gBAC5B,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC5B,MAAM;SACT;QAED,0CAA0C;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAClB,MAAM,SAAS,GAAG;YAChB,kBAAkB,CAAC,IAAI;YACvB,kBAAkB,CAAC,KAAK;YACxB,kBAAkB,CAAC,GAAG;YACtB,kBAAkB,CAAC,MAAM;SAC1B,CAAC;QACF,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,SAAS,CAAC,OAAO,CAAC,CAAC,QAA4B,EAAE,EAAE;YACjD,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gDAAgD;IACzC,aAAa,CAAC,EAAU;QAC7B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,IAAI,SAAS,CAAC,EAAE,KAAK,EAAE;gBAAE,OAAO,SAAS,CAAC;SAC3C;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,0CAA0C;IAC1C,IAAY,eAAe;QACzB,MAAM,cAAc,GAAG,IAAI,KAAK,EAAiB,CAAC;QAElD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAuB,EAAE,EAAE;YACjD,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,SAAoB,EAAE,EAAE;gBACnD,MAAM,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;gBAC9C,qBAAqB;gBACrB,IAAI,aAAa;oBAAE,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,yBAAyB,CAAC,cAA+B;QAC9D,uBAAuB;QACvB,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,IAAI,CAAC,IAAI,CAAC,wBAAwB;YAChC,IAAI,CAAC,wBAAwB,GAAG,IAAI,KAAK,EAAkB,CAAC;QAE9D,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnD,WAAW,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC;YACtD,SAAS,EAAE,cAAc,CAAC,QAAQ;SACnC,CAAC,CAAC;IACL,CAAC;IAEM,0BAA0B,CAAC,cAA+B;QAC/D,uBAAuB;QACvB,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,wBAAwB;YAAE,OAAO;QAE9D,MAAM,KAAK,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpE,uBAAuB;QACvB,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC/C,WAAW,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAAI,CAAC;gBACtD,SAAS,EAAE,cAAc,CAAC,QAAQ;aACnC,CAAC,CAAC;SACJ;IACH,CAAC;IAED,2CAA2C;IAC3C,IAAW,eAAe;QACxB,MAAM,eAAe,GAAG,IAAI,KAAK,EAAkB,CAAC;QACpD,uBAAuB;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC,CAAC;SACjE;QACD,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,CAAC;SACxD;QACD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,oBAAoB,CAAC,MAAwB;QACxD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAE7B,IAAI,MAAM,CAAC,YAAY,YAAY,oBAAoB,EAAE;YACvD,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC,YAAY,CAAC;SAClD;aAAM;YACL,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,CAAC;SAC1C;QAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAE/B,IAAI,CAAC,aAAa,GAAG,eAAe,CAClC,MAAM,CAAC,YAAY,EACnB,UAAU,CAAC,YAAY,CACxB,CAAC;QACF,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1E,IAAI,CAAC,oBAAoB,GAAG,eAAe,CACzC,MAAM,CAAC,mBAAmB,EAC1B,UAAU,CAAC,IAAI,CAChB,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,eAAe,CACpC,MAAM,CAAC,cAAc,EACrB,UAAU,CAAC,UAAU,CACtB,CAAC;QACF,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IAED,gBAAgB;IACT,gBAAgB;QACrB,iDAAiD;QACjD,MAAM,kBAAkB,GAAgB,EAAE,CAAC;QAE3C,kGAAkG;QAClG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,aAA4B,EAAE,EAAE;YACtD,aAAa,CAAC,uBAAuB,CACnC,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,KAAK,EACV,aAAa,CAAC,QAAQ,EACtB,SAAS,EACT,kBAAkB,CACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,yBAAyB,CAAC,+BAA+B,CAAC,IAAI,CAAC;YAC7D,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,aAAa;QAClB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;YACrC,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;SAC7C;QACD,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;YACvC,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;SAClD;QACD,yBAAyB,CAAC,8BAA8B,CAAC,IAAI,CAAC;YAC5D,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,qBAAqB,CAAC,SAAoB;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QAEjC,uBAAuB;QACvB,IAAI,KAAK,EAAE;YACT,MAAM,iBAAiB,GAAG,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;YACpD,IACE,iBAAiB,KAAK,SAAS,CAAC,EAAE;gBAClC,KAAK,CAAC,YAAY,EAAE,IAAI,KAAK,QAAQ,EACrC;gBACA,OAAO,WAAW,CAAC,IAAI,CAAC;aACzB;YAED,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YAErD,uBAAuB;YACvB,IAAI,CAAC,QAAQ;gBAAE,OAAO,WAAW,CAAC,MAAM,CAAC;YAEzC,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE;gBACnC,OAAO,WAAW,CAAC,QAAQ,CAAC;aAC7B;YAED,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,uBAAuB;YACvB,IAAI,MAAM,IAAI,QAAQ,EAAE;gBACtB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,cAAc;oBACZ,KAAK,CAAC,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC;aACnE;YACD,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACzD,IAAI,SAAS,CAAC,EAAE,KAAK,eAAe,CAAC,WAAW,IAAI,CAAC,cAAc;gBACjE,OAAO,WAAW,CAAC,IAAI,CAAC;;gBACrB,OAAO,WAAW,CAAC,MAAM,CAAC;SAChC;QACD,OAAO,SAAS,CAAC,YAAY,CAAC;IAChC,CAAC;IAEM,cAAc,CAAC,QAAgB;QACpC,uBAAuB;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC9D,uBAAuB;YACvB,IAAI,QAAQ;gBAAE,OAAO,mBAAmB,CAAC,QAAQ,CAAC,CAAC;SACpD;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,gBAAgB,CAAC,QAAgB;QACtC,uBAAuB;QACvB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;YAC9D,uBAAuB;YACvB,IAAI,QAAQ;gBAAE,OAAO,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SACtD;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;OAOG;IACI,WAAW,CAAC,QAAgB,EAAE,QAAgB,EAAE,IAAgB;QACrE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,QAAQ;YACZ,QAAQ;YACR,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,QAAgB;QACvC,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,KAAK,CAAC;QAEtC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACjE,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,SAAS,GACb,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC1E,OAAO,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,yBAAyB,CAAC,iBAAyB;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;YAAE,OAAO;QAE9C,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAChD,kDAAkD;QAClD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAErC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,aAAa,GAAG,CACpB,oBAAC,YAAY,IACX,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,SAAS,GACpB,CACH,CAAC;QAEF,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,QAAQ,GAA6B;YACzC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;YAC1B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,GAAG,EAAE,MAAM,CAAC,GAAG;SAChB,CAAC;QACF,WAAW,CAAC,YAAY,CAAC,IAAI,CAC3B,iBAAiB,EACjB,SAAS,CAAC,KAAK,EACf,aAAa,EACb,QAAQ,EACR,WAAW,CAAC,mBAAmB,CAChC,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,YAAY,CAAC,QAAgB,EAAE,QAAgB,EAAE,IAAgB;QACtE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,mBAAmB;YACzB,EAAE,EAAE,QAAQ;YACZ,QAAQ;YACR,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,gBAAgB;IACT,8BAA8B,CACnC,aAAqB,EACrB,WAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;YAAE,OAAO;QAE3D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS;YAAE,OAAO;QAEvB,MAAM,eAAe,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,MAAM,gBAAgB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAExE,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,GAAG,eAAe,CAAC;QACvD,MAAM,MAAM,GAAG,WAAW,CAAC,WAAW,GAAG,gBAAgB,CAAC;QAC1D,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;YAChE,CAAC,EAAE,WAAW,CAAC,OAAO;YACtB,CAAC,EAAE,WAAW,CAAC,OAAO;SACvB,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,8BAA8B;YACpC,EAAE,EAAE,KAAK;YACT,MAAM;SACP,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IACT,gCAAgC,CAAC,iBAAyB;QAC/D,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;QAC7D,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,2BAA2B;gBACjC,EAAE,EAAE,QAAQ,CAAC,gBAAgB;aAC9B,CAAC,CAAC;YACH,OAAO;SACR;QACD,IAAI,sBAAsB,CAAC,QAAQ,CAAC,EAAE;YACpC,IAAI,CAAC,QAAQ,CAAC;gBACZ,IAAI,EAAE,yBAAyB;gBAC/B,EAAE,EAAE,QAAQ,CAAC,cAAc;aAC5B,CAAC,CAAC;YACH,OAAO;SACR;IACH,CAAC;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,QAAgB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;QACjC,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAEM,gCAAgC,CACrC,gBAAwB,EACxB,MAAsB;QAEtB,IACE,CAAC,IAAI,CAAC,aAAa;YACnB,CAAC,CAAC,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC;YAE9D,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,4BAA4B;YAClC,EAAE,EAAE,gBAAgB;YACpB,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC;YACZ,IAAI,EAAE,gCAAgC;YACtC,EAAE,EAAE,gBAAgB;YACpB,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,6BAA6B;QAClC,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,EAAE,CAAC;QAEnC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAEM,sCAAsC,CAC3C,QAAgB;QAEhB,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,OAAO,SAAS,CAAC;QAE1C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAC9D,uBAAuB;QACvB,IAAI,QAAQ,IAAI,qBAAqB,CAAC,QAAQ,CAAC,EAAE;YAC/C,OAAO,QAAQ,CAAC,gBAAgB,CAAC;SAClC;QACD,uBAAuB;QACvB,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,gCAAgC,CACrC,gBAAoC;QAEpC,IAAI,CAAC,gBAAgB;YAAE,OAAO,SAAS,CAAC;QAExC,uBAAuB;QACvB,IACE,IAAI,CAAC,aAAa;YAClB,gBAAgB,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,EAC3D;YACA,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CACxC,gDAAgD,gBAAgB,IAAI,CACrE,CAAC;YACF,uBAAuB;YACvB,IAAI,WAAW,EAAE;gBACf,MAAM,OAAO,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAC;gBACpD,OAAO;oBACL,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC;aACH;YACD,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC;SACzE;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,CAAC,WAAW;QAClB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,KAAK,MAAM,SAAS,IAAI,QAAQ,CAAC,UAAU,EAAE;gBAC3C,MAAM,SAAS,CAAC;aACjB;SACF;QACD,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,IAAI,CAAC,YAAY,CAAC;QAC/C,IAAI,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,CAAC,SAAS,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,UAAU;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,OAAO;YACL,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACf,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC;IACJ,CAAC;CACF;AAED,SAAS,eAAe,CACtB,MAAgC,EAChC,IAAgB;IAEhB,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAC1B,gBAAkC,EAClC,QAA4B;IAE5B,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAEzD,MAAM,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;IACrC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,aAAa,CACpB,QAA4B,EAC5B,MAAwB;IAExB,QAAQ,QAAQ,EAAE;QAChB,KAAK,kBAAkB,CAAC,GAAG;YACzB,OAAO,MAAM,CAAC,QAAQ,CAAC;QACzB,KAAK,kBAAkB,CAAC,IAAI;YAC1B,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,KAAK,kBAAkB,CAAC,KAAK;YAC3B,OAAO,MAAM,CAAC,UAAU,CAAC;QAC3B,KAAK,kBAAkB,CAAC,MAAM;YAC5B,OAAO,MAAM,CAAC,WAAW,CAAC;KAC7B;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,MAAM,GAAG,GAAG,sBAAsB,EAAE,CAAC;IACrC,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CACtB,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACpD,CAAC,GAAG,CAAC,CACN,CAAC;IACF,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,CAClC,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAC5C,CAAC;IACF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,OAAO,WAAW,CAAC,WAAW,CAAC,0BAA0B,CAAC,WAAW,CACnE,CAAC,IAAI,EAAE,EAAE;YACP,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACtC,CAAC,CACF,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAC;IAC/C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CACpD,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,CACvC,CAAC;IACF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,YAAY,CAAC,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QACrD,OAAO,yBAAyB,CAAC,+BAA+B,CAAC,WAAW,CAC1E,CAAC,IAAI,EAAE,EAAE;YACP,IAAI,IAAI,CAAC,aAAa,KAAK,aAAa;gBAAE,OAAO;YACjD,YAAY,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;QACtD,CAAC,CACF,CAAC;IACJ,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9B,OAAO,SAAS,CAAC;AACnB,CAAC","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 * as React from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { UiError } from \"@itwin/appui-abstract\";\nimport type { RectangleProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle, Size } from \"@itwin/core-react\";\nimport type {\n NineZoneDispatch,\n NineZoneState,\n PanelSide,\n} from \"@itwin/appui-layout-react\";\nimport {\n getTabLocation,\n getWidgetLocation,\n isFloatingTabLocation,\n isFloatingWidgetLocation,\n isPanelTabLocation,\n isPopoutTabLocation,\n isPopoutWidgetLocation,\n NineZoneStateReducer,\n panelSides,\n} from \"@itwin/appui-layout-react\";\nimport type { ContentControl } from \"../content/ContentControl\";\nimport type { ContentGroup } from \"../content/ContentGroup\";\nimport { ContentGroupProvider } from \"../content/ContentGroup\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout\";\nimport { StagePanelDef, StagePanelState } from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { WidgetControl } from \"../widgets/WidgetControl\";\nimport { WidgetDef, WidgetType } from \"../widgets/WidgetDef\";\nimport type { FrontstageProvider } from \"./FrontstageProvider\";\nimport { TimeTracker } from \"../configurableui/TimeTracker\";\nimport type { ChildWindowLocationProps } from \"../framework/FrameworkChildWindows\";\nimport { PopoutWidget } from \"../childwindow/PopoutWidget\";\nimport { BentleyStatus, ProcessDetector } from \"@itwin/core-bentley\";\nimport type { FrontstageConfig } from \"./FrontstageConfig\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig\";\nimport type { WidgetConfig } from \"../widgets/WidgetConfig\";\nimport { StageUsage } from \"./StageUsage\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { WidgetState } from \"../widgets/WidgetState\";\nimport { InternalFrontstageManager } from \"./InternalFrontstageManager\";\nimport { InternalContentDialogManager } from \"../dialog/InternalContentDialogManager\";\n\n/** @internal */\nexport interface FrontstageEventArgs {\n frontstageDef: FrontstageDef;\n}\n\n/** @internal */\nexport interface FrontstageNineZoneStateChangedEventArgs\n extends FrontstageEventArgs {\n state: NineZoneState | undefined;\n}\n\n/** FrontstageDef class provides an API for a Frontstage.\n * @public\n */\nexport class FrontstageDef {\n private _id: string = \"\";\n private _initialConfig?: FrontstageConfig;\n private _isStageClosing = false;\n private _isReady = false;\n private _isApplicationClosing = false;\n private _usage?: string;\n private _version: number = 0;\n private _toolSettings?: WidgetDef;\n private _statusBar?: WidgetDef;\n private _contentManipulation?: WidgetDef;\n private _viewNavigation?: WidgetDef;\n private _topPanel?: StagePanelDef;\n private _leftPanel?: StagePanelDef;\n private _rightPanel?: StagePanelDef;\n private _bottomPanel?: StagePanelDef;\n private _contentLayoutDef?: ContentLayoutDef;\n private _contentGroup?: ContentGroup;\n private _frontstageProvider?: FrontstageProvider;\n private _timeTracker = new TimeTracker();\n private _nineZoneState?: NineZoneState;\n private _contentGroupProvider?: ContentGroupProvider;\n private _floatingContentControls?: ContentControl[];\n private _toolAdminDefaultToolId?: string;\n private _dispatch?: NineZoneDispatch;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n public get floatingContentControls() {\n return this._floatingContentControls;\n }\n\n public get toolSettings(): WidgetDef | undefined {\n return this._toolSettings;\n }\n public get statusBar(): WidgetDef | undefined {\n return this._statusBar;\n }\n public get contentManipulation(): WidgetDef | undefined {\n return this._contentManipulation;\n }\n public get viewNavigation(): WidgetDef | undefined {\n return this._viewNavigation;\n }\n\n public get topPanel(): StagePanelDef | undefined {\n return this._topPanel;\n }\n public get leftPanel(): StagePanelDef | undefined {\n return this._leftPanel;\n }\n public get rightPanel(): StagePanelDef | undefined {\n return this._rightPanel;\n }\n public get bottomPanel(): StagePanelDef | undefined {\n return this._bottomPanel;\n }\n\n public get contentLayoutDef(): ContentLayoutDef | undefined {\n return this._contentLayoutDef;\n }\n public get contentGroup(): ContentGroup | undefined {\n return this._contentGroup;\n }\n public get frontstageProvider(): FrontstageProvider | undefined {\n return this._frontstageProvider;\n }\n\n private toStagePanelLocation(side: PanelSide): StagePanelLocation {\n switch (side) {\n case \"bottom\":\n return StagePanelLocation.Bottom;\n case \"left\":\n return StagePanelLocation.Left;\n case \"right\":\n return StagePanelLocation.Right;\n case \"top\":\n return StagePanelLocation.Top;\n }\n }\n\n private populateStateMaps(\n nineZone: NineZoneState,\n panelMap: Map<StagePanelDef, StagePanelState>,\n widgetMap: Map<WidgetDef, WidgetState>\n ) {\n for (const panelSide of panelSides) {\n const panel = nineZone.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n const panelState = panel.collapsed\n ? StagePanelState.Minimized\n : StagePanelState.Open;\n panelMap.set(panelDef, panelState);\n }\n\n for (const widgetDef of this.widgetDefs) {\n const widgetId = widgetDef.id;\n if (widgetDef === this.toolSettings) {\n if (!nineZone.toolSettings) {\n widgetMap.set(widgetDef, WidgetState.Hidden);\n continue;\n } else if (nineZone.toolSettings.type === \"docked\") {\n widgetMap.set(widgetDef, WidgetState.Open);\n continue;\n }\n }\n\n const tabLocation = getTabLocation(nineZone, widgetId);\n if (!tabLocation) {\n widgetMap.set(widgetDef, WidgetState.Hidden);\n continue;\n }\n\n const widget = nineZone.widgets[tabLocation.widgetId];\n let widgetState = WidgetState.Open;\n if (widget.minimized || widgetId !== widget.activeTabId)\n widgetState = WidgetState.Closed;\n widgetMap.set(widgetDef, widgetState);\n }\n }\n\n private triggerStateChangeEvents(oldState: NineZoneState) {\n const newState = this.nineZoneState;\n if (!newState) return;\n\n if (this._isStageClosing || this._isApplicationClosing) return;\n\n const originalPanelStateMap = new Map<StagePanelDef, StagePanelState>();\n const originalWidgetStateMap = new Map<WidgetDef, WidgetState>();\n const newPanelStateMap = new Map<StagePanelDef, StagePanelState>();\n const newWidgetStateMap = new Map<WidgetDef, WidgetState>();\n this.populateStateMaps(\n oldState,\n originalPanelStateMap,\n originalWidgetStateMap\n );\n this.populateStateMaps(newState, newPanelStateMap, newWidgetStateMap);\n\n // Now walk and trigger set state events\n newWidgetStateMap.forEach((newWidgetState, widgetDef) => {\n const originalState = originalWidgetStateMap.get(widgetDef);\n if (originalState === newWidgetState) return;\n widgetDef.handleWidgetStateChanged(newWidgetState);\n });\n newPanelStateMap.forEach((newPanelState, panelDef) => {\n const originalState = originalPanelStateMap.get(panelDef);\n if (originalState === newPanelState) return;\n panelDef.handlePanelStateChanged(newPanelState);\n });\n\n for (const panelSide of panelSides) {\n const panel = newState.panels[panelSide];\n const oldPanel = oldState.panels[panelSide];\n const location = this.toStagePanelLocation(panelSide);\n const panelDef = this.getStagePanelDef(location);\n if (!panelDef) continue;\n\n if (panel.size !== oldPanel.size) {\n panelDef.handleSizeChanged(panel.size);\n }\n\n if (panel.pinned !== oldPanel.pinned) {\n panelDef.handlePinnedChanged(panel.pinned);\n }\n }\n }\n\n private handlePopouts(oldState: NineZoneState | undefined) {\n const newState = this.nineZoneState;\n\n const oldPopouts = oldState?.popoutWidgets.allIds || [];\n const newPopouts = newState?.popoutWidgets.allIds || [];\n const popoutsToClose = oldPopouts.filter((p) => !newPopouts.includes(p));\n const popoutsToOpen = newPopouts.filter((p) => !oldPopouts.includes(p));\n\n for (const popoutId of popoutsToClose) {\n UiFramework.childWindows.close(popoutId, true);\n }\n\n for (const popoutId of popoutsToOpen) {\n this.openPopoutWidgetContainer(popoutId);\n }\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n if (action.type === \"RESIZE\") {\n InternalFrontstageManager.nineZoneSize = Size.create(action.size);\n }\n\n const state = this.nineZoneState;\n if (!state) return;\n this.nineZoneState = NineZoneStateReducer(state, action);\n });\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** Created a [[FrontstageDef]] and initialize it */\n public static async create(provider: FrontstageProvider) {\n const def = new FrontstageDef();\n def._frontstageProvider = provider;\n\n const config = provider.frontstageConfig();\n await def.initializeFromConfig(config);\n\n return def;\n }\n\n /** Handles when the Frontstage becomes activated */\n protected async _onActivated() {}\n\n /** Handles when the Frontstage becomes activated */\n public async onActivated() {\n this.updateWidgetDefs();\n\n const provider = this._contentGroupProvider;\n if (provider && this._initialConfig) {\n this._contentGroup = await provider.contentGroup(this._initialConfig);\n }\n\n // istanbul ignore next\n if (!this._contentGroup)\n throw new UiError(\n UiFramework.loggerCategory(this),\n `onActivated: Content Group not defined`\n );\n\n this._contentLayoutDef = UiFramework.content.layouts.getForGroup(\n this._contentGroup\n );\n UiFramework.frontstages.onContentLayoutActivatedEvent.emit({\n contentLayout: this._contentLayoutDef,\n contentGroup: this._contentGroup,\n });\n\n this._timeTracker.startTiming();\n await this._onActivated();\n }\n\n /** Handles when the Frontstage becomes inactive */\n protected async _onDeactivated() {}\n\n /** Handles when the Frontstage becomes inactive */\n public async onDeactivated() {\n for (const control of this._widgetControls) {\n control.onFrontstageDeactivated();\n }\n\n for (const control of this.contentControls) {\n control.onFrontstageDeactivated();\n }\n\n // istanbul ignore else\n if (this.contentGroup) this.contentGroup.onFrontstageDeactivated();\n // istanbul ignore next\n if (this.contentGroupProvider)\n await this.contentGroupProvider.onFrontstageDeactivated();\n\n this._timeTracker.stopTiming();\n\n this._isStageClosing = true; // this keeps widgets in child windows from automatically re-docking\n UiFramework.childWindows.closeAll();\n\n if (this._floatingContentControls) {\n InternalContentDialogManager.closeAll();\n this._floatingContentControls = undefined;\n }\n\n if (this._toolAdminDefaultToolId) {\n IModelApp.toolAdmin.defaultToolId = this._toolAdminDefaultToolId;\n this._toolAdminDefaultToolId = undefined;\n }\n\n await this._onDeactivated();\n this._isStageClosing = false;\n }\n\n /** @internal */\n public setIsApplicationClosing(value: boolean) {\n this._isApplicationClosing = value;\n }\n\n /** Returns once the contained widgets and content controls are ready to use */\n public async waitUntilReady(): Promise<void> {\n this._isReady = false;\n // create an array of control-ready promises\n const controlReadyPromises = new Array<Promise<void>>();\n this._widgetControls.forEach((control: WidgetControl) => {\n controlReadyPromises.push(control.isReady);\n });\n\n // istanbul ignore else\n if (this.contentLayoutDef) {\n const usedContentIndexes = this.contentLayoutDef.getUsedContentIndexes();\n this.contentControls.forEach((control: ContentControl, index: number) => {\n // istanbul ignore else\n if (usedContentIndexes.includes(index))\n controlReadyPromises.push(control.isReady);\n });\n }\n\n await Promise.all(controlReadyPromises);\n // Frontstage ready\n this._isReady = true;\n }\n\n /** Handles when the Frontstage becomes active */\n protected _onFrontstageReady(): void {}\n\n /** Handles when the Frontstage becomes active */\n public onFrontstageReady(): void {\n for (const control of this._widgetControls) {\n control.onFrontstageReady();\n }\n\n for (const control of this.contentControls) {\n control.onFrontstageReady();\n }\n\n // istanbul ignore else\n if (this.contentGroup) this.contentGroup.onFrontstageReady();\n\n if (IModelApp.toolAdmin && IModelApp.viewManager && this._initialConfig) {\n const defaultTool = this._initialConfig.defaultTool;\n if (defaultTool) {\n this._toolAdminDefaultToolId = IModelApp.toolAdmin.defaultToolId;\n IModelApp.toolAdmin.defaultToolId = defaultTool;\n void IModelApp.tools.run(defaultTool);\n } else {\n void IModelApp.toolAdmin.startDefaultTool();\n }\n }\n\n this._onFrontstageReady();\n }\n\n /** Sets the Content Layout and Content Group */\n public setContentLayoutAndGroup(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): void {\n this._contentLayoutDef = contentLayoutDef;\n this._contentGroup = contentGroup;\n }\n\n /** Sets the active view content control to the default or first */\n public async setActiveContent(): Promise<boolean> {\n let contentControl: ContentControl | undefined;\n let activated = false;\n\n // istanbul ignore else\n if (!contentControl && this.contentControls.length >= 0) {\n contentControl = this.contentControls[0];\n }\n\n if (contentControl) {\n UiFramework.content.setActive(contentControl.reactNode, true);\n if (contentControl.viewport) {\n const status = await IModelApp.viewManager.setSelectedView(\n contentControl.viewport\n );\n activated = status === BentleyStatus.SUCCESS;\n }\n }\n\n return activated;\n }\n\n /** Sets the active view content control */\n public setActiveView(\n newContent: ContentControl,\n oldContent?: ContentControl\n ): void {\n if (oldContent) oldContent.onDeactivated();\n newContent.onActivated();\n UiFramework.frontstages.onContentControlActivatedEvent.emit({\n activeContentControl: newContent,\n oldContentControl: oldContent,\n });\n }\n\n /** Sets the active view content control based on the selected viewport. */\n public setActiveViewFromViewport(viewport: ScreenViewport): boolean {\n const contentControl = this.contentControls.find(\n (control: ContentControl) => control.viewport === viewport\n );\n // istanbul ignore else\n if (contentControl) {\n UiFramework.content.setActive(contentControl.reactNode, true);\n return true;\n }\n\n // istanbul ignore next\n return false;\n }\n\n /** Gets a [[StagePanelDef]] based on a given panel location\n * @beta\n */\n public getStagePanelDef(\n location: StagePanelLocation\n ): StagePanelDef | undefined {\n let panelDef: StagePanelDef | undefined;\n\n switch (location) {\n case StagePanelLocation.Top:\n panelDef = this.topPanel;\n break;\n case StagePanelLocation.Left:\n panelDef = this.leftPanel;\n break;\n case StagePanelLocation.Right:\n panelDef = this.rightPanel;\n break;\n case StagePanelLocation.Bottom:\n panelDef = this.bottomPanel;\n break;\n }\n\n // Panels can be undefined in a Frontstage\n return panelDef;\n }\n\n /** Gets a list of [[StagePanelDef]]s\n * @beta\n */\n public get panelDefs(): StagePanelDef[] {\n const locations = [\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n StagePanelLocation.Top,\n StagePanelLocation.Bottom,\n ];\n const panels: StagePanelDef[] = [];\n\n locations.forEach((location: StagePanelLocation) => {\n const panel = this.getStagePanelDef(location);\n if (panel) panels.push(panel);\n });\n\n return panels;\n }\n\n /** Finds a [[WidgetDef]] based on a given id */\n public findWidgetDef(id: string): WidgetDef | undefined {\n for (const widgetDef of this.widgetDefs) {\n if (widgetDef.id === id) return widgetDef;\n }\n return undefined;\n }\n\n /** Gets the list of [[WidgetControl]]s */\n private get _widgetControls(): WidgetControl[] {\n const widgetControls = new Array<WidgetControl>();\n\n this.panelDefs.forEach((panelDef: StagePanelDef) => {\n panelDef.widgetDefs.forEach((widgetDef: WidgetDef) => {\n const widgetControl = widgetDef.widgetControl;\n // istanbul ignore if\n if (widgetControl) widgetControls.push(widgetControl);\n });\n });\n\n return widgetControls;\n }\n\n public addFloatingContentControl(contentControl?: ContentControl) {\n // istanbul ignore next\n if (!contentControl) return;\n if (!this._floatingContentControls)\n this._floatingContentControls = new Array<ContentControl>();\n\n this._floatingContentControls.push(contentControl);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n\n public dropFloatingContentControl(contentControl?: ContentControl) {\n // istanbul ignore next\n if (!contentControl || !this._floatingContentControls) return;\n\n const index = this._floatingContentControls.indexOf(contentControl);\n // istanbul ignore else\n if (index > -1) {\n this._floatingContentControls.splice(index, 1);\n UiFramework.content.onAvailableContentChangedEvent.emit({\n contentId: contentControl.uniqueId,\n });\n }\n }\n\n /** Gets the list of [[ContentControl]]s */\n public get contentControls(): ContentControl[] {\n const contentControls = new Array<ContentControl>();\n // istanbul ignore else\n if (this.contentGroup) {\n contentControls.push(...this.contentGroup.getContentControls());\n }\n if (this._floatingContentControls) {\n contentControls.push(...this._floatingContentControls);\n }\n return contentControls;\n }\n\n /** Initializes a FrontstageDef from FrontstageConfig.\n * @internal\n */\n public async initializeFromConfig(config: FrontstageConfig): Promise<void> {\n this._id = config.id;\n this._initialConfig = config;\n\n if (config.contentGroup instanceof ContentGroupProvider) {\n this._contentGroupProvider = config.contentGroup;\n } else {\n this._contentGroup = config.contentGroup;\n }\n\n this._usage = config.usage;\n this._version = config.version;\n\n this._toolSettings = createWidgetDef(\n config.toolSettings,\n WidgetType.ToolSettings\n );\n this._statusBar = createWidgetDef(config.statusBar, WidgetType.StatusBar);\n this._contentManipulation = createWidgetDef(\n config.contentManipulation,\n WidgetType.Tool\n );\n this._viewNavigation = createWidgetDef(\n config.viewNavigation,\n WidgetType.Navigation\n );\n this._topPanel = createStagePanelDef(config, StagePanelLocation.Top);\n this._leftPanel = createStagePanelDef(config, StagePanelLocation.Left);\n this._rightPanel = createStagePanelDef(config, StagePanelLocation.Right);\n this._bottomPanel = createStagePanelDef(config, StagePanelLocation.Bottom);\n }\n\n /** @internal */\n public updateWidgetDefs(): void {\n // Tracks provided widgets to prevent duplicates.\n const allStageWidgetDefs: WidgetDef[] = [];\n\n // Process panels before zones so extension can explicitly target a widget for a StagePanelSection\n this.panelDefs.forEach((stagePanelDef: StagePanelDef) => {\n stagePanelDef.updateDynamicWidgetDefs(\n this.id,\n this.usage,\n stagePanelDef.location,\n undefined,\n allStageWidgetDefs\n );\n });\n\n InternalFrontstageManager.onFrontstageWidgetsChangedEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Restores frontstage layout to initial configuration.\n * @beta\n */\n public restoreLayout() {\n for (const panelDef of this.panelDefs) {\n panelDef.size = panelDef.defaultSize;\n panelDef.panelState = panelDef.defaultState;\n }\n for (const widgetDef of this.widgetDefs) {\n widgetDef.setWidgetState(widgetDef.defaultState);\n }\n InternalFrontstageManager.onFrontstageRestoreLayoutEvent.emit({\n frontstageDef: this,\n });\n }\n\n /** Used only in UI 2.0 to determine WidgetState from NinezoneState\n * @internal\n */\n public getWidgetCurrentState(widgetDef: WidgetDef): WidgetState | undefined {\n const state = this.nineZoneState;\n\n // istanbul ignore else\n if (state) {\n const toolSettingsTabId = state.toolSettings?.tabId;\n if (\n toolSettingsTabId === widgetDef.id &&\n state.toolSettings?.type === \"docked\"\n ) {\n return WidgetState.Open;\n }\n\n const location = getTabLocation(state, widgetDef.id);\n\n // istanbul ignore next\n if (!location) return WidgetState.Hidden;\n\n if (isFloatingTabLocation(location)) {\n return WidgetState.Floating;\n }\n\n let collapsedPanel = false;\n // istanbul ignore else\n if (\"side\" in location) {\n const panel = state.panels[location.side];\n collapsedPanel =\n panel.collapsed || undefined === panel.size || 0 === panel.size;\n }\n const widgetContainer = state.widgets[location.widgetId];\n if (widgetDef.id === widgetContainer.activeTabId && !collapsedPanel)\n return WidgetState.Open;\n else return WidgetState.Closed;\n }\n return widgetDef.defaultState;\n }\n\n public isPopoutWidget(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location) return isPopoutTabLocation(location);\n }\n\n return false;\n }\n\n public isFloatingWidget(widgetId: string) {\n // istanbul ignore else\n if (this.nineZoneState) {\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location) return isFloatingTabLocation(location);\n }\n\n return false;\n }\n\n /** Create a new floating panel that contains the widget specified by its Id. Supported only when in\n * UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n if (!isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n const popoutContent = (\n <PopoutWidget\n widgetContainerId={widgetContainerId}\n widgetDef={widgetDef}\n />\n );\n\n const popoutWidget = state.popoutWidgets.byId[location.popoutWidgetId];\n const bounds = Rectangle.create(popoutWidget.bounds);\n const position: ChildWindowLocationProps = {\n width: bounds.getWidth(),\n height: bounds.getHeight(),\n left: bounds.left,\n top: bounds.top,\n };\n UiFramework.childWindows.open(\n widgetContainerId,\n widgetDef.label,\n popoutContent,\n position,\n UiFramework.useDefaultPopoutUrl\n );\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id. Supported only when in\n * UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: Window\n ) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, childWindowId);\n if (!location || !isPopoutWidgetLocation(location)) return;\n\n const widget = state.widgets[location.popoutWidgetId];\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return;\n\n const adjustmentWidth = ProcessDetector.isElectronAppFrontend ? 16 : 0;\n const adjustmentHeight = ProcessDetector.isElectronAppFrontend ? 39 : 0;\n\n const width = childWindow.innerWidth + adjustmentWidth;\n const height = childWindow.innerHeight + adjustmentHeight;\n const bounds = Rectangle.createFromSize({ width, height }).offset({\n x: childWindow.screenX,\n y: childWindow.screenY,\n });\n\n this.dispatch({\n type: \"WIDGET_TAB_SET_POPOUT_BOUNDS\",\n id: tabId,\n bounds,\n });\n }\n\n /** @internal */\n public dockWidgetContainerByContainerId(widgetContainerId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return;\n\n if (isFloatingWidgetLocation(location)) {\n this.dispatch({\n type: \"FLOATING_WIDGET_SEND_BACK\",\n id: location.floatingWidgetId,\n });\n return;\n }\n if (isPopoutWidgetLocation(location)) {\n this.dispatch({\n type: \"POPOUT_WIDGET_SEND_BACK\",\n id: location.popoutWidgetId,\n });\n return;\n }\n }\n\n /** Finds the container with the specified widget and re-docks all widgets\n * back to the panel zone location that was used when the floating container\n * was generated. Supported only when in UI 2.0 or higher.\n * @param widgetId case sensitive Widget Id.\n * @beta\n */\n public dockWidgetContainer(widgetId: string) {\n const state = this.nineZoneState;\n if (!state) return;\n\n const location = getTabLocation(state, widgetId);\n if (!location) return;\n\n this.dockWidgetContainerByContainerId(location.widgetId);\n }\n\n public setFloatingWidgetContainerBounds(\n floatingWidgetId: string,\n bounds: RectangleProps\n ) {\n if (\n !this.nineZoneState ||\n !(floatingWidgetId in this.nineZoneState.floatingWidgets.byId)\n )\n return false;\n\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_BOUNDS\",\n id: floatingWidgetId,\n bounds,\n });\n this.dispatch({\n type: \"FLOATING_WIDGET_SET_USER_SIZED\",\n id: floatingWidgetId,\n userSized: true,\n });\n return true;\n }\n\n public getFloatingWidgetContainerIds(): string[] {\n if (!this.nineZoneState) return [];\n\n return [...this.nineZoneState.floatingWidgets.allIds];\n }\n\n public getFloatingWidgetContainerIdByWidgetId(\n widgetId: string\n ): string | undefined {\n if (!this.nineZoneState) return undefined;\n\n const location = getTabLocation(this.nineZoneState, widgetId);\n // istanbul ignore else\n if (location && isFloatingTabLocation(location)) {\n return location.floatingWidgetId;\n }\n // istanbul ignore next\n return undefined;\n }\n\n public getFloatingWidgetContainerBounds(\n floatingWidgetId: string | undefined\n ) {\n if (!floatingWidgetId) return undefined;\n\n // istanbul ignore else\n if (\n this.nineZoneState &&\n floatingWidgetId in this.nineZoneState.floatingWidgets.byId\n ) {\n const foundWidget = document.querySelector(\n `div.nz-widget-floatingWidget[data-widget-id='${floatingWidgetId}']`\n );\n // istanbul ignore next\n if (foundWidget) {\n const domRect = foundWidget.getBoundingClientRect();\n return {\n left: domRect.left,\n right: domRect.right,\n top: domRect.top,\n bottom: domRect.bottom,\n };\n }\n return this.nineZoneState.floatingWidgets.byId[floatingWidgetId].bounds;\n }\n return undefined;\n }\n\n private *_widgetDefs(): Iterator<WidgetDef> {\n for (const panelDef of this.panelDefs) {\n for (const widgetDef of panelDef.widgetDefs) {\n yield widgetDef;\n }\n }\n if (this.toolSettings) yield this.toolSettings;\n if (this.statusBar) yield this.statusBar;\n return undefined;\n }\n\n /** Iterable of all widget definitions in a frontstage.\n * @internal\n */\n public get widgetDefs() {\n const defs = this._widgetDefs();\n return {\n [Symbol.iterator]() {\n return defs;\n },\n };\n }\n}\n\nfunction createWidgetDef(\n config: WidgetConfig | undefined,\n type: WidgetType\n): WidgetDef | undefined {\n if (!config) return undefined;\n\n const widgetDef = WidgetDef.create(config, type);\n return widgetDef;\n}\n\nfunction createStagePanelDef(\n frontstageConfig: FrontstageConfig,\n location: StagePanelLocation\n): StagePanelDef {\n const config = getStagePanel(location, frontstageConfig);\n\n const panelDef = new StagePanelDef();\n panelDef.initializeFromConfig(config, location);\n return panelDef;\n}\n\nfunction getStagePanel(\n location: StagePanelLocation,\n config: FrontstageConfig\n): StagePanelConfig | undefined {\n switch (location) {\n case StagePanelLocation.Top:\n return config.topPanel;\n case StagePanelLocation.Left:\n return config.leftPanel;\n case StagePanelLocation.Right:\n return config.rightPanel;\n case StagePanelLocation.Bottom:\n return config.bottomPanel;\n }\n}\n\n/** Hook that returns active frontstage id.\n * @public\n */\nexport const useActiveFrontstageId = () => {\n const def = useActiveFrontstageDef();\n const id = React.useMemo(\n () => (def ? /* istanbul ignore next */ def.id : \"\"),\n [def]\n );\n return id;\n};\n\n/** Hook to return the active Frontstage def.\n * @public\n */\nexport function useActiveFrontstageDef() {\n const [def, setDef] = React.useState(\n UiFramework.frontstages.activeFrontstageDef\n );\n React.useEffect(() => {\n return UiFramework.frontstages.onFrontstageActivatedEvent.addListener(\n (args) => {\n setDef(args.activatedFrontstageDef);\n }\n );\n }, []);\n return def;\n}\n\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\n * @public\n */\nexport function useSpecificWidgetDef(widgetId: string) {\n const frontstageDef = useActiveFrontstageDef();\n const [widgetDef, setWidgetDef] = React.useState(() =>\n frontstageDef?.findWidgetDef(widgetId)\n );\n React.useEffect(() => {\n setWidgetDef(frontstageDef?.findWidgetDef(widgetId));\n return InternalFrontstageManager.onFrontstageWidgetsChangedEvent.addListener(\n (args) => {\n if (args.frontstageDef !== frontstageDef) return;\n setWidgetDef(frontstageDef.findWidgetDef(widgetId));\n }\n );\n }, [frontstageDef, widgetId]);\n return widgetDef;\n}\n"]}
|
|
@@ -11,7 +11,7 @@ import { ContentLayoutActivatedEvent } from "../content/ContentLayout";
|
|
|
11
11
|
import { NavigationAidActivatedEvent } from "../navigationaids/NavigationAidControl";
|
|
12
12
|
import type { PanelPinnedChangedEventArgs } from "../stagepanels/StagePanelDef";
|
|
13
13
|
import { PanelSizeChangedEvent, PanelStateChangedEvent } from "../stagepanels/StagePanelDef";
|
|
14
|
-
import type {
|
|
14
|
+
import type { WidgetDef } from "../widgets/WidgetDef";
|
|
15
15
|
import { WidgetStateChangedEvent } from "../widgets/WidgetDef";
|
|
16
16
|
import { ToolInformation } from "../toolsettings/ToolInformation";
|
|
17
17
|
import type { ToolUiProvider } from "../toolsettings/ToolUiProvider";
|
|
@@ -91,12 +91,6 @@ export declare class InternalFrontstageManager {
|
|
|
91
91
|
/** Get Widget State Changed event. */
|
|
92
92
|
static readonly onWidgetStateChangedEvent: WidgetStateChangedEvent;
|
|
93
93
|
/** @internal */
|
|
94
|
-
static readonly onWidgetLabelChangedEvent: UiEvent<WidgetChangedEventArgs>;
|
|
95
|
-
/** @internal */
|
|
96
|
-
static readonly onWidgetShowEvent: UiEvent<WidgetEventArgs>;
|
|
97
|
-
/** @internal */
|
|
98
|
-
static readonly onWidgetExpandEvent: UiEvent<WidgetEventArgs>;
|
|
99
|
-
/** @internal */
|
|
100
94
|
static readonly onWidgetDefsUpdatedEvent: UiEvent<void>;
|
|
101
95
|
/** @internal */
|
|
102
96
|
static readonly onFrontstageNineZoneStateChangedEvent: UiEvent<FrontstageNineZoneStateChangedEventArgs>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalFrontstageManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/InternalFrontstageManager.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EACV,gBAAgB,EAGhB,IAAI,EACL,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAC;AACrF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"InternalFrontstageManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/InternalFrontstageManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -517,12 +517,6 @@ InternalFrontstageManager.onNavigationAidActivatedEvent = new NavigationAidActiv
|
|
|
517
517
|
/** Get Widget State Changed event. */
|
|
518
518
|
InternalFrontstageManager.onWidgetStateChangedEvent = new WidgetStateChangedEvent();
|
|
519
519
|
/** @internal */
|
|
520
|
-
InternalFrontstageManager.onWidgetLabelChangedEvent = new UiEvent();
|
|
521
|
-
/** @internal */
|
|
522
|
-
InternalFrontstageManager.onWidgetShowEvent = new UiEvent();
|
|
523
|
-
/** @internal */
|
|
524
|
-
InternalFrontstageManager.onWidgetExpandEvent = new UiEvent();
|
|
525
|
-
/** @internal */
|
|
526
520
|
InternalFrontstageManager.onWidgetDefsUpdatedEvent = new UiEvent();
|
|
527
521
|
/** @internal */
|
|
528
522
|
InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent = new UiEvent();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalFrontstageManager.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/InternalFrontstageManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n IModelConnection,\n SelectedViewportChangedArgs,\n StartOrResume,\n Tool,\n} from \"@itwin/core-frontend\";\nimport { IModelApp, InteractiveTool } from \"@itwin/core-frontend\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { Size } from \"@itwin/core-react\";\nimport { ContentControlActivatedEvent } from \"../content/ContentControl\";\nimport type { ContentGroup } from \"../content/ContentGroup\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout\";\nimport { ContentLayoutActivatedEvent } from \"../content/ContentLayout\";\nimport { NavigationAidActivatedEvent } from \"../navigationaids/NavigationAidControl\";\nimport type { PanelPinnedChangedEventArgs } from \"../stagepanels/StagePanelDef\";\nimport {\n PanelSizeChangedEvent,\n PanelStateChangedEvent,\n} from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport type {\n WidgetChangedEventArgs,\n WidgetDef,\n WidgetEventArgs,\n} from \"../widgets/WidgetDef\";\nimport { WidgetStateChangedEvent } from \"../widgets/WidgetDef\";\nimport { ToolInformation } from \"../toolsettings/ToolInformation\";\nimport type { ToolUiProvider } from \"../toolsettings/ToolUiProvider\";\nimport type {\n FrontstageEventArgs,\n FrontstageNineZoneStateChangedEventArgs,\n} from \"./FrontstageDef\";\nimport { FrontstageDef } from \"./FrontstageDef\";\nimport type { FrontstageProvider } from \"./FrontstageProvider\";\nimport { TimeTracker } from \"../configurableui/TimeTracker\";\nimport type { WidgetState } from \"../widgets/WidgetState\";\nimport type {\n ModalFrontstageInfo,\n ModalFrontstageItem,\n} from \"../framework/FrameworkFrontstages\";\nimport {\n FrontstageActivatedEvent,\n FrontstageDeactivatedEvent,\n FrontstageReadyEvent,\n ModalFrontstageChangedEvent,\n ModalFrontstageClosedEvent,\n ModalFrontstageRequestedCloseEvent,\n ToolActivatedEvent,\n ToolIconChangedEvent,\n} from \"../framework/FrameworkFrontstages\";\nimport type { SyncToolSettingsPropertiesEventArgs } from \"../framework/FrameworkToolSettings\";\n\n/** Frontstage Manager class.\n * @internal\n */\nexport class InternalFrontstageManager {\n private static _initialized = false;\n private static _isLoading = false;\n private static _activeToolId = \"\";\n private static _activeFrontstageDef: FrontstageDef | undefined;\n private static _frontstageDefs = new Map<string, FrontstageDef>();\n private static _modalFrontstages: ModalFrontstageItem[] =\n new Array<ModalFrontstageItem>();\n private static _frontstageProviders = new Map<string, FrontstageProvider>();\n private static _nineZoneSize: Size | undefined = undefined;\n\n private static _nestedFrontstages: FrontstageDef[] =\n new Array<FrontstageDef>();\n private static _activePrimaryFrontstageDef: FrontstageDef | undefined;\n private static _toolInformationMap: Map<string, ToolInformation> = new Map<\n string,\n ToolInformation\n >();\n\n /** This should only be called within InternalFrontstageManager and its tests.\n * @internal\n */\n public static ensureToolInformationIsSet(toolId: string): void {\n // istanbul ignore else\n if (!InternalFrontstageManager._toolInformationMap.get(toolId))\n InternalFrontstageManager._toolInformationMap.set(\n toolId,\n new ToolInformation(toolId)\n );\n }\n\n // pass on SyncToolSettingsPropertiesEvent from ToolAdmin so they are treated as DialogItemSync events\n private static handleSyncToolSettingsPropertiesEvent(\n args: SyncToolSettingsPropertiesEventArgs\n ): void {\n InternalFrontstageManager.activeToolSettingsProvider &&\n InternalFrontstageManager.activeToolSettingsProvider.syncToolSettingsProperties(\n args\n );\n }\n\n // pass on ReloadToolSettingsEvent from ToolAdmin so they are treated by UiProviders\n private static handleReloadToolSettingsEvent(): void {\n // istanbul ignore else\n if (InternalFrontstageManager.activeToolSettingsProvider) {\n InternalFrontstageManager.activeToolSettingsProvider.reloadPropertiesFromTool();\n }\n }\n\n /** Initializes the InternalFrontstageManager\n * @internal\n */\n public static initialize() {\n if (this._initialized) return;\n\n // istanbul ignore else\n if (IModelApp && IModelApp.toolAdmin) {\n IModelApp.toolAdmin.activeToolChanged.addListener(\n (tool: Tool, _start: StartOrResume) => {\n // make sure tool settings properties are cached before creating ToolInformation\n UiFramework.toolSettings.clearToolSettingsData();\n // istanbul ignore else\n if (tool instanceof InteractiveTool)\n UiFramework.toolSettings.initializeDataForTool(tool);\n\n // if the tool data is not already cached then see if there is data to cache\n InternalFrontstageManager.ensureToolInformationIsSet(tool.toolId);\n InternalFrontstageManager.setActiveTool(tool);\n }\n );\n UiFramework.toolSettings.onSyncToolSettingsProperties.addListener(\n InternalFrontstageManager.handleSyncToolSettingsPropertiesEvent\n );\n UiFramework.toolSettings.onReloadToolSettingsProperties.addListener(\n InternalFrontstageManager.handleReloadToolSettingsEvent\n );\n }\n\n // istanbul ignore else\n if (IModelApp && IModelApp.viewManager) {\n IModelApp.viewManager.onSelectedViewportChanged.addListener(\n InternalFrontstageManager._handleSelectedViewportChanged\n );\n }\n\n this._initialized = true;\n }\n\n /** Handles a Viewport change & sets the active view accordingly */\n private static _handleSelectedViewportChanged = (\n args: SelectedViewportChangedArgs\n ) => {\n // istanbul ignore else\n if (\n args.current &&\n InternalFrontstageManager.activeFrontstageDef &&\n !InternalFrontstageManager.isLoading\n ) {\n InternalFrontstageManager.activeFrontstageDef.setActiveViewFromViewport(\n args.current\n );\n }\n };\n\n /** @internal */\n public static get isInitialized(): boolean {\n return InternalFrontstageManager._initialized;\n }\n public static set isInitialized(v: boolean) {\n InternalFrontstageManager._initialized = v;\n }\n\n /** Returns true if Frontstage is loading its controls. If false the Frontstage content and controls have been created. */\n public static get isLoading(): boolean {\n return InternalFrontstageManager._isLoading;\n }\n\n /** @internal */\n public static get nineZoneSize() {\n return InternalFrontstageManager._nineZoneSize;\n }\n\n public static set nineZoneSize(size) {\n InternalFrontstageManager._nineZoneSize = size;\n }\n\n /** @internal */\n public static get frontstageDefs(): ReadonlyMap<string, FrontstageDef> {\n return this._frontstageDefs;\n }\n\n /** Get Frontstage Deactivated event. */\n public static readonly onFrontstageDeactivatedEvent =\n new FrontstageDeactivatedEvent();\n\n /** Get Frontstage Activated event. */\n public static readonly onFrontstageActivatedEvent =\n new FrontstageActivatedEvent();\n\n /** Get Frontstage Activated event. */\n public static readonly onFrontstageReadyEvent = new FrontstageReadyEvent();\n\n /** Get Modal Frontstage Changed event. */\n public static readonly onModalFrontstageChangedEvent =\n new ModalFrontstageChangedEvent();\n\n /** Get Modal Frontstage Closed event. */\n public static readonly onModalFrontstageClosedEvent =\n new ModalFrontstageClosedEvent();\n\n /** Get Modal Frontstage Requested Closed event.\n * @alpha\n */\n public static readonly onCloseModalFrontstageRequestedEvent =\n new ModalFrontstageRequestedCloseEvent();\n\n /** Get Tool Activated event. */\n public static readonly onToolActivatedEvent = new ToolActivatedEvent();\n\n /** Get ToolSetting Reload event. */\n public static readonly onToolSettingsReloadEvent = new UiEvent<void>();\n\n /** Get Tool Panel Opened event.\n * @internal\n */\n public static readonly onToolPanelOpenedEvent = new UiEvent<void>();\n\n /** Get Tool Icon Changed event. */\n public static readonly onToolIconChangedEvent = new ToolIconChangedEvent();\n\n /** Get Content Layout Activated event. */\n public static readonly onContentLayoutActivatedEvent =\n new ContentLayoutActivatedEvent();\n\n /** Get Content Control Activated event. */\n public static readonly onContentControlActivatedEvent =\n new ContentControlActivatedEvent();\n\n /** Get Navigation Aid Activated event. */\n public static readonly onNavigationAidActivatedEvent =\n new NavigationAidActivatedEvent();\n\n /** Get Widget State Changed event. */\n public static readonly onWidgetStateChangedEvent =\n new WidgetStateChangedEvent();\n\n /** @internal */\n public static readonly onWidgetLabelChangedEvent =\n new UiEvent<WidgetChangedEventArgs>();\n\n /** @internal */\n public static readonly onWidgetShowEvent = new UiEvent<WidgetEventArgs>();\n\n /** @internal */\n public static readonly onWidgetExpandEvent = new UiEvent<WidgetEventArgs>();\n\n /** @internal */\n public static readonly onWidgetDefsUpdatedEvent = new UiEvent<void>();\n\n /** @internal */\n public static readonly onFrontstageNineZoneStateChangedEvent =\n new UiEvent<FrontstageNineZoneStateChangedEventArgs>();\n\n /** @internal */\n public static readonly onFrontstageRestoreLayoutEvent =\n new UiEvent<FrontstageEventArgs>();\n\n /** @internal */\n public static readonly onFrontstageWidgetsChangedEvent =\n new UiEvent<FrontstageEventArgs>();\n\n /** Get panel state changed event.\n * @alpha\n */\n public static readonly onPanelStateChangedEvent =\n new PanelStateChangedEvent();\n\n /** Get panel pinned changed event.\n * @alpha\n */\n public static readonly onPanelPinnedChangedEvent =\n new UiEvent<PanelPinnedChangedEventArgs>();\n\n /** @internal */\n public static readonly onPanelSizeChangedEvent = new PanelSizeChangedEvent();\n\n /** Clears the Frontstage map.\n */\n public static clearFrontstageDefs(): void {\n InternalFrontstageManager._frontstageDefs.clear();\n InternalFrontstageManager._activeFrontstageDef = undefined;\n }\n\n /** Clears the Frontstage Providers and the defs that may have been created from them.\n */\n public static clearFrontstageProviders(): void {\n InternalFrontstageManager._frontstageProviders.clear();\n InternalFrontstageManager.clearFrontstageDefs();\n }\n\n private static getFrontstageKey(frontstageId: string) {\n return frontstageId;\n }\n\n /** @internal */\n public static clearFrontstageDefsForIModelId(iModelId: string | undefined) {\n // istanbul ignore next\n if (!iModelId) return;\n const keysToRemove: string[] = [];\n InternalFrontstageManager._frontstageDefs.forEach(\n (_: FrontstageDef, key: string) => {\n if (key.startsWith(`[${iModelId}]`)) keysToRemove.push(key);\n }\n );\n keysToRemove.forEach((keyValue) => {\n InternalFrontstageManager._frontstageDefs.delete(keyValue);\n });\n }\n\n /** Add a Frontstage via a [[FrontstageProvider]].\n * @param frontstageProvider FrontstageProvider representing the Frontstage to add\n */\n public static addFrontstageProvider(\n frontstageProvider: FrontstageProvider\n ): void {\n const key = InternalFrontstageManager.getFrontstageKey(\n frontstageProvider.id\n );\n key && InternalFrontstageManager._frontstageDefs.delete(key);\n InternalFrontstageManager._frontstageProviders.set(\n frontstageProvider.id,\n frontstageProvider\n );\n }\n\n /** Find a loaded Frontstage with a given id. If the id is not provided, the active Frontstage is returned.\n * If the FrontstageDef has not been cached by FrontstageDef then it will not be found. See async function\n * `getFrontstageDef` to get a FrontstageDef.\n * @param id Id of the Frontstage to find\n * @returns FrontstageDef with a given id if found, or undefined if not found.\n */\n private static findFrontstageDef(id: string): FrontstageDef | undefined {\n const key = InternalFrontstageManager.getFrontstageKey(id);\n const frontstageDef = InternalFrontstageManager._frontstageDefs.get(key);\n if (frontstageDef instanceof FrontstageDef) return frontstageDef;\n return undefined;\n }\n\n private static findFrontstageProvider(\n id?: string\n ): FrontstageProvider | undefined {\n return id\n ? InternalFrontstageManager._frontstageProviders.get(id)\n : undefined;\n }\n\n /** Find a loaded Frontstage with a given id. If the id is not provided, the active Frontstage is returned. If\n * no cached FrontstageDef is found but a FrontstageProvider is registered a FrontstageDef will be created, cached, and\n * returned.\n * @param id Id of the Frontstage to find\n * @returns FrontstageDef with a given id if found, or undefined if not found.\n */\n public static async getFrontstageDef(\n id?: string\n ): Promise<FrontstageDef | undefined> {\n if (!id) return InternalFrontstageManager.activeFrontstageDef;\n\n let frontstageDef = InternalFrontstageManager.findFrontstageDef(id);\n if (frontstageDef) return frontstageDef;\n\n // istanbul ignore else\n if (id) {\n const frontstageProvider =\n InternalFrontstageManager.findFrontstageProvider(id);\n if (frontstageProvider) {\n frontstageDef = await FrontstageDef.create(frontstageProvider);\n // istanbul ignore else\n if (frontstageDef) {\n const key = InternalFrontstageManager.getFrontstageKey(\n frontstageDef.id\n );\n InternalFrontstageManager._frontstageDefs.set(key, frontstageDef);\n }\n return frontstageDef;\n }\n }\n\n return undefined;\n }\n\n /** Gets the active FrontstageDef. If a Frontstage is not active, undefined is returned.\n * @return Active FrontstageDef, or undefined if one is not active.\n */\n public static get activeFrontstageDef(): FrontstageDef | undefined {\n return InternalFrontstageManager._activeFrontstageDef;\n }\n\n /** Gets the Id of the active FrontstageDef. If a Frontstage is not active, blank is returned.\n * @return Id of the active FrontstageDef, or blank if one is not active.\n */\n public static get activeFrontstageId(): string {\n const activeFrontstage = InternalFrontstageManager._activeFrontstageDef;\n return activeFrontstage ? activeFrontstage.id : \"\";\n }\n\n public static hasFrontstage(frontstageId: string) {\n if (InternalFrontstageManager.findFrontstageDef(frontstageId)) return true;\n if (InternalFrontstageManager.findFrontstageProvider(frontstageId))\n return true;\n return false;\n }\n\n /** Sets the active FrontstageDef give the stageId.\n * @param frontstageId Id of the Frontstage to set active.\n * @returns A Promise that is fulfilled when the [[Frontstage]] is ready.\n */\n public static async setActiveFrontstage(frontstageId: string): Promise<void> {\n const frontstageDef = await InternalFrontstageManager.getFrontstageDef(\n frontstageId\n );\n if (!frontstageDef) {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `setActiveFrontstage: Could not load a FrontstageDef with id of '${frontstageId}'`\n );\n return;\n }\n\n return InternalFrontstageManager.setActiveFrontstageDef(frontstageDef);\n }\n\n /** Sets the active FrontstageDef.\n * @param frontstageDef FrontstageDef to set active.\n * @returns A Promise that is fulfilled when the [[FrontstageDef]] is ready.\n */\n public static async setActiveFrontstageDef(\n frontstageDef: FrontstageDef | undefined\n ): Promise<void> {\n if (InternalFrontstageManager._activeFrontstageDef === frontstageDef)\n return;\n\n InternalFrontstageManager._isLoading = true;\n\n const deactivatedFrontstageDef =\n InternalFrontstageManager._activeFrontstageDef;\n if (deactivatedFrontstageDef) {\n await deactivatedFrontstageDef.onDeactivated();\n\n const timeTracker = deactivatedFrontstageDef.timeTracker;\n InternalFrontstageManager.onFrontstageDeactivatedEvent.emit({\n deactivatedFrontstageDef,\n activatedFrontstageDef: frontstageDef,\n totalTime: timeTracker.getTotalTimeSeconds(),\n engagementTime: timeTracker.getEngagementTimeSeconds(),\n idleTime: timeTracker.getIdleTimeSeconds(),\n });\n }\n\n InternalFrontstageManager._activeFrontstageDef = frontstageDef;\n\n if (frontstageDef) {\n await frontstageDef.onActivated();\n\n InternalFrontstageManager.onFrontstageActivatedEvent.emit({\n activatedFrontstageDef: frontstageDef,\n deactivatedFrontstageDef,\n });\n\n await frontstageDef.waitUntilReady();\n InternalFrontstageManager._isLoading = false;\n frontstageDef.onFrontstageReady();\n InternalFrontstageManager.onFrontstageReadyEvent.emit({ frontstageDef });\n UiFramework.visibility.handleFrontstageReady();\n\n await frontstageDef.setActiveContent();\n }\n\n InternalFrontstageManager._isLoading = false;\n }\n\n /** Deactivates the active FrontstageDef.\n */\n public static async deactivateFrontstageDef(): Promise<void> {\n await this.setActiveFrontstageDef(undefined);\n }\n\n /** Gets the Id of the active tool. If a tool is not active, blank is returned.\n * @return Id of the active tool, or blank if one is not active.\n */\n public static get activeToolId(): string {\n return InternalFrontstageManager._activeToolId;\n }\n\n /** Sets the active tool id */\n public static setActiveToolId(toolId: string): void {\n InternalFrontstageManager._activeToolId = toolId;\n const toolSettingsProvider =\n InternalFrontstageManager.activeToolSettingsProvider;\n // ensure the toolSettingsProvider is initialized before emitting onToolActivatedEvent\n if (toolSettingsProvider) toolSettingsProvider.initialize();\n InternalFrontstageManager.onToolActivatedEvent.emit({ toolId });\n }\n\n /** Sets the active tool */\n public static setActiveTool(tool: Tool): void {\n InternalFrontstageManager.setActiveToolId(tool.toolId);\n InternalFrontstageManager.onToolIconChangedEvent.emit({\n iconSpec: tool.iconSpec,\n });\n }\n\n /** Gets the active tool's [[ToolInformation]] */\n public static get activeToolInformation(): ToolInformation | undefined {\n return InternalFrontstageManager._toolInformationMap.get(\n InternalFrontstageManager.activeToolId\n );\n }\n\n /** Gets the Tool Setting React node of the active tool.\n * @return Tool Setting React node of the active tool, or undefined if there is no active tool or Tool Settings for the active tool.\n * @internal\n */\n public static get activeToolSettingsProvider(): ToolUiProvider | undefined {\n const activeToolInformation =\n InternalFrontstageManager.activeToolInformation;\n return activeToolInformation\n ? activeToolInformation.toolUiProvider\n : /* istanbul ignore next */ undefined;\n }\n\n /** Sets the active layout, content group and active content.\n * @param contentLayoutDef Content layout to make active\n * @param contentGroup Content Group to make active\n */\n public static async setActiveLayout(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): Promise<void> {\n const activeFrontstageDef = InternalFrontstageManager.activeFrontstageDef;\n // istanbul ignore else\n if (activeFrontstageDef) {\n InternalFrontstageManager._isLoading = false;\n\n activeFrontstageDef.setContentLayoutAndGroup(\n contentLayoutDef,\n contentGroup\n );\n InternalFrontstageManager.onContentLayoutActivatedEvent.emit({\n contentLayout: contentLayoutDef,\n contentGroup,\n });\n\n await activeFrontstageDef.waitUntilReady();\n InternalFrontstageManager._isLoading = false;\n\n await activeFrontstageDef.setActiveContent();\n }\n }\n\n /** Sets the active layout, content group and active content.\n * @param contentGroup Content Group to make active\n */\n public static async setActiveContentGroup(\n contentGroup: ContentGroup\n ): Promise<void> {\n const contentLayoutDef =\n UiFramework.content.layouts.getForGroup(contentGroup);\n await InternalFrontstageManager.setActiveLayout(\n contentLayoutDef,\n contentGroup\n );\n }\n\n /** Opens a modal Frontstage. Modal Frontstages can be stacked.\n * @param modalFrontstage Information about the modal Frontstage\n */\n public static openModalFrontstage(\n modalFrontstage: ModalFrontstageInfo\n ): void {\n InternalFrontstageManager.pushModalFrontstage(modalFrontstage);\n }\n\n private static pushModalFrontstage(\n modalFrontstage: ModalFrontstageInfo\n ): void {\n const timeTracker = new TimeTracker();\n timeTracker.startTiming();\n const frontstageItem: ModalFrontstageItem = {\n modalFrontstage,\n timeTracker,\n };\n InternalFrontstageManager._modalFrontstages.push(frontstageItem);\n InternalFrontstageManager.emitModalFrontstageChangedEvent();\n }\n\n /** Closes the top-most modal Frontstage.\n */\n public static closeModalFrontstage(): void {\n // istanbul ignore else\n if (InternalFrontstageManager._modalFrontstages.length > 0) {\n const topMostStageItem =\n InternalFrontstageManager._modalFrontstages[\n InternalFrontstageManager._modalFrontstages.length - 1\n ];\n if (topMostStageItem.modalFrontstage.notifyCloseRequest)\n InternalFrontstageManager.onCloseModalFrontstageRequestedEvent.emit({\n modalFrontstage: topMostStageItem.modalFrontstage,\n stageCloseFunc: InternalFrontstageManager.popModalFrontstage,\n });\n else InternalFrontstageManager.popModalFrontstage();\n }\n }\n\n private static popModalFrontstage(): void {\n const frontstageItem = InternalFrontstageManager._modalFrontstages.pop();\n // istanbul ignore else\n if (frontstageItem) {\n const modalFrontstage = frontstageItem.modalFrontstage;\n const timeTracker = frontstageItem.timeTracker;\n timeTracker.stopTiming();\n InternalFrontstageManager.onModalFrontstageClosedEvent.emit({\n modalFrontstage,\n totalTime: timeTracker.getTotalTimeSeconds(),\n engagementTime: timeTracker.getEngagementTimeSeconds(),\n idleTime: timeTracker.getIdleTimeSeconds(),\n });\n }\n\n InternalFrontstageManager.emitModalFrontstageChangedEvent();\n\n UiFramework.visibility.handleFrontstageReady();\n }\n\n private static emitModalFrontstageChangedEvent(): void {\n InternalFrontstageManager.onModalFrontstageChangedEvent.emit({\n modalFrontstageCount: InternalFrontstageManager.modalFrontstageCount,\n });\n }\n\n /** Updates the top-most modal Frontstage.\n */\n public static updateModalFrontstage(): void {\n InternalFrontstageManager.emitModalFrontstageChangedEvent();\n }\n\n /** Gets the top-most modal Frontstage.\n * @returns Top-most modal Frontstage, or undefined if there is none.\n */\n public static get activeModalFrontstage(): ModalFrontstageInfo | undefined {\n if (InternalFrontstageManager._modalFrontstages.length > 0) {\n const frontstageItem =\n InternalFrontstageManager._modalFrontstages[\n InternalFrontstageManager._modalFrontstages.length - 1\n ];\n const modalFrontstage = frontstageItem.modalFrontstage;\n return modalFrontstage;\n } else {\n return undefined;\n }\n }\n\n /** Gets the number of modal Frontstages.\n * @returns Modal Frontstage count\n */\n public static get modalFrontstageCount(): number {\n return InternalFrontstageManager._modalFrontstages.length;\n }\n\n /** Sets the active Navigation Aid via its Id.\n * @param navigationAidId Id of the Navigation Aid to set as active\n * @param iModelConnection IModelConnection to query for view data\n */\n public static setActiveNavigationAid(\n navigationAidId: string,\n iModelConnection: IModelConnection\n ) {\n InternalFrontstageManager.onNavigationAidActivatedEvent.emit({\n navigationAidId,\n iModelConnection,\n });\n }\n\n /** Sets the state of the widget with the given id\n * @param widgetId Id of the Widget for which to set the state\n * @param state New state of the widget\n * @returns true if the widget state was set successfully, or false if not.\n */\n public static setWidgetState(widgetId: string, state: WidgetState): boolean {\n const widgetDef = InternalFrontstageManager.findWidget(widgetId);\n if (widgetDef) {\n widgetDef.setWidgetState(state);\n return true;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `setWidgetState: Could not find Widget with id of '${widgetId}'`\n );\n }\n\n return false;\n }\n\n /** Finds a widget with the given id in the active frontstage\n * @param widgetId Id of the Widget to find\n * @returns The WidgetDef with the given id, or undefined if not found.\n */\n public static findWidget(widgetId: string): WidgetDef | undefined {\n const activeFrontstageDef = InternalFrontstageManager.activeFrontstageDef;\n\n // istanbul ignore else\n if (activeFrontstageDef) return activeFrontstageDef.findWidgetDef(widgetId);\n\n return undefined;\n }\n\n /** Opens a nested Frontstage. Nested Frontstages can be stacked.\n * @param nestedFrontstage Information about the nested Frontstage\n */\n public static async openNestedFrontstage(\n nestedFrontstage: FrontstageDef\n ): Promise<void> {\n if (InternalFrontstageManager.nestedFrontstageCount === 0)\n InternalFrontstageManager._activePrimaryFrontstageDef =\n InternalFrontstageManager._activeFrontstageDef;\n\n InternalFrontstageManager.pushNestedFrontstage(nestedFrontstage);\n\n await InternalFrontstageManager.setActiveFrontstageDef(nestedFrontstage);\n }\n\n private static pushNestedFrontstage(nestedFrontstage: FrontstageDef): void {\n InternalFrontstageManager._nestedFrontstages.push(nestedFrontstage);\n }\n\n /** Closes the top-most nested Frontstage.\n */\n public static async closeNestedFrontstage(): Promise<void> {\n InternalFrontstageManager.popNestedFrontstage();\n\n if (InternalFrontstageManager.nestedFrontstageCount > 0) {\n await InternalFrontstageManager.setActiveFrontstageDef(\n InternalFrontstageManager.activeNestedFrontstage\n );\n } else {\n await InternalFrontstageManager.setActiveFrontstageDef(\n InternalFrontstageManager._activePrimaryFrontstageDef\n );\n InternalFrontstageManager._activePrimaryFrontstageDef = undefined;\n }\n }\n\n private static popNestedFrontstage(): void {\n InternalFrontstageManager._nestedFrontstages.pop();\n }\n\n /** Gets the top-most nested Frontstage.\n * @returns Top-most nested Frontstage, or undefined if there is none.\n */\n public static get activeNestedFrontstage(): FrontstageDef | undefined {\n // istanbul ignore else\n if (InternalFrontstageManager._nestedFrontstages.length > 0)\n return InternalFrontstageManager._nestedFrontstages[\n InternalFrontstageManager._nestedFrontstages.length - 1\n ];\n\n return undefined;\n }\n\n /** Gets the number of nested Frontstages.\n * @returns Nested Frontstage count\n */\n public static get nestedFrontstageCount(): number {\n return InternalFrontstageManager._nestedFrontstages.length;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InternalFrontstageManager.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/InternalFrontstageManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport type {\n IModelConnection,\n SelectedViewportChangedArgs,\n StartOrResume,\n Tool,\n} from \"@itwin/core-frontend\";\nimport { IModelApp, InteractiveTool } from \"@itwin/core-frontend\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { Size } from \"@itwin/core-react\";\nimport { ContentControlActivatedEvent } from \"../content/ContentControl\";\nimport type { ContentGroup } from \"../content/ContentGroup\";\nimport type { ContentLayoutDef } from \"../content/ContentLayout\";\nimport { ContentLayoutActivatedEvent } from \"../content/ContentLayout\";\nimport { NavigationAidActivatedEvent } from \"../navigationaids/NavigationAidControl\";\nimport type { PanelPinnedChangedEventArgs } from \"../stagepanels/StagePanelDef\";\nimport {\n PanelSizeChangedEvent,\n PanelStateChangedEvent,\n} from \"../stagepanels/StagePanelDef\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { WidgetDef } from \"../widgets/WidgetDef\";\nimport { WidgetStateChangedEvent } from \"../widgets/WidgetDef\";\nimport { ToolInformation } from \"../toolsettings/ToolInformation\";\nimport type { ToolUiProvider } from \"../toolsettings/ToolUiProvider\";\nimport type {\n FrontstageEventArgs,\n FrontstageNineZoneStateChangedEventArgs,\n} from \"./FrontstageDef\";\nimport { FrontstageDef } from \"./FrontstageDef\";\nimport type { FrontstageProvider } from \"./FrontstageProvider\";\nimport { TimeTracker } from \"../configurableui/TimeTracker\";\nimport type { WidgetState } from \"../widgets/WidgetState\";\nimport type {\n ModalFrontstageInfo,\n ModalFrontstageItem,\n} from \"../framework/FrameworkFrontstages\";\nimport {\n FrontstageActivatedEvent,\n FrontstageDeactivatedEvent,\n FrontstageReadyEvent,\n ModalFrontstageChangedEvent,\n ModalFrontstageClosedEvent,\n ModalFrontstageRequestedCloseEvent,\n ToolActivatedEvent,\n ToolIconChangedEvent,\n} from \"../framework/FrameworkFrontstages\";\nimport type { SyncToolSettingsPropertiesEventArgs } from \"../framework/FrameworkToolSettings\";\n\n/** Frontstage Manager class.\n * @internal\n */\nexport class InternalFrontstageManager {\n private static _initialized = false;\n private static _isLoading = false;\n private static _activeToolId = \"\";\n private static _activeFrontstageDef: FrontstageDef | undefined;\n private static _frontstageDefs = new Map<string, FrontstageDef>();\n private static _modalFrontstages: ModalFrontstageItem[] =\n new Array<ModalFrontstageItem>();\n private static _frontstageProviders = new Map<string, FrontstageProvider>();\n private static _nineZoneSize: Size | undefined = undefined;\n\n private static _nestedFrontstages: FrontstageDef[] =\n new Array<FrontstageDef>();\n private static _activePrimaryFrontstageDef: FrontstageDef | undefined;\n private static _toolInformationMap: Map<string, ToolInformation> = new Map<\n string,\n ToolInformation\n >();\n\n /** This should only be called within InternalFrontstageManager and its tests.\n * @internal\n */\n public static ensureToolInformationIsSet(toolId: string): void {\n // istanbul ignore else\n if (!InternalFrontstageManager._toolInformationMap.get(toolId))\n InternalFrontstageManager._toolInformationMap.set(\n toolId,\n new ToolInformation(toolId)\n );\n }\n\n // pass on SyncToolSettingsPropertiesEvent from ToolAdmin so they are treated as DialogItemSync events\n private static handleSyncToolSettingsPropertiesEvent(\n args: SyncToolSettingsPropertiesEventArgs\n ): void {\n InternalFrontstageManager.activeToolSettingsProvider &&\n InternalFrontstageManager.activeToolSettingsProvider.syncToolSettingsProperties(\n args\n );\n }\n\n // pass on ReloadToolSettingsEvent from ToolAdmin so they are treated by UiProviders\n private static handleReloadToolSettingsEvent(): void {\n // istanbul ignore else\n if (InternalFrontstageManager.activeToolSettingsProvider) {\n InternalFrontstageManager.activeToolSettingsProvider.reloadPropertiesFromTool();\n }\n }\n\n /** Initializes the InternalFrontstageManager\n * @internal\n */\n public static initialize() {\n if (this._initialized) return;\n\n // istanbul ignore else\n if (IModelApp && IModelApp.toolAdmin) {\n IModelApp.toolAdmin.activeToolChanged.addListener(\n (tool: Tool, _start: StartOrResume) => {\n // make sure tool settings properties are cached before creating ToolInformation\n UiFramework.toolSettings.clearToolSettingsData();\n // istanbul ignore else\n if (tool instanceof InteractiveTool)\n UiFramework.toolSettings.initializeDataForTool(tool);\n\n // if the tool data is not already cached then see if there is data to cache\n InternalFrontstageManager.ensureToolInformationIsSet(tool.toolId);\n InternalFrontstageManager.setActiveTool(tool);\n }\n );\n UiFramework.toolSettings.onSyncToolSettingsProperties.addListener(\n InternalFrontstageManager.handleSyncToolSettingsPropertiesEvent\n );\n UiFramework.toolSettings.onReloadToolSettingsProperties.addListener(\n InternalFrontstageManager.handleReloadToolSettingsEvent\n );\n }\n\n // istanbul ignore else\n if (IModelApp && IModelApp.viewManager) {\n IModelApp.viewManager.onSelectedViewportChanged.addListener(\n InternalFrontstageManager._handleSelectedViewportChanged\n );\n }\n\n this._initialized = true;\n }\n\n /** Handles a Viewport change & sets the active view accordingly */\n private static _handleSelectedViewportChanged = (\n args: SelectedViewportChangedArgs\n ) => {\n // istanbul ignore else\n if (\n args.current &&\n InternalFrontstageManager.activeFrontstageDef &&\n !InternalFrontstageManager.isLoading\n ) {\n InternalFrontstageManager.activeFrontstageDef.setActiveViewFromViewport(\n args.current\n );\n }\n };\n\n /** @internal */\n public static get isInitialized(): boolean {\n return InternalFrontstageManager._initialized;\n }\n public static set isInitialized(v: boolean) {\n InternalFrontstageManager._initialized = v;\n }\n\n /** Returns true if Frontstage is loading its controls. If false the Frontstage content and controls have been created. */\n public static get isLoading(): boolean {\n return InternalFrontstageManager._isLoading;\n }\n\n /** @internal */\n public static get nineZoneSize() {\n return InternalFrontstageManager._nineZoneSize;\n }\n\n public static set nineZoneSize(size) {\n InternalFrontstageManager._nineZoneSize = size;\n }\n\n /** @internal */\n public static get frontstageDefs(): ReadonlyMap<string, FrontstageDef> {\n return this._frontstageDefs;\n }\n\n /** Get Frontstage Deactivated event. */\n public static readonly onFrontstageDeactivatedEvent =\n new FrontstageDeactivatedEvent();\n\n /** Get Frontstage Activated event. */\n public static readonly onFrontstageActivatedEvent =\n new FrontstageActivatedEvent();\n\n /** Get Frontstage Activated event. */\n public static readonly onFrontstageReadyEvent = new FrontstageReadyEvent();\n\n /** Get Modal Frontstage Changed event. */\n public static readonly onModalFrontstageChangedEvent =\n new ModalFrontstageChangedEvent();\n\n /** Get Modal Frontstage Closed event. */\n public static readonly onModalFrontstageClosedEvent =\n new ModalFrontstageClosedEvent();\n\n /** Get Modal Frontstage Requested Closed event.\n * @alpha\n */\n public static readonly onCloseModalFrontstageRequestedEvent =\n new ModalFrontstageRequestedCloseEvent();\n\n /** Get Tool Activated event. */\n public static readonly onToolActivatedEvent = new ToolActivatedEvent();\n\n /** Get ToolSetting Reload event. */\n public static readonly onToolSettingsReloadEvent = new UiEvent<void>();\n\n /** Get Tool Panel Opened event.\n * @internal\n */\n public static readonly onToolPanelOpenedEvent = new UiEvent<void>();\n\n /** Get Tool Icon Changed event. */\n public static readonly onToolIconChangedEvent = new ToolIconChangedEvent();\n\n /** Get Content Layout Activated event. */\n public static readonly onContentLayoutActivatedEvent =\n new ContentLayoutActivatedEvent();\n\n /** Get Content Control Activated event. */\n public static readonly onContentControlActivatedEvent =\n new ContentControlActivatedEvent();\n\n /** Get Navigation Aid Activated event. */\n public static readonly onNavigationAidActivatedEvent =\n new NavigationAidActivatedEvent();\n\n /** Get Widget State Changed event. */\n public static readonly onWidgetStateChangedEvent =\n new WidgetStateChangedEvent();\n\n /** @internal */\n public static readonly onWidgetDefsUpdatedEvent = new UiEvent<void>();\n\n /** @internal */\n public static readonly onFrontstageNineZoneStateChangedEvent =\n new UiEvent<FrontstageNineZoneStateChangedEventArgs>();\n\n /** @internal */\n public static readonly onFrontstageRestoreLayoutEvent =\n new UiEvent<FrontstageEventArgs>();\n\n /** @internal */\n public static readonly onFrontstageWidgetsChangedEvent =\n new UiEvent<FrontstageEventArgs>();\n\n /** Get panel state changed event.\n * @alpha\n */\n public static readonly onPanelStateChangedEvent =\n new PanelStateChangedEvent();\n\n /** Get panel pinned changed event.\n * @alpha\n */\n public static readonly onPanelPinnedChangedEvent =\n new UiEvent<PanelPinnedChangedEventArgs>();\n\n /** @internal */\n public static readonly onPanelSizeChangedEvent = new PanelSizeChangedEvent();\n\n /** Clears the Frontstage map.\n */\n public static clearFrontstageDefs(): void {\n InternalFrontstageManager._frontstageDefs.clear();\n InternalFrontstageManager._activeFrontstageDef = undefined;\n }\n\n /** Clears the Frontstage Providers and the defs that may have been created from them.\n */\n public static clearFrontstageProviders(): void {\n InternalFrontstageManager._frontstageProviders.clear();\n InternalFrontstageManager.clearFrontstageDefs();\n }\n\n private static getFrontstageKey(frontstageId: string) {\n return frontstageId;\n }\n\n /** @internal */\n public static clearFrontstageDefsForIModelId(iModelId: string | undefined) {\n // istanbul ignore next\n if (!iModelId) return;\n const keysToRemove: string[] = [];\n InternalFrontstageManager._frontstageDefs.forEach(\n (_: FrontstageDef, key: string) => {\n if (key.startsWith(`[${iModelId}]`)) keysToRemove.push(key);\n }\n );\n keysToRemove.forEach((keyValue) => {\n InternalFrontstageManager._frontstageDefs.delete(keyValue);\n });\n }\n\n /** Add a Frontstage via a [[FrontstageProvider]].\n * @param frontstageProvider FrontstageProvider representing the Frontstage to add\n */\n public static addFrontstageProvider(\n frontstageProvider: FrontstageProvider\n ): void {\n const key = InternalFrontstageManager.getFrontstageKey(\n frontstageProvider.id\n );\n key && InternalFrontstageManager._frontstageDefs.delete(key);\n InternalFrontstageManager._frontstageProviders.set(\n frontstageProvider.id,\n frontstageProvider\n );\n }\n\n /** Find a loaded Frontstage with a given id. If the id is not provided, the active Frontstage is returned.\n * If the FrontstageDef has not been cached by FrontstageDef then it will not be found. See async function\n * `getFrontstageDef` to get a FrontstageDef.\n * @param id Id of the Frontstage to find\n * @returns FrontstageDef with a given id if found, or undefined if not found.\n */\n private static findFrontstageDef(id: string): FrontstageDef | undefined {\n const key = InternalFrontstageManager.getFrontstageKey(id);\n const frontstageDef = InternalFrontstageManager._frontstageDefs.get(key);\n if (frontstageDef instanceof FrontstageDef) return frontstageDef;\n return undefined;\n }\n\n private static findFrontstageProvider(\n id?: string\n ): FrontstageProvider | undefined {\n return id\n ? InternalFrontstageManager._frontstageProviders.get(id)\n : undefined;\n }\n\n /** Find a loaded Frontstage with a given id. If the id is not provided, the active Frontstage is returned. If\n * no cached FrontstageDef is found but a FrontstageProvider is registered a FrontstageDef will be created, cached, and\n * returned.\n * @param id Id of the Frontstage to find\n * @returns FrontstageDef with a given id if found, or undefined if not found.\n */\n public static async getFrontstageDef(\n id?: string\n ): Promise<FrontstageDef | undefined> {\n if (!id) return InternalFrontstageManager.activeFrontstageDef;\n\n let frontstageDef = InternalFrontstageManager.findFrontstageDef(id);\n if (frontstageDef) return frontstageDef;\n\n // istanbul ignore else\n if (id) {\n const frontstageProvider =\n InternalFrontstageManager.findFrontstageProvider(id);\n if (frontstageProvider) {\n frontstageDef = await FrontstageDef.create(frontstageProvider);\n // istanbul ignore else\n if (frontstageDef) {\n const key = InternalFrontstageManager.getFrontstageKey(\n frontstageDef.id\n );\n InternalFrontstageManager._frontstageDefs.set(key, frontstageDef);\n }\n return frontstageDef;\n }\n }\n\n return undefined;\n }\n\n /** Gets the active FrontstageDef. If a Frontstage is not active, undefined is returned.\n * @return Active FrontstageDef, or undefined if one is not active.\n */\n public static get activeFrontstageDef(): FrontstageDef | undefined {\n return InternalFrontstageManager._activeFrontstageDef;\n }\n\n /** Gets the Id of the active FrontstageDef. If a Frontstage is not active, blank is returned.\n * @return Id of the active FrontstageDef, or blank if one is not active.\n */\n public static get activeFrontstageId(): string {\n const activeFrontstage = InternalFrontstageManager._activeFrontstageDef;\n return activeFrontstage ? activeFrontstage.id : \"\";\n }\n\n public static hasFrontstage(frontstageId: string) {\n if (InternalFrontstageManager.findFrontstageDef(frontstageId)) return true;\n if (InternalFrontstageManager.findFrontstageProvider(frontstageId))\n return true;\n return false;\n }\n\n /** Sets the active FrontstageDef give the stageId.\n * @param frontstageId Id of the Frontstage to set active.\n * @returns A Promise that is fulfilled when the [[Frontstage]] is ready.\n */\n public static async setActiveFrontstage(frontstageId: string): Promise<void> {\n const frontstageDef = await InternalFrontstageManager.getFrontstageDef(\n frontstageId\n );\n if (!frontstageDef) {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `setActiveFrontstage: Could not load a FrontstageDef with id of '${frontstageId}'`\n );\n return;\n }\n\n return InternalFrontstageManager.setActiveFrontstageDef(frontstageDef);\n }\n\n /** Sets the active FrontstageDef.\n * @param frontstageDef FrontstageDef to set active.\n * @returns A Promise that is fulfilled when the [[FrontstageDef]] is ready.\n */\n public static async setActiveFrontstageDef(\n frontstageDef: FrontstageDef | undefined\n ): Promise<void> {\n if (InternalFrontstageManager._activeFrontstageDef === frontstageDef)\n return;\n\n InternalFrontstageManager._isLoading = true;\n\n const deactivatedFrontstageDef =\n InternalFrontstageManager._activeFrontstageDef;\n if (deactivatedFrontstageDef) {\n await deactivatedFrontstageDef.onDeactivated();\n\n const timeTracker = deactivatedFrontstageDef.timeTracker;\n InternalFrontstageManager.onFrontstageDeactivatedEvent.emit({\n deactivatedFrontstageDef,\n activatedFrontstageDef: frontstageDef,\n totalTime: timeTracker.getTotalTimeSeconds(),\n engagementTime: timeTracker.getEngagementTimeSeconds(),\n idleTime: timeTracker.getIdleTimeSeconds(),\n });\n }\n\n InternalFrontstageManager._activeFrontstageDef = frontstageDef;\n\n if (frontstageDef) {\n await frontstageDef.onActivated();\n\n InternalFrontstageManager.onFrontstageActivatedEvent.emit({\n activatedFrontstageDef: frontstageDef,\n deactivatedFrontstageDef,\n });\n\n await frontstageDef.waitUntilReady();\n InternalFrontstageManager._isLoading = false;\n frontstageDef.onFrontstageReady();\n InternalFrontstageManager.onFrontstageReadyEvent.emit({ frontstageDef });\n UiFramework.visibility.handleFrontstageReady();\n\n await frontstageDef.setActiveContent();\n }\n\n InternalFrontstageManager._isLoading = false;\n }\n\n /** Deactivates the active FrontstageDef.\n */\n public static async deactivateFrontstageDef(): Promise<void> {\n await this.setActiveFrontstageDef(undefined);\n }\n\n /** Gets the Id of the active tool. If a tool is not active, blank is returned.\n * @return Id of the active tool, or blank if one is not active.\n */\n public static get activeToolId(): string {\n return InternalFrontstageManager._activeToolId;\n }\n\n /** Sets the active tool id */\n public static setActiveToolId(toolId: string): void {\n InternalFrontstageManager._activeToolId = toolId;\n const toolSettingsProvider =\n InternalFrontstageManager.activeToolSettingsProvider;\n // ensure the toolSettingsProvider is initialized before emitting onToolActivatedEvent\n if (toolSettingsProvider) toolSettingsProvider.initialize();\n InternalFrontstageManager.onToolActivatedEvent.emit({ toolId });\n }\n\n /** Sets the active tool */\n public static setActiveTool(tool: Tool): void {\n InternalFrontstageManager.setActiveToolId(tool.toolId);\n InternalFrontstageManager.onToolIconChangedEvent.emit({\n iconSpec: tool.iconSpec,\n });\n }\n\n /** Gets the active tool's [[ToolInformation]] */\n public static get activeToolInformation(): ToolInformation | undefined {\n return InternalFrontstageManager._toolInformationMap.get(\n InternalFrontstageManager.activeToolId\n );\n }\n\n /** Gets the Tool Setting React node of the active tool.\n * @return Tool Setting React node of the active tool, or undefined if there is no active tool or Tool Settings for the active tool.\n * @internal\n */\n public static get activeToolSettingsProvider(): ToolUiProvider | undefined {\n const activeToolInformation =\n InternalFrontstageManager.activeToolInformation;\n return activeToolInformation\n ? activeToolInformation.toolUiProvider\n : /* istanbul ignore next */ undefined;\n }\n\n /** Sets the active layout, content group and active content.\n * @param contentLayoutDef Content layout to make active\n * @param contentGroup Content Group to make active\n */\n public static async setActiveLayout(\n contentLayoutDef: ContentLayoutDef,\n contentGroup: ContentGroup\n ): Promise<void> {\n const activeFrontstageDef = InternalFrontstageManager.activeFrontstageDef;\n // istanbul ignore else\n if (activeFrontstageDef) {\n InternalFrontstageManager._isLoading = false;\n\n activeFrontstageDef.setContentLayoutAndGroup(\n contentLayoutDef,\n contentGroup\n );\n InternalFrontstageManager.onContentLayoutActivatedEvent.emit({\n contentLayout: contentLayoutDef,\n contentGroup,\n });\n\n await activeFrontstageDef.waitUntilReady();\n InternalFrontstageManager._isLoading = false;\n\n await activeFrontstageDef.setActiveContent();\n }\n }\n\n /** Sets the active layout, content group and active content.\n * @param contentGroup Content Group to make active\n */\n public static async setActiveContentGroup(\n contentGroup: ContentGroup\n ): Promise<void> {\n const contentLayoutDef =\n UiFramework.content.layouts.getForGroup(contentGroup);\n await InternalFrontstageManager.setActiveLayout(\n contentLayoutDef,\n contentGroup\n );\n }\n\n /** Opens a modal Frontstage. Modal Frontstages can be stacked.\n * @param modalFrontstage Information about the modal Frontstage\n */\n public static openModalFrontstage(\n modalFrontstage: ModalFrontstageInfo\n ): void {\n InternalFrontstageManager.pushModalFrontstage(modalFrontstage);\n }\n\n private static pushModalFrontstage(\n modalFrontstage: ModalFrontstageInfo\n ): void {\n const timeTracker = new TimeTracker();\n timeTracker.startTiming();\n const frontstageItem: ModalFrontstageItem = {\n modalFrontstage,\n timeTracker,\n };\n InternalFrontstageManager._modalFrontstages.push(frontstageItem);\n InternalFrontstageManager.emitModalFrontstageChangedEvent();\n }\n\n /** Closes the top-most modal Frontstage.\n */\n public static closeModalFrontstage(): void {\n // istanbul ignore else\n if (InternalFrontstageManager._modalFrontstages.length > 0) {\n const topMostStageItem =\n InternalFrontstageManager._modalFrontstages[\n InternalFrontstageManager._modalFrontstages.length - 1\n ];\n if (topMostStageItem.modalFrontstage.notifyCloseRequest)\n InternalFrontstageManager.onCloseModalFrontstageRequestedEvent.emit({\n modalFrontstage: topMostStageItem.modalFrontstage,\n stageCloseFunc: InternalFrontstageManager.popModalFrontstage,\n });\n else InternalFrontstageManager.popModalFrontstage();\n }\n }\n\n private static popModalFrontstage(): void {\n const frontstageItem = InternalFrontstageManager._modalFrontstages.pop();\n // istanbul ignore else\n if (frontstageItem) {\n const modalFrontstage = frontstageItem.modalFrontstage;\n const timeTracker = frontstageItem.timeTracker;\n timeTracker.stopTiming();\n InternalFrontstageManager.onModalFrontstageClosedEvent.emit({\n modalFrontstage,\n totalTime: timeTracker.getTotalTimeSeconds(),\n engagementTime: timeTracker.getEngagementTimeSeconds(),\n idleTime: timeTracker.getIdleTimeSeconds(),\n });\n }\n\n InternalFrontstageManager.emitModalFrontstageChangedEvent();\n\n UiFramework.visibility.handleFrontstageReady();\n }\n\n private static emitModalFrontstageChangedEvent(): void {\n InternalFrontstageManager.onModalFrontstageChangedEvent.emit({\n modalFrontstageCount: InternalFrontstageManager.modalFrontstageCount,\n });\n }\n\n /** Updates the top-most modal Frontstage.\n */\n public static updateModalFrontstage(): void {\n InternalFrontstageManager.emitModalFrontstageChangedEvent();\n }\n\n /** Gets the top-most modal Frontstage.\n * @returns Top-most modal Frontstage, or undefined if there is none.\n */\n public static get activeModalFrontstage(): ModalFrontstageInfo | undefined {\n if (InternalFrontstageManager._modalFrontstages.length > 0) {\n const frontstageItem =\n InternalFrontstageManager._modalFrontstages[\n InternalFrontstageManager._modalFrontstages.length - 1\n ];\n const modalFrontstage = frontstageItem.modalFrontstage;\n return modalFrontstage;\n } else {\n return undefined;\n }\n }\n\n /** Gets the number of modal Frontstages.\n * @returns Modal Frontstage count\n */\n public static get modalFrontstageCount(): number {\n return InternalFrontstageManager._modalFrontstages.length;\n }\n\n /** Sets the active Navigation Aid via its Id.\n * @param navigationAidId Id of the Navigation Aid to set as active\n * @param iModelConnection IModelConnection to query for view data\n */\n public static setActiveNavigationAid(\n navigationAidId: string,\n iModelConnection: IModelConnection\n ) {\n InternalFrontstageManager.onNavigationAidActivatedEvent.emit({\n navigationAidId,\n iModelConnection,\n });\n }\n\n /** Sets the state of the widget with the given id\n * @param widgetId Id of the Widget for which to set the state\n * @param state New state of the widget\n * @returns true if the widget state was set successfully, or false if not.\n */\n public static setWidgetState(widgetId: string, state: WidgetState): boolean {\n const widgetDef = InternalFrontstageManager.findWidget(widgetId);\n if (widgetDef) {\n widgetDef.setWidgetState(state);\n return true;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `setWidgetState: Could not find Widget with id of '${widgetId}'`\n );\n }\n\n return false;\n }\n\n /** Finds a widget with the given id in the active frontstage\n * @param widgetId Id of the Widget to find\n * @returns The WidgetDef with the given id, or undefined if not found.\n */\n public static findWidget(widgetId: string): WidgetDef | undefined {\n const activeFrontstageDef = InternalFrontstageManager.activeFrontstageDef;\n\n // istanbul ignore else\n if (activeFrontstageDef) return activeFrontstageDef.findWidgetDef(widgetId);\n\n return undefined;\n }\n\n /** Opens a nested Frontstage. Nested Frontstages can be stacked.\n * @param nestedFrontstage Information about the nested Frontstage\n */\n public static async openNestedFrontstage(\n nestedFrontstage: FrontstageDef\n ): Promise<void> {\n if (InternalFrontstageManager.nestedFrontstageCount === 0)\n InternalFrontstageManager._activePrimaryFrontstageDef =\n InternalFrontstageManager._activeFrontstageDef;\n\n InternalFrontstageManager.pushNestedFrontstage(nestedFrontstage);\n\n await InternalFrontstageManager.setActiveFrontstageDef(nestedFrontstage);\n }\n\n private static pushNestedFrontstage(nestedFrontstage: FrontstageDef): void {\n InternalFrontstageManager._nestedFrontstages.push(nestedFrontstage);\n }\n\n /** Closes the top-most nested Frontstage.\n */\n public static async closeNestedFrontstage(): Promise<void> {\n InternalFrontstageManager.popNestedFrontstage();\n\n if (InternalFrontstageManager.nestedFrontstageCount > 0) {\n await InternalFrontstageManager.setActiveFrontstageDef(\n InternalFrontstageManager.activeNestedFrontstage\n );\n } else {\n await InternalFrontstageManager.setActiveFrontstageDef(\n InternalFrontstageManager._activePrimaryFrontstageDef\n );\n InternalFrontstageManager._activePrimaryFrontstageDef = undefined;\n }\n }\n\n private static popNestedFrontstage(): void {\n InternalFrontstageManager._nestedFrontstages.pop();\n }\n\n /** Gets the top-most nested Frontstage.\n * @returns Top-most nested Frontstage, or undefined if there is none.\n */\n public static get activeNestedFrontstage(): FrontstageDef | undefined {\n // istanbul ignore else\n if (InternalFrontstageManager._nestedFrontstages.length > 0)\n return InternalFrontstageManager._nestedFrontstages[\n InternalFrontstageManager._nestedFrontstages.length - 1\n ];\n\n return undefined;\n }\n\n /** Gets the number of nested Frontstages.\n * @returns Nested Frontstage count\n */\n public static get nestedFrontstageCount(): number {\n return InternalFrontstageManager._nestedFrontstages.length;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActiveIModelConnection.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveIModelConnection.tsx"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"useActiveIModelConnection.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveIModelConnection.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAM7D;;;;GAIG;AACH,wBAAgB,yBAAyB,IAAI,gBAAgB,GAAG,SAAS,CAwBxE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useActiveIModelConnection.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveIModelConnection.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useActiveIModelConnection.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useActiveIModelConnection.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C;;;;GAIG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CACtD,WAAW,CAAC,mBAAmB,EAAE,CAClC,CAAC;IACF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,CAAC,IAAqB,EAAQ,EAAE;YACxD,MAAM,QAAQ,GAAG,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;YAC5D,uBAAuB;YACvB,IACE,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CACvC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CACvC,EACD;gBACA,mBAAmB,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,CAAC;aACxD;QACH,CAAC,CAAC;QAEF,qBAAqB,CAAC,aAAa,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QACnE,OAAO,GAAG,EAAE;YACV,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QACxE,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,gBAAgB,CAAC;AAC1B,CAAC","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 Hooks\n */\n\nimport { useEffect, useState } from \"react\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { SessionStateActionId } from \"../redux/SessionState\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { UiSyncEventArgs } from \"../syncui/UiSyncEvent\";\n\n/** React hook that maintains the active IModelConnection. For this hook to work properly the\n * IModelConnection must be set using UiFramework.setIModelConnection method. This also requires\n * that the host app includes the UiFramework reducer into its Redux store.\n * @public\n */\nexport function useActiveIModelConnection(): IModelConnection | undefined {\n const [activeConnection, setActiveConnection] = useState(\n UiFramework.getIModelConnection()\n );\n useEffect(() => {\n const handleSyncUiEvent = (args: UiSyncEventArgs): void => {\n const eventIds = [SessionStateActionId.SetIModelConnection];\n // istanbul ignore else\n if (\n eventIds.some((value: string): boolean =>\n args.eventIds.has(value.toLowerCase())\n )\n ) {\n setActiveConnection(UiFramework.getIModelConnection());\n }\n };\n\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\n return () => {\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\n };\n }, [activeConnection]);\n\n return activeConnection;\n}\n"]}
|