@itwin/appui-react 4.4.0 → 4.5.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 +18 -1
- package/lib/cjs/appui-react/UiFramework.js +4 -7
- package/lib/cjs/appui-react/UiFramework.js.map +1 -1
- 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.js +1 -1
- package/lib/cjs/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
- package/lib/cjs/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/TimeTracker.js +1 -2
- package/lib/cjs/appui-react/configurableui/TimeTracker.js.map +1 -1
- 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/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/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +17 -7
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts +2 -0
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.js +2 -0
- package/lib/cjs/appui-react/frontstage/InternalFrontstageManager.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/pickers/ViewSelector.js +5 -6
- package/lib/cjs/appui-react/pickers/ViewSelector.js.map +1 -1
- 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/SelectionContextItemDef.js +2 -2
- package/lib/cjs/appui-react/selection/SelectionContextItemDef.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/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/StatusBar.js +3 -5
- package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/Toolbar.d.ts +1 -1
- package/lib/cjs/appui-react/toolbar/Toolbar.d.ts.map +1 -1
- package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.d.ts +6 -3
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.d.ts.map +1 -1
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.js +53 -80
- package/lib/cjs/appui-react/toolbar/ToolbarHelper.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
- package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
- package/lib/cjs/appui-react/toolbar/ToolbarWithOverflow.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js +3 -4
- package/lib/cjs/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
- 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.js +43 -45
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/StatusBar.js +1 -1
- package/lib/cjs/appui-react/widget-panels/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Tab.js +1 -1
- package/lib/cjs/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js +21 -23
- package/lib/cjs/appui-react/widget-panels/ToolSettings.js.map +1 -1
- 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/widgets/NavigationWidgetComposer.js +2 -2
- package/lib/cjs/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetDef.js +1 -1
- 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.js +4 -7
- package/lib/esm/appui-react/UiFramework.js.map +1 -1
- 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.js +1 -1
- package/lib/esm/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js +1 -1
- package/lib/esm/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/esm/appui-react/configurableui/TimeTracker.js +1 -2
- package/lib/esm/appui-react/configurableui/TimeTracker.js.map +1 -1
- 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/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/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +17 -7
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts +2 -0
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.js +2 -0
- package/lib/esm/appui-react/frontstage/InternalFrontstageManager.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/pickers/ViewSelector.js +5 -6
- package/lib/esm/appui-react/pickers/ViewSelector.js.map +1 -1
- 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/SelectionContextItemDef.js +2 -2
- package/lib/esm/appui-react/selection/SelectionContextItemDef.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/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/StatusBar.js +3 -5
- package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/toolbar/Toolbar.d.ts +1 -1
- package/lib/esm/appui-react/toolbar/Toolbar.d.ts.map +1 -1
- package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
- package/lib/esm/appui-react/toolbar/ToolbarHelper.d.ts +6 -3
- package/lib/esm/appui-react/toolbar/ToolbarHelper.d.ts.map +1 -1
- package/lib/esm/appui-react/toolbar/ToolbarHelper.js +53 -80
- package/lib/esm/appui-react/toolbar/ToolbarHelper.js.map +1 -1
- package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.d.ts +1 -1
- package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.d.ts.map +1 -1
- package/lib/esm/appui-react/toolbar/ToolbarWithOverflow.js.map +1 -1
- package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js +3 -4
- package/lib/esm/appui-react/toolbar/useUiItemsProviderToolbarItems.js.map +1 -1
- 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.js +43 -45
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/StatusBar.js +1 -1
- package/lib/esm/appui-react/widget-panels/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Tab.js +1 -1
- package/lib/esm/appui-react/widget-panels/Tab.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/ToolSettings.js +21 -23
- package/lib/esm/appui-react/widget-panels/ToolSettings.js.map +1 -1
- 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/widgets/NavigationWidgetComposer.js +2 -2
- package/lib/esm/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetDef.js +1 -1
- 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/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModalSettingsStage.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/ModalSettingsStage.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,qCAAmC;AACnC,+BAA+B;AAC/B,0DAG+B;AAC/B,4EAAwE;AACxE,wDAK8B;AAC9B,sDAA6C;AAC7C,kDAAgE;AAKhE,gDAA6C;AAC7C,2EAAgE;AAChE,6CAA0C;AAC1C,gFAA6E;AAE7E,SAAS,kBAAkB,CAAC,EAC1B,oBAAoB,GAGrB
|
|
1
|
+
{"version":3,"file":"ModalSettingsStage.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/ModalSettingsStage.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport \"./ModalSettingsStage.scss\";\nimport * as React from \"react\";\nimport {\n ConditionalBooleanValue,\n IconSpecUtilities,\n} from \"@itwin/appui-abstract\";\nimport settingsIconSvg from \"@bentley/icons-generic/icons/settings.svg\";\nimport {\n IModelApp,\n NotifyMessageDetails,\n OutputMessagePriority,\n OutputMessageType,\n} from \"@itwin/core-frontend\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { Centered, SettingsContainer } from \"@itwin/core-react\";\nimport type {\n ModalFrontstageInfo,\n ModalFrontstageRequestedCloseEventArgs,\n} from \"../framework/FrameworkFrontstages\";\nimport { UiFramework } from \"../UiFramework\";\nimport { SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\nimport { StageUsage } from \"./StageUsage\";\nimport { BackstageItemUtilities } from \"../backstage/BackstageItemUtilities\";\n\nfunction ModalSettingsStage({\n initialSettingsTabId,\n}: {\n initialSettingsTabId?: string;\n}) {\n const id = UiFramework.frontstages.activeFrontstageDef?.id ?? \"none\";\n const stageUsage =\n UiFramework.frontstages.activeFrontstageDef?.usage ?? StageUsage.General;\n const tabEntries = UiFramework.settingsManager.getSettingEntries(\n id,\n stageUsage\n );\n const noSettingsAvailableLabel = React.useRef(\n UiFramework.translate(\"settings.noSettingsAvailable\")\n );\n\n const currentSettingsTab = React.useCallback(() => {\n const categoryToFind = initialSettingsTabId\n ? initialSettingsTabId.toLowerCase()\n : tabEntries[0].tabId.toLowerCase();\n let foundTab = tabEntries.find(\n (entry) => entry.tabId.toLowerCase() === categoryToFind\n );\n if (!foundTab)\n foundTab = tabEntries.find(\n (entry) => entry.label.toLowerCase() === categoryToFind\n );\n return foundTab;\n }, [initialSettingsTabId, tabEntries]);\n\n React.useEffect(() => {\n const handleFrontstageCloseRequested = ({\n modalFrontstage,\n stageCloseFunc,\n }: ModalFrontstageRequestedCloseEventArgs) => {\n // istanbul ignore else\n if (\n modalFrontstage instanceof SettingsModalFrontstage &&\n stageCloseFunc\n ) {\n UiFramework.settingsManager.closeSettingsContainer(stageCloseFunc);\n }\n };\n return UiFramework.frontstages.onCloseModalFrontstageRequestedEvent.addListener(\n handleFrontstageCloseRequested\n );\n }, [tabEntries]);\n\n return (\n <div className=\"uifw-settings-container\">\n {tabEntries.length ? (\n <SettingsContainer\n tabs={tabEntries}\n currentSettingsTab={currentSettingsTab()}\n settingsManager={UiFramework.settingsManager}\n />\n ) : (\n <Centered>{noSettingsAvailableLabel.current}</Centered>\n )}\n </div>\n );\n}\n\n/** Modal frontstage displaying and editing settings from registered settings providers. See [SettingsManager]($core-react)\n * and [SettingsContainer]($core-react).\n * @beta\n */\nexport class SettingsModalFrontstage implements ModalFrontstageInfo {\n public static id = \"appui-react.modalSettingsStage\";\n public title: string = UiFramework.translate(\"settings.settingsStageLabel\");\n constructor(public initialSettingsTabId?: string) {}\n public notifyCloseRequest = true;\n public get content(): React.ReactNode {\n return (\n <ModalSettingsStage initialSettingsTabId={this.initialSettingsTabId} />\n );\n }\n private static noSettingsAvailable = () =>\n new ConditionalBooleanValue(\n () => 0 === UiFramework.settingsManager.providers.length,\n [SyncUiEventId.SettingsProvidersChanged]\n );\n\n public static getBackstageActionItem(\n groupPriority: number,\n itemPriority: number\n ) {\n return BackstageItemUtilities.createActionItem(\n SettingsModalFrontstage.id,\n groupPriority,\n itemPriority,\n () =>\n UiFramework.frontstages.openModalFrontstage(\n new SettingsModalFrontstage()\n ),\n UiFramework.translate(\"settings.settingsStageLabel\"),\n undefined,\n IconSpecUtilities.createWebComponentIconSpec(settingsIconSvg),\n { isHidden: SettingsModalFrontstage.noSettingsAvailable() }\n );\n }\n\n public static showSettingsStage(initialSettingsTab?: string) {\n if (UiFramework.settingsManager.providers.length) {\n // Check to see if it is already open\n // istanbul ignore else\n if (\n UiFramework.frontstages.activeModalFrontstage &&\n UiFramework.frontstages.activeModalFrontstage instanceof\n SettingsModalFrontstage\n ) {\n if (initialSettingsTab) {\n UiFramework.settingsManager.activateSettingsTab(initialSettingsTab);\n return;\n }\n }\n UiFramework.frontstages.openModalFrontstage(\n new SettingsModalFrontstage(initialSettingsTab)\n );\n } else {\n const briefMessage = UiFramework.translate(\n \"settings.noSettingsAvailable\"\n );\n const detailedMessage = UiFramework.translate(\n \"settings.noSettingsProvidersRegistered\"\n );\n const info = new NotifyMessageDetails(\n OutputMessagePriority.Info,\n briefMessage,\n detailedMessage,\n OutputMessageType.Toast\n );\n IModelApp.notifications.outputMessage(info);\n Logger.logInfo(UiFramework.loggerCategory(this), detailedMessage);\n }\n }\n}\n"]}
|
|
@@ -29,13 +29,12 @@ class StandardFrontstageProvider extends FrontstageProvider_1.FrontstageProvider
|
|
|
29
29
|
return this.props.id;
|
|
30
30
|
}
|
|
31
31
|
frontstageConfig() {
|
|
32
|
-
var _a;
|
|
33
32
|
const contentGroup = this.props.contentGroupProps instanceof ContentGroup_1.ContentGroupProvider
|
|
34
33
|
? this.props.contentGroupProps
|
|
35
34
|
: new ContentGroup_1.ContentGroup(this.props.contentGroupProps);
|
|
36
35
|
return {
|
|
37
36
|
id: this.props.id,
|
|
38
|
-
version:
|
|
37
|
+
version: this.props.version ?? 1.0,
|
|
39
38
|
contentGroup,
|
|
40
39
|
usage: this.props.usage,
|
|
41
40
|
defaultTool: this.props.defaultTool,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StandardFrontstageProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/StandardFrontstageProvider.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAE/B,0DAA6E;AAC7E,6DAA0D;AAC1D,oFAAiF;AACjF,8EAA2E;AAC3E,gEAA+D;AAI/D,sEAAmE;AA4DnE;;;;GAIG;AACH,MAAa,0BAA2B,SAAQ,uCAAkB;IAChE,YAAoB,KAA8B;QAChD,KAAK,EAAE,CAAC;QADU,UAAK,GAAL,KAAK,CAAyB;IAElD,CAAC;IAED,IAAoB,EAAE;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvB,CAAC;IAEe,gBAAgB
|
|
1
|
+
{"version":3,"file":"StandardFrontstageProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/StandardFrontstageProvider.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAE/B,0DAA6E;AAC7E,6DAA0D;AAC1D,oFAAiF;AACjF,8EAA2E;AAC3E,gEAA+D;AAI/D,sEAAmE;AA4DnE;;;;GAIG;AACH,MAAa,0BAA2B,SAAQ,uCAAkB;IAChE,YAAoB,KAA8B;QAChD,KAAK,EAAE,CAAC;QADU,UAAK,GAAL,KAAK,CAAyB;IAElD,CAAC;IAED,IAAoB,EAAE;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IACvB,CAAC;IAEe,gBAAgB;QAC9B,MAAM,YAAY,GAChB,IAAI,CAAC,KAAK,CAAC,iBAAiB,YAAY,mCAAoB;YAC1D,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;YAC9B,CAAC,CAAC,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrD,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACjB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG;YAClC,YAAY;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACvB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;YACnC,mBAAmB,EAAE;gBACnB,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,2BAA2B;gBAC/C,OAAO,EAAE,CACP,oBAAC,qDAAyB,IAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,GAAI,CACrE;aACF;YACD,cAAc,EAAE;gBACd,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,sBAAsB;gBAC1C,OAAO,EAAE,CACP,oBAAC,+CAAsB,IACrB,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAC/C,CACH;aACF;YACD,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBACvC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC;oBACE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,eAAe;iBACpC;YACL,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACjC,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC;oBACE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,YAAY;oBAChC,OAAO,EAAE,oBAAC,qCAAiB,IAAC,KAAK,EAAE,EAAE,GAAI;iBAC1C;YACL,SAAS,EAAE;gBACT,IAAI,EAAE,GAAG;gBACT,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,+BAAe,CAAC,SAAS;gBACvC,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc;aAC7B;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,+BAAe,CAAC,SAAS;gBACvC,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa;aAC5B;YACD,UAAU,EAAE;gBACV,YAAY,EAAE,+BAAe,CAAC,IAAI;gBAClC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe;aAC9B;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,GAAG;gBACT,YAAY,EAAE,+BAAe,CAAC,IAAI;gBAClC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;aAC/B;SACF,CAAC;IACJ,CAAC;CACF;AApED,gEAoEC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Frontstage\n */\n\nimport * as React from \"react\";\nimport type { ContentGroupProps } from \"../content/ContentGroup\";\nimport { ContentGroup, ContentGroupProvider } from \"../content/ContentGroup\";\nimport { FrontstageProvider } from \"./FrontstageProvider\";\nimport { ContentToolWidgetComposer } from \"../widgets/ContentToolWidgetComposer\";\nimport { ViewToolWidgetComposer } from \"../widgets/ViewToolWidgetComposer\";\nimport { StagePanelState } from \"../stagepanels/StagePanelDef\";\nimport type { FrontstageConfig } from \"./FrontstageConfig\";\nimport type { StagePanelConfig } from \"../stagepanels/StagePanelConfig\";\nimport type { StageUsage } from \"./StageUsage\";\nimport { StatusBarComposer } from \"../statusbar/StatusBarComposer\";\n\n/** Properties of a [[WidgetPanelProps]] component\n * @public\n */\nexport type WidgetPanelProps = Omit<\n StagePanelConfig,\n \"widgets\" | \"runtimeProps\" | \"header\" | \"allowedZones\" | \"panelZones\"\n>;\n\n/**\n * Props for [[StandardFrontstageProvider]]\n * @public\n */\nexport interface StandardFrontstageProps {\n /* unique stage id. To ensure uniqueness it is common practice to format id like `appName:stageId` */\n id: string;\n /* version id that is used to store state of stage */\n version?: number;\n // Usage of stage. To allow generic UiItemProvides to populate this stage set to `StageUsage.General`.\n usage: StageUsage | string;\n /** The defaultTool is is started when then frontstage loads and whenever any other tools exit.\n * Most of the time, this is the Element Selection Tool (SelectionTool.toolId).\n * Your app can specify its own tool or another core tool as default with this property.\n */\n defaultTool?: string;\n /** Definition of available content groups or a function that provides them */\n contentGroupProps: ContentGroupProps | ContentGroupProvider;\n /** Specify button to use to open backstage. Leave undefined for no backstage button.\n * ```\n * <BackstageAppButton icon={<SvgBentleySystems />} />\n * ```\n * Custom corner button definition\n * ```\n * const cornerButton = <BackstageAppButton icon={<SvgBentleySystems />}\n * label=\"Toggle Backstage display\",\n * execute={() => UiFramework.backstage.getBackstageToggleCommand().execute()} />;\n * ```\n */\n cornerButton?: React.ReactNode;\n /** Set to true if default Navigation aid is not desired */\n hideNavigationAid?: boolean;\n /** Set to true if no tool setting dock is needed. Typically only used in modal stages. */\n hideToolSettings?: boolean;\n /** Set to true if no status bar is needed in stage */\n hideStatusBar?: boolean;\n /** Props used to set initial size and state of panel. Defaults to:\n * {size: 300, pinned=false, defaultState:StagePanelState.Minimized} */\n leftPanelProps?: WidgetPanelProps;\n /** Props used to set initial size and state of panel. Defaults to:\n * {size: 90, pinned=false, defaultState:StagePanelState.Minimized} */\n topPanelProps?: WidgetPanelProps;\n /** Props used to set initial size and state of panel. Defaults to:\n * {size: 200, pinned=true, defaultState:StagePanelState.Open} */\n rightPanelProps?: WidgetPanelProps;\n /** Props used to set initial size and state of panel. Defaults to:\n * {size: 180, pinned=true, defaultState:StagePanelState.Open} */\n bottomPanelProps?: WidgetPanelProps;\n}\n\n/**\n * FrontstageProvider that provides an \"empty\" stage. All tool buttons, statusbar items, and widgets must\n * be provided by one or more item providers, see [[UiItemsProvider]].\n * @public\n */\nexport class StandardFrontstageProvider extends FrontstageProvider {\n constructor(private props: StandardFrontstageProps) {\n super();\n }\n\n public override get id(): string {\n return this.props.id;\n }\n\n public override frontstageConfig(): FrontstageConfig {\n const contentGroup =\n this.props.contentGroupProps instanceof ContentGroupProvider\n ? this.props.contentGroupProps\n : new ContentGroup(this.props.contentGroupProps);\n return {\n id: this.props.id,\n version: this.props.version ?? 1.0,\n contentGroup,\n usage: this.props.usage,\n defaultTool: this.props.defaultTool,\n contentManipulation: {\n id: `${this.props.id}-contentManipulationTools`,\n content: (\n <ContentToolWidgetComposer cornerButton={this.props.cornerButton} />\n ),\n },\n viewNavigation: {\n id: `${this.props.id}-viewNavigationTools`,\n content: (\n <ViewToolWidgetComposer\n hideNavigationAid={this.props.hideNavigationAid}\n />\n ),\n },\n toolSettings: this.props.hideToolSettings\n ? undefined\n : {\n id: `${this.props.id}-toolSettings`,\n },\n statusBar: this.props.hideStatusBar\n ? undefined\n : {\n id: `${this.props.id}-statusBar`,\n content: <StatusBarComposer items={[]} />,\n },\n leftPanel: {\n size: 300,\n pinned: false,\n defaultState: StagePanelState.Minimized,\n ...this.props.leftPanelProps,\n },\n topPanel: {\n size: 90,\n pinned: false,\n defaultState: StagePanelState.Minimized,\n ...this.props.topPanelProps,\n },\n rightPanel: {\n defaultState: StagePanelState.Open,\n ...this.props.rightPanelProps,\n },\n bottomPanel: {\n size: 180,\n defaultState: StagePanelState.Open,\n ...this.props.bottomPanelProps,\n },\n };\n }\n}\n"]}
|
|
@@ -13,29 +13,25 @@ const AnalysisAnimationProvider_1 = require("../timeline/AnalysisAnimationProvid
|
|
|
13
13
|
/** @internal */
|
|
14
14
|
// istanbul ignore next
|
|
15
15
|
function useSupportsAnalysisAnimation(viewport) {
|
|
16
|
-
|
|
17
|
-
const [supportsAnalysisAnimation, setSupportsAnalysisAnimation] = React.useState(!!((_a = viewport === null || viewport === void 0 ? void 0 : viewport.view) === null || _a === void 0 ? void 0 : _a.analysisStyle));
|
|
16
|
+
const [supportsAnalysisAnimation, setSupportsAnalysisAnimation] = React.useState(!!viewport?.view?.analysisStyle);
|
|
18
17
|
React.useEffect(() => {
|
|
19
|
-
|
|
20
|
-
setSupportsAnalysisAnimation(!!((_a = viewport === null || viewport === void 0 ? void 0 : viewport.view) === null || _a === void 0 ? void 0 : _a.analysisStyle));
|
|
18
|
+
setSupportsAnalysisAnimation(!!viewport?.view?.analysisStyle);
|
|
21
19
|
}, [viewport]);
|
|
22
20
|
React.useEffect(() => {
|
|
23
21
|
const handleViewChanged = (vp) => {
|
|
24
|
-
|
|
25
|
-
const hasAnalysisData = !!((_a = vp === null || vp === void 0 ? void 0 : vp.view) === null || _a === void 0 ? void 0 : _a.analysisStyle);
|
|
22
|
+
const hasAnalysisData = !!vp?.view?.analysisStyle;
|
|
26
23
|
if (hasAnalysisData !== supportsAnalysisAnimation)
|
|
27
24
|
setSupportsAnalysisAnimation(hasAnalysisData);
|
|
28
25
|
};
|
|
29
|
-
return viewport
|
|
26
|
+
return viewport?.onChangeView.addListener(handleViewChanged);
|
|
30
27
|
}, [supportsAnalysisAnimation, viewport]);
|
|
31
28
|
React.useEffect(() => {
|
|
32
29
|
const handleDisplayStyleChange = (vp) => {
|
|
33
|
-
|
|
34
|
-
const hasAnalysisData = !!((_a = vp === null || vp === void 0 ? void 0 : vp.view) === null || _a === void 0 ? void 0 : _a.analysisStyle);
|
|
30
|
+
const hasAnalysisData = !!vp?.view?.analysisStyle;
|
|
35
31
|
if (hasAnalysisData !== supportsAnalysisAnimation)
|
|
36
32
|
setSupportsAnalysisAnimation(hasAnalysisData);
|
|
37
33
|
};
|
|
38
|
-
return viewport
|
|
34
|
+
return viewport?.onDisplayStyleChanged.addListener(handleDisplayStyleChange);
|
|
39
35
|
}, [viewport, supportsAnalysisAnimation]);
|
|
40
36
|
return supportsAnalysisAnimation;
|
|
41
37
|
}
|
|
@@ -56,7 +52,7 @@ function useAnalysisAnimationDataProvider(viewport) {
|
|
|
56
52
|
React.useEffect(() => {
|
|
57
53
|
async function fetchNewDataProvider(vp) {
|
|
58
54
|
let newProvider = new AnalysisAnimationProvider_1.AnalysisAnimationTimelineDataProvider(vp.view, vp);
|
|
59
|
-
if (newProvider
|
|
55
|
+
if (newProvider?.supportsTimelineAnimation) {
|
|
60
56
|
const dataLoaded = await newProvider.loadTimelineData();
|
|
61
57
|
if (!dataLoaded)
|
|
62
58
|
newProvider = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnalysisAnimationDataProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useAnalysisAnimationDataProvider.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,qFAA8F;AAG9F,gBAAgB;AAChB,uBAAuB;AACvB,SAAS,4BAA4B,CAAC,QAA8B
|
|
1
|
+
{"version":3,"file":"useAnalysisAnimationDataProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useAnalysisAnimationDataProvider.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 Hooks\n */\n\nimport * as React from \"react\";\nimport { AnalysisAnimationTimelineDataProvider } from \"../timeline/AnalysisAnimationProvider\";\nimport type { ScreenViewport, Viewport } from \"@itwin/core-frontend\";\n\n/** @internal */\n// istanbul ignore next\nfunction useSupportsAnalysisAnimation(viewport: Viewport | undefined) {\n const [supportsAnalysisAnimation, setSupportsAnalysisAnimation] =\n React.useState(!!viewport?.view?.analysisStyle);\n\n React.useEffect(() => {\n setSupportsAnalysisAnimation(!!viewport?.view?.analysisStyle);\n }, [viewport]);\n\n React.useEffect(() => {\n const handleViewChanged = (vp: Viewport): void => {\n const hasAnalysisData = !!vp?.view?.analysisStyle;\n if (hasAnalysisData !== supportsAnalysisAnimation)\n setSupportsAnalysisAnimation(hasAnalysisData);\n };\n return viewport?.onChangeView.addListener(handleViewChanged);\n }, [supportsAnalysisAnimation, viewport]);\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport): void => {\n const hasAnalysisData = !!vp?.view?.analysisStyle;\n if (hasAnalysisData !== supportsAnalysisAnimation)\n setSupportsAnalysisAnimation(hasAnalysisData);\n };\n return viewport?.onDisplayStyleChanged.addListener(\n handleDisplayStyleChange\n );\n }, [viewport, supportsAnalysisAnimation]);\n return supportsAnalysisAnimation;\n}\n\n/** Hook that returns either a AnalysisAnimationTimelineDataProvider or undefined based on if the supplied viewport contains analysis data.\n * @public\n **/\n// istanbul ignore next\nexport function useAnalysisAnimationDataProvider(\n viewport: ScreenViewport | undefined\n) {\n const supportsAnalysisAnimation = useSupportsAnalysisAnimation(viewport);\n const [\n analysisAnimationTimelineDataProvider,\n setAnalysisAnimationTimelineDataProvider,\n ] = React.useState<AnalysisAnimationTimelineDataProvider | undefined>();\n const isMountedRef = React.useRef(false);\n\n React.useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n React.useEffect(() => {\n async function fetchNewDataProvider(vp: ScreenViewport) {\n let newProvider: AnalysisAnimationTimelineDataProvider | undefined =\n new AnalysisAnimationTimelineDataProvider(vp.view, vp);\n if (newProvider?.supportsTimelineAnimation) {\n const dataLoaded = await newProvider.loadTimelineData();\n if (!dataLoaded) newProvider = undefined;\n }\n isMountedRef.current &&\n setAnalysisAnimationTimelineDataProvider(newProvider);\n }\n if (supportsAnalysisAnimation && viewport)\n void fetchNewDataProvider(viewport);\n else\n isMountedRef.current &&\n setAnalysisAnimationTimelineDataProvider(undefined);\n }, [supportsAnalysisAnimation, viewport]);\n\n return analysisAnimationTimelineDataProvider;\n}\n"]}
|
|
@@ -13,29 +13,25 @@ const ScheduleAnimationProvider_1 = require("../timeline/ScheduleAnimationProvid
|
|
|
13
13
|
/** @internal */
|
|
14
14
|
// istanbul ignore next
|
|
15
15
|
function useSupportsScheduleScript(viewport) {
|
|
16
|
-
|
|
17
|
-
const [supportsScheduleScript, setSupportsScheduleScript] = React.useState(!!((_a = viewport === null || viewport === void 0 ? void 0 : viewport.view) === null || _a === void 0 ? void 0 : _a.scheduleScript));
|
|
16
|
+
const [supportsScheduleScript, setSupportsScheduleScript] = React.useState(!!viewport?.view?.scheduleScript);
|
|
18
17
|
React.useEffect(() => {
|
|
19
|
-
|
|
20
|
-
setSupportsScheduleScript(!!((_a = viewport === null || viewport === void 0 ? void 0 : viewport.view) === null || _a === void 0 ? void 0 : _a.scheduleScript));
|
|
18
|
+
setSupportsScheduleScript(!!viewport?.view?.scheduleScript);
|
|
21
19
|
}, [viewport]);
|
|
22
20
|
React.useEffect(() => {
|
|
23
21
|
const handleViewChanged = (vp) => {
|
|
24
|
-
|
|
25
|
-
const hasScheduleScript = !!((_a = vp === null || vp === void 0 ? void 0 : vp.view) === null || _a === void 0 ? void 0 : _a.scheduleScript);
|
|
22
|
+
const hasScheduleScript = !!vp?.view?.scheduleScript;
|
|
26
23
|
if (hasScheduleScript !== supportsScheduleScript)
|
|
27
24
|
setSupportsScheduleScript(hasScheduleScript);
|
|
28
25
|
};
|
|
29
|
-
return viewport
|
|
26
|
+
return viewport?.onChangeView.addListener(handleViewChanged);
|
|
30
27
|
}, [supportsScheduleScript, viewport]);
|
|
31
28
|
React.useEffect(() => {
|
|
32
29
|
const handleDisplayStyleChange = (vp) => {
|
|
33
|
-
|
|
34
|
-
const hasScheduleScript = !!((_a = vp === null || vp === void 0 ? void 0 : vp.view) === null || _a === void 0 ? void 0 : _a.scheduleScript);
|
|
30
|
+
const hasScheduleScript = !!vp?.view?.scheduleScript;
|
|
35
31
|
if (hasScheduleScript !== supportsScheduleScript)
|
|
36
32
|
setSupportsScheduleScript(hasScheduleScript);
|
|
37
33
|
};
|
|
38
|
-
return viewport
|
|
34
|
+
return viewport?.onDisplayStyleChanged.addListener(handleDisplayStyleChange);
|
|
39
35
|
}, [viewport, supportsScheduleScript]);
|
|
40
36
|
return supportsScheduleScript;
|
|
41
37
|
}
|
|
@@ -56,7 +52,7 @@ function useScheduleAnimationDataProvider(viewport) {
|
|
|
56
52
|
React.useEffect(() => {
|
|
57
53
|
async function fetchNewDataProvider(vp) {
|
|
58
54
|
let newProvider = new ScheduleAnimationProvider_1.ScheduleAnimationTimelineDataProvider(vp.view, vp);
|
|
59
|
-
if (newProvider
|
|
55
|
+
if (newProvider?.supportsTimelineAnimation) {
|
|
60
56
|
const dataLoaded = await newProvider.loadTimelineData();
|
|
61
57
|
if (!dataLoaded)
|
|
62
58
|
newProvider = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScheduleAnimationDataProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useScheduleAnimationDataProvider.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAC/B,qFAA8F;AAG9F,gBAAgB;AAChB,uBAAuB;AACvB,SAAS,yBAAyB,CAAC,QAA8B
|
|
1
|
+
{"version":3,"file":"useScheduleAnimationDataProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useScheduleAnimationDataProvider.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 Hooks\n */\n\nimport * as React from \"react\";\nimport { ScheduleAnimationTimelineDataProvider } from \"../timeline/ScheduleAnimationProvider\";\nimport type { ScreenViewport, Viewport } from \"@itwin/core-frontend\";\n\n/** @internal */\n// istanbul ignore next\nfunction useSupportsScheduleScript(viewport: Viewport | undefined) {\n const [supportsScheduleScript, setSupportsScheduleScript] = React.useState(\n !!viewport?.view?.scheduleScript\n );\n\n React.useEffect(() => {\n setSupportsScheduleScript(!!viewport?.view?.scheduleScript);\n }, [viewport]);\n\n React.useEffect(() => {\n const handleViewChanged = (vp: Viewport): void => {\n const hasScheduleScript = !!vp?.view?.scheduleScript;\n if (hasScheduleScript !== supportsScheduleScript)\n setSupportsScheduleScript(hasScheduleScript);\n };\n return viewport?.onChangeView.addListener(handleViewChanged);\n }, [supportsScheduleScript, viewport]);\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport): void => {\n const hasScheduleScript = !!vp?.view?.scheduleScript;\n if (hasScheduleScript !== supportsScheduleScript)\n setSupportsScheduleScript(hasScheduleScript);\n };\n return viewport?.onDisplayStyleChanged.addListener(\n handleDisplayStyleChange\n );\n }, [viewport, supportsScheduleScript]);\n return supportsScheduleScript;\n}\n\n/** Hook that returns either a ScheduleAnimationTimelineDataProvider or undefined based on if the supplied viewport contains schedule script.\n * @public\n **/\n// istanbul ignore next\nexport function useScheduleAnimationDataProvider(\n viewport: ScreenViewport | undefined\n) {\n const supportsScheduleScript = useSupportsScheduleScript(viewport);\n const [\n scheduleAnimationTimelineDataProvider,\n setScheduleAnimationTimelineDataProvider,\n ] = React.useState<ScheduleAnimationTimelineDataProvider | undefined>();\n const isMountedRef = React.useRef(false);\n\n React.useEffect(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n React.useEffect(() => {\n async function fetchNewDataProvider(vp: ScreenViewport) {\n let newProvider: ScheduleAnimationTimelineDataProvider | undefined =\n new ScheduleAnimationTimelineDataProvider(vp.view, vp);\n if (newProvider?.supportsTimelineAnimation) {\n const dataLoaded = await newProvider.loadTimelineData();\n if (!dataLoaded) newProvider = undefined;\n }\n isMountedRef.current &&\n setScheduleAnimationTimelineDataProvider(newProvider);\n }\n if (supportsScheduleScript && viewport) void fetchNewDataProvider(viewport);\n else\n isMountedRef.current &&\n setScheduleAnimationTimelineDataProvider(undefined);\n }, [supportsScheduleScript, viewport]);\n\n return scheduleAnimationTimelineDataProvider;\n}\n"]}
|
|
@@ -14,41 +14,36 @@ const SolarTimelineDataProvider_1 = require("../timeline/SolarTimelineDataProvid
|
|
|
14
14
|
/** @internal */
|
|
15
15
|
// istanbul ignore next
|
|
16
16
|
function useSupportsShadowDisplay(viewport) {
|
|
17
|
-
|
|
18
|
-
const [supportsShadows, setSupportsShadows] = React.useState(!!((_a = viewport === null || viewport === void 0 ? void 0 : viewport.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
|
|
17
|
+
const [supportsShadows, setSupportsShadows] = React.useState(!!viewport?.displayStyle?.wantShadows &&
|
|
19
18
|
!!core_frontend_1.IModelApp.renderSystem.options.displaySolarShadows);
|
|
20
19
|
React.useEffect(() => {
|
|
21
|
-
|
|
22
|
-
setSupportsShadows(!!((_a = viewport === null || viewport === void 0 ? void 0 : viewport.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
|
|
20
|
+
setSupportsShadows(!!viewport?.displayStyle?.wantShadows &&
|
|
23
21
|
!!core_frontend_1.IModelApp.renderSystem.options.displaySolarShadows);
|
|
24
22
|
}, [viewport]);
|
|
25
23
|
React.useEffect(() => {
|
|
26
24
|
const handleViewChanged = (vp) => {
|
|
27
|
-
|
|
28
|
-
setSupportsShadows(!!((_a = vp === null || vp === void 0 ? void 0 : vp.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
|
|
25
|
+
setSupportsShadows(!!vp?.displayStyle?.wantShadows &&
|
|
29
26
|
!!core_frontend_1.IModelApp.renderSystem.options.displaySolarShadows);
|
|
30
27
|
};
|
|
31
|
-
return viewport
|
|
28
|
+
return viewport?.onChangeView.addListener(handleViewChanged);
|
|
32
29
|
}, [viewport]);
|
|
33
30
|
React.useEffect(() => {
|
|
34
31
|
const handleViewChanged = (vp) => {
|
|
35
|
-
|
|
36
|
-
const wantShadows = !!((_a = vp.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
|
|
32
|
+
const wantShadows = !!vp.displayStyle?.wantShadows &&
|
|
37
33
|
!!core_frontend_1.IModelApp.renderSystem.options.displaySolarShadows;
|
|
38
34
|
if (wantShadows !== supportsShadows)
|
|
39
35
|
setSupportsShadows(wantShadows);
|
|
40
36
|
};
|
|
41
|
-
return viewport
|
|
37
|
+
return viewport?.onChangeView.addListener(handleViewChanged);
|
|
42
38
|
}, [viewport, supportsShadows]);
|
|
43
39
|
React.useEffect(() => {
|
|
44
40
|
const handleDisplayStyleChange = (vp) => {
|
|
45
|
-
|
|
46
|
-
const wantShadows = !!((_a = vp.displayStyle) === null || _a === void 0 ? void 0 : _a.wantShadows) &&
|
|
41
|
+
const wantShadows = !!vp.displayStyle?.wantShadows &&
|
|
47
42
|
!!core_frontend_1.IModelApp.renderSystem.options.displaySolarShadows;
|
|
48
43
|
if (wantShadows !== supportsShadows)
|
|
49
44
|
setSupportsShadows(wantShadows);
|
|
50
45
|
};
|
|
51
|
-
return viewport
|
|
46
|
+
return viewport?.onDisplayStyleChanged.addListener(handleDisplayStyleChange);
|
|
52
47
|
}, [viewport, supportsShadows]);
|
|
53
48
|
return supportsShadows;
|
|
54
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSolarDataProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useSolarDataProvider.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAG/B,wDAAiD;AACjD,qFAAkF;AAElF,gBAAgB;AAChB,uBAAuB;AACvB,SAAS,wBAAwB,CAAC,QAAoC
|
|
1
|
+
{"version":3,"file":"useSolarDataProvider.js","sourceRoot":"","sources":["../../../../src/appui-react/hooks/useSolarDataProvider.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 Hooks\n */\n\nimport * as React from \"react\";\nimport type { SolarDataProvider } from \"@itwin/imodel-components-react\";\nimport type { ScreenViewport, Viewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { SolarTimelineDataProvider } from \"../timeline/SolarTimelineDataProvider\";\n\n/** @internal */\n// istanbul ignore next\nfunction useSupportsShadowDisplay(viewport: ScreenViewport | undefined) {\n const [supportsShadows, setSupportsShadows] = React.useState(\n !!viewport?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n\n React.useEffect(() => {\n setSupportsShadows(\n !!viewport?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n }, [viewport]);\n\n React.useEffect(() => {\n const handleViewChanged = (vp: Viewport): void => {\n setSupportsShadows(\n !!vp?.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows\n );\n };\n return viewport?.onChangeView.addListener(handleViewChanged);\n }, [viewport]);\n\n React.useEffect(() => {\n const handleViewChanged = (vp: Viewport): void => {\n const wantShadows =\n !!vp.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows;\n if (wantShadows !== supportsShadows) setSupportsShadows(wantShadows);\n };\n return viewport?.onChangeView.addListener(handleViewChanged);\n }, [viewport, supportsShadows]);\n\n React.useEffect(() => {\n const handleDisplayStyleChange = (vp: Viewport): void => {\n const wantShadows =\n !!vp.displayStyle?.wantShadows &&\n !!IModelApp.renderSystem.options.displaySolarShadows;\n if (wantShadows !== supportsShadows) setSupportsShadows(wantShadows);\n };\n return viewport?.onDisplayStyleChanged.addListener(\n handleDisplayStyleChange\n );\n }, [viewport, supportsShadows]);\n\n return supportsShadows;\n}\n\n/** Hook that returns either a SolarTimelineDataProvider or undefined based on if the supplied viewport's display style is set to display shadows.\n * @beta\n **/\n// istanbul ignore next\nexport function useSolarDataProvider(\n viewport: ScreenViewport | undefined\n): SolarDataProvider | undefined {\n const supportsShadowDisplay = useSupportsShadowDisplay(viewport);\n const [solarDataProvider, setSolarDataProvider] = React.useState(() => {\n return supportsShadowDisplay && viewport\n ? new SolarTimelineDataProvider(viewport.view, viewport)\n : undefined;\n });\n\n React.useEffect(() => {\n const newSolarDataProvider =\n supportsShadowDisplay && viewport\n ? new SolarTimelineDataProvider(viewport.view, viewport)\n : undefined;\n setSolarDataProvider(newSolarDataProvider);\n }, [supportsShadowDisplay, viewport]);\n\n return solarDataProvider;\n}\n"]}
|
|
@@ -24,19 +24,18 @@ function useActivityMessage({ activityMessageInfo, dismissActivityMessage, cance
|
|
|
24
24
|
itwinui_react_1.toaster.setSettings({ placement: "bottom" });
|
|
25
25
|
}, []);
|
|
26
26
|
React.useEffect(() => {
|
|
27
|
-
|
|
28
|
-
if (activityMessageInfo === null || activityMessageInfo === void 0 ? void 0 : activityMessageInfo.restored) {
|
|
27
|
+
if (activityMessageInfo?.restored) {
|
|
29
28
|
recentToast.current = itwinui_react_1.toaster.informational(React.createElement(ActivityMessageContent, { initialActivityMessageInfo: activityMessageInfo }), {
|
|
30
29
|
onRemove: dismissActivityMessage,
|
|
31
30
|
type: "persisting",
|
|
32
|
-
link:
|
|
31
|
+
link: activityMessageInfo?.details?.supportsCancellation &&
|
|
33
32
|
cancelActivityMessage
|
|
34
33
|
? { title: cancelLabel, onClick: cancelActivityMessage }
|
|
35
34
|
: undefined,
|
|
36
35
|
});
|
|
37
36
|
}
|
|
38
37
|
if (!activityMessageInfo) {
|
|
39
|
-
|
|
38
|
+
recentToast.current?.close();
|
|
40
39
|
}
|
|
41
40
|
}, [
|
|
42
41
|
activityMessageInfo,
|
|
@@ -73,7 +72,6 @@ exports.ActivityMessageRenderer = ActivityMessageRenderer;
|
|
|
73
72
|
* @internal
|
|
74
73
|
*/
|
|
75
74
|
function ActivityMessageContent({ initialActivityMessageInfo, }) {
|
|
76
|
-
var _a, _b;
|
|
77
75
|
const [percentCompleteLabel] = React.useState(UiFramework_1.UiFramework.translate("activityCenter.percentComplete"));
|
|
78
76
|
const [activityMessageInfo, setActivityMessageInfo] = React.useState(initialActivityMessageInfo);
|
|
79
77
|
React.useEffect(() => {
|
|
@@ -86,7 +84,7 @@ function ActivityMessageContent({ initialActivityMessageInfo, }) {
|
|
|
86
84
|
activityMessageInfo.message && (React.createElement(itwinui_react_1.Text, null,
|
|
87
85
|
React.createElement(React.Fragment, null, activityMessageInfo.message.reactNode ||
|
|
88
86
|
activityMessageInfo.message))),
|
|
89
|
-
!!
|
|
90
|
-
|
|
87
|
+
!!activityMessageInfo.details?.showPercentInMessage && (React.createElement(itwinui_react_1.Text, { variant: "small" }, `${activityMessageInfo.percentage} ${percentCompleteLabel}`)),
|
|
88
|
+
activityMessageInfo.details?.showProgressBar && (React.createElement(itwinui_react_1.ProgressLinear, { value: activityMessageInfo?.percentage }))));
|
|
91
89
|
}
|
|
92
90
|
//# sourceMappingURL=ActivityMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityMessage.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessage.tsx"],"names":[],"mappings":";AAAA;;;gGAGgG;AAChG;;GAEG;;;AAEH,+BAA+B;AAE/B,kDAA2C;AAC3C,wDAAqE;AACrE,gDAA6C;AAE7C,+DAA4D;AAQ5D;;;GAGG;AACH,SAAS,kBAAkB,CAAC,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,GACG;IACxB,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,mBAAM,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAqC,CAAC;IACtE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,uBAAO,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE
|
|
1
|
+
{"version":3,"file":"ActivityMessage.js","sourceRoot":"","sources":["../../../../src/appui-react/messages/ActivityMessage.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 Notification\n */\n\nimport * as React from \"react\";\nimport type { ReactMessage } from \"@itwin/core-react\";\nimport { UiCore } from \"@itwin/core-react\";\nimport { ProgressLinear, Text, toaster } from \"@itwin/itwinui-react\";\nimport { UiFramework } from \"../UiFramework\";\nimport type { ActivityMessageEventArgs } from \"../messages/MessageManager\";\nimport { MessageManager } from \"../messages/MessageManager\";\n\ninterface UseActivityMessageProps {\n cancelActivityMessage?: () => void;\n dismissActivityMessage?: () => void;\n activityMessageInfo?: ActivityMessageEventArgs;\n}\n\n/**\n * Hook to render an Activity message.\n * @internal\n */\nfunction useActivityMessage({\n activityMessageInfo,\n dismissActivityMessage,\n cancelActivityMessage,\n}: UseActivityMessageProps) {\n const [cancelLabel] = React.useState(UiCore.translate(\"dialog.cancel\"));\n const recentToast = React.useRef<{ close: () => void } | undefined>();\n React.useEffect(() => {\n toaster.setSettings({ placement: \"bottom\" });\n }, []);\n\n React.useEffect(() => {\n if (activityMessageInfo?.restored) {\n recentToast.current = toaster.informational(\n <ActivityMessageContent\n initialActivityMessageInfo={activityMessageInfo}\n />,\n {\n onRemove: dismissActivityMessage,\n type: \"persisting\",\n link:\n activityMessageInfo?.details?.supportsCancellation &&\n cancelActivityMessage\n ? { title: cancelLabel, onClick: cancelActivityMessage }\n : undefined,\n }\n );\n }\n if (!activityMessageInfo) {\n recentToast.current?.close();\n }\n }, [\n activityMessageInfo,\n cancelActivityMessage,\n cancelLabel,\n dismissActivityMessage,\n ]);\n}\n\n/**\n * Component wrapping the `useActivityMessage` hook to use in class components.\n * @internal\n */\nexport function ActivityMessageRenderer() {\n const [activityMessageInfo, setActivityMessageInfo] = React.useState<\n ActivityMessageEventArgs | undefined\n >();\n React.useEffect(() => {\n return MessageManager.onActivityMessageUpdatedEvent.addListener((args) => {\n setActivityMessageInfo(args);\n });\n }, []);\n\n React.useEffect(() => {\n return MessageManager.onActivityMessageCancelledEvent.addListener(() => {\n setActivityMessageInfo(undefined);\n });\n }, []);\n\n const cancelActivityMessage = React.useCallback(() => {\n MessageManager.endActivityMessage(false);\n }, []);\n\n useActivityMessage({ activityMessageInfo, cancelActivityMessage });\n return <></>;\n}\n\n/**\n * Component used to show and update activity message content.\n * @internal\n */\nfunction ActivityMessageContent({\n initialActivityMessageInfo,\n}: {\n initialActivityMessageInfo: ActivityMessageEventArgs;\n}) {\n const [percentCompleteLabel] = React.useState(\n UiFramework.translate(\"activityCenter.percentComplete\")\n );\n const [activityMessageInfo, setActivityMessageInfo] = React.useState(\n initialActivityMessageInfo\n );\n\n React.useEffect(() => {\n const handleActivityMessageUpdatedEvent = (\n args: ActivityMessageEventArgs\n ) => {\n setActivityMessageInfo(args);\n };\n\n return MessageManager.onActivityMessageUpdatedEvent.addListener(\n handleActivityMessageUpdatedEvent\n );\n }, []);\n\n return (\n <>\n {activityMessageInfo.message && (\n <Text>\n <>\n {(activityMessageInfo.message as ReactMessage).reactNode ||\n activityMessageInfo.message}\n </>\n </Text>\n )}\n {!!activityMessageInfo.details?.showPercentInMessage && (\n <Text variant=\"small\">{`${activityMessageInfo.percentage} ${percentCompleteLabel}`}</Text>\n )}\n {activityMessageInfo.details?.showProgressBar && (\n <ProgressLinear value={activityMessageInfo?.percentage} />\n )}\n </>\n );\n}\n"]}
|
|
@@ -203,11 +203,10 @@ class ViewSelector extends React.Component {
|
|
|
203
203
|
const query = { wantPrivate: false };
|
|
204
204
|
const specs = await this.props.imodel.views.getViewList(query);
|
|
205
205
|
specs.forEach((spec) => {
|
|
206
|
-
var _a;
|
|
207
206
|
const viewItem = {
|
|
208
207
|
key: spec.id,
|
|
209
208
|
name: spec.name,
|
|
210
|
-
enabled: spec.id ===
|
|
209
|
+
enabled: spec.id === core_frontend_1.IModelApp.viewManager.selectedView?.view.id
|
|
211
210
|
? true
|
|
212
211
|
: false,
|
|
213
212
|
type: ListPicker_1.ListItemType.Item,
|
|
@@ -232,16 +231,16 @@ class ViewSelector extends React.Component {
|
|
|
232
231
|
sheetsFiltered = [];
|
|
233
232
|
unknownFiltered = [];
|
|
234
233
|
views3dFuzzySearchResults.forEach(function (result) {
|
|
235
|
-
views3dFiltered
|
|
234
|
+
views3dFiltered?.push(result.item);
|
|
236
235
|
});
|
|
237
236
|
views2dFuzzySearchResults.forEach(function (result) {
|
|
238
|
-
views2dFiltered
|
|
237
|
+
views2dFiltered?.push(result.item);
|
|
239
238
|
});
|
|
240
239
|
sheetsFuzzySearchResults.forEach(function (result) {
|
|
241
|
-
sheetsFiltered
|
|
240
|
+
sheetsFiltered?.push(result.item);
|
|
242
241
|
});
|
|
243
242
|
unknownFuzzySearchResults.forEach(function (result) {
|
|
244
|
-
unknownFiltered
|
|
243
|
+
unknownFiltered?.push(result.item);
|
|
245
244
|
});
|
|
246
245
|
}
|
|
247
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewSelector.js","sourceRoot":"","sources":["../../../../src/appui-react/pickers/ViewSelector.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 Picker\n */\n\nimport * as React from \"react\";\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { IModelConnection, ViewState } from \"@itwin/core-frontend\";\nimport { FuzzySearch, IModelApp } from \"@itwin/core-frontend\";\nimport { IconSpecUtilities, UiEvent } from \"@itwin/appui-abstract\";\nimport type { SupportsViewSelectorChange } from \"../content/ContentControl\";\nimport { connectIModelConnection } from \"../redux/connectIModel\";\nimport { UiFramework } from \"../UiFramework\";\nimport { ViewUtilities } from \"../utils/ViewUtilities\";\nimport type { ListItem } from \"./ListPicker\";\nimport { ListItemType, ListPicker } from \"./ListPicker\";\nimport { debounce } from \"lodash\";\nimport svgSavedView from \"@bentley/icons-generic/icons/saved-view.svg\";\n\n// cSpell:ignore Spatials\n\n/** [[ViewSelectorChangedEvent]] Args interface.\n * @beta\n */\nexport interface ViewSelectorChangedEventArgs {\n iModelConnection: IModelConnection;\n viewDefinitionId: Id64String;\n viewState: ViewState;\n name: string;\n}\n\n/** ViewSelector Changed Event class.\n * @beta\n */\nexport class ViewSelectorChangedEvent extends UiEvent<ViewSelectorChangedEventArgs> {}\n\n/** Properties for the [[ViewSelector]] component\n * @beta\n */\nexport interface ViewSelectorProps {\n imodel?: IModelConnection;\n listenForShowUpdates?: boolean;\n\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n searchBox?: boolean;\n panelOnly?: boolean;\n}\n\n/** State for the [[ViewSelector]] component\n * @beta\n */\ninterface ViewSelectorState {\n items: ListItem[];\n title: string;\n initialized: boolean;\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n searchBox: boolean;\n panelOnly: boolean;\n expand: boolean;\n}\n\n/** Default properties of [[ViewSelector]] component.\n * @beta\n */\nexport type ViewSelectorDefaultProps = Pick<\n ViewSelectorProps,\n \"showSpatials\" | \"showDrawings\" | \"showSheets\" | \"showUnknown\"\n>;\n\n/** ViewSelector Show Update Event Args interface.\n */\ninterface ViewSelectorShowUpdateEventArgs {\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n}\n\n/** ViewSelector Show Update Event class.\n */\nclass ViewSelectorShowUpdateEvent extends UiEvent<ViewSelectorShowUpdateEventArgs> {}\n\n/** View Selector React component\n * @beta\n */\nexport class ViewSelector extends React.Component<\n ViewSelectorProps,\n ViewSelectorState\n> {\n private static readonly _onViewSelectorShowUpdateEvent =\n new ViewSelectorShowUpdateEvent();\n private _removeShowUpdateListener?: () => void;\n private _isMounted = false;\n private _searchInput = \"\";\n\n public static readonly defaultProps: ViewSelectorDefaultProps = {\n showSpatials: true,\n showDrawings: true,\n showSheets: true,\n showUnknown: true,\n };\n\n /** Gets the [[ViewSelectorChangedEvent]] */\n public static readonly onViewSelectorChangedEvent =\n new ViewSelectorChangedEvent();\n\n /** Updates the ViewSelector show settings.\n */\n public static updateShowSettings(\n showSpatials: boolean,\n showDrawings: boolean,\n showSheets: boolean,\n showUnknown: boolean\n ): void {\n ViewSelector._onViewSelectorShowUpdateEvent.emit({\n showSpatials,\n showDrawings,\n showSheets,\n showUnknown,\n });\n }\n\n /** Creates a ViewSelector */\n constructor(props: ViewSelectorProps) {\n super(props);\n\n this.state = {\n items: new Array<ListItem>(),\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: false,\n showSpatials: props.showSpatials,\n showDrawings: props.showDrawings,\n showSheets: props.showSheets,\n showUnknown: props.showUnknown,\n searchBox: props.searchBox ? props.searchBox : true,\n panelOnly: props.panelOnly ? props.panelOnly : false,\n expand: false,\n };\n }\n\n public override async componentDidMount() {\n this._isMounted = true;\n if (this.props.listenForShowUpdates)\n this._removeShowUpdateListener =\n ViewSelector._onViewSelectorShowUpdateEvent.addListener(\n this._handleViewSelectorShowUpdateEvent\n );\n\n await this.loadViews();\n }\n\n public override async componentDidUpdate(prevProps: ViewSelectorProps) {\n if (this.props.imodel !== prevProps.imodel) {\n await this.loadViews();\n }\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n // istanbul ignore else\n if (this._removeShowUpdateListener) this._removeShowUpdateListener();\n }\n\n private _handleViewSelectorShowUpdateEvent = (\n args: ViewSelectorShowUpdateEventArgs\n ): void => {\n // istanbul ignore next\n if (!this._isMounted) return;\n\n this.setState(args, async () => this.loadViews());\n };\n\n private setStateContainers(\n views3d: ListItem[],\n views2d: ListItem[],\n sheets: ListItem[],\n unknown?: ListItem[],\n views3dFiltered?: ListItem[],\n views2dFiltered?: ListItem[],\n sheetsFiltered?: ListItem[],\n unknownFiltered?: ListItem[]\n ) {\n const views3dContainer: ListItem = {\n key: \"views3dContainer\",\n name: UiFramework.translate(\"viewTypes.spatialViews\"),\n enabled: false,\n type: ListItemType.Container,\n children: views3dFiltered ? views3dFiltered : views3d,\n };\n\n const views2dContainer: ListItem = {\n key: \"views2dContainer\",\n name: UiFramework.translate(\"viewTypes.drawings\"),\n enabled: false,\n type: ListItemType.Container,\n children: views2dFiltered ? views2dFiltered : views2d,\n };\n\n const sheetContainer: ListItem = {\n key: \"sheetContainer\",\n name: UiFramework.translate(\"viewTypes.sheets\"),\n enabled: false,\n type: ListItemType.Container,\n children: sheetsFiltered ? sheetsFiltered : sheets,\n };\n\n const containers = [views3dContainer, views2dContainer, sheetContainer];\n\n // istanbul ignore if\n if (unknown && unknown.length > 0) {\n // This should never show, but just in case we missed a type of view state\n const unknownContainer: ListItem = {\n key: \"unknownContainer\",\n name: UiFramework.translate(\"viewTypes.others\"),\n enabled: false,\n type: ListItemType.Container,\n children: unknownFiltered ? unknownFiltered : unknown,\n };\n\n if (unknown.length !== 0) containers.push(unknownContainer);\n }\n\n // istanbul ignore next\n if (!this._isMounted) return;\n\n this.setState({\n items: containers,\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: true,\n });\n }\n /**\n * Query the views and set the initial state with the iModel's views.\n */\n public async loadViews(): Promise<void> {\n // Query views and add them to state\n const views3d: ListItem[] = [];\n const views2d: ListItem[] = [];\n const sheets: ListItem[] = [];\n const unknown: ListItem[] = [];\n let views3dFiltered: ListItem[] | undefined;\n let views2dFiltered: ListItem[] | undefined;\n let sheetsFiltered: ListItem[] | undefined;\n let unknownFiltered: ListItem[] | undefined;\n const fuzzy = new FuzzySearch<ListItem>();\n\n if (this.props.imodel && this.props.imodel.views.getViewList) {\n const query = { wantPrivate: false };\n const specs = await this.props.imodel.views.getViewList(query);\n\n specs.forEach((spec: IModelConnection.ViewSpec) => {\n const viewItem: ListItem = {\n key: spec.id,\n name: spec.name,\n enabled:\n spec.id === IModelApp.viewManager.selectedView?.view.id\n ? true\n : false,\n type: ListItemType.Item,\n };\n\n const className = ViewUtilities.getBisBaseClass(spec.class);\n\n if (ViewUtilities.isSpatial(className) && this.state.showSpatials)\n views3d.push(viewItem);\n else if (ViewUtilities.isDrawing(className) && this.state.showDrawings)\n views2d.push(viewItem);\n else if (ViewUtilities.isSheet(className) && this.state.showSheets)\n sheets.push(viewItem);\n else if (this.state.showUnknown) unknown.push(viewItem);\n });\n\n if (this._searchInput.length > 0) {\n const views3dFuzzySearchResults = fuzzy.search(\n views3d,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const views2dFuzzySearchResults = fuzzy.search(\n views2d,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const sheetsFuzzySearchResults = fuzzy.search(\n sheets,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const unknownFuzzySearchResults = fuzzy.search(\n unknown,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n views3dFiltered = [];\n views2dFiltered = [];\n sheetsFiltered = [];\n unknownFiltered = [];\n views3dFuzzySearchResults.forEach(function (result) {\n views3dFiltered?.push(result.item);\n });\n views2dFuzzySearchResults.forEach(function (result) {\n views2dFiltered?.push(result.item);\n });\n sheetsFuzzySearchResults.forEach(function (result) {\n sheetsFiltered?.push(result.item);\n });\n unknownFuzzySearchResults.forEach(function (result) {\n unknownFiltered?.push(result.item);\n });\n }\n }\n\n this.setStateContainers(\n views3d,\n views2d,\n sheets,\n unknown,\n views3dFiltered,\n views2dFiltered,\n sheetsFiltered,\n unknownFiltered\n );\n }\n\n /**\n * Update state of the entries in the widget.\n * @param viewId Identifier for the relevant view\n */\n // istanbul ignore next\n public async updateState(viewId?: any): Promise<void> {\n // Wait for initialization finished\n if (!this.state.initialized) return;\n\n // Query views and add them to state\n const views3d: ListItem[] = this.state.items[0].children!;\n const views2d: ListItem[] = this.state.items[1].children!;\n const sheets: ListItem[] = this.state.items[2].children!;\n const unknown: ListItem[] =\n this.state.items.length > 3 ? this.state.items[3].children! : [];\n\n const updateChildren = (item: ListItem) => {\n if (item.key === viewId) return { ...item, enabled: true };\n else return { ...item, enabled: false };\n };\n\n this.setStateContainers(\n views3d.map(updateChildren),\n views2d.map(updateChildren),\n sheets.map(updateChildren),\n unknown.map(updateChildren)\n );\n }\n\n // enable/disable the models\n // istanbul ignore next\n private _setEnabled = async (item: ListItem, _enabled: boolean) => {\n const activeContentControl =\n UiFramework.content.getActiveContentControl() as unknown as SupportsViewSelectorChange;\n if (\n !activeContentControl ||\n !activeContentControl.supportsViewSelectorChange\n ) {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `No active ContentControl for ViewSelector change`\n );\n return;\n }\n\n // Enable the item temporarily to let user see that their click was registered\n // while we query for view state and change the current view which may take a bit\n if (_enabled && item.type !== ListItemType.Container) {\n // This itemMapper simply looks through all the list items and their nested children and enables the one\n // that we have registered to enable\n // Also disable all other items\n const itemMapper: (tempItem: ListItem) => ListItem = (\n tempItem: ListItem\n ) => {\n if (tempItem.type === ListItemType.Container) {\n return { ...tempItem, children: tempItem.children!.map(itemMapper) };\n } else if (tempItem.key === item.key) {\n return { ...tempItem, enabled: true };\n } else {\n return { ...tempItem, enabled: false };\n }\n };\n\n // Create the new array with the current item enabled\n const itemsWithEnabled = this.state.items.map(itemMapper);\n\n // istanbul ignore next\n if (!this._isMounted) return;\n\n // Update the state so that we show the user it was enabled while we work in the background\n this.setState({ items: itemsWithEnabled });\n }\n\n // Load the view state using the viewSpec's ID\n const viewState = await this.props.imodel!.views.load(item.key);\n\n // Let activeContentControl process the ViewSelector change\n await activeContentControl.processViewSelectorChange(\n this.props.imodel!,\n item.key,\n viewState,\n item.name!\n );\n\n // Emit a change event\n ViewSelector.onViewSelectorChangedEvent.emit({\n iModelConnection: this.props.imodel!,\n viewDefinitionId: item.key,\n viewState,\n name: item.name!,\n });\n\n // Set state to show enabled the view that got selected\n void this.updateState(item.key);\n };\n\n // Hook on the category selector being expanded so that we may initialize if needed\n // istanbul ignore next\n private _onExpanded = (expand: boolean) => {\n if (expand)\n void this.updateState(\n IModelApp.viewManager.selectedView\n ? IModelApp.viewManager.selectedView.view.id\n : undefined\n );\n };\n\n /**\n * Renders ViewSelector component\n */\n public override render() {\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgSavedView);\n\n const { imodel, ...props } = this.props;\n\n return (\n <ListPicker\n {...props}\n title={this.state.title}\n setEnabled={this._setEnabled}\n items={this.state.items}\n iconSpec={iconSpec}\n onExpanded={this._onExpanded}\n searchBox={this.state.searchBox}\n onSearchValueChange={debounce((search: string) => {\n this._searchInput = search;\n if (\n this._isMounted &&\n this.state.expand === false &&\n this._searchInput.length > 0\n )\n this.setState({ expand: true });\n void this.loadViews();\n }, 300)}\n panelOnly={this.state.panelOnly}\n expanded={this.state.expand}\n />\n );\n }\n}\n\n/** ViewSelector that is connected to the IModelConnection property in the Redux store. The application must set up the Redux store and include the FrameworkReducer.\n * @beta\n */\nexport const IModelConnectedViewSelector = connectIModelConnection(\n null,\n null\n)(ViewSelector);\n"]}
|
|
1
|
+
{"version":3,"file":"ViewSelector.js","sourceRoot":"","sources":["../../../../src/appui-react/pickers/ViewSelector.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 Picker\n */\n\nimport * as React from \"react\";\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { IModelConnection, ViewState } from \"@itwin/core-frontend\";\nimport { FuzzySearch, IModelApp } from \"@itwin/core-frontend\";\nimport { IconSpecUtilities, UiEvent } from \"@itwin/appui-abstract\";\nimport type { SupportsViewSelectorChange } from \"../content/ContentControl\";\nimport { connectIModelConnection } from \"../redux/connectIModel\";\nimport { UiFramework } from \"../UiFramework\";\nimport { ViewUtilities } from \"../utils/ViewUtilities\";\nimport type { ListItem } from \"./ListPicker\";\nimport { ListItemType, ListPicker } from \"./ListPicker\";\nimport { debounce } from \"lodash\";\nimport svgSavedView from \"@bentley/icons-generic/icons/saved-view.svg\";\n\n// cSpell:ignore Spatials\n\n/** [[ViewSelectorChangedEvent]] Args interface.\n * @beta\n */\nexport interface ViewSelectorChangedEventArgs {\n iModelConnection: IModelConnection;\n viewDefinitionId: Id64String;\n viewState: ViewState;\n name: string;\n}\n\n/** ViewSelector Changed Event class.\n * @beta\n */\nexport class ViewSelectorChangedEvent extends UiEvent<ViewSelectorChangedEventArgs> {}\n\n/** Properties for the [[ViewSelector]] component\n * @beta\n */\nexport interface ViewSelectorProps {\n imodel?: IModelConnection;\n listenForShowUpdates?: boolean;\n\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n searchBox?: boolean;\n panelOnly?: boolean;\n}\n\n/** State for the [[ViewSelector]] component\n * @beta\n */\ninterface ViewSelectorState {\n items: ListItem[];\n title: string;\n initialized: boolean;\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n searchBox: boolean;\n panelOnly: boolean;\n expand: boolean;\n}\n\n/** Default properties of [[ViewSelector]] component.\n * @beta\n */\nexport type ViewSelectorDefaultProps = Pick<\n ViewSelectorProps,\n \"showSpatials\" | \"showDrawings\" | \"showSheets\" | \"showUnknown\"\n>;\n\n/** ViewSelector Show Update Event Args interface.\n */\ninterface ViewSelectorShowUpdateEventArgs {\n showSpatials: boolean;\n showDrawings: boolean;\n showSheets: boolean;\n showUnknown: boolean;\n}\n\n/** ViewSelector Show Update Event class.\n */\nclass ViewSelectorShowUpdateEvent extends UiEvent<ViewSelectorShowUpdateEventArgs> {}\n\n/** View Selector React component\n * @beta\n */\nexport class ViewSelector extends React.Component<\n ViewSelectorProps,\n ViewSelectorState\n> {\n private static readonly _onViewSelectorShowUpdateEvent =\n new ViewSelectorShowUpdateEvent();\n private _removeShowUpdateListener?: () => void;\n private _isMounted = false;\n private _searchInput = \"\";\n\n public static readonly defaultProps: ViewSelectorDefaultProps = {\n showSpatials: true,\n showDrawings: true,\n showSheets: true,\n showUnknown: true,\n };\n\n /** Gets the [[ViewSelectorChangedEvent]] */\n public static readonly onViewSelectorChangedEvent =\n new ViewSelectorChangedEvent();\n\n /** Updates the ViewSelector show settings.\n */\n public static updateShowSettings(\n showSpatials: boolean,\n showDrawings: boolean,\n showSheets: boolean,\n showUnknown: boolean\n ): void {\n ViewSelector._onViewSelectorShowUpdateEvent.emit({\n showSpatials,\n showDrawings,\n showSheets,\n showUnknown,\n });\n }\n\n /** Creates a ViewSelector */\n constructor(props: ViewSelectorProps) {\n super(props);\n\n this.state = {\n items: new Array<ListItem>(),\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: false,\n showSpatials: props.showSpatials,\n showDrawings: props.showDrawings,\n showSheets: props.showSheets,\n showUnknown: props.showUnknown,\n searchBox: props.searchBox ? props.searchBox : true,\n panelOnly: props.panelOnly ? props.panelOnly : false,\n expand: false,\n };\n }\n\n public override async componentDidMount() {\n this._isMounted = true;\n if (this.props.listenForShowUpdates)\n this._removeShowUpdateListener =\n ViewSelector._onViewSelectorShowUpdateEvent.addListener(\n this._handleViewSelectorShowUpdateEvent\n );\n\n await this.loadViews();\n }\n\n public override async componentDidUpdate(prevProps: ViewSelectorProps) {\n if (this.props.imodel !== prevProps.imodel) {\n await this.loadViews();\n }\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n // istanbul ignore else\n if (this._removeShowUpdateListener) this._removeShowUpdateListener();\n }\n\n private _handleViewSelectorShowUpdateEvent = (\n args: ViewSelectorShowUpdateEventArgs\n ): void => {\n // istanbul ignore next\n if (!this._isMounted) return;\n\n this.setState(args, async () => this.loadViews());\n };\n\n private setStateContainers(\n views3d: ListItem[],\n views2d: ListItem[],\n sheets: ListItem[],\n unknown?: ListItem[],\n views3dFiltered?: ListItem[],\n views2dFiltered?: ListItem[],\n sheetsFiltered?: ListItem[],\n unknownFiltered?: ListItem[]\n ) {\n const views3dContainer: ListItem = {\n key: \"views3dContainer\",\n name: UiFramework.translate(\"viewTypes.spatialViews\"),\n enabled: false,\n type: ListItemType.Container,\n children: views3dFiltered ? views3dFiltered : views3d,\n };\n\n const views2dContainer: ListItem = {\n key: \"views2dContainer\",\n name: UiFramework.translate(\"viewTypes.drawings\"),\n enabled: false,\n type: ListItemType.Container,\n children: views2dFiltered ? views2dFiltered : views2d,\n };\n\n const sheetContainer: ListItem = {\n key: \"sheetContainer\",\n name: UiFramework.translate(\"viewTypes.sheets\"),\n enabled: false,\n type: ListItemType.Container,\n children: sheetsFiltered ? sheetsFiltered : sheets,\n };\n\n const containers = [views3dContainer, views2dContainer, sheetContainer];\n\n // istanbul ignore if\n if (unknown && unknown.length > 0) {\n // This should never show, but just in case we missed a type of view state\n const unknownContainer: ListItem = {\n key: \"unknownContainer\",\n name: UiFramework.translate(\"viewTypes.others\"),\n enabled: false,\n type: ListItemType.Container,\n children: unknownFiltered ? unknownFiltered : unknown,\n };\n\n if (unknown.length !== 0) containers.push(unknownContainer);\n }\n\n // istanbul ignore next\n if (!this._isMounted) return;\n\n this.setState({\n items: containers,\n title: UiFramework.translate(\"viewTypes.views\"),\n initialized: true,\n });\n }\n /**\n * Query the views and set the initial state with the iModel's views.\n */\n public async loadViews(): Promise<void> {\n // Query views and add them to state\n const views3d: ListItem[] = [];\n const views2d: ListItem[] = [];\n const sheets: ListItem[] = [];\n const unknown: ListItem[] = [];\n let views3dFiltered: ListItem[] | undefined;\n let views2dFiltered: ListItem[] | undefined;\n let sheetsFiltered: ListItem[] | undefined;\n let unknownFiltered: ListItem[] | undefined;\n const fuzzy = new FuzzySearch<ListItem>();\n\n if (this.props.imodel && this.props.imodel.views.getViewList) {\n const query = { wantPrivate: false };\n const specs = await this.props.imodel.views.getViewList(query);\n\n specs.forEach((spec: IModelConnection.ViewSpec) => {\n const viewItem: ListItem = {\n key: spec.id,\n name: spec.name,\n enabled:\n spec.id === IModelApp.viewManager.selectedView?.view.id\n ? true\n : false,\n type: ListItemType.Item,\n };\n\n const className = ViewUtilities.getBisBaseClass(spec.class);\n\n if (ViewUtilities.isSpatial(className) && this.state.showSpatials)\n views3d.push(viewItem);\n else if (ViewUtilities.isDrawing(className) && this.state.showDrawings)\n views2d.push(viewItem);\n else if (ViewUtilities.isSheet(className) && this.state.showSheets)\n sheets.push(viewItem);\n else if (this.state.showUnknown) unknown.push(viewItem);\n });\n\n if (this._searchInput.length > 0) {\n const views3dFuzzySearchResults = fuzzy.search(\n views3d,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const views2dFuzzySearchResults = fuzzy.search(\n views2d,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const sheetsFuzzySearchResults = fuzzy.search(\n sheets,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n const unknownFuzzySearchResults = fuzzy.search(\n unknown,\n [\"name\"],\n this._searchInput\n ).results as ListItem[];\n views3dFiltered = [];\n views2dFiltered = [];\n sheetsFiltered = [];\n unknownFiltered = [];\n views3dFuzzySearchResults.forEach(function (result) {\n views3dFiltered?.push(result.item);\n });\n views2dFuzzySearchResults.forEach(function (result) {\n views2dFiltered?.push(result.item);\n });\n sheetsFuzzySearchResults.forEach(function (result) {\n sheetsFiltered?.push(result.item);\n });\n unknownFuzzySearchResults.forEach(function (result) {\n unknownFiltered?.push(result.item);\n });\n }\n }\n\n this.setStateContainers(\n views3d,\n views2d,\n sheets,\n unknown,\n views3dFiltered,\n views2dFiltered,\n sheetsFiltered,\n unknownFiltered\n );\n }\n\n /**\n * Update state of the entries in the widget.\n * @param viewId Identifier for the relevant view\n */\n // istanbul ignore next\n public async updateState(viewId?: any): Promise<void> {\n // Wait for initialization finished\n if (!this.state.initialized) return;\n\n // Query views and add them to state\n const views3d: ListItem[] = this.state.items[0].children!;\n const views2d: ListItem[] = this.state.items[1].children!;\n const sheets: ListItem[] = this.state.items[2].children!;\n const unknown: ListItem[] =\n this.state.items.length > 3 ? this.state.items[3].children! : [];\n\n const updateChildren = (item: ListItem) => {\n if (item.key === viewId) return { ...item, enabled: true };\n else return { ...item, enabled: false };\n };\n\n this.setStateContainers(\n views3d.map(updateChildren),\n views2d.map(updateChildren),\n sheets.map(updateChildren),\n unknown.map(updateChildren)\n );\n }\n\n // enable/disable the models\n // istanbul ignore next\n private _setEnabled = async (item: ListItem, _enabled: boolean) => {\n const activeContentControl =\n UiFramework.content.getActiveContentControl() as unknown as SupportsViewSelectorChange;\n if (\n !activeContentControl ||\n !activeContentControl.supportsViewSelectorChange\n ) {\n Logger.logError(\n UiFramework.loggerCategory(this),\n `No active ContentControl for ViewSelector change`\n );\n return;\n }\n\n // Enable the item temporarily to let user see that their click was registered\n // while we query for view state and change the current view which may take a bit\n if (_enabled && item.type !== ListItemType.Container) {\n // This itemMapper simply looks through all the list items and their nested children and enables the one\n // that we have registered to enable\n // Also disable all other items\n const itemMapper: (tempItem: ListItem) => ListItem = (\n tempItem: ListItem\n ) => {\n if (tempItem.type === ListItemType.Container) {\n return { ...tempItem, children: tempItem.children!.map(itemMapper) };\n } else if (tempItem.key === item.key) {\n return { ...tempItem, enabled: true };\n } else {\n return { ...tempItem, enabled: false };\n }\n };\n\n // Create the new array with the current item enabled\n const itemsWithEnabled = this.state.items.map(itemMapper);\n\n // istanbul ignore next\n if (!this._isMounted) return;\n\n // Update the state so that we show the user it was enabled while we work in the background\n this.setState({ items: itemsWithEnabled });\n }\n\n // Load the view state using the viewSpec's ID\n const viewState = await this.props.imodel!.views.load(item.key);\n\n // Let activeContentControl process the ViewSelector change\n await activeContentControl.processViewSelectorChange(\n this.props.imodel!,\n item.key,\n viewState,\n item.name!\n );\n\n // Emit a change event\n ViewSelector.onViewSelectorChangedEvent.emit({\n iModelConnection: this.props.imodel!,\n viewDefinitionId: item.key,\n viewState,\n name: item.name!,\n });\n\n // Set state to show enabled the view that got selected\n void this.updateState(item.key);\n };\n\n // Hook on the category selector being expanded so that we may initialize if needed\n // istanbul ignore next\n private _onExpanded = (expand: boolean) => {\n if (expand)\n void this.updateState(\n IModelApp.viewManager.selectedView\n ? IModelApp.viewManager.selectedView.view.id\n : undefined\n );\n };\n\n /**\n * Renders ViewSelector component\n */\n public override render() {\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgSavedView);\n\n const { imodel, ...props } = this.props;\n\n return (\n <ListPicker\n {...props}\n title={this.state.title}\n setEnabled={this._setEnabled}\n items={this.state.items}\n iconSpec={iconSpec}\n onExpanded={this._onExpanded}\n searchBox={this.state.searchBox}\n onSearchValueChange={debounce((search: string) => {\n this._searchInput = search;\n if (\n this._isMounted &&\n this.state.expand === false &&\n this._searchInput.length > 0\n )\n this.setState({ expand: true });\n void this.loadViews();\n }, 300)}\n panelOnly={this.state.panelOnly}\n expanded={this.state.expand}\n />\n );\n }\n}\n\n/** ViewSelector that is connected to the IModelConnection property in the Redux store. The application must set up the Redux store and include the FrameworkReducer.\n * @beta\n */\nexport const IModelConnectedViewSelector = connectIModelConnection(\n null,\n null\n)(ViewSelector);\n"]}
|