@itwin/appui-react 4.8.0 → 4.9.0-dev.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 +7 -1
- package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/cjs/appui-react/UiFramework.js +6 -0
- package/lib/cjs/appui-react/UiFramework.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts +4 -2
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js +17 -29
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.scss +10 -17
- package/lib/cjs/appui-react/accudraw/AccuDrawInputField.scss +2 -0
- package/lib/cjs/appui-react/accudraw/SquareButton.d.ts +3 -1
- package/lib/cjs/appui-react/accudraw/SquareButton.d.ts.map +1 -1
- package/lib/cjs/appui-react/accudraw/SquareButton.js +1 -4
- package/lib/cjs/appui-react/accudraw/SquareButton.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +25 -7
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js +19 -15
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +2 -0
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentControl.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/ContentControl.js +1 -0
- package/lib/cjs/appui-react/content/ContentControl.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentGroup.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/ContentGroup.js +2 -0
- package/lib/cjs/appui-react/content/ContentGroup.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.js +1 -0
- package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/content/IModelViewport.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/IModelViewport.js +1 -0
- package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentViewManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -0
- package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/cjs/appui-react/cursor/CursorInformation.d.ts.map +1 -1
- package/lib/cjs/appui-react/cursor/CursorInformation.js +1 -0
- package/lib/cjs/appui-react/cursor/CursorInformation.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js +3 -0
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
- package/lib/cjs/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js +1 -0
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/cjs/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
- package/lib/cjs/appui-react/feedback/ElementTooltip.js +3 -3
- package/lib/cjs/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/cjs/appui-react/framework/FrameworkContent.d.ts.map +1 -1
- package/lib/cjs/appui-react/framework/FrameworkContent.js +2 -0
- package/lib/cjs/appui-react/framework/FrameworkContent.js.map +1 -1
- package/lib/cjs/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
- package/lib/cjs/appui-react/framework/FrameworkFrontstages.js +8 -0
- package/lib/cjs/appui-react/framework/FrameworkFrontstages.js.map +1 -1
- package/lib/cjs/appui-react/framework/FrameworkToolSettings.d.ts.map +1 -1
- package/lib/cjs/appui-react/framework/FrameworkToolSettings.js +1 -0
- package/lib/cjs/appui-react/framework/FrameworkToolSettings.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +8 -2
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +25 -8
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +15 -4
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.d.ts +2 -4
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.js +2 -3
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalFrontstage.scss +1 -1
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +5 -5
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
- package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js +1 -0
- package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
- package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
- package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -0
- package/lib/cjs/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
- package/lib/cjs/appui-react/messages/InputField.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/InputField.js +2 -3
- package/lib/cjs/appui-react/messages/InputField.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageLabel.js +2 -2
- package/lib/cjs/appui-react/messages/MessageLabel.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.d.ts +15 -5
- package/lib/cjs/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.js +31 -39
- package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageRenderer.d.ts +8 -0
- package/lib/cjs/appui-react/messages/MessageRenderer.d.ts.map +1 -0
- package/lib/cjs/appui-react/messages/{ActivityMessage.js → MessageRenderer.js} +60 -14
- package/lib/cjs/appui-react/messages/MessageRenderer.js.map +1 -0
- package/lib/cjs/appui-react/messages/Pointer.d.ts.map +1 -1
- package/lib/cjs/appui-react/messages/Pointer.js +4 -3
- package/lib/cjs/appui-react/messages/Pointer.js.map +1 -1
- package/lib/cjs/appui-react/messages/getToastCategory.d.ts +1 -1
- package/lib/cjs/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
- package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js +1 -0
- package/lib/cjs/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
- package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js +1 -0
- package/lib/cjs/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
- package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
- package/lib/cjs/appui-react/pickers/ViewSelector.js +2 -0
- package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/cjs/appui-react/popup/CardPopup.d.ts.map +1 -1
- package/lib/cjs/appui-react/popup/CardPopup.js +1 -2
- package/lib/cjs/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/cjs/appui-react/popup/HTMLElementPopup.d.ts.map +1 -1
- package/lib/cjs/appui-react/popup/HTMLElementPopup.js +1 -2
- package/lib/cjs/appui-react/popup/HTMLElementPopup.js.map +1 -1
- package/lib/cjs/appui-react/popup/PopupManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/popup/PopupManager.js +1 -0
- package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/cjs/appui-react/redux/ReducerRegistry.d.ts.map +1 -1
- package/lib/cjs/appui-react/redux/ReducerRegistry.js +1 -0
- package/lib/cjs/appui-react/redux/ReducerRegistry.js.map +1 -1
- package/lib/cjs/appui-react/redux/StateManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/redux/StateManager.js +1 -0
- package/lib/cjs/appui-react/redux/StateManager.js.map +1 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.scss +1 -4
- package/lib/cjs/appui-react/shared/MenuItem.d.ts.map +1 -1
- package/lib/cjs/appui-react/shared/MenuItem.js +1 -0
- package/lib/cjs/appui-react/shared/MenuItem.js.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelConfig.d.ts +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelConfig.d.ts.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelConfig.js.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts +5 -9
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +19 -18
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelState.d.ts +13 -0
- package/lib/cjs/appui-react/stagepanels/StagePanelState.d.ts.map +1 -0
- package/lib/cjs/appui-react/stagepanels/StagePanelState.js +21 -0
- package/lib/cjs/appui-react/stagepanels/StagePanelState.js.map +1 -0
- package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.js +6 -5
- package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/SelectionScope.scss +1 -3
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +2 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +3 -12
- package/lib/cjs/appui-react/theme/ThemeManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js +3 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +8 -8
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js +1 -0
- package/lib/cjs/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
- package/lib/cjs/appui-react/toolsettings/ToolInformation.d.ts.map +1 -1
- package/lib/cjs/appui-react/toolsettings/ToolInformation.js +1 -0
- package/lib/cjs/appui-react/toolsettings/ToolInformation.js.map +1 -1
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.d.ts +1 -0
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +16 -13
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +16 -33
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +243 -386
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +2 -0
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/cjs/appui-react/widgets/useWidget.d.ts +17 -0
- package/lib/cjs/appui-react/widgets/useWidget.d.ts.map +1 -0
- package/lib/cjs/appui-react/widgets/useWidget.js +70 -0
- package/lib/cjs/appui-react/widgets/useWidget.js.map +1 -0
- package/lib/cjs/appui-react.d.ts +2 -0
- package/lib/cjs/appui-react.d.ts.map +1 -1
- package/lib/cjs/appui-react.js +2 -0
- package/lib/cjs/appui-react.js.map +1 -1
- package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/esm/appui-react/UiFramework.js +6 -0
- package/lib/esm/appui-react/UiFramework.js.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts +4 -2
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +17 -29
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.scss +10 -17
- package/lib/esm/appui-react/accudraw/AccuDrawInputField.scss +2 -0
- package/lib/esm/appui-react/accudraw/SquareButton.d.ts +3 -1
- package/lib/esm/appui-react/accudraw/SquareButton.d.ts.map +1 -1
- package/lib/esm/appui-react/accudraw/SquareButton.js +1 -4
- package/lib/esm/appui-react/accudraw/SquareButton.js.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +25 -7
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts +1 -1
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js +19 -15
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.d.ts.map +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +2 -0
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/esm/appui-react/content/ContentControl.d.ts.map +1 -1
- package/lib/esm/appui-react/content/ContentControl.js +1 -0
- package/lib/esm/appui-react/content/ContentControl.js.map +1 -1
- package/lib/esm/appui-react/content/ContentGroup.d.ts.map +1 -1
- package/lib/esm/appui-react/content/ContentGroup.js +2 -0
- package/lib/esm/appui-react/content/ContentGroup.js.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.js +1 -0
- package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/esm/appui-react/content/IModelViewport.d.ts.map +1 -1
- package/lib/esm/appui-react/content/IModelViewport.js +1 -0
- package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentViewManager.d.ts.map +1 -1
- package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -0
- package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/esm/appui-react/cursor/CursorInformation.d.ts.map +1 -1
- package/lib/esm/appui-react/cursor/CursorInformation.js +1 -0
- package/lib/esm/appui-react/cursor/CursorInformation.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js +3 -0
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
- package/lib/esm/appui-react/dialog/DialogManagerBase.d.ts.map +1 -1
- package/lib/esm/appui-react/dialog/DialogManagerBase.js +1 -0
- package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/esm/appui-react/feedback/ElementTooltip.d.ts.map +1 -1
- package/lib/esm/appui-react/feedback/ElementTooltip.js +4 -4
- package/lib/esm/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/esm/appui-react/framework/FrameworkContent.d.ts.map +1 -1
- package/lib/esm/appui-react/framework/FrameworkContent.js +2 -0
- package/lib/esm/appui-react/framework/FrameworkContent.js.map +1 -1
- package/lib/esm/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
- package/lib/esm/appui-react/framework/FrameworkFrontstages.js +8 -0
- package/lib/esm/appui-react/framework/FrameworkFrontstages.js.map +1 -1
- package/lib/esm/appui-react/framework/FrameworkToolSettings.d.ts.map +1 -1
- package/lib/esm/appui-react/framework/FrameworkToolSettings.js +1 -0
- package/lib/esm/appui-react/framework/FrameworkToolSettings.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +8 -2
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +24 -7
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +15 -4
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalFrontstage.d.ts +2 -4
- package/lib/esm/appui-react/frontstage/ModalFrontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalFrontstage.js +2 -3
- package/lib/esm/appui-react/frontstage/ModalFrontstage.js.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalFrontstage.scss +1 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +1 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.d.ts.map +1 -1
- package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js +1 -0
- package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
- package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.d.ts.map +1 -1
- package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +1 -0
- package/lib/esm/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
- package/lib/esm/appui-react/messages/InputField.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/InputField.js +3 -4
- package/lib/esm/appui-react/messages/InputField.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageLabel.js +2 -2
- package/lib/esm/appui-react/messages/MessageLabel.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.d.ts +15 -5
- package/lib/esm/appui-react/messages/MessageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.js +31 -39
- package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageRenderer.d.ts +8 -0
- package/lib/esm/appui-react/messages/MessageRenderer.d.ts.map +1 -0
- package/lib/esm/appui-react/messages/{ActivityMessage.js → MessageRenderer.js} +58 -12
- package/lib/esm/appui-react/messages/MessageRenderer.js.map +1 -0
- package/lib/esm/appui-react/messages/Pointer.d.ts.map +1 -1
- package/lib/esm/appui-react/messages/Pointer.js +5 -4
- package/lib/esm/appui-react/messages/Pointer.js.map +1 -1
- package/lib/esm/appui-react/messages/getToastCategory.d.ts +1 -1
- package/lib/esm/appui-react/navigationaids/NavigationAidControl.d.ts.map +1 -1
- package/lib/esm/appui-react/navigationaids/NavigationAidControl.js +1 -0
- package/lib/esm/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
- package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js +1 -0
- package/lib/esm/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
- package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
- package/lib/esm/appui-react/pickers/ViewSelector.js +2 -0
- package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/esm/appui-react/popup/CardPopup.d.ts.map +1 -1
- package/lib/esm/appui-react/popup/CardPopup.js +2 -3
- package/lib/esm/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/esm/appui-react/popup/HTMLElementPopup.d.ts.map +1 -1
- package/lib/esm/appui-react/popup/HTMLElementPopup.js +2 -3
- package/lib/esm/appui-react/popup/HTMLElementPopup.js.map +1 -1
- package/lib/esm/appui-react/popup/PopupManager.d.ts.map +1 -1
- package/lib/esm/appui-react/popup/PopupManager.js +1 -0
- package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/esm/appui-react/redux/ReducerRegistry.d.ts.map +1 -1
- package/lib/esm/appui-react/redux/ReducerRegistry.js +1 -0
- package/lib/esm/appui-react/redux/ReducerRegistry.js.map +1 -1
- package/lib/esm/appui-react/redux/StateManager.d.ts.map +1 -1
- package/lib/esm/appui-react/redux/StateManager.js +1 -0
- package/lib/esm/appui-react/redux/StateManager.js.map +1 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.scss +1 -4
- package/lib/esm/appui-react/shared/MenuItem.d.ts.map +1 -1
- package/lib/esm/appui-react/shared/MenuItem.js +1 -0
- package/lib/esm/appui-react/shared/MenuItem.js.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelConfig.d.ts +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelConfig.d.ts.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelConfig.js.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts +5 -9
- package/lib/esm/appui-react/stagepanels/StagePanelDef.d.ts.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js +15 -14
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelState.d.ts +13 -0
- package/lib/esm/appui-react/stagepanels/StagePanelState.d.ts.map +1 -0
- package/lib/esm/appui-react/stagepanels/StagePanelState.js +18 -0
- package/lib/esm/appui-react/stagepanels/StagePanelState.js.map +1 -0
- package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.js +6 -5
- package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/esm/appui-react/statusfields/SelectionScope.scss +1 -3
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +2 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.scss +3 -12
- package/lib/esm/appui-react/theme/ThemeManager.d.ts.map +1 -1
- package/lib/esm/appui-react/theme/ThemeManager.js +3 -1
- package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/esm/appui-react/tools/CoreToolDefinitions.d.ts.map +1 -1
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js +5 -5
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.d.ts.map +1 -1
- package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js +1 -0
- package/lib/esm/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
- package/lib/esm/appui-react/toolsettings/ToolInformation.d.ts.map +1 -1
- package/lib/esm/appui-react/toolsettings/ToolInformation.js +1 -0
- package/lib/esm/appui-react/toolsettings/ToolInformation.js.map +1 -1
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.d.ts +1 -0
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.d.ts.map +1 -1
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +16 -13
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +16 -33
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +244 -382
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.scss +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +2 -0
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/widgets/useWidget.d.ts +17 -0
- package/lib/esm/appui-react/widgets/useWidget.d.ts.map +1 -0
- package/lib/esm/appui-react/widgets/useWidget.js +66 -0
- package/lib/esm/appui-react/widgets/useWidget.js.map +1 -0
- package/lib/esm/appui-react.d.ts +2 -0
- package/lib/esm/appui-react.d.ts.map +1 -1
- package/lib/esm/appui-react.js +2 -0
- package/lib/esm/appui-react.js.map +1 -1
- package/package.json +16 -17
- package/lib/cjs/appui-react/messages/ActivityMessage.d.ts +0 -10
- package/lib/cjs/appui-react/messages/ActivityMessage.d.ts.map +0 -1
- package/lib/cjs/appui-react/messages/ActivityMessage.js.map +0 -1
- package/lib/cjs/appui-react/messages/MessageSpan.d.ts +0 -15
- package/lib/cjs/appui-react/messages/MessageSpan.d.ts.map +0 -1
- package/lib/cjs/appui-react/messages/MessageSpan.js +0 -23
- package/lib/cjs/appui-react/messages/MessageSpan.js.map +0 -1
- package/lib/esm/appui-react/messages/ActivityMessage.d.ts +0 -10
- package/lib/esm/appui-react/messages/ActivityMessage.d.ts.map +0 -1
- package/lib/esm/appui-react/messages/ActivityMessage.js.map +0 -1
- package/lib/esm/appui-react/messages/MessageSpan.d.ts +0 -15
- package/lib/esm/appui-react/messages/MessageSpan.d.ts.map +0 -1
- package/lib/esm/appui-react/messages/MessageSpan.js +0 -18
- package/lib/esm/appui-react/messages/MessageSpan.js.map +0 -1
- /package/lib/cjs/appui-react/configurableui/{configurableui.scss → ConfigurableUiContent.scss} +0 -0
- /package/lib/esm/appui-react/configurableui/{configurableui.scss → ConfigurableUiContent.scss} +0 -0
|
@@ -9,21 +9,25 @@ import { UiEvent } from "@itwin/appui-abstract";
|
|
|
9
9
|
/** Frontstage Activated Event class.
|
|
10
10
|
* @public
|
|
11
11
|
*/
|
|
12
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
12
13
|
export class FrontstageActivatedEvent extends UiEvent {
|
|
13
14
|
}
|
|
14
15
|
/** Frontstage Deactivated Event class.
|
|
15
16
|
* @public
|
|
16
17
|
*/
|
|
18
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
17
19
|
export class FrontstageDeactivatedEvent extends UiEvent {
|
|
18
20
|
}
|
|
19
21
|
/** Frontstage Ready Event class.
|
|
20
22
|
* @public
|
|
21
23
|
*/
|
|
24
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
22
25
|
export class FrontstageReadyEvent extends UiEvent {
|
|
23
26
|
}
|
|
24
27
|
/** Modal Frontstage Stack Changed Event class.
|
|
25
28
|
* @public
|
|
26
29
|
*/
|
|
30
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
27
31
|
export class ModalFrontstageChangedEvent extends UiEvent {
|
|
28
32
|
}
|
|
29
33
|
/** Modal Frontstage Requested Close Event class. Notifies the modal stage that the close button was
|
|
@@ -33,21 +37,25 @@ export class ModalFrontstageChangedEvent extends UiEvent {
|
|
|
33
37
|
* any unsaved data.
|
|
34
38
|
* @alpha
|
|
35
39
|
*/
|
|
40
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
36
41
|
export class ModalFrontstageRequestedCloseEvent extends UiEvent {
|
|
37
42
|
}
|
|
38
43
|
/** Modal Frontstage Closed Event class.
|
|
39
44
|
* @public
|
|
40
45
|
*/
|
|
46
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
41
47
|
export class ModalFrontstageClosedEvent extends UiEvent {
|
|
42
48
|
}
|
|
43
49
|
/** Tool Activated Event class.
|
|
44
50
|
* @public
|
|
45
51
|
*/
|
|
52
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
46
53
|
export class ToolActivatedEvent extends UiEvent {
|
|
47
54
|
}
|
|
48
55
|
/** Tool Icon Changed Event class.
|
|
49
56
|
* @public
|
|
50
57
|
*/
|
|
58
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
51
59
|
export class ToolIconChangedEvent extends UiEvent {
|
|
52
60
|
}
|
|
53
61
|
//# sourceMappingURL=FrameworkFrontstages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkFrontstages.js","sourceRoot":"","sources":["../../../../src/appui-react/framework/FrameworkFrontstages.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAwBhD;;GAEG;AACH,MAAM,OAAO,wBAAyB,SAAQ,OAAqC;CAAG;AAmBtF;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,OAAuC;CAAG;AAS1F;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,OAAiC;CAAG;AAS9E;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,OAAwC;CAAG;AAiB5F;;;;;;GAMG;AACH,MAAM,OAAO,kCAAmC,SAAQ,OAA+C;CAAG;AAY1G;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,OAAuC;CAAG;AAS1F;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,OAA+B;CAAG;AAS1E;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,OAAiC;CAAG","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 */\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { IModelConnection, Tool } from \"@itwin/core-frontend\";\nimport type { ToolInformation } from \"../toolsettings/ToolInformation\";\nimport type { TimeTracker } from \"../configurableui/TimeTracker\";\nimport type { ContentControlActivatedEvent } from \"../content/ContentControl\";\nimport type { ContentLayoutActivatedEvent } from \"../content/ContentLayout\";\nimport type { FrontstageDef } from \"../frontstage/FrontstageDef\";\nimport type { FrontstageProvider } from \"../frontstage/FrontstageProvider\";\nimport type { NavigationAidActivatedEvent } from \"../navigationaids/NavigationAidControl\";\nimport type {\n PanelPinnedChangedEventArgs,\n PanelStateChangedEvent,\n} from \"../stagepanels/StagePanelDef\";\nimport type { WidgetDef, WidgetStateChangedEvent } from \"../widgets/WidgetDef\";\nimport type { WidgetState } from \"../widgets/WidgetState\";\n\n/** Frontstage Activated Event Args interface.\n * @public\n */\nexport interface FrontstageActivatedEventArgs {\n deactivatedFrontstageDef?: FrontstageDef;\n activatedFrontstageDef: FrontstageDef;\n}\n\n/** Frontstage Activated Event class.\n * @public\n */\nexport class FrontstageActivatedEvent extends UiEvent<FrontstageActivatedEventArgs> {}\n\n/** Frontstage Deactivated Event Args interface.\n * @public\n */\nexport interface FrontstageDeactivatedEventArgs {\n /** Frontstage being deactivated */\n deactivatedFrontstageDef: FrontstageDef;\n /** Frontstage being activated */\n activatedFrontstageDef?: FrontstageDef;\n\n /** Total time spent in frontstage */\n totalTime: number;\n /** Engagement time spent in frontstage */\n engagementTime: number;\n /** Idle time spent in frontstage */\n idleTime: number;\n}\n\n/** Frontstage Deactivated Event class.\n * @public\n */\nexport class FrontstageDeactivatedEvent extends UiEvent<FrontstageDeactivatedEventArgs> {}\n\n/** Frontstage Ready Event Args interface.\n * @public\n */\nexport interface FrontstageReadyEventArgs {\n frontstageDef: FrontstageDef;\n}\n\n/** Frontstage Ready Event class.\n * @public\n */\nexport class FrontstageReadyEvent extends UiEvent<FrontstageReadyEventArgs> {}\n\n/** Modal Frontstage Changed Event Args interface.\n * @public\n */\nexport interface ModalFrontstageChangedEventArgs {\n modalFrontstageCount: number;\n}\n\n/** Modal Frontstage Stack Changed Event class.\n * @public\n */\nexport class ModalFrontstageChangedEvent extends UiEvent<ModalFrontstageChangedEventArgs> {}\n\n/** Modal Frontstage Closed Event Args interface.\n * @public\n */\nexport interface ModalFrontstageClosedEventArgs {\n /** Modal Frontstage being closed */\n modalFrontstage: ModalFrontstageInfo;\n\n /** Total time spent in frontstage */\n totalTime: number;\n /** Engagement time spent in frontstage */\n engagementTime: number;\n /** Idle time spent in frontstage */\n idleTime: number;\n}\n\n/** Modal Frontstage Requested Close Event class. Notifies the modal stage that the close button was\n * pressed and passes the function to actually close the modal stage. This allows stage to do any\n * saving of unsaved data prior to closing the stage. If the ModalFrontstageInfo sets notifyCloseRequest\n * to true it is up to the stage to register for this event and call the stageCloseFunc once it has saved\n * any unsaved data.\n * @alpha\n */\nexport class ModalFrontstageRequestedCloseEvent extends UiEvent<ModalFrontstageRequestedCloseEventArgs> {}\n\n/** Modal Frontstage RequestedClose Event Args interface.\n * @alpha\n */\nexport interface ModalFrontstageRequestedCloseEventArgs {\n /** Modal Frontstage that is to be closed */\n modalFrontstage: ModalFrontstageInfo;\n /** Function to call to close the stage */\n stageCloseFunc: () => void;\n}\n\n/** Modal Frontstage Closed Event class.\n * @public\n */\nexport class ModalFrontstageClosedEvent extends UiEvent<ModalFrontstageClosedEventArgs> {}\n\n/** Tool Activated Event Args interface.\n * @public\n */\nexport interface ToolActivatedEventArgs {\n toolId: string;\n}\n\n/** Tool Activated Event class.\n * @public\n */\nexport class ToolActivatedEvent extends UiEvent<ToolActivatedEventArgs> {}\n\n/** Tool Icon Changed Event Args interface.\n * @public\n */\nexport interface ToolIconChangedEventArgs {\n iconSpec: string;\n}\n\n/** Tool Icon Changed Event class.\n * @public\n */\nexport class ToolIconChangedEvent extends UiEvent<ToolIconChangedEventArgs> {}\n\n/** Modal Frontstage information interface.\n * @public\n */\nexport interface ModalFrontstageInfo {\n title: string;\n content: React.ReactNode;\n appBarRight?: React.ReactNode;\n /** Set notifyCloseRequest to true on stages that register to listen for `onCloseModalFrontstageRequestedEvent` so\n * that the stage can save unsaved data before closing. Used by the ModalSettingsStage.\n * @alpha */\n notifyCloseRequest?: boolean;\n}\n\n/** Modal Frontstage array item interface.\n * @internal\n */\nexport interface ModalFrontstageItem {\n modalFrontstage: ModalFrontstageInfo;\n timeTracker: TimeTracker;\n}\n\n/**\n * [[UiFramework.frontstages]] interface\n * @public\n */\nexport interface FrameworkFrontstages {\n /** Returns true if Frontstage is loading its controls. If false the Frontstage content and controls have been created. */\n readonly isLoading: boolean;\n\n /** Get Frontstage Deactivated event. */\n readonly onFrontstageDeactivatedEvent: FrontstageDeactivatedEvent;\n\n /** Get Frontstage Activated event. */\n readonly onFrontstageActivatedEvent: FrontstageActivatedEvent;\n\n /** Get Frontstage Activated event. */\n readonly onFrontstageReadyEvent: FrontstageReadyEvent;\n\n /** Get Modal Frontstage Changed event. */\n readonly onModalFrontstageChangedEvent: ModalFrontstageChangedEvent;\n\n /** Get Modal Frontstage Closed event. */\n readonly onModalFrontstageClosedEvent: ModalFrontstageClosedEvent;\n\n /** Get Modal Frontstage Requested Closed event.\n * @alpha\n */\n readonly onCloseModalFrontstageRequestedEvent: ModalFrontstageRequestedCloseEvent;\n\n /** Get Tool Activated event. */\n readonly onToolActivatedEvent: ToolActivatedEvent;\n\n /** Get ToolSetting Reload event. */\n readonly onToolSettingsReloadEvent: UiEvent<void>;\n\n /** Get Tool Icon Changed event. */\n readonly onToolIconChangedEvent: ToolIconChangedEvent;\n\n /** Get Content Layout Activated event. */\n readonly onContentLayoutActivatedEvent: ContentLayoutActivatedEvent;\n\n /** Get Content Control Activated event. */\n readonly onContentControlActivatedEvent: ContentControlActivatedEvent;\n\n /** Get Navigation Aid Activated event. */\n readonly onNavigationAidActivatedEvent: NavigationAidActivatedEvent;\n\n /** Get Widget State Changed event. */\n readonly onWidgetStateChangedEvent: WidgetStateChangedEvent;\n\n /** Get panel state changed event.\n * @alpha\n */\n readonly onPanelStateChangedEvent: PanelStateChangedEvent;\n\n /** Get panel pinned changed event.\n * @alpha\n */\n readonly onPanelPinnedChangedEvent: UiEvent<PanelPinnedChangedEventArgs>;\n\n /** Clears the Frontstage map.\n */\n clearFrontstageDefs(): void;\n\n /** Clears the Frontstage Providers and the defs that may have been created from them.\n */\n clearFrontstageProviders(): void;\n\n /** Add a Frontstage via a [[FrontstageProvider]].\n * @param frontstageProvider FrontstageProvider representing the Frontstage to add\n */\n addFrontstageProvider(frontstageProvider: FrontstageProvider): void;\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 getFrontstageDef(id?: string): Promise<FrontstageDef | undefined>;\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 readonly activeFrontstageDef: FrontstageDef | undefined;\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 readonly activeFrontstageId: string;\n\n hasFrontstage(frontstageId: string): boolean;\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 setActiveFrontstage(frontstageId: string): Promise<void>;\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 setActiveFrontstageDef(\n frontstageDef: FrontstageDef | undefined\n ): Promise<void>;\n\n /** Deactivates the active FrontstageDef.\n */\n deactivateFrontstageDef(): Promise<void>;\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 readonly activeToolId: string;\n\n /** Sets the active tool id */\n setActiveToolId(toolId: string): void;\n\n /** Sets the active tool */\n setActiveTool(tool: Tool): void;\n\n /** Gets the active tool's [[ToolInformation]] */\n readonly activeToolInformation: ToolInformation | undefined;\n\n /** Opens a modal Frontstage. Modal Frontstages can be stacked.\n * @param modalFrontstage Information about the modal Frontstage\n */\n openModalFrontstage(modalFrontstage: ModalFrontstageInfo): void;\n\n /** Closes the top-most modal Frontstage.\n */\n closeModalFrontstage(): void;\n\n /** Updates the top-most modal Frontstage.\n */\n updateModalFrontstage(): void;\n\n /** Gets the top-most modal Frontstage.\n * @returns Top-most modal Frontstage, or undefined if there is none.\n */\n readonly activeModalFrontstage: ModalFrontstageInfo | undefined;\n\n /** Gets the number of modal Frontstages.\n * @returns Modal Frontstage count\n */\n readonly modalFrontstageCount: number;\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 setActiveNavigationAid(\n navigationAidId: string,\n iModelConnection: IModelConnection\n ): void;\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 setWidgetState(widgetId: string, state: WidgetState): boolean;\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 findWidget(widgetId: string): WidgetDef | undefined;\n\n /** Opens a nested Frontstage. Nested Frontstages can be stacked.\n * @param nestedFrontstage Information about the nested Frontstage\n */\n openNestedFrontstage(nestedFrontstage: FrontstageDef): Promise<void>;\n\n /** Closes the top-most nested Frontstage.\n */\n closeNestedFrontstage(): Promise<void>;\n\n /** Gets the top-most nested Frontstage.\n * @returns Top-most nested Frontstage, or undefined if there is none.\n */\n readonly activeNestedFrontstage: FrontstageDef | undefined;\n\n /** Gets the number of nested Frontstages.\n * @returns Nested Frontstage count\n */\n readonly nestedFrontstageCount: number;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FrameworkFrontstages.js","sourceRoot":"","sources":["../../../../src/appui-react/framework/FrameworkFrontstages.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAwBhD;;GAEG;AACH,mDAAmD;AACnD,MAAM,OAAO,wBAAyB,SAAQ,OAAqC;CAAG;AAmBtF;;GAEG;AACH,mDAAmD;AACnD,MAAM,OAAO,0BAA2B,SAAQ,OAAuC;CAAG;AAS1F;;GAEG;AACH,mDAAmD;AACnD,MAAM,OAAO,oBAAqB,SAAQ,OAAiC;CAAG;AAS9E;;GAEG;AACH,mDAAmD;AACnD,MAAM,OAAO,2BAA4B,SAAQ,OAAwC;CAAG;AAiB5F;;;;;;GAMG;AACH,mDAAmD;AACnD,MAAM,OAAO,kCAAmC,SAAQ,OAA+C;CAAG;AAY1G;;GAEG;AACH,mDAAmD;AACnD,MAAM,OAAO,0BAA2B,SAAQ,OAAuC;CAAG;AAS1F;;GAEG;AACH,mDAAmD;AACnD,MAAM,OAAO,kBAAmB,SAAQ,OAA+B;CAAG;AAS1E;;GAEG;AACH,mDAAmD;AACnD,MAAM,OAAO,oBAAqB,SAAQ,OAAiC;CAAG","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 */\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { IModelConnection, Tool } from \"@itwin/core-frontend\";\nimport type { ToolInformation } from \"../toolsettings/ToolInformation\";\nimport type { TimeTracker } from \"../configurableui/TimeTracker\";\nimport type { ContentControlActivatedEvent } from \"../content/ContentControl\";\nimport type { ContentLayoutActivatedEvent } from \"../content/ContentLayout\";\nimport type { FrontstageDef } from \"../frontstage/FrontstageDef\";\nimport type { FrontstageProvider } from \"../frontstage/FrontstageProvider\";\nimport type { NavigationAidActivatedEvent } from \"../navigationaids/NavigationAidControl\";\nimport type {\n PanelPinnedChangedEventArgs,\n PanelStateChangedEvent,\n} from \"../stagepanels/StagePanelDef\";\nimport type { WidgetDef, WidgetStateChangedEvent } from \"../widgets/WidgetDef\";\nimport type { WidgetState } from \"../widgets/WidgetState\";\n\n/** Frontstage Activated Event Args interface.\n * @public\n */\nexport interface FrontstageActivatedEventArgs {\n deactivatedFrontstageDef?: FrontstageDef;\n activatedFrontstageDef: FrontstageDef;\n}\n\n/** Frontstage Activated Event class.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class FrontstageActivatedEvent extends UiEvent<FrontstageActivatedEventArgs> {}\n\n/** Frontstage Deactivated Event Args interface.\n * @public\n */\nexport interface FrontstageDeactivatedEventArgs {\n /** Frontstage being deactivated */\n deactivatedFrontstageDef: FrontstageDef;\n /** Frontstage being activated */\n activatedFrontstageDef?: FrontstageDef;\n\n /** Total time spent in frontstage */\n totalTime: number;\n /** Engagement time spent in frontstage */\n engagementTime: number;\n /** Idle time spent in frontstage */\n idleTime: number;\n}\n\n/** Frontstage Deactivated Event class.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class FrontstageDeactivatedEvent extends UiEvent<FrontstageDeactivatedEventArgs> {}\n\n/** Frontstage Ready Event Args interface.\n * @public\n */\nexport interface FrontstageReadyEventArgs {\n frontstageDef: FrontstageDef;\n}\n\n/** Frontstage Ready Event class.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class FrontstageReadyEvent extends UiEvent<FrontstageReadyEventArgs> {}\n\n/** Modal Frontstage Changed Event Args interface.\n * @public\n */\nexport interface ModalFrontstageChangedEventArgs {\n modalFrontstageCount: number;\n}\n\n/** Modal Frontstage Stack Changed Event class.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ModalFrontstageChangedEvent extends UiEvent<ModalFrontstageChangedEventArgs> {}\n\n/** Modal Frontstage Closed Event Args interface.\n * @public\n */\nexport interface ModalFrontstageClosedEventArgs {\n /** Modal Frontstage being closed */\n modalFrontstage: ModalFrontstageInfo;\n\n /** Total time spent in frontstage */\n totalTime: number;\n /** Engagement time spent in frontstage */\n engagementTime: number;\n /** Idle time spent in frontstage */\n idleTime: number;\n}\n\n/** Modal Frontstage Requested Close Event class. Notifies the modal stage that the close button was\n * pressed and passes the function to actually close the modal stage. This allows stage to do any\n * saving of unsaved data prior to closing the stage. If the ModalFrontstageInfo sets notifyCloseRequest\n * to true it is up to the stage to register for this event and call the stageCloseFunc once it has saved\n * any unsaved data.\n * @alpha\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ModalFrontstageRequestedCloseEvent extends UiEvent<ModalFrontstageRequestedCloseEventArgs> {}\n\n/** Modal Frontstage RequestedClose Event Args interface.\n * @alpha\n */\nexport interface ModalFrontstageRequestedCloseEventArgs {\n /** Modal Frontstage that is to be closed */\n modalFrontstage: ModalFrontstageInfo;\n /** Function to call to close the stage */\n stageCloseFunc: () => void;\n}\n\n/** Modal Frontstage Closed Event class.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ModalFrontstageClosedEvent extends UiEvent<ModalFrontstageClosedEventArgs> {}\n\n/** Tool Activated Event Args interface.\n * @public\n */\nexport interface ToolActivatedEventArgs {\n toolId: string;\n}\n\n/** Tool Activated Event class.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ToolActivatedEvent extends UiEvent<ToolActivatedEventArgs> {}\n\n/** Tool Icon Changed Event Args interface.\n * @public\n */\nexport interface ToolIconChangedEventArgs {\n iconSpec: string;\n}\n\n/** Tool Icon Changed Event class.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class ToolIconChangedEvent extends UiEvent<ToolIconChangedEventArgs> {}\n\n/** Modal Frontstage information interface.\n * @public\n */\nexport interface ModalFrontstageInfo {\n title: string;\n content: React.ReactNode;\n appBarRight?: React.ReactNode;\n /** Set notifyCloseRequest to true on stages that register to listen for `onCloseModalFrontstageRequestedEvent` so\n * that the stage can save unsaved data before closing. Used by the ModalSettingsStage.\n * @alpha */\n notifyCloseRequest?: boolean;\n}\n\n/** Modal Frontstage array item interface.\n * @internal\n */\nexport interface ModalFrontstageItem {\n modalFrontstage: ModalFrontstageInfo;\n timeTracker: TimeTracker;\n}\n\n/**\n * [[UiFramework.frontstages]] interface\n * @public\n */\nexport interface FrameworkFrontstages {\n /** Returns true if Frontstage is loading its controls. If false the Frontstage content and controls have been created. */\n readonly isLoading: boolean;\n\n /** Get Frontstage Deactivated event. */\n readonly onFrontstageDeactivatedEvent: FrontstageDeactivatedEvent;\n\n /** Get Frontstage Activated event. */\n readonly onFrontstageActivatedEvent: FrontstageActivatedEvent;\n\n /** Get Frontstage Activated event. */\n readonly onFrontstageReadyEvent: FrontstageReadyEvent;\n\n /** Get Modal Frontstage Changed event. */\n readonly onModalFrontstageChangedEvent: ModalFrontstageChangedEvent;\n\n /** Get Modal Frontstage Closed event. */\n readonly onModalFrontstageClosedEvent: ModalFrontstageClosedEvent;\n\n /** Get Modal Frontstage Requested Closed event.\n * @alpha\n */\n readonly onCloseModalFrontstageRequestedEvent: ModalFrontstageRequestedCloseEvent;\n\n /** Get Tool Activated event. */\n readonly onToolActivatedEvent: ToolActivatedEvent;\n\n /** Get ToolSetting Reload event. */\n // eslint-disable-next-line deprecation/deprecation\n readonly onToolSettingsReloadEvent: UiEvent<void>;\n\n /** Get Tool Icon Changed event. */\n readonly onToolIconChangedEvent: ToolIconChangedEvent;\n\n /** Get Content Layout Activated event. */\n readonly onContentLayoutActivatedEvent: ContentLayoutActivatedEvent;\n\n /** Get Content Control Activated event. */\n readonly onContentControlActivatedEvent: ContentControlActivatedEvent;\n\n /** Get Navigation Aid Activated event. */\n readonly onNavigationAidActivatedEvent: NavigationAidActivatedEvent;\n\n /** Get Widget State Changed event. */\n readonly onWidgetStateChangedEvent: WidgetStateChangedEvent;\n\n /** Get panel state changed event.\n * @alpha\n */\n readonly onPanelStateChangedEvent: PanelStateChangedEvent;\n\n /** Get panel pinned changed event.\n * @alpha\n */\n // eslint-disable-next-line deprecation/deprecation\n readonly onPanelPinnedChangedEvent: UiEvent<PanelPinnedChangedEventArgs>;\n\n /** Clears the Frontstage map.\n */\n clearFrontstageDefs(): void;\n\n /** Clears the Frontstage Providers and the defs that may have been created from them.\n */\n clearFrontstageProviders(): void;\n\n /** Add a Frontstage via a [[FrontstageProvider]].\n * @param frontstageProvider FrontstageProvider representing the Frontstage to add\n */\n addFrontstageProvider(frontstageProvider: FrontstageProvider): void;\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 getFrontstageDef(id?: string): Promise<FrontstageDef | undefined>;\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 readonly activeFrontstageDef: FrontstageDef | undefined;\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 readonly activeFrontstageId: string;\n\n hasFrontstage(frontstageId: string): boolean;\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 setActiveFrontstage(frontstageId: string): Promise<void>;\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 setActiveFrontstageDef(\n frontstageDef: FrontstageDef | undefined\n ): Promise<void>;\n\n /** Deactivates the active FrontstageDef.\n */\n deactivateFrontstageDef(): Promise<void>;\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 readonly activeToolId: string;\n\n /** Sets the active tool id */\n setActiveToolId(toolId: string): void;\n\n /** Sets the active tool */\n setActiveTool(tool: Tool): void;\n\n /** Gets the active tool's [[ToolInformation]] */\n readonly activeToolInformation: ToolInformation | undefined;\n\n /** Opens a modal Frontstage. Modal Frontstages can be stacked.\n * @param modalFrontstage Information about the modal Frontstage\n */\n openModalFrontstage(modalFrontstage: ModalFrontstageInfo): void;\n\n /** Closes the top-most modal Frontstage.\n */\n closeModalFrontstage(): void;\n\n /** Updates the top-most modal Frontstage.\n */\n updateModalFrontstage(): void;\n\n /** Gets the top-most modal Frontstage.\n * @returns Top-most modal Frontstage, or undefined if there is none.\n */\n readonly activeModalFrontstage: ModalFrontstageInfo | undefined;\n\n /** Gets the number of modal Frontstages.\n * @returns Modal Frontstage count\n */\n readonly modalFrontstageCount: number;\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 setActiveNavigationAid(\n navigationAidId: string,\n iModelConnection: IModelConnection\n ): void;\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 setWidgetState(widgetId: string, state: WidgetState): boolean;\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 findWidget(widgetId: string): WidgetDef | undefined;\n\n /** Opens a nested Frontstage. Nested Frontstages can be stacked.\n * @param nestedFrontstage Information about the nested Frontstage\n */\n openNestedFrontstage(nestedFrontstage: FrontstageDef): Promise<void>;\n\n /** Closes the top-most nested Frontstage.\n */\n closeNestedFrontstage(): Promise<void>;\n\n /** Gets the top-most nested Frontstage.\n * @returns Top-most nested Frontstage, or undefined if there is none.\n */\n readonly activeNestedFrontstage: FrontstageDef | undefined;\n\n /** Gets the number of nested Frontstages.\n * @returns Nested Frontstage count\n */\n readonly nestedFrontstageCount: number;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkToolSettings.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/framework/FrameworkToolSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,sBAAsB,EAAE,CAAC;CAC1C;AAED;;GAEG;
|
|
1
|
+
{"version":3,"file":"FrameworkToolSettings.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/framework/FrameworkToolSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,sBAAsB,EAAE,CAAC;CAC1C;AAED;;GAEG;AAEH,qBAAa,+BAAgC,SAAQ,OAAO,CAAC,mCAAmC,CAAC;CAAG;AAEpG;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,6CAA6C;IAC7C,qBAAqB,IAAI,IAAI,CAAC;IAE9B,qCAAqC;IACrC,0BAA0B,CACxB,sBAAsB,EAAE,UAAU,EAAE,GAAG,SAAS,EAChD,MAAM,CAAC,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC;IAEX;OACG;IACH,qBAAqB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAEnD,iGAAiG;IACjG,QAAQ,CAAC,sBAAsB,EAAE,UAAU,EAAE,CAAC;IAE9C;;OAEG;IACH,8BAA8B,EAAE,OAAO,CAAC;IAExC,8FAA8F;IAC9F,eAAe,EAAE,MAAM,CAAC;IAExB,kDAAkD;IAClD,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC,8CAA8C;IAC9C,QAAQ,CAAC,4BAA4B,EAAE,+BAA+B,CAAC;IAEvE,QAAQ,CAAC,8BAA8B,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAEvC;;OAEG;IACH,qBAAqB,IAAI,OAAO,CAAC;CAClC"}
|
|
@@ -2,6 +2,7 @@ import { UiEvent } from "@itwin/appui-abstract";
|
|
|
2
2
|
/** Sync Tool Settings Properties Event class.
|
|
3
3
|
* @public
|
|
4
4
|
*/
|
|
5
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
5
6
|
export class SyncToolSettingsPropertiesEvent extends UiEvent {
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=FrameworkToolSettings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkToolSettings.js","sourceRoot":"","sources":["../../../../src/appui-react/framework/FrameworkToolSettings.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAWhD;;GAEG;AACH,MAAM,OAAO,+BAAgC,SAAQ,OAA4C;CAAG","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 ToolSettings\n */\nimport type { DialogItem, DialogPropertySyncItem } from \"@itwin/appui-abstract\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { InteractiveTool } from \"@itwin/core-frontend\";\n\n/** Sync Tool Settings Properties Event Args interface.\n * @public\n */\nexport interface SyncToolSettingsPropertiesEventArgs {\n toolId: string;\n syncProperties: DialogPropertySyncItem[];\n}\n\n/** Sync Tool Settings Properties Event class.\n * @public\n */\nexport class SyncToolSettingsPropertiesEvent extends UiEvent<SyncToolSettingsPropertiesEventArgs> {}\n\n/**\n * [[UiFramework.toolSettings]] interface\n * @public\n */\nexport interface FrameworkToolSettings {\n /** clear cached Tool Settings properties. */\n clearToolSettingsData(): void;\n\n /** Cache Tool Settings properties */\n initializeToolSettingsData(\n toolSettingsProperties: DialogItem[] | undefined,\n toolId?: string,\n toolLabel?: string,\n toolDescription?: string\n ): boolean;\n\n /** Set of data used in Tool Settings for the specified tool. The tool specified should be the \"active\" tool.\n */\n initializeDataForTool(tool: InteractiveTool): void;\n\n /** Returns the toolSettings properties that can be used to populate the tool settings widget. */\n readonly toolSettingsProperties: DialogItem[];\n\n /** Returns true if the Tool Settings are to be auto populated from the toolSettingsProperties.\n * The setter is chiefly for testing.\n */\n useDefaultToolSettingsProvider: boolean;\n\n /** The name of the active tool. This is typically the flyover text specified for the tool. */\n activeToolLabel: string;\n\n /** Returns the description of the active tool. */\n readonly activeToolDescription: string;\n\n /** Get ToolSettings Properties sync event. */\n readonly onSyncToolSettingsProperties: SyncToolSettingsPropertiesEvent;\n readonly onReloadToolSettingsProperties: UiEvent<void>;\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 readonly toolIdForToolSettings: string;\n\n /**\n * Sets the focus on the ToolSettings UI element.\n */\n focusIntoToolSettings(): boolean;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"FrameworkToolSettings.js","sourceRoot":"","sources":["../../../../src/appui-react/framework/FrameworkToolSettings.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAWhD;;GAEG;AACH,mDAAmD;AACnD,MAAM,OAAO,+BAAgC,SAAQ,OAA4C;CAAG","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 ToolSettings\n */\nimport type { DialogItem, DialogPropertySyncItem } from \"@itwin/appui-abstract\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport type { InteractiveTool } from \"@itwin/core-frontend\";\n\n/** Sync Tool Settings Properties Event Args interface.\n * @public\n */\nexport interface SyncToolSettingsPropertiesEventArgs {\n toolId: string;\n syncProperties: DialogPropertySyncItem[];\n}\n\n/** Sync Tool Settings Properties Event class.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport class SyncToolSettingsPropertiesEvent extends UiEvent<SyncToolSettingsPropertiesEventArgs> {}\n\n/**\n * [[UiFramework.toolSettings]] interface\n * @public\n */\nexport interface FrameworkToolSettings {\n /** clear cached Tool Settings properties. */\n clearToolSettingsData(): void;\n\n /** Cache Tool Settings properties */\n initializeToolSettingsData(\n toolSettingsProperties: DialogItem[] | undefined,\n toolId?: string,\n toolLabel?: string,\n toolDescription?: string\n ): boolean;\n\n /** Set of data used in Tool Settings for the specified tool. The tool specified should be the \"active\" tool.\n */\n initializeDataForTool(tool: InteractiveTool): void;\n\n /** Returns the toolSettings properties that can be used to populate the tool settings widget. */\n readonly toolSettingsProperties: DialogItem[];\n\n /** Returns true if the Tool Settings are to be auto populated from the toolSettingsProperties.\n * The setter is chiefly for testing.\n */\n useDefaultToolSettingsProvider: boolean;\n\n /** The name of the active tool. This is typically the flyover text specified for the tool. */\n activeToolLabel: string;\n\n /** Returns the description of the active tool. */\n readonly activeToolDescription: string;\n\n /** Get ToolSettings Properties sync event. */\n readonly onSyncToolSettingsProperties: SyncToolSettingsPropertiesEvent;\n // eslint-disable-next-line deprecation/deprecation\n readonly onReloadToolSettingsProperties: UiEvent<void>;\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 readonly toolIdForToolSettings: string;\n\n /**\n * Sets the focus on the ToolSettings UI element.\n */\n focusIntoToolSettings(): boolean;\n}\n"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/** @packageDocumentation
|
|
2
2
|
* @module Frontstage
|
|
3
3
|
*/
|
|
4
|
+
import type { NineZoneDispatch, NineZoneState } from "@itwin/appui-layout-react";
|
|
4
5
|
import type { ScreenViewport } from "@itwin/core-frontend";
|
|
6
|
+
import type { XAndY } from "@itwin/core-geometry";
|
|
5
7
|
import type { RectangleProps, SizeProps } from "@itwin/core-react";
|
|
6
|
-
import type { NineZoneDispatch, NineZoneState } from "@itwin/appui-layout-react";
|
|
7
8
|
import type { ContentControl } from "../content/ContentControl";
|
|
8
9
|
import type { ContentGroup } from "../content/ContentGroup";
|
|
9
10
|
import { ContentGroupProvider } from "../content/ContentGroup";
|
|
@@ -15,7 +16,6 @@ import { TimeTracker } from "../configurableui/TimeTracker";
|
|
|
15
16
|
import type { FrontstageConfig } from "./FrontstageConfig";
|
|
16
17
|
import { StagePanelLocation } from "../stagepanels/StagePanelLocation";
|
|
17
18
|
import { WidgetState } from "../widgets/WidgetState";
|
|
18
|
-
import type { XAndY } from "@itwin/core-geometry";
|
|
19
19
|
import type { ChildWindow } from "../childwindow/ChildWindowConfig";
|
|
20
20
|
/** @internal */
|
|
21
21
|
export interface FrontstageEventArgs {
|
|
@@ -53,6 +53,7 @@ export declare class FrontstageDef {
|
|
|
53
53
|
private _floatingContentControls?;
|
|
54
54
|
private _toolAdminDefaultToolId?;
|
|
55
55
|
private _dispatch?;
|
|
56
|
+
private _batching;
|
|
56
57
|
get id(): string;
|
|
57
58
|
get usage(): string;
|
|
58
59
|
get version(): number;
|
|
@@ -78,6 +79,11 @@ export declare class FrontstageDef {
|
|
|
78
79
|
set nineZoneState(state: NineZoneState | undefined);
|
|
79
80
|
/** @internal */
|
|
80
81
|
get dispatch(): NineZoneDispatch;
|
|
82
|
+
set dispatch(dispatch: NineZoneDispatch);
|
|
83
|
+
/** Dispatch multiple actions inside `fn`, but trigger events once.
|
|
84
|
+
* @internal
|
|
85
|
+
*/
|
|
86
|
+
batch(fn: () => void): void;
|
|
81
87
|
/** @internal */
|
|
82
88
|
get timeTracker(): TimeTracker;
|
|
83
89
|
/** Created a [[FrontstageDef]] and initialize it */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrontstageDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"FrontstageDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/FrontstageDef.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,22 +7,23 @@
|
|
|
7
7
|
*/
|
|
8
8
|
// cSpell:ignore popout
|
|
9
9
|
import * as React from "react";
|
|
10
|
-
import { IModelApp, NotifyMessageDetails, OutputMessagePriority, OutputMessageType, } from "@itwin/core-frontend";
|
|
11
10
|
import { UiError } from "@itwin/appui-abstract";
|
|
12
|
-
import { Rectangle, Size } from "@itwin/core-react";
|
|
13
11
|
import { getTabLocation, getWidgetLocation, isFloatingTabLocation, isFloatingWidgetLocation, isPanelTabLocation, isPopoutTabLocation, isPopoutWidgetLocation, NineZoneStateReducer, panelSides, } from "@itwin/appui-layout-react";
|
|
12
|
+
import { BentleyStatus } from "@itwin/core-bentley";
|
|
13
|
+
import { IModelApp, NotifyMessageDetails, OutputMessagePriority, OutputMessageType, } from "@itwin/core-frontend";
|
|
14
|
+
import { Rectangle } from "@itwin/core-react";
|
|
14
15
|
import { ContentGroupProvider } from "../content/ContentGroup";
|
|
15
|
-
import { StagePanelDef
|
|
16
|
+
import { StagePanelDef } from "../stagepanels/StagePanelDef";
|
|
16
17
|
import { UiFramework } from "../UiFramework";
|
|
17
18
|
import { WidgetDef, WidgetType } from "../widgets/WidgetDef";
|
|
18
19
|
import { TimeTracker } from "../configurableui/TimeTracker";
|
|
19
20
|
import { PopoutWidget } from "../childwindow/PopoutWidget";
|
|
20
|
-
import { BentleyStatus } from "@itwin/core-bentley";
|
|
21
21
|
import { StageUsage } from "./StageUsage";
|
|
22
22
|
import { StagePanelLocation } from "../stagepanels/StagePanelLocation";
|
|
23
23
|
import { WidgetState } from "../widgets/WidgetState";
|
|
24
24
|
import { InternalFrontstageManager } from "./InternalFrontstageManager";
|
|
25
25
|
import { InternalContentDialogManager } from "../dialog/InternalContentDialogManager";
|
|
26
|
+
import { StagePanelState } from "../stagepanels/StagePanelState";
|
|
26
27
|
/** FrontstageDef class provides an API for a Frontstage.
|
|
27
28
|
* @public
|
|
28
29
|
*/
|
|
@@ -34,6 +35,7 @@ export class FrontstageDef {
|
|
|
34
35
|
this._isApplicationClosing = false;
|
|
35
36
|
this._version = 0;
|
|
36
37
|
this._timeTracker = new TimeTracker();
|
|
38
|
+
this._batching = false;
|
|
37
39
|
}
|
|
38
40
|
get id() {
|
|
39
41
|
return this._id;
|
|
@@ -201,6 +203,8 @@ export class FrontstageDef {
|
|
|
201
203
|
return;
|
|
202
204
|
const oldState = this._nineZoneState;
|
|
203
205
|
this._nineZoneState = state;
|
|
206
|
+
if (this._batching)
|
|
207
|
+
return;
|
|
204
208
|
const popoutResult = this.handlePopouts(oldState);
|
|
205
209
|
if (oldState) {
|
|
206
210
|
this.triggerStateChangeEvents(oldState);
|
|
@@ -221,15 +225,27 @@ export class FrontstageDef {
|
|
|
221
225
|
get dispatch() {
|
|
222
226
|
var _a;
|
|
223
227
|
return ((_a = this._dispatch) !== null && _a !== void 0 ? _a : (this._dispatch = (action) => {
|
|
224
|
-
if (action.type === "RESIZE") {
|
|
225
|
-
InternalFrontstageManager.nineZoneSize = Size.create(action.size);
|
|
226
|
-
}
|
|
227
228
|
const state = this.nineZoneState;
|
|
228
229
|
if (!state)
|
|
229
230
|
return;
|
|
230
231
|
this.nineZoneState = NineZoneStateReducer(state, action);
|
|
231
232
|
}));
|
|
232
233
|
}
|
|
234
|
+
set dispatch(dispatch) {
|
|
235
|
+
this._dispatch = dispatch;
|
|
236
|
+
}
|
|
237
|
+
/** Dispatch multiple actions inside `fn`, but trigger events once.
|
|
238
|
+
* @internal
|
|
239
|
+
*/
|
|
240
|
+
batch(fn) {
|
|
241
|
+
const initialState = this._nineZoneState;
|
|
242
|
+
this._batching = true;
|
|
243
|
+
fn();
|
|
244
|
+
this._batching = false;
|
|
245
|
+
const updatedState = this._nineZoneState;
|
|
246
|
+
this._nineZoneState = initialState;
|
|
247
|
+
this.nineZoneState = updatedState;
|
|
248
|
+
}
|
|
233
249
|
/** @internal */
|
|
234
250
|
get timeTracker() {
|
|
235
251
|
return this._timeTracker;
|
|
@@ -253,6 +269,7 @@ export class FrontstageDef {
|
|
|
253
269
|
}
|
|
254
270
|
// istanbul ignore next
|
|
255
271
|
if (!this._contentGroup)
|
|
272
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
256
273
|
throw new UiError(UiFramework.loggerCategory(this), `onActivated: Content Group not defined`);
|
|
257
274
|
this._contentLayoutDef = UiFramework.content.layouts.getForGroup(this._contentGroup);
|
|
258
275
|
UiFramework.frontstages.onContentLayoutActivatedEvent.emit({
|
|
@@ -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 {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\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 } 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\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ChildWindow } from \"../childwindow/ChildWindowConfig\";\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 if (nineZone.draggedTab?.tabId === widgetId) {\n widgetMap.set(widgetDef, WidgetState.Closed);\n continue;\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 const result = this.openPopoutWidgetContainer(popoutId, oldState);\n if (!result) return result;\n }\n\n return true;\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n const popoutResult = this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n if (popoutResult === false) {\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(\n OutputMessagePriority.Error,\n UiFramework.translate(\"widget.errorMessage.widgetPopoutFail\"),\n undefined,\n OutputMessageType.Toast\n )\n );\n return;\n }\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n 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 panelDef.pinned = panelDef.initialConfig?.pinned ?? true;\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 to determine WidgetState from NinezoneState\n * @internal\n */\n public getWidgetCurrentState(widgetDef: WidgetDef): WidgetState | undefined {\n const state = this.nineZoneState;\n if (!state) return widgetDef.defaultState;\n\n const tab = state.tabs[widgetDef.id];\n if (tab && tab.unloaded) {\n return WidgetState.Unloaded;\n }\n\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 return WidgetState.Closed;\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.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(\n widgetContainerId: string,\n oldState: NineZoneState | undefined\n ): boolean {\n const state = this.nineZoneState;\n if (!state) return false;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return false;\n if (!isPopoutWidgetLocation(location)) return false;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return false;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return false;\n\n const popoutContent = (\n <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\n const result = UiFramework.childWindows.open(\n widgetContainerId,\n widgetDef.label,\n popoutContent,\n position,\n UiFramework.useDefaultPopoutUrl\n );\n\n if (!result && oldState) {\n this.nineZoneState = oldState;\n return false;\n }\n\n return true;\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: ChildWindow\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 let width = childWindow.shouldUseOuterSized\n ? childWindow.outerWidth\n : childWindow.innerWidth;\n let height = childWindow.shouldUseOuterSized\n ? childWindow.outerHeight\n : childWindow.innerHeight;\n if (childWindow.deltaHeight) {\n height = height + childWindow.deltaHeight;\n if (height < 1) height = 100;\n }\n if (childWindow.deltaWidth) {\n width = width + childWindow.deltaWidth;\n if (width < 1) width = 100;\n }\n\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.\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"]}
|
|
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 { UiError } from \"@itwin/appui-abstract\";\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 { BentleyStatus } from \"@itwin/core-bentley\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { RectangleProps, SizeProps } from \"@itwin/core-react\";\nimport { Rectangle } from \"@itwin/core-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 } 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 { 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\";\nimport type { ChildWindow } from \"../childwindow/ChildWindowConfig\";\nimport { StagePanelState } from \"../stagepanels/StagePanelState\";\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 private _batching = false;\n\n public get id(): string {\n return this._id;\n }\n public get usage(): string {\n return this._usage !== undefined ? this._usage : StageUsage.General;\n }\n public get version(): number {\n return this._version;\n }\n public get contentGroupProvider(): ContentGroupProvider | undefined {\n return this._contentGroupProvider;\n }\n 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 if (nineZone.draggedTab?.tabId === widgetId) {\n widgetMap.set(widgetDef, WidgetState.Closed);\n continue;\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 const result = this.openPopoutWidgetContainer(popoutId, oldState);\n if (!result) return result;\n }\n\n return true;\n }\n\n /** @internal */\n public get nineZoneState(): NineZoneState | undefined {\n return this._nineZoneState;\n }\n public set nineZoneState(state: NineZoneState | undefined) {\n if (this._nineZoneState === state) return;\n\n const oldState = this._nineZoneState;\n this._nineZoneState = state;\n\n if (this._batching) return;\n\n const popoutResult = this.handlePopouts(oldState);\n if (oldState) {\n this.triggerStateChangeEvents(oldState);\n }\n\n const isClosing = this._isStageClosing || this._isApplicationClosing;\n if (isClosing && !this.isReady) return;\n if (popoutResult === false) {\n IModelApp.notifications.outputMessage(\n new NotifyMessageDetails(\n OutputMessagePriority.Error,\n UiFramework.translate(\"widget.errorMessage.widgetPopoutFail\"),\n undefined,\n OutputMessageType.Toast\n )\n );\n return;\n }\n InternalFrontstageManager.onFrontstageNineZoneStateChangedEvent.emit({\n frontstageDef: this,\n state,\n });\n }\n\n /** @internal */\n public get dispatch(): NineZoneDispatch {\n return (this._dispatch ??= (action) => {\n const state = this.nineZoneState;\n if (!state) return;\n this.nineZoneState = NineZoneStateReducer(state, action);\n });\n }\n public set dispatch(dispatch: NineZoneDispatch) {\n this._dispatch = dispatch;\n }\n\n /** Dispatch multiple actions inside `fn`, but trigger events once.\n * @internal\n */\n public batch(fn: () => void): void {\n const initialState = this._nineZoneState;\n\n this._batching = true;\n fn();\n this._batching = false;\n\n const updatedState = this._nineZoneState;\n this._nineZoneState = initialState;\n this.nineZoneState = updatedState;\n }\n\n /** @internal */\n public get timeTracker(): TimeTracker {\n return this._timeTracker;\n }\n\n /** 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 // eslint-disable-next-line deprecation/deprecation\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 panelDef.pinned = panelDef.initialConfig?.pinned ?? true;\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 to determine WidgetState from NinezoneState\n * @internal\n */\n public getWidgetCurrentState(widgetDef: WidgetDef): WidgetState | undefined {\n const state = this.nineZoneState;\n if (!state) return widgetDef.defaultState;\n\n const tab = state.tabs[widgetDef.id];\n if (tab && tab.unloaded) {\n return WidgetState.Unloaded;\n }\n\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 return WidgetState.Closed;\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.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:50, y:100} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:400, width:400} is used.\n * @beta\n */\n public floatWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n /** Check widget and panel state to determine whether the widget is currently displayed\n * @param widgetId case-sensitive Widget Id\n * @public\n */\n public isWidgetDisplayed(widgetId: string): boolean {\n if (!this.nineZoneState) return false;\n\n const tabLocation = getTabLocation(this.nineZoneState, widgetId);\n if (!tabLocation) return false;\n\n if (isPanelTabLocation(tabLocation)) {\n const panel = this.nineZoneState.panels[tabLocation.side];\n const widgetDef = this.findWidgetDef(widgetId);\n const isVisible =\n !!widgetDef && widgetDef.state === WidgetState.Open && !panel.collapsed;\n return isVisible;\n }\n\n return true;\n }\n\n /** Opens window for specified PopoutWidget container. Used to reopen popout when running in Electron.\n * @internal\n */\n public openPopoutWidgetContainer(\n widgetContainerId: string,\n oldState: NineZoneState | undefined\n ): boolean {\n const state = this.nineZoneState;\n if (!state) return false;\n\n const location = getWidgetLocation(state, widgetContainerId);\n if (!location) return false;\n if (!isPopoutWidgetLocation(location)) return false;\n\n const widget = state.widgets[widgetContainerId];\n // Popout widget should only contain a single tab.\n if (widget.tabs.length !== 1) return false;\n\n const tabId = widget.tabs[0];\n const widgetDef = this.findWidgetDef(tabId);\n if (!widgetDef) return false;\n\n const popoutContent = (\n <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\n const result = UiFramework.childWindows.open(\n widgetContainerId,\n widgetDef.label,\n popoutContent,\n position,\n UiFramework.useDefaultPopoutUrl\n );\n\n if (!result && oldState) {\n this.nineZoneState = oldState;\n return false;\n }\n\n return true;\n }\n\n /** Create a new popout/child window that contains the widget specified by its Id.\n * @param widgetId case sensitive Widget Id\n * @param position Position of top left corner of floating panel in pixels. If undefined {x:0, y:0} is used.\n * @param size defines the width and height of the floating panel. If undefined and widget has been floated before\n * the previous size is used, else {height:800, width:600} is used.\n * @beta\n */\n public popoutWidget(widgetId: string, position?: XAndY, size?: SizeProps) {\n const state = this.nineZoneState;\n if (!state) return;\n const widgetDef = this.findWidgetDef(widgetId);\n if (!widgetDef) return;\n\n this.dispatch({\n type: \"WIDGET_TAB_POPOUT\",\n id: widgetId,\n position,\n size,\n });\n }\n\n public get isStageClosing() {\n return this._isStageClosing;\n }\n\n public get isApplicationClosing() {\n return this._isApplicationClosing;\n }\n\n public get isReady() {\n return this._isReady;\n }\n\n /** @internal */\n public saveChildWindowSizeAndPosition(\n childWindowId: string,\n childWindow: ChildWindow\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 let width = childWindow.shouldUseOuterSized\n ? childWindow.outerWidth\n : childWindow.innerWidth;\n let height = childWindow.shouldUseOuterSized\n ? childWindow.outerHeight\n : childWindow.innerHeight;\n if (childWindow.deltaHeight) {\n height = height + childWindow.deltaHeight;\n if (height < 1) height = 100;\n }\n if (childWindow.deltaWidth) {\n width = width + childWindow.deltaWidth;\n if (width < 1) width = 100;\n }\n\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.\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"]}
|