@itwin/appui-react 5.11.1 → 5.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +109 -0
- package/lib/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/appui-react/UiFramework.js +2 -1
- package/lib/appui-react/UiFramework.js.map +1 -1
- package/lib/appui-react/accudraw/FrameworkAccuDraw.d.ts.map +1 -1
- package/lib/appui-react/accudraw/FrameworkAccuDraw.js +2 -1
- package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
- package/lib/appui-react/childwindow/ChildWindowRenderer.js +1 -1
- package/lib/appui-react/childwindow/ChildWindowRenderer.js.map +1 -1
- package/lib/appui-react/frontstage/ModalSettingsStage.js +1 -1
- package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/appui-react/hooks/useActiveToolId.d.ts +4 -2
- package/lib/appui-react/hooks/useActiveToolId.d.ts.map +1 -1
- package/lib/appui-react/hooks/useActiveToolId.js +6 -10
- package/lib/appui-react/hooks/useActiveToolId.js.map +1 -1
- package/lib/appui-react/layout/widget/NavigationArea.d.ts +1 -0
- package/lib/appui-react/layout/widget/NavigationArea.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/NavigationArea.js +1 -1
- package/lib/appui-react/layout/widget/NavigationArea.js.map +1 -1
- package/lib/appui-react/layout/widget/ToolsArea.d.ts +1 -0
- package/lib/appui-react/layout/widget/ToolsArea.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/ToolsArea.js +1 -1
- package/lib/appui-react/layout/widget/ToolsArea.js.map +1 -1
- package/lib/appui-react/selection/SelectionContextItemDef.js +1 -1
- package/lib/appui-react/selection/SelectionContextItemDef.js.map +1 -1
- package/lib/appui-react/settings/ui/UiSettingsPage.d.ts.map +1 -1
- package/lib/appui-react/settings/ui/UiSettingsPage.js +2 -1
- package/lib/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
- package/lib/appui-react/syncui/SyncUiEventDispatcher.d.ts +1 -48
- package/lib/appui-react/syncui/SyncUiEventDispatcher.d.ts.map +1 -1
- package/lib/appui-react/syncui/SyncUiEventDispatcher.js +1 -48
- package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/appui-react/syncui/UiSyncEvent.d.ts +47 -0
- package/lib/appui-react/syncui/UiSyncEvent.d.ts.map +1 -1
- package/lib/appui-react/syncui/UiSyncEvent.js +48 -0
- package/lib/appui-react/syncui/UiSyncEvent.js.map +1 -1
- package/lib/appui-react/toolbar/ToolbarComposer.d.ts +8 -2
- package/lib/appui-react/toolbar/ToolbarComposer.d.ts.map +1 -1
- package/lib/appui-react/toolbar/ToolbarComposer.js +49 -17
- package/lib/appui-react/toolbar/ToolbarComposer.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Surface.js +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Surface.js.map +1 -1
- package/lib/appui-react/tools/CoreToolDefinitions.js +1 -1
- package/lib/appui-react/tools/CoreToolDefinitions.js.map +1 -1
- package/lib/appui-react/uistate/useUiStateStorage.d.ts.map +1 -1
- package/lib/appui-react/uistate/useUiStateStorage.js +2 -1
- package/lib/appui-react/uistate/useUiStateStorage.js.map +1 -1
- package/lib/appui-react/utils/InternalUiShowHideManager.d.ts.map +1 -1
- package/lib/appui-react/utils/InternalUiShowHideManager.js +2 -1
- package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/appui-react/widget-panels/ToolSettings.js +1 -1
- package/lib/appui-react/widget-panels/ToolSettings.js.map +1 -1
- package/lib/appui-react/widgets/BasicNavigationWidget.d.ts.map +1 -1
- package/lib/appui-react/widgets/BasicNavigationWidget.js +1 -5
- package/lib/appui-react/widgets/BasicNavigationWidget.js.map +1 -1
- package/lib/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
- package/lib/appui-react/widgets/BasicToolWidget.js +3 -5
- package/lib/appui-react/widgets/BasicToolWidget.js.map +1 -1
- package/lib/appui-react/widgets/ContentToolWidgetComposer.d.ts.map +1 -1
- package/lib/appui-react/widgets/ContentToolWidgetComposer.js +1 -6
- package/lib/appui-react/widgets/ContentToolWidgetComposer.js.map +1 -1
- package/lib/appui-react/widgets/NavigationWidgetComposer.d.ts.map +1 -1
- package/lib/appui-react/widgets/NavigationWidgetComposer.js +3 -1
- package/lib/appui-react/widgets/NavigationWidgetComposer.js.map +1 -1
- package/lib/appui-react/widgets/ToolWidgetComposer.d.ts.map +1 -1
- package/lib/appui-react/widgets/ToolWidgetComposer.js +3 -1
- package/lib/appui-react/widgets/ToolWidgetComposer.js.map +1 -1
- package/lib/appui-react/widgets/ViewToolWidgetComposer.d.ts.map +1 -1
- package/lib/appui-react/widgets/ViewToolWidgetComposer.js +1 -5
- package/lib/appui-react/widgets/ViewToolWidgetComposer.js.map +1 -1
- package/lib/appui-react.d.ts +3 -2
- package/lib/appui-react.d.ts.map +1 -1
- package/lib/appui-react.js +3 -2
- package/lib/appui-react.js.map +1 -1
- package/package.json +7 -7
- package/lib/appui-react/toolbar/useActiveToolIdSynchedItems.d.ts +0 -25
- package/lib/appui-react/toolbar/useActiveToolIdSynchedItems.d.ts.map +0 -1
- package/lib/appui-react/toolbar/useActiveToolIdSynchedItems.js +0 -47
- package/lib/appui-react/toolbar/useActiveToolIdSynchedItems.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiSettingsPage.js","sourceRoot":"","sources":["../../../../src/appui-react/settings/ui/UiSettingsPage.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 { SvgWindowSettings } from \"@itwin/itwinui-icons-react\";\nimport \"./UiSettingsPage.scss\";\nimport * as React from \"react\";\nimport type { SettingsTabEntry } from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework.js\";\nimport {\n SyncUiEventDispatcher,\n SyncUiEventId,\n} from \"../../syncui/SyncUiEventDispatcher.js\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nimport { Select, Slider, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport { useTranslation } from \"../../hooks/useTranslation.js\";\nimport {\n ColorTheme,\n SYSTEM_PREFERRED_COLOR_THEME,\n} from \"../../theme/ThemeId.js\";\nimport { ConfigurableUiActionId } from \"../../redux/ConfigurableUiState.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** UiSettingsPage displaying the active UI settings. This page lets users set the following settings.\n *\n * - theme - Dark, Light, with or without High contrast, or based on OS preference.\n * - auto hide - Starts a timer and blanks out ui components that overlay content if there is no mouse movement for a period of time.\n * - drag interaction - If set, toolbar group buttons require a press and drag or a long press to open. In this mode a child action\n * item is shown as the group button and is activated when button is clicked. If a different child item is selected, it becomes the\n * active group button item.\n * - use proximity - Changes the opacity of toolbar from transparent to opaque as the mouse moves closer.\n * - snap widget opacity - triggers an abrupt change from transparent to opaque for tool and navigation widgets, instead of a gradual change based on mouse location.\n * - widget opacity - determines how transparent floating widgets become when the mouse in not in them.\n * @beta\n * @deprecated in 4.15.0. Use iTwinUI components to build a settings page.\n */\nexport function UiSettingsPage() {\n const { translate } = useTranslation();\n const [theme, setTheme] = React.useState(() => UiFramework.getColorTheme());\n const [useDragInteraction, setUseDragInteraction] = React.useState(\n () => UiFramework.useDragInteraction\n );\n const [showWidgetIcon, setShowWidgetIcon] = React.useState(\n () => UiFramework.showWidgetIcon\n );\n const [autoCollapseUnpinnedPanels, setAutoCollapseUnpinnedPanels] =\n React.useState(() => UiFramework.autoCollapseUnpinnedPanels);\n const [animateToolSettings, setAnimateToolSettings] = React.useState(\n () => UiFramework.animateToolSettings\n );\n const [useToolAsToolSettingsLabel, setUseToolAsToolSettingsLabel] =\n React.useState(() => UiFramework.useToolAsToolSettingsLabel);\n const [widgetOpacity, setWidgetOpacity] = React.useState(() =>\n UiFramework.getWidgetOpacity()\n );\n const [autoHideUi, setAutoHideUi] = React.useState(\n () => UiFramework.visibility.autoHideUi\n );\n const [useProximityOpacity, setUseProximityOpacity] = React.useState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n () => UiFramework.visibility.useProximityOpacity\n );\n const [snapWidgetOpacity, setSnapWidgetOpacity] = React.useState(\n () => UiFramework.visibility.snapWidgetOpacity\n );\n const [toolbarOpacity, setToolbarOpacity] = React.useState(() =>\n UiFramework.getToolbarOpacity()\n );\n\n React.useEffect(() => {\n const syncIdsOfInterest = [\n ConfigurableUiActionId.SetTheme,\n ConfigurableUiActionId.SetWidgetOpacity,\n ConfigurableUiActionId.SetShowWidgetIcon,\n ConfigurableUiActionId.SetDragInteraction,\n ConfigurableUiActionId.AutoCollapseUnpinnedPanels,\n ConfigurableUiActionId.AnimateToolSettings,\n ConfigurableUiActionId.UseToolAsToolSettingsLabel,\n ConfigurableUiActionId.SetToolbarOpacity,\n SyncUiEventId.ShowHideManagerSettingChange,\n ];\n\n return SyncUiEventDispatcher.onSyncUiEvent.addListener((args) => {\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value)\n )\n ) {\n if (UiFramework.getColorTheme() !== theme)\n setTheme(UiFramework.getColorTheme());\n if (UiFramework.visibility.autoHideUi !== autoHideUi)\n setAutoHideUi(UiFramework.visibility.autoHideUi);\n if (UiFramework.useDragInteraction !== useDragInteraction)\n setUseDragInteraction(UiFramework.useDragInteraction);\n if (UiFramework.showWidgetIcon !== showWidgetIcon)\n setShowWidgetIcon(UiFramework.showWidgetIcon);\n if (\n UiFramework.autoCollapseUnpinnedPanels !== autoCollapseUnpinnedPanels\n )\n setAutoCollapseUnpinnedPanels(UiFramework.autoCollapseUnpinnedPanels);\n if (UiFramework.getWidgetOpacity() !== widgetOpacity)\n setWidgetOpacity(UiFramework.getWidgetOpacity());\n if (UiFramework.visibility.autoHideUi !== autoHideUi)\n setAutoHideUi(UiFramework.visibility.autoHideUi);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (UiFramework.visibility.useProximityOpacity !== useProximityOpacity)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n setUseProximityOpacity(UiFramework.visibility.useProximityOpacity);\n if (UiFramework.visibility.snapWidgetOpacity !== snapWidgetOpacity)\n setSnapWidgetOpacity(UiFramework.visibility.snapWidgetOpacity);\n if (UiFramework.animateToolSettings !== animateToolSettings)\n setAnimateToolSettings(UiFramework.animateToolSettings);\n if (\n UiFramework.useToolAsToolSettingsLabel !== useToolAsToolSettingsLabel\n )\n setUseToolAsToolSettingsLabel(UiFramework.useToolAsToolSettingsLabel);\n if (UiFramework.getToolbarOpacity() !== toolbarOpacity)\n setToolbarOpacity(UiFramework.getToolbarOpacity());\n }\n });\n }, [\n autoCollapseUnpinnedPanels,\n autoHideUi,\n showWidgetIcon,\n snapWidgetOpacity,\n theme,\n useDragInteraction,\n useProximityOpacity,\n widgetOpacity,\n animateToolSettings,\n useToolAsToolSettingsLabel,\n toolbarOpacity,\n ]);\n\n const defaultThemeOption = {\n label: translate(\"settings.uiSettingsPage.systemPreferred\"),\n value: SYSTEM_PREFERRED_COLOR_THEME,\n };\n const themeOptions: SelectOption<string>[] = [\n defaultThemeOption,\n {\n label: translate(\"settings.uiSettingsPage.light\"),\n value: ColorTheme.Light,\n },\n {\n label: translate(\"settings.uiSettingsPage.dark\"),\n value: ColorTheme.Dark,\n },\n {\n label: translate(\"settings.uiSettingsPage.lightHighContrast\"),\n value: ColorTheme.HighContrastLight,\n },\n {\n label: translate(\"settings.uiSettingsPage.darkHighContrast\"),\n value: ColorTheme.HighContrastDark,\n },\n {\n label: translate(\"settings.uiSettingsPage.inherit\"),\n value: ColorTheme.Inherit,\n },\n ];\n\n const onThemeChange = React.useCallback((newValue: string) => {\n UiFramework.setColorTheme(newValue);\n }, []);\n\n const onAutoHideChange = React.useCallback(async () => {\n UiFramework.visibility.autoHideUi = !autoHideUi;\n }, [autoHideUi]);\n\n const onUseProximityOpacityChange = React.useCallback(async () => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.visibility.useProximityOpacity = !useProximityOpacity;\n }, [useProximityOpacity]);\n\n const onSnapWidgetOpacityChange = React.useCallback(async () => {\n UiFramework.visibility.snapWidgetOpacity = !snapWidgetOpacity;\n }, [snapWidgetOpacity]);\n\n const onWidgetIconChange = React.useCallback(async () => {\n UiFramework.setShowWidgetIcon(!showWidgetIcon);\n }, [showWidgetIcon]);\n\n const onAutoCollapseUnpinnedPanelsChange = React.useCallback(async () => {\n UiFramework.setAutoCollapseUnpinnedPanels(!autoCollapseUnpinnedPanels);\n }, [autoCollapseUnpinnedPanels]);\n\n const onWidgetOpacityChange = React.useCallback(\n async (values: readonly number[]) => {\n if (values.length > 0) {\n UiFramework.setWidgetOpacity(values[0]);\n }\n },\n []\n );\n\n const onToggleDragInteraction = React.useCallback(async () => {\n UiFramework.setUseDragInteraction(!useDragInteraction);\n }, [useDragInteraction]);\n\n const OnToggleAnimateToolSettings = React.useCallback(async () => {\n UiFramework.setAnimateToolSettings(!animateToolSettings);\n }, [animateToolSettings]);\n const currentTheme = UiFramework.getColorTheme();\n\n const OnToggleUseToolAsToolSettingsLabel = React.useCallback(async () => {\n UiFramework.setUseToolAsToolSettingsLabel(!useToolAsToolSettingsLabel);\n }, [useToolAsToolSettingsLabel]);\n\n const onToolbarOpacityChange = React.useCallback(\n async (values: readonly number[]) => {\n if (values.length > 0) {\n UiFramework.setToolbarOpacity(values[0]);\n }\n },\n []\n );\n\n return (\n <div className=\"uifw-settings\">\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.themeTitle\")}\n description={translate(\"settings.uiSettingsPage.themeDescription\")}\n settingUi={\n <div\n data-testid=\"select-theme-container\"\n className=\"select-theme-container\"\n >\n <Select\n value={currentTheme}\n onChange={onThemeChange}\n options={themeOptions}\n data-testid=\"select-theme\"\n size=\"small\"\n />\n </div>\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.autoHideTitle\")}\n description={translate(\"settings.uiSettingsPage.autoHideDescription\")}\n settingUi={\n <ToggleSwitch checked={autoHideUi} onChange={onAutoHideChange} />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.dragInteractionTitle\")}\n description={translate(\n \"settings.uiSettingsPage.dragInteractionDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={useDragInteraction}\n onChange={onToggleDragInteraction}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.useProximityOpacityTitle\")}\n description={translate(\n \"settings.uiSettingsPage.useProximityOpacityDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={useProximityOpacity}\n onChange={onUseProximityOpacityChange}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.snapWidgetOpacityTitle\")}\n description={translate(\n \"settings.uiSettingsPage.snapWidgetOpacityDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={snapWidgetOpacity}\n onChange={onSnapWidgetOpacityChange}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.widgetIconTitle\")}\n description={translate(\"settings.uiSettingsPage.widgetIconDescription\")}\n settingUi={\n <ToggleSwitch\n checked={showWidgetIcon}\n onChange={onWidgetIconChange}\n />\n }\n />\n <SettingsItem\n title={translate(\n \"settings.uiSettingsPage.autoCollapseUnpinnedPanelsTitle\"\n )}\n description={translate(\n \"settings.uiSettingsPage.autoCollapseUnpinnedPanelsDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={autoCollapseUnpinnedPanels}\n onChange={onAutoCollapseUnpinnedPanelsChange}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.animateToolSettingsTitle\")}\n description={translate(\n \"settings.uiSettingsPage.animateToolSettingsDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={animateToolSettings}\n onChange={OnToggleAnimateToolSettings}\n />\n }\n />\n <SettingsItem\n title={translate(\n \"settings.uiSettingsPage.useToolAsToolSettingsLabelTitle\"\n )}\n description={translate(\n \"settings.uiSettingsPage.useToolAsToolSettingsLabelDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={useToolAsToolSettingsLabel}\n onChange={OnToggleUseToolAsToolSettingsLabel}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.toolbarOpacityTitle\")}\n description={translate(\n \"settings.uiSettingsPage.toolbarOpacityDescription\"\n )}\n settingUi={\n <Slider\n style={{ flex: \"1\" }}\n values={[toolbarOpacity]}\n step={0.05}\n onChange={onToolbarOpacityChange}\n min={0.2}\n max={1.0}\n maxLabel=\"1.0\"\n tickLabels={[\"\", \"\", \"\", \"\", \"\"]}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.widgetOpacityTitle\")}\n description={translate(\n \"settings.uiSettingsPage.widgetOpacityDescription\"\n )}\n settingUi={\n <Slider\n style={{ flex: \"1\" }}\n values={[widgetOpacity]}\n step={0.05}\n onChange={onWidgetOpacityChange}\n min={0.2}\n max={1.0}\n maxLabel=\"1.0\"\n tickLabels={[\"\", \"\", \"\", \"\", \"\"]}\n />\n }\n />\n </div>\n );\n}\n\ninterface SettingsItemProps {\n title: string;\n description: string;\n settingUi: React.ReactNode;\n}\n\nfunction SettingsItem(props: SettingsItemProps) {\n const { title, description, settingUi } = props;\n\n return (\n <div className=\"uifw-settings-item\">\n <div className=\"panel left-panel\">\n <span className=\"title\">{title}</span>\n <span className=\"description\">{description}</span>\n </div>\n <div className=\"panel right-panel\">{settingUi}</div>\n </div>\n );\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 * @beta\n */\nexport function getUiSettingsManagerEntry(\n itemPriority: number\n): SettingsTabEntry {\n return {\n itemPriority,\n tabId: \"uifw:UiStateStorage\",\n label: UiFramework.translate(\"settings.uiSettingsPage.label\"),\n icon: <SvgWindowSettings />,\n page: <UiSettingsPage />,\n isDisabled: false,\n tooltip: UiFramework.translate(\"settings.uiSettingsPage.tooltip\"),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"UiSettingsPage.js","sourceRoot":"","sources":["../../../../src/appui-react/settings/ui/UiSettingsPage.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 { SvgWindowSettings } from \"@itwin/itwinui-icons-react\";\nimport \"./UiSettingsPage.scss\";\nimport * as React from \"react\";\nimport type { SettingsTabEntry } from \"@itwin/core-react\";\nimport { UiFramework } from \"../../UiFramework.js\";\nimport { SyncUiEventDispatcher } from \"../../syncui/SyncUiEventDispatcher.js\";\nimport type { SelectOption } from \"@itwin/itwinui-react\";\nimport { Select, Slider, ToggleSwitch } from \"@itwin/itwinui-react\";\nimport { useTranslation } from \"../../hooks/useTranslation.js\";\nimport {\n ColorTheme,\n SYSTEM_PREFERRED_COLOR_THEME,\n} from \"../../theme/ThemeId.js\";\nimport { ConfigurableUiActionId } from \"../../redux/ConfigurableUiState.js\";\nimport { SyncUiEventId } from \"../../syncui/UiSyncEvent.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** UiSettingsPage displaying the active UI settings. This page lets users set the following settings.\n *\n * - theme - Dark, Light, with or without High contrast, or based on OS preference.\n * - auto hide - Starts a timer and blanks out ui components that overlay content if there is no mouse movement for a period of time.\n * - drag interaction - If set, toolbar group buttons require a press and drag or a long press to open. In this mode a child action\n * item is shown as the group button and is activated when button is clicked. If a different child item is selected, it becomes the\n * active group button item.\n * - use proximity - Changes the opacity of toolbar from transparent to opaque as the mouse moves closer.\n * - snap widget opacity - triggers an abrupt change from transparent to opaque for tool and navigation widgets, instead of a gradual change based on mouse location.\n * - widget opacity - determines how transparent floating widgets become when the mouse in not in them.\n * @beta\n * @deprecated in 4.15.0. Use iTwinUI components to build a settings page.\n */\nexport function UiSettingsPage() {\n const { translate } = useTranslation();\n const [theme, setTheme] = React.useState(() => UiFramework.getColorTheme());\n const [useDragInteraction, setUseDragInteraction] = React.useState(\n () => UiFramework.useDragInteraction\n );\n const [showWidgetIcon, setShowWidgetIcon] = React.useState(\n () => UiFramework.showWidgetIcon\n );\n const [autoCollapseUnpinnedPanels, setAutoCollapseUnpinnedPanels] =\n React.useState(() => UiFramework.autoCollapseUnpinnedPanels);\n const [animateToolSettings, setAnimateToolSettings] = React.useState(\n () => UiFramework.animateToolSettings\n );\n const [useToolAsToolSettingsLabel, setUseToolAsToolSettingsLabel] =\n React.useState(() => UiFramework.useToolAsToolSettingsLabel);\n const [widgetOpacity, setWidgetOpacity] = React.useState(() =>\n UiFramework.getWidgetOpacity()\n );\n const [autoHideUi, setAutoHideUi] = React.useState(\n () => UiFramework.visibility.autoHideUi\n );\n const [useProximityOpacity, setUseProximityOpacity] = React.useState(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n () => UiFramework.visibility.useProximityOpacity\n );\n const [snapWidgetOpacity, setSnapWidgetOpacity] = React.useState(\n () => UiFramework.visibility.snapWidgetOpacity\n );\n const [toolbarOpacity, setToolbarOpacity] = React.useState(() =>\n UiFramework.getToolbarOpacity()\n );\n\n React.useEffect(() => {\n const syncIdsOfInterest = [\n ConfigurableUiActionId.SetTheme,\n ConfigurableUiActionId.SetWidgetOpacity,\n ConfigurableUiActionId.SetShowWidgetIcon,\n ConfigurableUiActionId.SetDragInteraction,\n ConfigurableUiActionId.AutoCollapseUnpinnedPanels,\n ConfigurableUiActionId.AnimateToolSettings,\n ConfigurableUiActionId.UseToolAsToolSettingsLabel,\n ConfigurableUiActionId.SetToolbarOpacity,\n SyncUiEventId.ShowHideManagerSettingChange,\n ];\n\n return SyncUiEventDispatcher.onSyncUiEvent.addListener((args) => {\n if (\n syncIdsOfInterest.some((value: string): boolean =>\n args.eventIds.has(value)\n )\n ) {\n if (UiFramework.getColorTheme() !== theme)\n setTheme(UiFramework.getColorTheme());\n if (UiFramework.visibility.autoHideUi !== autoHideUi)\n setAutoHideUi(UiFramework.visibility.autoHideUi);\n if (UiFramework.useDragInteraction !== useDragInteraction)\n setUseDragInteraction(UiFramework.useDragInteraction);\n if (UiFramework.showWidgetIcon !== showWidgetIcon)\n setShowWidgetIcon(UiFramework.showWidgetIcon);\n if (\n UiFramework.autoCollapseUnpinnedPanels !== autoCollapseUnpinnedPanels\n )\n setAutoCollapseUnpinnedPanels(UiFramework.autoCollapseUnpinnedPanels);\n if (UiFramework.getWidgetOpacity() !== widgetOpacity)\n setWidgetOpacity(UiFramework.getWidgetOpacity());\n if (UiFramework.visibility.autoHideUi !== autoHideUi)\n setAutoHideUi(UiFramework.visibility.autoHideUi);\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (UiFramework.visibility.useProximityOpacity !== useProximityOpacity)\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n setUseProximityOpacity(UiFramework.visibility.useProximityOpacity);\n if (UiFramework.visibility.snapWidgetOpacity !== snapWidgetOpacity)\n setSnapWidgetOpacity(UiFramework.visibility.snapWidgetOpacity);\n if (UiFramework.animateToolSettings !== animateToolSettings)\n setAnimateToolSettings(UiFramework.animateToolSettings);\n if (\n UiFramework.useToolAsToolSettingsLabel !== useToolAsToolSettingsLabel\n )\n setUseToolAsToolSettingsLabel(UiFramework.useToolAsToolSettingsLabel);\n if (UiFramework.getToolbarOpacity() !== toolbarOpacity)\n setToolbarOpacity(UiFramework.getToolbarOpacity());\n }\n });\n }, [\n autoCollapseUnpinnedPanels,\n autoHideUi,\n showWidgetIcon,\n snapWidgetOpacity,\n theme,\n useDragInteraction,\n useProximityOpacity,\n widgetOpacity,\n animateToolSettings,\n useToolAsToolSettingsLabel,\n toolbarOpacity,\n ]);\n\n const defaultThemeOption = {\n label: translate(\"settings.uiSettingsPage.systemPreferred\"),\n value: SYSTEM_PREFERRED_COLOR_THEME,\n };\n const themeOptions: SelectOption<string>[] = [\n defaultThemeOption,\n {\n label: translate(\"settings.uiSettingsPage.light\"),\n value: ColorTheme.Light,\n },\n {\n label: translate(\"settings.uiSettingsPage.dark\"),\n value: ColorTheme.Dark,\n },\n {\n label: translate(\"settings.uiSettingsPage.lightHighContrast\"),\n value: ColorTheme.HighContrastLight,\n },\n {\n label: translate(\"settings.uiSettingsPage.darkHighContrast\"),\n value: ColorTheme.HighContrastDark,\n },\n {\n label: translate(\"settings.uiSettingsPage.inherit\"),\n value: ColorTheme.Inherit,\n },\n ];\n\n const onThemeChange = React.useCallback((newValue: string) => {\n UiFramework.setColorTheme(newValue);\n }, []);\n\n const onAutoHideChange = React.useCallback(async () => {\n UiFramework.visibility.autoHideUi = !autoHideUi;\n }, [autoHideUi]);\n\n const onUseProximityOpacityChange = React.useCallback(async () => {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.visibility.useProximityOpacity = !useProximityOpacity;\n }, [useProximityOpacity]);\n\n const onSnapWidgetOpacityChange = React.useCallback(async () => {\n UiFramework.visibility.snapWidgetOpacity = !snapWidgetOpacity;\n }, [snapWidgetOpacity]);\n\n const onWidgetIconChange = React.useCallback(async () => {\n UiFramework.setShowWidgetIcon(!showWidgetIcon);\n }, [showWidgetIcon]);\n\n const onAutoCollapseUnpinnedPanelsChange = React.useCallback(async () => {\n UiFramework.setAutoCollapseUnpinnedPanels(!autoCollapseUnpinnedPanels);\n }, [autoCollapseUnpinnedPanels]);\n\n const onWidgetOpacityChange = React.useCallback(\n async (values: readonly number[]) => {\n if (values.length > 0) {\n UiFramework.setWidgetOpacity(values[0]);\n }\n },\n []\n );\n\n const onToggleDragInteraction = React.useCallback(async () => {\n UiFramework.setUseDragInteraction(!useDragInteraction);\n }, [useDragInteraction]);\n\n const OnToggleAnimateToolSettings = React.useCallback(async () => {\n UiFramework.setAnimateToolSettings(!animateToolSettings);\n }, [animateToolSettings]);\n const currentTheme = UiFramework.getColorTheme();\n\n const OnToggleUseToolAsToolSettingsLabel = React.useCallback(async () => {\n UiFramework.setUseToolAsToolSettingsLabel(!useToolAsToolSettingsLabel);\n }, [useToolAsToolSettingsLabel]);\n\n const onToolbarOpacityChange = React.useCallback(\n async (values: readonly number[]) => {\n if (values.length > 0) {\n UiFramework.setToolbarOpacity(values[0]);\n }\n },\n []\n );\n\n return (\n <div className=\"uifw-settings\">\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.themeTitle\")}\n description={translate(\"settings.uiSettingsPage.themeDescription\")}\n settingUi={\n <div\n data-testid=\"select-theme-container\"\n className=\"select-theme-container\"\n >\n <Select\n value={currentTheme}\n onChange={onThemeChange}\n options={themeOptions}\n data-testid=\"select-theme\"\n size=\"small\"\n />\n </div>\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.autoHideTitle\")}\n description={translate(\"settings.uiSettingsPage.autoHideDescription\")}\n settingUi={\n <ToggleSwitch checked={autoHideUi} onChange={onAutoHideChange} />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.dragInteractionTitle\")}\n description={translate(\n \"settings.uiSettingsPage.dragInteractionDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={useDragInteraction}\n onChange={onToggleDragInteraction}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.useProximityOpacityTitle\")}\n description={translate(\n \"settings.uiSettingsPage.useProximityOpacityDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={useProximityOpacity}\n onChange={onUseProximityOpacityChange}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.snapWidgetOpacityTitle\")}\n description={translate(\n \"settings.uiSettingsPage.snapWidgetOpacityDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={snapWidgetOpacity}\n onChange={onSnapWidgetOpacityChange}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.widgetIconTitle\")}\n description={translate(\"settings.uiSettingsPage.widgetIconDescription\")}\n settingUi={\n <ToggleSwitch\n checked={showWidgetIcon}\n onChange={onWidgetIconChange}\n />\n }\n />\n <SettingsItem\n title={translate(\n \"settings.uiSettingsPage.autoCollapseUnpinnedPanelsTitle\"\n )}\n description={translate(\n \"settings.uiSettingsPage.autoCollapseUnpinnedPanelsDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={autoCollapseUnpinnedPanels}\n onChange={onAutoCollapseUnpinnedPanelsChange}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.animateToolSettingsTitle\")}\n description={translate(\n \"settings.uiSettingsPage.animateToolSettingsDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={animateToolSettings}\n onChange={OnToggleAnimateToolSettings}\n />\n }\n />\n <SettingsItem\n title={translate(\n \"settings.uiSettingsPage.useToolAsToolSettingsLabelTitle\"\n )}\n description={translate(\n \"settings.uiSettingsPage.useToolAsToolSettingsLabelDescription\"\n )}\n settingUi={\n <ToggleSwitch\n checked={useToolAsToolSettingsLabel}\n onChange={OnToggleUseToolAsToolSettingsLabel}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.toolbarOpacityTitle\")}\n description={translate(\n \"settings.uiSettingsPage.toolbarOpacityDescription\"\n )}\n settingUi={\n <Slider\n style={{ flex: \"1\" }}\n values={[toolbarOpacity]}\n step={0.05}\n onChange={onToolbarOpacityChange}\n min={0.2}\n max={1.0}\n maxLabel=\"1.0\"\n tickLabels={[\"\", \"\", \"\", \"\", \"\"]}\n />\n }\n />\n <SettingsItem\n title={translate(\"settings.uiSettingsPage.widgetOpacityTitle\")}\n description={translate(\n \"settings.uiSettingsPage.widgetOpacityDescription\"\n )}\n settingUi={\n <Slider\n style={{ flex: \"1\" }}\n values={[widgetOpacity]}\n step={0.05}\n onChange={onWidgetOpacityChange}\n min={0.2}\n max={1.0}\n maxLabel=\"1.0\"\n tickLabels={[\"\", \"\", \"\", \"\", \"\"]}\n />\n }\n />\n </div>\n );\n}\n\ninterface SettingsItemProps {\n title: string;\n description: string;\n settingUi: React.ReactNode;\n}\n\nfunction SettingsItem(props: SettingsItemProps) {\n const { title, description, settingUi } = props;\n\n return (\n <div className=\"uifw-settings-item\">\n <div className=\"panel left-panel\">\n <span className=\"title\">{title}</span>\n <span className=\"description\">{description}</span>\n </div>\n <div className=\"panel right-panel\">{settingUi}</div>\n </div>\n );\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 * @beta\n */\nexport function getUiSettingsManagerEntry(\n itemPriority: number\n): SettingsTabEntry {\n return {\n itemPriority,\n tabId: \"uifw:UiStateStorage\",\n label: UiFramework.translate(\"settings.uiSettingsPage.label\"),\n icon: <SvgWindowSettings />,\n page: <UiSettingsPage />,\n isDisabled: false,\n tooltip: UiFramework.translate(\"settings.uiSettingsPage.tooltip\"),\n };\n}\n"]}
|
|
@@ -2,54 +2,7 @@
|
|
|
2
2
|
* @module SyncUi
|
|
3
3
|
*/
|
|
4
4
|
import type { IModelConnection } from "@itwin/core-frontend";
|
|
5
|
-
import type
|
|
6
|
-
/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.
|
|
7
|
-
* @public
|
|
8
|
-
*/
|
|
9
|
-
export declare enum SyncUiEventId {
|
|
10
|
-
/** AccuDraw compass mode has changed. */
|
|
11
|
-
AccuDrawCompassModeChanged = "accudrawcompassmodechanged",
|
|
12
|
-
/** AccuDraw rotation has changed. */
|
|
13
|
-
AccuDrawRotationChanged = "accudrawrotationchanged",
|
|
14
|
-
/** The active content as maintained by the ContentViewManager has changed. */
|
|
15
|
-
ActiveContentChanged = "activecontentchanged",
|
|
16
|
-
/** The active view maintained by the ViewManager has changed. */
|
|
17
|
-
ActiveViewportChanged = "activeviewportchanged",
|
|
18
|
-
/** Backstage has been toggled. */
|
|
19
|
-
BackstageEvent = "backstageevent",
|
|
20
|
-
/** A Content Layout has been activated. */
|
|
21
|
-
ContentLayoutActivated = "contentlayoutactivated",
|
|
22
|
-
/** A Content Control maintained by UiFramework.frontstages has been activated.
|
|
23
|
-
* @deprecated in 4.16.0. Use {@link SyncUiEventId.ActiveContentChanged} instead.
|
|
24
|
-
*/
|
|
25
|
-
ContentControlActivated = "contentcontrolactivated",
|
|
26
|
-
/** A Frontstage is activating. */
|
|
27
|
-
FrontstageActivating = "frontstageactivating",
|
|
28
|
-
/** A Frontstage has been activated and the content has been assigned. */
|
|
29
|
-
FrontstageReady = "frontstageready",
|
|
30
|
-
/** A Modal Frontstage has been opened or closed. */
|
|
31
|
-
ModalFrontstageChanged = "modalfrontstagechanged",
|
|
32
|
-
/** A Modal Dialog has been opened or closed. */
|
|
33
|
-
ModalDialogChanged = "modaldialogchanged",
|
|
34
|
-
/** A NavigationAid has been activated. */
|
|
35
|
-
NavigationAidActivated = "navigationaidactivated",
|
|
36
|
-
/** An InteractiveTool has been activated via the ToolAdmin. */
|
|
37
|
-
ToolActivated = "toolactivated",
|
|
38
|
-
/** The state of a Widget has changed. */
|
|
39
|
-
WidgetStateChanged = "widgetstatechanged",
|
|
40
|
-
/** The SelectionSet for the active IModelConnection has changed. */
|
|
41
|
-
SelectionSetChanged = "selectionsetchanged",
|
|
42
|
-
/** The list of settings providers registered with SettingsManager has changed. */
|
|
43
|
-
SettingsProvidersChanged = "settingsproviderschanged",
|
|
44
|
-
/** The current view state has changed (used by view undo/redo toolbar buttons). */
|
|
45
|
-
ViewStateChanged = "viewstatechanged",
|
|
46
|
-
/** The current object the reads and write UI State has changed. */
|
|
47
|
-
UiStateStorageChanged = "uistatestoragechanged",
|
|
48
|
-
ShowHideManagerSettingChange = "show-hide-setting-change",
|
|
49
|
-
/** The list of feature overrides applied has been changed */
|
|
50
|
-
FeatureOverridesChanged = "featureoverrideschanged",
|
|
51
|
-
ViewedModelsChanged = "viewedmodelschanged"
|
|
52
|
-
}
|
|
5
|
+
import { type UiSyncEvent } from "./UiSyncEvent.js";
|
|
53
6
|
/** This class is used to send eventIds to interested UI components so the component can determine if it needs
|
|
54
7
|
* to refresh its display by calling setState on itself.
|
|
55
8
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncUiEventDispatcher.d.ts","sourceRoot":"","sources":["../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"SyncUiEventDispatcher.d.ts","sourceRoot":"","sources":["../../../src/appui-react/syncui/SyncUiEventDispatcher.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGnE;;;GAGG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAuC;IACxE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAA2B;IAC1D,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAA2B;IACpE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAmB;WAEtC,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAIpD,+DAA+D;IAC/D,WAAkB,YAAY,IAAI,GAAG,CAAC,MAAM,CAAC,CAE5C;IAED,oEAAoE;IAEpE,WAAkB,aAAa,IAAI,WAAW,CAE7C;IAED,iDAAiD;WACnC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjE,0CAA0C;WAC5B,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAWxD,oDAAoD;WACtC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAU5D,kFAAkF;WACpE,kBAAkB,CAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EACrB,aAAa,EAAE,MAAM,EAAE;IAQzB,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAMlC,OAAO,CAAC,MAAM,CAAC,+BAA+B;IAM9C,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAM3C,gFAAgF;WAClE,UAAU;IA4FxB,qFAAqF;WACvE,qBAAqB,CAAC,gBAAgB,EAAE,gBAAgB;IAMtE,0FAA0F;WAC5E,0BAA0B,CAAC,gBAAgB,EAAE,gBAAgB;CAiB5E"}
|
|
@@ -8,55 +8,8 @@
|
|
|
8
8
|
import { Logger } from "@itwin/core-bentley";
|
|
9
9
|
import { IModelApp } from "@itwin/core-frontend";
|
|
10
10
|
import { UiFramework } from "../UiFramework.js";
|
|
11
|
+
import { SyncUiEventId } from "./UiSyncEvent.js";
|
|
11
12
|
import { InternalSyncUiEventDispatcher } from "./InternalSyncUiEventDispatcher.js";
|
|
12
|
-
/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.
|
|
13
|
-
* @public
|
|
14
|
-
*/
|
|
15
|
-
export var SyncUiEventId;
|
|
16
|
-
(function (SyncUiEventId) {
|
|
17
|
-
/** AccuDraw compass mode has changed. */
|
|
18
|
-
SyncUiEventId["AccuDrawCompassModeChanged"] = "accudrawcompassmodechanged";
|
|
19
|
-
/** AccuDraw rotation has changed. */
|
|
20
|
-
SyncUiEventId["AccuDrawRotationChanged"] = "accudrawrotationchanged";
|
|
21
|
-
/** The active content as maintained by the ContentViewManager has changed. */
|
|
22
|
-
SyncUiEventId["ActiveContentChanged"] = "activecontentchanged";
|
|
23
|
-
/** The active view maintained by the ViewManager has changed. */
|
|
24
|
-
SyncUiEventId["ActiveViewportChanged"] = "activeviewportchanged";
|
|
25
|
-
/** Backstage has been toggled. */
|
|
26
|
-
SyncUiEventId["BackstageEvent"] = "backstageevent";
|
|
27
|
-
/** A Content Layout has been activated. */
|
|
28
|
-
SyncUiEventId["ContentLayoutActivated"] = "contentlayoutactivated";
|
|
29
|
-
/** A Content Control maintained by UiFramework.frontstages has been activated.
|
|
30
|
-
* @deprecated in 4.16.0. Use {@link SyncUiEventId.ActiveContentChanged} instead.
|
|
31
|
-
*/
|
|
32
|
-
SyncUiEventId["ContentControlActivated"] = "contentcontrolactivated";
|
|
33
|
-
/** A Frontstage is activating. */
|
|
34
|
-
SyncUiEventId["FrontstageActivating"] = "frontstageactivating";
|
|
35
|
-
/** A Frontstage has been activated and the content has been assigned. */
|
|
36
|
-
SyncUiEventId["FrontstageReady"] = "frontstageready";
|
|
37
|
-
/** A Modal Frontstage has been opened or closed. */
|
|
38
|
-
SyncUiEventId["ModalFrontstageChanged"] = "modalfrontstagechanged";
|
|
39
|
-
/** A Modal Dialog has been opened or closed. */
|
|
40
|
-
SyncUiEventId["ModalDialogChanged"] = "modaldialogchanged";
|
|
41
|
-
/** A NavigationAid has been activated. */
|
|
42
|
-
SyncUiEventId["NavigationAidActivated"] = "navigationaidactivated";
|
|
43
|
-
/** An InteractiveTool has been activated via the ToolAdmin. */
|
|
44
|
-
SyncUiEventId["ToolActivated"] = "toolactivated";
|
|
45
|
-
/** The state of a Widget has changed. */
|
|
46
|
-
SyncUiEventId["WidgetStateChanged"] = "widgetstatechanged";
|
|
47
|
-
/** The SelectionSet for the active IModelConnection has changed. */
|
|
48
|
-
SyncUiEventId["SelectionSetChanged"] = "selectionsetchanged";
|
|
49
|
-
/** The list of settings providers registered with SettingsManager has changed. */
|
|
50
|
-
SyncUiEventId["SettingsProvidersChanged"] = "settingsproviderschanged";
|
|
51
|
-
/** The current view state has changed (used by view undo/redo toolbar buttons). */
|
|
52
|
-
SyncUiEventId["ViewStateChanged"] = "viewstatechanged";
|
|
53
|
-
/** The current object the reads and write UI State has changed. */
|
|
54
|
-
SyncUiEventId["UiStateStorageChanged"] = "uistatestoragechanged";
|
|
55
|
-
SyncUiEventId["ShowHideManagerSettingChange"] = "show-hide-setting-change";
|
|
56
|
-
/** The list of feature overrides applied has been changed */
|
|
57
|
-
SyncUiEventId["FeatureOverridesChanged"] = "featureoverrideschanged";
|
|
58
|
-
SyncUiEventId["ViewedModelsChanged"] = "viewedmodelschanged";
|
|
59
|
-
})(SyncUiEventId || (SyncUiEventId = {}));
|
|
60
13
|
/** This class is used to send eventIds to interested UI components so the component can determine if it needs
|
|
61
14
|
* to refresh its display by calling setState on itself.
|
|
62
15
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../src/appui-react/syncui/SyncUiEventDispatcher.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 SyncUi\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { UiSyncEvent } from \"./UiSyncEvent.js\";\nimport { InternalSyncUiEventDispatcher } from \"./InternalSyncUiEventDispatcher.js\";\n\n/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.\n * @public\n */\nexport enum SyncUiEventId {\n /** AccuDraw compass mode has changed. */\n AccuDrawCompassModeChanged = \"accudrawcompassmodechanged\",\n /** AccuDraw rotation has changed. */\n AccuDrawRotationChanged = \"accudrawrotationchanged\",\n /** The active content as maintained by the ContentViewManager has changed. */\n ActiveContentChanged = \"activecontentchanged\",\n /** The active view maintained by the ViewManager has changed. */\n ActiveViewportChanged = \"activeviewportchanged\",\n /** Backstage has been toggled. */\n BackstageEvent = \"backstageevent\",\n /** A Content Layout has been activated. */\n ContentLayoutActivated = \"contentlayoutactivated\",\n /** A Content Control maintained by UiFramework.frontstages has been activated.\n * @deprecated in 4.16.0. Use {@link SyncUiEventId.ActiveContentChanged} instead.\n */\n ContentControlActivated = \"contentcontrolactivated\",\n /** A Frontstage is activating. */\n FrontstageActivating = \"frontstageactivating\",\n /** A Frontstage has been activated and the content has been assigned. */\n FrontstageReady = \"frontstageready\",\n /** A Modal Frontstage has been opened or closed. */\n ModalFrontstageChanged = \"modalfrontstagechanged\",\n /** A Modal Dialog has been opened or closed. */\n ModalDialogChanged = \"modaldialogchanged\",\n /** A NavigationAid has been activated. */\n NavigationAidActivated = \"navigationaidactivated\",\n /** An InteractiveTool has been activated via the ToolAdmin. */\n ToolActivated = \"toolactivated\",\n /** The state of a Widget has changed. */\n WidgetStateChanged = \"widgetstatechanged\",\n /** The SelectionSet for the active IModelConnection has changed. */\n SelectionSetChanged = \"selectionsetchanged\",\n /** The list of settings providers registered with SettingsManager has changed. */\n SettingsProvidersChanged = \"settingsproviderschanged\",\n /** The current view state has changed (used by view undo/redo toolbar buttons). */\n ViewStateChanged = \"viewstatechanged\",\n /** The current object the reads and write UI State has changed. */\n UiStateStorageChanged = \"uistatestoragechanged\",\n ShowHideManagerSettingChange = \"show-hide-setting-change\",\n /** The list of feature overrides applied has been changed */\n FeatureOverridesChanged = \"featureoverrideschanged\",\n ViewedModelsChanged = \"viewedmodelschanged\",\n}\n\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\n * to refresh its display by calling setState on itself.\n * @public\n */\nexport class SyncUiEventDispatcher {\n private static _uiEventDispatcher = new InternalSyncUiEventDispatcher();\n private static _unregisterFuncs = new Array<() => void>();\n private static _connectionUnregisterFuncs = new Array<() => void>();\n private static _iModelConnection?: IModelConnection;\n\n public static setTimeoutPeriod(period: number): void {\n SyncUiEventDispatcher._uiEventDispatcher.setTimeoutPeriod(period);\n }\n\n /** Return set of event ids that will be sent to listeners/. */\n public static get syncEventIds(): Set<string> {\n return SyncUiEventDispatcher._uiEventDispatcher.syncEventIds;\n }\n\n /** Return SyncUiEvent so callers can register an event callback. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static get onSyncUiEvent(): UiSyncEvent {\n return SyncUiEventDispatcher._uiEventDispatcher.onSyncUiEvent;\n }\n\n /** Immediately trigger sync event processing. */\n public static dispatchImmediateSyncUiEvent(eventId: string): void {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchImmediateSyncUiEvent(\n eventId\n );\n }\n\n /** Save eventId in Set for processing. */\n public static dispatchSyncUiEvent(eventId: string): void {\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\n Logger.logInfo(\n UiFramework.loggerCategory(\"SyncUiEventDispatcher\"),\n `[dispatchSyncUiEvent] not processed because timeoutPeriod=0`\n );\n return;\n }\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(eventId);\n }\n\n /** Save multiple eventIds in Set for processing. */\n public static dispatchSyncUiEvents(eventIds: string[]): void {\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\n Logger.logInfo(\n UiFramework.loggerCategory(\"SyncUiEventDispatcher\"),\n `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`\n );\n }\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvents(eventIds);\n }\n\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\n public static hasEventOfInterest(\n eventIds: Set<string>,\n idsOfInterest: string[]\n ) {\n return SyncUiEventDispatcher._uiEventDispatcher.hasEventOfInterest(\n eventIds,\n idsOfInterest\n );\n }\n\n private static _dispatchViewChange() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ViewStateChanged\n );\n }\n\n private static _dispatchFeatureOverridesChange() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FeatureOverridesChanged\n );\n }\n\n private static _dispatchViewedModelsChanged() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ViewedModelsChanged\n );\n }\n\n /** Initializes the Monitoring of Events that trigger dispatching sync events */\n public static initialize() {\n // clear any registered listeners - this should only be encountered in unit test scenarios\n this._unregisterFuncs.forEach((unregister) => unregister());\n this._unregisterFuncs = [];\n\n this._unregisterFuncs.push(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.frontstages.onContentControlActivatedEvent.addListener(() => {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n SyncUiEventId.ContentControlActivated\n );\n }),\n UiFramework.frontstages.onContentLayoutActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ContentLayoutActivated\n );\n }),\n UiFramework.frontstages.onFrontstageActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FrontstageActivating\n );\n }),\n UiFramework.frontstages.onFrontstageReadyEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FrontstageReady\n );\n }),\n UiFramework.frontstages.onModalFrontstageChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ModalFrontstageChanged\n );\n }),\n UiFramework.frontstages.onNavigationAidActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.NavigationAidActivated\n );\n }),\n UiFramework.frontstages.onToolActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ToolActivated\n );\n }),\n UiFramework.frontstages.onWidgetStateChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.WidgetStateChanged\n );\n }),\n UiFramework.backstage.onToggled.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.BackstageEvent\n );\n }),\n UiFramework.content.onActiveContentChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ActiveContentChanged\n );\n }),\n IModelApp.viewManager.onSelectedViewportChanged.addListener((args) => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ActiveViewportChanged\n );\n\n // if this is the first view being opened up start the default tool so tool admin is happy.\n if (undefined === args.previous) {\n void IModelApp.toolAdmin.startDefaultTool();\n } else {\n args.previous.onViewChanged.removeListener(\n SyncUiEventDispatcher._dispatchViewChange\n );\n args.previous.onFeatureOverridesChanged.removeListener(\n SyncUiEventDispatcher._dispatchFeatureOverridesChange\n );\n args.previous.onViewedModelsChanged.removeListener(\n SyncUiEventDispatcher._dispatchViewedModelsChanged\n );\n }\n if (args.current) {\n args.current.onViewChanged.addListener(\n SyncUiEventDispatcher._dispatchViewChange\n );\n args.current.onFeatureOverridesChanged.addListener(\n SyncUiEventDispatcher._dispatchFeatureOverridesChange\n );\n args.current.onViewedModelsChanged.addListener(\n SyncUiEventDispatcher._dispatchViewedModelsChanged\n );\n }\n })\n );\n }\n\n /** This should be called by IModelApp when the active IModelConnection is closed. */\n public static clearConnectionEvents(iModelConnection: IModelConnection) {\n if (this._iModelConnection !== iModelConnection) return;\n this._connectionUnregisterFuncs.forEach((unregister) => unregister());\n this._connectionUnregisterFuncs = [];\n }\n\n /** This should be called by IModelApp when the active IModelConnection is established. */\n public static initializeConnectionEvents(iModelConnection: IModelConnection) {\n this._iModelConnection &&\n this.clearConnectionEvents(this._iModelConnection);\n this._iModelConnection = iModelConnection;\n\n this._connectionUnregisterFuncs.push(\n iModelConnection.selectionSet.onChanged.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.SelectionSetChanged\n );\n }),\n iModelConnection.selectionSet.onChanged.addListener((ev) => {\n const numSelected = ev.set.elements.size;\n UiFramework.setNumItemsSelected(numSelected);\n })\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SyncUiEventDispatcher.js","sourceRoot":"","sources":["../../../src/appui-react/syncui/SyncUiEventDispatcher.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 SyncUi\n */\n\nimport { Logger } from \"@itwin/core-bentley\";\nimport type { IModelConnection } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { SyncUiEventId, type UiSyncEvent } from \"./UiSyncEvent.js\";\nimport { InternalSyncUiEventDispatcher } from \"./InternalSyncUiEventDispatcher.js\";\n\n/** This class is used to send eventIds to interested UI components so the component can determine if it needs\n * to refresh its display by calling setState on itself.\n * @public\n */\nexport class SyncUiEventDispatcher {\n private static _uiEventDispatcher = new InternalSyncUiEventDispatcher();\n private static _unregisterFuncs = new Array<() => void>();\n private static _connectionUnregisterFuncs = new Array<() => void>();\n private static _iModelConnection?: IModelConnection;\n\n public static setTimeoutPeriod(period: number): void {\n SyncUiEventDispatcher._uiEventDispatcher.setTimeoutPeriod(period);\n }\n\n /** Return set of event ids that will be sent to listeners/. */\n public static get syncEventIds(): Set<string> {\n return SyncUiEventDispatcher._uiEventDispatcher.syncEventIds;\n }\n\n /** Return SyncUiEvent so callers can register an event callback. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static get onSyncUiEvent(): UiSyncEvent {\n return SyncUiEventDispatcher._uiEventDispatcher.onSyncUiEvent;\n }\n\n /** Immediately trigger sync event processing. */\n public static dispatchImmediateSyncUiEvent(eventId: string): void {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchImmediateSyncUiEvent(\n eventId\n );\n }\n\n /** Save eventId in Set for processing. */\n public static dispatchSyncUiEvent(eventId: string): void {\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\n Logger.logInfo(\n UiFramework.loggerCategory(\"SyncUiEventDispatcher\"),\n `[dispatchSyncUiEvent] not processed because timeoutPeriod=0`\n );\n return;\n }\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(eventId);\n }\n\n /** Save multiple eventIds in Set for processing. */\n public static dispatchSyncUiEvents(eventIds: string[]): void {\n if (0 === SyncUiEventDispatcher._uiEventDispatcher.timeoutPeriod) {\n Logger.logInfo(\n UiFramework.loggerCategory(\"SyncUiEventDispatcher\"),\n `[dispatchSyncUiEvents] not processed because _timeoutPeriod=0`\n );\n }\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvents(eventIds);\n }\n\n /** Checks to see if an eventId of interest is contained in the set of eventIds */\n public static hasEventOfInterest(\n eventIds: Set<string>,\n idsOfInterest: string[]\n ) {\n return SyncUiEventDispatcher._uiEventDispatcher.hasEventOfInterest(\n eventIds,\n idsOfInterest\n );\n }\n\n private static _dispatchViewChange() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ViewStateChanged\n );\n }\n\n private static _dispatchFeatureOverridesChange() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FeatureOverridesChanged\n );\n }\n\n private static _dispatchViewedModelsChanged() {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ViewedModelsChanged\n );\n }\n\n /** Initializes the Monitoring of Events that trigger dispatching sync events */\n public static initialize() {\n // clear any registered listeners - this should only be encountered in unit test scenarios\n this._unregisterFuncs.forEach((unregister) => unregister());\n this._unregisterFuncs = [];\n\n this._unregisterFuncs.push(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n UiFramework.frontstages.onContentControlActivatedEvent.addListener(() => {\n SyncUiEventDispatcher.dispatchSyncUiEvent(\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n SyncUiEventId.ContentControlActivated\n );\n }),\n UiFramework.frontstages.onContentLayoutActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ContentLayoutActivated\n );\n }),\n UiFramework.frontstages.onFrontstageActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FrontstageActivating\n );\n }),\n UiFramework.frontstages.onFrontstageReadyEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.FrontstageReady\n );\n }),\n UiFramework.frontstages.onModalFrontstageChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ModalFrontstageChanged\n );\n }),\n UiFramework.frontstages.onNavigationAidActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.NavigationAidActivated\n );\n }),\n UiFramework.frontstages.onToolActivatedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ToolActivated\n );\n }),\n UiFramework.frontstages.onWidgetStateChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.WidgetStateChanged\n );\n }),\n UiFramework.backstage.onToggled.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.BackstageEvent\n );\n }),\n UiFramework.content.onActiveContentChangedEvent.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ActiveContentChanged\n );\n }),\n IModelApp.viewManager.onSelectedViewportChanged.addListener((args) => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.ActiveViewportChanged\n );\n\n // if this is the first view being opened up start the default tool so tool admin is happy.\n if (undefined === args.previous) {\n void IModelApp.toolAdmin.startDefaultTool();\n } else {\n args.previous.onViewChanged.removeListener(\n SyncUiEventDispatcher._dispatchViewChange\n );\n args.previous.onFeatureOverridesChanged.removeListener(\n SyncUiEventDispatcher._dispatchFeatureOverridesChange\n );\n args.previous.onViewedModelsChanged.removeListener(\n SyncUiEventDispatcher._dispatchViewedModelsChanged\n );\n }\n if (args.current) {\n args.current.onViewChanged.addListener(\n SyncUiEventDispatcher._dispatchViewChange\n );\n args.current.onFeatureOverridesChanged.addListener(\n SyncUiEventDispatcher._dispatchFeatureOverridesChange\n );\n args.current.onViewedModelsChanged.addListener(\n SyncUiEventDispatcher._dispatchViewedModelsChanged\n );\n }\n })\n );\n }\n\n /** This should be called by IModelApp when the active IModelConnection is closed. */\n public static clearConnectionEvents(iModelConnection: IModelConnection) {\n if (this._iModelConnection !== iModelConnection) return;\n this._connectionUnregisterFuncs.forEach((unregister) => unregister());\n this._connectionUnregisterFuncs = [];\n }\n\n /** This should be called by IModelApp when the active IModelConnection is established. */\n public static initializeConnectionEvents(iModelConnection: IModelConnection) {\n this._iModelConnection &&\n this.clearConnectionEvents(this._iModelConnection);\n this._iModelConnection = iModelConnection;\n\n this._connectionUnregisterFuncs.push(\n iModelConnection.selectionSet.onChanged.addListener(() => {\n SyncUiEventDispatcher._uiEventDispatcher.dispatchSyncUiEvent(\n SyncUiEventId.SelectionSetChanged\n );\n }),\n iModelConnection.selectionSet.onChanged.addListener((ev) => {\n const numSelected = ev.set.elements.size;\n UiFramework.setNumItemsSelected(numSelected);\n })\n );\n }\n}\n"]}
|
|
@@ -15,4 +15,51 @@ export interface UiSyncEventArgs {
|
|
|
15
15
|
*/
|
|
16
16
|
export declare class UiSyncEvent extends BeUiEvent<UiSyncEventArgs> {
|
|
17
17
|
}
|
|
18
|
+
/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export declare enum SyncUiEventId {
|
|
22
|
+
/** AccuDraw compass mode has changed. */
|
|
23
|
+
AccuDrawCompassModeChanged = "accudrawcompassmodechanged",
|
|
24
|
+
/** AccuDraw rotation has changed. */
|
|
25
|
+
AccuDrawRotationChanged = "accudrawrotationchanged",
|
|
26
|
+
/** The active content as maintained by the ContentViewManager has changed. */
|
|
27
|
+
ActiveContentChanged = "activecontentchanged",
|
|
28
|
+
/** The active view maintained by the ViewManager has changed. */
|
|
29
|
+
ActiveViewportChanged = "activeviewportchanged",
|
|
30
|
+
/** Backstage has been toggled. */
|
|
31
|
+
BackstageEvent = "backstageevent",
|
|
32
|
+
/** A Content Layout has been activated. */
|
|
33
|
+
ContentLayoutActivated = "contentlayoutactivated",
|
|
34
|
+
/** A Content Control maintained by UiFramework.frontstages has been activated.
|
|
35
|
+
* @deprecated in 4.16.0. Use {@link SyncUiEventId.ActiveContentChanged} instead.
|
|
36
|
+
*/
|
|
37
|
+
ContentControlActivated = "contentcontrolactivated",
|
|
38
|
+
/** A Frontstage is activating. */
|
|
39
|
+
FrontstageActivating = "frontstageactivating",
|
|
40
|
+
/** A Frontstage has been activated and the content has been assigned. */
|
|
41
|
+
FrontstageReady = "frontstageready",
|
|
42
|
+
/** A Modal Frontstage has been opened or closed. */
|
|
43
|
+
ModalFrontstageChanged = "modalfrontstagechanged",
|
|
44
|
+
/** A Modal Dialog has been opened or closed. */
|
|
45
|
+
ModalDialogChanged = "modaldialogchanged",
|
|
46
|
+
/** A NavigationAid has been activated. */
|
|
47
|
+
NavigationAidActivated = "navigationaidactivated",
|
|
48
|
+
/** An InteractiveTool has been activated via the ToolAdmin. */
|
|
49
|
+
ToolActivated = "toolactivated",
|
|
50
|
+
/** The state of a Widget has changed. */
|
|
51
|
+
WidgetStateChanged = "widgetstatechanged",
|
|
52
|
+
/** The SelectionSet for the active IModelConnection has changed. */
|
|
53
|
+
SelectionSetChanged = "selectionsetchanged",
|
|
54
|
+
/** The list of settings providers registered with SettingsManager has changed. */
|
|
55
|
+
SettingsProvidersChanged = "settingsproviderschanged",
|
|
56
|
+
/** The current view state has changed (used by view undo/redo toolbar buttons). */
|
|
57
|
+
ViewStateChanged = "viewstatechanged",
|
|
58
|
+
/** The current object the reads and write UI State has changed. */
|
|
59
|
+
UiStateStorageChanged = "uistatestoragechanged",
|
|
60
|
+
ShowHideManagerSettingChange = "show-hide-setting-change",
|
|
61
|
+
/** The list of feature overrides applied has been changed */
|
|
62
|
+
FeatureOverridesChanged = "featureoverrideschanged",
|
|
63
|
+
ViewedModelsChanged = "viewedmodelschanged"
|
|
64
|
+
}
|
|
18
65
|
//# sourceMappingURL=UiSyncEvent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiSyncEvent.d.ts","sourceRoot":"","sources":["../../../src/appui-react/syncui/UiSyncEvent.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AAED;;;GAGG;AAEH,qBAAa,WAAY,SAAQ,SAAS,CAAC,eAAe,CAAC;CAAG"}
|
|
1
|
+
{"version":3,"file":"UiSyncEvent.d.ts","sourceRoot":"","sources":["../../../src/appui-react/syncui/UiSyncEvent.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB;AAED;;;GAGG;AAEH,qBAAa,WAAY,SAAQ,SAAS,CAAC,eAAe,CAAC;CAAG;AAE9D;;GAEG;AACH,oBAAY,aAAa;IACvB,yCAAyC;IACzC,0BAA0B,+BAA+B;IACzD,qCAAqC;IACrC,uBAAuB,4BAA4B;IACnD,8EAA8E;IAC9E,oBAAoB,yBAAyB;IAC7C,iEAAiE;IACjE,qBAAqB,0BAA0B;IAC/C,kCAAkC;IAClC,cAAc,mBAAmB;IACjC,4CAA4C;IAC5C,sBAAsB,2BAA2B;IACjD;;OAEG;IACH,uBAAuB,4BAA4B;IACnD,kCAAkC;IAClC,oBAAoB,yBAAyB;IAC7C,yEAAyE;IACzE,eAAe,oBAAoB;IACnC,oDAAoD;IACpD,sBAAsB,2BAA2B;IACjD,gDAAgD;IAChD,kBAAkB,uBAAuB;IACzC,0CAA0C;IAC1C,sBAAsB,2BAA2B;IACjD,+DAA+D;IAC/D,aAAa,kBAAkB;IAC/B,yCAAyC;IACzC,kBAAkB,uBAAuB;IACzC,oEAAoE;IACpE,mBAAmB,wBAAwB;IAC3C,kFAAkF;IAClF,wBAAwB,6BAA6B;IACrD,mFAAmF;IACnF,gBAAgB,qBAAqB;IACrC,mEAAmE;IACnE,qBAAqB,0BAA0B;IAC/C,4BAA4B,6BAA6B;IACzD,6DAA6D;IAC7D,uBAAuB,4BAA4B;IACnD,mBAAmB,wBAAwB;CAC5C"}
|
|
@@ -13,4 +13,52 @@ import { BeUiEvent } from "@itwin/core-bentley";
|
|
|
13
13
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
14
14
|
export class UiSyncEvent extends BeUiEvent {
|
|
15
15
|
}
|
|
16
|
+
/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export var SyncUiEventId;
|
|
20
|
+
(function (SyncUiEventId) {
|
|
21
|
+
/** AccuDraw compass mode has changed. */
|
|
22
|
+
SyncUiEventId["AccuDrawCompassModeChanged"] = "accudrawcompassmodechanged";
|
|
23
|
+
/** AccuDraw rotation has changed. */
|
|
24
|
+
SyncUiEventId["AccuDrawRotationChanged"] = "accudrawrotationchanged";
|
|
25
|
+
/** The active content as maintained by the ContentViewManager has changed. */
|
|
26
|
+
SyncUiEventId["ActiveContentChanged"] = "activecontentchanged";
|
|
27
|
+
/** The active view maintained by the ViewManager has changed. */
|
|
28
|
+
SyncUiEventId["ActiveViewportChanged"] = "activeviewportchanged";
|
|
29
|
+
/** Backstage has been toggled. */
|
|
30
|
+
SyncUiEventId["BackstageEvent"] = "backstageevent";
|
|
31
|
+
/** A Content Layout has been activated. */
|
|
32
|
+
SyncUiEventId["ContentLayoutActivated"] = "contentlayoutactivated";
|
|
33
|
+
/** A Content Control maintained by UiFramework.frontstages has been activated.
|
|
34
|
+
* @deprecated in 4.16.0. Use {@link SyncUiEventId.ActiveContentChanged} instead.
|
|
35
|
+
*/
|
|
36
|
+
SyncUiEventId["ContentControlActivated"] = "contentcontrolactivated";
|
|
37
|
+
/** A Frontstage is activating. */
|
|
38
|
+
SyncUiEventId["FrontstageActivating"] = "frontstageactivating";
|
|
39
|
+
/** A Frontstage has been activated and the content has been assigned. */
|
|
40
|
+
SyncUiEventId["FrontstageReady"] = "frontstageready";
|
|
41
|
+
/** A Modal Frontstage has been opened or closed. */
|
|
42
|
+
SyncUiEventId["ModalFrontstageChanged"] = "modalfrontstagechanged";
|
|
43
|
+
/** A Modal Dialog has been opened or closed. */
|
|
44
|
+
SyncUiEventId["ModalDialogChanged"] = "modaldialogchanged";
|
|
45
|
+
/** A NavigationAid has been activated. */
|
|
46
|
+
SyncUiEventId["NavigationAidActivated"] = "navigationaidactivated";
|
|
47
|
+
/** An InteractiveTool has been activated via the ToolAdmin. */
|
|
48
|
+
SyncUiEventId["ToolActivated"] = "toolactivated";
|
|
49
|
+
/** The state of a Widget has changed. */
|
|
50
|
+
SyncUiEventId["WidgetStateChanged"] = "widgetstatechanged";
|
|
51
|
+
/** The SelectionSet for the active IModelConnection has changed. */
|
|
52
|
+
SyncUiEventId["SelectionSetChanged"] = "selectionsetchanged";
|
|
53
|
+
/** The list of settings providers registered with SettingsManager has changed. */
|
|
54
|
+
SyncUiEventId["SettingsProvidersChanged"] = "settingsproviderschanged";
|
|
55
|
+
/** The current view state has changed (used by view undo/redo toolbar buttons). */
|
|
56
|
+
SyncUiEventId["ViewStateChanged"] = "viewstatechanged";
|
|
57
|
+
/** The current object the reads and write UI State has changed. */
|
|
58
|
+
SyncUiEventId["UiStateStorageChanged"] = "uistatestoragechanged";
|
|
59
|
+
SyncUiEventId["ShowHideManagerSettingChange"] = "show-hide-setting-change";
|
|
60
|
+
/** The list of feature overrides applied has been changed */
|
|
61
|
+
SyncUiEventId["FeatureOverridesChanged"] = "featureoverrideschanged";
|
|
62
|
+
SyncUiEventId["ViewedModelsChanged"] = "viewedmodelschanged";
|
|
63
|
+
})(SyncUiEventId || (SyncUiEventId = {}));
|
|
16
64
|
//# sourceMappingURL=UiSyncEvent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiSyncEvent.js","sourceRoot":"","sources":["../../../src/appui-react/syncui/UiSyncEvent.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAUhD;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,WAAY,SAAQ,SAA0B;CAAG","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module SyncUi\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\n\n/** UiSync Event arguments. Contains a set of lower case event Ids.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface UiSyncEventArgs {\n eventIds: Set<string>;\n}\n\n/** UiSync Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class UiSyncEvent extends BeUiEvent<UiSyncEventArgs> {}\n"]}
|
|
1
|
+
{"version":3,"file":"UiSyncEvent.js","sourceRoot":"","sources":["../../../src/appui-react/syncui/UiSyncEvent.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAUhD;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,WAAY,SAAQ,SAA0B;CAAG;AAE9D;;GAEG;AACH,MAAM,CAAN,IAAY,aA2CX;AA3CD,WAAY,aAAa;IACvB,yCAAyC;IACzC,0EAAyD,CAAA;IACzD,qCAAqC;IACrC,oEAAmD,CAAA;IACnD,8EAA8E;IAC9E,8DAA6C,CAAA;IAC7C,iEAAiE;IACjE,gEAA+C,CAAA;IAC/C,kCAAkC;IAClC,kDAAiC,CAAA;IACjC,4CAA4C;IAC5C,kEAAiD,CAAA;IACjD;;OAEG;IACH,oEAAmD,CAAA;IACnD,kCAAkC;IAClC,8DAA6C,CAAA;IAC7C,yEAAyE;IACzE,oDAAmC,CAAA;IACnC,oDAAoD;IACpD,kEAAiD,CAAA;IACjD,gDAAgD;IAChD,0DAAyC,CAAA;IACzC,0CAA0C;IAC1C,kEAAiD,CAAA;IACjD,+DAA+D;IAC/D,gDAA+B,CAAA;IAC/B,yCAAyC;IACzC,0DAAyC,CAAA;IACzC,oEAAoE;IACpE,4DAA2C,CAAA;IAC3C,kFAAkF;IAClF,sEAAqD,CAAA;IACrD,mFAAmF;IACnF,sDAAqC,CAAA;IACrC,mEAAmE;IACnE,gEAA+C,CAAA;IAC/C,0EAAyD,CAAA;IACzD,6DAA6D;IAC7D,oEAAmD,CAAA;IACnD,4DAA2C,CAAA;AAC7C,CAAC,EA3CW,aAAa,KAAb,aAAa,QA2CxB","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 SyncUi\n */\n\nimport { BeUiEvent } from \"@itwin/core-bentley\";\n\n/** UiSync Event arguments. Contains a set of lower case event Ids.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface UiSyncEventArgs {\n eventIds: Set<string>;\n}\n\n/** UiSync Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class UiSyncEvent extends BeUiEvent<UiSyncEventArgs> {}\n\n/** Event Id used to sync UI components. Used to refresh visibility or enable state of control.\n * @public\n */\nexport enum SyncUiEventId {\n /** AccuDraw compass mode has changed. */\n AccuDrawCompassModeChanged = \"accudrawcompassmodechanged\",\n /** AccuDraw rotation has changed. */\n AccuDrawRotationChanged = \"accudrawrotationchanged\",\n /** The active content as maintained by the ContentViewManager has changed. */\n ActiveContentChanged = \"activecontentchanged\",\n /** The active view maintained by the ViewManager has changed. */\n ActiveViewportChanged = \"activeviewportchanged\",\n /** Backstage has been toggled. */\n BackstageEvent = \"backstageevent\",\n /** A Content Layout has been activated. */\n ContentLayoutActivated = \"contentlayoutactivated\",\n /** A Content Control maintained by UiFramework.frontstages has been activated.\n * @deprecated in 4.16.0. Use {@link SyncUiEventId.ActiveContentChanged} instead.\n */\n ContentControlActivated = \"contentcontrolactivated\",\n /** A Frontstage is activating. */\n FrontstageActivating = \"frontstageactivating\",\n /** A Frontstage has been activated and the content has been assigned. */\n FrontstageReady = \"frontstageready\",\n /** A Modal Frontstage has been opened or closed. */\n ModalFrontstageChanged = \"modalfrontstagechanged\",\n /** A Modal Dialog has been opened or closed. */\n ModalDialogChanged = \"modaldialogchanged\",\n /** A NavigationAid has been activated. */\n NavigationAidActivated = \"navigationaidactivated\",\n /** An InteractiveTool has been activated via the ToolAdmin. */\n ToolActivated = \"toolactivated\",\n /** The state of a Widget has changed. */\n WidgetStateChanged = \"widgetstatechanged\",\n /** The SelectionSet for the active IModelConnection has changed. */\n SelectionSetChanged = \"selectionsetchanged\",\n /** The list of settings providers registered with SettingsManager has changed. */\n SettingsProvidersChanged = \"settingsproviderschanged\",\n /** The current view state has changed (used by view undo/redo toolbar buttons). */\n ViewStateChanged = \"viewstatechanged\",\n /** The current object the reads and write UI State has changed. */\n UiStateStorageChanged = \"uistatestoragechanged\",\n ShowHideManagerSettingChange = \"show-hide-setting-change\",\n /** The list of feature overrides applied has been changed */\n FeatureOverridesChanged = \"featureoverrideschanged\",\n ViewedModelsChanged = \"viewedmodelschanged\",\n}\n"]}
|
|
@@ -9,17 +9,23 @@ import { ToolbarOrientation, ToolbarUsage } from "./ToolbarItem.js";
|
|
|
9
9
|
* @deprecated in 4.17.0. Use `React.ComponentProps<typeof ToolbarComposer>`
|
|
10
10
|
*/
|
|
11
11
|
export interface ExtensibleToolbarProps {
|
|
12
|
-
/** Toolbar items. */
|
|
12
|
+
/** Toolbar items to be displayed in addition to the provided toolbar items. */
|
|
13
13
|
items: ToolbarItem[];
|
|
14
14
|
/** Toolbar usage based on which additional toolbar items are added from UI item providers. */
|
|
15
15
|
usage: ToolbarUsage;
|
|
16
16
|
/** Toolbar orientation. */
|
|
17
17
|
orientation: ToolbarOrientation;
|
|
18
|
+
/** Describes the ids of active toolbar items.
|
|
19
|
+
* By default only the toolbar item with id that matches the active `Tool` id is active.
|
|
20
|
+
*/
|
|
21
|
+
activeItemIds?: string[];
|
|
18
22
|
}
|
|
19
23
|
/**
|
|
20
24
|
* Toolbar that is populated and maintained by UI item providers.
|
|
21
|
-
* @note Overrides `isActive` property based on the active tool id.
|
|
25
|
+
* @note Overrides `isActive` property based on the active tool id, unless `activeItemIds` is specified.
|
|
22
26
|
* @public
|
|
23
27
|
*/
|
|
24
28
|
export declare function ToolbarComposer(props: ExtensibleToolbarProps): React.JSX.Element;
|
|
29
|
+
/** @internal */
|
|
30
|
+
export declare function updateActiveItems(items: ToolbarItem[], activeItemIds: string[]): ToolbarItem[];
|
|
25
31
|
//# sourceMappingURL=ToolbarComposer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolbarComposer.d.ts","sourceRoot":"","sources":["../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,kBAAkB,EAClB,YAAY,EACb,MAAM,kBAAkB,CAAC;AA4J1B;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC
|
|
1
|
+
{"version":3,"file":"ToolbarComposer.d.ts","sourceRoot":"","sources":["../../../src/appui-react/toolbar/ToolbarComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAGV,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,kBAAkB,EAClB,YAAY,EACb,MAAM,kBAAkB,CAAC;AA4J1B;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,8FAA8F;IAC9F,KAAK,EAAE,YAAY,CAAC;IACpB,2BAA2B;IAC3B,WAAW,EAAE,kBAAkB,CAAC;IAChC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED;;;;GAIG;AAEH,wBAAgB,eAAe,CAAC,KAAK,EAAE,sBAAsB,qBAwC5D;AAwBD,gBAAgB;AAChB,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAAE,EACpB,aAAa,EAAE,MAAM,EAAE,iBA0BxB"}
|
|
@@ -6,14 +6,15 @@
|
|
|
6
6
|
* @module Toolbar
|
|
7
7
|
*/
|
|
8
8
|
import * as React from "react";
|
|
9
|
-
import {
|
|
9
|
+
import { produce } from "immer";
|
|
10
|
+
import { Direction, ToolbarOpacitySetting, ToolbarPanelAlignment, } from "@itwin/components-react";
|
|
10
11
|
import { Logger, ProcessDetector } from "@itwin/core-bentley";
|
|
11
12
|
import { UiFramework } from "../UiFramework.js";
|
|
12
13
|
import { ToolbarDragInteractionContext } from "./DragInteraction.js";
|
|
13
14
|
import { isToolbarActionItem, isToolbarGroupItem, ToolbarOrientation, ToolbarUsage, } from "./ToolbarItem.js";
|
|
14
15
|
import { Toolbar } from "./Toolbar.js";
|
|
15
|
-
import { useActiveToolIdSynchedItems } from "./useActiveToolIdSynchedItems.js";
|
|
16
16
|
import { useActiveStageProvidedToolbarItems } from "./useActiveStageProvidedToolbarItems.js";
|
|
17
|
+
import { useActiveToolId } from "../hooks/useActiveToolId.js";
|
|
17
18
|
function addItemToSpecifiedParentGroup(items, groupChildren) {
|
|
18
19
|
const outItems = [];
|
|
19
20
|
for (const toolbarItem of items) {
|
|
@@ -124,36 +125,67 @@ const useSnapWidgetOpacitySetting = () => {
|
|
|
124
125
|
};
|
|
125
126
|
/**
|
|
126
127
|
* Toolbar that is populated and maintained by UI item providers.
|
|
127
|
-
* @note Overrides `isActive` property based on the active tool id.
|
|
128
|
+
* @note Overrides `isActive` property based on the active tool id, unless `activeItemIds` is specified.
|
|
128
129
|
* @public
|
|
129
130
|
*/
|
|
130
131
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
131
132
|
export function ToolbarComposer(props) {
|
|
132
|
-
const { usage, orientation } = props;
|
|
133
|
+
const { usage, orientation, activeItemIds: activeItemIdsProp } = props;
|
|
133
134
|
// process items from addon UI providers
|
|
134
135
|
const addonItems = useActiveStageProvidedToolbarItems(usage, orientation);
|
|
135
136
|
const allItems = React.useMemo(() => {
|
|
136
137
|
return combineItems(props.items, addonItems);
|
|
137
138
|
}, [props.items, addonItems]);
|
|
138
|
-
const
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
? Direction.Bottom
|
|
144
|
-
: usage === ToolbarUsage.ViewNavigation
|
|
145
|
-
? Direction.Left
|
|
146
|
-
: Direction.Right;
|
|
147
|
-
const panelAlignment = toolbarOrientation === Orientation.Horizontal &&
|
|
148
|
-
usage === ToolbarUsage.ViewNavigation
|
|
149
|
-
? ToolbarPanelAlignment.End
|
|
150
|
-
: ToolbarPanelAlignment.Start;
|
|
139
|
+
const activeToolId = useActiveToolId();
|
|
140
|
+
const activeItemIds = React.useMemo(() => activeItemIdsProp ?? (activeToolId ? [activeToolId] : []), [activeItemIdsProp, activeToolId]);
|
|
141
|
+
const items = React.useMemo(() => {
|
|
142
|
+
return updateActiveItems(allItems, activeItemIds);
|
|
143
|
+
}, [allItems, activeItemIds]);
|
|
151
144
|
const isDragEnabled = React.useContext(ToolbarDragInteractionContext);
|
|
152
145
|
const useProximityOpacity = useProximityOpacitySetting();
|
|
153
146
|
const snapWidgetOpacity = useSnapWidgetOpacitySetting();
|
|
147
|
+
const expandsTo = toExpandsTo(orientation, usage);
|
|
148
|
+
const panelAlignment = toPanelAlignment(orientation, usage);
|
|
154
149
|
return (React.createElement(Toolbar, { enableOverflow: true, expandsTo: expandsTo, panelAlignment: panelAlignment, items: items, useDragInteraction: isDragEnabled, toolbarOpacitySetting: (useProximityOpacity || snapWidgetOpacity) &&
|
|
155
150
|
!ProcessDetector.isMobileBrowser
|
|
156
151
|
? ToolbarOpacitySetting.Proximity
|
|
157
152
|
: ToolbarOpacitySetting.Defaults }));
|
|
158
153
|
}
|
|
154
|
+
function toExpandsTo(orientation, usage) {
|
|
155
|
+
if (orientation === ToolbarOrientation.Vertical) {
|
|
156
|
+
if (usage === ToolbarUsage.ViewNavigation)
|
|
157
|
+
return Direction.Left;
|
|
158
|
+
return Direction.Right;
|
|
159
|
+
}
|
|
160
|
+
return Direction.Bottom;
|
|
161
|
+
}
|
|
162
|
+
function toPanelAlignment(orientation, usage) {
|
|
163
|
+
if (orientation === ToolbarOrientation.Horizontal &&
|
|
164
|
+
usage === ToolbarUsage.ViewNavigation)
|
|
165
|
+
return ToolbarPanelAlignment.End;
|
|
166
|
+
return ToolbarPanelAlignment.Start;
|
|
167
|
+
}
|
|
168
|
+
/** @internal */
|
|
169
|
+
export function updateActiveItems(items, activeItemIds) {
|
|
170
|
+
return produce(items, (draft) => {
|
|
171
|
+
// Iterative DFS with ancestor backtracking.
|
|
172
|
+
const stack = draft.map((item) => [item, []]);
|
|
173
|
+
while (stack.length > 0) {
|
|
174
|
+
const [current, ancestors] = stack.pop();
|
|
175
|
+
const isActive = activeItemIds.includes(current.id);
|
|
176
|
+
current.isActive = isActive;
|
|
177
|
+
if ("items" in current) {
|
|
178
|
+
for (const child of current.items) {
|
|
179
|
+
stack.push([child, [...ancestors, current]]);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (!isActive)
|
|
183
|
+
continue;
|
|
184
|
+
// Mark ancestors of active item as active.
|
|
185
|
+
for (const ancestor of ancestors) {
|
|
186
|
+
ancestor.isActive = true;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
}
|
|
159
191
|
//# sourceMappingURL=ToolbarComposer.js.map
|