@itwin/appui-react 4.2.1 → 4.3.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -6
- package/lib/cjs/appui-react/UiFramework.d.ts +0 -7
- package/lib/cjs/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/cjs/appui-react/UiFramework.js +4 -29
- package/lib/cjs/appui-react/UiFramework.js.map +1 -1
- package/lib/cjs/appui-react/_variables.scss +3 -3
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.scss +3 -3
- package/lib/cjs/appui-react/accudraw/AccuDrawInputField.scss +3 -3
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js +1 -2
- package/lib/cjs/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js +2 -3
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.scss +3 -3
- 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 +1 -2
- package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/configurableui.scss +3 -3
- package/lib/cjs/appui-react/content/ContentLayout.js +9 -12
- package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/content/DefaultViewOverlay.js +3 -4
- package/lib/cjs/appui-react/content/DefaultViewOverlay.js.map +1 -1
- package/lib/cjs/appui-react/content/DefaultViewOverlay.scss +3 -3
- package/lib/cjs/appui-react/content/FloatingViewportContent.js +1 -2
- package/lib/cjs/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/cjs/appui-react/content/IModelViewport.js +3 -6
- package/lib/cjs/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentLayoutManager.js +1 -2
- package/lib/cjs/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/cjs/appui-react/content/InternalContentViewManager.js +1 -1
- package/lib/cjs/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js +10 -12
- package/lib/cjs/appui-react/content/split-pane/SplitPane.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js +2 -3
- package/lib/cjs/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/cjs/appui-react/dialog/ContentDialog.js +3 -6
- package/lib/cjs/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js +2 -3
- package/lib/cjs/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/cjs/appui-react/feedback/ValidationTextbox.scss +3 -3
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +27 -9
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +2 -3
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
- package/lib/cjs/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
- package/lib/cjs/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
- package/lib/cjs/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/hooks/useSolarDataProvider.js +8 -13
- package/lib/cjs/appui-react/hooks/useSolarDataProvider.js.map +1 -1
- package/lib/cjs/appui-react/messages/ActivityMessage.js +5 -7
- package/lib/cjs/appui-react/messages/ActivityMessage.js.map +1 -1
- package/lib/cjs/appui-react/navigationaids/SheetNavigationAid.scss +3 -3
- package/lib/cjs/appui-react/navigationaids/StandardRotationNavigationAid.scss +3 -3
- package/lib/cjs/appui-react/pickers/ViewSelector.d.ts.map +1 -1
- package/lib/cjs/appui-react/pickers/ViewSelector.js +8 -7
- package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/cjs/appui-react/popup/CardPopup.scss +3 -3
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js +1 -2
- package/lib/cjs/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/cjs/appui-react/popup/PopupManager.js +1 -2
- package/lib/cjs/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js +0 -53
- package/lib/cjs/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
- package/lib/cjs/appui-react/settings/quantityformatting/QuantityFormat.scss +3 -3
- package/lib/cjs/appui-react/settings/ui/UiSettingsPage.scss +3 -3
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js +5 -7
- package/lib/cjs/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/Indicator.js +1 -2
- package/lib/cjs/appui-react/statusbar/Indicator.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/Separator.scss +3 -3
- package/lib/cjs/appui-react/statusbar/StatusBar.js +3 -5
- package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/SectionsField.scss +3 -3
- package/lib/cjs/appui-react/statusfields/SelectionCount.scss +3 -3
- package/lib/cjs/appui-react/statusfields/SelectionScope.scss +3 -3
- package/lib/cjs/appui-react/statusfields/ViewAttributes.scss +3 -3
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +3 -3
- 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/statusfields/toolassistance/ToolAssistanceField.scss +3 -3
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js +10 -17
- package/lib/cjs/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
- package/lib/cjs/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js +12 -14
- package/lib/cjs/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/UiItemsManager.js +8 -14
- 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 +8 -9
- package/lib/cjs/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts +3 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +116 -102
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.scss +3 -3
- 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/Tab.scss +3 -3
- package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js +33 -45
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.scss +3 -3
- package/lib/cjs/appui-react/widget-panels/Toolbars.js +2 -3
- package/lib/cjs/appui-react/widget-panels/Toolbars.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Toolbars.scss +3 -3
- 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/WidgetDef.d.ts +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +13 -12
- package/lib/cjs/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetHost.js +2 -3
- package/lib/cjs/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/esm/appui-react/UiFramework.d.ts +0 -7
- package/lib/esm/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/esm/appui-react/UiFramework.js +4 -29
- package/lib/esm/appui-react/UiFramework.js.map +1 -1
- package/lib/esm/appui-react/_variables.scss +3 -3
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.scss +3 -3
- package/lib/esm/appui-react/accudraw/AccuDrawInputField.scss +3 -3
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js +1 -2
- package/lib/esm/appui-react/backstage/BackstageComposerItem.js.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.d.ts.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js +2 -3
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.scss +3 -3
- 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 +1 -2
- package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/esm/appui-react/configurableui/configurableui.scss +3 -3
- package/lib/esm/appui-react/content/ContentLayout.js +9 -12
- package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/esm/appui-react/content/DefaultViewOverlay.js +3 -4
- package/lib/esm/appui-react/content/DefaultViewOverlay.js.map +1 -1
- package/lib/esm/appui-react/content/DefaultViewOverlay.scss +3 -3
- package/lib/esm/appui-react/content/FloatingViewportContent.js +1 -2
- package/lib/esm/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/esm/appui-react/content/IModelViewport.js +3 -6
- package/lib/esm/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentLayoutManager.js +1 -2
- package/lib/esm/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/esm/appui-react/content/InternalContentViewManager.js +1 -1
- package/lib/esm/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/esm/appui-react/content/split-pane/SplitPane.js +10 -12
- package/lib/esm/appui-react/content/split-pane/SplitPane.js.map +1 -1
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js +2 -3
- package/lib/esm/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/esm/appui-react/dialog/ContentDialog.js +3 -6
- package/lib/esm/appui-react/dialog/ContentDialog.js.map +1 -1
- package/lib/esm/appui-react/dialog/DialogManagerBase.js +2 -3
- package/lib/esm/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/esm/appui-react/feedback/ValidationTextbox.scss +3 -3
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +27 -9
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -3
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js +1 -2
- package/lib/esm/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js +7 -11
- package/lib/esm/appui-react/hooks/useAnalysisAnimationDataProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js +7 -11
- package/lib/esm/appui-react/hooks/useScheduleAnimationDataProvider.js.map +1 -1
- package/lib/esm/appui-react/hooks/useSolarDataProvider.js +8 -13
- package/lib/esm/appui-react/hooks/useSolarDataProvider.js.map +1 -1
- package/lib/esm/appui-react/messages/ActivityMessage.js +5 -7
- package/lib/esm/appui-react/messages/ActivityMessage.js.map +1 -1
- package/lib/esm/appui-react/navigationaids/SheetNavigationAid.scss +3 -3
- package/lib/esm/appui-react/navigationaids/StandardRotationNavigationAid.scss +3 -3
- package/lib/esm/appui-react/pickers/ViewSelector.d.ts.map +1 -1
- package/lib/esm/appui-react/pickers/ViewSelector.js +8 -7
- package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/esm/appui-react/popup/CardPopup.scss +3 -3
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js +1 -2
- package/lib/esm/appui-react/popup/KeyinPalettePanel.js.map +1 -1
- package/lib/esm/appui-react/popup/PopupManager.js +1 -2
- package/lib/esm/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.d.ts.map +1 -1
- package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js +0 -53
- package/lib/esm/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js +2 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.js.map +1 -1
- package/lib/esm/appui-react/settings/quantityformatting/QuantityFormat.scss +3 -3
- package/lib/esm/appui-react/settings/ui/UiSettingsPage.scss +3 -3
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js +5 -7
- package/lib/esm/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/esm/appui-react/statusbar/Indicator.js +1 -2
- package/lib/esm/appui-react/statusbar/Indicator.js.map +1 -1
- package/lib/esm/appui-react/statusbar/Separator.scss +3 -3
- package/lib/esm/appui-react/statusbar/StatusBar.js +3 -5
- package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/statusfields/SectionsField.scss +3 -3
- package/lib/esm/appui-react/statusfields/SelectionCount.scss +3 -3
- package/lib/esm/appui-react/statusfields/SelectionScope.scss +3 -3
- package/lib/esm/appui-react/statusfields/ViewAttributes.scss +3 -3
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.scss +3 -3
- 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/statusfields/toolassistance/ToolAssistanceField.scss +3 -3
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js +10 -17
- package/lib/esm/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js +3 -2
- package/lib/esm/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js +12 -14
- package/lib/esm/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +9 -10
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -2
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/UiItemsManager.js +8 -14
- 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 +8 -9
- package/lib/esm/appui-react/widget-panels/Content.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts +3 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +113 -99
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.scss +3 -3
- 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/Tab.scss +3 -3
- package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.js +33 -45
- package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.scss +3 -3
- package/lib/esm/appui-react/widget-panels/Toolbars.js +2 -3
- package/lib/esm/appui-react/widget-panels/Toolbars.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Toolbars.scss +3 -3
- 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/WidgetDef.d.ts +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +13 -12
- package/lib/esm/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetHost.js +2 -3
- package/lib/esm/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/public/locales/en/UiFramework.json +3 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/PopupManager.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 Popup\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnCancelFunc,\n OnItemExecutedFunc,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport type { Point, SizeProps } from \"@itwin/core-react\";\nimport { Orientation, Rectangle } from \"@itwin/core-react\";\nimport { offsetAndContainInContainer } from \"@itwin/appui-layout-react\";\nimport type { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\nimport { UiFramework } from \"../UiFramework\";\nimport { CardPopup } from \"./CardPopup\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup\";\nimport { InputEditorCommitHandler, InputEditorPopup } from \"./InputEditorPopup\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup\";\nimport { ToolbarPopup } from \"./ToolbarPopup\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup\";\n\n// cSpell:ignore uiadmin\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n parentDocument: Document;\n}\n\n/** @public */\nexport interface PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n */\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n // istanbul ignore if\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n // istanbul ignore if\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: OnItemExecutedFunc,\n onCancel?: OnCancelFunc\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n el={el}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: OnItemExecutedFunc,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolbarId;\n const component = (\n <ToolbarPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n items={toolbarProps.items}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: OnItemExecutedFunc,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={\n toolbarProps\n ? toolbarProps.items\n : /* istanbul ignore next */ undefined\n }\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\n/** @internal */\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer\n * @public\n */\nexport class PopupRenderer extends React.Component<{}, PopupRendererState> {\n /** @internal */\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter((info) => info.parentDocument === this.state.parentDocument)\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n private _handlePopupsChangedEvent = (args: PopupsChangedEventArgs) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/popup/PopupManager.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 Popup\n */\n\nimport * as React from \"react\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type {\n AbstractToolbarProps,\n DialogLayoutDataProvider,\n OnCancelFunc,\n OnItemExecutedFunc,\n OnValueCommitFunc,\n Primitives,\n PrimitiveValue,\n PropertyDescription,\n RelativePosition,\n} from \"@itwin/appui-abstract\";\nimport {\n PropertyRecord,\n PropertyValueFormat,\n UiEvent,\n} from \"@itwin/appui-abstract\";\nimport type { Point, SizeProps } from \"@itwin/core-react\";\nimport { Orientation, Rectangle } from \"@itwin/core-react\";\nimport { offsetAndContainInContainer } from \"@itwin/appui-layout-react\";\nimport type { KeyinEntry } from \"../uiadmin/FrameworkUiAdmin\";\nimport { UiFramework } from \"../UiFramework\";\nimport { CardPopup } from \"./CardPopup\";\nimport { HTMLElementPopup } from \"./HTMLElementPopup\";\nimport { InputEditorCommitHandler, InputEditorPopup } from \"./InputEditorPopup\";\nimport { KeyinPalettePopup } from \"./KeyinPalettePopup\";\nimport { ToolbarPopup } from \"./ToolbarPopup\";\nimport { ToolSettingsPopup } from \"./ToolSettingsPopup\";\n\n// cSpell:ignore uiadmin\n\n/** Information maintained by PopupManager about a Popup\n * @public\n */\nexport interface PopupInfo {\n id: string;\n pt: XAndY;\n component: React.ReactNode;\n parentDocument: Document;\n}\n\n/** @public */\nexport interface PopupsChangedEventArgs {\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popups Changed Event class.\n * @public\n */\nexport class PopupsChangedEvent extends UiEvent<PopupsChangedEventArgs> {}\n\n/** Props for each popup managed by the PopupManager\n * @public\n */\nexport interface PopupPropsBase {\n id: string;\n el: HTMLElement;\n pt: XAndY;\n offset: XAndY;\n}\n\n/** Describes React based content\n * @public\n */\nexport interface ReactContent {\n reactNode: React.ReactNode;\n}\n\n/** Type for Popup Content\n * @public\n */\nexport type PopupContentType = HTMLElement | ReactContent;\n\n/** ReactContent type guard.\n * @internal\n */\nexport const isReactContent = (\n content: PopupContentType\n): content is ReactContent => {\n return (content as ReactContent).reactNode !== undefined;\n};\n\n/** Popup Manager class\n * @public\n */\nexport class PopupManager {\n private static _popups: ReadonlyArray<PopupInfo> = [];\n private static _editorId = \"InputEditor\";\n private static _toolbarId = \"Toolbar\";\n private static _htmlElementId = \"HTMLElement\";\n private static _cardId = \"Card\";\n private static _toolSettingsId = \"ToolSettings\";\n private static _keyPalettePopupId = \"KeyinPalette\";\n\n private static _defaultOffset = { x: 8, y: 8 };\n\n public static readonly onPopupsChangedEvent = new PopupsChangedEvent();\n\n public static get popupCount() {\n return this._popups.length;\n }\n public static get popups() {\n return this._popups;\n }\n\n public static set popups(popups: ReadonlyArray<PopupInfo>) {\n // istanbul ignore if\n if (this._popups === popups) return;\n this._popups = popups;\n this.onPopupsChangedEvent.emit({ popups });\n }\n\n /** @internal */\n public static clearPopups() {\n this.popups = [];\n }\n\n private static addPopup(popupInfo: PopupInfo): void {\n const popups = [...PopupManager._popups, popupInfo];\n this.popups = popups;\n }\n\n private static updatePopup(popupInfo: PopupInfo, itemIndex: number): void {\n // istanbul ignore if\n if (itemIndex < 0) return;\n\n const popups = [\n ...PopupManager._popups.slice(0, itemIndex),\n popupInfo,\n ...PopupManager._popups.slice(itemIndex + 1),\n ];\n this.popups = popups;\n }\n\n public static addOrUpdatePopup(popupInfo: PopupInfo): void {\n const itemIndex = PopupManager._popups.findIndex(\n (info: PopupInfo) => info.id === popupInfo.id\n );\n if (itemIndex >= 0) PopupManager.updatePopup(popupInfo, itemIndex);\n else PopupManager.addPopup(popupInfo);\n }\n\n public static removePopup(id: string): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => id === info.id\n );\n let result = true;\n\n if (index >= 0) {\n const popups = PopupManager._popups.filter((info: PopupInfo) => {\n return info.id !== id;\n });\n this.popups = popups;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `removePopup: Could not find popup with id of '${id}'`\n );\n result = false;\n }\n\n return result;\n }\n\n public static get defaultOffset(): XAndY {\n return PopupManager._defaultOffset;\n }\n public static set defaultOffset(offset: XAndY) {\n PopupManager._defaultOffset = offset;\n }\n\n public static showInputEditor(\n el: HTMLElement,\n pt: XAndY,\n value: Primitives.Value,\n propertyDescription: PropertyDescription,\n onCommit: OnValueCommitFunc,\n onCancel: OnCancelFunc\n ): boolean {\n const primitiveValue: PrimitiveValue = {\n value,\n valueFormat: PropertyValueFormat.Primitive,\n };\n const record = new PropertyRecord(primitiveValue, propertyDescription);\n const commitHandler = new InputEditorCommitHandler(onCommit);\n const id = PopupManager._editorId;\n const component = (\n <InputEditorPopup\n id={id}\n el={el}\n pt={pt}\n offset={PopupManager.defaultOffset}\n record={record}\n onCancel={onCancel}\n commitHandler={commitHandler}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideInputEditor(): boolean {\n return PopupManager.removePopup(PopupManager._editorId);\n }\n\n public static showKeyinPalette(\n keyins: KeyinEntry[],\n el: HTMLElement,\n onItemExecuted?: OnItemExecutedFunc,\n onCancel?: OnCancelFunc\n ): boolean {\n const id = PopupManager._keyPalettePopupId;\n const component = (\n <KeyinPalettePopup\n keyins={keyins}\n id={id}\n el={el}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n // since the command palette popup is always at top center of specified HTML element and it does not need to move like\n // cursor popups just set pt to 0,0.\n const pt = { x: 0, y: 0 };\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideKeyinPalette(): boolean {\n return PopupManager.removePopup(PopupManager._keyPalettePopupId);\n }\n\n public static showToolbar(\n toolbarProps: AbstractToolbarProps,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: OnItemExecutedFunc,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolbarId;\n const component = (\n <ToolbarPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n items={toolbarProps.items}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideToolbar(): boolean {\n return PopupManager.removePopup(PopupManager._toolbarId);\n }\n\n public static showHTMLElement(\n displayElement: HTMLElement,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._htmlElementId;\n const component = (\n <HTMLElementPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n element={displayElement}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideHTMLElement(): boolean {\n return PopupManager.removePopup(PopupManager._htmlElementId);\n }\n\n public static showCard(\n content: PopupContentType,\n title: string | PropertyRecord | undefined,\n toolbarProps: AbstractToolbarProps | undefined,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onItemExecuted: OnItemExecutedFunc,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._cardId;\n const component = (\n <CardPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n content={content}\n title={title}\n items={\n toolbarProps\n ? toolbarProps.items\n : /* istanbul ignore next */ undefined\n }\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n onItemExecuted={onItemExecuted}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static hideCard(): boolean {\n const index = PopupManager._popups.findIndex(\n (info: PopupInfo) => PopupManager._cardId === info.id\n );\n if (index >= 0) return PopupManager.removePopup(PopupManager._cardId);\n return false;\n }\n\n public static openToolSettings(\n dataProvider: DialogLayoutDataProvider,\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n onCancel: OnCancelFunc,\n relativePosition: RelativePosition\n ): boolean {\n const id = PopupManager._toolSettingsId;\n const component = (\n <ToolSettingsPopup\n id={id}\n el={el}\n pt={pt}\n offset={offset}\n dataProvider={dataProvider}\n relativePosition={relativePosition}\n orientation={Orientation.Horizontal}\n onCancel={onCancel}\n />\n );\n\n const popupInfo: PopupInfo = {\n id,\n pt,\n component,\n parentDocument: el.ownerDocument,\n };\n PopupManager.addOrUpdatePopup(popupInfo);\n\n return true;\n }\n\n public static closeToolSettings(): boolean {\n return PopupManager.removePopup(PopupManager._toolSettingsId);\n }\n\n public static getPopupPosition(\n el: HTMLElement,\n pt: XAndY,\n offset: XAndY,\n size: SizeProps\n ): Point {\n const containerBounds = Rectangle.create(el.getBoundingClientRect());\n const relativeBounds = Rectangle.createFromSize(size).offset(pt);\n const adjustedPosition: Point = offsetAndContainInContainer(\n relativeBounds,\n containerBounds.getSize(),\n offset\n );\n const position = adjustedPosition.offset(containerBounds.topLeft());\n\n return position;\n }\n}\n\n/** @internal */\ninterface PopupRendererState {\n parentDocument: Document | null;\n popups: ReadonlyArray<PopupInfo>;\n}\n\n/** Popup Renderer\n * @public\n */\nexport class PopupRenderer extends React.Component<{}, PopupRendererState> {\n /** @internal */\n public override readonly state: PopupRendererState = {\n parentDocument: null,\n popups: PopupManager.popups,\n };\n\n public override componentDidMount(): void {\n PopupManager.onPopupsChangedEvent.addListener(\n this._handlePopupsChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n PopupManager.onPopupsChangedEvent.removeListener(\n this._handlePopupsChangedEvent\n );\n }\n\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\n this.setState({ parentDocument: popupDiv?.ownerDocument ?? null });\n };\n\n public override render(): React.ReactNode {\n if (PopupManager.popupCount <= 0) return null;\n\n return (\n <div\n className=\"appui-react-popup-render-container\"\n ref={this._handleRefSet}\n >\n {this.state.parentDocument &&\n this.state.popups\n .filter((info) => info.parentDocument === this.state.parentDocument)\n .map((popupInfo: PopupInfo) => {\n return (\n <React.Fragment key={popupInfo.id}>\n {popupInfo.component}\n </React.Fragment>\n );\n })}\n </div>\n );\n }\n\n private _handlePopupsChangedEvent = (args: PopupsChangedEventArgs) => {\n this.setState({ popups: args.popups });\n };\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HideIsolateEmphasizeManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/selection/HideIsolateEmphasizeManager.ts"],"names":[],"mappings":"AAIA;;GAEG;
|
|
1
|
+
{"version":3,"file":"HideIsolateEmphasizeManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/selection/HideIsolateEmphasizeManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,6 @@ const core_bentley_1 = require("@itwin/core-bentley");
|
|
|
12
12
|
const core_common_1 = require("@itwin/core-common");
|
|
13
13
|
const core_frontend_1 = require("@itwin/core-frontend");
|
|
14
14
|
const SyncUiEventDispatcher_1 = require("../syncui/SyncUiEventDispatcher");
|
|
15
|
-
const UiFramework_1 = require("../UiFramework");
|
|
16
15
|
/** Supported Hide, Isolate, and Emphasize Actions. These also serve as FeatureTracking Ids.
|
|
17
16
|
* @public
|
|
18
17
|
*/
|
|
@@ -29,48 +28,6 @@ var HideIsolateEmphasizeAction;
|
|
|
29
28
|
HideIsolateEmphasizeAction["ClearOverrideModels"] = "ClearOverrideModels";
|
|
30
29
|
HideIsolateEmphasizeAction["ClearOverrideCategories"] = "ClearOverrideCategories";
|
|
31
30
|
})(HideIsolateEmphasizeAction = exports.HideIsolateEmphasizeAction || (exports.HideIsolateEmphasizeAction = {}));
|
|
32
|
-
const featureIdMap = new Map([
|
|
33
|
-
[
|
|
34
|
-
HideIsolateEmphasizeAction.EmphasizeSelectedElements,
|
|
35
|
-
"d74eb93f-deae-4700-8da6-1013a8a7aa26",
|
|
36
|
-
],
|
|
37
|
-
[
|
|
38
|
-
HideIsolateEmphasizeAction.IsolateSelectedElements,
|
|
39
|
-
"24327638-1611-45fa-a379-fa73329098ec",
|
|
40
|
-
],
|
|
41
|
-
[
|
|
42
|
-
HideIsolateEmphasizeAction.IsolateSelectedCategories,
|
|
43
|
-
"e58081ab-2c33-4a15-924f-71082b58ca3b",
|
|
44
|
-
],
|
|
45
|
-
[
|
|
46
|
-
HideIsolateEmphasizeAction.IsolateSelectedModels,
|
|
47
|
-
"3475921e-7dd1-4547-993e-a3e284ef8b62",
|
|
48
|
-
],
|
|
49
|
-
[
|
|
50
|
-
HideIsolateEmphasizeAction.HideSelectedElements,
|
|
51
|
-
"2ca673ec-001a-4890-bc25-18bc88358fe0",
|
|
52
|
-
],
|
|
53
|
-
[
|
|
54
|
-
HideIsolateEmphasizeAction.HideSelectedModels,
|
|
55
|
-
"8b41e859-ae17-4e19-b220-87a5cf9f8242",
|
|
56
|
-
],
|
|
57
|
-
[
|
|
58
|
-
HideIsolateEmphasizeAction.HideSelectedCategories,
|
|
59
|
-
"c5d6916b-e8d7-4796-bae9-a5303712d46b",
|
|
60
|
-
],
|
|
61
|
-
[
|
|
62
|
-
HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized,
|
|
63
|
-
"7b135c8a-3f3c-4297-b36c-b0ac51f1d8de",
|
|
64
|
-
],
|
|
65
|
-
[
|
|
66
|
-
HideIsolateEmphasizeAction.ClearOverrideModels,
|
|
67
|
-
"6e519b94-edab-4b13-9ce7-0bcdfa27ccfe",
|
|
68
|
-
],
|
|
69
|
-
[
|
|
70
|
-
HideIsolateEmphasizeAction.ClearOverrideCategories,
|
|
71
|
-
"9d2be3c6-6992-4c30-84eb-10f6b9379d06",
|
|
72
|
-
],
|
|
73
|
-
]);
|
|
74
31
|
/** Overrides given models to provide emphasize functionality
|
|
75
32
|
* @public
|
|
76
33
|
*/
|
|
@@ -415,7 +372,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
415
372
|
viewport: vp,
|
|
416
373
|
action: HideIsolateEmphasizeAction.IsolateSelectedModels,
|
|
417
374
|
});
|
|
418
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.IsolateSelectedModels, featureIdMap.get(HideIsolateEmphasizeAction.IsolateSelectedModels));
|
|
419
375
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
420
376
|
}
|
|
421
377
|
/**
|
|
@@ -430,7 +386,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
430
386
|
viewport: vp,
|
|
431
387
|
action: HideIsolateEmphasizeAction.IsolateSelectedCategories,
|
|
432
388
|
});
|
|
433
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.IsolateSelectedCategories, featureIdMap.get(HideIsolateEmphasizeAction.IsolateSelectedCategories));
|
|
434
389
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
435
390
|
}
|
|
436
391
|
/**
|
|
@@ -445,7 +400,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
445
400
|
viewport: vp,
|
|
446
401
|
action: HideIsolateEmphasizeAction.IsolateSelectedElements,
|
|
447
402
|
});
|
|
448
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.IsolateSelectedElements, featureIdMap.get(HideIsolateEmphasizeAction.IsolateSelectedElements));
|
|
449
403
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
450
404
|
// clear out selection now that any callbacks have processed
|
|
451
405
|
const selection = vp.view.iModel.selectionSet;
|
|
@@ -464,7 +418,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
464
418
|
viewport: vp,
|
|
465
419
|
action: HideIsolateEmphasizeAction.HideSelectedModels,
|
|
466
420
|
});
|
|
467
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.HideSelectedModels, featureIdMap.get(HideIsolateEmphasizeAction.HideSelectedModels));
|
|
468
421
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
469
422
|
}
|
|
470
423
|
/**
|
|
@@ -479,7 +432,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
479
432
|
viewport: vp,
|
|
480
433
|
action: HideIsolateEmphasizeAction.HideSelectedCategories,
|
|
481
434
|
});
|
|
482
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.HideSelectedCategories, featureIdMap.get(HideIsolateEmphasizeAction.HideSelectedCategories));
|
|
483
435
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
484
436
|
}
|
|
485
437
|
/**
|
|
@@ -494,7 +446,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
494
446
|
viewport: vp,
|
|
495
447
|
action: HideIsolateEmphasizeAction.HideSelectedElements,
|
|
496
448
|
});
|
|
497
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.HideSelectedCategories, featureIdMap.get(HideIsolateEmphasizeAction.HideSelectedElements));
|
|
498
449
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
499
450
|
// clear out selection now that any callbacks have processed
|
|
500
451
|
const selection = vp.view.iModel.selectionSet;
|
|
@@ -513,7 +464,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
513
464
|
viewport: vp,
|
|
514
465
|
action: HideIsolateEmphasizeAction.EmphasizeSelectedElements,
|
|
515
466
|
});
|
|
516
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.EmphasizeSelectedElements, featureIdMap.get(HideIsolateEmphasizeAction.EmphasizeSelectedElements));
|
|
517
467
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
518
468
|
// clear out selection now that any callbacks have processed
|
|
519
469
|
const selection = vp.view.iModel.selectionSet;
|
|
@@ -532,7 +482,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
532
482
|
viewport: vp,
|
|
533
483
|
action: HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized,
|
|
534
484
|
});
|
|
535
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized, featureIdMap.get(HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized));
|
|
536
485
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
537
486
|
}
|
|
538
487
|
/**
|
|
@@ -547,7 +496,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
547
496
|
viewport: vp,
|
|
548
497
|
action: HideIsolateEmphasizeAction.ClearOverrideModels,
|
|
549
498
|
});
|
|
550
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.ClearOverrideModels, featureIdMap.get(HideIsolateEmphasizeAction.ClearOverrideModels));
|
|
551
499
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
552
500
|
}
|
|
553
501
|
/**
|
|
@@ -562,7 +510,6 @@ class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {
|
|
|
562
510
|
viewport: vp,
|
|
563
511
|
action: HideIsolateEmphasizeAction.ClearOverrideCategories,
|
|
564
512
|
});
|
|
565
|
-
void UiFramework_1.UiFramework.postTelemetry(HideIsolateEmphasizeAction.ClearOverrideCategories, featureIdMap.get(HideIsolateEmphasizeAction.ClearOverrideCategories));
|
|
566
513
|
SyncUiEventDispatcher_1.SyncUiEventDispatcher.dispatchSyncUiEvent(HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId);
|
|
567
514
|
}
|
|
568
515
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HideIsolateEmphasizeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/selection/HideIsolateEmphasizeManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport type { GuidString } from \"@itwin/core-bentley\";\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { GeometricElementProps } from \"@itwin/core-common\";\nimport { FeatureAppearance } from \"@itwin/core-common\";\nimport type {\n FeatureOverrideProvider,\n FeatureSymbology,\n IModelConnection,\n ScreenViewport,\n Viewport,\n} from \"@itwin/core-frontend\";\nimport { EmphasizeElements, IModelApp } from \"@itwin/core-frontend\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\nimport { UiFramework } from \"../UiFramework\";\n\n/** Supported Hide, Isolate, and Emphasize Actions. These also serve as FeatureTracking Ids.\n * @public\n */\nexport enum HideIsolateEmphasizeAction {\n EmphasizeSelectedElements = \"EmphasizeSelectedElements\",\n IsolateSelectedElements = \"IsolateSelectedElements\",\n IsolateSelectedCategories = \"IsolateSelectedCategories\",\n IsolateSelectedModels = \"IsolateSelectedModels\",\n HideSelectedElements = \"HideSelectedElements\",\n HideSelectedModels = \"HideSelectedModels\",\n HideSelectedCategories = \"HideSelectedCategories\",\n ClearHiddenIsolatedEmphasized = \"ClearHiddenIsolatedEmphasized\",\n ClearOverrideModels = \"ClearOverrideModels\",\n ClearOverrideCategories = \"ClearOverrideCategories\",\n}\n\nconst featureIdMap = new Map<HideIsolateEmphasizeAction, GuidString>([\n [\n HideIsolateEmphasizeAction.EmphasizeSelectedElements,\n \"d74eb93f-deae-4700-8da6-1013a8a7aa26\",\n ],\n [\n HideIsolateEmphasizeAction.IsolateSelectedElements,\n \"24327638-1611-45fa-a379-fa73329098ec\",\n ],\n [\n HideIsolateEmphasizeAction.IsolateSelectedCategories,\n \"e58081ab-2c33-4a15-924f-71082b58ca3b\",\n ],\n [\n HideIsolateEmphasizeAction.IsolateSelectedModels,\n \"3475921e-7dd1-4547-993e-a3e284ef8b62\",\n ],\n [\n HideIsolateEmphasizeAction.HideSelectedElements,\n \"2ca673ec-001a-4890-bc25-18bc88358fe0\",\n ],\n [\n HideIsolateEmphasizeAction.HideSelectedModels,\n \"8b41e859-ae17-4e19-b220-87a5cf9f8242\",\n ],\n [\n HideIsolateEmphasizeAction.HideSelectedCategories,\n \"c5d6916b-e8d7-4796-bae9-a5303712d46b\",\n ],\n [\n HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized,\n \"7b135c8a-3f3c-4297-b36c-b0ac51f1d8de\",\n ],\n [\n HideIsolateEmphasizeAction.ClearOverrideModels,\n \"6e519b94-edab-4b13-9ce7-0bcdfa27ccfe\",\n ],\n [\n HideIsolateEmphasizeAction.ClearOverrideCategories,\n \"9d2be3c6-6992-4c30-84eb-10f6b9379d06\",\n ],\n]);\n\n/** Selection Context Action Event Argument\n * @public\n */\nexport interface EmphasizeElementsChangedArgs {\n /** viewport where action was performed */\n readonly viewport: ScreenViewport;\n /** action being performed */\n readonly action: HideIsolateEmphasizeAction;\n}\n\n/** Overrides given models to provide emphasize functionality\n * @public\n */\n// istanbul ignore next\nclass ModelOverrideProvider implements FeatureOverrideProvider {\n constructor(\n public modelIds: string[],\n public defaultAppearance: FeatureAppearance\n ) {}\n\n public addFeatureOverrides(\n overrides: FeatureSymbology.Overrides,\n _viewport: Viewport\n ): void {\n overrides.setDefaultOverrides(this.defaultAppearance, true);\n // Override with nothing so that we keep the model looking normal and override the default appearance of everything else\n const appearance = FeatureAppearance.fromJSON({});\n this.modelIds.forEach((modelId: string) => {\n overrides.override({ modelId, appearance, onConflict: \"replace\" });\n });\n }\n}\n\n/** Overrides given categories to provide emphasize functionality\n * @public\n */\n// istanbul ignore next\nclass SubCategoryOverrideProvider implements FeatureOverrideProvider {\n constructor(\n public subCategoryIds: string[],\n public defaultAppearance: FeatureAppearance\n ) {}\n\n public addFeatureOverrides(\n overrides: FeatureSymbology.Overrides,\n _viewport: Viewport\n ): void {\n overrides.setDefaultOverrides(this.defaultAppearance, true);\n // Override with nothing so that we keep the category looking normal and override the default appearance of everything else\n const appearance = FeatureAppearance.fromJSON({});\n this.subCategoryIds.forEach((subCategoryId: string) => {\n overrides.override({ subCategoryId, appearance, onConflict: \"replace\" });\n });\n }\n}\n\n/**\n * Interface for class that handles Hide, Isolate, and Emphasize Actions\n * @public\n */\nexport abstract class HideIsolateEmphasizeActionHandler {\n public static emphasizeElementsChanged = new BeEvent<\n (args: EmphasizeElementsChangedArgs) => void\n >();\n\n /** String Id sent to allow UI to refresh its display state. */\n public static get hideIsolateEmphasizeUiSyncId() {\n return \"selection-context-emphasize-elements-changed\";\n }\n\n /**\n * Function run when `IsolateSelectedElementsModel` tool button is pressed\n */\n public abstract processIsolateSelectedElementsModel(): Promise<void>;\n /**\n * Function run when `IsolateSelectedElementsModel` tool button is pressed\n */\n\n public abstract processIsolateSelectedElementsCategory(): Promise<void>;\n\n /**\n * Function run when `HideSelectedElementsModel` tool button is pressed\n */\n public abstract processIsolateSelected(): Promise<void>;\n\n /**\n * Function run when `HideSelectedElementsModel` tool button is pressed\n */\n public abstract processHideSelectedElementsModel(): Promise<void>;\n\n /**\n * Function that is run when `HideSelectedElementsCategory` tool button is pressed\n */\n public abstract processHideSelectedElementsCategory(): Promise<void>;\n\n /**\n * Function that is run when `HideSelected` tool button is pressed\n */\n public abstract processHideSelected(): Promise<void>;\n\n /**\n * Function that is run when `EmphasizeSelected` tool button is pressed\n */\n public abstract processEmphasizeSelected(): Promise<void>;\n\n /**\n * Function that is run when `ClearEmphasize` tool button is pressed\n */\n public abstract processClearEmphasize(): Promise<void>;\n\n /**\n * Function that informs called if Hide, Isolate, or Emphasize of elements is active.\n */\n public abstract areFeatureOverridesActive(vp: Viewport): boolean;\n\n /**\n * Function run when `ClearOverrideCategories` tool button is pressed\n */\n public abstract processClearOverrideCategories(): Promise<void>;\n\n /**\n * Function run when `ClearOverrideModels` tool button is pressed\n */\n public abstract processClearOverrideModels(): Promise<void>;\n}\n\n/** Provides helper functions for doing commands on logical selection like categories and subjects.\n * @public\n */\n// istanbul ignore next\nexport class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {\n private static _overrideCategoryIds = new Map<Viewport, Set<string>>();\n private static _overrideModelIds = new Map<Viewport, Set<string>>();\n\n /** Returns true if there is only a category hilited. */\n private static categorySelected(vp: Viewport) {\n const subcategories = vp.iModel.hilited.subcategories;\n return subcategories.size === 1;\n }\n\n /** Returns true if only a model is hilited. */\n private static modelSelected(vp: Viewport) {\n const models = vp.iModel.hilited.models;\n return models.size === 1;\n }\n\n /**\n * Hide the hilited categories.\n * @param vp Viewport to affect\n */\n private static hideSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Set();\n vp.changeCategoryDisplay(ids, false);\n }\n\n /** Get sub categories that relate to the category Id */\n private static async _getSubCategories(\n iModelConnection: IModelConnection,\n categoryIds: string[]\n ) {\n const allSubcats: string[] = [];\n const request = iModelConnection.subcategories.load(categoryIds);\n if (request) await request.promise;\n\n for (const categoryId of categoryIds) {\n const subcats =\n iModelConnection.subcategories.getSubCategories(categoryId);\n if (subcats) allSubcats.push(...subcats);\n }\n return allSubcats;\n }\n\n /**\n * Emphasize hilited categories.\n * @param vp Viewport to affect\n */\n public static async emphasizeSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Array();\n if (ids.length === 0) return;\n\n const defaultAppearance =\n EmphasizeElements.getOrCreate(vp).createDefaultAppearance();\n EmphasizeElements.clear(vp);\n const subcats = await HideIsolateEmphasizeManager._getSubCategories(\n vp.iModel,\n ids\n );\n vp.addFeatureOverrideProvider(\n new SubCategoryOverrideProvider(subcats, defaultAppearance)\n );\n }\n\n /**\n * Hide the selected model\n * @param vp Viewport to affect\n */\n private static hideSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n vp.changeModelDisplay(ids, false);\n }\n\n /**\n * Isolate the selected model\n * @param vp Viewport to affect\n */\n private static emphasizeSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n const defaultAppearance =\n EmphasizeElements.getOrCreate(vp).createDefaultAppearance();\n EmphasizeElements.clear(vp);\n vp.addFeatureOverrideProvider(\n new ModelOverrideProvider(ids, defaultAppearance)\n );\n }\n\n /**\n * Isolate the selected elements\n * @param vp Viewport to affect\n */\n public static isolateSelected(vp: Viewport) {\n EmphasizeElements.getOrCreate(vp).isolateSelectedElements(vp, true, false); // Isolate selected elements\n }\n\n /**\n * Hide the selected elements\n * @param vp Viewport to affect\n */\n public static hideSelected(vp: Viewport) {\n EmphasizeElements.getOrCreate(vp).hideSelectedElements(vp, false, false); // Hide all selected elements\n }\n\n /**\n * Clear Hidden,Isolated, or Emphasized elements in specified view\n * @param vp Viewport to affect\n *\n */\n public static clearEmphasize(vp: Viewport | undefined) {\n if (vp) {\n EmphasizeElements.clear(vp);\n }\n }\n\n /**\n * Emphasize the selected elements from either presentation layer's logical selection or selected graphics\n * @param vp Viewport to affect\n * @param emphasisSilhouette defaults to true\n */\n public static async emphasizeSelected(\n vp: Viewport,\n emphasisSilhouette = true\n ) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n await HideIsolateEmphasizeManager.emphasizeSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n HideIsolateEmphasizeManager.emphasizeSelectedModel(vp);\n return;\n }\n\n const ee = EmphasizeElements.getOrCreate(vp);\n ee.wantEmphasis = emphasisSilhouette;\n\n ee.emphasizeSelectedElements(vp, undefined, true, false); // Emphasize elements by making all others grey/transparent\n vp.isFadeOutActive = true; // Enable flat alpha for greyed out elements…\n }\n\n /**\n * Isolate hilited models.\n * @param vp Viewport to affect\n */\n public static async isolateSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n await vp.replaceViewedModels(ids);\n }\n\n /**\n * Isolate hilited categories.\n * @param vp Viewport to affect\n */\n private static isolateSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Set();\n const categoriesToDrop: string[] = [];\n vp.view.categorySelector.categories.forEach((categoryId: string) => {\n if (!ids.has(categoryId)) categoriesToDrop.push(categoryId);\n });\n vp.changeCategoryDisplay(categoriesToDrop, false);\n vp.changeCategoryDisplay(ids, true);\n }\n\n private static async getSelectionSetElementModels(iModel: IModelConnection) {\n const props = await iModel.elements.getProps(iModel.selectionSet.elements);\n const modelIds = new Set<string>();\n for (const prop of props) if (prop.model) modelIds.add(prop.model);\n return modelIds;\n }\n\n private static async getSelectionSetElementCategories(\n iModel: IModelConnection\n ) {\n const props = (await iModel.elements.getProps(\n iModel.selectionSet.elements\n )) as GeometricElementProps[];\n const categoryIds = new Set<string>();\n for (const prop of props) if (prop.category) categoryIds.add(prop.category);\n return categoryIds;\n }\n\n /**\n * Isolate either based on Presentation selection, if defined, else the selected graphic elements\n * @param vp Viewport to affect\n */\n public static async isolateCommand(vp: Viewport) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n HideIsolateEmphasizeManager.isolateSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n await HideIsolateEmphasizeManager.isolateSelectedModel(vp);\n return;\n }\n }\n\n /**\n * Isolate model from selected elements\n * @param vp Viewport to affect\n */\n public static async isolateSelectedElementsModel(vp: Viewport) {\n const modelsToKeep = new Set(\n await HideIsolateEmphasizeManager.getSelectionSetElementModels(vp.iModel)\n );\n\n if (vp.view.isSpatialView()) {\n const modelsToTurnOff = [...vp.view.modelSelector.models].filter(\n (modelId: string) => !modelsToKeep.has(modelId)\n );\n this.updateModelOverride(vp, modelsToTurnOff);\n }\n\n await vp.replaceViewedModels(modelsToKeep);\n }\n\n /**\n * Isolate the selected category found in SelectionSet elements\n * @param vp Viewport to affect\n */\n public static async isolateSelectedElementsCategory(vp: Viewport) {\n const categoriesToKeep = new Set(\n await HideIsolateEmphasizeManager.getSelectionSetElementCategories(\n vp.iModel\n )\n );\n const categoriesToTurnOff = [...vp.view.categorySelector.categories].filter(\n (categoryId: string) => !categoriesToKeep.has(categoryId)\n );\n vp.changeCategoryDisplay(categoriesToTurnOff, false);\n vp.changeCategoryDisplay(categoriesToKeep, true);\n this.updateCategoryOverride(vp, categoriesToTurnOff);\n }\n\n /**\n * Hide either based on Presentation selection, if defined, else the selected graphic elements\n * @param vp Viewport to affect\n */\n public static async hideCommand(vp: Viewport) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n HideIsolateEmphasizeManager.hideSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n HideIsolateEmphasizeManager.hideSelectedModel(vp);\n return;\n }\n EmphasizeElements.getOrCreate(vp).hideSelectedElements(vp, false, false); // Hide selected elements\n }\n\n /**\n * Hide the models defined by the elements in the current SelectionSet\n * @param vp Viewport to affect\n */\n public static async hideSelectedElementsModel(vp: Viewport) {\n const modelIds =\n await HideIsolateEmphasizeManager.getSelectionSetElementModels(vp.iModel);\n vp.changeModelDisplay(modelIds, false);\n this.updateModelOverride(vp, [...modelIds]);\n }\n\n /**\n * Clear (restore) the previously hidden/isolated models hidden by hideSelectedElementsModel\n * @param vp Viewport to affect\n */\n public static clearOverrideModels(vp: Viewport) {\n const ids = this._overrideModelIds.get(vp);\n if (ids) {\n vp.changeModelDisplay([...ids], true);\n this.clearModelOverride(vp);\n }\n }\n\n /**\n * Determine if models are hidden by hideSelectedElementsModel or isolateSelectedElementsModel\n * @param vp Viewport to affect\n */\n public static isOverrideModels(vp: Viewport): boolean {\n const ids = this._overrideModelIds.get(vp);\n return ids ? [...ids].length > 0 : false;\n }\n\n /**\n * Determine if categories are hidden by hideSelectedElementsCategory or isolateSelectedElementsCategory\n * @param vp Viewport to affect\n */\n public static isOverrideCategories(vp: Viewport): boolean {\n const ids = this._overrideCategoryIds.get(vp);\n return ids ? [...ids].length > 0 : false;\n }\n\n /**\n * Hide the categories defined by the elements in the current SelectionSet\n * @param vp Viewport to affect\n */\n public static async hideSelectedElementsCategory(vp: Viewport) {\n const categoryIds =\n await HideIsolateEmphasizeManager.getSelectionSetElementCategories(\n vp.iModel\n );\n vp.changeCategoryDisplay(categoryIds, false);\n this.updateCategoryOverride(vp, [...categoryIds]);\n }\n\n /**\n * Clear (restore) the previously hidden categories hidden by hideSelectedElementsCategory\n * @param vp Viewport to affect\n */\n public static clearOverrideCategories(vp: Viewport) {\n const ids = this._overrideCategoryIds.get(vp);\n if (ids) {\n vp.changeCategoryDisplay([...ids], true);\n this.clearCategoryOverride(vp);\n }\n }\n\n /** Checks to see if any featureOverrideProviders are active */\n public areFeatureOverridesActive(vp: Viewport): boolean {\n // Check all the emphasize possibilities\n const emphasizeElementsProvider =\n vp.findFeatureOverrideProviderOfType<EmphasizeElements>(\n EmphasizeElements\n );\n if (\n undefined !== emphasizeElementsProvider &&\n emphasizeElementsProvider.isActive(vp)\n )\n return true;\n\n const modelOverrideProvider =\n vp.findFeatureOverrideProviderOfType<ModelOverrideProvider>(\n ModelOverrideProvider\n );\n if (\n undefined !== modelOverrideProvider &&\n modelOverrideProvider.modelIds.length > 0\n )\n return true;\n\n const subCategoryOverrideProvider =\n vp.findFeatureOverrideProviderOfType<SubCategoryOverrideProvider>(\n SubCategoryOverrideProvider\n );\n if (\n undefined !== subCategoryOverrideProvider &&\n subCategoryOverrideProvider.subCategoryIds.length > 0\n )\n return true;\n\n // Check hide/isolate possibilities\n if (HideIsolateEmphasizeManager.isOverrideCategories(vp)) return true;\n\n if (HideIsolateEmphasizeManager.isOverrideModels(vp)) return true;\n\n return false;\n }\n\n /**\n * Function that is run when `IsolateSelectedElementsModel` tool button is pressed\n */\n public async processIsolateSelectedElementsModel(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.isolateSelectedElementsModel(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedModels,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.IsolateSelectedModels,\n featureIdMap.get(HideIsolateEmphasizeAction.IsolateSelectedModels)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `IsolateSelectedElementsCategory` tool button is pressed\n */\n public async processIsolateSelectedElementsCategory(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.isolateSelectedElementsCategory(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedCategories,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.IsolateSelectedCategories,\n featureIdMap.get(HideIsolateEmphasizeAction.IsolateSelectedCategories)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `IsolateSelected` tool button is pressed\n */\n public async processIsolateSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.isolateSelected(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedElements,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.IsolateSelectedElements,\n featureIdMap.get(HideIsolateEmphasizeAction.IsolateSelectedElements)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `HideSelectedElementsModel` tool button is pressed\n */\n public async processHideSelectedElementsModel(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.hideSelectedElementsModel(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedModels,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.HideSelectedModels,\n featureIdMap.get(HideIsolateEmphasizeAction.HideSelectedModels)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `HideSelectedElementsCategory` tool button is pressed\n */\n public async processHideSelectedElementsCategory(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.hideSelectedElementsCategory(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedCategories,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.HideSelectedCategories,\n featureIdMap.get(HideIsolateEmphasizeAction.HideSelectedCategories)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `HideSelected` tool button is pressed\n */\n public async processHideSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n HideIsolateEmphasizeManager.hideSelected(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedElements,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.HideSelectedCategories,\n featureIdMap.get(HideIsolateEmphasizeAction.HideSelectedElements)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `EmphasizeSelected` tool button is pressed\n */\n public async processEmphasizeSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.emphasizeSelected(vp);\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.EmphasizeSelectedElements,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.EmphasizeSelectedElements,\n featureIdMap.get(HideIsolateEmphasizeAction.EmphasizeSelectedElements)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `ClearEmphasize` tool button is pressed\n */\n public async processClearEmphasize(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearEmphasize(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized,\n featureIdMap.get(HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `ClearOverrideModels` tool button is pressed\n */\n public async processClearOverrideModels(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearOverrideModels(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearOverrideModels,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.ClearOverrideModels,\n featureIdMap.get(HideIsolateEmphasizeAction.ClearOverrideModels)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `ClearOverrideCategories` tool button is pressed\n */\n public async processClearOverrideCategories(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearOverrideCategories(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearOverrideCategories,\n });\n void UiFramework.postTelemetry(\n HideIsolateEmphasizeAction.ClearOverrideCategories,\n featureIdMap.get(HideIsolateEmphasizeAction.ClearOverrideCategories)\n );\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Add category ids to the category override cache (hidden or isolated categories)\n */\n public static updateCategoryOverride(vp: Viewport, ids: string[]) {\n const prevIds = this._overrideCategoryIds.get(vp);\n const newIds = [...(prevIds || []), ...ids];\n this._overrideCategoryIds.set(vp, new Set(newIds));\n }\n\n /**\n * Add model ids to the model override cache (hidden or isolated models)\n */\n public static updateModelOverride(vp: Viewport, ids: string[]) {\n const prevIds = this._overrideModelIds.get(vp);\n const newIds = [...(prevIds || []), ...ids];\n this._overrideModelIds.set(vp, new Set(newIds));\n }\n\n /**\n * Return the list of category overrides (hidden or isolated categories)\n */\n public static getCategoryOverrides(vp: Viewport) {\n return this._overrideCategoryIds.get(vp);\n }\n\n /**\n * Return the list of model overrides (hidden or isolated models)\n */\n public static getModelOverrides(vp: Viewport) {\n return this._overrideModelIds.get(vp);\n }\n\n /**\n * Clear the category override cache (hidden or isolated categories)\n */\n private static clearCategoryOverride(vp: Viewport) {\n this._overrideCategoryIds.delete(vp);\n }\n\n /**\n * Clear the model override cache (hidden or isolated models)\n */\n private static clearModelOverride(vp: Viewport) {\n this._overrideModelIds.delete(vp);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"HideIsolateEmphasizeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/selection/HideIsolateEmphasizeManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Tools\n */\n\nimport { BeEvent } from \"@itwin/core-bentley\";\nimport type { GeometricElementProps } from \"@itwin/core-common\";\nimport { FeatureAppearance } from \"@itwin/core-common\";\nimport type {\n FeatureOverrideProvider,\n FeatureSymbology,\n IModelConnection,\n ScreenViewport,\n Viewport,\n} from \"@itwin/core-frontend\";\nimport { EmphasizeElements, IModelApp } from \"@itwin/core-frontend\";\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\n\n/** Supported Hide, Isolate, and Emphasize Actions. These also serve as FeatureTracking Ids.\n * @public\n */\nexport enum HideIsolateEmphasizeAction {\n EmphasizeSelectedElements = \"EmphasizeSelectedElements\",\n IsolateSelectedElements = \"IsolateSelectedElements\",\n IsolateSelectedCategories = \"IsolateSelectedCategories\",\n IsolateSelectedModels = \"IsolateSelectedModels\",\n HideSelectedElements = \"HideSelectedElements\",\n HideSelectedModels = \"HideSelectedModels\",\n HideSelectedCategories = \"HideSelectedCategories\",\n ClearHiddenIsolatedEmphasized = \"ClearHiddenIsolatedEmphasized\",\n ClearOverrideModels = \"ClearOverrideModels\",\n ClearOverrideCategories = \"ClearOverrideCategories\",\n}\n\n/** Selection Context Action Event Argument\n * @public\n */\nexport interface EmphasizeElementsChangedArgs {\n /** viewport where action was performed */\n readonly viewport: ScreenViewport;\n /** action being performed */\n readonly action: HideIsolateEmphasizeAction;\n}\n\n/** Overrides given models to provide emphasize functionality\n * @public\n */\n// istanbul ignore next\nclass ModelOverrideProvider implements FeatureOverrideProvider {\n constructor(\n public modelIds: string[],\n public defaultAppearance: FeatureAppearance\n ) {}\n\n public addFeatureOverrides(\n overrides: FeatureSymbology.Overrides,\n _viewport: Viewport\n ): void {\n overrides.setDefaultOverrides(this.defaultAppearance, true);\n // Override with nothing so that we keep the model looking normal and override the default appearance of everything else\n const appearance = FeatureAppearance.fromJSON({});\n this.modelIds.forEach((modelId: string) => {\n overrides.override({ modelId, appearance, onConflict: \"replace\" });\n });\n }\n}\n\n/** Overrides given categories to provide emphasize functionality\n * @public\n */\n// istanbul ignore next\nclass SubCategoryOverrideProvider implements FeatureOverrideProvider {\n constructor(\n public subCategoryIds: string[],\n public defaultAppearance: FeatureAppearance\n ) {}\n\n public addFeatureOverrides(\n overrides: FeatureSymbology.Overrides,\n _viewport: Viewport\n ): void {\n overrides.setDefaultOverrides(this.defaultAppearance, true);\n // Override with nothing so that we keep the category looking normal and override the default appearance of everything else\n const appearance = FeatureAppearance.fromJSON({});\n this.subCategoryIds.forEach((subCategoryId: string) => {\n overrides.override({ subCategoryId, appearance, onConflict: \"replace\" });\n });\n }\n}\n\n/**\n * Interface for class that handles Hide, Isolate, and Emphasize Actions\n * @public\n */\nexport abstract class HideIsolateEmphasizeActionHandler {\n public static emphasizeElementsChanged = new BeEvent<\n (args: EmphasizeElementsChangedArgs) => void\n >();\n\n /** String Id sent to allow UI to refresh its display state. */\n public static get hideIsolateEmphasizeUiSyncId() {\n return \"selection-context-emphasize-elements-changed\";\n }\n\n /**\n * Function run when `IsolateSelectedElementsModel` tool button is pressed\n */\n public abstract processIsolateSelectedElementsModel(): Promise<void>;\n /**\n * Function run when `IsolateSelectedElementsModel` tool button is pressed\n */\n\n public abstract processIsolateSelectedElementsCategory(): Promise<void>;\n\n /**\n * Function run when `HideSelectedElementsModel` tool button is pressed\n */\n public abstract processIsolateSelected(): Promise<void>;\n\n /**\n * Function run when `HideSelectedElementsModel` tool button is pressed\n */\n public abstract processHideSelectedElementsModel(): Promise<void>;\n\n /**\n * Function that is run when `HideSelectedElementsCategory` tool button is pressed\n */\n public abstract processHideSelectedElementsCategory(): Promise<void>;\n\n /**\n * Function that is run when `HideSelected` tool button is pressed\n */\n public abstract processHideSelected(): Promise<void>;\n\n /**\n * Function that is run when `EmphasizeSelected` tool button is pressed\n */\n public abstract processEmphasizeSelected(): Promise<void>;\n\n /**\n * Function that is run when `ClearEmphasize` tool button is pressed\n */\n public abstract processClearEmphasize(): Promise<void>;\n\n /**\n * Function that informs called if Hide, Isolate, or Emphasize of elements is active.\n */\n public abstract areFeatureOverridesActive(vp: Viewport): boolean;\n\n /**\n * Function run when `ClearOverrideCategories` tool button is pressed\n */\n public abstract processClearOverrideCategories(): Promise<void>;\n\n /**\n * Function run when `ClearOverrideModels` tool button is pressed\n */\n public abstract processClearOverrideModels(): Promise<void>;\n}\n\n/** Provides helper functions for doing commands on logical selection like categories and subjects.\n * @public\n */\n// istanbul ignore next\nexport class HideIsolateEmphasizeManager extends HideIsolateEmphasizeActionHandler {\n private static _overrideCategoryIds = new Map<Viewport, Set<string>>();\n private static _overrideModelIds = new Map<Viewport, Set<string>>();\n\n /** Returns true if there is only a category hilited. */\n private static categorySelected(vp: Viewport) {\n const subcategories = vp.iModel.hilited.subcategories;\n return subcategories.size === 1;\n }\n\n /** Returns true if only a model is hilited. */\n private static modelSelected(vp: Viewport) {\n const models = vp.iModel.hilited.models;\n return models.size === 1;\n }\n\n /**\n * Hide the hilited categories.\n * @param vp Viewport to affect\n */\n private static hideSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Set();\n vp.changeCategoryDisplay(ids, false);\n }\n\n /** Get sub categories that relate to the category Id */\n private static async _getSubCategories(\n iModelConnection: IModelConnection,\n categoryIds: string[]\n ) {\n const allSubcats: string[] = [];\n const request = iModelConnection.subcategories.load(categoryIds);\n if (request) await request.promise;\n\n for (const categoryId of categoryIds) {\n const subcats =\n iModelConnection.subcategories.getSubCategories(categoryId);\n if (subcats) allSubcats.push(...subcats);\n }\n return allSubcats;\n }\n\n /**\n * Emphasize hilited categories.\n * @param vp Viewport to affect\n */\n public static async emphasizeSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Array();\n if (ids.length === 0) return;\n\n const defaultAppearance =\n EmphasizeElements.getOrCreate(vp).createDefaultAppearance();\n EmphasizeElements.clear(vp);\n const subcats = await HideIsolateEmphasizeManager._getSubCategories(\n vp.iModel,\n ids\n );\n vp.addFeatureOverrideProvider(\n new SubCategoryOverrideProvider(subcats, defaultAppearance)\n );\n }\n\n /**\n * Hide the selected model\n * @param vp Viewport to affect\n */\n private static hideSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n vp.changeModelDisplay(ids, false);\n }\n\n /**\n * Isolate the selected model\n * @param vp Viewport to affect\n */\n private static emphasizeSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n const defaultAppearance =\n EmphasizeElements.getOrCreate(vp).createDefaultAppearance();\n EmphasizeElements.clear(vp);\n vp.addFeatureOverrideProvider(\n new ModelOverrideProvider(ids, defaultAppearance)\n );\n }\n\n /**\n * Isolate the selected elements\n * @param vp Viewport to affect\n */\n public static isolateSelected(vp: Viewport) {\n EmphasizeElements.getOrCreate(vp).isolateSelectedElements(vp, true, false); // Isolate selected elements\n }\n\n /**\n * Hide the selected elements\n * @param vp Viewport to affect\n */\n public static hideSelected(vp: Viewport) {\n EmphasizeElements.getOrCreate(vp).hideSelectedElements(vp, false, false); // Hide all selected elements\n }\n\n /**\n * Clear Hidden,Isolated, or Emphasized elements in specified view\n * @param vp Viewport to affect\n *\n */\n public static clearEmphasize(vp: Viewport | undefined) {\n if (vp) {\n EmphasizeElements.clear(vp);\n }\n }\n\n /**\n * Emphasize the selected elements from either presentation layer's logical selection or selected graphics\n * @param vp Viewport to affect\n * @param emphasisSilhouette defaults to true\n */\n public static async emphasizeSelected(\n vp: Viewport,\n emphasisSilhouette = true\n ) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n await HideIsolateEmphasizeManager.emphasizeSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n HideIsolateEmphasizeManager.emphasizeSelectedModel(vp);\n return;\n }\n\n const ee = EmphasizeElements.getOrCreate(vp);\n ee.wantEmphasis = emphasisSilhouette;\n\n ee.emphasizeSelectedElements(vp, undefined, true, false); // Emphasize elements by making all others grey/transparent\n vp.isFadeOutActive = true; // Enable flat alpha for greyed out elements…\n }\n\n /**\n * Isolate hilited models.\n * @param vp Viewport to affect\n */\n public static async isolateSelectedModel(vp: Viewport) {\n const ids = vp.iModel.hilited.models.toId64Array();\n if (ids.length === 0) return;\n\n await vp.replaceViewedModels(ids);\n }\n\n /**\n * Isolate hilited categories.\n * @param vp Viewport to affect\n */\n private static isolateSelectedCategory(vp: Viewport) {\n const ids = vp.iModel.hilited.subcategories.toId64Set();\n const categoriesToDrop: string[] = [];\n vp.view.categorySelector.categories.forEach((categoryId: string) => {\n if (!ids.has(categoryId)) categoriesToDrop.push(categoryId);\n });\n vp.changeCategoryDisplay(categoriesToDrop, false);\n vp.changeCategoryDisplay(ids, true);\n }\n\n private static async getSelectionSetElementModels(iModel: IModelConnection) {\n const props = await iModel.elements.getProps(iModel.selectionSet.elements);\n const modelIds = new Set<string>();\n for (const prop of props) if (prop.model) modelIds.add(prop.model);\n return modelIds;\n }\n\n private static async getSelectionSetElementCategories(\n iModel: IModelConnection\n ) {\n const props = (await iModel.elements.getProps(\n iModel.selectionSet.elements\n )) as GeometricElementProps[];\n const categoryIds = new Set<string>();\n for (const prop of props) if (prop.category) categoryIds.add(prop.category);\n return categoryIds;\n }\n\n /**\n * Isolate either based on Presentation selection, if defined, else the selected graphic elements\n * @param vp Viewport to affect\n */\n public static async isolateCommand(vp: Viewport) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n HideIsolateEmphasizeManager.isolateSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n await HideIsolateEmphasizeManager.isolateSelectedModel(vp);\n return;\n }\n }\n\n /**\n * Isolate model from selected elements\n * @param vp Viewport to affect\n */\n public static async isolateSelectedElementsModel(vp: Viewport) {\n const modelsToKeep = new Set(\n await HideIsolateEmphasizeManager.getSelectionSetElementModels(vp.iModel)\n );\n\n if (vp.view.isSpatialView()) {\n const modelsToTurnOff = [...vp.view.modelSelector.models].filter(\n (modelId: string) => !modelsToKeep.has(modelId)\n );\n this.updateModelOverride(vp, modelsToTurnOff);\n }\n\n await vp.replaceViewedModels(modelsToKeep);\n }\n\n /**\n * Isolate the selected category found in SelectionSet elements\n * @param vp Viewport to affect\n */\n public static async isolateSelectedElementsCategory(vp: Viewport) {\n const categoriesToKeep = new Set(\n await HideIsolateEmphasizeManager.getSelectionSetElementCategories(\n vp.iModel\n )\n );\n const categoriesToTurnOff = [...vp.view.categorySelector.categories].filter(\n (categoryId: string) => !categoriesToKeep.has(categoryId)\n );\n vp.changeCategoryDisplay(categoriesToTurnOff, false);\n vp.changeCategoryDisplay(categoriesToKeep, true);\n this.updateCategoryOverride(vp, categoriesToTurnOff);\n }\n\n /**\n * Hide either based on Presentation selection, if defined, else the selected graphic elements\n * @param vp Viewport to affect\n */\n public static async hideCommand(vp: Viewport) {\n if (HideIsolateEmphasizeManager.categorySelected(vp)) {\n HideIsolateEmphasizeManager.hideSelectedCategory(vp);\n return;\n } else if (HideIsolateEmphasizeManager.modelSelected(vp)) {\n HideIsolateEmphasizeManager.hideSelectedModel(vp);\n return;\n }\n EmphasizeElements.getOrCreate(vp).hideSelectedElements(vp, false, false); // Hide selected elements\n }\n\n /**\n * Hide the models defined by the elements in the current SelectionSet\n * @param vp Viewport to affect\n */\n public static async hideSelectedElementsModel(vp: Viewport) {\n const modelIds =\n await HideIsolateEmphasizeManager.getSelectionSetElementModels(vp.iModel);\n vp.changeModelDisplay(modelIds, false);\n this.updateModelOverride(vp, [...modelIds]);\n }\n\n /**\n * Clear (restore) the previously hidden/isolated models hidden by hideSelectedElementsModel\n * @param vp Viewport to affect\n */\n public static clearOverrideModels(vp: Viewport) {\n const ids = this._overrideModelIds.get(vp);\n if (ids) {\n vp.changeModelDisplay([...ids], true);\n this.clearModelOverride(vp);\n }\n }\n\n /**\n * Determine if models are hidden by hideSelectedElementsModel or isolateSelectedElementsModel\n * @param vp Viewport to affect\n */\n public static isOverrideModels(vp: Viewport): boolean {\n const ids = this._overrideModelIds.get(vp);\n return ids ? [...ids].length > 0 : false;\n }\n\n /**\n * Determine if categories are hidden by hideSelectedElementsCategory or isolateSelectedElementsCategory\n * @param vp Viewport to affect\n */\n public static isOverrideCategories(vp: Viewport): boolean {\n const ids = this._overrideCategoryIds.get(vp);\n return ids ? [...ids].length > 0 : false;\n }\n\n /**\n * Hide the categories defined by the elements in the current SelectionSet\n * @param vp Viewport to affect\n */\n public static async hideSelectedElementsCategory(vp: Viewport) {\n const categoryIds =\n await HideIsolateEmphasizeManager.getSelectionSetElementCategories(\n vp.iModel\n );\n vp.changeCategoryDisplay(categoryIds, false);\n this.updateCategoryOverride(vp, [...categoryIds]);\n }\n\n /**\n * Clear (restore) the previously hidden categories hidden by hideSelectedElementsCategory\n * @param vp Viewport to affect\n */\n public static clearOverrideCategories(vp: Viewport) {\n const ids = this._overrideCategoryIds.get(vp);\n if (ids) {\n vp.changeCategoryDisplay([...ids], true);\n this.clearCategoryOverride(vp);\n }\n }\n\n /** Checks to see if any featureOverrideProviders are active */\n public areFeatureOverridesActive(vp: Viewport): boolean {\n // Check all the emphasize possibilities\n const emphasizeElementsProvider =\n vp.findFeatureOverrideProviderOfType<EmphasizeElements>(\n EmphasizeElements\n );\n if (\n undefined !== emphasizeElementsProvider &&\n emphasizeElementsProvider.isActive(vp)\n )\n return true;\n\n const modelOverrideProvider =\n vp.findFeatureOverrideProviderOfType<ModelOverrideProvider>(\n ModelOverrideProvider\n );\n if (\n undefined !== modelOverrideProvider &&\n modelOverrideProvider.modelIds.length > 0\n )\n return true;\n\n const subCategoryOverrideProvider =\n vp.findFeatureOverrideProviderOfType<SubCategoryOverrideProvider>(\n SubCategoryOverrideProvider\n );\n if (\n undefined !== subCategoryOverrideProvider &&\n subCategoryOverrideProvider.subCategoryIds.length > 0\n )\n return true;\n\n // Check hide/isolate possibilities\n if (HideIsolateEmphasizeManager.isOverrideCategories(vp)) return true;\n\n if (HideIsolateEmphasizeManager.isOverrideModels(vp)) return true;\n\n return false;\n }\n\n /**\n * Function that is run when `IsolateSelectedElementsModel` tool button is pressed\n */\n public async processIsolateSelectedElementsModel(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.isolateSelectedElementsModel(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedModels,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `IsolateSelectedElementsCategory` tool button is pressed\n */\n public async processIsolateSelectedElementsCategory(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.isolateSelectedElementsCategory(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedCategories,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `IsolateSelected` tool button is pressed\n */\n public async processIsolateSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.isolateSelected(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.IsolateSelectedElements,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `HideSelectedElementsModel` tool button is pressed\n */\n public async processHideSelectedElementsModel(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.hideSelectedElementsModel(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedModels,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `HideSelectedElementsCategory` tool button is pressed\n */\n public async processHideSelectedElementsCategory(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.hideSelectedElementsCategory(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedCategories,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `HideSelected` tool button is pressed\n */\n public async processHideSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n HideIsolateEmphasizeManager.hideSelected(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.HideSelectedElements,\n });\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `EmphasizeSelected` tool button is pressed\n */\n public async processEmphasizeSelected(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n\n await HideIsolateEmphasizeManager.emphasizeSelected(vp);\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.EmphasizeSelectedElements,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n\n // clear out selection now that any callbacks have processed\n const selection = vp.view.iModel.selectionSet;\n if (selection.isActive) selection.emptyAll();\n }\n\n /**\n * Function that is run when `ClearEmphasize` tool button is pressed\n */\n public async processClearEmphasize(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearEmphasize(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearHiddenIsolatedEmphasized,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `ClearOverrideModels` tool button is pressed\n */\n public async processClearOverrideModels(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearOverrideModels(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearOverrideModels,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Function that is run when `ClearOverrideCategories` tool button is pressed\n */\n public async processClearOverrideCategories(): Promise<void> {\n const vp = IModelApp.viewManager.selectedView;\n if (!vp) return;\n HideIsolateEmphasizeManager.clearOverrideCategories(vp);\n\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.raiseEvent({\n viewport: vp,\n action: HideIsolateEmphasizeAction.ClearOverrideCategories,\n });\n\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n HideIsolateEmphasizeActionHandler.hideIsolateEmphasizeUiSyncId\n );\n }\n\n /**\n * Add category ids to the category override cache (hidden or isolated categories)\n */\n public static updateCategoryOverride(vp: Viewport, ids: string[]) {\n const prevIds = this._overrideCategoryIds.get(vp);\n const newIds = [...(prevIds || []), ...ids];\n this._overrideCategoryIds.set(vp, new Set(newIds));\n }\n\n /**\n * Add model ids to the model override cache (hidden or isolated models)\n */\n public static updateModelOverride(vp: Viewport, ids: string[]) {\n const prevIds = this._overrideModelIds.get(vp);\n const newIds = [...(prevIds || []), ...ids];\n this._overrideModelIds.set(vp, new Set(newIds));\n }\n\n /**\n * Return the list of category overrides (hidden or isolated categories)\n */\n public static getCategoryOverrides(vp: Viewport) {\n return this._overrideCategoryIds.get(vp);\n }\n\n /**\n * Return the list of model overrides (hidden or isolated models)\n */\n public static getModelOverrides(vp: Viewport) {\n return this._overrideModelIds.get(vp);\n }\n\n /**\n * Clear the category override cache (hidden or isolated categories)\n */\n private static clearCategoryOverride(vp: Viewport) {\n this._overrideCategoryIds.delete(vp);\n }\n\n /**\n * Clear the model override cache (hidden or isolated models)\n */\n private static clearModelOverride(vp: Viewport) {\n this._overrideModelIds.delete(vp);\n }\n}\n"]}
|
|
@@ -36,7 +36,8 @@ function getQuantityFormatsSettingsManagerEntry(itemPriority, opts) {
|
|
|
36
36
|
tabId: "uifw:Quantity",
|
|
37
37
|
label: UiFramework_1.UiFramework.translate("settings.quantity-formatting.label"),
|
|
38
38
|
subLabel: UiFramework_1.UiFramework.translate("settings.quantity-formatting.subLabel"),
|
|
39
|
-
page: (React.createElement(QuantityFormatSettingsPage, { initialQuantityType: initialQuantityType
|
|
39
|
+
page: (React.createElement(QuantityFormatSettingsPage, { initialQuantityType: initialQuantityType ?? core_frontend_1.QuantityType.Length, availableUnitSystems: availableUnitSystems ??
|
|
40
|
+
new Set(["metric", "imperial", "usCustomary", "usSurvey"]) })),
|
|
40
41
|
isDisabled: false,
|
|
41
42
|
icon: React.createElement(itwinui_icons_react_1.SvgMeasure, null),
|
|
42
43
|
tooltip: UiFramework_1.UiFramework.translate("settings.quantity-formatting.tooltip"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuantityFormat.js","sourceRoot":"","sources":["../../../../../src/appui-react/settings/quantityformatting/QuantityFormat.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 Settings\n */\n\nimport \"./QuantityFormat.scss\";\nimport * as React from \"react\";\nimport { DeepCompare } from \"@itwin/core-geometry\";\nimport type {\n QuantityFormatsChangedArgs,\n QuantityTypeArg,\n QuantityTypeKey,\n} from \"@itwin/core-frontend\";\nimport {\n getQuantityTypeKey,\n IModelApp,\n QuantityType,\n} from \"@itwin/core-frontend\";\nimport type {\n FormatProps,\n FormatterSpec,\n UnitSystemKey,\n} from \"@itwin/core-quantity\";\nimport { DialogButtonType } from \"@itwin/appui-abstract\";\nimport {\n FormatSample,\n QuantityFormatPanel,\n} from \"@itwin/imodel-components-react\";\nimport type { SettingsTabEntry } from \"@itwin/core-react\";\nimport {\n Dialog,\n Listbox,\n ListboxItem,\n useSaveBeforeActivatingNewSettingsTab,\n useSaveBeforeClosingSettingsContainer,\n} from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UnitSystemSelector } from \"./UnitSystemSelector\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { SvgMeasure } from \"@itwin/itwinui-icons-react\";\n\nfunction formatAreEqual(obj1: FormatProps, obj2: FormatProps) {\n const compare = new DeepCompare();\n return compare.compare(obj1, obj2);\n}\n\n/** Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport interface QuantityFormatterSettingsOptions {\n initialQuantityType: QuantityTypeArg;\n availableUnitSystems: Set<UnitSystemKey>;\n}\n\n/**\n * Return a SettingsTabEntry that can be used to define the available settings that can be set for an application.\n * @param itemPriority - Used to define the order of the entry in the Settings Stage\n * @param opts - Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport function getQuantityFormatsSettingsManagerEntry(\n itemPriority: number,\n opts?: Partial<QuantityFormatterSettingsOptions>\n): SettingsTabEntry {\n const { availableUnitSystems, initialQuantityType } = { ...opts };\n return {\n itemPriority,\n tabId: \"uifw:Quantity\",\n label: UiFramework.translate(\"settings.quantity-formatting.label\"),\n subLabel: UiFramework.translate(\"settings.quantity-formatting.subLabel\"),\n page: (\n <QuantityFormatSettingsPage\n initialQuantityType={initialQuantityType ?? QuantityType.Length}\n availableUnitSystems={\n availableUnitSystems ??\n new Set([\"metric\", \"imperial\", \"usCustomary\", \"usSurvey\"])\n }\n />\n ),\n isDisabled: false,\n icon: <SvgMeasure />,\n tooltip: UiFramework.translate(\"settings.quantity-formatting.tooltip\"),\n pageWillHandleCloseRequest: true,\n };\n}\n\n/** UI Component shown in settings page to set the active Presentation Unit System and to set format overrides.\n * @beta\n */\nexport function QuantityFormatSettingsPage({\n initialQuantityType,\n availableUnitSystems,\n}: QuantityFormatterSettingsOptions) {\n const [activeUnitSystemKey, setActiveUnitSystemKey] = React.useState(\n IModelApp.quantityFormatter.activeUnitSystem\n );\n const [activeQuantityType, setActiveQuantityType] = React.useState(\n getQuantityTypeKey(initialQuantityType)\n );\n const [activeFormatterSpec, setActiveFormatterSpec] = React.useState<\n FormatterSpec | undefined\n >(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n getQuantityTypeKey(activeQuantityType)\n )\n );\n const [saveEnabled, setSaveEnabled] = React.useState(false);\n const [clearEnabled, setClearEnabled] = React.useState(\n IModelApp.quantityFormatter.hasActiveOverride(initialQuantityType, true)\n );\n const newQuantityTypeRef = React.useRef<QuantityTypeKey>();\n const formatSectionLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.formatSectionLabel\")\n );\n const setButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.setButtonLabel\")\n );\n const clearButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.clearButtonLabel\")\n );\n\n React.useEffect(() => {\n const handleUnitSystemChanged = (): void => {\n // istanbul ignore else\n if (\n activeUnitSystemKey !== IModelApp.quantityFormatter.activeUnitSystem\n ) {\n setActiveUnitSystemKey(IModelApp.quantityFormatter.activeUnitSystem);\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n };\n\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(\n handleUnitSystemChanged\n );\n return () => {\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.removeListener(\n handleUnitSystemChanged\n );\n };\n }, [activeQuantityType, activeUnitSystemKey]);\n\n React.useEffect(() => {\n const handleFormatChanged = (args: QuantityFormatsChangedArgs): void => {\n if (!newQuantityTypeRef.current) {\n const quantityKey =\n IModelApp.quantityFormatter.getQuantityTypeKey(activeQuantityType);\n // istanbul ignore else\n if (args.quantityType === quantityKey) {\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n }\n newQuantityTypeRef.current = undefined;\n };\n IModelApp.quantityFormatter.onQuantityFormatsChanged.addListener(\n handleFormatChanged\n );\n return () => {\n IModelApp.quantityFormatter.onQuantityFormatsChanged.removeListener(\n handleFormatChanged\n );\n };\n }, [activeQuantityType]);\n\n const saveChanges = React.useCallback(\n (afterSaveFunction: (args: any) => void, args?: any) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={args}\n onDialogClose={afterSaveFunction}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n afterSaveFunction(args);\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n useSaveBeforeActivatingNewSettingsTab(\n UiFramework.settingsManager,\n saveChanges\n );\n useSaveBeforeClosingSettingsContainer(\n UiFramework.settingsManager,\n saveChanges\n );\n\n const processListboxValueChange = React.useCallback(\n (newQuantityType: QuantityTypeKey) => {\n const volumeFormatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n newQuantityType\n );\n setActiveFormatterSpec(volumeFormatterSpec);\n setActiveQuantityType(newQuantityType);\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(newQuantityType, true)\n );\n },\n []\n );\n\n const onListboxValueChange = React.useCallback(\n (newQuantityType: string) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n newQuantityTypeRef.current = newQuantityType;\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={newQuantityType}\n onDialogClose={processListboxValueChange}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n processListboxValueChange(newQuantityType);\n },\n [activeFormatterSpec, activeQuantityType, processListboxValueChange]\n );\n\n const handleOnFormatChanged = React.useCallback(\n async (formatProps: FormatProps) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const newSpec =\n await IModelApp.quantityFormatter.generateFormatterSpecByType(\n activeQuantityType,\n formatProps\n );\n const formatPropsInUse =\n IModelApp.quantityFormatter.getFormatPropsByQuantityType(\n activeQuantityType\n );\n // istanbul ignore else\n if (formatPropsInUse)\n setSaveEnabled(!formatAreEqual(formatProps, formatPropsInUse));\n setActiveFormatterSpec(newSpec);\n }\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n const handleOnFormatSave = React.useCallback(async () => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const format = activeFormatterSpec.format.toJSON();\n await IModelApp.quantityFormatter.setOverrideFormat(\n activeQuantityType,\n format\n );\n setClearEnabled(true);\n }\n }, [activeFormatterSpec, activeQuantityType]);\n\n const handleOnFormatReset = React.useCallback(async () => {\n await IModelApp.quantityFormatter.clearOverrideFormats(activeQuantityType);\n setClearEnabled(false);\n }, [activeQuantityType]);\n\n const processNewUnitSystem = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n await IModelApp.quantityFormatter.setActiveUnitSystem(unitSystem);\n },\n []\n );\n\n const handleUnitSystemSelected = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n if (unitSystem === activeUnitSystemKey) return;\n saveChanges(processNewUnitSystem, unitSystem);\n },\n [activeUnitSystemKey, processNewUnitSystem, saveChanges]\n );\n\n return (\n <div className=\"quantity-formatting-container\">\n <UnitSystemSelector\n selectedUnitSystemKey={activeUnitSystemKey}\n availableUnitSystems={availableUnitSystems}\n onUnitSystemSelected={handleUnitSystemSelected}\n />\n <span className=\"uifw-quantity-format-section-label\">\n {formatSectionLabel.current}\n </span>\n <div className=\"uifw-quantity-types-container\">\n <div className=\"left-panel\">\n <Listbox\n id=\"uifw-quantity-types-list\"\n className=\"uifw-quantity-types\"\n onListboxValueChange={onListboxValueChange}\n selectedValue={activeQuantityType}\n >\n {[...IModelApp.quantityFormatter.quantityTypesRegistry.keys()].map(\n (key) => {\n const entry =\n IModelApp.quantityFormatter.quantityTypesRegistry.get(key)!;\n const description = entry.description;\n const label = entry.label;\n return (\n <ListboxItem\n key={entry.key}\n className=\"quantity-type-list-entry\"\n value={entry.key}\n >\n <span\n className=\"map-source-list-entry-name\"\n title={description}\n >\n {label}\n </span>\n </ListboxItem>\n );\n }\n )}\n </Listbox>\n </div>\n <div className=\"right-panel\">\n {activeFormatterSpec && (\n <>\n <div className=\"uifw-quantity-types-right-top\">\n <div className=\"uifw-quantity-types-right-top-sample\">\n <FormatSample\n formatSpec={activeFormatterSpec}\n initialMagnitude={1234.56}\n hideLabels\n />\n </div>\n </div>\n <div className=\"uifw-quantity-types-formats\">\n <QuantityFormatPanel\n onFormatChange={handleOnFormatChanged}\n quantityType={activeQuantityType}\n />\n </div>\n <div className=\"components-button-panel\">\n <Button\n styleType=\"cta\"\n onClick={handleOnFormatSave}\n disabled={!saveEnabled}\n >\n {setButtonLabel.current}\n </Button>\n <Button\n styleType=\"default\"\n onClick={handleOnFormatReset}\n disabled={!clearEnabled}\n >\n {clearButtonLabel.current}\n </Button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SaveFormatModalDialog({\n formatProps,\n quantityType,\n onDialogCloseArgs,\n onDialogClose,\n}: {\n formatProps: FormatProps;\n quantityType: QuantityTypeKey;\n onDialogCloseArgs?: any;\n onDialogClose: (args?: any) => void;\n}) {\n const [isOpen, setIsOpen] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n UiFramework.dialogs.modal.close();\n onDialogClose && onDialogClose(onDialogCloseArgs);\n }, [onDialogClose, onDialogCloseArgs]);\n\n const handleOK = React.useCallback(() => {\n void IModelApp.quantityFormatter.setOverrideFormat(\n quantityType,\n formatProps\n );\n handleClose();\n }, [formatProps, handleClose, quantityType]);\n\n const handleCancel = React.useCallback(() => {\n handleClose();\n }, [handleClose]);\n\n return (\n <Dialog\n title={\"Save Format Changes\"}\n opened={isOpen}\n resizable={false}\n movable={false}\n modal={true}\n buttonCluster={[\n { type: DialogButtonType.Yes, onClick: handleOK },\n { type: DialogButtonType.No, onClick: handleCancel },\n ]}\n onEscape={handleCancel}\n onClose={handleCancel}\n onOutsideClick={handleCancel}\n minHeight={150}\n maxHeight={400}\n maxWidth={400}\n minWidth={200}\n >\n <div className=\"modal-dialog2\">\n Do you want to save changes to format before changing to another type?\n </div>\n </Dialog>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"QuantityFormat.js","sourceRoot":"","sources":["../../../../../src/appui-react/settings/quantityformatting/QuantityFormat.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 Settings\n */\n\nimport \"./QuantityFormat.scss\";\nimport * as React from \"react\";\nimport { DeepCompare } from \"@itwin/core-geometry\";\nimport type {\n QuantityFormatsChangedArgs,\n QuantityTypeArg,\n QuantityTypeKey,\n} from \"@itwin/core-frontend\";\nimport {\n getQuantityTypeKey,\n IModelApp,\n QuantityType,\n} from \"@itwin/core-frontend\";\nimport type {\n FormatProps,\n FormatterSpec,\n UnitSystemKey,\n} from \"@itwin/core-quantity\";\nimport { DialogButtonType } from \"@itwin/appui-abstract\";\nimport {\n FormatSample,\n QuantityFormatPanel,\n} from \"@itwin/imodel-components-react\";\nimport type { SettingsTabEntry } from \"@itwin/core-react\";\nimport {\n Dialog,\n Listbox,\n ListboxItem,\n useSaveBeforeActivatingNewSettingsTab,\n useSaveBeforeClosingSettingsContainer,\n} from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework\";\nimport { UnitSystemSelector } from \"./UnitSystemSelector\";\nimport { Button } from \"@itwin/itwinui-react\";\nimport { SvgMeasure } from \"@itwin/itwinui-icons-react\";\n\nfunction formatAreEqual(obj1: FormatProps, obj2: FormatProps) {\n const compare = new DeepCompare();\n return compare.compare(obj1, obj2);\n}\n\n/** Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport interface QuantityFormatterSettingsOptions {\n initialQuantityType: QuantityTypeArg;\n availableUnitSystems: Set<UnitSystemKey>;\n}\n\n/**\n * Return a SettingsTabEntry that can be used to define the available settings that can be set for an application.\n * @param itemPriority - Used to define the order of the entry in the Settings Stage\n * @param opts - Options to initialize the settings page that allows users to set Quantity formatting overrides.\n * @beta\n */\nexport function getQuantityFormatsSettingsManagerEntry(\n itemPriority: number,\n opts?: Partial<QuantityFormatterSettingsOptions>\n): SettingsTabEntry {\n const { availableUnitSystems, initialQuantityType } = { ...opts };\n return {\n itemPriority,\n tabId: \"uifw:Quantity\",\n label: UiFramework.translate(\"settings.quantity-formatting.label\"),\n subLabel: UiFramework.translate(\"settings.quantity-formatting.subLabel\"),\n page: (\n <QuantityFormatSettingsPage\n initialQuantityType={initialQuantityType ?? QuantityType.Length}\n availableUnitSystems={\n availableUnitSystems ??\n new Set([\"metric\", \"imperial\", \"usCustomary\", \"usSurvey\"])\n }\n />\n ),\n isDisabled: false,\n icon: <SvgMeasure />,\n tooltip: UiFramework.translate(\"settings.quantity-formatting.tooltip\"),\n pageWillHandleCloseRequest: true,\n };\n}\n\n/** UI Component shown in settings page to set the active Presentation Unit System and to set format overrides.\n * @beta\n */\nexport function QuantityFormatSettingsPage({\n initialQuantityType,\n availableUnitSystems,\n}: QuantityFormatterSettingsOptions) {\n const [activeUnitSystemKey, setActiveUnitSystemKey] = React.useState(\n IModelApp.quantityFormatter.activeUnitSystem\n );\n const [activeQuantityType, setActiveQuantityType] = React.useState(\n getQuantityTypeKey(initialQuantityType)\n );\n const [activeFormatterSpec, setActiveFormatterSpec] = React.useState<\n FormatterSpec | undefined\n >(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n getQuantityTypeKey(activeQuantityType)\n )\n );\n const [saveEnabled, setSaveEnabled] = React.useState(false);\n const [clearEnabled, setClearEnabled] = React.useState(\n IModelApp.quantityFormatter.hasActiveOverride(initialQuantityType, true)\n );\n const newQuantityTypeRef = React.useRef<QuantityTypeKey>();\n const formatSectionLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.formatSectionLabel\")\n );\n const setButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.setButtonLabel\")\n );\n const clearButtonLabel = React.useRef(\n UiFramework.translate(\"settings.quantity-formatting.clearButtonLabel\")\n );\n\n React.useEffect(() => {\n const handleUnitSystemChanged = (): void => {\n // istanbul ignore else\n if (\n activeUnitSystemKey !== IModelApp.quantityFormatter.activeUnitSystem\n ) {\n setActiveUnitSystemKey(IModelApp.quantityFormatter.activeUnitSystem);\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n };\n\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(\n handleUnitSystemChanged\n );\n return () => {\n IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.removeListener(\n handleUnitSystemChanged\n );\n };\n }, [activeQuantityType, activeUnitSystemKey]);\n\n React.useEffect(() => {\n const handleFormatChanged = (args: QuantityFormatsChangedArgs): void => {\n if (!newQuantityTypeRef.current) {\n const quantityKey =\n IModelApp.quantityFormatter.getQuantityTypeKey(activeQuantityType);\n // istanbul ignore else\n if (args.quantityType === quantityKey) {\n setActiveFormatterSpec(\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n activeQuantityType\n )\n );\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(\n activeQuantityType,\n true\n )\n );\n }\n }\n newQuantityTypeRef.current = undefined;\n };\n IModelApp.quantityFormatter.onQuantityFormatsChanged.addListener(\n handleFormatChanged\n );\n return () => {\n IModelApp.quantityFormatter.onQuantityFormatsChanged.removeListener(\n handleFormatChanged\n );\n };\n }, [activeQuantityType]);\n\n const saveChanges = React.useCallback(\n (afterSaveFunction: (args: any) => void, args?: any) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={args}\n onDialogClose={afterSaveFunction}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n afterSaveFunction(args);\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n useSaveBeforeActivatingNewSettingsTab(\n UiFramework.settingsManager,\n saveChanges\n );\n useSaveBeforeClosingSettingsContainer(\n UiFramework.settingsManager,\n saveChanges\n );\n\n const processListboxValueChange = React.useCallback(\n (newQuantityType: QuantityTypeKey) => {\n const volumeFormatterSpec =\n IModelApp.quantityFormatter.findFormatterSpecByQuantityType(\n newQuantityType\n );\n setActiveFormatterSpec(volumeFormatterSpec);\n setActiveQuantityType(newQuantityType);\n setSaveEnabled(false);\n setClearEnabled(\n IModelApp.quantityFormatter.hasActiveOverride(newQuantityType, true)\n );\n },\n []\n );\n\n const onListboxValueChange = React.useCallback(\n (newQuantityType: string) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const formatProps = activeFormatterSpec.format.toJSON();\n const formatPropsInUse = IModelApp.quantityFormatter\n .findFormatterSpecByQuantityType(activeQuantityType)!\n .format.toJSON();\n if (\n formatPropsInUse &&\n !formatAreEqual(formatProps, formatPropsInUse)\n ) {\n newQuantityTypeRef.current = newQuantityType;\n UiFramework.dialogs.modal.open(\n <SaveFormatModalDialog\n formatProps={formatProps}\n quantityType={activeQuantityType}\n onDialogCloseArgs={newQuantityType}\n onDialogClose={processListboxValueChange}\n />,\n \"saveQuantityFormat\"\n );\n return;\n }\n }\n processListboxValueChange(newQuantityType);\n },\n [activeFormatterSpec, activeQuantityType, processListboxValueChange]\n );\n\n const handleOnFormatChanged = React.useCallback(\n async (formatProps: FormatProps) => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const newSpec =\n await IModelApp.quantityFormatter.generateFormatterSpecByType(\n activeQuantityType,\n formatProps\n );\n const formatPropsInUse =\n IModelApp.quantityFormatter.getFormatPropsByQuantityType(\n activeQuantityType\n );\n // istanbul ignore else\n if (formatPropsInUse)\n setSaveEnabled(!formatAreEqual(formatProps, formatPropsInUse));\n setActiveFormatterSpec(newSpec);\n }\n },\n [activeFormatterSpec, activeQuantityType]\n );\n\n const handleOnFormatSave = React.useCallback(async () => {\n // istanbul ignore else\n if (activeFormatterSpec) {\n const format = activeFormatterSpec.format.toJSON();\n await IModelApp.quantityFormatter.setOverrideFormat(\n activeQuantityType,\n format\n );\n setClearEnabled(true);\n }\n }, [activeFormatterSpec, activeQuantityType]);\n\n const handleOnFormatReset = React.useCallback(async () => {\n await IModelApp.quantityFormatter.clearOverrideFormats(activeQuantityType);\n setClearEnabled(false);\n }, [activeQuantityType]);\n\n const processNewUnitSystem = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n await IModelApp.quantityFormatter.setActiveUnitSystem(unitSystem);\n },\n []\n );\n\n const handleUnitSystemSelected = React.useCallback(\n async (unitSystem: UnitSystemKey) => {\n if (unitSystem === activeUnitSystemKey) return;\n saveChanges(processNewUnitSystem, unitSystem);\n },\n [activeUnitSystemKey, processNewUnitSystem, saveChanges]\n );\n\n return (\n <div className=\"quantity-formatting-container\">\n <UnitSystemSelector\n selectedUnitSystemKey={activeUnitSystemKey}\n availableUnitSystems={availableUnitSystems}\n onUnitSystemSelected={handleUnitSystemSelected}\n />\n <span className=\"uifw-quantity-format-section-label\">\n {formatSectionLabel.current}\n </span>\n <div className=\"uifw-quantity-types-container\">\n <div className=\"left-panel\">\n <Listbox\n id=\"uifw-quantity-types-list\"\n className=\"uifw-quantity-types\"\n onListboxValueChange={onListboxValueChange}\n selectedValue={activeQuantityType}\n >\n {[...IModelApp.quantityFormatter.quantityTypesRegistry.keys()].map(\n (key) => {\n const entry =\n IModelApp.quantityFormatter.quantityTypesRegistry.get(key)!;\n const description = entry.description;\n const label = entry.label;\n return (\n <ListboxItem\n key={entry.key}\n className=\"quantity-type-list-entry\"\n value={entry.key}\n >\n <span\n className=\"map-source-list-entry-name\"\n title={description}\n >\n {label}\n </span>\n </ListboxItem>\n );\n }\n )}\n </Listbox>\n </div>\n <div className=\"right-panel\">\n {activeFormatterSpec && (\n <>\n <div className=\"uifw-quantity-types-right-top\">\n <div className=\"uifw-quantity-types-right-top-sample\">\n <FormatSample\n formatSpec={activeFormatterSpec}\n initialMagnitude={1234.56}\n hideLabels\n />\n </div>\n </div>\n <div className=\"uifw-quantity-types-formats\">\n <QuantityFormatPanel\n onFormatChange={handleOnFormatChanged}\n quantityType={activeQuantityType}\n />\n </div>\n <div className=\"components-button-panel\">\n <Button\n styleType=\"cta\"\n onClick={handleOnFormatSave}\n disabled={!saveEnabled}\n >\n {setButtonLabel.current}\n </Button>\n <Button\n styleType=\"default\"\n onClick={handleOnFormatReset}\n disabled={!clearEnabled}\n >\n {clearButtonLabel.current}\n </Button>\n </div>\n </>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nfunction SaveFormatModalDialog({\n formatProps,\n quantityType,\n onDialogCloseArgs,\n onDialogClose,\n}: {\n formatProps: FormatProps;\n quantityType: QuantityTypeKey;\n onDialogCloseArgs?: any;\n onDialogClose: (args?: any) => void;\n}) {\n const [isOpen, setIsOpen] = React.useState(true);\n\n const handleClose = React.useCallback(() => {\n setIsOpen(false);\n UiFramework.dialogs.modal.close();\n onDialogClose && onDialogClose(onDialogCloseArgs);\n }, [onDialogClose, onDialogCloseArgs]);\n\n const handleOK = React.useCallback(() => {\n void IModelApp.quantityFormatter.setOverrideFormat(\n quantityType,\n formatProps\n );\n handleClose();\n }, [formatProps, handleClose, quantityType]);\n\n const handleCancel = React.useCallback(() => {\n handleClose();\n }, [handleClose]);\n\n return (\n <Dialog\n title={\"Save Format Changes\"}\n opened={isOpen}\n resizable={false}\n movable={false}\n modal={true}\n buttonCluster={[\n { type: DialogButtonType.Yes, onClick: handleOK },\n { type: DialogButtonType.No, onClick: handleCancel },\n ]}\n onEscape={handleCancel}\n onClose={handleCancel}\n onOutsideClick={handleCancel}\n minHeight={150}\n maxHeight={400}\n maxWidth={400}\n minWidth={200}\n >\n <div className=\"modal-dialog2\">\n Do you want to save changes to format before changing to another type?\n </div>\n </Dialog>\n );\n}\n"]}
|