@itwin/appui-react 3.3.0-dev.72 → 3.3.0-dev.77
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/lib/cjs/appui-react/configurableui/state.d.ts +0 -2
- package/lib/cjs/appui-react/configurableui/state.d.ts.map +1 -1
- package/lib/cjs/appui-react/configurableui/state.js +0 -1
- package/lib/cjs/appui-react/configurableui/state.js.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.d.ts +4 -1
- package/lib/cjs/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/cjs/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/Frontstage.d.ts +3 -1
- package/lib/cjs/appui-react/frontstage/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/Frontstage.js +1 -1
- package/lib/cjs/appui-react/frontstage/Frontstage.js.map +1 -1
- package/lib/cjs/appui-react/selection/ClearEmphasisStatusField.d.ts.map +1 -1
- package/lib/cjs/appui-react/selection/ClearEmphasisStatusField.js +4 -1
- package/lib/cjs/appui-react/selection/ClearEmphasisStatusField.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBar.d.ts +4 -1
- package/lib/cjs/appui-react/statusbar/StatusBar.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBar.js +12 -4
- package/lib/cjs/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBarComposer.js +1 -0
- package/lib/cjs/appui-react/statusbar/StatusBarComposer.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBarWidgetControl.d.ts +3 -1
- package/lib/cjs/appui-react/statusbar/StatusBarWidgetControl.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusbar/StatusBarWidgetControl.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/withMessageCenterFieldProps.d.ts +1 -1
- package/lib/cjs/appui-react/statusbar/withMessageCenterFieldProps.js +1 -1
- package/lib/cjs/appui-react/statusbar/withMessageCenterFieldProps.js.map +1 -1
- package/lib/cjs/appui-react/statusbar/withStatusFieldProps.d.ts +1 -0
- package/lib/cjs/appui-react/statusbar/withStatusFieldProps.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusbar/withStatusFieldProps.js +1 -0
- package/lib/cjs/appui-react/statusbar/withStatusFieldProps.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/ConditionalField.d.ts +4 -1
- package/lib/cjs/appui-react/statusfields/ConditionalField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/ConditionalField.js +4 -1
- package/lib/cjs/appui-react/statusfields/ConditionalField.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/FooterModeField.d.ts +2 -3
- package/lib/cjs/appui-react/statusfields/FooterModeField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/FooterModeField.js +9 -8
- package/lib/cjs/appui-react/statusfields/FooterModeField.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/Indicator.d.ts +3 -1
- package/lib/cjs/appui-react/statusfields/Indicator.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/Indicator.js +1 -0
- package/lib/cjs/appui-react/statusfields/Indicator.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts +3 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/MessageCenter.js +13 -7
- package/lib/cjs/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/PromptField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/PromptField.js +4 -1
- package/lib/cjs/appui-react/statusfields/PromptField.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/SectionsField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/SectionsField.js +4 -1
- package/lib/cjs/appui-react/statusfields/SectionsField.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/SelectionInfo.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/SelectionInfo.js +4 -1
- package/lib/cjs/appui-react/statusfields/SelectionInfo.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/SelectionScope.js +5 -2
- package/lib/cjs/appui-react/statusfields/SelectionScope.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/StatusFieldProps.d.ts +4 -2
- package/lib/cjs/appui-react/statusfields/StatusFieldProps.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/StatusFieldProps.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/ViewAttributes.js +4 -1
- package/lib/cjs/appui-react/statusfields/ViewAttributes.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js +4 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +3 -3
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
- package/lib/cjs/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +7 -2
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts.map +1 -1
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +7 -2
- package/lib/cjs/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/configurableui/state.d.ts +0 -2
- package/lib/esm/appui-react/configurableui/state.d.ts.map +1 -1
- package/lib/esm/appui-react/configurableui/state.js +0 -1
- package/lib/esm/appui-react/configurableui/state.js.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.d.ts +4 -1
- package/lib/esm/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/esm/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/esm/appui-react/frontstage/Frontstage.d.ts +3 -1
- package/lib/esm/appui-react/frontstage/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/Frontstage.js +1 -1
- package/lib/esm/appui-react/frontstage/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/selection/ClearEmphasisStatusField.d.ts.map +1 -1
- package/lib/esm/appui-react/selection/ClearEmphasisStatusField.js +4 -1
- package/lib/esm/appui-react/selection/ClearEmphasisStatusField.js.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBar.d.ts +4 -1
- package/lib/esm/appui-react/statusbar/StatusBar.d.ts.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBar.js +12 -4
- package/lib/esm/appui-react/statusbar/StatusBar.js.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBarComposer.d.ts.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBarComposer.js +1 -0
- package/lib/esm/appui-react/statusbar/StatusBarComposer.js.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBarWidgetControl.d.ts +3 -1
- package/lib/esm/appui-react/statusbar/StatusBarWidgetControl.d.ts.map +1 -1
- package/lib/esm/appui-react/statusbar/StatusBarWidgetControl.js.map +1 -1
- package/lib/esm/appui-react/statusbar/withMessageCenterFieldProps.d.ts +1 -1
- package/lib/esm/appui-react/statusbar/withMessageCenterFieldProps.js +1 -1
- package/lib/esm/appui-react/statusbar/withMessageCenterFieldProps.js.map +1 -1
- package/lib/esm/appui-react/statusbar/withStatusFieldProps.d.ts +1 -0
- package/lib/esm/appui-react/statusbar/withStatusFieldProps.d.ts.map +1 -1
- package/lib/esm/appui-react/statusbar/withStatusFieldProps.js +1 -0
- package/lib/esm/appui-react/statusbar/withStatusFieldProps.js.map +1 -1
- package/lib/esm/appui-react/statusfields/ConditionalField.d.ts +4 -1
- package/lib/esm/appui-react/statusfields/ConditionalField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/ConditionalField.js +4 -1
- package/lib/esm/appui-react/statusfields/ConditionalField.js.map +1 -1
- package/lib/esm/appui-react/statusfields/FooterModeField.d.ts +2 -3
- package/lib/esm/appui-react/statusfields/FooterModeField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/FooterModeField.js +9 -8
- package/lib/esm/appui-react/statusfields/FooterModeField.js.map +1 -1
- package/lib/esm/appui-react/statusfields/Indicator.d.ts +3 -1
- package/lib/esm/appui-react/statusfields/Indicator.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/Indicator.js +1 -0
- package/lib/esm/appui-react/statusfields/Indicator.js.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.d.ts +3 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/MessageCenter.js +13 -7
- package/lib/esm/appui-react/statusfields/MessageCenter.js.map +1 -1
- package/lib/esm/appui-react/statusfields/PromptField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/PromptField.js +4 -1
- package/lib/esm/appui-react/statusfields/PromptField.js.map +1 -1
- package/lib/esm/appui-react/statusfields/SectionsField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/SectionsField.js +4 -1
- package/lib/esm/appui-react/statusfields/SectionsField.js.map +1 -1
- package/lib/esm/appui-react/statusfields/SelectionInfo.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/SelectionInfo.js +4 -1
- package/lib/esm/appui-react/statusfields/SelectionInfo.js.map +1 -1
- package/lib/esm/appui-react/statusfields/SelectionScope.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/SelectionScope.js +5 -2
- package/lib/esm/appui-react/statusfields/SelectionScope.js.map +1 -1
- package/lib/esm/appui-react/statusfields/StatusFieldProps.d.ts +4 -2
- package/lib/esm/appui-react/statusfields/StatusFieldProps.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/StatusFieldProps.js.map +1 -1
- package/lib/esm/appui-react/statusfields/ViewAttributes.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/ViewAttributes.js +4 -1
- package/lib/esm/appui-react/statusfields/ViewAttributes.js.map +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js +4 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +3 -3
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.d.ts.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.d.ts.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
- package/lib/esm/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.d.ts.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +7 -2
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.d.ts.map +1 -1
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +7 -2
- package/lib/esm/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/package.json +32 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/Frontstage.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module Frontstage\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { StagePanelLocation, UiItemProviderRegisteredEventArgs, UiItemsManager, WidgetState } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Rectangle } from \"@itwin/core-react\";\r\nimport {\r\n HorizontalAnchor, Zones as NZ_Zones, StagePanels, StagePanelsManager, ToolSettingsWidgetMode, WidgetZoneId, widgetZoneIds, ZoneManagerProps,\r\n ZonesManagerProps,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { ContentGroup, ContentGroupProvider } from \"../content/ContentGroup\";\r\nimport { ContentLayout } from \"../content/ContentLayout\";\r\nimport { ToolItemDef } from \"../shared/ToolItemDef\";\r\nimport { getNestedStagePanelKey, StagePanelProps, StagePanelRuntimeProps } from \"../stagepanels/StagePanel\";\r\nimport { StagePanelDef } from \"../stagepanels/StagePanelDef\";\r\nimport { UiFramework, UiVisibilityEventArgs } from \"../UiFramework\";\r\nimport { UiShowHideManager } from \"../utils/UiShowHideManager\";\r\nimport { ToolSettingsContent } from \"../widgets/ToolSettingsContent\";\r\nimport { WidgetDef, WidgetStateChangedEventArgs } from \"../widgets/WidgetDef\";\r\nimport { WidgetsChangedEventArgs } from \"../widgets/WidgetManager\";\r\nimport { isToolSettingsWidgetManagerProps, Zone, ZoneLocation, ZoneProps, ZoneRuntimeProps } from \"../zones/Zone\";\r\nimport { ZoneDef } from \"../zones/ZoneDef\";\r\nimport { FrontstageRuntimeProps, ZoneDefProvider } from \"./FrontstageComposer\";\r\nimport { FrontstageActivatedEventArgs, FrontstageManager } from \"./FrontstageManager\";\r\n\r\n/** Properties for a [[Frontstage]] component.\r\n * @public\r\n */\r\nexport interface FrontstageProps extends CommonProps {\r\n /** Id for the Frontstage */\r\n id: string;\r\n /** Tool that is started once the Frontstage is activated */\r\n defaultTool: ToolItemDef;\r\n /** The Content Group providing the Content Views */\r\n contentGroup: ContentGroup | ContentGroupProvider;\r\n /** Id of the Content View to be activated initially */\r\n defaultContentId?: string;\r\n /** Indicated whether the StatusBar is in footer mode or widget mode. Defaults to true. */\r\n isInFooterMode?: boolean; // Default - true\r\n /** Any application data to attach to this Frontstage. */\r\n applicationData?: any;\r\n /** Usage type for this Frontstage. */\r\n usage?: string;\r\n /** Frontstage version. Used to force saved layout reinitialization after changes to frontstage.\r\n * @note This value should be increased when changes are made to Frontstage.\r\n * Increasing the value will make sure to reinitialize App layout instead of restoring to old layout.\r\n * Version increase is required when widgets are added/removed.\r\n */\r\n version?: number;\r\n /** if isIModelIndependent then frontstage is independent from any iModel. */\r\n isIModelIndependent?: boolean;\r\n /** The Zone in the top-left corner.\r\n * @deprecated Use 'contentManipulationTools' property. */\r\n topLeft?: React.ReactElement<ZoneProps>;\r\n /** The Zone along the top-center edge.\r\n * @deprecated Use 'toolSettings' property. */\r\n topCenter?: React.ReactElement<ZoneProps>;\r\n /** The Zone in the top-right corner.\r\n * @deprecated Use 'viewNavigationTools' property. */\r\n topRight?: React.ReactElement<ZoneProps>;\r\n /** The Zone along the center-left edge.\r\n * @deprecated Place widgets in appropriate stage panel zone. */\r\n centerLeft?: React.ReactElement<ZoneProps>;\r\n /** The Zone along the center-right edge.\r\n * @deprecated Place widgets in appropriate stage panel zone. */\r\n centerRight?: React.ReactElement<ZoneProps>;\r\n /** The Zone in the bottom-left corner.\r\n * @deprecated Place widgets in appropriate stage panel zone. */\r\n bottomLeft?: React.ReactElement<ZoneProps>;\r\n /** The Zone along the bottom-center edge.\r\n * @deprecated use statusBar property */\r\n bottomCenter?: React.ReactElement<ZoneProps>;\r\n /** The Zone in the bottom-right corner.\r\n * @deprecated Place widgets in appropriate stage panel zone. */\r\n bottomRight?: React.ReactElement<ZoneProps>;\r\n\r\n /** The Zone in the top-left corner that shows tools typically used to query and modify content. To be used in place of deprecated topLeft zone definition. */\r\n contentManipulationTools?: React.ReactElement<ZoneProps>;\r\n /** The Zone the that shows settings for the active tool. To be used in place of deprecated topCenter zone definition. */\r\n toolSettings?: React.ReactElement<ZoneProps>;\r\n /** The Zone in the top-right corner that shows view navigation tools. To be used in place of deprecated topRight zone definition */\r\n viewNavigationTools?: React.ReactElement<ZoneProps>;\r\n /** The status bar Zone shown as the application footer. To be used in place of deprecated bottomCenter zone definition. */\r\n statusBar?: React.ReactElement<ZoneProps>;\r\n\r\n /** The StagePanel on the top of the AppUi container. */\r\n topPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the very top across the full width.\r\n * @deprecated Only topPanel is supported in UI 2.0 */\r\n topMostPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the left. */\r\n leftPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the right. */\r\n rightPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the bottom of the AppUi container. */\r\n bottomPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the very bottom across the full width.\r\n * @deprecated Only bottomPanel is supported in UI 2.0 */\r\n bottomMostPanel?: React.ReactElement<StagePanelProps>;\r\n\r\n /** @internal */\r\n runtimeProps?: FrontstageRuntimeProps;\r\n}\r\n\r\ninterface FrontstageState {\r\n isUiVisible: boolean;\r\n widgetIdToContent: Partial<{ [id in WidgetZoneId]: HTMLDivElement | undefined }>; // eslint-disable-line deprecation/deprecation\r\n}\r\n\r\n/** Frontstage React component.\r\n * A Frontstage is a full-screen configuration designed to enable the user to accomplish a task.\r\n * @public\r\n */\r\nexport class Frontstage extends React.Component<FrontstageProps, FrontstageState> {\r\n private _isMounted = false;\r\n private static _zoneIds: ReadonlyArray<WidgetZoneId> = widgetZoneIds.filter((z) => z !== 8); // eslint-disable-line deprecation/deprecation\r\n private _contentRefs = new Map<WidgetZoneId, React.Ref<HTMLDivElement>>(); // eslint-disable-line deprecation/deprecation\r\n private _zonesMeasurer = React.createRef<HTMLDivElement>();\r\n private _floatingZonesMeasurer = React.createRef<HTMLDivElement>();\r\n private _zonesStyle: React.CSSProperties = {\r\n pointerEvents: \"none\",\r\n };\r\n private _zonesFooterModeStyle: React.CSSProperties = {\r\n ...this._zonesStyle,\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n };\r\n\r\n /** @internal */\r\n constructor(props: FrontstageProps) {\r\n super(props);\r\n\r\n this.state = {\r\n isUiVisible: UiFramework.getIsUiVisible(),\r\n widgetIdToContent: {},\r\n };\r\n }\r\n\r\n /** React lifecycle method.\r\n * @internal\r\n */\r\n public override async componentDidMount() {\r\n this._isMounted = true;\r\n UiFramework.onUiVisibilityChanged.addListener(this._uiVisibilityChanged);\r\n UiFramework.widgetManager.onWidgetsChanged.addListener(this._handleWidgetsChanged);\r\n UiItemsManager.onUiProviderRegisteredEvent.addListener(this._handleUiProviderRegisteredEvent);\r\n }\r\n\r\n public override componentDidUpdate() {\r\n if (!this._zonesMeasurer.current || !this._floatingZonesMeasurer.current || !this.props.runtimeProps)\r\n return;\r\n let floatingBounds = Rectangle.create(this._floatingZonesMeasurer.current.getBoundingClientRect());\r\n const bounds = Rectangle.create(this._zonesMeasurer.current.getBoundingClientRect());\r\n const offset = bounds.topLeft().getOffsetTo(floatingBounds.topLeft());\r\n floatingBounds = floatingBounds.setPosition(offset);\r\n this.props.runtimeProps.nineZoneChangeHandler.handleZonesBoundsChange(bounds);\r\n this.props.runtimeProps.nineZoneChangeHandler.handleFloatingZonesBoundsChange(floatingBounds);\r\n }\r\n\r\n /** React lifecycle method.\r\n * @internal\r\n */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n UiFramework.onUiVisibilityChanged.removeListener(this._uiVisibilityChanged);\r\n UiItemsManager.onUiProviderRegisteredEvent.removeListener(this._handleUiProviderRegisteredEvent);\r\n }\r\n\r\n private _uiVisibilityChanged = (args: UiVisibilityEventArgs): void => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isUiVisible: args.visible });\r\n };\r\n\r\n private _handleWidgetsChanged = (_args: WidgetsChangedEventArgs): void => {\r\n this.updateWidgetDefs();\r\n };\r\n\r\n private _handleUiProviderRegisteredEvent = (_args: UiItemProviderRegisteredEventArgs): void => {\r\n this.updateWidgetDefs();\r\n };\r\n\r\n private updateWidgetDefs() {\r\n // istanbul ignore else\r\n if (!this.props.runtimeProps)\r\n return;\r\n\r\n // istanbul ignore next\r\n {\r\n const frontstageDef = this.props.runtimeProps.frontstageDef;\r\n frontstageDef.updateWidgetDefs();\r\n FrontstageManager.onWidgetDefsUpdatedEvent.emit();\r\n if (this._isMounted)\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static createZoneDef(zoneNode: React.ReactElement<ZoneProps> | undefined, zoneLocation: ZoneLocation, props: FrontstageProps): ZoneDef | undefined {\r\n if (zoneNode) {\r\n const zoneDef = new ZoneDef();\r\n const zoneElement = Frontstage.getZoneElement(zoneLocation, props);\r\n\r\n zoneDef.zoneLocation = zoneLocation;\r\n\r\n // istanbul ignore else\r\n if (zoneElement && React.isValidElement(zoneElement)) {\r\n Zone.initializeZoneDef(zoneDef, zoneElement.props);\r\n return zoneDef;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static getZoneElement(zoneId: WidgetZoneId, props: FrontstageProps): React.ReactElement<ZoneProps> | undefined { // eslint-disable-line deprecation/deprecation\r\n switch (zoneId) {\r\n case ZoneLocation.TopLeft:\r\n return props.contentManipulationTools ? props.contentManipulationTools : props.topLeft; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.TopCenter:\r\n return props.toolSettings ? props.toolSettings : props.topCenter; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.TopRight:\r\n return props.viewNavigationTools ? /* istanbul ignore next */ props.viewNavigationTools : props.topRight; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.CenterLeft:\r\n return props.centerLeft; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.CenterRight:\r\n return props.centerRight; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.BottomLeft:\r\n return props.bottomLeft; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.BottomCenter:\r\n return props.statusBar ? props.statusBar : props.bottomCenter; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.BottomRight:\r\n return props.bottomRight; // eslint-disable-line deprecation/deprecation\r\n }\r\n\r\n // Zones can be undefined in a Frontstage\r\n // istanbul ignore next\r\n return undefined;\r\n }\r\n\r\n /** @internal */\r\n public static createStagePanelDef(panelLocation: StagePanelLocation, props: FrontstageProps): StagePanelDef | undefined {\r\n const panelDef = new StagePanelDef();\r\n\r\n const panelElement = Frontstage.getStagePanelElement(panelLocation, props);\r\n panelDef.initializeFromProps(panelElement?.props, panelLocation);\r\n\r\n return panelDef;\r\n }\r\n\r\n private static getStagePanelElement(location: StagePanelLocation, props: FrontstageProps): React.ReactElement<StagePanelProps> | undefined {\r\n let panelElement: React.ReactElement<StagePanelProps> | undefined;\r\n\r\n switch (location) {\r\n case StagePanelLocation.Top:\r\n panelElement = props.topPanel;\r\n break;\r\n case StagePanelLocation.TopMost:\r\n panelElement = props.topMostPanel; // eslint-disable-line deprecation/deprecation\r\n break;\r\n case StagePanelLocation.Left:\r\n panelElement = props.leftPanel;\r\n break;\r\n case StagePanelLocation.Right:\r\n panelElement = props.rightPanel;\r\n break;\r\n case StagePanelLocation.Bottom:\r\n panelElement = props.bottomPanel;\r\n break;\r\n case StagePanelLocation.BottomMost:\r\n panelElement = props.bottomMostPanel; // eslint-disable-line deprecation/deprecation\r\n break;\r\n // istanbul ignore next\r\n default:\r\n throw new RangeError();\r\n }\r\n\r\n // Panels can be undefined in a Frontstage\r\n\r\n return panelElement;\r\n }\r\n\r\n private _getContentRef = (widget: WidgetZoneId) => { // eslint-disable-line deprecation/deprecation\r\n const ref = this._contentRefs.get(widget);\r\n if (ref)\r\n return ref;\r\n const newRef = (el: HTMLDivElement | null) => {\r\n if (this._isMounted) {\r\n this.setState((prevState) => ({\r\n widgetIdToContent: {\r\n ...prevState.widgetIdToContent,\r\n [widget]: el === null ? undefined : el,\r\n },\r\n }));\r\n }\r\n };\r\n this._contentRefs.set(widget, newRef);\r\n return newRef;\r\n };\r\n\r\n // This uses ConfigurableUi to render the content\r\n private doContentLayoutRender(): React.ReactNode {\r\n let contentLayout: React.ReactNode;\r\n\r\n // istanbul ignore else\r\n if (this.props.runtimeProps && this.props.runtimeProps.frontstageDef) {\r\n const frontstageDef = this.props.runtimeProps.frontstageDef;\r\n\r\n // istanbul ignore else\r\n if (frontstageDef.contentLayoutDef && frontstageDef.contentGroup)\r\n contentLayout = (\r\n <ContentLayout\r\n contentLayout={frontstageDef.contentLayoutDef}\r\n contentGroup={frontstageDef.contentGroup}\r\n isInFooterMode={frontstageDef.isInFooterMode}\r\n />\r\n );\r\n else\r\n Logger.logError(UiFramework.loggerCategory(this), `FrontstageDef.contentLayoutDef and FrontstageDef.contentGroup are required for <ContentLayout> component`);\r\n }\r\n\r\n return contentLayout;\r\n }\r\n\r\n private cloneStagePanelElement(panelDef: StagePanelDef | undefined, runtimeProps: FrontstageRuntimeProps): React.ReactNode {\r\n if (!this.state.isUiVisible && UiShowHideManager.showHidePanels)\r\n return null;\r\n\r\n // istanbul ignore else\r\n if (panelDef) {\r\n const { location } = panelDef;\r\n const panelElement = Frontstage.getStagePanelElement(location, this.props);\r\n\r\n // istanbul ignore else\r\n if (panelElement && React.isValidElement(panelElement)) {\r\n const panelKey = getNestedStagePanelKey(panelDef.location);\r\n const panels = runtimeProps.nineZone.nested.panels[panelKey.id];\r\n const panel = StagePanelsManager.getPanel(panelKey.type, panels);\r\n const draggedWidget = runtimeProps.nineZone.zones.draggedWidget;\r\n\r\n const panelRuntimeProps: StagePanelRuntimeProps = {\r\n draggedWidgetId: draggedWidget ? /* istanbul ignore next */ draggedWidget.id : undefined,\r\n getWidgetContentRef: this._getContentRef,\r\n isInFooterMode: runtimeProps.nineZone.zones.isInFooterMode,\r\n isTargeted: !!runtimeProps.nineZone.zones.target,\r\n panel,\r\n panelDef,\r\n stagePanelChangeHandler: runtimeProps.stagePanelChangeHandler,\r\n widgetChangeHandler: runtimeProps.widgetChangeHandler,\r\n widgets: runtimeProps.nineZone.zones.widgets,\r\n widgetTabs: runtimeProps.widgetTabs,\r\n zoneDefProvider: runtimeProps.zoneDefProvider,\r\n };\r\n\r\n return React.cloneElement(panelElement, { runtimeProps: panelRuntimeProps });\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n private cloneZoneElements(zoneIds: ReadonlyArray<WidgetZoneId>, runtimeProps: FrontstageRuntimeProps): React.ReactNode[] {\r\n return zoneIds.map((zoneId: WidgetZoneId) => { // eslint-disable-line deprecation/deprecation\r\n const zoneElement = Frontstage.getZoneElement(zoneId, this.props);\r\n if (!zoneElement || !React.isValidElement(zoneElement))\r\n return null;\r\n\r\n const zoneDef = runtimeProps.zoneDefProvider.getZoneDef(zoneId);\r\n\r\n // istanbul ignore if\r\n if (!zoneDef)\r\n return null;\r\n\r\n const nestedPanelsManager = FrontstageManager.NineZoneManager.getNestedPanelsManager();\r\n const panelsManager = nestedPanelsManager.getPanelsManager(\"inner\");\r\n const type = panelsManager.findWidget(zoneId, runtimeProps.nineZone.nested.panels.inner);\r\n // istanbul ignore if\r\n if (type !== undefined)\r\n return null;\r\n\r\n const zonesManager = FrontstageManager.NineZoneManager.getZonesManager();\r\n const zones = runtimeProps.nineZone.zones;\r\n const ghostOutline = zonesManager.getGhostOutlineBounds(zoneId, zones);\r\n const dropTarget = zonesManager.getDropTarget(zoneId, zones);\r\n const zone = getExtendedZone(zoneId, zones, runtimeProps.zoneDefProvider);\r\n const widget = zone.widgets.length > 0 ? zones.widgets[zone.widgets[0]] : undefined;\r\n const openWidgetId = zone.widgets.find((wId) => zones.widgets[wId].tabIndex >= 0);\r\n const activeTabIndex = openWidgetId ? zones.widgets[openWidgetId].tabIndex : 0;\r\n const draggedWidget = runtimeProps.nineZone.zones.draggedWidget;\r\n const disabledResizeHandles = zonesManager.getDisabledResizeHandles(zoneId, zones);\r\n // istanbul ignore next\r\n const zoneRuntimeProps: ZoneRuntimeProps = {\r\n activeTabIndex,\r\n disabledResizeHandles,\r\n draggedWidget: draggedWidget && /* istanbul ignore next */ draggedWidget.id === zoneId ? /* istanbul ignore next */ draggedWidget : undefined,\r\n dropTarget,\r\n getWidgetContentRef: this._getContentRef,\r\n ghostOutline,\r\n isHidden: (zoneDef.isStatusBar && this.props.isInFooterMode && ( /* istanbul ignore next */ this.state.isUiVisible || /* istanbul ignore next */ !UiShowHideManager.showHideFooter)) ?\r\n /* istanbul ignore next */ false : !this.state.isUiVisible,\r\n isInFooterMode: runtimeProps.nineZone.zones.isInFooterMode,\r\n openWidgetId,\r\n targetChangeHandler: runtimeProps.targetChangeHandler,\r\n widgetChangeHandler: runtimeProps.widgetChangeHandler,\r\n widgetTabs: runtimeProps.widgetTabs,\r\n widget,\r\n zoneDef,\r\n zoneDefProvider: runtimeProps.zoneDefProvider,\r\n zone,\r\n };\r\n return React.cloneElement(zoneElement, { key: zoneId, runtimeProps: zoneRuntimeProps });\r\n });\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n private cloneWidgetContentElements(zones: ReadonlyArray<WidgetZoneId>, runtimeProps: FrontstageRuntimeProps): React.ReactNode[] {\r\n // eslint-disable-next-line deprecation/deprecation\r\n const widgets = zones.reduce<Array<{ id: WidgetZoneId, def: WidgetDef, tabIndex: number }>>((prev, zoneId) => {\r\n const zoneDef = runtimeProps.zoneDefProvider.getZoneDef(zoneId);\r\n\r\n // istanbul ignore if\r\n if (!zoneDef)\r\n return prev;\r\n\r\n const widgetDefs = zoneDef.widgetDefs.filter((widgetDef: WidgetDef) => {\r\n if (zoneId === 2)\r\n return widgetDef.isVisible;\r\n return widgetDef.isVisible && !widgetDef.isFloating;\r\n });\r\n\r\n for (let i = 0; i < widgetDefs.length; i++) {\r\n prev.push({\r\n id: zoneId,\r\n def: widgetDefs[i],\r\n tabIndex: i,\r\n });\r\n }\r\n\r\n return prev;\r\n }, []);\r\n return widgets.map((widget) => {\r\n const nzWidget = runtimeProps.nineZone.zones.widgets[widget.id];\r\n return (\r\n <WidgetContentRenderer\r\n anchor={nzWidget.horizontalAnchor}\r\n isHidden={nzWidget.tabIndex !== widget.tabIndex}\r\n key={`${widget.id}_${widget.tabIndex}`}\r\n renderTo={this.state.widgetIdToContent[widget.id]}\r\n toolSettingsMode={isToolSettingsWidgetManagerProps(nzWidget) ? nzWidget.mode : undefined}\r\n widgetDef={widget.def}\r\n />\r\n );\r\n });\r\n }\r\n\r\n /** React render method\r\n * @internal\r\n */\r\n public override render(): React.ReactNode {\r\n const { runtimeProps } = this.props;\r\n\r\n if (runtimeProps === undefined)\r\n return null;\r\n\r\n /** For Nine-zone area; includes ContentLayout */\r\n const ninezoneStyle: React.CSSProperties = {\r\n position: \"relative\",\r\n height: \"100%\",\r\n };\r\n\r\n const frontstageDef = runtimeProps.frontstageDef;\r\n\r\n return (\r\n <div style={ninezoneStyle} id=\"uifw-ninezone-area\" className={this.props.className}>\r\n <NZ_Zones style={runtimeProps.nineZone.zones.isInFooterMode ? this._zonesFooterModeStyle : this._zonesStyle} >\r\n <StagePanels\r\n bottomPanel={this.cloneStagePanelElement(frontstageDef.bottomMostPanel, runtimeProps)} // eslint-disable-line deprecation/deprecation\r\n topPanel={this.cloneStagePanelElement(frontstageDef.topMostPanel, runtimeProps)} // eslint-disable-line deprecation/deprecation\r\n >\r\n <StagePanels\r\n bottomPanel={this.cloneStagePanelElement(frontstageDef.bottomPanel, runtimeProps)}\r\n leftPanel={this.cloneStagePanelElement(frontstageDef.leftPanel, runtimeProps)}\r\n rightPanel={this.cloneStagePanelElement(frontstageDef.rightPanel, runtimeProps)}\r\n topPanel={this.cloneStagePanelElement(frontstageDef.topPanel, runtimeProps)}\r\n >\r\n <div\r\n id=\"uifw-ninezone-zones-area\"\r\n ref={this._zonesMeasurer}\r\n style={{\r\n height: \"100%\",\r\n position: \"relative\",\r\n }}\r\n >\r\n {this.doContentLayoutRender()}\r\n {this.cloneZoneElements(Frontstage._zoneIds, runtimeProps)}\r\n </div>\r\n </StagePanels>\r\n </StagePanels>\r\n {this.cloneZoneElements([8], runtimeProps)}\r\n <div\r\n id=\"uifw-ninezone-floating-zones-area\"\r\n ref={this._floatingZonesMeasurer}\r\n style={{\r\n height: \"100%\",\r\n width: \"100%\",\r\n position: \"absolute\",\r\n }}\r\n />\r\n </NZ_Zones>\r\n {this.cloneWidgetContentElements(Frontstage._zoneIds, runtimeProps)}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\ninterface WidgetContentRendererProps {\r\n anchor: HorizontalAnchor; // eslint-disable-line deprecation/deprecation\r\n isHidden: boolean;\r\n renderTo: HTMLDivElement | undefined;\r\n toolSettingsMode: ToolSettingsWidgetMode | undefined;\r\n widgetDef: WidgetDef;\r\n}\r\n\r\ninterface WidgetContentRendererState {\r\n widgetKey: number;\r\n}\r\n\r\nclass WidgetContentRenderer extends React.PureComponent<WidgetContentRendererProps, WidgetContentRendererState> {\r\n private _isMounted = false;\r\n private _content = document.createElement(\"span\");\r\n public constructor(props: WidgetContentRendererProps) {\r\n super(props);\r\n\r\n this.state = {\r\n widgetKey: 0,\r\n };\r\n }\r\n\r\n public override componentDidMount() {\r\n this._isMounted = true;\r\n FrontstageManager.onWidgetStateChangedEvent.addListener(this._handleWidgetStateChangedEvent);\r\n FrontstageManager.onToolActivatedEvent.addListener(this._handleToolActivatedEvent);\r\n\r\n this._content.style.display = this.props.isHidden ? \"none\" : \"flex\";\r\n this._content.style.flexDirection = \"column\";\r\n this._content.style.height = \"100%\";\r\n if (!this.props.renderTo)\r\n return;\r\n this.props.renderTo.appendChild(this._content);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: WidgetContentRendererProps) {\r\n // istanbul ignore next\r\n if (!this._isMounted)\r\n return;\r\n if (this.props.isHidden !== prevProps.isHidden) {\r\n this._content.style.display = this.props.isHidden ? \"none\" : \"flex\";\r\n }\r\n\r\n if (!this.props.renderTo || prevProps.renderTo === this.props.renderTo)\r\n return;\r\n\r\n this.props.widgetDef.saveTransientState();\r\n this.props.renderTo.appendChild(this._content);\r\n\r\n const shouldRemount = this.props.widgetDef.restoreTransientState() || this.props.widgetDef.isToolSettings;\r\n\r\n shouldRemount && this.setState((prevState) => ({ widgetKey: prevState.widgetKey + 1 }));\r\n }\r\n\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n this._content.parentNode && this._content.parentNode.removeChild(this._content);\r\n FrontstageManager.onWidgetStateChangedEvent.removeListener(this._handleWidgetStateChangedEvent);\r\n FrontstageManager.onToolActivatedEvent.removeListener(this._handleToolActivatedEvent);\r\n }\r\n\r\n public override render() {\r\n if (this.props.toolSettingsMode !== undefined) {\r\n return ReactDOM.createPortal((\r\n <ToolSettingsContent\r\n anchor={this.props.anchor}\r\n key={this.state.widgetKey}\r\n mode={this.props.toolSettingsMode}\r\n >\r\n {FrontstageManager.activeToolSettingsProvider && FrontstageManager.activeToolSettingsProvider.toolSettingsNode}\r\n </ToolSettingsContent>\r\n ), this._content);\r\n }\r\n\r\n if (this.props.widgetDef.state === WidgetState.Unloaded)\r\n return null;\r\n return ReactDOM.createPortal((\r\n <React.Fragment\r\n key={this.state.widgetKey}\r\n >\r\n {this.props.widgetDef.reactNode}\r\n </React.Fragment>\r\n ), this._content);\r\n }\r\n\r\n private _handleWidgetStateChangedEvent = (args: WidgetStateChangedEventArgs) => {\r\n if (this.props.widgetDef !== args.widgetDef || !this._isMounted)\r\n return;\r\n this.forceUpdate();\r\n };\r\n\r\n private _handleToolActivatedEvent = () => {\r\n if (this.props.toolSettingsMode === undefined || !this._isMounted)\r\n return;\r\n // force update when tool is activated\r\n this.setState((prevState) => ({ widgetKey: prevState.widgetKey + 1 }));\r\n };\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line deprecation/deprecation\r\nexport const getExtendedZone = (zoneId: WidgetZoneId, zones: ZonesManagerProps, defProvider: ZoneDefProvider): ZoneManagerProps => {\r\n const zone = zones.zones[zoneId];\r\n if (zoneId === 1 || zoneId === 3) {\r\n let extendOverId: WidgetZoneId = zoneId; // eslint-disable-line deprecation/deprecation\r\n const zonesManager = FrontstageManager.NineZoneManager.getZonesManager();\r\n let bottomZoneId = zonesManager.bottomZones.getInitial(extendOverId);\r\n while (bottomZoneId !== undefined) {\r\n const bottomZoneDef = defProvider.getZoneDef(bottomZoneId);\r\n if (bottomZoneDef && bottomZoneDef.widgetDefs.length !== 0)\r\n break;\r\n\r\n extendOverId = bottomZoneId;\r\n bottomZoneId = zonesManager.bottomZones.getInitial(bottomZoneId);\r\n }\r\n\r\n const bottom = zones.zones[extendOverId].bounds.bottom;\r\n if (bottom === zone.bounds.bottom)\r\n return zone;\r\n return {\r\n ...zone,\r\n bounds: {\r\n ...zone.bounds,\r\n bottom,\r\n },\r\n };\r\n }\r\n return zone;\r\n};\r\n\r\n/** Hook that returns active frontstage id.\r\n * @public\r\n */\r\nexport const useActiveFrontstageId = () => {\r\n const def = useActiveFrontstageDef();\r\n const id = React.useMemo(() => def ? /* istanbul ignore next */ def.id : \"\", [def]);\r\n return id;\r\n};\r\n\r\n/** @internal */\r\nexport function useActiveFrontstageDef() {\r\n const [def, setDef] = React.useState(FrontstageManager.activeFrontstageDef);\r\n React.useEffect(() => {\r\n // istanbul ignore next\r\n const handleActivated = (args: FrontstageActivatedEventArgs) => {\r\n setDef(args.activatedFrontstageDef);\r\n };\r\n FrontstageManager.onFrontstageActivatedEvent.addListener(handleActivated);\r\n return () => {\r\n FrontstageManager.onFrontstageActivatedEvent.removeListener(handleActivated);\r\n };\r\n }, []);\r\n return def;\r\n}\r\n\r\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\r\n * @public\r\n */\r\nexport function useSpecificWidgetDef(widgetId: string) {\r\n const frontstageDef = useActiveFrontstageDef();\r\n return frontstageDef?.findWidgetDef(widgetId);\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Frontstage.js","sourceRoot":"","sources":["../../../../src/appui-react/frontstage/Frontstage.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module Frontstage\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { StagePanelLocation, UiItemProviderRegisteredEventArgs, UiItemsManager, WidgetState } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Rectangle } from \"@itwin/core-react\";\r\nimport {\r\n HorizontalAnchor, Zones as NZ_Zones, StagePanels, StagePanelsManager, ToolSettingsWidgetMode, WidgetZoneId, widgetZoneIds, ZoneManagerProps,\r\n ZonesManagerProps,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { ContentGroup, ContentGroupProvider } from \"../content/ContentGroup\";\r\nimport { ContentLayout } from \"../content/ContentLayout\";\r\nimport { ToolItemDef } from \"../shared/ToolItemDef\";\r\nimport { getNestedStagePanelKey, StagePanelProps, StagePanelRuntimeProps } from \"../stagepanels/StagePanel\";\r\nimport { StagePanelDef } from \"../stagepanels/StagePanelDef\";\r\nimport { UiFramework, UiVisibilityEventArgs } from \"../UiFramework\";\r\nimport { UiShowHideManager } from \"../utils/UiShowHideManager\";\r\nimport { ToolSettingsContent } from \"../widgets/ToolSettingsContent\";\r\nimport { WidgetDef, WidgetStateChangedEventArgs } from \"../widgets/WidgetDef\";\r\nimport { WidgetsChangedEventArgs } from \"../widgets/WidgetManager\";\r\nimport { isToolSettingsWidgetManagerProps, Zone, ZoneLocation, ZoneProps, ZoneRuntimeProps } from \"../zones/Zone\";\r\nimport { ZoneDef } from \"../zones/ZoneDef\";\r\nimport { FrontstageRuntimeProps, ZoneDefProvider } from \"./FrontstageComposer\";\r\nimport { FrontstageActivatedEventArgs, FrontstageManager } from \"./FrontstageManager\";\r\n\r\n/** Properties for a [[Frontstage]] component.\r\n * @public\r\n */\r\nexport interface FrontstageProps extends CommonProps {\r\n /** Id for the Frontstage */\r\n id: string;\r\n /** Tool that is started once the Frontstage is activated */\r\n defaultTool: ToolItemDef;\r\n /** The Content Group providing the Content Views */\r\n contentGroup: ContentGroup | ContentGroupProvider;\r\n /** Id of the Content View to be activated initially */\r\n defaultContentId?: string;\r\n /** Indicated whether the StatusBar is in footer mode or widget mode. Defaults to true.\r\n * @deprecated In upcoming version, widget mode will be removed and footer mode will always be true.\r\n */\r\n isInFooterMode?: boolean; // Default - true\r\n /** Any application data to attach to this Frontstage. */\r\n applicationData?: any;\r\n /** Usage type for this Frontstage. */\r\n usage?: string;\r\n /** Frontstage version. Used to force saved layout reinitialization after changes to frontstage.\r\n * @note This value should be increased when changes are made to Frontstage.\r\n * Increasing the value will make sure to reinitialize App layout instead of restoring to old layout.\r\n * Version increase is required when widgets are added/removed.\r\n */\r\n version?: number;\r\n /** if isIModelIndependent then frontstage is independent from any iModel. */\r\n isIModelIndependent?: boolean;\r\n /** The Zone in the top-left corner.\r\n * @deprecated Use 'contentManipulationTools' property. */\r\n topLeft?: React.ReactElement<ZoneProps>;\r\n /** The Zone along the top-center edge.\r\n * @deprecated Use 'toolSettings' property. */\r\n topCenter?: React.ReactElement<ZoneProps>;\r\n /** The Zone in the top-right corner.\r\n * @deprecated Use 'viewNavigationTools' property. */\r\n topRight?: React.ReactElement<ZoneProps>;\r\n /** The Zone along the center-left edge.\r\n * @deprecated Place widgets in appropriate stage panel zone. */\r\n centerLeft?: React.ReactElement<ZoneProps>;\r\n /** The Zone along the center-right edge.\r\n * @deprecated Place widgets in appropriate stage panel zone. */\r\n centerRight?: React.ReactElement<ZoneProps>;\r\n /** The Zone in the bottom-left corner.\r\n * @deprecated Place widgets in appropriate stage panel zone. */\r\n bottomLeft?: React.ReactElement<ZoneProps>;\r\n /** The Zone along the bottom-center edge.\r\n * @deprecated use statusBar property */\r\n bottomCenter?: React.ReactElement<ZoneProps>;\r\n /** The Zone in the bottom-right corner.\r\n * @deprecated Place widgets in appropriate stage panel zone. */\r\n bottomRight?: React.ReactElement<ZoneProps>;\r\n\r\n /** The Zone in the top-left corner that shows tools typically used to query and modify content. To be used in place of deprecated topLeft zone definition. */\r\n contentManipulationTools?: React.ReactElement<ZoneProps>;\r\n /** The Zone the that shows settings for the active tool. To be used in place of deprecated topCenter zone definition. */\r\n toolSettings?: React.ReactElement<ZoneProps>;\r\n /** The Zone in the top-right corner that shows view navigation tools. To be used in place of deprecated topRight zone definition */\r\n viewNavigationTools?: React.ReactElement<ZoneProps>;\r\n /** The status bar Zone shown as the application footer. To be used in place of deprecated bottomCenter zone definition. */\r\n statusBar?: React.ReactElement<ZoneProps>;\r\n\r\n /** The StagePanel on the top of the AppUi container. */\r\n topPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the very top across the full width.\r\n * @deprecated Only topPanel is supported in UI 2.0 */\r\n topMostPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the left. */\r\n leftPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the right. */\r\n rightPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the bottom of the AppUi container. */\r\n bottomPanel?: React.ReactElement<StagePanelProps>;\r\n /** The StagePanel on the very bottom across the full width.\r\n * @deprecated Only bottomPanel is supported in UI 2.0 */\r\n bottomMostPanel?: React.ReactElement<StagePanelProps>;\r\n\r\n /** @internal */\r\n runtimeProps?: FrontstageRuntimeProps;\r\n}\r\n\r\ninterface FrontstageState {\r\n isUiVisible: boolean;\r\n widgetIdToContent: Partial<{ [id in WidgetZoneId]: HTMLDivElement | undefined }>; // eslint-disable-line deprecation/deprecation\r\n}\r\n\r\n/** Frontstage React component.\r\n * A Frontstage is a full-screen configuration designed to enable the user to accomplish a task.\r\n * @public\r\n */\r\nexport class Frontstage extends React.Component<FrontstageProps, FrontstageState> {\r\n private _isMounted = false;\r\n private static _zoneIds: ReadonlyArray<WidgetZoneId> = widgetZoneIds.filter((z) => z !== 8); // eslint-disable-line deprecation/deprecation\r\n private _contentRefs = new Map<WidgetZoneId, React.Ref<HTMLDivElement>>(); // eslint-disable-line deprecation/deprecation\r\n private _zonesMeasurer = React.createRef<HTMLDivElement>();\r\n private _floatingZonesMeasurer = React.createRef<HTMLDivElement>();\r\n private _zonesStyle: React.CSSProperties = {\r\n pointerEvents: \"none\",\r\n };\r\n private _zonesFooterModeStyle: React.CSSProperties = {\r\n ...this._zonesStyle,\r\n display: \"flex\",\r\n flexFlow: \"column\",\r\n };\r\n\r\n /** @internal */\r\n constructor(props: FrontstageProps) {\r\n super(props);\r\n\r\n this.state = {\r\n isUiVisible: UiFramework.getIsUiVisible(),\r\n widgetIdToContent: {},\r\n };\r\n }\r\n\r\n /** React lifecycle method.\r\n * @internal\r\n */\r\n public override async componentDidMount() {\r\n this._isMounted = true;\r\n UiFramework.onUiVisibilityChanged.addListener(this._uiVisibilityChanged);\r\n UiFramework.widgetManager.onWidgetsChanged.addListener(this._handleWidgetsChanged);\r\n UiItemsManager.onUiProviderRegisteredEvent.addListener(this._handleUiProviderRegisteredEvent);\r\n }\r\n\r\n public override componentDidUpdate() {\r\n if (!this._zonesMeasurer.current || !this._floatingZonesMeasurer.current || !this.props.runtimeProps)\r\n return;\r\n let floatingBounds = Rectangle.create(this._floatingZonesMeasurer.current.getBoundingClientRect());\r\n const bounds = Rectangle.create(this._zonesMeasurer.current.getBoundingClientRect());\r\n const offset = bounds.topLeft().getOffsetTo(floatingBounds.topLeft());\r\n floatingBounds = floatingBounds.setPosition(offset);\r\n this.props.runtimeProps.nineZoneChangeHandler.handleZonesBoundsChange(bounds);\r\n this.props.runtimeProps.nineZoneChangeHandler.handleFloatingZonesBoundsChange(floatingBounds);\r\n }\r\n\r\n /** React lifecycle method.\r\n * @internal\r\n */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n UiFramework.onUiVisibilityChanged.removeListener(this._uiVisibilityChanged);\r\n UiItemsManager.onUiProviderRegisteredEvent.removeListener(this._handleUiProviderRegisteredEvent);\r\n }\r\n\r\n private _uiVisibilityChanged = (args: UiVisibilityEventArgs): void => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isUiVisible: args.visible });\r\n };\r\n\r\n private _handleWidgetsChanged = (_args: WidgetsChangedEventArgs): void => {\r\n this.updateWidgetDefs();\r\n };\r\n\r\n private _handleUiProviderRegisteredEvent = (_args: UiItemProviderRegisteredEventArgs): void => {\r\n this.updateWidgetDefs();\r\n };\r\n\r\n private updateWidgetDefs() {\r\n // istanbul ignore else\r\n if (!this.props.runtimeProps)\r\n return;\r\n\r\n // istanbul ignore next\r\n {\r\n const frontstageDef = this.props.runtimeProps.frontstageDef;\r\n frontstageDef.updateWidgetDefs();\r\n FrontstageManager.onWidgetDefsUpdatedEvent.emit();\r\n if (this._isMounted)\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n /** @internal */\r\n public static createZoneDef(zoneNode: React.ReactElement<ZoneProps> | undefined, zoneLocation: ZoneLocation, props: FrontstageProps): ZoneDef | undefined {\r\n if (zoneNode) {\r\n const zoneDef = new ZoneDef();\r\n const zoneElement = Frontstage.getZoneElement(zoneLocation, props);\r\n\r\n zoneDef.zoneLocation = zoneLocation;\r\n\r\n // istanbul ignore else\r\n if (zoneElement && React.isValidElement(zoneElement)) {\r\n Zone.initializeZoneDef(zoneDef, zoneElement.props);\r\n return zoneDef;\r\n }\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private static getZoneElement(zoneId: WidgetZoneId, props: FrontstageProps): React.ReactElement<ZoneProps> | undefined { // eslint-disable-line deprecation/deprecation\r\n switch (zoneId) {\r\n case ZoneLocation.TopLeft:\r\n return props.contentManipulationTools ? props.contentManipulationTools : props.topLeft; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.TopCenter:\r\n return props.toolSettings ? props.toolSettings : props.topCenter; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.TopRight:\r\n return props.viewNavigationTools ? /* istanbul ignore next */ props.viewNavigationTools : props.topRight; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.CenterLeft:\r\n return props.centerLeft; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.CenterRight:\r\n return props.centerRight; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.BottomLeft:\r\n return props.bottomLeft; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.BottomCenter:\r\n return props.statusBar ? props.statusBar : props.bottomCenter; // eslint-disable-line deprecation/deprecation\r\n case ZoneLocation.BottomRight:\r\n return props.bottomRight; // eslint-disable-line deprecation/deprecation\r\n }\r\n\r\n // Zones can be undefined in a Frontstage\r\n // istanbul ignore next\r\n return undefined;\r\n }\r\n\r\n /** @internal */\r\n public static createStagePanelDef(panelLocation: StagePanelLocation, props: FrontstageProps): StagePanelDef | undefined {\r\n const panelDef = new StagePanelDef();\r\n\r\n const panelElement = Frontstage.getStagePanelElement(panelLocation, props);\r\n panelDef.initializeFromProps(panelElement?.props, panelLocation);\r\n\r\n return panelDef;\r\n }\r\n\r\n private static getStagePanelElement(location: StagePanelLocation, props: FrontstageProps): React.ReactElement<StagePanelProps> | undefined {\r\n let panelElement: React.ReactElement<StagePanelProps> | undefined;\r\n\r\n switch (location) {\r\n case StagePanelLocation.Top:\r\n panelElement = props.topPanel;\r\n break;\r\n case StagePanelLocation.TopMost:\r\n panelElement = props.topMostPanel; // eslint-disable-line deprecation/deprecation\r\n break;\r\n case StagePanelLocation.Left:\r\n panelElement = props.leftPanel;\r\n break;\r\n case StagePanelLocation.Right:\r\n panelElement = props.rightPanel;\r\n break;\r\n case StagePanelLocation.Bottom:\r\n panelElement = props.bottomPanel;\r\n break;\r\n case StagePanelLocation.BottomMost:\r\n panelElement = props.bottomMostPanel; // eslint-disable-line deprecation/deprecation\r\n break;\r\n // istanbul ignore next\r\n default:\r\n throw new RangeError();\r\n }\r\n\r\n // Panels can be undefined in a Frontstage\r\n\r\n return panelElement;\r\n }\r\n\r\n private _getContentRef = (widget: WidgetZoneId) => { // eslint-disable-line deprecation/deprecation\r\n const ref = this._contentRefs.get(widget);\r\n if (ref)\r\n return ref;\r\n const newRef = (el: HTMLDivElement | null) => {\r\n if (this._isMounted) {\r\n this.setState((prevState) => ({\r\n widgetIdToContent: {\r\n ...prevState.widgetIdToContent,\r\n [widget]: el === null ? undefined : el,\r\n },\r\n }));\r\n }\r\n };\r\n this._contentRefs.set(widget, newRef);\r\n return newRef;\r\n };\r\n\r\n // This uses ConfigurableUi to render the content\r\n private doContentLayoutRender(): React.ReactNode {\r\n let contentLayout: React.ReactNode;\r\n\r\n // istanbul ignore else\r\n if (this.props.runtimeProps && this.props.runtimeProps.frontstageDef) {\r\n const frontstageDef = this.props.runtimeProps.frontstageDef;\r\n\r\n // istanbul ignore else\r\n if (frontstageDef.contentLayoutDef && frontstageDef.contentGroup)\r\n contentLayout = (\r\n <ContentLayout\r\n contentLayout={frontstageDef.contentLayoutDef}\r\n contentGroup={frontstageDef.contentGroup}\r\n />\r\n );\r\n else\r\n Logger.logError(UiFramework.loggerCategory(this), `FrontstageDef.contentLayoutDef and FrontstageDef.contentGroup are required for <ContentLayout> component`);\r\n }\r\n\r\n return contentLayout;\r\n }\r\n\r\n private cloneStagePanelElement(panelDef: StagePanelDef | undefined, runtimeProps: FrontstageRuntimeProps): React.ReactNode {\r\n if (!this.state.isUiVisible && UiShowHideManager.showHidePanels)\r\n return null;\r\n\r\n // istanbul ignore else\r\n if (panelDef) {\r\n const { location } = panelDef;\r\n const panelElement = Frontstage.getStagePanelElement(location, this.props);\r\n\r\n // istanbul ignore else\r\n if (panelElement && React.isValidElement(panelElement)) {\r\n const panelKey = getNestedStagePanelKey(panelDef.location);\r\n const panels = runtimeProps.nineZone.nested.panels[panelKey.id];\r\n const panel = StagePanelsManager.getPanel(panelKey.type, panels);\r\n const draggedWidget = runtimeProps.nineZone.zones.draggedWidget;\r\n\r\n const panelRuntimeProps: StagePanelRuntimeProps = {\r\n draggedWidgetId: draggedWidget ? /* istanbul ignore next */ draggedWidget.id : undefined,\r\n getWidgetContentRef: this._getContentRef,\r\n isInFooterMode: runtimeProps.nineZone.zones.isInFooterMode,\r\n isTargeted: !!runtimeProps.nineZone.zones.target,\r\n panel,\r\n panelDef,\r\n stagePanelChangeHandler: runtimeProps.stagePanelChangeHandler,\r\n widgetChangeHandler: runtimeProps.widgetChangeHandler,\r\n widgets: runtimeProps.nineZone.zones.widgets,\r\n widgetTabs: runtimeProps.widgetTabs,\r\n zoneDefProvider: runtimeProps.zoneDefProvider,\r\n };\r\n\r\n return React.cloneElement(panelElement, { runtimeProps: panelRuntimeProps });\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n private cloneZoneElements(zoneIds: ReadonlyArray<WidgetZoneId>, runtimeProps: FrontstageRuntimeProps): React.ReactNode[] {\r\n return zoneIds.map((zoneId: WidgetZoneId) => { // eslint-disable-line deprecation/deprecation\r\n const zoneElement = Frontstage.getZoneElement(zoneId, this.props);\r\n if (!zoneElement || !React.isValidElement(zoneElement))\r\n return null;\r\n\r\n const zoneDef = runtimeProps.zoneDefProvider.getZoneDef(zoneId);\r\n\r\n // istanbul ignore if\r\n if (!zoneDef)\r\n return null;\r\n\r\n const nestedPanelsManager = FrontstageManager.NineZoneManager.getNestedPanelsManager();\r\n const panelsManager = nestedPanelsManager.getPanelsManager(\"inner\");\r\n const type = panelsManager.findWidget(zoneId, runtimeProps.nineZone.nested.panels.inner);\r\n // istanbul ignore if\r\n if (type !== undefined)\r\n return null;\r\n\r\n const zonesManager = FrontstageManager.NineZoneManager.getZonesManager();\r\n const zones = runtimeProps.nineZone.zones;\r\n const ghostOutline = zonesManager.getGhostOutlineBounds(zoneId, zones);\r\n const dropTarget = zonesManager.getDropTarget(zoneId, zones);\r\n const zone = getExtendedZone(zoneId, zones, runtimeProps.zoneDefProvider);\r\n const widget = zone.widgets.length > 0 ? zones.widgets[zone.widgets[0]] : undefined;\r\n const openWidgetId = zone.widgets.find((wId) => zones.widgets[wId].tabIndex >= 0);\r\n const activeTabIndex = openWidgetId ? zones.widgets[openWidgetId].tabIndex : 0;\r\n const draggedWidget = runtimeProps.nineZone.zones.draggedWidget;\r\n const disabledResizeHandles = zonesManager.getDisabledResizeHandles(zoneId, zones);\r\n // istanbul ignore next\r\n const zoneRuntimeProps: ZoneRuntimeProps = {\r\n activeTabIndex,\r\n disabledResizeHandles,\r\n draggedWidget: draggedWidget && /* istanbul ignore next */ draggedWidget.id === zoneId ? /* istanbul ignore next */ draggedWidget : undefined,\r\n dropTarget,\r\n getWidgetContentRef: this._getContentRef,\r\n ghostOutline,\r\n isHidden: (zoneDef.isStatusBar && this.props.isInFooterMode && ( /* istanbul ignore next */ this.state.isUiVisible || /* istanbul ignore next */ !UiShowHideManager.showHideFooter)) ?\r\n /* istanbul ignore next */ false : !this.state.isUiVisible,\r\n isInFooterMode: runtimeProps.nineZone.zones.isInFooterMode,\r\n openWidgetId,\r\n targetChangeHandler: runtimeProps.targetChangeHandler,\r\n widgetChangeHandler: runtimeProps.widgetChangeHandler,\r\n widgetTabs: runtimeProps.widgetTabs,\r\n widget,\r\n zoneDef,\r\n zoneDefProvider: runtimeProps.zoneDefProvider,\r\n zone,\r\n };\r\n return React.cloneElement(zoneElement, { key: zoneId, runtimeProps: zoneRuntimeProps });\r\n });\r\n }\r\n\r\n // eslint-disable-next-line deprecation/deprecation\r\n private cloneWidgetContentElements(zones: ReadonlyArray<WidgetZoneId>, runtimeProps: FrontstageRuntimeProps): React.ReactNode[] {\r\n // eslint-disable-next-line deprecation/deprecation\r\n const widgets = zones.reduce<Array<{ id: WidgetZoneId, def: WidgetDef, tabIndex: number }>>((prev, zoneId) => {\r\n const zoneDef = runtimeProps.zoneDefProvider.getZoneDef(zoneId);\r\n\r\n // istanbul ignore if\r\n if (!zoneDef)\r\n return prev;\r\n\r\n const widgetDefs = zoneDef.widgetDefs.filter((widgetDef: WidgetDef) => {\r\n if (zoneId === 2)\r\n return widgetDef.isVisible;\r\n return widgetDef.isVisible && !widgetDef.isFloating;\r\n });\r\n\r\n for (let i = 0; i < widgetDefs.length; i++) {\r\n prev.push({\r\n id: zoneId,\r\n def: widgetDefs[i],\r\n tabIndex: i,\r\n });\r\n }\r\n\r\n return prev;\r\n }, []);\r\n return widgets.map((widget) => {\r\n const nzWidget = runtimeProps.nineZone.zones.widgets[widget.id];\r\n return (\r\n <WidgetContentRenderer\r\n anchor={nzWidget.horizontalAnchor}\r\n isHidden={nzWidget.tabIndex !== widget.tabIndex}\r\n key={`${widget.id}_${widget.tabIndex}`}\r\n renderTo={this.state.widgetIdToContent[widget.id]}\r\n toolSettingsMode={isToolSettingsWidgetManagerProps(nzWidget) ? nzWidget.mode : undefined}\r\n widgetDef={widget.def}\r\n />\r\n );\r\n });\r\n }\r\n\r\n /** React render method\r\n * @internal\r\n */\r\n public override render(): React.ReactNode {\r\n const { runtimeProps } = this.props;\r\n\r\n if (runtimeProps === undefined)\r\n return null;\r\n\r\n /** For Nine-zone area; includes ContentLayout */\r\n const ninezoneStyle: React.CSSProperties = {\r\n position: \"relative\",\r\n height: \"100%\",\r\n };\r\n\r\n const frontstageDef = runtimeProps.frontstageDef;\r\n\r\n return (\r\n <div style={ninezoneStyle} id=\"uifw-ninezone-area\" className={this.props.className}>\r\n <NZ_Zones style={runtimeProps.nineZone.zones.isInFooterMode ? this._zonesFooterModeStyle : this._zonesStyle} >\r\n <StagePanels\r\n bottomPanel={this.cloneStagePanelElement(frontstageDef.bottomMostPanel, runtimeProps)} // eslint-disable-line deprecation/deprecation\r\n topPanel={this.cloneStagePanelElement(frontstageDef.topMostPanel, runtimeProps)} // eslint-disable-line deprecation/deprecation\r\n >\r\n <StagePanels\r\n bottomPanel={this.cloneStagePanelElement(frontstageDef.bottomPanel, runtimeProps)}\r\n leftPanel={this.cloneStagePanelElement(frontstageDef.leftPanel, runtimeProps)}\r\n rightPanel={this.cloneStagePanelElement(frontstageDef.rightPanel, runtimeProps)}\r\n topPanel={this.cloneStagePanelElement(frontstageDef.topPanel, runtimeProps)}\r\n >\r\n <div\r\n id=\"uifw-ninezone-zones-area\"\r\n ref={this._zonesMeasurer}\r\n style={{\r\n height: \"100%\",\r\n position: \"relative\",\r\n }}\r\n >\r\n {this.doContentLayoutRender()}\r\n {this.cloneZoneElements(Frontstage._zoneIds, runtimeProps)}\r\n </div>\r\n </StagePanels>\r\n </StagePanels>\r\n {this.cloneZoneElements([8], runtimeProps)}\r\n <div\r\n id=\"uifw-ninezone-floating-zones-area\"\r\n ref={this._floatingZonesMeasurer}\r\n style={{\r\n height: \"100%\",\r\n width: \"100%\",\r\n position: \"absolute\",\r\n }}\r\n />\r\n </NZ_Zones>\r\n {this.cloneWidgetContentElements(Frontstage._zoneIds, runtimeProps)}\r\n </div>\r\n );\r\n }\r\n}\r\n\r\ninterface WidgetContentRendererProps {\r\n anchor: HorizontalAnchor; // eslint-disable-line deprecation/deprecation\r\n isHidden: boolean;\r\n renderTo: HTMLDivElement | undefined;\r\n toolSettingsMode: ToolSettingsWidgetMode | undefined;\r\n widgetDef: WidgetDef;\r\n}\r\n\r\ninterface WidgetContentRendererState {\r\n widgetKey: number;\r\n}\r\n\r\nclass WidgetContentRenderer extends React.PureComponent<WidgetContentRendererProps, WidgetContentRendererState> {\r\n private _isMounted = false;\r\n private _content = document.createElement(\"span\");\r\n public constructor(props: WidgetContentRendererProps) {\r\n super(props);\r\n\r\n this.state = {\r\n widgetKey: 0,\r\n };\r\n }\r\n\r\n public override componentDidMount() {\r\n this._isMounted = true;\r\n FrontstageManager.onWidgetStateChangedEvent.addListener(this._handleWidgetStateChangedEvent);\r\n FrontstageManager.onToolActivatedEvent.addListener(this._handleToolActivatedEvent);\r\n\r\n this._content.style.display = this.props.isHidden ? \"none\" : \"flex\";\r\n this._content.style.flexDirection = \"column\";\r\n this._content.style.height = \"100%\";\r\n if (!this.props.renderTo)\r\n return;\r\n this.props.renderTo.appendChild(this._content);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: WidgetContentRendererProps) {\r\n // istanbul ignore next\r\n if (!this._isMounted)\r\n return;\r\n if (this.props.isHidden !== prevProps.isHidden) {\r\n this._content.style.display = this.props.isHidden ? \"none\" : \"flex\";\r\n }\r\n\r\n if (!this.props.renderTo || prevProps.renderTo === this.props.renderTo)\r\n return;\r\n\r\n this.props.widgetDef.saveTransientState();\r\n this.props.renderTo.appendChild(this._content);\r\n\r\n const shouldRemount = this.props.widgetDef.restoreTransientState() || this.props.widgetDef.isToolSettings;\r\n\r\n shouldRemount && this.setState((prevState) => ({ widgetKey: prevState.widgetKey + 1 }));\r\n }\r\n\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n this._content.parentNode && this._content.parentNode.removeChild(this._content);\r\n FrontstageManager.onWidgetStateChangedEvent.removeListener(this._handleWidgetStateChangedEvent);\r\n FrontstageManager.onToolActivatedEvent.removeListener(this._handleToolActivatedEvent);\r\n }\r\n\r\n public override render() {\r\n if (this.props.toolSettingsMode !== undefined) {\r\n return ReactDOM.createPortal((\r\n <ToolSettingsContent\r\n anchor={this.props.anchor}\r\n key={this.state.widgetKey}\r\n mode={this.props.toolSettingsMode}\r\n >\r\n {FrontstageManager.activeToolSettingsProvider && FrontstageManager.activeToolSettingsProvider.toolSettingsNode}\r\n </ToolSettingsContent>\r\n ), this._content);\r\n }\r\n\r\n if (this.props.widgetDef.state === WidgetState.Unloaded)\r\n return null;\r\n return ReactDOM.createPortal((\r\n <React.Fragment\r\n key={this.state.widgetKey}\r\n >\r\n {this.props.widgetDef.reactNode}\r\n </React.Fragment>\r\n ), this._content);\r\n }\r\n\r\n private _handleWidgetStateChangedEvent = (args: WidgetStateChangedEventArgs) => {\r\n if (this.props.widgetDef !== args.widgetDef || !this._isMounted)\r\n return;\r\n this.forceUpdate();\r\n };\r\n\r\n private _handleToolActivatedEvent = () => {\r\n if (this.props.toolSettingsMode === undefined || !this._isMounted)\r\n return;\r\n // force update when tool is activated\r\n this.setState((prevState) => ({ widgetKey: prevState.widgetKey + 1 }));\r\n };\r\n}\r\n\r\n/** @internal */\r\n// eslint-disable-next-line deprecation/deprecation\r\nexport const getExtendedZone = (zoneId: WidgetZoneId, zones: ZonesManagerProps, defProvider: ZoneDefProvider): ZoneManagerProps => {\r\n const zone = zones.zones[zoneId];\r\n if (zoneId === 1 || zoneId === 3) {\r\n let extendOverId: WidgetZoneId = zoneId; // eslint-disable-line deprecation/deprecation\r\n const zonesManager = FrontstageManager.NineZoneManager.getZonesManager();\r\n let bottomZoneId = zonesManager.bottomZones.getInitial(extendOverId);\r\n while (bottomZoneId !== undefined) {\r\n const bottomZoneDef = defProvider.getZoneDef(bottomZoneId);\r\n if (bottomZoneDef && bottomZoneDef.widgetDefs.length !== 0)\r\n break;\r\n\r\n extendOverId = bottomZoneId;\r\n bottomZoneId = zonesManager.bottomZones.getInitial(bottomZoneId);\r\n }\r\n\r\n const bottom = zones.zones[extendOverId].bounds.bottom;\r\n if (bottom === zone.bounds.bottom)\r\n return zone;\r\n return {\r\n ...zone,\r\n bounds: {\r\n ...zone.bounds,\r\n bottom,\r\n },\r\n };\r\n }\r\n return zone;\r\n};\r\n\r\n/** Hook that returns active frontstage id.\r\n * @public\r\n */\r\nexport const useActiveFrontstageId = () => {\r\n const def = useActiveFrontstageDef();\r\n const id = React.useMemo(() => def ? /* istanbul ignore next */ def.id : \"\", [def]);\r\n return id;\r\n};\r\n\r\n/** @internal */\r\nexport function useActiveFrontstageDef() {\r\n const [def, setDef] = React.useState(FrontstageManager.activeFrontstageDef);\r\n React.useEffect(() => {\r\n // istanbul ignore next\r\n const handleActivated = (args: FrontstageActivatedEventArgs) => {\r\n setDef(args.activatedFrontstageDef);\r\n };\r\n FrontstageManager.onFrontstageActivatedEvent.addListener(handleActivated);\r\n return () => {\r\n FrontstageManager.onFrontstageActivatedEvent.removeListener(handleActivated);\r\n };\r\n }, []);\r\n return def;\r\n}\r\n\r\n/** Hook that returns the widgetDef for a specific widgetId within the active frontstage.\r\n * @public\r\n */\r\nexport function useSpecificWidgetDef(widgetId: string) {\r\n const frontstageDef = useActiveFrontstageDef();\r\n return frontstageDef?.findWidgetDef(widgetId);\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClearEmphasisStatusField.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/selection/ClearEmphasisStatusField.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAOH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIpE;;GAEG;AACH,UAAU,6BAA8B,SAAQ,gBAAgB;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,
|
|
1
|
+
{"version":3,"file":"ClearEmphasisStatusField.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/selection/ClearEmphasisStatusField.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAOH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAIpE;;GAEG;AACH,UAAU,6BAA8B,SAAQ,gBAAgB;IAC9D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,6BAA6B,eA0C5E"}
|
|
@@ -16,6 +16,7 @@ import { HideIsolateEmphasizeActionHandler } from "./HideIsolateEmphasizeManager
|
|
|
16
16
|
* @deprecated use clear emphasis tool button option instead.
|
|
17
17
|
*/
|
|
18
18
|
export function ClearEmphasisStatusField(props) {
|
|
19
|
+
var _a;
|
|
19
20
|
const [toolTip] = React.useState(UiFramework.translate("tools.clearVisibility"));
|
|
20
21
|
const activeViewport = useActiveViewport();
|
|
21
22
|
const [showIndicator, setShowIndicator] = React.useState(false);
|
|
@@ -44,6 +45,8 @@ export function ClearEmphasisStatusField(props) {
|
|
|
44
45
|
const clearEmphasize = async () => {
|
|
45
46
|
await UiFramework.hideIsolateEmphasizeActionHandler.processClearEmphasize();
|
|
46
47
|
};
|
|
47
|
-
return (React.createElement(Indicator, { toolTip: toolTip, className: classes, opened: false, onClick: clearEmphasize, iconName: "icon-visibility",
|
|
48
|
+
return (React.createElement(Indicator, { toolTip: toolTip, className: classes, opened: false, onClick: clearEmphasize, iconName: "icon-visibility",
|
|
49
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
50
|
+
isInFooterMode: (_a = props.isInFooterMode) !== null && _a !== void 0 ? _a : true }));
|
|
48
51
|
}
|
|
49
52
|
//# sourceMappingURL=ClearEmphasisStatusField.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClearEmphasisStatusField.js","sourceRoot":"","sources":["../../../../src/appui-react/selection/ClearEmphasisStatusField.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,6BAA6B;AAE7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AASlF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAoC
|
|
1
|
+
{"version":3,"file":"ClearEmphasisStatusField.js","sourceRoot":"","sources":["../../../../src/appui-react/selection/ClearEmphasisStatusField.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,6BAA6B;AAE7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AASlF;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAoC;;IAC3E,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhE,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,uBAAuB;QACvB,MAAM,iBAAiB,GAAG,GAAG,EAAE;YAC7B,uBAAuB;YACvB,MAAM,oBAAoB,GAAG,CAAC,CAAC,cAAc,IAAI,WAAW,CAAC,iCAAiC,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;YACzI,gBAAgB,CAAC,oBAAoB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAClE,CAAC,CAAC;QAEF,uBAAuB;QACvB,gBAAgB,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,WAAW,CAAC,iCAAiC,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAEzJ,iCAAiC,CAAC,wBAAwB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC1F,qBAAqB;QACrB,IAAI,cAAc;YAChB,cAAc,CAAC,yBAAyB,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAE1E,OAAO,GAAG,EAAE;YACV,qBAAqB;YACrB,IAAI,cAAc;gBAChB,cAAc,CAAC,yBAAyB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAE7E,iCAAiC,CAAC,wBAAwB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;QAC/F,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IAE3C,MAAM,OAAO,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAEvF,uBAAuB;IACvB,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;QAChC,MAAM,WAAW,CAAC,iCAAiC,CAAC,qBAAqB,EAAE,CAAC;IAC9E,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,SAAS,IAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAC,iBAAiB;QACjH,mDAAmD;QACnD,cAAc,EAAE,MAAA,KAAK,CAAC,cAAc,mCAAI,IAAI,GAAI,CACnD,CAAC;AACJ,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\n// cSpell:ignore statusfields\r\n\r\nimport * as React from \"react\";\r\nimport { useActiveViewport } from \"../hooks/useActiveViewport\";\r\nimport { Indicator } from \"../statusfields/Indicator\";\r\nimport { StatusFieldProps } from \"../statusfields/StatusFieldProps\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { HideIsolateEmphasizeActionHandler } from \"./HideIsolateEmphasizeManager\";\r\n\r\n/** Clear Emphasis StatusField Props\r\n * @beta\r\n */\r\ninterface ClearEmphasisStatusFieldProps extends StatusFieldProps {\r\n hideWhenUnused?: boolean;\r\n}\r\n\r\n/** Clear Emphasis StatusField\r\n * @beta\r\n * @deprecated use clear emphasis tool button option instead.\r\n */\r\nexport function ClearEmphasisStatusField(props: ClearEmphasisStatusFieldProps) {\r\n const [toolTip] = React.useState(UiFramework.translate(\"tools.clearVisibility\"));\r\n const activeViewport = useActiveViewport();\r\n const [showIndicator, setShowIndicator] = React.useState(false);\r\n\r\n React.useEffect(() => {\r\n // istanbul ignore next\r\n const onEmphasizeChange = () => {\r\n // istanbul ignore next\r\n const hasEmphasizeElements = !!activeViewport && UiFramework.hideIsolateEmphasizeActionHandler.areFeatureOverridesActive(activeViewport);\r\n setShowIndicator(hasEmphasizeElements || !props.hideWhenUnused);\r\n };\r\n\r\n // istanbul ignore next\r\n setShowIndicator((!!activeViewport && UiFramework.hideIsolateEmphasizeActionHandler.areFeatureOverridesActive(activeViewport)) || !props.hideWhenUnused);\r\n\r\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.addListener(onEmphasizeChange);\r\n // istanbul ignore if\r\n if (activeViewport)\r\n activeViewport.onFeatureOverridesChanged.addListener(onEmphasizeChange);\r\n\r\n return () => {\r\n // istanbul ignore if\r\n if (activeViewport)\r\n activeViewport.onFeatureOverridesChanged.removeListener(onEmphasizeChange);\r\n\r\n HideIsolateEmphasizeActionHandler.emphasizeElementsChanged.removeListener(onEmphasizeChange);\r\n };\r\n }, [activeViewport, props.hideWhenUnused]);\r\n\r\n const classes = (showIndicator) ? \"uifw-indicator-fade-in\" : \"uifw-indicator-fade-out\";\r\n\r\n // istanbul ignore next\r\n const clearEmphasize = async () => {\r\n await UiFramework.hideIsolateEmphasizeActionHandler.processClearEmphasize();\r\n };\r\n\r\n return (\r\n <Indicator toolTip={toolTip} className={classes} opened={false} onClick={clearEmphasize} iconName=\"icon-visibility\"\r\n // eslint-disable-next-line deprecation/deprecation\r\n isInFooterMode={props.isInFooterMode ?? true} />\r\n );\r\n}\r\n"]}
|
|
@@ -18,7 +18,10 @@ interface StatusBarState {
|
|
|
18
18
|
*/
|
|
19
19
|
export interface StatusBarProps extends CommonProps {
|
|
20
20
|
widgetControl?: StatusBarWidgetControl;
|
|
21
|
-
|
|
21
|
+
/** Indicates whether the StatusBar is in footer mode
|
|
22
|
+
* @deprecated In upcoming version, widget mode will be removed. Consider this parameter to always be true.
|
|
23
|
+
*/
|
|
24
|
+
isInFooterMode?: boolean;
|
|
22
25
|
}
|
|
23
26
|
/** Status Bar React component.
|
|
24
27
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBar.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAO,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAyC,MAAM,4BAA4B,CAAC;AAG7G,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAKhH;;GAEG;AACH,UAAU,cAAc;IACtB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,EAAE,wBAAwB,GAAG,SAAS,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"StatusBar.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBar.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,WAAW,EAAO,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAyC,MAAM,4BAA4B,CAAC;AAG7G,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AAKhH;;GAEG;AACH,UAAU,cAAc;IACtB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,mBAAmB,EAAE,wBAAwB,GAAG,SAAS,CAAC;CAC3D;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC;;MAEE;IACF,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAUD;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC;IAC5E,OAAO,CAAC,QAAQ,CAA0B;IAE1C,gBAAgB;gBACJ,KAAK,EAAE,cAAc;IASjB,MAAM,IAAI,KAAK,CAAC,SAAS;IA0CzB,iBAAiB;IASjB,oBAAoB;IAOpC,OAAO,CAAC,wBAAwB,CAQ9B;IAEF,OAAO,CAAC,eAAe,CAUrB;IAEF,2CAA2C;IAC3C,OAAO,CAAC,2BAA2B,CAEjC;IAEF;;;OAGG;IACH,OAAO,CAAC,kCAAkC,CAIxC;IAEF;;OAEG;IACH,OAAO,CAAC,oCAAoC,CAI1C;IAEF,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,sBAAsB,CAE5B;IAEF,OAAO,CAAC,iBAAiB,CAIvB;IAEF,OAAO,CAAC,aAAa,CAGnB;IAEF,OAAO,CAAC,qBAAqB,CAE3B;CACH;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,eAG1D;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,eAGzD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,eAG3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,eAG1D;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,2CAK3B,CAAC"}
|
|
@@ -86,25 +86,33 @@ export class StatusBar extends React.Component {
|
|
|
86
86
|
};
|
|
87
87
|
}
|
|
88
88
|
render() {
|
|
89
|
+
var _a, _b;
|
|
89
90
|
let footerSections = null;
|
|
90
91
|
const widgetControl = this.props.widgetControl;
|
|
91
92
|
// istanbul ignore else
|
|
92
93
|
if (widgetControl && widgetControl.getReactNode) {
|
|
93
94
|
footerSections = widgetControl.getReactNode({
|
|
94
|
-
|
|
95
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
96
|
+
isInFooterMode: (_a = this.props.isInFooterMode) !== null && _a !== void 0 ? _a : true,
|
|
95
97
|
openWidget: this.state.openWidget,
|
|
96
98
|
toastTargetRef: this._handleToastTargetRef,
|
|
97
99
|
onOpenWidget: this._handleOpenWidget,
|
|
98
100
|
});
|
|
99
101
|
}
|
|
100
102
|
return (React.createElement(StatusBarContext.Provider, { value: {
|
|
101
|
-
|
|
103
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
104
|
+
isInFooterMode: (_b = this.props.isInFooterMode) !== null && _b !== void 0 ? _b : true,
|
|
102
105
|
openWidget: this.state.openWidget,
|
|
103
106
|
toastTargetRef: this._handleToastTargetRef,
|
|
104
107
|
onOpenWidget: this._handleOpenWidget,
|
|
105
108
|
} },
|
|
106
|
-
React.createElement(SafeAreaContext.Consumer, null, (safeAreaInsets) =>
|
|
107
|
-
|
|
109
|
+
React.createElement(SafeAreaContext.Consumer, null, (safeAreaInsets) => {
|
|
110
|
+
var _a;
|
|
111
|
+
return (React.createElement(Footer // eslint-disable-line deprecation/deprecation
|
|
112
|
+
, { className: this.props.className, messages: this.getFooterMessages(),
|
|
113
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
114
|
+
isInFooterMode: (_a = this.props.isInFooterMode) !== null && _a !== void 0 ? _a : true, onMouseEnter: UiShowHideManager.handleWidgetMouseEnter, safeAreaInsets: safeAreaInsets, style: this.props.style }, footerSections));
|
|
115
|
+
})));
|
|
108
116
|
}
|
|
109
117
|
componentDidMount() {
|
|
110
118
|
MessageManager.onMessageAddedEvent.addListener(this._handleMessageAddedEvent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBar.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport \"./StatusBar.scss\";\r\nimport * as React from \"react\";\r\nimport { CommonDivProps, CommonProps, Div } from \"@itwin/core-react\";\r\nimport { Footer } from \"@itwin/appui-layout-react\";\r\nimport { ActivityMessageEventArgs, MessageAddedEventArgs, MessageManager } from \"../messages/MessageManager\";\r\nimport { SafeAreaContext } from \"../safearea/SafeAreaContext\";\r\nimport { UiShowHideManager } from \"../utils/UiShowHideManager\";\r\nimport { StatusBarFieldId, StatusBarWidgetControl, StatusBarWidgetControlArgs } from \"./StatusBarWidgetControl\";\r\nimport { CustomActivityMessageRenderer } from \"../messages/ActivityMessage\";\r\n\r\n// cspell:ignore safearea\r\n\r\n/** State for the [[StatusBar]] React component\r\n * @internal\r\n */\r\ninterface StatusBarState {\r\n openWidget: StatusBarFieldId;\r\n activityMessageInfo: ActivityMessageEventArgs | undefined;\r\n}\r\n\r\n/** Properties for the [[StatusBar]] React component\r\n * @public\r\n */\r\nexport interface StatusBarProps extends CommonProps {\r\n widgetControl?: StatusBarWidgetControl;\r\n isInFooterMode: boolean;\r\n}\r\n\r\n/** Message type for the [[StatusBar]] React component\r\n * @internal\r\n */\r\ninterface StatusBarMessage {\r\n close: () => void;\r\n id: string;\r\n}\r\n\r\n/** Status Bar React component.\r\n * @public\r\n */\r\nexport class StatusBar extends React.Component<StatusBarProps, StatusBarState> {\r\n private messages: StatusBarMessage[] = [];\r\n\r\n /** @internal */\r\n constructor(props: StatusBarProps) {\r\n super(props);\r\n\r\n this.state = {\r\n openWidget: null,\r\n activityMessageInfo: undefined,\r\n };\r\n }\r\n\r\n public override render(): React.ReactNode {\r\n let footerSections: React.ReactNode = null;\r\n const widgetControl = this.props.widgetControl;\r\n\r\n // istanbul ignore else\r\n if (widgetControl && widgetControl.getReactNode) {\r\n footerSections = widgetControl.getReactNode({\r\n isInFooterMode: this.props.isInFooterMode,\r\n openWidget: this.state.openWidget,\r\n toastTargetRef: this._handleToastTargetRef,\r\n onOpenWidget: this._handleOpenWidget,\r\n });\r\n }\r\n\r\n return (\r\n <StatusBarContext.Provider value={{\r\n isInFooterMode: this.props.isInFooterMode,\r\n openWidget: this.state.openWidget,\r\n toastTargetRef: this._handleToastTargetRef,\r\n onOpenWidget: this._handleOpenWidget,\r\n }}>\r\n <SafeAreaContext.Consumer>\r\n {(safeAreaInsets) => (\r\n <Footer // eslint-disable-line deprecation/deprecation\r\n className={this.props.className}\r\n messages={this.getFooterMessages()}\r\n isInFooterMode={this.props.isInFooterMode}\r\n onMouseEnter={UiShowHideManager.handleWidgetMouseEnter}\r\n safeAreaInsets={safeAreaInsets}\r\n style={this.props.style}\r\n >\r\n {footerSections}\r\n </Footer>\r\n )}\r\n </SafeAreaContext.Consumer>\r\n </StatusBarContext.Provider>\r\n );\r\n }\r\n\r\n public override componentDidMount() {\r\n MessageManager.onMessageAddedEvent.addListener(this._handleMessageAddedEvent);\r\n MessageManager.onActivityMessageUpdatedEvent.addListener(this._handleActivityMessageUpdatedEvent);\r\n MessageManager.onActivityMessageCancelledEvent.addListener(this._handleActivityMessageCancelledEvent);\r\n MessageManager.onMessagesUpdatedEvent.addListener(this._handleMessagesUpdatedEvent);\r\n\r\n MessageManager.updateMessages();\r\n }\r\n\r\n public override componentWillUnmount() {\r\n MessageManager.onMessageAddedEvent.removeListener(this._handleMessageAddedEvent);\r\n MessageManager.onActivityMessageUpdatedEvent.removeListener(this._handleActivityMessageUpdatedEvent);\r\n MessageManager.onActivityMessageCancelledEvent.removeListener(this._handleActivityMessageCancelledEvent);\r\n MessageManager.onMessagesUpdatedEvent.removeListener(this._handleMessagesUpdatedEvent);\r\n }\r\n\r\n private _handleMessageAddedEvent = (_args: MessageAddedEventArgs) => {\r\n this._updateMessages();\r\n const messagesToAdd = MessageManager.activeMessageManager.messages.filter((msg) => !this.messages.find((m) => m.id === msg.id));\r\n messagesToAdd.forEach((msg) => {\r\n const displayedMessage = MessageManager.displayMessage(msg.messageDetails, { onRemove: () => this._closeMessage(msg.id) });\r\n if(!!displayedMessage)\r\n this.messages.push({close: displayedMessage.close, id: msg.id});\r\n });\r\n };\r\n\r\n private _updateMessages = () => {\r\n const updatedMessages = [...this.messages];\r\n this.messages.forEach((m) => {\r\n if (!MessageManager.activeMessageManager.messages.some((msg) => m.id === msg.id)) {\r\n m.close();\r\n const index = updatedMessages.findIndex((msg) => msg.id === m.id);\r\n updatedMessages.splice(index, 1);\r\n }\r\n });\r\n this.messages = updatedMessages;\r\n };\r\n\r\n /** Respond to clearing the message list */\r\n private _handleMessagesUpdatedEvent = () => {\r\n this._updateMessages();\r\n };\r\n\r\n /**\r\n * Sets state of the status bar to updated values reflecting activity progress.\r\n * @param args New values to set for ActivityMessage\r\n */\r\n private _handleActivityMessageUpdatedEvent = (args: ActivityMessageEventArgs) => {\r\n this.setState({\r\n activityMessageInfo: args,\r\n });\r\n };\r\n\r\n /**\r\n * Hides ActivityMessage after cancellation\r\n */\r\n private _handleActivityMessageCancelledEvent = () => {\r\n this.setState({\r\n activityMessageInfo: undefined,\r\n });\r\n };\r\n\r\n private getFooterMessages(): React.ReactNode {\r\n return (\r\n <CustomActivityMessageRenderer settings={{placement: \"bottom\"}} activityMessageInfo={this.state.activityMessageInfo} cancelActivityMessage={this._cancelActivityMessage} />\r\n );\r\n }\r\n\r\n /**\r\n * Ends canceled process and dismisses ActivityMessage\r\n */\r\n private _cancelActivityMessage = () => {\r\n MessageManager.endActivityMessage(false);\r\n };\r\n\r\n private _handleOpenWidget = (openWidget: StatusBarFieldId) => {\r\n this.setState({\r\n openWidget,\r\n });\r\n };\r\n\r\n private _closeMessage = (id: string) => {\r\n MessageManager.activeMessageManager.remove(id);\r\n MessageManager.updateMessages();\r\n };\r\n\r\n private _handleToastTargetRef = (toastTarget: HTMLElement | null) => {\r\n MessageManager.registerAnimateOutToElement(toastTarget);\r\n };\r\n}\r\n\r\n/** StatusBar With Space Between Items React functional component\r\n * @public\r\n */\r\nexport function StatusBarSpaceBetween(props: CommonDivProps) {\r\n const { className, ...divProps } = props;\r\n return <Div {...divProps} mainClassName={className ? className : \"uifw-statusbar-space-between\"} />;\r\n}\r\n\r\n/** StatusBar Left Section React functional component\r\n * @public\r\n */\r\nexport function StatusBarLeftSection(props: CommonDivProps) {\r\n const { className, ...divProps } = props;\r\n return <Div {...divProps} mainClassName={className ? className : \"uifw-statusbar-left\"} />;\r\n}\r\n\r\n/** StatusBar Center Section React functional component\r\n * @public\r\n */\r\nexport function StatusBarCenterSection(props: CommonDivProps) {\r\n const { className, ...divProps } = props;\r\n return <Div {...divProps} mainClassName={className ? className : \"uifw-statusbar-center\"} />;\r\n}\r\n\r\n/** StatusBar Right Section React functional component\r\n * @public\r\n */\r\nexport function StatusBarRightSection(props: CommonDivProps) {\r\n const { className, ...divProps } = props;\r\n return <Div {...divProps} mainClassName={className ? className : \"uifw-statusbar-right\"} />;\r\n}\r\n\r\n/** Context providing values for StatusFieldProps and MessageCenterFieldProps\r\n * @internal\r\n */\r\nexport const StatusBarContext = React.createContext<StatusBarWidgetControlArgs>({ // eslint-disable-line @typescript-eslint/naming-convention\r\n isInFooterMode: true,\r\n onOpenWidget: /* istanbul ignore next */ () => { },\r\n openWidget: \"\",\r\n toastTargetRef: { current: null },\r\n});\r\n"]}
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBar.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport \"./StatusBar.scss\";\r\nimport * as React from \"react\";\r\nimport { CommonDivProps, CommonProps, Div } from \"@itwin/core-react\";\r\nimport { Footer } from \"@itwin/appui-layout-react\";\r\nimport { ActivityMessageEventArgs, MessageAddedEventArgs, MessageManager } from \"../messages/MessageManager\";\r\nimport { SafeAreaContext } from \"../safearea/SafeAreaContext\";\r\nimport { UiShowHideManager } from \"../utils/UiShowHideManager\";\r\nimport { StatusBarFieldId, StatusBarWidgetControl, StatusBarWidgetControlArgs } from \"./StatusBarWidgetControl\";\r\nimport { CustomActivityMessageRenderer } from \"../messages/ActivityMessage\";\r\n\r\n// cspell:ignore safearea\r\n\r\n/** State for the [[StatusBar]] React component\r\n * @internal\r\n */\r\ninterface StatusBarState {\r\n openWidget: StatusBarFieldId;\r\n activityMessageInfo: ActivityMessageEventArgs | undefined;\r\n}\r\n\r\n/** Properties for the [[StatusBar]] React component\r\n * @public\r\n */\r\nexport interface StatusBarProps extends CommonProps {\r\n widgetControl?: StatusBarWidgetControl;\r\n /** Indicates whether the StatusBar is in footer mode\r\n * @deprecated In upcoming version, widget mode will be removed. Consider this parameter to always be true.\r\n */\r\n isInFooterMode?: boolean;\r\n}\r\n\r\n/** Message type for the [[StatusBar]] React component\r\n * @internal\r\n */\r\ninterface StatusBarMessage {\r\n close: () => void;\r\n id: string;\r\n}\r\n\r\n/** Status Bar React component.\r\n * @public\r\n */\r\nexport class StatusBar extends React.Component<StatusBarProps, StatusBarState> {\r\n private messages: StatusBarMessage[] = [];\r\n\r\n /** @internal */\r\n constructor(props: StatusBarProps) {\r\n super(props);\r\n\r\n this.state = {\r\n openWidget: null,\r\n activityMessageInfo: undefined,\r\n };\r\n }\r\n\r\n public override render(): React.ReactNode {\r\n let footerSections: React.ReactNode = null;\r\n const widgetControl = this.props.widgetControl;\r\n\r\n // istanbul ignore else\r\n if (widgetControl && widgetControl.getReactNode) {\r\n footerSections = widgetControl.getReactNode({\r\n // eslint-disable-next-line deprecation/deprecation\r\n isInFooterMode: this.props.isInFooterMode ?? true,\r\n openWidget: this.state.openWidget,\r\n toastTargetRef: this._handleToastTargetRef,\r\n onOpenWidget: this._handleOpenWidget,\r\n });\r\n }\r\n\r\n return (\r\n <StatusBarContext.Provider value={{\r\n // eslint-disable-next-line deprecation/deprecation\r\n isInFooterMode: this.props.isInFooterMode ?? true,\r\n openWidget: this.state.openWidget,\r\n toastTargetRef: this._handleToastTargetRef,\r\n onOpenWidget: this._handleOpenWidget,\r\n }}>\r\n <SafeAreaContext.Consumer>\r\n {(safeAreaInsets) => (\r\n <Footer // eslint-disable-line deprecation/deprecation\r\n className={this.props.className}\r\n messages={this.getFooterMessages()}\r\n // eslint-disable-next-line deprecation/deprecation\r\n isInFooterMode={this.props.isInFooterMode ?? true}\r\n onMouseEnter={UiShowHideManager.handleWidgetMouseEnter}\r\n safeAreaInsets={safeAreaInsets}\r\n style={this.props.style}\r\n >\r\n {footerSections}\r\n </Footer>\r\n )}\r\n </SafeAreaContext.Consumer>\r\n </StatusBarContext.Provider>\r\n );\r\n }\r\n\r\n public override componentDidMount() {\r\n MessageManager.onMessageAddedEvent.addListener(this._handleMessageAddedEvent);\r\n MessageManager.onActivityMessageUpdatedEvent.addListener(this._handleActivityMessageUpdatedEvent);\r\n MessageManager.onActivityMessageCancelledEvent.addListener(this._handleActivityMessageCancelledEvent);\r\n MessageManager.onMessagesUpdatedEvent.addListener(this._handleMessagesUpdatedEvent);\r\n\r\n MessageManager.updateMessages();\r\n }\r\n\r\n public override componentWillUnmount() {\r\n MessageManager.onMessageAddedEvent.removeListener(this._handleMessageAddedEvent);\r\n MessageManager.onActivityMessageUpdatedEvent.removeListener(this._handleActivityMessageUpdatedEvent);\r\n MessageManager.onActivityMessageCancelledEvent.removeListener(this._handleActivityMessageCancelledEvent);\r\n MessageManager.onMessagesUpdatedEvent.removeListener(this._handleMessagesUpdatedEvent);\r\n }\r\n\r\n private _handleMessageAddedEvent = (_args: MessageAddedEventArgs) => {\r\n this._updateMessages();\r\n const messagesToAdd = MessageManager.activeMessageManager.messages.filter((msg) => !this.messages.find((m) => m.id === msg.id));\r\n messagesToAdd.forEach((msg) => {\r\n const displayedMessage = MessageManager.displayMessage(msg.messageDetails, { onRemove: () => this._closeMessage(msg.id) });\r\n if(!!displayedMessage)\r\n this.messages.push({close: displayedMessage.close, id: msg.id});\r\n });\r\n };\r\n\r\n private _updateMessages = () => {\r\n const updatedMessages = [...this.messages];\r\n this.messages.forEach((m) => {\r\n if (!MessageManager.activeMessageManager.messages.some((msg) => m.id === msg.id)) {\r\n m.close();\r\n const index = updatedMessages.findIndex((msg) => msg.id === m.id);\r\n updatedMessages.splice(index, 1);\r\n }\r\n });\r\n this.messages = updatedMessages;\r\n };\r\n\r\n /** Respond to clearing the message list */\r\n private _handleMessagesUpdatedEvent = () => {\r\n this._updateMessages();\r\n };\r\n\r\n /**\r\n * Sets state of the status bar to updated values reflecting activity progress.\r\n * @param args New values to set for ActivityMessage\r\n */\r\n private _handleActivityMessageUpdatedEvent = (args: ActivityMessageEventArgs) => {\r\n this.setState({\r\n activityMessageInfo: args,\r\n });\r\n };\r\n\r\n /**\r\n * Hides ActivityMessage after cancellation\r\n */\r\n private _handleActivityMessageCancelledEvent = () => {\r\n this.setState({\r\n activityMessageInfo: undefined,\r\n });\r\n };\r\n\r\n private getFooterMessages(): React.ReactNode {\r\n return (\r\n <CustomActivityMessageRenderer settings={{placement: \"bottom\"}} activityMessageInfo={this.state.activityMessageInfo} cancelActivityMessage={this._cancelActivityMessage} />\r\n );\r\n }\r\n\r\n /**\r\n * Ends canceled process and dismisses ActivityMessage\r\n */\r\n private _cancelActivityMessage = () => {\r\n MessageManager.endActivityMessage(false);\r\n };\r\n\r\n private _handleOpenWidget = (openWidget: StatusBarFieldId) => {\r\n this.setState({\r\n openWidget,\r\n });\r\n };\r\n\r\n private _closeMessage = (id: string) => {\r\n MessageManager.activeMessageManager.remove(id);\r\n MessageManager.updateMessages();\r\n };\r\n\r\n private _handleToastTargetRef = (toastTarget: HTMLElement | null) => {\r\n MessageManager.registerAnimateOutToElement(toastTarget);\r\n };\r\n}\r\n\r\n/** StatusBar With Space Between Items React functional component\r\n * @public\r\n */\r\nexport function StatusBarSpaceBetween(props: CommonDivProps) {\r\n const { className, ...divProps } = props;\r\n return <Div {...divProps} mainClassName={className ? className : \"uifw-statusbar-space-between\"} />;\r\n}\r\n\r\n/** StatusBar Left Section React functional component\r\n * @public\r\n */\r\nexport function StatusBarLeftSection(props: CommonDivProps) {\r\n const { className, ...divProps } = props;\r\n return <Div {...divProps} mainClassName={className ? className : \"uifw-statusbar-left\"} />;\r\n}\r\n\r\n/** StatusBar Center Section React functional component\r\n * @public\r\n */\r\nexport function StatusBarCenterSection(props: CommonDivProps) {\r\n const { className, ...divProps } = props;\r\n return <Div {...divProps} mainClassName={className ? className : \"uifw-statusbar-center\"} />;\r\n}\r\n\r\n/** StatusBar Right Section React functional component\r\n * @public\r\n */\r\nexport function StatusBarRightSection(props: CommonDivProps) {\r\n const { className, ...divProps } = props;\r\n return <Div {...divProps} mainClassName={className ? className : \"uifw-statusbar-right\"} />;\r\n}\r\n\r\n/** Context providing values for StatusFieldProps and MessageCenterFieldProps\r\n * @internal\r\n */\r\nexport const StatusBarContext = React.createContext<StatusBarWidgetControlArgs>({ // eslint-disable-line @typescript-eslint/naming-convention\r\n isInFooterMode: true,\r\n onOpenWidget: /* istanbul ignore next */ () => { },\r\n openWidget: \"\",\r\n toastTargetRef: { current: null },\r\n});\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBarComposer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBarComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACoD,mBAAmB,EAE7E,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAoC,MAAM,mBAAmB,CAAC;AAuBlF,UAAU,8BAA8B;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAMD,gBAAgB;AAChB,wBAAgB,iBAAiB,mCAEhC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,eAqB5D;AAmID;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,uBAAuB;IACvB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAE7B,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"StatusBarComposer.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBarComposer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACoD,mBAAmB,EAE7E,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,WAAW,EAAoC,MAAM,mBAAmB,CAAC;AAuBlF,UAAU,8BAA8B;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAMD,gBAAgB;AAChB,wBAAgB,iBAAiB,mCAEhC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,eAqB5D;AAmID;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,uBAAuB;IACvB,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAE7B,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,eAqM9D"}
|
|
@@ -225,6 +225,7 @@ export function StatusBarComposer(props) {
|
|
|
225
225
|
isStatusBarItem(item) && item.reactNode,
|
|
226
226
|
isAbstractStatusBarActionItem(item) && generateActionStatusBarItem(item, statusBarContext.isInFooterMode),
|
|
227
227
|
isAbstractStatusBarLabelItem(item) && generateActionStatusLabelItem(item, statusBarContext.isInFooterMode))));
|
|
228
|
+
// eslint-disable-next-line deprecation/deprecation
|
|
228
229
|
}, [statusBarContext.isInFooterMode, handleEntryResize]);
|
|
229
230
|
const getSectionItems = React.useCallback((section) => {
|
|
230
231
|
const sectionItems = statusBarItems
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBarComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport {\r\n AbstractStatusBarActionItem, AbstractStatusBarLabelItem, CommonStatusBarItem, ConditionalBooleanValue, ConditionalStringValue,\r\n isAbstractStatusBarActionItem, isAbstractStatusBarLabelItem, StatusBarItemsManager, StatusBarLabelSide, StatusBarSection, UiSyncEventArgs,\r\n} from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Icon, useRefs, useResizeObserver } from \"@itwin/core-react\";\r\nimport { eqlOverflown, FooterIndicator } from \"@itwin/appui-layout-react\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { Indicator } from \"../statusfields/Indicator\";\r\nimport { StatusBarOverflow } from \"./Overflow\";\r\nimport { StatusBarOverflowPanel } from \"./OverflowPanel\";\r\nimport { StatusBarCenterSection, StatusBarContext, StatusBarLeftSection, StatusBarRightSection, StatusBarSpaceBetween } from \"./StatusBar\";\r\nimport { isStatusBarItem } from \"./StatusBarItem\";\r\nimport { useDefaultStatusBarItems } from \"./useDefaultStatusBarItems\";\r\nimport { useUiItemsProviderStatusBarItems } from \"./useUiItemsProviderStatusBarItems\";\r\n\r\n/** Private function to generate a value that will allow the proper order to be maintained when items are placed in overflow panel */\r\nfunction getCombinedSectionItemPriority(item: CommonStatusBarItem) {\r\n let sectionValue = 0;\r\n if (item.section === StatusBarSection.Center)\r\n sectionValue = 100000;\r\n else if (item.section === StatusBarSection.Context)\r\n sectionValue = 200000;\r\n else if (item.section === StatusBarSection.Right)\r\n sectionValue = 300000;\r\n return sectionValue + item.itemPriority;\r\n}\r\n\r\ninterface DockedStatusBarEntryContextArg {\r\n readonly isOverflown: boolean;\r\n readonly onResize: (w: number) => void;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nconst DockedStatusBarEntryContext = React.createContext<DockedStatusBarEntryContextArg>(null!);\r\nDockedStatusBarEntryContext.displayName = \"nz:DockedStatusBarEntryContext\";\r\n\r\n/** @internal */\r\nexport function useStatusBarEntry() {\r\n return React.useContext(DockedStatusBarEntryContext);\r\n}\r\n\r\n/** Properties of [[DockedStatusBarItem]] component.\r\n * @internal future\r\n */\r\nexport interface StatusBarItemProps extends CommonProps {\r\n /** Tool setting content. */\r\n children?: React.ReactNode;\r\n itemPriority?: number;\r\n providerId?: string;\r\n section?: string;\r\n}\r\n\r\n/** Used in [[StatusBarComposer]] component to display a statusbar item.\r\n * @internal future\r\n */\r\nexport function DockedStatusBarItem(props: StatusBarItemProps) {\r\n const { onResize } = useStatusBarEntry();\r\n const ref = useResizeObserver<HTMLDivElement>(onResize);\r\n const className = classnames(\r\n \"uifw-statusbar-item-container\",\r\n props.className,\r\n );\r\n return (\r\n <div\r\n data-item-id={props.itemId}\r\n data-item-type=\"status-bar-item\"\r\n data-item-location={props.section}\r\n data-item-priority={props.itemPriority}\r\n data-item-provider-id={props.providerId}\r\n className={className}\r\n ref={ref}\r\n style={props.style}\r\n >\r\n {props.children}\r\n </div>\r\n );\r\n}\r\n\r\ninterface DockedStatusBarEntryProps {\r\n children?: React.ReactNode;\r\n entryKey: string;\r\n getOnResize: (key: string) => (w: number) => void;\r\n}\r\n\r\n/** Wrapper for status bar entries so their size can be used to determine if the status bar container can display them or if they will need to be placed in an overflow panel. */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention, no-shadow\r\nconst DockedStatusBarEntry = React.memo<DockedStatusBarEntryProps>(function DockedStatusbarEntry({ children, entryKey, getOnResize }) {\r\n const onResize = React.useMemo(() => getOnResize(entryKey), [getOnResize, entryKey]);\r\n const entry = React.useMemo<DockedStatusBarEntryContextArg>(() => ({\r\n isOverflown: false,\r\n onResize,\r\n }), [onResize]);\r\n return (\r\n <DockedStatusBarEntryContext.Provider value={entry}>\r\n {children}\r\n </DockedStatusBarEntryContext.Provider>\r\n );\r\n});\r\n\r\n/** Private function to set up sync event monitoring of statusbar items */\r\nfunction useStatusBarItemSyncEffect(itemsManager: StatusBarItemsManager, syncIdsOfInterest: string[]) {\r\n React.useEffect(() => {\r\n const handleSyncUiEvent = (args: UiSyncEventArgs) => {\r\n if (0 === syncIdsOfInterest.length)\r\n return;\r\n\r\n // istanbul ignore else\r\n if (syncIdsOfInterest.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) {\r\n // process each item that has interest\r\n itemsManager.refreshAffectedItems(args.eventIds);\r\n }\r\n };\r\n\r\n // Note: that items with conditions have condition run when loaded into the items manager\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n return () => {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\r\n };\r\n }, [itemsManager, itemsManager.items, syncIdsOfInterest]);\r\n}\r\n\r\n/** function to produce a StatusBarItem component from an AbstractStatusBarLabelItem */\r\nfunction generateActionStatusLabelItem(item: AbstractStatusBarLabelItem, isInFooterMode: boolean): React.ReactNode {\r\n const iconPaddingClass = item.labelSide === StatusBarLabelSide.Left ? \"nz-icon-padding-right\" : \"nz-icon-padding-left\";\r\n return (<FooterIndicator\r\n isInFooterMode={isInFooterMode}\r\n >\r\n {item.icon && <Icon iconSpec={item.icon} />}\r\n {item.label && <span className={iconPaddingClass}>{ConditionalStringValue.getValue(item.label)}</span>}\r\n </FooterIndicator>\r\n );\r\n}\r\n\r\n/** function to produce a StatusBarItem component from an AbstractStatusBarActionItem */\r\nfunction generateActionStatusBarItem(item: AbstractStatusBarActionItem, isInFooterMode: boolean): React.ReactNode {\r\n return <Indicator toolTip={ConditionalStringValue.getValue(item.tooltip)} opened={false} onClick={item.execute} iconSpec={item.icon}\r\n isInFooterMode={isInFooterMode} />;\r\n}\r\n\r\n/** local function to combine items from Stage and from Extensions */\r\nfunction combineItems(stageItems: ReadonlyArray<CommonStatusBarItem>, addonItems: ReadonlyArray<CommonStatusBarItem>) {\r\n const items: CommonStatusBarItem[] = [];\r\n if (stageItems.length) {\r\n // Walk through each and ensure no duplicate ids are added.\r\n stageItems.forEach((srcItem) => {\r\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\r\n items.push(srcItem);\r\n }\r\n });\r\n }\r\n if (addonItems.length) {\r\n // Walk through each and ensure no duplicate ids are added.\r\n addonItems.forEach((srcItem) => {\r\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\r\n items.push(srcItem);\r\n }\r\n });\r\n }\r\n return items;\r\n}\r\n\r\n/** local function to ensure a width value is defined for a status bar entries. */\r\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\r\n for (const [, val] of map) {\r\n // istanbul ignore next\r\n if (val === undefined)\r\n return undefined;\r\n }\r\n return map as Map<string, T>;\r\n}\r\n\r\n/** Returns a subset of docked entry keys that exceed given width and should be placed in overflow panel. */\r\nfunction getItemToPlaceInOverflow(width: number, docked: ReadonlyArray<readonly [string, number]>, overflowWidth: number) {\r\n let settingsWidth = 0;\r\n\r\n let i = 0;\r\n for (; i < docked.length; i++) {\r\n const w = docked[i][1];\r\n const newSettingsWidth = settingsWidth + w;\r\n if (newSettingsWidth > width) {\r\n settingsWidth += overflowWidth;\r\n break;\r\n }\r\n settingsWidth = newSettingsWidth;\r\n }\r\n\r\n let j = i;\r\n for (; j > 0; j--) {\r\n if (settingsWidth <= width)\r\n break;\r\n const w = docked[j][1];\r\n settingsWidth -= w;\r\n }\r\n\r\n const overflowItems = new Array<string>();\r\n for (i = j; i < docked.length; i++) {\r\n overflowItems.push(docked[i][0]);\r\n }\r\n return overflowItems;\r\n}\r\n\r\nfunction isItemInOverflow(id: string, overflowItemIds: ReadonlyArray<string> | undefined) {\r\n if (!overflowItemIds || 0 === overflowItemIds.length)\r\n return false;\r\n return !!overflowItemIds.find((value) => value === id);\r\n}\r\n\r\n/** Properties for the [[StatusBarComposer]] React components\r\n * @public\r\n */\r\nexport interface StatusBarComposerProps extends CommonProps {\r\n /** Status Bar items */\r\n items: CommonStatusBarItem[];\r\n\r\n /** CSS class name override for the overall Status Bar */\r\n mainClassName?: string;\r\n /** CSS class name override for the left section */\r\n leftClassName?: string;\r\n /** CSS class name override for the center section */\r\n centerClassName?: string;\r\n /** CSS class name override for the right section */\r\n rightClassName?: string;\r\n}\r\n\r\n/** Component to load components into the [[StatusBar]].\r\n * @public\r\n */\r\nexport function StatusBarComposer(props: StatusBarComposerProps) {\r\n const { className, style, items, mainClassName, leftClassName, centerClassName, rightClassName } = props;\r\n const [defaultItemsManager, setDefaultItemsManager] = React.useState(() => new StatusBarItemsManager(items));\r\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\r\n const containerWidth = React.useRef<number | undefined>(undefined);\r\n\r\n const isInitialMount = React.useRef(true);\r\n React.useEffect(() => {\r\n if (isInitialMount.current)\r\n isInitialMount.current = false;\r\n else {\r\n setDefaultItemsManager(new StatusBarItemsManager(items));\r\n }\r\n }, [items]);\r\n const defaultItems = useDefaultStatusBarItems(defaultItemsManager);\r\n const syncIdsOfInterest = React.useMemo(() => StatusBarItemsManager.getSyncIdsOfInterest(defaultItems), [defaultItems]);\r\n useStatusBarItemSyncEffect(defaultItemsManager, syncIdsOfInterest);\r\n\r\n const statusBarContext = React.useContext(StatusBarContext);\r\n const [addonItemsManager] = React.useState(() => new StatusBarItemsManager());\r\n const addonItems = useUiItemsProviderStatusBarItems(addonItemsManager);\r\n const addonSyncIdsOfInterest = React.useMemo(() => StatusBarItemsManager.getSyncIdsOfInterest(addonItems), [addonItems]);\r\n useStatusBarItemSyncEffect(addonItemsManager, addonSyncIdsOfInterest);\r\n\r\n const statusBarItems = React.useMemo(() => combineItems(defaultItems, addonItems), [defaultItems, addonItems]);\r\n const entryWidths = React.useRef(new Map<string, number | undefined>());\r\n const overflowWidth = React.useRef<number | undefined>(undefined);\r\n const [overflown, setOverflown] = React.useState<ReadonlyArray<string>>();\r\n\r\n const calculateOverflow = React.useCallback(() => {\r\n const widths = verifiedMapEntries(entryWidths.current);\r\n if (containerWidth.current === undefined ||\r\n widths === undefined ||\r\n overflowWidth.current === undefined\r\n ) {\r\n setOverflown(new Array<string>());\r\n return;\r\n }\r\n\r\n // Calculate overflow.\r\n const newOverflown = getItemToPlaceInOverflow(containerWidth.current, [...widths.entries()], overflowWidth.current);\r\n if (!eqlOverflown(overflown, newOverflown)) {\r\n setOverflown(newOverflown);\r\n // istanbul ignore next\r\n if (0 === newOverflown.length && isOverflowPanelOpen)\r\n setIsOverflowPanelOpen(false);\r\n }\r\n }, [isOverflowPanelOpen, overflown]);\r\n\r\n const handleOverflowResize = React.useCallback((w: number) => {\r\n const calculate = overflowWidth.current !== w;\r\n overflowWidth.current = w;\r\n calculate && calculateOverflow();\r\n }, [calculateOverflow]);\r\n\r\n const handleEntryResize = React.useCallback((key: string) => (w: number) => {\r\n const oldW = entryWidths.current.get(key);\r\n if ((undefined === oldW) || Math.abs(oldW - w) > 2) {\r\n entryWidths.current.set(key, w);\r\n calculateOverflow();\r\n }\r\n }, [calculateOverflow]);\r\n\r\n const getSectionName = (section: StatusBarSection) => {\r\n switch (section) {\r\n case StatusBarSection.Center:\r\n case StatusBarSection.Stage:\r\n return \"status-bar-center\";\r\n case StatusBarSection.Context:\r\n return \"status-bar-right-start\";\r\n case StatusBarSection.Right:\r\n case StatusBarSection.Selection:\r\n return \"status-bar-right-end\";\r\n case StatusBarSection.Left:\r\n case StatusBarSection.Message:\r\n return \"status-bar-left\";\r\n }\r\n };\r\n\r\n /** generate a wrapped status bar entry that will report its size. */\r\n const getComponent = React.useCallback((item: CommonStatusBarItem, key: string, itemPriority: number,\r\n section: StatusBarSection, providerId?: string): React.ReactNode => {\r\n return (\r\n <DockedStatusBarEntry\r\n key={key}\r\n entryKey={key}\r\n getOnResize={handleEntryResize}\r\n >\r\n <DockedStatusBarItem key={key} itemId={item.id} itemPriority={itemPriority} providerId={providerId} section={getSectionName(section)} >\r\n {isStatusBarItem(item) && item.reactNode}\r\n {isAbstractStatusBarActionItem(item) && generateActionStatusBarItem(item, statusBarContext.isInFooterMode)}\r\n {isAbstractStatusBarLabelItem(item) && generateActionStatusLabelItem(item, statusBarContext.isInFooterMode)}\r\n </DockedStatusBarItem>\r\n </DockedStatusBarEntry>\r\n );\r\n }, [statusBarContext.isInFooterMode, handleEntryResize]);\r\n\r\n const getSectionItems = React.useCallback((section: StatusBarSection): React.ReactNode[] => {\r\n const sectionItems = statusBarItems\r\n .filter((item) => item.section as number === section && !isItemInOverflow(item.id, overflown) && !ConditionalBooleanValue.getValue(item.isHidden))\r\n .sort((a, b) => a.itemPriority - b.itemPriority);\r\n\r\n return sectionItems.map((sectionItem) => (\r\n <React.Fragment key={sectionItem.id}>\r\n {getComponent(sectionItem, sectionItem.id, sectionItem.itemPriority, sectionItem.section, sectionItem.providerId)}\r\n </React.Fragment>\r\n ));\r\n }, [statusBarItems, overflown, getComponent]);\r\n\r\n const getOverflowItems = React.useCallback((): React.ReactNode[] => {\r\n const itemsInOverflow = statusBarItems\r\n .filter((item) => isItemInOverflow(item.id, overflown) && !ConditionalBooleanValue.getValue(item.isHidden))\r\n .sort((a, b) => getCombinedSectionItemPriority(a) - getCombinedSectionItemPriority(b)).reverse();\r\n\r\n return itemsInOverflow.map((item) => (\r\n <React.Fragment key={item.id}>\r\n {getComponent(item, item.id, item.itemPriority, item.section, item.providerId)}\r\n </React.Fragment>\r\n ));\r\n }, [statusBarItems, overflown, getComponent]);\r\n\r\n const handleContainerResize = React.useCallback((w: number) => {\r\n if ((undefined === containerWidth.current) || Math.abs(containerWidth.current - w) > 2) {\r\n containerWidth.current = w;\r\n calculateOverflow();\r\n }\r\n }, [calculateOverflow]);\r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const targetRef = React.useRef<HTMLDivElement>(null);\r\n const resizeObserverRef = useResizeObserver(handleContainerResize);\r\n // allow both the containerRef and the resize observer function that takes a ref to be processed when the ref is set.\r\n const refs = useRefs(containerRef, resizeObserverRef);\r\n\r\n const onOverflowClick = React.useCallback(() => {\r\n setIsOverflowPanelOpen((prev) => !prev);\r\n }, []);\r\n // istanbul ignore next\r\n const handleOnClose = React.useCallback(() => {\r\n setIsOverflowPanelOpen(false);\r\n }, []);\r\n const leftItems = React.useMemo(() => getSectionItems(StatusBarSection.Left), [getSectionItems]);\r\n const centerItems = React.useMemo(() => getSectionItems(StatusBarSection.Center), [getSectionItems]);\r\n const rightItems = React.useMemo(() => getSectionItems(StatusBarSection.Right), [getSectionItems]);\r\n const contextItems = React.useMemo(() => getSectionItems(StatusBarSection.Context), [getSectionItems]);\r\n const overflowItems = React.useMemo(() => getOverflowItems(), [getOverflowItems]);\r\n\r\n const containerClassName = classnames(\r\n \"uifw-statusbar-docked\",\r\n className,\r\n );\r\n\r\n return (\r\n <div\r\n className={containerClassName}\r\n ref={refs}\r\n style={style}\r\n role=\"presentation\"\r\n >\r\n <StatusBarSpaceBetween className={mainClassName}>\r\n <StatusBarLeftSection className={leftClassName}>\r\n {leftItems}\r\n </StatusBarLeftSection>\r\n <StatusBarCenterSection className={centerClassName}>\r\n {centerItems}\r\n {contextItems}\r\n </StatusBarCenterSection>\r\n <StatusBarRightSection className={rightClassName}>\r\n {rightItems}\r\n {(!overflown || overflown.length > 0) && (\r\n <>\r\n <StatusBarOverflow\r\n onClick={onOverflowClick}\r\n onResize={handleOverflowResize}\r\n ref={targetRef}\r\n />\r\n {overflowItems.length > 0 && isOverflowPanelOpen && targetRef.current &&\r\n <StatusBarOverflowPanel\r\n onClose={handleOnClose}\r\n open={true}\r\n target={targetRef.current}\r\n >\r\n <div className=\"uifw-statusbar-overflow-items-container\" data-testid=\"uifw-statusbar-overflow-items-container\">\r\n {overflowItems.map((overflowEntry) => overflowEntry)}\r\n </div>\r\n </StatusBarOverflowPanel>\r\n }\r\n </>\r\n )}\r\n\r\n </StatusBarRightSection>\r\n </StatusBarSpaceBetween>\r\n </div>\r\n );\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"StatusBarComposer.js","sourceRoot":"","sources":["../../../../src/appui-react/statusbar/StatusBarComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport {\r\n AbstractStatusBarActionItem, AbstractStatusBarLabelItem, CommonStatusBarItem, ConditionalBooleanValue, ConditionalStringValue,\r\n isAbstractStatusBarActionItem, isAbstractStatusBarLabelItem, StatusBarItemsManager, StatusBarLabelSide, StatusBarSection, UiSyncEventArgs,\r\n} from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Icon, useRefs, useResizeObserver } from \"@itwin/core-react\";\r\nimport { eqlOverflown, FooterIndicator } from \"@itwin/appui-layout-react\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { Indicator } from \"../statusfields/Indicator\";\r\nimport { StatusBarOverflow } from \"./Overflow\";\r\nimport { StatusBarOverflowPanel } from \"./OverflowPanel\";\r\nimport { StatusBarCenterSection, StatusBarContext, StatusBarLeftSection, StatusBarRightSection, StatusBarSpaceBetween } from \"./StatusBar\";\r\nimport { isStatusBarItem } from \"./StatusBarItem\";\r\nimport { useDefaultStatusBarItems } from \"./useDefaultStatusBarItems\";\r\nimport { useUiItemsProviderStatusBarItems } from \"./useUiItemsProviderStatusBarItems\";\r\n\r\n/** Private function to generate a value that will allow the proper order to be maintained when items are placed in overflow panel */\r\nfunction getCombinedSectionItemPriority(item: CommonStatusBarItem) {\r\n let sectionValue = 0;\r\n if (item.section === StatusBarSection.Center)\r\n sectionValue = 100000;\r\n else if (item.section === StatusBarSection.Context)\r\n sectionValue = 200000;\r\n else if (item.section === StatusBarSection.Right)\r\n sectionValue = 300000;\r\n return sectionValue + item.itemPriority;\r\n}\r\n\r\ninterface DockedStatusBarEntryContextArg {\r\n readonly isOverflown: boolean;\r\n readonly onResize: (w: number) => void;\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nconst DockedStatusBarEntryContext = React.createContext<DockedStatusBarEntryContextArg>(null!);\r\nDockedStatusBarEntryContext.displayName = \"nz:DockedStatusBarEntryContext\";\r\n\r\n/** @internal */\r\nexport function useStatusBarEntry() {\r\n return React.useContext(DockedStatusBarEntryContext);\r\n}\r\n\r\n/** Properties of [[DockedStatusBarItem]] component.\r\n * @internal future\r\n */\r\nexport interface StatusBarItemProps extends CommonProps {\r\n /** Tool setting content. */\r\n children?: React.ReactNode;\r\n itemPriority?: number;\r\n providerId?: string;\r\n section?: string;\r\n}\r\n\r\n/** Used in [[StatusBarComposer]] component to display a statusbar item.\r\n * @internal future\r\n */\r\nexport function DockedStatusBarItem(props: StatusBarItemProps) {\r\n const { onResize } = useStatusBarEntry();\r\n const ref = useResizeObserver<HTMLDivElement>(onResize);\r\n const className = classnames(\r\n \"uifw-statusbar-item-container\",\r\n props.className,\r\n );\r\n return (\r\n <div\r\n data-item-id={props.itemId}\r\n data-item-type=\"status-bar-item\"\r\n data-item-location={props.section}\r\n data-item-priority={props.itemPriority}\r\n data-item-provider-id={props.providerId}\r\n className={className}\r\n ref={ref}\r\n style={props.style}\r\n >\r\n {props.children}\r\n </div>\r\n );\r\n}\r\n\r\ninterface DockedStatusBarEntryProps {\r\n children?: React.ReactNode;\r\n entryKey: string;\r\n getOnResize: (key: string) => (w: number) => void;\r\n}\r\n\r\n/** Wrapper for status bar entries so their size can be used to determine if the status bar container can display them or if they will need to be placed in an overflow panel. */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention, no-shadow\r\nconst DockedStatusBarEntry = React.memo<DockedStatusBarEntryProps>(function DockedStatusbarEntry({ children, entryKey, getOnResize }) {\r\n const onResize = React.useMemo(() => getOnResize(entryKey), [getOnResize, entryKey]);\r\n const entry = React.useMemo<DockedStatusBarEntryContextArg>(() => ({\r\n isOverflown: false,\r\n onResize,\r\n }), [onResize]);\r\n return (\r\n <DockedStatusBarEntryContext.Provider value={entry}>\r\n {children}\r\n </DockedStatusBarEntryContext.Provider>\r\n );\r\n});\r\n\r\n/** Private function to set up sync event monitoring of statusbar items */\r\nfunction useStatusBarItemSyncEffect(itemsManager: StatusBarItemsManager, syncIdsOfInterest: string[]) {\r\n React.useEffect(() => {\r\n const handleSyncUiEvent = (args: UiSyncEventArgs) => {\r\n if (0 === syncIdsOfInterest.length)\r\n return;\r\n\r\n // istanbul ignore else\r\n if (syncIdsOfInterest.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) {\r\n // process each item that has interest\r\n itemsManager.refreshAffectedItems(args.eventIds);\r\n }\r\n };\r\n\r\n // Note: that items with conditions have condition run when loaded into the items manager\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(handleSyncUiEvent);\r\n return () => {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(handleSyncUiEvent);\r\n };\r\n }, [itemsManager, itemsManager.items, syncIdsOfInterest]);\r\n}\r\n\r\n/** function to produce a StatusBarItem component from an AbstractStatusBarLabelItem */\r\nfunction generateActionStatusLabelItem(item: AbstractStatusBarLabelItem, isInFooterMode: boolean): React.ReactNode {\r\n const iconPaddingClass = item.labelSide === StatusBarLabelSide.Left ? \"nz-icon-padding-right\" : \"nz-icon-padding-left\";\r\n return (<FooterIndicator\r\n isInFooterMode={isInFooterMode}\r\n >\r\n {item.icon && <Icon iconSpec={item.icon} />}\r\n {item.label && <span className={iconPaddingClass}>{ConditionalStringValue.getValue(item.label)}</span>}\r\n </FooterIndicator>\r\n );\r\n}\r\n\r\n/** function to produce a StatusBarItem component from an AbstractStatusBarActionItem */\r\nfunction generateActionStatusBarItem(item: AbstractStatusBarActionItem, isInFooterMode: boolean): React.ReactNode {\r\n return <Indicator toolTip={ConditionalStringValue.getValue(item.tooltip)} opened={false} onClick={item.execute} iconSpec={item.icon}\r\n isInFooterMode={isInFooterMode} />;\r\n}\r\n\r\n/** local function to combine items from Stage and from Extensions */\r\nfunction combineItems(stageItems: ReadonlyArray<CommonStatusBarItem>, addonItems: ReadonlyArray<CommonStatusBarItem>) {\r\n const items: CommonStatusBarItem[] = [];\r\n if (stageItems.length) {\r\n // Walk through each and ensure no duplicate ids are added.\r\n stageItems.forEach((srcItem) => {\r\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\r\n items.push(srcItem);\r\n }\r\n });\r\n }\r\n if (addonItems.length) {\r\n // Walk through each and ensure no duplicate ids are added.\r\n addonItems.forEach((srcItem) => {\r\n if (-1 === items.findIndex((item) => item.id === srcItem.id)) {\r\n items.push(srcItem);\r\n }\r\n });\r\n }\r\n return items;\r\n}\r\n\r\n/** local function to ensure a width value is defined for a status bar entries. */\r\nfunction verifiedMapEntries<T>(map: Map<string, T | undefined>) {\r\n for (const [, val] of map) {\r\n // istanbul ignore next\r\n if (val === undefined)\r\n return undefined;\r\n }\r\n return map as Map<string, T>;\r\n}\r\n\r\n/** Returns a subset of docked entry keys that exceed given width and should be placed in overflow panel. */\r\nfunction getItemToPlaceInOverflow(width: number, docked: ReadonlyArray<readonly [string, number]>, overflowWidth: number) {\r\n let settingsWidth = 0;\r\n\r\n let i = 0;\r\n for (; i < docked.length; i++) {\r\n const w = docked[i][1];\r\n const newSettingsWidth = settingsWidth + w;\r\n if (newSettingsWidth > width) {\r\n settingsWidth += overflowWidth;\r\n break;\r\n }\r\n settingsWidth = newSettingsWidth;\r\n }\r\n\r\n let j = i;\r\n for (; j > 0; j--) {\r\n if (settingsWidth <= width)\r\n break;\r\n const w = docked[j][1];\r\n settingsWidth -= w;\r\n }\r\n\r\n const overflowItems = new Array<string>();\r\n for (i = j; i < docked.length; i++) {\r\n overflowItems.push(docked[i][0]);\r\n }\r\n return overflowItems;\r\n}\r\n\r\nfunction isItemInOverflow(id: string, overflowItemIds: ReadonlyArray<string> | undefined) {\r\n if (!overflowItemIds || 0 === overflowItemIds.length)\r\n return false;\r\n return !!overflowItemIds.find((value) => value === id);\r\n}\r\n\r\n/** Properties for the [[StatusBarComposer]] React components\r\n * @public\r\n */\r\nexport interface StatusBarComposerProps extends CommonProps {\r\n /** Status Bar items */\r\n items: CommonStatusBarItem[];\r\n\r\n /** CSS class name override for the overall Status Bar */\r\n mainClassName?: string;\r\n /** CSS class name override for the left section */\r\n leftClassName?: string;\r\n /** CSS class name override for the center section */\r\n centerClassName?: string;\r\n /** CSS class name override for the right section */\r\n rightClassName?: string;\r\n}\r\n\r\n/** Component to load components into the [[StatusBar]].\r\n * @public\r\n */\r\nexport function StatusBarComposer(props: StatusBarComposerProps) {\r\n const { className, style, items, mainClassName, leftClassName, centerClassName, rightClassName } = props;\r\n const [defaultItemsManager, setDefaultItemsManager] = React.useState(() => new StatusBarItemsManager(items));\r\n const [isOverflowPanelOpen, setIsOverflowPanelOpen] = React.useState(false);\r\n const containerWidth = React.useRef<number | undefined>(undefined);\r\n\r\n const isInitialMount = React.useRef(true);\r\n React.useEffect(() => {\r\n if (isInitialMount.current)\r\n isInitialMount.current = false;\r\n else {\r\n setDefaultItemsManager(new StatusBarItemsManager(items));\r\n }\r\n }, [items]);\r\n const defaultItems = useDefaultStatusBarItems(defaultItemsManager);\r\n const syncIdsOfInterest = React.useMemo(() => StatusBarItemsManager.getSyncIdsOfInterest(defaultItems), [defaultItems]);\r\n useStatusBarItemSyncEffect(defaultItemsManager, syncIdsOfInterest);\r\n\r\n const statusBarContext = React.useContext(StatusBarContext);\r\n const [addonItemsManager] = React.useState(() => new StatusBarItemsManager());\r\n const addonItems = useUiItemsProviderStatusBarItems(addonItemsManager);\r\n const addonSyncIdsOfInterest = React.useMemo(() => StatusBarItemsManager.getSyncIdsOfInterest(addonItems), [addonItems]);\r\n useStatusBarItemSyncEffect(addonItemsManager, addonSyncIdsOfInterest);\r\n\r\n const statusBarItems = React.useMemo(() => combineItems(defaultItems, addonItems), [defaultItems, addonItems]);\r\n const entryWidths = React.useRef(new Map<string, number | undefined>());\r\n const overflowWidth = React.useRef<number | undefined>(undefined);\r\n const [overflown, setOverflown] = React.useState<ReadonlyArray<string>>();\r\n\r\n const calculateOverflow = React.useCallback(() => {\r\n const widths = verifiedMapEntries(entryWidths.current);\r\n if (containerWidth.current === undefined ||\r\n widths === undefined ||\r\n overflowWidth.current === undefined\r\n ) {\r\n setOverflown(new Array<string>());\r\n return;\r\n }\r\n\r\n // Calculate overflow.\r\n const newOverflown = getItemToPlaceInOverflow(containerWidth.current, [...widths.entries()], overflowWidth.current);\r\n if (!eqlOverflown(overflown, newOverflown)) {\r\n setOverflown(newOverflown);\r\n // istanbul ignore next\r\n if (0 === newOverflown.length && isOverflowPanelOpen)\r\n setIsOverflowPanelOpen(false);\r\n }\r\n }, [isOverflowPanelOpen, overflown]);\r\n\r\n const handleOverflowResize = React.useCallback((w: number) => {\r\n const calculate = overflowWidth.current !== w;\r\n overflowWidth.current = w;\r\n calculate && calculateOverflow();\r\n }, [calculateOverflow]);\r\n\r\n const handleEntryResize = React.useCallback((key: string) => (w: number) => {\r\n const oldW = entryWidths.current.get(key);\r\n if ((undefined === oldW) || Math.abs(oldW - w) > 2) {\r\n entryWidths.current.set(key, w);\r\n calculateOverflow();\r\n }\r\n }, [calculateOverflow]);\r\n\r\n const getSectionName = (section: StatusBarSection) => {\r\n switch (section) {\r\n case StatusBarSection.Center:\r\n case StatusBarSection.Stage:\r\n return \"status-bar-center\";\r\n case StatusBarSection.Context:\r\n return \"status-bar-right-start\";\r\n case StatusBarSection.Right:\r\n case StatusBarSection.Selection:\r\n return \"status-bar-right-end\";\r\n case StatusBarSection.Left:\r\n case StatusBarSection.Message:\r\n return \"status-bar-left\";\r\n }\r\n };\r\n\r\n /** generate a wrapped status bar entry that will report its size. */\r\n const getComponent = React.useCallback((item: CommonStatusBarItem, key: string, itemPriority: number,\r\n section: StatusBarSection, providerId?: string): React.ReactNode => {\r\n return (\r\n <DockedStatusBarEntry\r\n key={key}\r\n entryKey={key}\r\n getOnResize={handleEntryResize}\r\n >\r\n <DockedStatusBarItem key={key} itemId={item.id} itemPriority={itemPriority} providerId={providerId} section={getSectionName(section)} >\r\n {isStatusBarItem(item) && item.reactNode}\r\n {// eslint-disable-next-line deprecation/deprecation\r\n isAbstractStatusBarActionItem(item) && generateActionStatusBarItem(item, statusBarContext.isInFooterMode)}\r\n {// eslint-disable-next-line deprecation/deprecation\r\n isAbstractStatusBarLabelItem(item) && generateActionStatusLabelItem(item, statusBarContext.isInFooterMode)}\r\n </DockedStatusBarItem>\r\n </DockedStatusBarEntry>\r\n );\r\n // eslint-disable-next-line deprecation/deprecation\r\n }, [statusBarContext.isInFooterMode, handleEntryResize]);\r\n\r\n const getSectionItems = React.useCallback((section: StatusBarSection): React.ReactNode[] => {\r\n const sectionItems = statusBarItems\r\n .filter((item) => item.section as number === section && !isItemInOverflow(item.id, overflown) && !ConditionalBooleanValue.getValue(item.isHidden))\r\n .sort((a, b) => a.itemPriority - b.itemPriority);\r\n\r\n return sectionItems.map((sectionItem) => (\r\n <React.Fragment key={sectionItem.id}>\r\n {getComponent(sectionItem, sectionItem.id, sectionItem.itemPriority, sectionItem.section, sectionItem.providerId)}\r\n </React.Fragment>\r\n ));\r\n }, [statusBarItems, overflown, getComponent]);\r\n\r\n const getOverflowItems = React.useCallback((): React.ReactNode[] => {\r\n const itemsInOverflow = statusBarItems\r\n .filter((item) => isItemInOverflow(item.id, overflown) && !ConditionalBooleanValue.getValue(item.isHidden))\r\n .sort((a, b) => getCombinedSectionItemPriority(a) - getCombinedSectionItemPriority(b)).reverse();\r\n\r\n return itemsInOverflow.map((item) => (\r\n <React.Fragment key={item.id}>\r\n {getComponent(item, item.id, item.itemPriority, item.section, item.providerId)}\r\n </React.Fragment>\r\n ));\r\n }, [statusBarItems, overflown, getComponent]);\r\n\r\n const handleContainerResize = React.useCallback((w: number) => {\r\n if ((undefined === containerWidth.current) || Math.abs(containerWidth.current - w) > 2) {\r\n containerWidth.current = w;\r\n calculateOverflow();\r\n }\r\n }, [calculateOverflow]);\r\n\r\n const containerRef = React.useRef<HTMLDivElement>(null);\r\n const targetRef = React.useRef<HTMLDivElement>(null);\r\n const resizeObserverRef = useResizeObserver(handleContainerResize);\r\n // allow both the containerRef and the resize observer function that takes a ref to be processed when the ref is set.\r\n const refs = useRefs(containerRef, resizeObserverRef);\r\n\r\n const onOverflowClick = React.useCallback(() => {\r\n setIsOverflowPanelOpen((prev) => !prev);\r\n }, []);\r\n // istanbul ignore next\r\n const handleOnClose = React.useCallback(() => {\r\n setIsOverflowPanelOpen(false);\r\n }, []);\r\n const leftItems = React.useMemo(() => getSectionItems(StatusBarSection.Left), [getSectionItems]);\r\n const centerItems = React.useMemo(() => getSectionItems(StatusBarSection.Center), [getSectionItems]);\r\n const rightItems = React.useMemo(() => getSectionItems(StatusBarSection.Right), [getSectionItems]);\r\n const contextItems = React.useMemo(() => getSectionItems(StatusBarSection.Context), [getSectionItems]);\r\n const overflowItems = React.useMemo(() => getOverflowItems(), [getOverflowItems]);\r\n\r\n const containerClassName = classnames(\r\n \"uifw-statusbar-docked\",\r\n className,\r\n );\r\n\r\n return (\r\n <div\r\n className={containerClassName}\r\n ref={refs}\r\n style={style}\r\n role=\"presentation\"\r\n >\r\n <StatusBarSpaceBetween className={mainClassName}>\r\n <StatusBarLeftSection className={leftClassName}>\r\n {leftItems}\r\n </StatusBarLeftSection>\r\n <StatusBarCenterSection className={centerClassName}>\r\n {centerItems}\r\n {contextItems}\r\n </StatusBarCenterSection>\r\n <StatusBarRightSection className={rightClassName}>\r\n {rightItems}\r\n {(!overflown || overflown.length > 0) && (\r\n <>\r\n <StatusBarOverflow\r\n onClick={onOverflowClick}\r\n onResize={handleOverflowResize}\r\n ref={targetRef}\r\n />\r\n {overflowItems.length > 0 && isOverflowPanelOpen && targetRef.current &&\r\n <StatusBarOverflowPanel\r\n onClose={handleOnClose}\r\n open={true}\r\n target={targetRef.current}\r\n >\r\n <div className=\"uifw-statusbar-overflow-items-container\" data-testid=\"uifw-statusbar-overflow-items-container\">\r\n {overflowItems.map((overflowEntry) => overflowEntry)}\r\n </div>\r\n </StatusBarOverflowPanel>\r\n }\r\n </>\r\n )}\r\n\r\n </StatusBarRightSection>\r\n </StatusBarSpaceBetween>\r\n </div>\r\n );\r\n}\r\n"]}
|