@itwin/appui-react 4.7.2 → 4.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +9 -3
- package/lib/cjs/appui-react/UiFramework.js +7 -4
- package/lib/cjs/appui-react/UiFramework.js.map +1 -1
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +2 -1
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/ChildWindowConfig.d.ts +17 -0
- package/lib/cjs/appui-react/childwindow/ChildWindowConfig.d.ts.map +1 -0
- package/lib/cjs/appui-react/childwindow/ChildWindowConfig.js +3 -0
- package/lib/cjs/appui-react/childwindow/ChildWindowConfig.js.map +1 -0
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +18 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/TimeTracker.js +2 -1
- package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.js +12 -9
- package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/content/DefaultViewOverlay.js +4 -3
- package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.js +2 -1
- package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/cjs/appui-react/content/IModelViewport.js +7 -4
- package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +2 -1
- package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentViewManager.js +2 -2
- package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js +12 -10
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +3 -2
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/cjs/appui-react/dialog/ContentDialog.js +6 -3
- package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js +3 -2
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts +2 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +56 -38
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +3 -2
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +2 -1
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +11 -7
- package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +11 -7
- package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +13 -8
- package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/messages/ActivityMessage.js +7 -5
- package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
- package/lib/cjs/appui-react/messages/MessageManager.js +2 -1
- package/lib/cjs/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/cjs/appui-react/pickers/ViewSelector.js +6 -5
- package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +2 -1
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/cjs/appui-react/popup/PopupManager.js +2 -1
- package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts +1 -0
- package/lib/cjs/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.js +2 -1
- package/lib/cjs/appui-react/preview/PreviewFeatures.js.map +1 -1
- package/lib/cjs/appui-react/selection/SelectionContextItemDef.js +2 -2
- package/lib/cjs/appui-react/selection/SelectionContextItemDef.js.map +1 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +1 -2
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +16 -11
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/Indicator.js +2 -1
- package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBar.js +5 -3
- package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js +1 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.js +4 -6
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js +4 -3
- package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +17 -10
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.d.ts +1 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js +1 -1
- package/lib/cjs/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +2 -3
- package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +22 -20
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +10 -9
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +2 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +14 -8
- package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
- package/lib/cjs/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js +1 -1
- package/lib/cjs/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js +3 -3
- package/lib/cjs/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Content.js +9 -8
- package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +50 -47
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
- package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
- package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js +23 -15
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Toolbars.js +3 -2
- package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
- package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js +2 -2
- package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/cjs/appui-react/widgets/Widget.d.ts +1 -1
- package/lib/cjs/appui-react/widgets/Widget.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/Widget.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +15 -7
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetHost.js +3 -2
- package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/esm/appui-react/UiFramework.js +7 -4
- package/lib/esm/appui-react/UiFramework.js.map +1 -1
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js +2 -1
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowConfig.d.ts +17 -0
- package/lib/esm/appui-react/childwindow/ChildWindowConfig.d.ts.map +1 -0
- package/lib/esm/appui-react/childwindow/ChildWindowConfig.js +2 -0
- package/lib/esm/appui-react/childwindow/ChildWindowConfig.js.map +1 -0
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +18 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/TimeTracker.js +2 -1
- package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.js +12 -9
- package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/esm/appui-react/content/DefaultViewOverlay.js +4 -3
- package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.js +2 -1
- package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/esm/appui-react/content/IModelViewport.js +7 -4
- package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentLayoutManager.js +2 -1
- package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentViewManager.js +2 -2
- package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/esm/appui-react/content/split-pane/SplitPane.js +12 -10
- package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +3 -2
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/esm/appui-react/dialog/ContentDialog.js +6 -3
- package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/esm/appui-react/dialog/DialogManagerBase.js +3 -2
- package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts +2 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +57 -39
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +3 -2
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +2 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +11 -7
- package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +11 -7
- package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useSolarDataProvider.js +13 -8
- package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
- package/lib/esm/appui-react/messages/ActivityMessage.js +7 -5
- package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
- package/lib/esm/appui-react/messages/MessageManager.js +2 -1
- package/lib/esm/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/esm/appui-react/pickers/ViewSelector.js +6 -5
- package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js +2 -1
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/esm/appui-react/popup/PopupManager.js +2 -1
- package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.d.ts +1 -0
- package/lib/esm/appui-react/preview/PreviewFeatures.d.ts.map +1 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.js +2 -1
- package/lib/esm/appui-react/preview/PreviewFeatures.js.map +1 -1
- package/lib/esm/appui-react/selection/SelectionContextItemDef.js +2 -2
- package/lib/esm/appui-react/selection/SelectionContextItemDef.js.map +1 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +1 -2
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js +16 -11
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/esm/appui-react/statusbar/Indicator.js +2 -1
- package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBar.js +5 -3
- package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/theme/ThemeManager.js +1 -1
- package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/esm/appui-react/toolbar/ToolbarHelper.js +4 -6
- package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
- package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js +4 -3
- package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js +17 -10
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.d.ts +1 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.js +1 -1
- package/lib/esm/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +2 -3
- package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +22 -20
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +10 -9
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +2 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +14 -8
- package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js +1 -1
- package/lib/esm/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/esm/appui-react/uiprovider/ComponentGenerator.js +1 -1
- package/lib/esm/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.js +3 -3
- package/lib/esm/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Content.js +9 -8
- package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +50 -47
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
- package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
- package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.js +23 -15
- package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Toolbars.js +3 -2
- package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
- package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js +2 -2
- package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/esm/appui-react/widgets/Widget.d.ts +1 -1
- package/lib/esm/appui-react/widgets/Widget.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/Widget.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +15 -7
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetHost.js +3 -2
- package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/public/locales/en/UiFramework.json +2 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Tab.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,YAAY,CAAC;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,gBAAgB;AAChB,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"Tab.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Tab.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,YAAY,CAAC;AACpB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,gBAAgB;AAChB,MAAM,UAAU,eAAe;IAC7B,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,SAAS,CAAC;IACvC,MAAM,cAAc,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CACzB,GAAG,EAAE,CAAC,cAAc,CAAC,wBAAwB,CAAC,SAAS,CAAC,EACxD,CAAC,SAAS,CAAC,CACZ,CAAC;IACF,OAAO,oBAAC,SAAS,IAAC,SAAS,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,GAAI,CAAC;AAChE,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,iBAAiB,CAAC,SAAgC;IAChE,IAAI,SAAS,KAAK,SAAS,CAAC,GAAG;QAAE,OAAO,gBAAgB,CAAC;SACpD,IAAI,SAAS,KAAK,SAAS,CAAC,gBAAgB;QAAE,OAAO,eAAe,CAAC;IAC1E,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport \"./Tab.scss\";\nimport * as React from \"react\";\nimport { WidgetTab } from \"@itwin/appui-layout-react\";\nimport { useWidgetDef } from \"./Content\";\nimport { BadgeUtilities } from \"@itwin/core-react\";\nimport { BadgeType } from \"@itwin/appui-abstract\";\n\n/** @internal */\nexport function WidgetPanelsTab() {\n const widgetDef = useWidgetDef();\n const badgeType = widgetDef?.badgeType;\n const badgeClassName = getBadgeClassName(badgeType);\n const badge = React.useMemo(\n () => BadgeUtilities.getComponentForBadgeType(badgeType),\n [badgeType]\n );\n return <WidgetTab className={badgeClassName} badge={badge} />;\n}\n\n/** @internal */\nexport function getBadgeClassName(badgeType: BadgeType | undefined) {\n if (badgeType === BadgeType.New) return \"uifw-badge-new\";\n else if (badgeType === BadgeType.TechnicalPreview) return \"uifw-badge-tp\";\n return undefined;\n}\n"]}
|
|
@@ -12,8 +12,9 @@ import { DockedToolSetting, DockedToolSettings, ScrollableWidgetContent, useLayo
|
|
|
12
12
|
import { UiFramework } from "../UiFramework";
|
|
13
13
|
import { InternalFrontstageManager } from "../frontstage/InternalFrontstageManager";
|
|
14
14
|
function EmptyToolSettingsEntry() {
|
|
15
|
+
var _a;
|
|
15
16
|
const toolId = UiFramework.frontstages.activeToolId;
|
|
16
|
-
const toolName = IModelApp.tools.find(toolId)
|
|
17
|
+
const toolName = (_a = IModelApp.tools.find(toolId)) === null || _a === void 0 ? void 0 : _a.flyover;
|
|
17
18
|
const toolPlaceholderName = IModelApp.localization.getLocalizedString("UiFramework:tools.noToolSettingsPlaceholderName");
|
|
18
19
|
const labelStringStart = IModelApp.localization.getLocalizedString("UiFramework:tools.noToolSettingsStart");
|
|
19
20
|
const labelStringEnd = IModelApp.localization.getLocalizedString("UiFramework:tools.noToolSettingsEnd");
|
|
@@ -50,36 +51,38 @@ export function WidgetPanelsToolSettings() {
|
|
|
50
51
|
}
|
|
51
52
|
/** @internal */
|
|
52
53
|
export function ToolSettingsDockedContent() {
|
|
54
|
+
var _a, _b;
|
|
53
55
|
const settings = useHorizontalToolSettingNodes();
|
|
54
56
|
const forceRefreshKey = useRefreshKey(settings);
|
|
55
57
|
// for the overflow to work properly each setting in the DockedToolSettings should be wrapped by a DockedToolSetting component
|
|
56
|
-
return (React.createElement(DockedToolSettings, { itemId: InternalFrontstageManager.activeToolSettingsProvider
|
|
58
|
+
return (React.createElement(DockedToolSettings, { itemId: (_b = (_a = InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.uniqueId) !== null && _b !== void 0 ? _b : "none", key: forceRefreshKey }, settings &&
|
|
57
59
|
settings.map((entry, index) => (React.createElement(DockedToolSetting, { key: index },
|
|
58
60
|
React.createElement(TsLabel, null, entry.labelNode),
|
|
59
61
|
entry.editorNode)))));
|
|
60
62
|
}
|
|
61
63
|
/** @internal */
|
|
62
64
|
export function useHorizontalToolSettingNodes() {
|
|
65
|
+
var _a;
|
|
63
66
|
React.useEffect(() => {
|
|
64
|
-
|
|
67
|
+
var _a, _b;
|
|
68
|
+
(_b = (_a = UiFramework.frontstages.activeToolInformation) === null || _a === void 0 ? void 0 : _a.toolUiProvider) === null || _b === void 0 ? void 0 : _b.reloadPropertiesFromTool();
|
|
65
69
|
}, []);
|
|
66
|
-
const [settings, setSettings] = React.useState(InternalFrontstageManager.activeToolSettingsProvider
|
|
67
|
-
?.horizontalToolSettingNodes);
|
|
70
|
+
const [settings, setSettings] = React.useState((_a = InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.horizontalToolSettingNodes);
|
|
68
71
|
const [emptySettings, setEmptySettings] = React.useState(() => [
|
|
69
72
|
EmptyToolSettingsEntry(),
|
|
70
73
|
]);
|
|
71
74
|
React.useEffect(() => {
|
|
72
75
|
return UiFramework.frontstages.onToolActivatedEvent.addListener(() => {
|
|
73
|
-
|
|
74
|
-
|
|
76
|
+
var _a;
|
|
77
|
+
const nodes = (_a = InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.horizontalToolSettingNodes;
|
|
75
78
|
setSettings(nodes);
|
|
76
79
|
setEmptySettings([EmptyToolSettingsEntry()]);
|
|
77
80
|
});
|
|
78
81
|
}, [setSettings, setEmptySettings]);
|
|
79
82
|
React.useEffect(() => {
|
|
80
83
|
return UiFramework.frontstages.onToolSettingsReloadEvent.addListener(() => {
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
var _a;
|
|
85
|
+
const nodes = (_a = InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.horizontalToolSettingNodes;
|
|
83
86
|
setSettings(nodes);
|
|
84
87
|
setEmptySettings([EmptyToolSettingsEntry()]);
|
|
85
88
|
});
|
|
@@ -103,13 +106,16 @@ export function ToolSettingsGrid({ settings }) {
|
|
|
103
106
|
}
|
|
104
107
|
/** @internal */
|
|
105
108
|
export function useToolSettingsNode() {
|
|
109
|
+
var _a;
|
|
106
110
|
React.useEffect(() => {
|
|
107
|
-
|
|
111
|
+
var _a, _b;
|
|
112
|
+
(_b = (_a = UiFramework.frontstages.activeToolInformation) === null || _a === void 0 ? void 0 : _a.toolUiProvider) === null || _b === void 0 ? void 0 : _b.reloadPropertiesFromTool();
|
|
108
113
|
}, []);
|
|
109
|
-
const [settings, setSettings] = React.useState(InternalFrontstageManager.activeToolSettingsProvider
|
|
114
|
+
const [settings, setSettings] = React.useState((_a = InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.toolSettingsNode);
|
|
110
115
|
React.useEffect(() => {
|
|
111
116
|
const handleToolActivatedEvent = () => {
|
|
112
|
-
|
|
117
|
+
var _a;
|
|
118
|
+
const nodes = (_a = InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.toolSettingsNode;
|
|
113
119
|
setSettings(nodes);
|
|
114
120
|
};
|
|
115
121
|
UiFramework.frontstages.onToolActivatedEvent.addListener(handleToolActivatedEvent);
|
|
@@ -119,7 +125,8 @@ export function useToolSettingsNode() {
|
|
|
119
125
|
}, [setSettings]);
|
|
120
126
|
React.useEffect(() => {
|
|
121
127
|
const handleToolSettingsReloadEvent = () => {
|
|
122
|
-
|
|
128
|
+
var _a;
|
|
129
|
+
const nodes = (_a = InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.toolSettingsNode;
|
|
123
130
|
setSettings(nodes);
|
|
124
131
|
};
|
|
125
132
|
UiFramework.frontstages.onToolSettingsReloadEvent.addListener(handleToolSettingsReloadEvent);
|
|
@@ -131,7 +138,7 @@ export function useToolSettingsNode() {
|
|
|
131
138
|
}
|
|
132
139
|
/** @internal */
|
|
133
140
|
export function ToolSettingsContent() {
|
|
134
|
-
const toolSettingsType = useLayout((state) => state.toolSettings
|
|
141
|
+
const toolSettingsType = useLayout((state) => { var _a; return (_a = state.toolSettings) === null || _a === void 0 ? void 0 : _a.type; });
|
|
135
142
|
// This is needed to remount underlying components tree when going into widget state.
|
|
136
143
|
if (!toolSettingsType || toolSettingsType === "docked")
|
|
137
144
|
return null;
|
|
@@ -139,6 +146,7 @@ export function ToolSettingsContent() {
|
|
|
139
146
|
}
|
|
140
147
|
/** @internal */
|
|
141
148
|
export function ToolSettingsWidgetContent() {
|
|
149
|
+
var _a, _b;
|
|
142
150
|
const floatingToolSettingsContainerRef = React.useRef(null);
|
|
143
151
|
const node = useToolSettingsNode();
|
|
144
152
|
const forceRefreshKey = useRefreshKey(node);
|
|
@@ -156,7 +164,7 @@ export function ToolSettingsWidgetContent() {
|
|
|
156
164
|
}
|
|
157
165
|
}, [node]);
|
|
158
166
|
// istanbul ignore next
|
|
159
|
-
const providerId = InternalFrontstageManager.activeToolSettingsProvider
|
|
167
|
+
const providerId = (_b = (_a = InternalFrontstageManager.activeToolSettingsProvider) === null || _a === void 0 ? void 0 : _a.uniqueId) !== null && _b !== void 0 ? _b : "none";
|
|
160
168
|
return (React.createElement("div", { "data-toolsettings-provider": providerId, className: "uifw-floating-toolsettings-container", ref: floatingToolSettingsContainerRef, key: forceRefreshKey },
|
|
161
169
|
React.createElement(ScrollableWidgetContent, null, node)));
|
|
162
170
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolSettings.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/ToolSettings.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 ToolSettings\n */\n\nimport \"./ToolSettings.scss\";\nimport * as React from \"react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport {\n DockedToolSetting,\n DockedToolSettings,\n ScrollableWidgetContent,\n useLayout,\n} from \"@itwin/appui-layout-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager\";\n\n/** Defines a ToolSettings property entry.\n * @public\n */\nexport interface ToolSettingsEntry {\n // label node which potentially can contain a lock node as well.\n labelNode: React.ReactNode;\n // editor entry used to display and edit the property value\n editorNode: React.ReactNode;\n}\n\nfunction EmptyToolSettingsEntry(): ToolSettingsEntry {\n const toolId = UiFramework.frontstages.activeToolId;\n const toolName = IModelApp.tools.find(toolId)?.flyover;\n const toolPlaceholderName = IModelApp.localization.getLocalizedString(\n \"UiFramework:tools.noToolSettingsPlaceholderName\"\n );\n const labelStringStart = IModelApp.localization.getLocalizedString(\n \"UiFramework:tools.noToolSettingsStart\"\n );\n const labelStringEnd = IModelApp.localization.getLocalizedString(\n \"UiFramework:tools.noToolSettingsEnd\"\n );\n const labelNode = (\n <div className=\"uif-toolsetting-label-docked-horizontal-empty\">\n {labelStringStart}\n {toolName ? toolName : toolPlaceholderName}\n {labelStringEnd}\n </div>\n );\n const editorNode = <div />;\n return { labelNode, editorNode };\n}\n\n/** @internal */\n// istanbul ignore next - need to work on overflow unit testing\nfunction TsLabel({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"uif-toolsetting-label-docked-horizontal\">{children}</div>\n );\n}\n\n/**\n * Hook that returns true if the tool settings should be rendered docked.\n * @internal */\nexport function useShouldRenderDockedToolSettings() {\n return useLayout((state) => {\n const toolSettings = state.toolSettings;\n if (!toolSettings) return false;\n if (toolSettings.type === \"widget\") return false;\n return !toolSettings.hidden;\n });\n}\n\n/** @internal */\nexport function WidgetPanelsToolSettings() {\n if (!useShouldRenderDockedToolSettings()) return null;\n return <ToolSettingsDockedContent />;\n}\n\n/** @internal */\nexport function ToolSettingsDockedContent() {\n const settings = useHorizontalToolSettingNodes();\n const forceRefreshKey = useRefreshKey(settings);\n // for the overflow to work properly each setting in the DockedToolSettings should be wrapped by a DockedToolSetting component\n return (\n <DockedToolSettings\n itemId={\n InternalFrontstageManager.activeToolSettingsProvider?.uniqueId ?? \"none\"\n }\n key={forceRefreshKey}\n >\n {settings &&\n settings.map((entry, index) => (\n <DockedToolSetting key={index}>\n <TsLabel>{entry.labelNode}</TsLabel>\n {entry.editorNode}\n </DockedToolSetting>\n ))}\n </DockedToolSettings>\n );\n}\n\n/** @internal */\nexport function useHorizontalToolSettingNodes() {\n React.useEffect(() => {\n UiFramework.frontstages.activeToolInformation?.toolUiProvider?.reloadPropertiesFromTool();\n }, []);\n\n const [settings, setSettings] = React.useState(\n InternalFrontstageManager.activeToolSettingsProvider\n ?.horizontalToolSettingNodes\n );\n const [emptySettings, setEmptySettings] = React.useState(() => [\n EmptyToolSettingsEntry(),\n ]);\n React.useEffect(() => {\n return UiFramework.frontstages.onToolActivatedEvent.addListener(() => {\n const nodes =\n InternalFrontstageManager.activeToolSettingsProvider\n ?.horizontalToolSettingNodes;\n setSettings(nodes);\n setEmptySettings([EmptyToolSettingsEntry()]);\n });\n }, [setSettings, setEmptySettings]);\n\n React.useEffect(() => {\n return UiFramework.frontstages.onToolSettingsReloadEvent.addListener(() => {\n const nodes =\n InternalFrontstageManager.activeToolSettingsProvider\n ?.horizontalToolSettingNodes;\n setSettings(nodes);\n setEmptySettings([EmptyToolSettingsEntry()]);\n });\n }, [setSettings, setEmptySettings]);\n\n if (!settings || settings.length === 0) return emptySettings;\n return settings;\n}\n\n/** Defines the ToolSettingsEntry entries that are used to populate a grid layout of ToolSetting properties.\n * @internal\n */\nexport interface ToolSettingsGridProps {\n // label node which potentially can contain a lock node as well.\n settings?: ToolSettingsEntry[];\n}\n\n/** Component that arranges an array of ToolSettingsEntry items into a two column grid layout.\n * The left column is considered the label column, the right column is considered the property\n * editor column.\n * @internal\n */\nexport function ToolSettingsGrid({ settings }: ToolSettingsGridProps) {\n return (\n <div className=\"uifw-standard-toolsettings-two-column-grid\">\n {settings &&\n settings.map((setting: ToolSettingsEntry, index: number) => {\n return (\n <React.Fragment key={index}>\n <span className=\"uifw-standard-toolsettings-label-entry\">\n {setting.labelNode}\n </span>\n {setting.editorNode}\n </React.Fragment>\n );\n })}\n </div>\n );\n}\n\n/** @internal */\nexport function useToolSettingsNode() {\n React.useEffect(() => {\n UiFramework.frontstages.activeToolInformation?.toolUiProvider?.reloadPropertiesFromTool();\n }, []);\n const [settings, setSettings] = React.useState(\n InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode\n );\n React.useEffect(() => {\n const handleToolActivatedEvent = () => {\n const nodes =\n InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode;\n setSettings(nodes);\n };\n UiFramework.frontstages.onToolActivatedEvent.addListener(\n handleToolActivatedEvent\n );\n return () => {\n UiFramework.frontstages.onToolActivatedEvent.removeListener(\n handleToolActivatedEvent\n );\n };\n }, [setSettings]);\n\n React.useEffect(() => {\n const handleToolSettingsReloadEvent = () => {\n const nodes =\n InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode;\n setSettings(nodes);\n };\n UiFramework.frontstages.onToolSettingsReloadEvent.addListener(\n handleToolSettingsReloadEvent\n );\n return () => {\n UiFramework.frontstages.onToolSettingsReloadEvent.removeListener(\n handleToolSettingsReloadEvent\n );\n };\n }, [setSettings]);\n\n return settings;\n}\n\n/** @internal */\nexport function ToolSettingsContent() {\n const toolSettingsType = useLayout((state) => state.toolSettings?.type);\n // This is needed to remount underlying components tree when going into widget state.\n if (!toolSettingsType || toolSettingsType === \"docked\") return null;\n return <ToolSettingsWidgetContent />;\n}\n\n/** @internal */\nexport function ToolSettingsWidgetContent() {\n const floatingToolSettingsContainerRef = React.useRef<HTMLDivElement>(null);\n const node = useToolSettingsNode();\n const forceRefreshKey = useRefreshKey(node);\n\n // if no tool settings hide the floating widgets tab\n React.useEffect(() => {\n // istanbul ignore else\n if (floatingToolSettingsContainerRef.current) {\n const floatingWidgetTab =\n floatingToolSettingsContainerRef.current.closest(\n \".nz-floating-toolsettings\"\n );\n // istanbul ignore else\n if (floatingWidgetTab) {\n (floatingWidgetTab as HTMLDivElement).style.visibility = !!node\n ? \"visible\"\n : /* istanbul ignore next */ \"hidden\";\n }\n }\n }, [node]);\n\n // istanbul ignore next\n const providerId =\n InternalFrontstageManager.activeToolSettingsProvider?.uniqueId ?? \"none\";\n\n return (\n <div\n data-toolsettings-provider={providerId}\n className=\"uifw-floating-toolsettings-container\"\n ref={floatingToolSettingsContainerRef}\n key={forceRefreshKey}\n >\n <ScrollableWidgetContent>{node}</ScrollableWidgetContent>\n </div>\n );\n}\n\n/**\n * Hook that returns a key that can be used to force refresh the tool settings.\n * @param toolSettingNodes Nodes that are used to determine if the tool settings should be refreshed.\n * @returns a new key if the dependency changes.\n */\nfunction useRefreshKey(toolSettingNodes: any) {\n const [forceRefreshKey, setForceRefreshKey] = React.useState(Date.now());\n React.useEffect(() => {\n // We cant work with the content of the settings, but we can force refresh when\n // the array is different.\n setForceRefreshKey(Date.now());\n }, [toolSettingNodes]);\n return forceRefreshKey;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ToolSettings.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/ToolSettings.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 ToolSettings\n */\n\nimport \"./ToolSettings.scss\";\nimport * as React from \"react\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport {\n DockedToolSetting,\n DockedToolSettings,\n ScrollableWidgetContent,\n useLayout,\n} from \"@itwin/appui-layout-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport { InternalFrontstageManager } from \"../frontstage/InternalFrontstageManager\";\n\n/** Defines a ToolSettings property entry.\n * @public\n */\nexport interface ToolSettingsEntry {\n // label node which potentially can contain a lock node as well.\n labelNode: React.ReactNode;\n // editor entry used to display and edit the property value\n editorNode: React.ReactNode;\n}\n\nfunction EmptyToolSettingsEntry(): ToolSettingsEntry {\n const toolId = UiFramework.frontstages.activeToolId;\n const toolName = IModelApp.tools.find(toolId)?.flyover;\n const toolPlaceholderName = IModelApp.localization.getLocalizedString(\n \"UiFramework:tools.noToolSettingsPlaceholderName\"\n );\n const labelStringStart = IModelApp.localization.getLocalizedString(\n \"UiFramework:tools.noToolSettingsStart\"\n );\n const labelStringEnd = IModelApp.localization.getLocalizedString(\n \"UiFramework:tools.noToolSettingsEnd\"\n );\n const labelNode = (\n <div className=\"uif-toolsetting-label-docked-horizontal-empty\">\n {labelStringStart}\n {toolName ? toolName : toolPlaceholderName}\n {labelStringEnd}\n </div>\n );\n const editorNode = <div />;\n return { labelNode, editorNode };\n}\n\n/** @internal */\n// istanbul ignore next - need to work on overflow unit testing\nfunction TsLabel({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"uif-toolsetting-label-docked-horizontal\">{children}</div>\n );\n}\n\n/**\n * Hook that returns true if the tool settings should be rendered docked.\n * @internal */\nexport function useShouldRenderDockedToolSettings() {\n return useLayout((state) => {\n const toolSettings = state.toolSettings;\n if (!toolSettings) return false;\n if (toolSettings.type === \"widget\") return false;\n return !toolSettings.hidden;\n });\n}\n\n/** @internal */\nexport function WidgetPanelsToolSettings() {\n if (!useShouldRenderDockedToolSettings()) return null;\n return <ToolSettingsDockedContent />;\n}\n\n/** @internal */\nexport function ToolSettingsDockedContent() {\n const settings = useHorizontalToolSettingNodes();\n const forceRefreshKey = useRefreshKey(settings);\n // for the overflow to work properly each setting in the DockedToolSettings should be wrapped by a DockedToolSetting component\n return (\n <DockedToolSettings\n itemId={\n InternalFrontstageManager.activeToolSettingsProvider?.uniqueId ?? \"none\"\n }\n key={forceRefreshKey}\n >\n {settings &&\n settings.map((entry, index) => (\n <DockedToolSetting key={index}>\n <TsLabel>{entry.labelNode}</TsLabel>\n {entry.editorNode}\n </DockedToolSetting>\n ))}\n </DockedToolSettings>\n );\n}\n\n/** @internal */\nexport function useHorizontalToolSettingNodes() {\n React.useEffect(() => {\n UiFramework.frontstages.activeToolInformation?.toolUiProvider?.reloadPropertiesFromTool();\n }, []);\n\n const [settings, setSettings] = React.useState(\n InternalFrontstageManager.activeToolSettingsProvider\n ?.horizontalToolSettingNodes\n );\n const [emptySettings, setEmptySettings] = React.useState(() => [\n EmptyToolSettingsEntry(),\n ]);\n React.useEffect(() => {\n return UiFramework.frontstages.onToolActivatedEvent.addListener(() => {\n const nodes =\n InternalFrontstageManager.activeToolSettingsProvider\n ?.horizontalToolSettingNodes;\n setSettings(nodes);\n setEmptySettings([EmptyToolSettingsEntry()]);\n });\n }, [setSettings, setEmptySettings]);\n\n React.useEffect(() => {\n return UiFramework.frontstages.onToolSettingsReloadEvent.addListener(() => {\n const nodes =\n InternalFrontstageManager.activeToolSettingsProvider\n ?.horizontalToolSettingNodes;\n setSettings(nodes);\n setEmptySettings([EmptyToolSettingsEntry()]);\n });\n }, [setSettings, setEmptySettings]);\n\n if (!settings || settings.length === 0) return emptySettings;\n return settings;\n}\n\n/** Defines the ToolSettingsEntry entries that are used to populate a grid layout of ToolSetting properties.\n * @internal\n */\nexport interface ToolSettingsGridProps {\n // label node which potentially can contain a lock node as well.\n settings?: ToolSettingsEntry[];\n}\n\n/** Component that arranges an array of ToolSettingsEntry items into a two column grid layout.\n * The left column is considered the label column, the right column is considered the property\n * editor column.\n * @internal\n */\nexport function ToolSettingsGrid({ settings }: ToolSettingsGridProps) {\n return (\n <div className=\"uifw-standard-toolsettings-two-column-grid\">\n {settings &&\n settings.map((setting: ToolSettingsEntry, index: number) => {\n return (\n <React.Fragment key={index}>\n <span className=\"uifw-standard-toolsettings-label-entry\">\n {setting.labelNode}\n </span>\n {setting.editorNode}\n </React.Fragment>\n );\n })}\n </div>\n );\n}\n\n/** @internal */\nexport function useToolSettingsNode() {\n React.useEffect(() => {\n UiFramework.frontstages.activeToolInformation?.toolUiProvider?.reloadPropertiesFromTool();\n }, []);\n const [settings, setSettings] = React.useState(\n InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode\n );\n React.useEffect(() => {\n const handleToolActivatedEvent = () => {\n const nodes =\n InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode;\n setSettings(nodes);\n };\n UiFramework.frontstages.onToolActivatedEvent.addListener(\n handleToolActivatedEvent\n );\n return () => {\n UiFramework.frontstages.onToolActivatedEvent.removeListener(\n handleToolActivatedEvent\n );\n };\n }, [setSettings]);\n\n React.useEffect(() => {\n const handleToolSettingsReloadEvent = () => {\n const nodes =\n InternalFrontstageManager.activeToolSettingsProvider?.toolSettingsNode;\n setSettings(nodes);\n };\n UiFramework.frontstages.onToolSettingsReloadEvent.addListener(\n handleToolSettingsReloadEvent\n );\n return () => {\n UiFramework.frontstages.onToolSettingsReloadEvent.removeListener(\n handleToolSettingsReloadEvent\n );\n };\n }, [setSettings]);\n\n return settings;\n}\n\n/** @internal */\nexport function ToolSettingsContent() {\n const toolSettingsType = useLayout((state) => state.toolSettings?.type);\n // This is needed to remount underlying components tree when going into widget state.\n if (!toolSettingsType || toolSettingsType === \"docked\") return null;\n return <ToolSettingsWidgetContent />;\n}\n\n/** @internal */\nexport function ToolSettingsWidgetContent() {\n const floatingToolSettingsContainerRef = React.useRef<HTMLDivElement>(null);\n const node = useToolSettingsNode();\n const forceRefreshKey = useRefreshKey(node);\n\n // if no tool settings hide the floating widgets tab\n React.useEffect(() => {\n // istanbul ignore else\n if (floatingToolSettingsContainerRef.current) {\n const floatingWidgetTab =\n floatingToolSettingsContainerRef.current.closest(\n \".nz-floating-toolsettings\"\n );\n // istanbul ignore else\n if (floatingWidgetTab) {\n (floatingWidgetTab as HTMLDivElement).style.visibility = !!node\n ? \"visible\"\n : /* istanbul ignore next */ \"hidden\";\n }\n }\n }, [node]);\n\n // istanbul ignore next\n const providerId =\n InternalFrontstageManager.activeToolSettingsProvider?.uniqueId ?? \"none\";\n\n return (\n <div\n data-toolsettings-provider={providerId}\n className=\"uifw-floating-toolsettings-container\"\n ref={floatingToolSettingsContainerRef}\n key={forceRefreshKey}\n >\n <ScrollableWidgetContent>{node}</ScrollableWidgetContent>\n </div>\n );\n}\n\n/**\n * Hook that returns a key that can be used to force refresh the tool settings.\n * @param toolSettingNodes Nodes that are used to determine if the tool settings should be refreshed.\n * @returns a new key if the dependency changes.\n */\nfunction useRefreshKey(toolSettingNodes: any) {\n const [forceRefreshKey, setForceRefreshKey] = React.useState(Date.now());\n React.useEffect(() => {\n // We cant work with the content of the settings, but we can force refresh when\n // the array is different.\n setForceRefreshKey(Date.now());\n }, [toolSettingNodes]);\n return forceRefreshKey;\n}\n"]}
|
|
@@ -10,9 +10,10 @@ import * as React from "react";
|
|
|
10
10
|
import { useActiveFrontstageDef } from "../frontstage/FrontstageDef";
|
|
11
11
|
/** @internal */
|
|
12
12
|
export function WidgetPanelsToolbars() {
|
|
13
|
+
var _a, _b;
|
|
13
14
|
const frontstageDef = useActiveFrontstageDef();
|
|
14
|
-
const tools = frontstageDef
|
|
15
|
-
const navigation = frontstageDef
|
|
15
|
+
const tools = (_a = frontstageDef === null || frontstageDef === void 0 ? void 0 : frontstageDef.contentManipulation) === null || _a === void 0 ? void 0 : _a.reactNode;
|
|
16
|
+
const navigation = (_b = frontstageDef === null || frontstageDef === void 0 ? void 0 : frontstageDef.viewNavigation) === null || _b === void 0 ? void 0 : _b.reactNode;
|
|
16
17
|
return (React.createElement("div", { className: "uifw-widgetPanels-toolbars" },
|
|
17
18
|
tools,
|
|
18
19
|
navigation));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbars.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Toolbars.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,iBAAiB,CAAC;AACzB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,gBAAgB;AAChB,MAAM,UAAU,oBAAoB
|
|
1
|
+
{"version":3,"file":"Toolbars.js","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Toolbars.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,iBAAiB,CAAC;AACzB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,gBAAgB;AAChB,MAAM,UAAU,oBAAoB;;IAClC,MAAM,aAAa,GAAG,sBAAsB,EAAE,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,mBAAmB,0CAAE,SAAS,CAAC;IAC5D,MAAM,UAAU,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,cAAc,0CAAE,SAAS,CAAC;IAC5D,OAAO,CACL,6BAAK,SAAS,EAAC,4BAA4B;QACxC,KAAK;QACL,UAAU,CACP,CACP,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Item\n */\n\nimport \"./Toolbars.scss\";\nimport * as React from \"react\";\nimport { useActiveFrontstageDef } from \"../frontstage/FrontstageDef\";\n\n/** @internal */\nexport function WidgetPanelsToolbars() {\n const frontstageDef = useActiveFrontstageDef();\n const tools = frontstageDef?.contentManipulation?.reactNode;\n const navigation = frontstageDef?.viewNavigation?.reactNode;\n return (\n <div className=\"uifw-widgetPanels-toolbars\">\n {tools}\n {navigation}\n </div>\n );\n}\n"]}
|
|
@@ -30,7 +30,7 @@ function createNavigationAidControl(activeContentControl, navigationAidId, activ
|
|
|
30
30
|
*/
|
|
31
31
|
export function NavigationAidHost(props) {
|
|
32
32
|
const [activeContentControl, setActiveContentControl] = React.useState(() => UiFramework.content.getActiveContentControl());
|
|
33
|
-
const [activeContentViewport, setActiveContentViewport] = React.useState(() => /* istanbul ignore next */ activeContentControl
|
|
33
|
+
const [activeContentViewport, setActiveContentViewport] = React.useState(() => /* istanbul ignore next */ activeContentControl === null || activeContentControl === void 0 ? void 0 : activeContentControl.viewport);
|
|
34
34
|
const [navigationAidId, setNavigationAidId] = React.useState(() => activeContentControl
|
|
35
35
|
? activeContentControl.navigationAidControl
|
|
36
36
|
: /* istanbul ignore next */ "");
|
|
@@ -103,7 +103,7 @@ export function NavigationWidgetComposer(props) {
|
|
|
103
103
|
/* istanbul ignore next */
|
|
104
104
|
const navigationAid = hideNavigationAid
|
|
105
105
|
? undefined
|
|
106
|
-
: navigationAidHost
|
|
106
|
+
: navigationAidHost !== null && navigationAidHost !== void 0 ? navigationAidHost : React.createElement(NavigationAidHost, null);
|
|
107
107
|
return (React.createElement(WidgetOpacityContext.Provider, { value: {
|
|
108
108
|
onElementRef: handleChildRef,
|
|
109
109
|
proximityScale,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationWidgetComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/widgets/NavigationWidgetComposer.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 Widget\n */\n\nimport * as React from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport type { ViewClassFullNameChangedEventArgs } from \"@itwin/imodel-components-react\";\nimport { ViewportComponentEvents } from \"@itwin/imodel-components-react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n useProximityToMouse,\n useWidgetOpacityContext,\n WidgetElementSet,\n WidgetOpacityContext,\n} from \"@itwin/core-react\";\nimport { NavigationArea } from \"@itwin/appui-layout-react\";\nimport type {\n ContentControl,\n ContentControlActivatedEventArgs,\n} from \"../content/ContentControl\";\nimport type { NavigationAidControl } from \"../navigationaids/NavigationAidControl\";\nimport { UiFramework } from \"../UiFramework\";\n\nfunction createNavigationAidControl(\n activeContentControl: ContentControl | undefined,\n navigationAidId: string,\n activeViewport: ScreenViewport | undefined\n): NavigationAidControl | undefined {\n // istanbul ignore else\n if (\n !activeContentControl ||\n !navigationAidId ||\n activeViewport !== activeContentControl.viewport\n )\n return undefined;\n\n const viewport = activeContentControl.viewport;\n const imodel = viewport\n ? viewport.iModel\n : /* istanbul ignore next */ UiFramework.getIModelConnection();\n const navigationAidControl = UiFramework.controls.create(\n navigationAidId,\n navigationAidId,\n { imodel, viewport }\n ) as NavigationAidControl;\n\n navigationAidControl.initialize();\n return navigationAidControl;\n}\n\n/** Properties for the [[NavigationAidHost]] React component\n * @public\n */\nexport interface NavigationAidHostProps {\n /** Navigation Aid Host minimum width. Defaults to \"64px\". */\n minWidth?: string;\n /** Navigation Aid Host minimum height. Defaults to \"64px\". */\n minHeight?: string;\n}\n\n/**\n * NavigationAidHost is a component that hosts a NavigationAid that is specific to the active content control.\n * @public\n */\nexport function NavigationAidHost(props: NavigationAidHostProps) {\n const [activeContentControl, setActiveContentControl] = React.useState(() =>\n UiFramework.content.getActiveContentControl()\n );\n const [activeContentViewport, setActiveContentViewport] = React.useState(\n () => /* istanbul ignore next */ activeContentControl?.viewport\n );\n const [navigationAidId, setNavigationAidId] = React.useState(() =>\n activeContentControl\n ? activeContentControl.navigationAidControl\n : /* istanbul ignore next */ \"\"\n );\n\n React.useEffect(() => {\n // istanbul ignore next\n const handleContentControlActivated = (\n args: ContentControlActivatedEventArgs\n ) => {\n setActiveContentControl(args.activeContentControl);\n setActiveContentViewport(args.activeContentControl.viewport);\n setNavigationAidId(args.activeContentControl.navigationAidControl);\n };\n\n UiFramework.frontstages.onContentControlActivatedEvent.addListener(\n handleContentControlActivated\n );\n return () => {\n UiFramework.frontstages.onContentControlActivatedEvent.removeListener(\n handleContentControlActivated\n );\n };\n }, []);\n\n const [activeViewClass, setActiveViewClass] = React.useState(() => {\n const content = UiFramework.content.getActiveContentControl();\n if (content && content.viewport) return content.viewport.view.classFullName;\n return \"\";\n });\n\n React.useEffect(() => {\n // istanbul ignore next\n const handleViewClassFullNameChange = (\n args: ViewClassFullNameChangedEventArgs\n ) => {\n setActiveViewClass(args.newName);\n };\n\n ViewportComponentEvents.onViewClassFullNameChangedEvent.addListener(\n handleViewClassFullNameChange\n );\n return () => {\n ViewportComponentEvents.onViewClassFullNameChangedEvent.removeListener(\n handleViewClassFullNameChange\n );\n };\n }, [activeViewClass]);\n\n const navigationAidControl = React.useMemo(\n () =>\n createNavigationAidControl(\n activeContentControl,\n navigationAidId,\n activeContentViewport\n ),\n [activeContentControl, navigationAidId, activeContentViewport]\n );\n\n const ref = React.useRef<HTMLDivElement>(null);\n\n const isInitialMount = React.useRef(true);\n const { onElementRef, proximityScale } = useWidgetOpacityContext();\n\n React.useEffect(() => {\n // istanbul ignore else\n if (isInitialMount.current) {\n isInitialMount.current = false;\n onElementRef(ref);\n }\n }, [onElementRef]);\n\n const divStyle: React.CSSProperties = {\n minWidth: props.minWidth\n ? /* istanbul ignore next */ props.minWidth\n : \"64px\",\n minHeight: props.minHeight\n ? /* istanbul ignore next */ props.minHeight\n : \"64px\",\n };\n\n // istanbul ignore else\n if (UiFramework.visibility.useProximityOpacity && !UiFramework.isMobile()) {\n const navigationAidOpacity = 0.3 * proximityScale + 0.7;\n divStyle.opacity = `${navigationAidOpacity}`;\n }\n\n return (\n <div style={divStyle} ref={ref}>\n {navigationAidControl && navigationAidControl.reactNode}\n </div>\n );\n}\n\n/** Properties for the [[NavigationWidgetComposer]] React components\n * @public\n */\nexport interface NavigationWidgetComposerProps extends CommonProps {\n /** Optional Horizontal Toolbar */\n horizontalToolbar?: React.ReactNode;\n /** Optional Vertical Toolbar */\n verticalToolbar?: React.ReactNode;\n /** Optional Navigation Aid host. If not specified a default host is provided which will use registered Navigation Aids and the active content control to determine which if any Navigation Aid to display. */\n navigationAidHost?: React.ReactNode;\n /** If true no navigation aid will be shown. Defaults to false. */\n hideNavigationAid?: boolean;\n}\n\n/**\n * Component that Composes a NavigationWidget typically using toolbars generated via [[ToolbarComposer]] class. The Navigation widget is shown in the top right of the content area\n * and typically holds tools to visually navigate, orient, and zoom to specific content.\n * @public\n */\nexport function NavigationWidgetComposer(props: NavigationWidgetComposerProps) {\n const {\n navigationAidHost,\n horizontalToolbar,\n verticalToolbar,\n hideNavigationAid,\n ...otherProps\n } = props;\n const [elementSet] = React.useState(new WidgetElementSet());\n const handleChildRef = React.useCallback(\n (elementRef: React.RefObject<Element>) => {\n elementSet.add(elementRef);\n },\n [elementSet]\n );\n const proximityScale = useProximityToMouse(\n elementSet,\n UiFramework.visibility.snapWidgetOpacity\n );\n /* istanbul ignore next */\n const navigationAid = hideNavigationAid\n ? undefined\n : navigationAidHost ?? <NavigationAidHost />;\n\n return (\n <WidgetOpacityContext.Provider\n value={{\n onElementRef: handleChildRef,\n proximityScale,\n }}\n >\n <NavigationArea\n navigationAid={navigationAid}\n horizontalToolbar={horizontalToolbar}\n verticalToolbar={verticalToolbar}\n {...otherProps}\n onMouseEnter={UiFramework.visibility.handleWidgetMouseEnter}\n />\n </WidgetOpacityContext.Provider>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"NavigationWidgetComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/widgets/NavigationWidgetComposer.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 Widget\n */\n\nimport * as React from \"react\";\nimport type { ScreenViewport } from \"@itwin/core-frontend\";\nimport type { ViewClassFullNameChangedEventArgs } from \"@itwin/imodel-components-react\";\nimport { ViewportComponentEvents } from \"@itwin/imodel-components-react\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport {\n useProximityToMouse,\n useWidgetOpacityContext,\n WidgetElementSet,\n WidgetOpacityContext,\n} from \"@itwin/core-react\";\nimport { NavigationArea } from \"@itwin/appui-layout-react\";\nimport type {\n ContentControl,\n ContentControlActivatedEventArgs,\n} from \"../content/ContentControl\";\nimport type { NavigationAidControl } from \"../navigationaids/NavigationAidControl\";\nimport { UiFramework } from \"../UiFramework\";\n\nfunction createNavigationAidControl(\n activeContentControl: ContentControl | undefined,\n navigationAidId: string,\n activeViewport: ScreenViewport | undefined\n): NavigationAidControl | undefined {\n // istanbul ignore else\n if (\n !activeContentControl ||\n !navigationAidId ||\n activeViewport !== activeContentControl.viewport\n )\n return undefined;\n\n const viewport = activeContentControl.viewport;\n const imodel = viewport\n ? viewport.iModel\n : /* istanbul ignore next */ UiFramework.getIModelConnection();\n const navigationAidControl = UiFramework.controls.create(\n navigationAidId,\n navigationAidId,\n { imodel, viewport }\n ) as NavigationAidControl;\n\n navigationAidControl.initialize();\n return navigationAidControl;\n}\n\n/** Properties for the [[NavigationAidHost]] React component\n * @public\n */\nexport interface NavigationAidHostProps {\n /** Navigation Aid Host minimum width. Defaults to \"64px\". */\n minWidth?: string;\n /** Navigation Aid Host minimum height. Defaults to \"64px\". */\n minHeight?: string;\n}\n\n/**\n * NavigationAidHost is a component that hosts a NavigationAid that is specific to the active content control.\n * @public\n */\nexport function NavigationAidHost(props: NavigationAidHostProps) {\n const [activeContentControl, setActiveContentControl] = React.useState(() =>\n UiFramework.content.getActiveContentControl()\n );\n const [activeContentViewport, setActiveContentViewport] = React.useState(\n () => /* istanbul ignore next */ activeContentControl?.viewport\n );\n const [navigationAidId, setNavigationAidId] = React.useState(() =>\n activeContentControl\n ? activeContentControl.navigationAidControl\n : /* istanbul ignore next */ \"\"\n );\n\n React.useEffect(() => {\n // istanbul ignore next\n const handleContentControlActivated = (\n args: ContentControlActivatedEventArgs\n ) => {\n setActiveContentControl(args.activeContentControl);\n setActiveContentViewport(args.activeContentControl.viewport);\n setNavigationAidId(args.activeContentControl.navigationAidControl);\n };\n\n UiFramework.frontstages.onContentControlActivatedEvent.addListener(\n handleContentControlActivated\n );\n return () => {\n UiFramework.frontstages.onContentControlActivatedEvent.removeListener(\n handleContentControlActivated\n );\n };\n }, []);\n\n const [activeViewClass, setActiveViewClass] = React.useState(() => {\n const content = UiFramework.content.getActiveContentControl();\n if (content && content.viewport) return content.viewport.view.classFullName;\n return \"\";\n });\n\n React.useEffect(() => {\n // istanbul ignore next\n const handleViewClassFullNameChange = (\n args: ViewClassFullNameChangedEventArgs\n ) => {\n setActiveViewClass(args.newName);\n };\n\n ViewportComponentEvents.onViewClassFullNameChangedEvent.addListener(\n handleViewClassFullNameChange\n );\n return () => {\n ViewportComponentEvents.onViewClassFullNameChangedEvent.removeListener(\n handleViewClassFullNameChange\n );\n };\n }, [activeViewClass]);\n\n const navigationAidControl = React.useMemo(\n () =>\n createNavigationAidControl(\n activeContentControl,\n navigationAidId,\n activeContentViewport\n ),\n [activeContentControl, navigationAidId, activeContentViewport]\n );\n\n const ref = React.useRef<HTMLDivElement>(null);\n\n const isInitialMount = React.useRef(true);\n const { onElementRef, proximityScale } = useWidgetOpacityContext();\n\n React.useEffect(() => {\n // istanbul ignore else\n if (isInitialMount.current) {\n isInitialMount.current = false;\n onElementRef(ref);\n }\n }, [onElementRef]);\n\n const divStyle: React.CSSProperties = {\n minWidth: props.minWidth\n ? /* istanbul ignore next */ props.minWidth\n : \"64px\",\n minHeight: props.minHeight\n ? /* istanbul ignore next */ props.minHeight\n : \"64px\",\n };\n\n // istanbul ignore else\n if (UiFramework.visibility.useProximityOpacity && !UiFramework.isMobile()) {\n const navigationAidOpacity = 0.3 * proximityScale + 0.7;\n divStyle.opacity = `${navigationAidOpacity}`;\n }\n\n return (\n <div style={divStyle} ref={ref}>\n {navigationAidControl && navigationAidControl.reactNode}\n </div>\n );\n}\n\n/** Properties for the [[NavigationWidgetComposer]] React components\n * @public\n */\nexport interface NavigationWidgetComposerProps extends CommonProps {\n /** Optional Horizontal Toolbar */\n horizontalToolbar?: React.ReactNode;\n /** Optional Vertical Toolbar */\n verticalToolbar?: React.ReactNode;\n /** Optional Navigation Aid host. If not specified a default host is provided which will use registered Navigation Aids and the active content control to determine which if any Navigation Aid to display. */\n navigationAidHost?: React.ReactNode;\n /** If true no navigation aid will be shown. Defaults to false. */\n hideNavigationAid?: boolean;\n}\n\n/**\n * Component that Composes a NavigationWidget typically using toolbars generated via [[ToolbarComposer]] class. The Navigation widget is shown in the top right of the content area\n * and typically holds tools to visually navigate, orient, and zoom to specific content.\n * @public\n */\nexport function NavigationWidgetComposer(props: NavigationWidgetComposerProps) {\n const {\n navigationAidHost,\n horizontalToolbar,\n verticalToolbar,\n hideNavigationAid,\n ...otherProps\n } = props;\n const [elementSet] = React.useState(new WidgetElementSet());\n const handleChildRef = React.useCallback(\n (elementRef: React.RefObject<Element>) => {\n elementSet.add(elementRef);\n },\n [elementSet]\n );\n const proximityScale = useProximityToMouse(\n elementSet,\n UiFramework.visibility.snapWidgetOpacity\n );\n /* istanbul ignore next */\n const navigationAid = hideNavigationAid\n ? undefined\n : navigationAidHost ?? <NavigationAidHost />;\n\n return (\n <WidgetOpacityContext.Provider\n value={{\n onElementRef: handleChildRef,\n proximityScale,\n }}\n >\n <NavigationArea\n navigationAid={navigationAid}\n horizontalToolbar={horizontalToolbar}\n verticalToolbar={verticalToolbar}\n {...otherProps}\n onMouseEnter={UiFramework.visibility.handleWidgetMouseEnter}\n />\n </WidgetOpacityContext.Provider>\n );\n}\n"]}
|
|
@@ -36,7 +36,7 @@ export interface Widget {
|
|
|
36
36
|
* It is not possible to disable the floating of a widget if `allowedPanels` is an empty array.
|
|
37
37
|
*/
|
|
38
38
|
readonly canFloat?: boolean | CanFloatWidgetOptions;
|
|
39
|
-
/** Defaults to `Floating` if widget is not allowed to dock to any panels. */
|
|
39
|
+
/** Defaults to `Floating` if widget is not allowed to dock to any panels. Otherwise defaults to `Closed`. */
|
|
40
40
|
readonly defaultState?: WidgetState;
|
|
41
41
|
/** Content of the Widget. */
|
|
42
42
|
readonly content?: React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Widget.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widgets/Widget.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,kJAAkJ;IAClJ,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,yGAAyG;IACzG,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uKAAuK;IACvK,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,2FAA2F;IAC3F,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;IACpD,
|
|
1
|
+
{"version":3,"file":"Widget.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widgets/Widget.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,gEAAgE;IAChE,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,CAAC;IACjC,kJAAkJ;IAClJ,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,yGAAyG;IACzG,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,uKAAuK;IACvK,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;IAC3B,2FAA2F;IAC3F,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,qBAAqB,CAAC;IACpD,6GAA6G;IAC7G,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC;IACpC,6BAA6B;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,sBAAsB,CAAC;IACnD;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,iEAAiE;IACjE,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Widget.js","sourceRoot":"","sources":["../../../../src/appui-react/widgets/Widget.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport type { BadgeType, ConditionalStringValue } from \"@itwin/appui-abstract\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { IconSpec, SizeProps } from \"@itwin/core-react\";\nimport type { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport type { WidgetState } from \"./WidgetState\";\nimport type { StagePanelSection } from \"../stagepanels/StagePanelSection\";\n\n/** Describes options of a floating widget.\n * @public\n */\nexport interface CanFloatWidgetOptions {\n /** Describes if the widget is resizable. Defaults to `true`. */\n readonly isResizable?: boolean;\n readonly defaultPosition?: XAndY;\n readonly defaultSize?: SizeProps;\n /** Describes to which container the floating widget is assigned. This allows the grouping of multiple widgets within the same floating widget. */\n readonly containerId?: string;\n /** Describes if the floating widget should hide together with other UI elements. Defaults to `false`. */\n readonly hideWithUi?: boolean;\n}\n\n/** Describes the data needed to provide a widget.\n * @public\n */\nexport interface Widget {\n readonly id: string;\n /** Stage panels to which this widget can be docked. All stage panels are allowed if nothing is provided. To not allow docking to any panels, provide a blank array. */\n readonly allowedPanels?: ReadonlyArray<StagePanelLocation>;\n readonly badge?: BadgeType;\n /** Describes if the widget can be popped out to a separate window. Defaults to `false`. */\n readonly canPopout?: boolean;\n /** Set to `false` to disable floating of a widget. Defaults to `true`.\n * Alternatively options object can be provided to configure floating behavior.\n * It is not possible to disable the floating of a widget if `allowedPanels` is an empty array.\n */\n readonly canFloat?: boolean | CanFloatWidgetOptions;\n /** Defaults to `Floating` if widget is not allowed to dock to any panels. */\n readonly defaultState?: WidgetState;\n /** Content of the Widget. */\n readonly content?: React.ReactNode;\n readonly icon?: IconSpec;\n readonly label?: string | ConditionalStringValue;\n readonly priority?: number;\n readonly tooltip?: string | ConditionalStringValue;\n /** Describes layout specific configuration of a widget.\n * @note Only used by `get*` methods of [[UiItemsProvider]].\n * @alpha\n */\n readonly layouts?: WidgetLayouts;\n}\n\n/** Describes widget configuration specific for each layout.\n * @alpha\n */\nexport interface WidgetLayouts {\n /** Widget configuration in a standard layout. */\n readonly standard?: StandardLayoutWidget;\n}\n\n/** Describes widget configuration specific to a standard layout.\n * @alpha\n */\nexport interface StandardLayoutWidget {\n /** Describes to which panel the widget is added. */\n readonly location: StagePanelLocation;\n /** Describes to which section of a panel the widget is added. */\n readonly section: StagePanelSection;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Widget.js","sourceRoot":"","sources":["../../../../src/appui-react/widgets/Widget.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Widget\n */\n\nimport type { BadgeType, ConditionalStringValue } from \"@itwin/appui-abstract\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { IconSpec, SizeProps } from \"@itwin/core-react\";\nimport type { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport type { WidgetState } from \"./WidgetState\";\nimport type { StagePanelSection } from \"../stagepanels/StagePanelSection\";\n\n/** Describes options of a floating widget.\n * @public\n */\nexport interface CanFloatWidgetOptions {\n /** Describes if the widget is resizable. Defaults to `true`. */\n readonly isResizable?: boolean;\n readonly defaultPosition?: XAndY;\n readonly defaultSize?: SizeProps;\n /** Describes to which container the floating widget is assigned. This allows the grouping of multiple widgets within the same floating widget. */\n readonly containerId?: string;\n /** Describes if the floating widget should hide together with other UI elements. Defaults to `false`. */\n readonly hideWithUi?: boolean;\n}\n\n/** Describes the data needed to provide a widget.\n * @public\n */\nexport interface Widget {\n readonly id: string;\n /** Stage panels to which this widget can be docked. All stage panels are allowed if nothing is provided. To not allow docking to any panels, provide a blank array. */\n readonly allowedPanels?: ReadonlyArray<StagePanelLocation>;\n readonly badge?: BadgeType;\n /** Describes if the widget can be popped out to a separate window. Defaults to `false`. */\n readonly canPopout?: boolean;\n /** Set to `false` to disable floating of a widget. Defaults to `true`.\n * Alternatively options object can be provided to configure floating behavior.\n * It is not possible to disable the floating of a widget if `allowedPanels` is an empty array.\n */\n readonly canFloat?: boolean | CanFloatWidgetOptions;\n /** Defaults to `Floating` if widget is not allowed to dock to any panels. Otherwise defaults to `Closed`. */\n readonly defaultState?: WidgetState;\n /** Content of the Widget. */\n readonly content?: React.ReactNode;\n readonly icon?: IconSpec;\n readonly label?: string | ConditionalStringValue;\n readonly priority?: number;\n readonly tooltip?: string | ConditionalStringValue;\n /** Describes layout specific configuration of a widget.\n * @note Only used by `get*` methods of [[UiItemsProvider]].\n * @alpha\n */\n readonly layouts?: WidgetLayouts;\n}\n\n/** Describes widget configuration specific for each layout.\n * @alpha\n */\nexport interface WidgetLayouts {\n /** Widget configuration in a standard layout. */\n readonly standard?: StandardLayoutWidget;\n}\n\n/** Describes widget configuration specific to a standard layout.\n * @alpha\n */\nexport interface StandardLayoutWidget {\n /** Describes to which panel the widget is added. */\n readonly location: StagePanelLocation;\n /** Describes to which section of a panel the widget is added. */\n readonly section: StagePanelSection;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widgets/WidgetDef.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EACV,SAAS,EACT,sBAAsB,EACtB,YAAY,EACb,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAW,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAEL,yBAAyB,EAC1B,MAAM,yCAAyC,CAAC;AAGjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAGvE;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,OAAO,CAAC,2BAA2B,CAAC;CAAG;AAEpF,gBAAgB;AAChB,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,gBAAgB;AAChB,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;GAEG;AACH,oBAAY,UAAU;IACpB,IAAI,IAAA;IACJ,UAAU,IAAA;IACV,WAAW,IAAA;IACX,YAAY,IAAA;IACZ,SAAS,IAAA;CACV;AAID;;GAEG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAK;IACxB,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,QAAQ,CAAsD;IACtE,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,
|
|
1
|
+
{"version":3,"file":"WidgetDef.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widgets/WidgetDef.tsx"],"names":[],"mappings":"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"}
|
|
@@ -66,7 +66,8 @@ class WidgetDef {
|
|
|
66
66
|
return !!canFloat;
|
|
67
67
|
}
|
|
68
68
|
get isFloatingStateWindowResizable() {
|
|
69
|
-
|
|
69
|
+
var _a;
|
|
70
|
+
const canFloat = (_a = this.initialConfig) === null || _a === void 0 ? void 0 : _a.canFloat;
|
|
70
71
|
if (typeof canFloat === "object") {
|
|
71
72
|
return canFloat.isResizable === undefined ? true : canFloat.isResizable;
|
|
72
73
|
}
|
|
@@ -130,7 +131,7 @@ class WidgetDef {
|
|
|
130
131
|
constructor() {
|
|
131
132
|
this._label = "";
|
|
132
133
|
this._tooltip = "";
|
|
133
|
-
this._defaultState = WidgetState.
|
|
134
|
+
this._defaultState = WidgetState.Closed;
|
|
134
135
|
this._classId = undefined;
|
|
135
136
|
this._priority = 0;
|
|
136
137
|
this._stateChanged = false;
|
|
@@ -276,8 +277,8 @@ class WidgetDef {
|
|
|
276
277
|
}
|
|
277
278
|
setWidgetState(newState) {
|
|
278
279
|
const frontstageDef = UiFramework.frontstages.activeFrontstageDef;
|
|
279
|
-
const state = frontstageDef
|
|
280
|
-
if (!state)
|
|
280
|
+
const state = frontstageDef === null || frontstageDef === void 0 ? void 0 : frontstageDef.nineZoneState;
|
|
281
|
+
if (!state || this.isStatusBar)
|
|
281
282
|
return;
|
|
282
283
|
if (!frontstageDef.findWidgetDef(this.id))
|
|
283
284
|
return;
|
|
@@ -311,6 +312,13 @@ class WidgetDef {
|
|
|
311
312
|
});
|
|
312
313
|
break;
|
|
313
314
|
}
|
|
315
|
+
case WidgetState.Unloaded: {
|
|
316
|
+
frontstageDef.dispatch({
|
|
317
|
+
type: "WIDGET_TAB_UNLOAD",
|
|
318
|
+
id: this.id,
|
|
319
|
+
});
|
|
320
|
+
break;
|
|
321
|
+
}
|
|
314
322
|
}
|
|
315
323
|
}
|
|
316
324
|
/** @internal */
|
|
@@ -338,7 +346,7 @@ class WidgetDef {
|
|
|
338
346
|
return this.isFloating || this.isActive;
|
|
339
347
|
}
|
|
340
348
|
get isVisible() {
|
|
341
|
-
return WidgetState.Hidden !== this.state;
|
|
349
|
+
return (WidgetState.Hidden !== this.state && WidgetState.Unloaded !== this.state);
|
|
342
350
|
}
|
|
343
351
|
get activeState() {
|
|
344
352
|
return this.state;
|
|
@@ -387,7 +395,7 @@ class WidgetDef {
|
|
|
387
395
|
*/
|
|
388
396
|
show() {
|
|
389
397
|
const frontstageDef = UiFramework.frontstages.activeFrontstageDef;
|
|
390
|
-
const state = frontstageDef
|
|
398
|
+
const state = frontstageDef === null || frontstageDef === void 0 ? void 0 : frontstageDef.nineZoneState;
|
|
391
399
|
if (!state)
|
|
392
400
|
return;
|
|
393
401
|
if (!frontstageDef.findWidgetDef(this.id))
|
|
@@ -402,7 +410,7 @@ class WidgetDef {
|
|
|
402
410
|
*/
|
|
403
411
|
expand() {
|
|
404
412
|
const frontstageDef = UiFramework.frontstages.activeFrontstageDef;
|
|
405
|
-
const state = frontstageDef
|
|
413
|
+
const state = frontstageDef === null || frontstageDef === void 0 ? void 0 : frontstageDef.nineZoneState;
|
|
406
414
|
if (!state)
|
|
407
415
|
return;
|
|
408
416
|
if (!frontstageDef.findWidgetDef(this.id))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WidgetDef.js","sourceRoot":"","sources":["../../../../src/appui-react/widgets/WidgetDef.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 Widget\n */\n\nimport type * as React from \"react\";\nimport type {\n BadgeType,\n ConditionalStringValue,\n StringGetter,\n} from \"@itwin/appui-abstract\";\nimport { UiError, UiEvent } from \"@itwin/appui-abstract\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ConfigurableUiControlConstructor } from \"../configurableui/ConfigurableUiControl\";\nimport {\n ConfigurableCreateInfo,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl\";\nimport { UiFramework } from \"../UiFramework\";\nimport { PropsHelper } from \"../utils/PropsHelper\";\nimport type { WidgetControl } from \"./WidgetControl\";\nimport type { IconSpec, SizeProps } from \"@itwin/core-react\";\nimport { IconHelper } from \"@itwin/core-react\";\nimport type { WidgetConfig } from \"./WidgetConfig\";\nimport { WidgetState } from \"./WidgetState\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { StatusBarWidgetComposerControl } from \"./StatusBarWidgetComposerControl\";\n\n/** Widget State Changed Event Args interface.\n * @public\n */\nexport interface WidgetStateChangedEventArgs {\n widgetDef: WidgetDef;\n widgetState: WidgetState;\n}\n\n/** Widget State Changed Event class.\n * @public\n */\nexport class WidgetStateChangedEvent extends UiEvent<WidgetStateChangedEventArgs> {}\n\n/** @internal */\nexport interface WidgetChangedEventArgs {\n widgetDef: WidgetDef;\n}\n\n/** @internal */\nexport interface WidgetEventArgs {\n widgetDef: WidgetDef;\n}\n\n/** Widget type enum.\n * @public\n */\nexport enum WidgetType {\n Tool,\n Navigation,\n Rectangular,\n ToolSettings,\n StatusBar,\n}\n\n// -----------------------------------------------------------------------------\n\n/** A Widget Definition in the 9-Zone Layout system.\n * @public\n */\nexport class WidgetDef {\n private static _sId = 0;\n private _label: string | ConditionalStringValue | StringGetter = \"\";\n private _tooltip: string | ConditionalStringValue | StringGetter = \"\";\n private _widgetReactNode: React.ReactNode;\n private _widgetControl!: WidgetControl;\n private _defaultState: WidgetState = WidgetState.Unloaded;\n private _id: string;\n private _classId: string | ConfigurableUiControlConstructor | undefined =\n undefined;\n private _priority: number = 0;\n private _stateChanged: boolean = false;\n private _widgetType: WidgetType = WidgetType.Rectangular;\n private _applicationData?: any;\n private _icon?: IconSpec;\n private _internalData?: Map<string, any>;\n private _badge?: BadgeType;\n private _saveTransientState?: () => void;\n private _restoreTransientState?: () => boolean;\n private _preferredPanelSize: \"fit-content\" | undefined;\n private _defaultFloatingSize: SizeProps | undefined;\n private _canPopout?: boolean;\n private _floatingContainerId?: string;\n private _defaultFloatingPosition: XAndY | undefined;\n\n private _hideWithUiWhenFloating?: boolean;\n private _allowedPanelTargets?: ReadonlyArray<StagePanelLocation>;\n private _initialConfig?: WidgetConfig;\n\n public get state(): WidgetState {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (frontstageDef && frontstageDef.findWidgetDef(this.id)) {\n const currentState = frontstageDef.getWidgetCurrentState(this);\n // istanbul ignore else\n if (undefined !== currentState) return currentState;\n }\n return this.defaultState;\n }\n\n public get id(): string {\n return this._id;\n }\n public get classId(): string | ConfigurableUiControlConstructor | undefined {\n return this._classId;\n }\n public get priority(): number {\n return this._priority;\n }\n\n public get isFloatingStateSupported(): boolean {\n if (!this.initialConfig) return true;\n\n const allowedPanels = this.initialConfig.allowedPanels;\n if (allowedPanels && allowedPanels.length === 0) {\n return true;\n }\n\n const canFloat = this.initialConfig.canFloat;\n if (canFloat === undefined) return true;\n return !!canFloat;\n }\n\n public get isFloatingStateWindowResizable(): boolean {\n const canFloat = this.initialConfig?.canFloat;\n if (typeof canFloat === \"object\") {\n return canFloat.isResizable === undefined ? true : canFloat.isResizable;\n }\n\n return true;\n }\n\n public get isToolSettings(): boolean {\n return this._widgetType === WidgetType.ToolSettings;\n }\n public get isStatusBar(): boolean {\n return this._widgetType === WidgetType.StatusBar;\n }\n public get stateChanged(): boolean {\n return this._stateChanged;\n }\n public get applicationData(): any | undefined {\n return this._applicationData;\n }\n public get isFloating(): boolean {\n return this.state === WidgetState.Floating;\n }\n public get iconSpec(): IconSpec {\n return this._icon === IconHelper.reactIconKey\n ? IconHelper.getIconReactNode(this._icon, this._internalData)\n : this._icon;\n }\n public set iconSpec(spec: IconSpec) {\n this._icon = this._internalData\n ? IconHelper.getIconData(spec, this._internalData)\n : spec;\n }\n public get badgeType(): BadgeType | undefined {\n return this._badge;\n }\n public get initialConfig(): WidgetConfig | undefined {\n return this._initialConfig;\n }\n\n public get widgetType(): WidgetType {\n return this._widgetType;\n }\n public set widgetType(type: WidgetType) {\n this._widgetType = type;\n }\n\n /** @internal */\n public get defaultFloatingPosition() {\n return this._defaultFloatingPosition;\n }\n public set defaultFloatingPosition(position: XAndY | undefined) {\n this._defaultFloatingPosition = position;\n }\n\n /** @internal */\n public get defaultFloatingSize() {\n return this._defaultFloatingSize;\n }\n public set defaultFloatingSize(size: SizeProps | undefined) {\n this._defaultFloatingSize = size;\n }\n\n /** @internal */\n public get defaultState() {\n return this._defaultState;\n }\n\n constructor() {\n WidgetDef._sId++;\n this._id = `Widget-${WidgetDef._sId}`;\n }\n\n /** @internal */\n public static create(\n config: WidgetConfig,\n type: WidgetType = WidgetType.Rectangular\n ) {\n const def = new WidgetDef();\n def.initializeFromConfig(config, type);\n return def;\n }\n\n private initializeFromConfig(config: WidgetConfig, type: WidgetType) {\n this._widgetType = type;\n this._initialConfig = config;\n this._id = config.id;\n\n if (config.label) this._label = config.label;\n else if (config.labelKey)\n this._label = UiFramework.localization.getLocalizedString(\n config.labelKey\n );\n else if (type === WidgetType.ToolSettings) this._label = \"Tool Settings\";\n\n this.setCanPopout(config.canPopout);\n\n const canFloat = config.canFloat;\n if (typeof canFloat === \"object\") {\n this.setFloatingContainerId(canFloat.containerId);\n this.defaultFloatingPosition = canFloat.defaultPosition;\n this._hideWithUiWhenFloating = !!canFloat.hideWithUi;\n this._defaultFloatingSize = canFloat.defaultSize;\n }\n\n if (\"allowedPanels\" in config) {\n this.allowedPanelTargets = config.allowedPanels;\n } else if (type === WidgetType.ToolSettings)\n this.allowedPanelTargets = [\n StagePanelLocation.Bottom,\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n ];\n\n if (config.priority !== undefined) this._priority = config.priority;\n\n if (config.tooltip) this.setTooltip(config.tooltip);\n else if (config.tooltipKey)\n this._tooltip = UiFramework.localization.getLocalizedString(\n config.tooltipKey\n );\n\n if (config.defaultState !== undefined) {\n this._defaultState = config.defaultState;\n }\n\n if (\n config.allowedPanels &&\n config.allowedPanels.length === 0 &&\n config.defaultState === WidgetState.Open\n ) {\n this._defaultState = WidgetState.Floating;\n }\n\n this._widgetReactNode = config.content;\n this._icon = config.icon;\n\n // istanbul ignore next\n if (config.icon !== undefined && this._icon === undefined)\n this._icon = config.icon;\n\n if (config.badge !== undefined) this._badge = config.badge;\n\n this._preferredPanelSize = config.preferredPanelSize;\n }\n\n /** @alpha */\n public get preferredPanelSize() {\n return this._preferredPanelSize;\n }\n\n /** Get the label string */\n public get label(): string {\n return PropsHelper.getStringFromSpec(this._label);\n }\n\n /** Set the label.\n * @param labelSpec A string or a function to get the string.\n */\n public setLabel(labelSpec: string | ConditionalStringValue | StringGetter) {\n this._label = labelSpec; // TODO: handle ConditionalStringValue\n\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const label = PropsHelper.getStringFromSpec(labelSpec);\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SET_LABEL\",\n id: this.id,\n label,\n });\n }\n\n /** Get the tooltip string */\n public get tooltip(): string {\n return PropsHelper.getStringFromSpec(this._tooltip);\n }\n\n /** Set the tooltip.\n * @param v A string or a function to get the string.\n */\n public setTooltip(v: string | ConditionalStringValue | StringGetter) {\n this._tooltip = v;\n }\n\n public get widgetControl(): WidgetControl | undefined {\n return this._widgetControl;\n }\n\n public getWidgetControl(\n type: ConfigurableUiControlType\n ): WidgetControl | undefined {\n if (!this._widgetControl && this.classId) {\n let usedClassId: string = \"\";\n\n if (typeof this.classId === \"string\") {\n // istanbul ignore else\n if (this.classId)\n this._widgetControl = UiFramework.controls.create(\n this.classId,\n this.id,\n this.applicationData\n ) as WidgetControl;\n usedClassId = this.classId;\n } else {\n const info = new ConfigurableCreateInfo(\n this.classId.name,\n this.id,\n this.id\n );\n usedClassId = this.classId.name;\n this._widgetControl = new this.classId(\n info,\n this.applicationData\n ) as WidgetControl;\n }\n\n // istanbul ignore else\n if (this._widgetControl) {\n if (this._widgetControl.getType() !== type) {\n throw new UiError(\n UiFramework.loggerCategory(this),\n `getWidgetControl: '${usedClassId}' is NOT a ${type}; it is a ${this._widgetControl.getType()}`\n );\n }\n\n this._widgetControl.widgetDef = this;\n this._widgetControl.initialize();\n }\n }\n\n // istanbul ignore next - To avoid breaking API changes, if a WidgetControl is not specified for a status bar use Default one.\n if (!this._widgetControl && this.isStatusBar) {\n const info = new ConfigurableCreateInfo(\n \"StatusBarWidgetComposerControl\",\n StatusBarWidgetComposerControl.controlId,\n StatusBarWidgetComposerControl.controlId\n );\n this._widgetControl = new StatusBarWidgetComposerControl(info, undefined);\n this._widgetControl.widgetDef = this;\n this._widgetControl.initialize();\n }\n\n return this._widgetControl;\n }\n\n public get reactNode(): React.ReactNode {\n if (!this._widgetReactNode) {\n const widgetControl = this.getWidgetControl(\n ConfigurableUiControlType.Widget\n );\n\n // istanbul ignore else\n if (widgetControl && widgetControl.reactNode)\n this._widgetReactNode = widgetControl.reactNode;\n }\n\n return this._widgetReactNode;\n }\n\n public set reactNode(node: React.ReactNode) {\n this._widgetReactNode = node;\n }\n\n public setWidgetState(newState: WidgetState): void {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n switch (newState) {\n case WidgetState.Closed: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_CLOSE\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Floating: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: this.id,\n position: this._defaultFloatingPosition,\n });\n break;\n }\n case WidgetState.Hidden: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_HIDE\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Open: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_OPEN\",\n id: this.id,\n });\n break;\n }\n }\n }\n\n /** @internal */\n public handleWidgetStateChanged(newState: WidgetState) {\n this._stateChanged = true;\n UiFramework.frontstages.onWidgetStateChangedEvent.emit({\n widgetDef: this,\n widgetState: newState,\n });\n this.onWidgetStateChanged();\n }\n\n public setCanPopout(value: boolean | undefined) {\n this._canPopout = value;\n }\n\n public get canPopout(): boolean | undefined {\n return this._canPopout;\n }\n\n public setFloatingContainerId(value: string | undefined) {\n this._floatingContainerId = value;\n }\n\n public get floatingContainerId(): string | undefined {\n return this._floatingContainerId;\n }\n\n public canOpen(): boolean {\n return this.isFloating || this.isActive;\n }\n\n public get isVisible(): boolean {\n return WidgetState.Hidden !== this.state;\n }\n\n public get activeState(): WidgetState {\n return this.state;\n }\n\n public get isActive(): boolean {\n return WidgetState.Open === this.activeState;\n }\n\n public set hideWithUiWhenFloating(hide: boolean | undefined) {\n this._hideWithUiWhenFloating = !!hide;\n }\n\n public get hideWithUiWhenFloating(): boolean {\n return !!this._hideWithUiWhenFloating;\n }\n\n public get allowedPanelTargets():\n | ReadonlyArray<StagePanelLocation>\n | undefined {\n return this._allowedPanelTargets;\n }\n\n public set allowedPanelTargets(\n targets: ReadonlyArray<StagePanelLocation> | undefined\n ) {\n this._allowedPanelTargets = targets;\n }\n\n public onWidgetStateChanged(): void {\n this.widgetControl && this.widgetControl.onWidgetStateChanged();\n }\n\n /** Overwrite to save transient DOM state (i.e. scroll offset). */\n public saveTransientState(): void {\n this.widgetControl && this.widgetControl.saveTransientState();\n this._saveTransientState && this._saveTransientState();\n }\n\n /** Overwrite to restore transient DOM state.\n * @note Return true if the state is restored or the Widget will remount.\n */\n public restoreTransientState(): boolean {\n let result = true;\n if (this.widgetControl || this._restoreTransientState) {\n let result1 = false,\n result2 = false;\n if (this.widgetControl)\n result1 = this.widgetControl.restoreTransientState();\n if (this._restoreTransientState) result2 = this._restoreTransientState();\n result = !(result1 || result2);\n }\n return result;\n }\n\n /** Opens the widget and makes it visible to the user.\n * I.e. opens the stage panel or brings the floating widget to front of the screen.\n * @public\n */\n public show() {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SHOW\",\n id: this.id,\n });\n }\n\n /** Opens the widget and expands it to fill full size of the stage panel.\n * @public\n */\n public expand() {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_EXPAND\",\n id: this.id,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"WidgetDef.js","sourceRoot":"","sources":["../../../../src/appui-react/widgets/WidgetDef.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 Widget\n */\n\nimport type * as React from \"react\";\nimport type {\n BadgeType,\n ConditionalStringValue,\n StringGetter,\n} from \"@itwin/appui-abstract\";\nimport { UiError, UiEvent } from \"@itwin/appui-abstract\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { ConfigurableUiControlConstructor } from \"../configurableui/ConfigurableUiControl\";\nimport {\n ConfigurableCreateInfo,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl\";\nimport { UiFramework } from \"../UiFramework\";\nimport { PropsHelper } from \"../utils/PropsHelper\";\nimport type { WidgetControl } from \"./WidgetControl\";\nimport type { IconSpec, SizeProps } from \"@itwin/core-react\";\nimport { IconHelper } from \"@itwin/core-react\";\nimport type { WidgetConfig } from \"./WidgetConfig\";\nimport { WidgetState } from \"./WidgetState\";\nimport { StagePanelLocation } from \"../stagepanels/StagePanelLocation\";\nimport { StatusBarWidgetComposerControl } from \"./StatusBarWidgetComposerControl\";\n\n/** Widget State Changed Event Args interface.\n * @public\n */\nexport interface WidgetStateChangedEventArgs {\n widgetDef: WidgetDef;\n widgetState: WidgetState;\n}\n\n/** Widget State Changed Event class.\n * @public\n */\nexport class WidgetStateChangedEvent extends UiEvent<WidgetStateChangedEventArgs> {}\n\n/** @internal */\nexport interface WidgetChangedEventArgs {\n widgetDef: WidgetDef;\n}\n\n/** @internal */\nexport interface WidgetEventArgs {\n widgetDef: WidgetDef;\n}\n\n/** Widget type enum.\n * @public\n */\nexport enum WidgetType {\n Tool,\n Navigation,\n Rectangular,\n ToolSettings,\n StatusBar,\n}\n\n// -----------------------------------------------------------------------------\n\n/** A Widget Definition in the 9-Zone Layout system.\n * @public\n */\nexport class WidgetDef {\n private static _sId = 0;\n private _label: string | ConditionalStringValue | StringGetter = \"\";\n private _tooltip: string | ConditionalStringValue | StringGetter = \"\";\n private _widgetReactNode: React.ReactNode;\n private _widgetControl!: WidgetControl;\n private _defaultState: WidgetState = WidgetState.Closed;\n private _id: string;\n private _classId: string | ConfigurableUiControlConstructor | undefined =\n undefined;\n private _priority: number = 0;\n private _stateChanged: boolean = false;\n private _widgetType: WidgetType = WidgetType.Rectangular;\n private _applicationData?: any;\n private _icon?: IconSpec;\n private _internalData?: Map<string, any>;\n private _badge?: BadgeType;\n private _saveTransientState?: () => void;\n private _restoreTransientState?: () => boolean;\n private _preferredPanelSize: \"fit-content\" | undefined;\n private _defaultFloatingSize: SizeProps | undefined;\n private _canPopout?: boolean;\n private _floatingContainerId?: string;\n private _defaultFloatingPosition: XAndY | undefined;\n\n private _hideWithUiWhenFloating?: boolean;\n private _allowedPanelTargets?: ReadonlyArray<StagePanelLocation>;\n private _initialConfig?: WidgetConfig;\n\n public get state(): WidgetState {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (frontstageDef && frontstageDef.findWidgetDef(this.id)) {\n const currentState = frontstageDef.getWidgetCurrentState(this);\n // istanbul ignore else\n if (undefined !== currentState) return currentState;\n }\n return this.defaultState;\n }\n\n public get id(): string {\n return this._id;\n }\n public get classId(): string | ConfigurableUiControlConstructor | undefined {\n return this._classId;\n }\n public get priority(): number {\n return this._priority;\n }\n\n public get isFloatingStateSupported(): boolean {\n if (!this.initialConfig) return true;\n\n const allowedPanels = this.initialConfig.allowedPanels;\n if (allowedPanels && allowedPanels.length === 0) {\n return true;\n }\n\n const canFloat = this.initialConfig.canFloat;\n if (canFloat === undefined) return true;\n return !!canFloat;\n }\n\n public get isFloatingStateWindowResizable(): boolean {\n const canFloat = this.initialConfig?.canFloat;\n if (typeof canFloat === \"object\") {\n return canFloat.isResizable === undefined ? true : canFloat.isResizable;\n }\n\n return true;\n }\n\n public get isToolSettings(): boolean {\n return this._widgetType === WidgetType.ToolSettings;\n }\n public get isStatusBar(): boolean {\n return this._widgetType === WidgetType.StatusBar;\n }\n public get stateChanged(): boolean {\n return this._stateChanged;\n }\n public get applicationData(): any | undefined {\n return this._applicationData;\n }\n public get isFloating(): boolean {\n return this.state === WidgetState.Floating;\n }\n public get iconSpec(): IconSpec {\n return this._icon === IconHelper.reactIconKey\n ? IconHelper.getIconReactNode(this._icon, this._internalData)\n : this._icon;\n }\n public set iconSpec(spec: IconSpec) {\n this._icon = this._internalData\n ? IconHelper.getIconData(spec, this._internalData)\n : spec;\n }\n public get badgeType(): BadgeType | undefined {\n return this._badge;\n }\n public get initialConfig(): WidgetConfig | undefined {\n return this._initialConfig;\n }\n\n public get widgetType(): WidgetType {\n return this._widgetType;\n }\n public set widgetType(type: WidgetType) {\n this._widgetType = type;\n }\n\n /** @internal */\n public get defaultFloatingPosition() {\n return this._defaultFloatingPosition;\n }\n public set defaultFloatingPosition(position: XAndY | undefined) {\n this._defaultFloatingPosition = position;\n }\n\n /** @internal */\n public get defaultFloatingSize() {\n return this._defaultFloatingSize;\n }\n public set defaultFloatingSize(size: SizeProps | undefined) {\n this._defaultFloatingSize = size;\n }\n\n /** @internal */\n public get defaultState() {\n return this._defaultState;\n }\n\n constructor() {\n WidgetDef._sId++;\n this._id = `Widget-${WidgetDef._sId}`;\n }\n\n /** @internal */\n public static create(\n config: WidgetConfig,\n type: WidgetType = WidgetType.Rectangular\n ) {\n const def = new WidgetDef();\n def.initializeFromConfig(config, type);\n return def;\n }\n\n private initializeFromConfig(config: WidgetConfig, type: WidgetType) {\n this._widgetType = type;\n this._initialConfig = config;\n this._id = config.id;\n\n if (config.label) this._label = config.label;\n else if (config.labelKey)\n this._label = UiFramework.localization.getLocalizedString(\n config.labelKey\n );\n else if (type === WidgetType.ToolSettings) this._label = \"Tool Settings\";\n\n this.setCanPopout(config.canPopout);\n\n const canFloat = config.canFloat;\n if (typeof canFloat === \"object\") {\n this.setFloatingContainerId(canFloat.containerId);\n this.defaultFloatingPosition = canFloat.defaultPosition;\n this._hideWithUiWhenFloating = !!canFloat.hideWithUi;\n this._defaultFloatingSize = canFloat.defaultSize;\n }\n\n if (\"allowedPanels\" in config) {\n this.allowedPanelTargets = config.allowedPanels;\n } else if (type === WidgetType.ToolSettings)\n this.allowedPanelTargets = [\n StagePanelLocation.Bottom,\n StagePanelLocation.Left,\n StagePanelLocation.Right,\n ];\n\n if (config.priority !== undefined) this._priority = config.priority;\n\n if (config.tooltip) this.setTooltip(config.tooltip);\n else if (config.tooltipKey)\n this._tooltip = UiFramework.localization.getLocalizedString(\n config.tooltipKey\n );\n\n if (config.defaultState !== undefined) {\n this._defaultState = config.defaultState;\n }\n\n if (\n config.allowedPanels &&\n config.allowedPanels.length === 0 &&\n config.defaultState === WidgetState.Open\n ) {\n this._defaultState = WidgetState.Floating;\n }\n\n this._widgetReactNode = config.content;\n this._icon = config.icon;\n\n // istanbul ignore next\n if (config.icon !== undefined && this._icon === undefined)\n this._icon = config.icon;\n\n if (config.badge !== undefined) this._badge = config.badge;\n\n this._preferredPanelSize = config.preferredPanelSize;\n }\n\n /** @alpha */\n public get preferredPanelSize() {\n return this._preferredPanelSize;\n }\n\n /** Get the label string */\n public get label(): string {\n return PropsHelper.getStringFromSpec(this._label);\n }\n\n /** Set the label.\n * @param labelSpec A string or a function to get the string.\n */\n public setLabel(labelSpec: string | ConditionalStringValue | StringGetter) {\n this._label = labelSpec; // TODO: handle ConditionalStringValue\n\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n if (!frontstageDef) return;\n\n const label = PropsHelper.getStringFromSpec(labelSpec);\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SET_LABEL\",\n id: this.id,\n label,\n });\n }\n\n /** Get the tooltip string */\n public get tooltip(): string {\n return PropsHelper.getStringFromSpec(this._tooltip);\n }\n\n /** Set the tooltip.\n * @param v A string or a function to get the string.\n */\n public setTooltip(v: string | ConditionalStringValue | StringGetter) {\n this._tooltip = v;\n }\n\n public get widgetControl(): WidgetControl | undefined {\n return this._widgetControl;\n }\n\n public getWidgetControl(\n type: ConfigurableUiControlType\n ): WidgetControl | undefined {\n if (!this._widgetControl && this.classId) {\n let usedClassId: string = \"\";\n\n if (typeof this.classId === \"string\") {\n // istanbul ignore else\n if (this.classId)\n this._widgetControl = UiFramework.controls.create(\n this.classId,\n this.id,\n this.applicationData\n ) as WidgetControl;\n usedClassId = this.classId;\n } else {\n const info = new ConfigurableCreateInfo(\n this.classId.name,\n this.id,\n this.id\n );\n usedClassId = this.classId.name;\n this._widgetControl = new this.classId(\n info,\n this.applicationData\n ) as WidgetControl;\n }\n\n // istanbul ignore else\n if (this._widgetControl) {\n if (this._widgetControl.getType() !== type) {\n throw new UiError(\n UiFramework.loggerCategory(this),\n `getWidgetControl: '${usedClassId}' is NOT a ${type}; it is a ${this._widgetControl.getType()}`\n );\n }\n\n this._widgetControl.widgetDef = this;\n this._widgetControl.initialize();\n }\n }\n\n // istanbul ignore next - To avoid breaking API changes, if a WidgetControl is not specified for a status bar use Default one.\n if (!this._widgetControl && this.isStatusBar) {\n const info = new ConfigurableCreateInfo(\n \"StatusBarWidgetComposerControl\",\n StatusBarWidgetComposerControl.controlId,\n StatusBarWidgetComposerControl.controlId\n );\n this._widgetControl = new StatusBarWidgetComposerControl(info, undefined);\n this._widgetControl.widgetDef = this;\n this._widgetControl.initialize();\n }\n\n return this._widgetControl;\n }\n\n public get reactNode(): React.ReactNode {\n if (!this._widgetReactNode) {\n const widgetControl = this.getWidgetControl(\n ConfigurableUiControlType.Widget\n );\n\n // istanbul ignore else\n if (widgetControl && widgetControl.reactNode)\n this._widgetReactNode = widgetControl.reactNode;\n }\n\n return this._widgetReactNode;\n }\n\n public set reactNode(node: React.ReactNode) {\n this._widgetReactNode = node;\n }\n\n public setWidgetState(newState: WidgetState): void {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state || this.isStatusBar) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n switch (newState) {\n case WidgetState.Closed: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_CLOSE\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Floating: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_FLOAT\",\n id: this.id,\n position: this._defaultFloatingPosition,\n });\n break;\n }\n case WidgetState.Hidden: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_HIDE\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Open: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_OPEN\",\n id: this.id,\n });\n break;\n }\n case WidgetState.Unloaded: {\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_UNLOAD\",\n id: this.id,\n });\n break;\n }\n }\n }\n\n /** @internal */\n public handleWidgetStateChanged(newState: WidgetState) {\n this._stateChanged = true;\n UiFramework.frontstages.onWidgetStateChangedEvent.emit({\n widgetDef: this,\n widgetState: newState,\n });\n this.onWidgetStateChanged();\n }\n\n public setCanPopout(value: boolean | undefined) {\n this._canPopout = value;\n }\n\n public get canPopout(): boolean | undefined {\n return this._canPopout;\n }\n\n public setFloatingContainerId(value: string | undefined) {\n this._floatingContainerId = value;\n }\n\n public get floatingContainerId(): string | undefined {\n return this._floatingContainerId;\n }\n\n public canOpen(): boolean {\n return this.isFloating || this.isActive;\n }\n\n public get isVisible(): boolean {\n return (\n WidgetState.Hidden !== this.state && WidgetState.Unloaded !== this.state\n );\n }\n\n public get activeState(): WidgetState {\n return this.state;\n }\n\n public get isActive(): boolean {\n return WidgetState.Open === this.activeState;\n }\n\n public set hideWithUiWhenFloating(hide: boolean | undefined) {\n this._hideWithUiWhenFloating = !!hide;\n }\n\n public get hideWithUiWhenFloating(): boolean {\n return !!this._hideWithUiWhenFloating;\n }\n\n public get allowedPanelTargets():\n | ReadonlyArray<StagePanelLocation>\n | undefined {\n return this._allowedPanelTargets;\n }\n\n public set allowedPanelTargets(\n targets: ReadonlyArray<StagePanelLocation> | undefined\n ) {\n this._allowedPanelTargets = targets;\n }\n\n public onWidgetStateChanged(): void {\n this.widgetControl && this.widgetControl.onWidgetStateChanged();\n }\n\n /** Overwrite to save transient DOM state (i.e. scroll offset). */\n public saveTransientState(): void {\n this.widgetControl && this.widgetControl.saveTransientState();\n this._saveTransientState && this._saveTransientState();\n }\n\n /** Overwrite to restore transient DOM state.\n * @note Return true if the state is restored or the Widget will remount.\n */\n public restoreTransientState(): boolean {\n let result = true;\n if (this.widgetControl || this._restoreTransientState) {\n let result1 = false,\n result2 = false;\n if (this.widgetControl)\n result1 = this.widgetControl.restoreTransientState();\n if (this._restoreTransientState) result2 = this._restoreTransientState();\n result = !(result1 || result2);\n }\n return result;\n }\n\n /** Opens the widget and makes it visible to the user.\n * I.e. opens the stage panel or brings the floating widget to front of the screen.\n * @public\n */\n public show() {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_SHOW\",\n id: this.id,\n });\n }\n\n /** Opens the widget and expands it to fill full size of the stage panel.\n * @public\n */\n public expand() {\n const frontstageDef = UiFramework.frontstages.activeFrontstageDef;\n const state = frontstageDef?.nineZoneState;\n if (!state) return;\n if (!frontstageDef.findWidgetDef(this.id)) return;\n\n frontstageDef.dispatch({\n type: \"WIDGET_TAB_EXPAND\",\n id: this.id,\n });\n }\n}\n"]}
|
|
@@ -52,6 +52,7 @@ export class WidgetHost {
|
|
|
52
52
|
* @internal
|
|
53
53
|
*/
|
|
54
54
|
updateDynamicWidgetDefs(stageId, stageUsage, location, section, allStageWidgetDefs) {
|
|
55
|
+
var _a;
|
|
55
56
|
// get widgetDefs not already in allStageWidgetDefs and add them
|
|
56
57
|
const uniqueWidgets = this._widgetDefs.filter((widgetDef) => {
|
|
57
58
|
return !allStageWidgetDefs.find((wDef) => wDef.id === widgetDef.id);
|
|
@@ -60,9 +61,9 @@ export class WidgetHost {
|
|
|
60
61
|
let dynamicWidgetDefs;
|
|
61
62
|
if (section !== undefined) {
|
|
62
63
|
dynamicWidgetDefs =
|
|
63
|
-
UiFramework.widgetManager.getWidgetDefs(stageId, stageUsage, location, section)
|
|
64
|
+
(_a = UiFramework.widgetManager.getWidgetDefs(stageId, stageUsage, location, section)) !== null && _a !== void 0 ? _a : [];
|
|
64
65
|
}
|
|
65
|
-
const uniqueDynamicWidgetDefs = dynamicWidgetDefs
|
|
66
|
+
const uniqueDynamicWidgetDefs = dynamicWidgetDefs === null || dynamicWidgetDefs === void 0 ? void 0 : dynamicWidgetDefs.filter((widgetDef) => {
|
|
66
67
|
return !allStageWidgetDefs.find((wDef) => wDef.id === widgetDef.id);
|
|
67
68
|
});
|
|
68
69
|
// Now that we no longer support a middle panel section, yet we have existing API that allows a middle section to be
|