@itwin/appui-react 5.19.0 → 5.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/lib/appui-react/UiFramework.js +20 -13
- package/lib/appui-react/UiFramework.js.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawPopupManager.js +1 -1
- package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawWidget.js +1 -1
- package/lib/appui-react/accudraw/AccuDrawWidget.js.map +1 -1
- package/lib/appui-react/accudraw/Calculator.js +92 -98
- package/lib/appui-react/accudraw/Calculator.js.map +1 -1
- package/lib/appui-react/accudraw/CalculatorEngine.js +130 -129
- package/lib/appui-react/accudraw/CalculatorEngine.js.map +1 -1
- package/lib/appui-react/accudraw/CalculatorPopup.js +9 -12
- package/lib/appui-react/accudraw/CalculatorPopup.js.map +1 -1
- package/lib/appui-react/accudraw/FrameworkAccuDraw.js +39 -38
- package/lib/appui-react/accudraw/FrameworkAccuDraw.js.map +1 -1
- package/lib/appui-react/accudraw/MenuButton.js +20 -20
- package/lib/appui-react/accudraw/MenuButton.js.map +1 -1
- package/lib/appui-react/accudraw/MenuButtonPopup.js +9 -12
- package/lib/appui-react/accudraw/MenuButtonPopup.js.map +1 -1
- package/lib/appui-react/backstage/BackstageItemsManager.js +5 -5
- package/lib/appui-react/backstage/BackstageItemsManager.js.map +1 -1
- package/lib/appui-react/backstage/BackstageManager.js +1 -3
- package/lib/appui-react/backstage/BackstageManager.js.map +1 -1
- package/lib/appui-react/backstage/InternalBackstageManager.js +3 -5
- package/lib/appui-react/backstage/InternalBackstageManager.js.map +1 -1
- package/lib/appui-react/childwindow/InternalChildWindowManager.js +30 -32
- package/lib/appui-react/childwindow/InternalChildWindowManager.js.map +1 -1
- package/lib/appui-react/configurableui/ActivityTracker.js +33 -33
- package/lib/appui-react/configurableui/ActivityTracker.js.map +1 -1
- package/lib/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/lib/appui-react/configurableui/ConfigurableUiControl.js +8 -0
- package/lib/appui-react/configurableui/ConfigurableUiControl.js.map +1 -1
- package/lib/appui-react/configurableui/InternalConfigurableUiManager.js +8 -8
- package/lib/appui-react/configurableui/InternalConfigurableUiManager.js.map +1 -1
- package/lib/appui-react/configurableui/TimeTracker.js +25 -27
- package/lib/appui-react/configurableui/TimeTracker.js.map +1 -1
- package/lib/appui-react/content/ContentControl.js +2 -1
- package/lib/appui-react/content/ContentControl.js.map +1 -1
- package/lib/appui-react/content/ContentGroup.js +8 -4
- package/lib/appui-react/content/ContentGroup.js.map +1 -1
- package/lib/appui-react/content/ContentLayout.js +47 -38
- package/lib/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/appui-react/content/IModelViewport.js +28 -23
- package/lib/appui-react/content/IModelViewport.js.map +1 -1
- package/lib/appui-react/content/InternalContentLayoutManager.js +1 -1
- package/lib/appui-react/content/InternalContentLayoutManager.js.map +1 -1
- package/lib/appui-react/content/InternalContentViewManager.js +9 -8
- package/lib/appui-react/content/InternalContentViewManager.js.map +1 -1
- package/lib/appui-react/content/StandardContentLayouts.js +141 -141
- package/lib/appui-react/content/StandardContentLayouts.js.map +1 -1
- package/lib/appui-react/content/ViewportContentControl.js +25 -22
- package/lib/appui-react/content/ViewportContentControl.js.map +1 -1
- package/lib/appui-react/cursor/CursorInformation.js +7 -6
- package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
- package/lib/appui-react/cursor/cursorpopup/CursorPopup.js +9 -9
- package/lib/appui-react/cursor/cursorpopup/CursorPopup.js.map +1 -1
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +7 -7
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
- package/lib/appui-react/dialog/DialogManagerBase.js +18 -19
- package/lib/appui-react/dialog/DialogManagerBase.js.map +1 -1
- package/lib/appui-react/dialog/InternalContentDialogManager.js +7 -7
- package/lib/appui-react/dialog/InternalContentDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/InternalModalDialogManager.js +4 -4
- package/lib/appui-react/dialog/InternalModalDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/InternalModelessDialogManager.js +6 -6
- package/lib/appui-react/dialog/InternalModelessDialogManager.js.map +1 -1
- package/lib/appui-react/dialog/ModelessDialog.js +3 -3
- package/lib/appui-react/dialog/ModelessDialog.js.map +1 -1
- package/lib/appui-react/feedback/ElementTooltip.js +3 -1
- package/lib/appui-react/feedback/ElementTooltip.js.map +1 -1
- package/lib/appui-react/feedback/ValidationTextbox.js +25 -25
- package/lib/appui-react/feedback/ValidationTextbox.js.map +1 -1
- package/lib/appui-react/frontstage/FrontstageDef.js +28 -10
- package/lib/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/appui-react/frontstage/InternalFrontstageManager.js +96 -96
- package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
- package/lib/appui-react/frontstage/ModalFrontstage.js +5 -5
- package/lib/appui-react/frontstage/ModalFrontstage.js.map +1 -1
- package/lib/appui-react/frontstage/ModalSettingsStage.js +5 -4
- package/lib/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/appui-react/frontstage/StandardFrontstageProvider.js +1 -0
- package/lib/appui-react/frontstage/StandardFrontstageProvider.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js +22 -22
- package/lib/appui-react/keyboardshortcut/InternalKeyboardShortcut.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js +11 -9
- package/lib/appui-react/keyboardshortcut/KeyboardShortcut.js.map +1 -1
- package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js +17 -20
- package/lib/appui-react/keyboardshortcut/KeyboardShortcutMenu.js.map +1 -1
- package/lib/appui-react/layout/backstage/Backstage.js +11 -14
- package/lib/appui-react/layout/backstage/Backstage.js.map +1 -1
- package/lib/appui-react/layout/base/DragManager.js +6 -7
- package/lib/appui-react/layout/base/DragManager.js.map +1 -1
- package/lib/appui-react/layout/base/SafeAreaInsets.js +8 -8
- package/lib/appui-react/layout/base/SafeAreaInsets.js.map +1 -1
- package/lib/appui-react/layout/popup/Tooltip.js +8 -11
- package/lib/appui-react/layout/popup/Tooltip.js.map +1 -1
- package/lib/appui-react/layout/widget/Tab.d.ts.map +1 -1
- package/lib/appui-react/layout/widget/Tab.js +7 -5
- package/lib/appui-react/layout/widget/Tab.js.map +1 -1
- package/lib/appui-react/messages/InputField.js +21 -24
- package/lib/appui-react/messages/InputField.js.map +1 -1
- package/lib/appui-react/messages/MessageManager.js +39 -38
- package/lib/appui-react/messages/MessageManager.js.map +1 -1
- package/lib/appui-react/messages/Pointer.js +38 -38
- package/lib/appui-react/messages/Pointer.js.map +1 -1
- package/lib/appui-react/messages/ReactNotifyMessageDetails.js +6 -0
- package/lib/appui-react/messages/ReactNotifyMessageDetails.js.map +1 -1
- package/lib/appui-react/messages/StatusMessageManager.js +2 -4
- package/lib/appui-react/messages/StatusMessageManager.js.map +1 -1
- package/lib/appui-react/navigationaids/CubeNavigationAidControl.js +1 -1
- package/lib/appui-react/navigationaids/CubeNavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js +1 -1
- package/lib/appui-react/navigationaids/DrawingNavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/NavigationAidControl.js +1 -0
- package/lib/appui-react/navigationaids/NavigationAidControl.js.map +1 -1
- package/lib/appui-react/navigationaids/SheetNavigationAid.js +55 -54
- package/lib/appui-react/navigationaids/SheetNavigationAid.js.map +1 -1
- package/lib/appui-react/navigationaids/SheetsModalFrontstage.js +22 -20
- package/lib/appui-react/navigationaids/SheetsModalFrontstage.js.map +1 -1
- package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js +15 -14
- package/lib/appui-react/navigationaids/StandardRotationNavigationAid.js.map +1 -1
- package/lib/appui-react/pickers/ListPicker.js +28 -28
- package/lib/appui-react/pickers/ListPicker.js.map +1 -1
- package/lib/appui-react/pickers/ViewSelector.js +87 -86
- package/lib/appui-react/pickers/ViewSelector.js.map +1 -1
- package/lib/appui-react/popup/CardPopup.js +18 -21
- package/lib/appui-react/popup/CardPopup.js.map +1 -1
- package/lib/appui-react/popup/HTMLElementPopup.js +9 -12
- package/lib/appui-react/popup/HTMLElementPopup.js.map +1 -1
- package/lib/appui-react/popup/InputEditorPopup.js +18 -20
- package/lib/appui-react/popup/InputEditorPopup.js.map +1 -1
- package/lib/appui-react/popup/PopupManager.js +22 -25
- package/lib/appui-react/popup/PopupManager.js.map +1 -1
- package/lib/appui-react/popup/ToolSettingsPopup.js +17 -17
- package/lib/appui-react/popup/ToolSettingsPopup.js.map +1 -1
- package/lib/appui-react/popup/ToolbarPopup.js +18 -21
- package/lib/appui-react/popup/ToolbarPopup.js.map +1 -1
- package/lib/appui-react/redux/ReducerRegistry.js +2 -0
- package/lib/appui-react/redux/ReducerRegistry.js.map +1 -1
- package/lib/appui-react/redux/StateManager.js +4 -1
- package/lib/appui-react/redux/StateManager.js.map +1 -1
- package/lib/appui-react/selection/HideIsolateEmphasizeManager.js +7 -3
- package/lib/appui-react/selection/HideIsolateEmphasizeManager.js.map +1 -1
- package/lib/appui-react/shared/ActionButtonItemDef.js +13 -6
- package/lib/appui-react/shared/ActionButtonItemDef.js.map +1 -1
- package/lib/appui-react/shared/CommandItemDef.js +3 -3
- package/lib/appui-react/shared/CommandItemDef.js.map +1 -1
- package/lib/appui-react/shared/CustomItemDef.js +4 -2
- package/lib/appui-react/shared/CustomItemDef.js.map +1 -1
- package/lib/appui-react/shared/ItemDefBase.js +13 -5
- package/lib/appui-react/shared/ItemDefBase.js.map +1 -1
- package/lib/appui-react/shared/MenuItem.js +6 -1
- package/lib/appui-react/shared/MenuItem.js.map +1 -1
- package/lib/appui-react/shared/ToolItemDef.js +1 -1
- package/lib/appui-react/shared/ToolItemDef.js.map +1 -1
- package/lib/appui-react/stagepanels/StagePanelDef.js +4 -3
- package/lib/appui-react/stagepanels/StagePanelDef.js.map +1 -1
- package/lib/appui-react/statusbar/StatusBarItemsManager.js +5 -5
- package/lib/appui-react/statusbar/StatusBarItemsManager.js.map +1 -1
- package/lib/appui-react/statusfields/ViewAttributes.js +16 -16
- package/lib/appui-react/statusfields/ViewAttributes.js.map +1 -1
- package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js +35 -33
- package/lib/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js +7 -0
- package/lib/appui-react/syncui/InternalSyncUiEventDispatcher.js.map +1 -1
- package/lib/appui-react/syncui/SyncUiEventDispatcher.js +4 -3
- package/lib/appui-react/syncui/SyncUiEventDispatcher.js.map +1 -1
- package/lib/appui-react/timeline/AnalysisAnimationProvider.js +9 -8
- package/lib/appui-react/timeline/AnalysisAnimationProvider.js.map +1 -1
- package/lib/appui-react/timeline/ScheduleAnimationProvider.js +13 -12
- package/lib/appui-react/timeline/ScheduleAnimationProvider.js.map +1 -1
- package/lib/appui-react/timeline/SolarTimelineDataProvider.js +6 -5
- package/lib/appui-react/timeline/SolarTimelineDataProvider.js.map +1 -1
- package/lib/appui-react/toolbar/GroupItem.js +11 -5
- package/lib/appui-react/toolbar/GroupItem.js.map +1 -1
- package/lib/appui-react/toolbar/ToolbarItemsManager.js +7 -7
- package/lib/appui-react/toolbar/ToolbarItemsManager.js.map +1 -1
- package/lib/appui-react/tools/FrameworkToolAdmin.js +5 -1
- package/lib/appui-react/tools/FrameworkToolAdmin.js.map +1 -1
- package/lib/appui-react/tools/KeyinPaletteTools.js +2 -2
- package/lib/appui-react/tools/KeyinPaletteTools.js.map +1 -1
- package/lib/appui-react/tools/OpenSettingsTool.js +2 -2
- package/lib/appui-react/tools/OpenSettingsTool.js.map +1 -1
- package/lib/appui-react/tools/RestoreLayoutTool.js +4 -4
- package/lib/appui-react/tools/RestoreLayoutTool.js.map +1 -1
- package/lib/appui-react/tools/ToolSettingsTools.js +2 -2
- package/lib/appui-react/tools/ToolSettingsTools.js.map +1 -1
- package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js +15 -18
- package/lib/appui-react/toolsettings/DefaultToolSettingsProvider.js.map +1 -1
- package/lib/appui-react/toolsettings/InternalToolSettingsManager.js +8 -8
- package/lib/appui-react/toolsettings/InternalToolSettingsManager.js.map +1 -1
- package/lib/appui-react/toolsettings/ToolInformation.js +2 -0
- package/lib/appui-react/toolsettings/ToolInformation.js.map +1 -1
- package/lib/appui-react/toolsettings/ToolUiProvider.js +3 -0
- package/lib/appui-react/toolsettings/ToolUiProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js +1 -0
- package/lib/appui-react/ui-items-provider/AbstractUiItemsManager.js.map +1 -1
- package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js +2 -0
- package/lib/appui-react/ui-items-provider/BaseUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardContentToolsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardContentToolsUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardNavigationToolsUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardStatusbarItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js +1 -0
- package/lib/appui-react/ui-items-provider/StandardStatusbarUiItemsProvider.js.map +1 -1
- package/lib/appui-react/ui-items-provider/UiItemsManager.js +3 -3
- package/lib/appui-react/ui-items-provider/UiItemsManager.js.map +1 -1
- package/lib/appui-react/uiadmin/FrameworkUiAdmin.js +1 -4
- package/lib/appui-react/uiadmin/FrameworkUiAdmin.js.map +1 -1
- package/lib/appui-react/uiprovider/ComponentGenerator.js +2 -0
- package/lib/appui-react/uiprovider/ComponentGenerator.js.map +1 -1
- package/lib/appui-react/uistate/AppUiSettings.js +41 -33
- package/lib/appui-react/uistate/AppUiSettings.js.map +1 -1
- package/lib/appui-react/utils/InternalUiShowHideManager.js +13 -14
- package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js +2 -5
- package/lib/appui-react/widgets/StatusBarWidgetComposerControl.js.map +1 -1
- package/lib/appui-react/widgets/WidgetControl.js +2 -0
- package/lib/appui-react/widgets/WidgetControl.js.map +1 -1
- package/lib/appui-react/widgets/WidgetDef.js +28 -7
- package/lib/appui-react/widgets/WidgetDef.js.map +1 -1
- package/lib/appui-react/widgets/WidgetHost.js +4 -4
- package/lib/appui-react/widgets/WidgetHost.js.map +1 -1
- package/lib/appui-react/widgets/WidgetManager.js +5 -7
- package/lib/appui-react/widgets/WidgetManager.js.map +1 -1
- package/lib/cjs/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/lib/esm/appui-react/configurableui/ConfigurableUiContent.scss +0 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewportContentControl.js","sourceRoot":"","sources":["../../../src/appui-react/content/ViewportContentControl.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAQH,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,qBAAqB,EACrB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,kDAAkD,CAAC;AAC/F,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,qDAAqD;AAErD;;;;GAIG;AACH,MAAM,OAAO,sBACX,SAAQ,cAAc;
|
|
1
|
+
{"version":3,"file":"ViewportContentControl.js","sourceRoot":"","sources":["../../../src/appui-react/content/ViewportContentControl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ContentView\n */\n\nimport type { Id64String } from \"@itwin/core-bentley\";\nimport type {\n IModelConnection,\n ScreenViewport,\n ViewState,\n} from \"@itwin/core-frontend\";\nimport {\n DrawingViewState,\n IModelApp,\n OrthographicViewState,\n SheetViewState,\n SpatialViewState,\n} from \"@itwin/core-frontend\";\nimport {\n ConfigurableCreateInfo,\n ConfigurableUiControlType,\n} from \"../configurableui/ConfigurableUiControl.js\";\nimport { CubeNavigationAidControl } from \"../navigationaids/CubeNavigationAidControl.js\";\nimport { DrawingNavigationAidControl } from \"../navigationaids/DrawingNavigationAidControl.js\";\nimport { SheetNavigationAidControl } from \"../navigationaids/SheetNavigationAid.js\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport { ViewUtilities } from \"../utils/ViewUtilities.js\";\nimport type { SupportsViewSelectorChange } from \"./ContentControl.js\";\nimport { ContentControl } from \"./ContentControl.js\";\n\n/* eslint-disable @typescript-eslint/no-deprecated */\n\n/** The base class for frontstage Viewport content controls that connects to a `ScreenViewport`\n * that is managed by the `ViewManager`.\n * @public\n * @deprecated in 4.16.0. Extends a deprecated class {@link ContentControl}.\n */\nexport class ViewportContentControl\n extends ContentControl\n implements SupportsViewSelectorChange\n{\n private _viewport: ScreenViewport | undefined;\n private _isReady: Promise<void>;\n private _viewportReadyCallback?: () => void;\n\n /** Creates an instance of ViewportContentControl.\n * @param info An object that the subclass must pass to this base class.\n * @param options Options provided via the applicationData in a [[ContentProps]].\n */\n constructor(info: ConfigurableCreateInfo, options: any) {\n super(info, options);\n\n this._isReady = new Promise<void>(\n (onSuccess: () => void, _onFailure: () => void): void => {\n this._viewportReadyCallback = onSuccess;\n }\n );\n }\n\n /** Gets the type of ConfigurableUiControl, which is 'Viewport' in this case */\n public override getType(): ConfigurableUiControlType {\n return ConfigurableUiControlType.Viewport;\n }\n\n /** Returns true if this control is a Viewport control. */\n public override get isViewport(): boolean {\n return true;\n }\n\n /** The underlying ScreenViewport */\n public override get viewport(): ScreenViewport | undefined {\n return this._viewport;\n }\n public override set viewport(v: ScreenViewport | undefined) {\n this._viewport = v;\n this.setIsReady();\n }\n\n /** Returns a promise that resolves when the control is ready for usage.\n */\n public setIsReady(): void {\n if (this._viewportReadyCallback) {\n this._viewportReadyCallback();\n }\n }\n\n /** Returns a promise that resolves when the control is ready for usage.\n */\n public override get isReady(): Promise<void> {\n return this._isReady;\n }\n\n /** Called when this ContentControl is activated */\n public override onActivated(): void {\n super.onActivated();\n }\n\n /** Get the NavigationAidControl associated with this ContentControl */\n public override get navigationAidControl(): string {\n let navigationAidId = \"\";\n\n if (this.viewport) {\n navigationAidId = this._getNavigationAid(\n this.viewport.view.classFullName\n );\n }\n\n return navigationAidId;\n }\n\n /**\n * Fetches appropriate NavigationAid based on the class of the current viewport.\n * @param classFullName The full name of the current viewport class.\n * @returns The ID of the navigation aid to be displayed.\n */\n private _getNavigationAid = (classFullName: string) => {\n const className = ViewUtilities.getBisBaseClass(classFullName);\n let navigationAidId = \"\";\n\n switch (className) {\n case SheetViewState.className:\n navigationAidId = SheetNavigationAidControl.navigationAidId;\n break;\n case DrawingViewState.className:\n navigationAidId = DrawingNavigationAidControl.navigationAidId;\n break;\n case SpatialViewState.className:\n case OrthographicViewState.className:\n navigationAidId = CubeNavigationAidControl.navigationAidId;\n break;\n }\n\n return navigationAidId;\n };\n\n /** Returns true if this control supports processing ViewSelector changes. */\n public get supportsViewSelectorChange(): boolean {\n return true;\n }\n\n /** Process a ViewSelector change. */\n public async processViewSelectorChange(\n iModel: IModelConnection,\n viewDefinitionId: Id64String,\n viewState: ViewState,\n name: string\n ): Promise<void> {\n if (this.viewport) {\n if (\n IModelApp.viewManager &&\n this.viewport === IModelApp.viewManager.selectedView\n )\n this.viewport.changeView(viewState);\n } else {\n this.reactNode = this.getReactElementForViewSelectorChange(\n iModel,\n viewDefinitionId,\n viewState,\n name\n );\n }\n UiFramework.content.refreshActive(this.reactNode);\n }\n\n /** Get the React.Element for a ViewSelector change. */\n public getReactElementForViewSelectorChange(\n _iModel: IModelConnection,\n _viewDefinitionId: Id64String,\n _viewState: ViewState,\n _name: string\n ): React.ReactNode {\n return null;\n }\n}\n\n/**\n * @beta\n * @deprecated in 4.16.0. Extends a deprecated class {@link ViewportContentControl}.\n */\nexport class FloatingViewportContentControl extends ViewportContentControl {\n constructor(uniqueId: string, name: string, node: React.ReactNode) {\n super(new ConfigurableCreateInfo(name, uniqueId, name), undefined);\n this._reactNode = node;\n this.setIsReady();\n }\n\n /** The React node associated with this control. */\n public override get reactNode(): React.ReactNode {\n return this._reactNode;\n }\n\n public override set reactNode(r: React.ReactNode) {\n this._reactNode = r;\n const activeFrontstageDef = UiFramework.frontstages.activeFrontstageDef;\n\n if (this.viewport && activeFrontstageDef)\n activeFrontstageDef.setActiveViewFromViewport(this.viewport);\n }\n}\n"]}
|
|
@@ -45,6 +45,10 @@ export class CursorUpdatedEvent extends UiEvent {
|
|
|
45
45
|
* @public
|
|
46
46
|
*/
|
|
47
47
|
export class CursorInformation {
|
|
48
|
+
static _cursorPosition = new Point();
|
|
49
|
+
static _cursorDocument;
|
|
50
|
+
static _cursorDirection = CursorDirection.BottomRight;
|
|
51
|
+
static _cursorDirections = new Array();
|
|
48
52
|
/** The cursor position. */
|
|
49
53
|
static get cursorPosition() {
|
|
50
54
|
return this._cursorPosition;
|
|
@@ -68,6 +72,9 @@ export class CursorInformation {
|
|
|
68
72
|
static get cursorDocument() {
|
|
69
73
|
return this._cursorDocument;
|
|
70
74
|
}
|
|
75
|
+
/** Gets the [[CursorUpdatedEvent]]. */
|
|
76
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
77
|
+
static onCursorUpdatedEvent = new CursorUpdatedEvent();
|
|
71
78
|
/** Handles the mouse movement. Sets the cursor position and direction and emits onCursorUpdatedEvent. */
|
|
72
79
|
static handleMouseMove(point, document) {
|
|
73
80
|
const oldPt = CursorInformation.cursorPosition;
|
|
@@ -151,12 +158,6 @@ export class CursorInformation {
|
|
|
151
158
|
this._cursorDirections.length = 0;
|
|
152
159
|
}
|
|
153
160
|
}
|
|
154
|
-
CursorInformation._cursorPosition = new Point();
|
|
155
|
-
CursorInformation._cursorDirection = CursorDirection.BottomRight;
|
|
156
|
-
CursorInformation._cursorDirections = new Array();
|
|
157
|
-
/** Gets the [[CursorUpdatedEvent]]. */
|
|
158
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
159
|
-
CursorInformation.onCursorUpdatedEvent = new CursorUpdatedEvent();
|
|
160
161
|
/** Returns additional information about cursor.
|
|
161
162
|
* @internal
|
|
162
163
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CursorInformation.js","sourceRoot":"","sources":["../../../src/appui-react/cursor/CursorInformation.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport { create } from \"zustand\";\nimport { produce } from \"immer\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { RelativePosition, UiEvent } from \"@itwin/appui-abstract\";\nimport { Point } from \"@itwin/core-react/internal\";\n\n/** Enum for Cursor Direction parts\n * @public\n */\nexport enum CursorDirectionParts {\n Top = 0x1000,\n Left = 0x0100,\n Right = 0x0010,\n Bottom = 0x0001,\n}\n\n/** Enum for Cursor Direction\n * @public\n */\nexport enum CursorDirection {\n None = 0,\n Top = CursorDirectionParts.Top,\n Left = CursorDirectionParts.Left,\n Right = CursorDirectionParts.Right,\n Bottom = CursorDirectionParts.Bottom,\n TopLeft = CursorDirectionParts.Top | CursorDirectionParts.Left,\n TopRight = CursorDirectionParts.Top | CursorDirectionParts.Right,\n BottomLeft = CursorDirectionParts.Bottom | CursorDirectionParts.Left,\n BottomRight = CursorDirectionParts.Bottom | CursorDirectionParts.Right,\n}\n\n/** Cursor Updated Event Args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface CursorUpdatedEventArgs {\n oldPt: XAndY;\n newPt: XAndY;\n direction: CursorDirection;\n}\n\n/** Cursor Updated Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class CursorUpdatedEvent extends UiEvent<CursorUpdatedEventArgs> {}\n\n/** Cursor Information class\n * @public\n */\nexport class CursorInformation {\n private static _cursorPosition: Point = new Point();\n private static _cursorDocument: Document | undefined;\n private static _cursorDirection: CursorDirection =\n CursorDirection.BottomRight;\n\n private static _cursorDirections = new Array<CursorDirection>();\n\n /** The cursor position. */\n public static get cursorPosition(): XAndY {\n return this._cursorPosition;\n }\n public static set cursorPosition(pt: XAndY) {\n this._cursorPosition = Point.create(pt);\n }\n\n /** Gets the cursor X position. */\n public static get cursorX(): number {\n return this._cursorPosition.x;\n }\n /** Gets the cursor Y position. */\n public static get cursorY(): number {\n return this._cursorPosition.y;\n }\n\n /** Gets the general cursor movement direction. */\n public static get cursorDirection(): CursorDirection {\n return this._cursorDirection;\n }\n\n /** Gets the cursor document. */\n public static get cursorDocument(): Document | undefined {\n return this._cursorDocument;\n }\n\n /** Gets the [[CursorUpdatedEvent]]. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static readonly onCursorUpdatedEvent = new CursorUpdatedEvent();\n\n /** Handles the mouse movement. Sets the cursor position and direction and emits onCursorUpdatedEvent. */\n public static handleMouseMove(point: XAndY, document?: Document): void {\n const oldPt = CursorInformation.cursorPosition;\n const direction = this._determineMostFrequentDirection(\n this._cursorDirections,\n this._cursorPosition,\n Point.create(point)\n );\n\n this.cursorPosition = point;\n this._cursorDocument = document;\n this._cursorDirection = direction;\n\n this.onCursorUpdatedEvent.emit({ oldPt, newPt: point, direction });\n }\n\n private static _determineMostFrequentDirection(\n cursorDirections: CursorDirection[],\n oldPt: Point,\n newPt: Point\n ): CursorDirection {\n const cursorDirection = this._determineCursorDirection(oldPt, newPt);\n cursorDirections.push(cursorDirection);\n if (cursorDirections.length > 10) cursorDirections.shift();\n return this._mostFrequent(cursorDirections);\n }\n\n private static _mostFrequent(array: CursorDirection[]): CursorDirection {\n const hashMap = new Map<CursorDirection, number>();\n let maxCount = 0,\n mostFrequent = CursorDirection.None;\n\n array.forEach((value: CursorDirection) => {\n const key = value;\n let frequency = hashMap.get(key);\n\n if (frequency !== undefined) frequency++;\n else frequency = 1;\n\n hashMap.set(key, frequency);\n\n if (frequency > maxCount) {\n mostFrequent = key;\n maxCount = frequency;\n }\n });\n\n return mostFrequent;\n }\n\n private static _determineCursorDirection(\n oldPt: Point,\n newPt: Point\n ): CursorDirection {\n let directionParts: number = 0;\n\n if (newPt.x < oldPt.x) directionParts |= CursorDirectionParts.Left;\n else if (newPt.x > oldPt.x) directionParts |= CursorDirectionParts.Right;\n\n if (newPt.y < oldPt.y) directionParts |= CursorDirectionParts.Top;\n else if (newPt.y > oldPt.y) directionParts |= CursorDirectionParts.Bottom;\n\n const direction = directionParts as CursorDirection;\n\n return direction;\n }\n\n /** Gets the relative position based on the cursor direction. */\n public static getRelativePositionFromCursorDirection(\n cursorDirection: CursorDirection\n ): RelativePosition {\n let relativePosition: RelativePosition = RelativePosition.BottomRight;\n\n switch (cursorDirection) {\n case CursorDirection.Top:\n relativePosition = RelativePosition.Top;\n break;\n case CursorDirection.Left:\n relativePosition = RelativePosition.Left;\n break;\n case CursorDirection.Right:\n relativePosition = RelativePosition.Right;\n break;\n case CursorDirection.Bottom:\n relativePosition = RelativePosition.Bottom;\n break;\n case CursorDirection.TopLeft:\n relativePosition = RelativePosition.TopLeft;\n break;\n case CursorDirection.TopRight:\n relativePosition = RelativePosition.TopRight;\n break;\n case CursorDirection.BottomLeft:\n relativePosition = RelativePosition.BottomLeft;\n break;\n case CursorDirection.BottomRight:\n relativePosition = RelativePosition.BottomRight;\n break;\n }\n\n return relativePosition;\n }\n\n /** @internal - for testing */\n public static clearCursorDirections(): void {\n this._cursorDirections.length = 0;\n }\n}\n\n/** Returns additional information about cursor.\n * @internal\n */\nexport const useCursorInformationStore = create<{\n contentHovered: boolean;\n setContentHovered: (hovered: boolean) => void;\n}>((set) => ({\n contentHovered: false,\n setContentHovered: (hovered: boolean) => {\n set((state) =>\n produce(state, (draft) => {\n draft.contentHovered = hovered;\n })\n );\n },\n}));\n"]}
|
|
1
|
+
{"version":3,"file":"CursorInformation.js","sourceRoot":"","sources":["../../../src/appui-react/cursor/CursorInformation.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport { create } from \"zustand\";\nimport { produce } from \"immer\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { RelativePosition, UiEvent } from \"@itwin/appui-abstract\";\nimport { Point } from \"@itwin/core-react/internal\";\n\n/** Enum for Cursor Direction parts\n * @public\n */\nexport enum CursorDirectionParts {\n Top = 0x1000,\n Left = 0x0100,\n Right = 0x0010,\n Bottom = 0x0001,\n}\n\n/** Enum for Cursor Direction\n * @public\n */\nexport enum CursorDirection {\n None = 0,\n Top = CursorDirectionParts.Top,\n Left = CursorDirectionParts.Left,\n Right = CursorDirectionParts.Right,\n Bottom = CursorDirectionParts.Bottom,\n TopLeft = CursorDirectionParts.Top | CursorDirectionParts.Left,\n TopRight = CursorDirectionParts.Top | CursorDirectionParts.Right,\n BottomLeft = CursorDirectionParts.Bottom | CursorDirectionParts.Left,\n BottomRight = CursorDirectionParts.Bottom | CursorDirectionParts.Right,\n}\n\n/** Cursor Updated Event Args interface.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface CursorUpdatedEventArgs {\n oldPt: XAndY;\n newPt: XAndY;\n direction: CursorDirection;\n}\n\n/** Cursor Updated Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class CursorUpdatedEvent extends UiEvent<CursorUpdatedEventArgs> {}\n\n/** Cursor Information class\n * @public\n */\nexport class CursorInformation {\n private static _cursorPosition: Point = new Point();\n private static _cursorDocument: Document | undefined;\n private static _cursorDirection: CursorDirection =\n CursorDirection.BottomRight;\n\n private static _cursorDirections = new Array<CursorDirection>();\n\n /** The cursor position. */\n public static get cursorPosition(): XAndY {\n return this._cursorPosition;\n }\n public static set cursorPosition(pt: XAndY) {\n this._cursorPosition = Point.create(pt);\n }\n\n /** Gets the cursor X position. */\n public static get cursorX(): number {\n return this._cursorPosition.x;\n }\n /** Gets the cursor Y position. */\n public static get cursorY(): number {\n return this._cursorPosition.y;\n }\n\n /** Gets the general cursor movement direction. */\n public static get cursorDirection(): CursorDirection {\n return this._cursorDirection;\n }\n\n /** Gets the cursor document. */\n public static get cursorDocument(): Document | undefined {\n return this._cursorDocument;\n }\n\n /** Gets the [[CursorUpdatedEvent]]. */\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public static readonly onCursorUpdatedEvent = new CursorUpdatedEvent();\n\n /** Handles the mouse movement. Sets the cursor position and direction and emits onCursorUpdatedEvent. */\n public static handleMouseMove(point: XAndY, document?: Document): void {\n const oldPt = CursorInformation.cursorPosition;\n const direction = this._determineMostFrequentDirection(\n this._cursorDirections,\n this._cursorPosition,\n Point.create(point)\n );\n\n this.cursorPosition = point;\n this._cursorDocument = document;\n this._cursorDirection = direction;\n\n this.onCursorUpdatedEvent.emit({ oldPt, newPt: point, direction });\n }\n\n private static _determineMostFrequentDirection(\n cursorDirections: CursorDirection[],\n oldPt: Point,\n newPt: Point\n ): CursorDirection {\n const cursorDirection = this._determineCursorDirection(oldPt, newPt);\n cursorDirections.push(cursorDirection);\n if (cursorDirections.length > 10) cursorDirections.shift();\n return this._mostFrequent(cursorDirections);\n }\n\n private static _mostFrequent(array: CursorDirection[]): CursorDirection {\n const hashMap = new Map<CursorDirection, number>();\n let maxCount = 0,\n mostFrequent = CursorDirection.None;\n\n array.forEach((value: CursorDirection) => {\n const key = value;\n let frequency = hashMap.get(key);\n\n if (frequency !== undefined) frequency++;\n else frequency = 1;\n\n hashMap.set(key, frequency);\n\n if (frequency > maxCount) {\n mostFrequent = key;\n maxCount = frequency;\n }\n });\n\n return mostFrequent;\n }\n\n private static _determineCursorDirection(\n oldPt: Point,\n newPt: Point\n ): CursorDirection {\n let directionParts: number = 0;\n\n if (newPt.x < oldPt.x) directionParts |= CursorDirectionParts.Left;\n else if (newPt.x > oldPt.x) directionParts |= CursorDirectionParts.Right;\n\n if (newPt.y < oldPt.y) directionParts |= CursorDirectionParts.Top;\n else if (newPt.y > oldPt.y) directionParts |= CursorDirectionParts.Bottom;\n\n const direction = directionParts as CursorDirection;\n\n return direction;\n }\n\n /** Gets the relative position based on the cursor direction. */\n public static getRelativePositionFromCursorDirection(\n cursorDirection: CursorDirection\n ): RelativePosition {\n let relativePosition: RelativePosition = RelativePosition.BottomRight;\n\n switch (cursorDirection) {\n case CursorDirection.Top:\n relativePosition = RelativePosition.Top;\n break;\n case CursorDirection.Left:\n relativePosition = RelativePosition.Left;\n break;\n case CursorDirection.Right:\n relativePosition = RelativePosition.Right;\n break;\n case CursorDirection.Bottom:\n relativePosition = RelativePosition.Bottom;\n break;\n case CursorDirection.TopLeft:\n relativePosition = RelativePosition.TopLeft;\n break;\n case CursorDirection.TopRight:\n relativePosition = RelativePosition.TopRight;\n break;\n case CursorDirection.BottomLeft:\n relativePosition = RelativePosition.BottomLeft;\n break;\n case CursorDirection.BottomRight:\n relativePosition = RelativePosition.BottomRight;\n break;\n }\n\n return relativePosition;\n }\n\n /** @internal - for testing */\n public static clearCursorDirections(): void {\n this._cursorDirections.length = 0;\n }\n}\n\n/** Returns additional information about cursor.\n * @internal\n */\nexport const useCursorInformationStore = create<{\n contentHovered: boolean;\n setContentHovered: (hovered: boolean) => void;\n}>((set) => ({\n contentHovered: false,\n setContentHovered: (hovered: boolean) => {\n set((state) =>\n produce(state, (draft) => {\n draft.contentHovered = hovered;\n })\n );\n },\n}));\n"]}
|
|
@@ -24,15 +24,11 @@ export var CursorPopupShow;
|
|
|
24
24
|
* @public
|
|
25
25
|
*/
|
|
26
26
|
export class CursorPopup extends React.Component {
|
|
27
|
+
_isMounted = false;
|
|
28
|
+
/** @internal */
|
|
29
|
+
static fadeOutTime = 500;
|
|
27
30
|
constructor(props) {
|
|
28
31
|
super(props);
|
|
29
|
-
this._isMounted = false;
|
|
30
|
-
this._handleCursorPopupFadeOutEvent = (args) => {
|
|
31
|
-
if (this.props.id === args.id) {
|
|
32
|
-
if (this._isMounted)
|
|
33
|
-
this.setState({ showPopup: args.show ?? CursorPopupShow.FadeOut });
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
32
|
this.state = {
|
|
37
33
|
showPopup: CursorPopupShow.Open,
|
|
38
34
|
size: { width: -1, height: -1 },
|
|
@@ -46,6 +42,12 @@ export class CursorPopup extends React.Component {
|
|
|
46
42
|
this._isMounted = false;
|
|
47
43
|
CursorPopupManager.onCursorPopupFadeOutEvent.removeListener(this._handleCursorPopupFadeOutEvent);
|
|
48
44
|
}
|
|
45
|
+
_handleCursorPopupFadeOutEvent = (args) => {
|
|
46
|
+
if (this.props.id === args.id) {
|
|
47
|
+
if (this._isMounted)
|
|
48
|
+
this.setState({ showPopup: args.show ?? CursorPopupShow.FadeOut });
|
|
49
|
+
}
|
|
50
|
+
};
|
|
49
51
|
/** @internal */
|
|
50
52
|
static getPopupRect(pt, offset, popupSize, relativePosition) {
|
|
51
53
|
const popupRect = { top: 0, left: 0, right: 0, bottom: 0 };
|
|
@@ -180,8 +182,6 @@ export class CursorPopup extends React.Component {
|
|
|
180
182
|
this.props.content));
|
|
181
183
|
}
|
|
182
184
|
}
|
|
183
|
-
/** @internal */
|
|
184
|
-
CursorPopup.fadeOutTime = 500;
|
|
185
185
|
/** CursorPopup content with padding
|
|
186
186
|
* @public
|
|
187
187
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CursorPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/cursor/cursorpopup/CursorPopup.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAIzD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,oBAAoB,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAyB7D;;GAEG;AACH,MAAM,CAAN,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,qDAAI,CAAA;IACJ,2DAAO,CAAA;AACT,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAUD;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK,CAAC,SAGtC;IAMC,YAAY,KAAuB;QACjC,KAAK,CAAC,KAAK,CAAC,CAAC;QANP,eAAU,GAAY,KAAK,CAAC;QA4B5B,mCAA8B,GAElC,CAAC,IAAI,EAAE,EAAE;YACX,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,UAAU;oBACjB,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC,CAAC;QA3BA,IAAI,CAAC,KAAK,GAAG;YACX,SAAS,EAAE,eAAe,CAAC,IAAI;YAC/B,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE;SAChC,CAAC;IACJ,CAAC;IAEe,iBAAiB;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,kBAAkB,CAAC,yBAAyB,CAAC,WAAW,CACtD,IAAI,CAAC,8BAA8B,CACpC,CAAC;IACJ,CAAC;IAEe,oBAAoB;QAClC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,kBAAkB,CAAC,yBAAyB,CAAC,cAAc,CACzD,IAAI,CAAC,8BAA8B,CACpC,CAAC;IACJ,CAAC;IAWD,gBAAgB;IACT,MAAM,CAAC,YAAY,CACxB,EAAS,EACT,MAAa,EACb,SAAgC,EAChC,gBAA8C;QAE9C,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QAC3D,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAE9C,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC;YAEhD,QAAQ,aAAa,EAAE,CAAC;gBACtB,KAAK,KAAK;oBACR,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACvD,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;oBACnD,MAAM;gBACR,KAAK,MAAM;oBACT,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;oBACnD,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACvD,MAAM;gBACR,KAAK,OAAO;oBACV,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACjC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACvD,MAAM;gBACR,KAAK,QAAQ;oBACX,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACvD,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAChC,MAAM;YACV,CAAC;YAED,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC7B,QAAQ,aAAa,EAAE,CAAC;oBACtB,KAAK,KAAK,CAAC;oBACX,KAAK,QAAQ;wBACX,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;wBAEjC,MAAM;oBACR,KAAK,MAAM,CAAC;oBACZ,KAAK,OAAO;wBACV,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;wBAChC,MAAM;gBACV,CAAC;YACH,CAAC;iBAAM,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAClC,QAAQ,aAAa,EAAE,CAAC;oBACtB,KAAK,KAAK,CAAC;oBACX,KAAK,QAAQ;wBACX,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;wBACnD,MAAM;oBACR,KAAK,MAAM,CAAC;oBACZ,KAAK,OAAO;wBACV,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;wBACnD,MAAM;gBACV,CAAC;YACH,CAAC;YAED,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;YACnD,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,QAAQ,gBAAgB,EAAE,CAAC;gBACzB,KAAK,gBAAgB,CAAC,GAAG;oBACvB,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACnC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC5C,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;oBACpD,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;oBACnD,MAAM;gBACR,KAAK,gBAAgB,CAAC,IAAI;oBACxB,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAClC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC5C,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;oBACnD,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;oBACpD,MAAM;gBACR,KAAK,gBAAgB,CAAC,KAAK;oBACzB,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACjC,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC5C,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;oBACnD,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;oBACpD,MAAM;gBACR,KAAK,gBAAgB,CAAC,MAAM;oBAC1B,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAChC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,GAAG,CAAC,CAAC;oBAC5C,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;oBACpD,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;oBACnD,MAAM;gBACR,KAAK,gBAAgB,CAAC,OAAO;oBAC3B,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACnC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAClC,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;oBACpD,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;oBACnD,MAAM;gBACR,KAAK,gBAAgB,CAAC,QAAQ;oBAC5B,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACnC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACjC,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;oBACpD,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;oBACnD,MAAM;gBACR,KAAK,gBAAgB,CAAC,UAAU;oBAC9B,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAChC,SAAS,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAClC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;oBACpD,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;oBACnD,MAAM;gBACR,KAAK,gBAAgB,CAAC,WAAW;oBAC/B,SAAS,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBAChC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;oBACjC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC;oBACpD,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;oBACnD,MAAM;YACV,CAAC;QACH,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,SAAS,CAAC,GAA0B;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3D,IACE,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM;gBACzC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK;gBAEvC,OAAO;YAET,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAEe,MAAM;QACpB,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,CACxC,IAAI,CAAC,KAAK,CAAC,EAAE,EACb,IAAI,CAAC,KAAK,CAAC,MAAM,EACjB,IAAI,CAAC,KAAK,CAAC,IAAI;QACf,4DAA4D;QAC5D,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CACpD,CAAC;QAEF,MAAM,gBAAgB,GAAwB;YAC5C,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,GAAG,EAAE,SAAS,CAAC,GAAG;SACnB,CAAC;QAEF,MAAM,UAAU,GAAG,UAAU,CAC3B,kBAAkB,EAClB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,mBAAmB,EACxC,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,eAAe,CAAC,OAAO;YAC9C,0BAA0B,CAC7B,CAAC;QAEF,OAAO,CACL,6BACE,SAAS,EAAE,UAAU,EACrB,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAC7B,KAAK,EAAE,gBAAgB;YAEtB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CACnB,oBAAC,eAAe,CAAC,QAAQ,IACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,SAAS,EAAC,wBAAwB,GAClC,CACH;YACA,IAAI,CAAC,KAAK,CAAC,OAAO,CACf,CACP,CAAC;IACJ,CAAC;;AA1MD,gBAAgB;AACF,uBAAW,GAAG,GAAG,AAAN,CAAO;AA4MlC;;GAEG;AACH,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,KAAqB;IACtD,4DAA4D;IAC5D,OAAO,oBAAC,GAAG,OAAK,KAAK,EAAE,aAAa,EAAC,0BAA0B,GAAG,CAAC;AACrE,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { CommonDivProps, CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { Div } from \"@itwin/core-react\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { StatusBarDialog } from \"../../statusbar/dialog/Dialog.js\";\nimport \"./CursorPopup.scss\";\nimport { CursorPopupManager } from \"./CursorPopupManager.js\";\nimport { type Placement } from \"../../utils/Placement.js\";\nimport type { RequireAtLeastOne } from \"@itwin/core-bentley\";\nimport type { SizeProps } from \"../../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../../utils/RectangleProps.js\";\n\n/** Properties for the [[CursorPopup]] React component\n * @public\n */\nexport type CursorPopupProps = {\n id: string;\n content: React.ReactNode;\n pt: XAndY;\n offset: XAndY;\n title?: string;\n shadow?: boolean;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n} & CommonProps & // eslint-disable-line @typescript-eslint/no-deprecated\n RequireAtLeastOne<{\n /** @deprecated in 4.16.0. Use `placement` property instead. */\n relativePosition: RelativePosition;\n placement: Placement;\n }>;\n\n/** Enum for showing CursorPopup\n * @internal - unit testing\n */\nexport enum CursorPopupShow {\n Open,\n FadeOut,\n}\n\n/** State for the [[CursorPopup]] React component\n * @internal\n */\ninterface CursorPopupState {\n showPopup: CursorPopupShow;\n size: SizeProps;\n}\n\n/** CursorPopup React component\n * @public\n */\nexport class CursorPopup extends React.Component<\n CursorPopupProps,\n CursorPopupState\n> {\n private _isMounted: boolean = false;\n\n /** @internal */\n public static fadeOutTime = 500;\n\n constructor(props: CursorPopupProps) {\n super(props);\n\n this.state = {\n showPopup: CursorPopupShow.Open,\n size: { width: -1, height: -1 },\n };\n }\n\n public override componentDidMount() {\n this._isMounted = true;\n CursorPopupManager.onCursorPopupFadeOutEvent.addListener(\n this._handleCursorPopupFadeOutEvent\n );\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n CursorPopupManager.onCursorPopupFadeOutEvent.removeListener(\n this._handleCursorPopupFadeOutEvent\n );\n }\n\n private _handleCursorPopupFadeOutEvent: ListenerType<\n typeof CursorPopupManager.onCursorPopupFadeOutEvent\n > = (args) => {\n if (this.props.id === args.id) {\n if (this._isMounted)\n this.setState({ showPopup: args.show ?? CursorPopupShow.FadeOut });\n }\n };\n\n /** @internal */\n public static getPopupRect(\n pt: XAndY,\n offset: XAndY,\n popupSize: SizeProps | undefined,\n relativePosition: RelativePosition | Placement\n ): RectangleProps {\n const popupRect = { top: 0, left: 0, right: 0, bottom: 0 };\n if (popupSize === undefined) return popupRect;\n\n if (typeof relativePosition === \"string\") {\n const placement = relativePosition.split(\"-\");\n const [mainPlacement, subPlacement] = placement;\n\n switch (mainPlacement) {\n case \"top\":\n popupRect.left = pt.x - popupSize.width / 2 - offset.x;\n popupRect.top = pt.y - offset.y + popupSize.height;\n break;\n case \"left\":\n popupRect.left = pt.x - popupSize.width - offset.x;\n popupRect.top = pt.y + popupSize.height / 2 - offset.y;\n break;\n case \"right\":\n popupRect.left = pt.x + offset.x;\n popupRect.top = pt.y + popupSize.height / 2 - offset.y;\n break;\n case \"bottom\":\n popupRect.left = pt.x - popupSize.width / 2 - offset.x;\n popupRect.top = pt.y + offset.y;\n break;\n }\n\n if (subPlacement === \"start\") {\n switch (mainPlacement) {\n case \"top\":\n case \"bottom\":\n popupRect.left = pt.x - offset.x;\n\n break;\n case \"left\":\n case \"right\":\n popupRect.top = pt.y - offset.y;\n break;\n }\n } else if (subPlacement === \"end\") {\n switch (mainPlacement) {\n case \"top\":\n case \"bottom\":\n popupRect.left = pt.x - popupSize.width - offset.x;\n break;\n case \"left\":\n case \"right\":\n popupRect.top = popupSize.height + pt.y - offset.y;\n break;\n }\n }\n\n popupRect.right = popupRect.left + popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n } else {\n switch (relativePosition) {\n case RelativePosition.Top:\n popupRect.bottom = pt.y - offset.y;\n popupRect.left = pt.x - popupSize.width / 2;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.Left:\n popupRect.right = pt.x - offset.x;\n popupRect.top = pt.y - popupSize.height / 2;\n popupRect.left = popupRect.right - popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n break;\n case RelativePosition.Right:\n popupRect.left = pt.x + offset.x;\n popupRect.top = pt.y - popupSize.height / 2;\n popupRect.right = popupRect.left + popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n break;\n case RelativePosition.Bottom:\n popupRect.top = pt.y + offset.y;\n popupRect.left = pt.x - popupSize.width / 2;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.TopLeft:\n popupRect.bottom = pt.y - offset.y;\n popupRect.right = pt.x - offset.x;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.left = popupRect.right - popupSize.width;\n break;\n case RelativePosition.TopRight:\n popupRect.bottom = pt.y - offset.y;\n popupRect.left = pt.x + offset.x;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.BottomLeft:\n popupRect.top = pt.y + offset.y;\n popupRect.right = pt.x - offset.x;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.left = popupRect.right - popupSize.width;\n break;\n case RelativePosition.BottomRight:\n popupRect.top = pt.y + offset.y;\n popupRect.left = pt.x + offset.x;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n }\n }\n\n return popupRect;\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n if (div) {\n const rect = div.getBoundingClientRect();\n const newSize = { width: rect.width, height: rect.height };\n if (\n newSize.height === this.state.size.height &&\n newSize.width === this.state.size.width\n )\n return;\n\n this.props.onSizeKnown?.(newSize);\n if (this._isMounted) this.setState({ size: newSize });\n }\n }\n\n public override render() {\n const popupRect = CursorPopup.getPopupRect(\n this.props.pt,\n this.props.offset,\n this.state.size,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.props.placement || this.props.relativePosition\n );\n\n const positioningStyle: React.CSSProperties = {\n left: popupRect.left,\n top: popupRect.top,\n };\n\n const classNames = classnames(\n \"uifw-cursorpopup\",\n this.props.shadow && \"core-popup-shadow\",\n this.state.showPopup === CursorPopupShow.FadeOut &&\n \"uifw-cursorpopup-fadeOut\"\n );\n\n return (\n <div\n className={classNames}\n ref={(e) => this.setDivRef(e)}\n style={positioningStyle}\n >\n {this.props.title && (\n <StatusBarDialog.TitleBar\n title={this.props.title}\n className=\"uifw-cursorpopup-title\"\n />\n )}\n {this.props.content}\n </div>\n );\n }\n}\n\n/** CursorPopup content with padding\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport function CursorPopupContent(props: CommonDivProps) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return <Div {...props} mainClassName=\"uifw-cursorpopup-content\" />;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CursorPopup.js","sourceRoot":"","sources":["../../../../src/appui-react/cursor/cursorpopup/CursorPopup.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport type { CommonDivProps, CommonProps } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { Div } from \"@itwin/core-react\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { StatusBarDialog } from \"../../statusbar/dialog/Dialog.js\";\nimport \"./CursorPopup.scss\";\nimport { CursorPopupManager } from \"./CursorPopupManager.js\";\nimport { type Placement } from \"../../utils/Placement.js\";\nimport type { RequireAtLeastOne } from \"@itwin/core-bentley\";\nimport type { SizeProps } from \"../../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../../utils/RectangleProps.js\";\n\n/** Properties for the [[CursorPopup]] React component\n * @public\n */\nexport type CursorPopupProps = {\n id: string;\n content: React.ReactNode;\n pt: XAndY;\n offset: XAndY;\n title?: string;\n shadow?: boolean;\n /** Function called when size is known. */\n onSizeKnown?: (size: SizeProps) => void;\n} & CommonProps & // eslint-disable-line @typescript-eslint/no-deprecated\n RequireAtLeastOne<{\n /** @deprecated in 4.16.0. Use `placement` property instead. */\n relativePosition: RelativePosition;\n placement: Placement;\n }>;\n\n/** Enum for showing CursorPopup\n * @internal - unit testing\n */\nexport enum CursorPopupShow {\n Open,\n FadeOut,\n}\n\n/** State for the [[CursorPopup]] React component\n * @internal\n */\ninterface CursorPopupState {\n showPopup: CursorPopupShow;\n size: SizeProps;\n}\n\n/** CursorPopup React component\n * @public\n */\nexport class CursorPopup extends React.Component<\n CursorPopupProps,\n CursorPopupState\n> {\n private _isMounted: boolean = false;\n\n /** @internal */\n public static fadeOutTime = 500;\n\n constructor(props: CursorPopupProps) {\n super(props);\n\n this.state = {\n showPopup: CursorPopupShow.Open,\n size: { width: -1, height: -1 },\n };\n }\n\n public override componentDidMount() {\n this._isMounted = true;\n CursorPopupManager.onCursorPopupFadeOutEvent.addListener(\n this._handleCursorPopupFadeOutEvent\n );\n }\n\n public override componentWillUnmount() {\n this._isMounted = false;\n CursorPopupManager.onCursorPopupFadeOutEvent.removeListener(\n this._handleCursorPopupFadeOutEvent\n );\n }\n\n private _handleCursorPopupFadeOutEvent: ListenerType<\n typeof CursorPopupManager.onCursorPopupFadeOutEvent\n > = (args) => {\n if (this.props.id === args.id) {\n if (this._isMounted)\n this.setState({ showPopup: args.show ?? CursorPopupShow.FadeOut });\n }\n };\n\n /** @internal */\n public static getPopupRect(\n pt: XAndY,\n offset: XAndY,\n popupSize: SizeProps | undefined,\n relativePosition: RelativePosition | Placement\n ): RectangleProps {\n const popupRect = { top: 0, left: 0, right: 0, bottom: 0 };\n if (popupSize === undefined) return popupRect;\n\n if (typeof relativePosition === \"string\") {\n const placement = relativePosition.split(\"-\");\n const [mainPlacement, subPlacement] = placement;\n\n switch (mainPlacement) {\n case \"top\":\n popupRect.left = pt.x - popupSize.width / 2 - offset.x;\n popupRect.top = pt.y - offset.y + popupSize.height;\n break;\n case \"left\":\n popupRect.left = pt.x - popupSize.width - offset.x;\n popupRect.top = pt.y + popupSize.height / 2 - offset.y;\n break;\n case \"right\":\n popupRect.left = pt.x + offset.x;\n popupRect.top = pt.y + popupSize.height / 2 - offset.y;\n break;\n case \"bottom\":\n popupRect.left = pt.x - popupSize.width / 2 - offset.x;\n popupRect.top = pt.y + offset.y;\n break;\n }\n\n if (subPlacement === \"start\") {\n switch (mainPlacement) {\n case \"top\":\n case \"bottom\":\n popupRect.left = pt.x - offset.x;\n\n break;\n case \"left\":\n case \"right\":\n popupRect.top = pt.y - offset.y;\n break;\n }\n } else if (subPlacement === \"end\") {\n switch (mainPlacement) {\n case \"top\":\n case \"bottom\":\n popupRect.left = pt.x - popupSize.width - offset.x;\n break;\n case \"left\":\n case \"right\":\n popupRect.top = popupSize.height + pt.y - offset.y;\n break;\n }\n }\n\n popupRect.right = popupRect.left + popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n } else {\n switch (relativePosition) {\n case RelativePosition.Top:\n popupRect.bottom = pt.y - offset.y;\n popupRect.left = pt.x - popupSize.width / 2;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.Left:\n popupRect.right = pt.x - offset.x;\n popupRect.top = pt.y - popupSize.height / 2;\n popupRect.left = popupRect.right - popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n break;\n case RelativePosition.Right:\n popupRect.left = pt.x + offset.x;\n popupRect.top = pt.y - popupSize.height / 2;\n popupRect.right = popupRect.left + popupSize.width;\n popupRect.bottom = popupRect.top + popupSize.height;\n break;\n case RelativePosition.Bottom:\n popupRect.top = pt.y + offset.y;\n popupRect.left = pt.x - popupSize.width / 2;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.TopLeft:\n popupRect.bottom = pt.y - offset.y;\n popupRect.right = pt.x - offset.x;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.left = popupRect.right - popupSize.width;\n break;\n case RelativePosition.TopRight:\n popupRect.bottom = pt.y - offset.y;\n popupRect.left = pt.x + offset.x;\n popupRect.top = popupRect.bottom - popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n case RelativePosition.BottomLeft:\n popupRect.top = pt.y + offset.y;\n popupRect.right = pt.x - offset.x;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.left = popupRect.right - popupSize.width;\n break;\n case RelativePosition.BottomRight:\n popupRect.top = pt.y + offset.y;\n popupRect.left = pt.x + offset.x;\n popupRect.bottom = popupRect.top + popupSize.height;\n popupRect.right = popupRect.left + popupSize.width;\n break;\n }\n }\n\n return popupRect;\n }\n\n private setDivRef(div: HTMLDivElement | null) {\n if (div) {\n const rect = div.getBoundingClientRect();\n const newSize = { width: rect.width, height: rect.height };\n if (\n newSize.height === this.state.size.height &&\n newSize.width === this.state.size.width\n )\n return;\n\n this.props.onSizeKnown?.(newSize);\n if (this._isMounted) this.setState({ size: newSize });\n }\n }\n\n public override render() {\n const popupRect = CursorPopup.getPopupRect(\n this.props.pt,\n this.props.offset,\n this.state.size,\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.props.placement || this.props.relativePosition\n );\n\n const positioningStyle: React.CSSProperties = {\n left: popupRect.left,\n top: popupRect.top,\n };\n\n const classNames = classnames(\n \"uifw-cursorpopup\",\n this.props.shadow && \"core-popup-shadow\",\n this.state.showPopup === CursorPopupShow.FadeOut &&\n \"uifw-cursorpopup-fadeOut\"\n );\n\n return (\n <div\n className={classNames}\n ref={(e) => this.setDivRef(e)}\n style={positioningStyle}\n >\n {this.props.title && (\n <StatusBarDialog.TitleBar\n title={this.props.title}\n className=\"uifw-cursorpopup-title\"\n />\n )}\n {this.props.content}\n </div>\n );\n }\n}\n\n/** CursorPopup content with padding\n * @public\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport function CursorPopupContent(props: CommonDivProps) {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n return <Div {...props} mainClassName=\"uifw-cursorpopup-content\" />;\n}\n"]}
|
|
@@ -17,6 +17,13 @@ import { ChildWindowContext } from "../../childwindow/ChildWindowRenderer.js";
|
|
|
17
17
|
* @public
|
|
18
18
|
*/
|
|
19
19
|
export class CursorPopupManager {
|
|
20
|
+
static _popups = new Array();
|
|
21
|
+
/** @internal */
|
|
22
|
+
static onCursorPopupUpdatePositionEvent = new BeUiEvent();
|
|
23
|
+
/** @internal */
|
|
24
|
+
static onCursorPopupFadeOutEvent = new BeUiEvent();
|
|
25
|
+
/** @internal */
|
|
26
|
+
static onCursorPopupsChangedEvent = new BeUiEvent();
|
|
20
27
|
/** @internal */
|
|
21
28
|
static clearPopups() {
|
|
22
29
|
this._popups.length = 0;
|
|
@@ -223,13 +230,6 @@ export class CursorPopupManager {
|
|
|
223
230
|
return { outPos, flipped };
|
|
224
231
|
}
|
|
225
232
|
}
|
|
226
|
-
CursorPopupManager._popups = new Array();
|
|
227
|
-
/** @internal */
|
|
228
|
-
CursorPopupManager.onCursorPopupUpdatePositionEvent = new BeUiEvent();
|
|
229
|
-
/** @internal */
|
|
230
|
-
CursorPopupManager.onCursorPopupFadeOutEvent = new BeUiEvent();
|
|
231
|
-
/** @internal */
|
|
232
|
-
CursorPopupManager.onCursorPopupsChangedEvent = new BeUiEvent();
|
|
233
233
|
const relativePositions = Object.values(RelativePosition).filter((value) => typeof value !== "string");
|
|
234
234
|
/** CursorPopupRenderer React component.
|
|
235
235
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CursorPopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/cursor/cursorpopup/CursorPopupManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport * as React from \"react\";\nimport { BeUiEvent, Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport { UiFramework } from \"../../UiFramework.js\";\nimport { CursorPopupShow } from \"./CursorPopup.js\";\nimport { CursorPopup } from \"./CursorPopup.js\";\nimport type { SizeProps } from \"../../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../../utils/RectangleProps.js\";\nimport { ChildWindowContext } from \"../../childwindow/ChildWindowRenderer.js\";\n\n/** Options for the [[CursorPopupManager]] open method\n * @public\n */\nexport interface CursorPopupOptions {\n /** Title of the popup */\n title?: string;\n /** Called on popup close */\n onClose?: () => void;\n /** Callback to apply changes */\n onApply?: () => void;\n /** Draw shadow */\n shadow?: boolean;\n}\n\n/** Information maintained by CursorPopupManager about a CursorPopup.\n * @public\n */\ninterface CursorPopupInfo {\n id: string;\n content: React.ReactNode;\n relativePosition: RelativePosition;\n offset: Point;\n priority: number;\n options?: CursorPopupOptions;\n targetDocument?: Document;\n\n renderRelativePosition: RelativePosition;\n popupSize?: SizeProps;\n\n cancelFadeOut?: () => void;\n}\n\n/** CursorPopup component\n * @public\n */\nexport class CursorPopupManager {\n private static _popups: CursorPopupInfo[] = new Array<CursorPopupInfo>();\n\n /** @internal */\n public static readonly onCursorPopupUpdatePositionEvent = new BeUiEvent<{\n pt: XAndY;\n }>();\n /** @internal */\n public static readonly onCursorPopupFadeOutEvent = new BeUiEvent<{\n id: string;\n show?: CursorPopupShow;\n }>();\n /** @internal */\n public static readonly onCursorPopupsChangedEvent = new BeUiEvent<object>();\n /** @internal */\n public static clearPopups() {\n this._popups.length = 0;\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n\n public static get popups() {\n return this._popups;\n }\n\n public static get popupCount() {\n return this._popups.length;\n }\n\n private static pushPopup(popupInfo: CursorPopupInfo): void {\n CursorPopupManager._popups.push(popupInfo);\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n\n /** Called to open popup with a new set of properties\n */\n public static open(\n id: string,\n content: React.ReactNode,\n pt: XAndY,\n offset: XAndY,\n relativePosition: RelativePosition,\n priority: number = 0,\n options?: CursorPopupOptions,\n targetDocument?: Document\n ) {\n const popupInfo = CursorPopupManager._popups.find((info) => id === info.id);\n if (popupInfo) {\n CursorPopupManager.onCursorPopupFadeOutEvent.emit({\n id,\n show: CursorPopupShow.Open,\n });\n\n popupInfo.content = content;\n popupInfo.offset = Point.create(offset);\n popupInfo.relativePosition = relativePosition;\n popupInfo.renderRelativePosition = relativePosition;\n popupInfo.priority = priority;\n popupInfo.options = options;\n popupInfo.targetDocument = targetDocument;\n CursorPopupManager.updatePosition(pt, targetDocument);\n\n if (popupInfo.cancelFadeOut) {\n popupInfo.cancelFadeOut();\n popupInfo.cancelFadeOut = undefined;\n }\n return;\n }\n\n const newPopupInfo: CursorPopupInfo = {\n id,\n content,\n offset: Point.create(offset),\n relativePosition,\n options,\n renderRelativePosition: relativePosition,\n priority,\n targetDocument,\n };\n CursorPopupManager.pushPopup(newPopupInfo);\n CursorPopupManager.updatePosition(pt, targetDocument);\n }\n\n /** Called to update popup with a new set of properties\n */\n public static update(\n id: string,\n content: React.ReactNode,\n pt: XAndY,\n offset: XAndY,\n relativePosition: RelativePosition,\n priority: number = 0,\n targetDocument?: Document\n ) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n if (popupInfo) {\n popupInfo.content = content;\n popupInfo.offset = Point.create(offset);\n popupInfo.relativePosition = relativePosition;\n popupInfo.renderRelativePosition = relativePosition;\n popupInfo.priority = priority;\n popupInfo.targetDocument = targetDocument;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(\"CursorPopupManager\"),\n `update: Could not find popup with id of '${id}'`\n );\n }\n\n CursorPopupManager.updatePosition(pt);\n }\n\n /** Called to move the open popup to new location\n */\n public static updatePosition(pt: XAndY, targetDocument?: Document) {\n CursorPopupManager.resetPopupsRenderRelativePosition(\n Point.create(pt),\n targetDocument\n );\n CursorPopupManager.onCursorPopupUpdatePositionEvent.emit({ pt });\n }\n\n /** Called when tool wants to close the popup\n */\n public static close(id: string, apply: boolean, fadeOut?: boolean) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n if (!popupInfo) {\n Logger.logError(\n UiFramework.loggerCategory(\"CursorPopupManager\"),\n `close: Could not find popup with id of '${id}'`\n );\n return;\n }\n\n if (apply) popupInfo.options?.onApply?.();\n popupInfo.options?.onClose?.();\n\n if (fadeOut) {\n // Already closing\n if (popupInfo.cancelFadeOut) return;\n\n let cancelled = false;\n popupInfo.cancelFadeOut = () => {\n cancelled = true;\n };\n CursorPopupManager.onCursorPopupFadeOutEvent.emit({ id });\n\n setTimeout(() => {\n if (cancelled) return;\n CursorPopupManager.removePopup(id);\n }, CursorPopup.fadeOutTime);\n return;\n }\n\n popupInfo.cancelFadeOut?.();\n popupInfo.cancelFadeOut = undefined;\n CursorPopupManager.removePopup(id);\n }\n\n private static removePopup(id: string): void {\n const index = CursorPopupManager._popups.findIndex(\n (popupInfo: CursorPopupInfo) => id === popupInfo.id\n );\n if (index >= 0) {\n CursorPopupManager._popups.splice(index, 1);\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n }\n\n private static resetPopupsRenderRelativePosition(\n pt: Point,\n targetDocument: Document | undefined\n ) {\n CursorPopupManager.popups.forEach((popupInfo) => {\n if (\n popupInfo.cancelFadeOut &&\n popupInfo.targetDocument !== targetDocument\n ) {\n // Popup if fading out - do not change target document.\n return;\n }\n\n popupInfo.renderRelativePosition = popupInfo.relativePosition;\n popupInfo.targetDocument = targetDocument;\n\n const flipped = CursorPopupManager.validateRenderRelativePosition(\n pt,\n popupInfo,\n targetDocument\n );\n\n // If flipped, call again to validate again.\n if (flipped) {\n CursorPopupManager.validateRenderRelativePosition(\n pt,\n popupInfo,\n targetDocument\n );\n }\n });\n }\n\n private static validateRenderRelativePosition(\n pt: Point,\n popupInfo: CursorPopupInfo,\n targetDocument: Document | undefined\n ): boolean {\n const popupRect = CursorPopup.getPopupRect(\n pt,\n Point.create(popupInfo.offset),\n popupInfo.popupSize,\n popupInfo.renderRelativePosition\n );\n const targetWindow = targetDocument?.defaultView ?? window;\n const { outPos, flipped } = CursorPopupManager.autoFlip(\n popupInfo.renderRelativePosition,\n popupRect,\n targetWindow.innerWidth,\n targetWindow.innerHeight\n );\n\n if (flipped) popupInfo.renderRelativePosition = outPos;\n\n return flipped;\n }\n\n private static autoFlip(\n inPos: RelativePosition,\n rect: RectangleProps,\n windowWidth: number,\n windowHeight: number\n ): { outPos: RelativePosition; flipped: boolean } {\n let flipped = false;\n let outPos = inPos;\n\n if (rect.right > windowWidth) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Top:\n case RelativePosition.TopRight:\n outPos = RelativePosition.TopLeft;\n break;\n case RelativePosition.Right:\n outPos = RelativePosition.Left;\n break;\n case RelativePosition.Bottom:\n case RelativePosition.BottomRight:\n outPos = RelativePosition.BottomLeft;\n break;\n }\n }\n\n if (rect.left < 0) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Top:\n case RelativePosition.TopLeft:\n outPos = RelativePosition.TopRight;\n break;\n case RelativePosition.Left:\n outPos = RelativePosition.Right;\n break;\n case RelativePosition.Bottom:\n case RelativePosition.BottomLeft:\n outPos = RelativePosition.BottomRight;\n break;\n }\n }\n\n if (rect.bottom > windowHeight) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Left:\n case RelativePosition.BottomLeft:\n outPos = RelativePosition.TopLeft;\n break;\n case RelativePosition.Bottom:\n outPos = RelativePosition.Top;\n break;\n case RelativePosition.Right:\n case RelativePosition.BottomRight:\n outPos = RelativePosition.TopRight;\n break;\n }\n }\n\n if (rect.top < 0) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Left:\n case RelativePosition.TopLeft:\n outPos = RelativePosition.BottomLeft;\n break;\n case RelativePosition.Top:\n outPos = RelativePosition.Bottom;\n break;\n case RelativePosition.Right:\n case RelativePosition.TopRight:\n outPos = RelativePosition.BottomRight;\n break;\n }\n }\n\n return { outPos, flipped };\n }\n}\n\nconst relativePositions = Object.values(RelativePosition).filter(\n (value): value is RelativePosition => typeof value !== \"string\"\n);\n\n/** CursorPopupRenderer React component.\n * @public\n */\nexport function CursorPopupRenderer() {\n const popupWindow = React.useContext(ChildWindowContext) ?? window;\n const [popups, setPopups] = React.useState(CursorPopupManager.popups);\n const [point, setPoint] = React.useState(new Point());\n\n React.useEffect(() => {\n return CursorPopupManager.onCursorPopupsChangedEvent.addListener(() => {\n const allPopups = CursorPopupManager.popups;\n const newPopups = allPopups.map((p) => ({ ...p }));\n setPopups(newPopups);\n });\n }, []);\n React.useEffect(() => {\n return CursorPopupManager.onCursorPopupUpdatePositionEvent.addListener(\n (args) => {\n const allPopups = CursorPopupManager.popups;\n const newPopups = allPopups.map((p) => ({ ...p }));\n setPopups(newPopups);\n setPoint(Point.create(args.pt));\n }\n );\n }, []);\n\n if (popups.length === 0) return undefined;\n return (\n <>\n {relativePositions.map((position) => {\n const filteredInfo = popups.filter(\n (popupInfo) => popupInfo.renderRelativePosition === position\n );\n if (filteredInfo.length === 0) return undefined;\n\n let totalDimension = 0;\n const positionPopups = filteredInfo\n .sort((a, b) => {\n const ascending =\n position === RelativePosition.Right ||\n position === RelativePosition.BottomRight ||\n position === RelativePosition.Bottom ||\n position === RelativePosition.BottomLeft;\n return ascending\n ? a.priority - b.priority\n : b.priority - a.priority;\n })\n .map((popupInfo, index) => {\n const targetDocument = popupInfo.targetDocument ?? window.document;\n if (popupWindow.document !== targetDocument) return undefined;\n\n const title =\n popupInfo.options !== undefined ? popupInfo.options.title : \"\";\n const shadow =\n popupInfo.options !== undefined\n ? popupInfo.options.shadow\n : false;\n let offset = popupInfo.offset;\n\n if (index > 0)\n offset = adjustOffset(\n offset,\n popupInfo.renderRelativePosition,\n totalDimension\n );\n\n if (popupInfo.popupSize)\n totalDimension += getDimension(popupInfo.popupSize, position);\n\n return (\n <CursorPopup\n key={popupInfo.id}\n id={popupInfo.id}\n content={popupInfo.content}\n pt={point}\n offset={offset}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n relativePosition={popupInfo.renderRelativePosition}\n title={title}\n shadow={shadow}\n onSizeKnown={(size) => {\n popupInfo.popupSize = size;\n }}\n />\n );\n });\n\n return <React.Fragment key={position}>{positionPopups}</React.Fragment>;\n })}\n </>\n );\n}\n\nfunction adjustOffset(\n offset: Point,\n relativePosition: RelativePosition,\n dimension: number\n) {\n switch (relativePosition) {\n case RelativePosition.Top:\n case RelativePosition.Bottom:\n case RelativePosition.TopLeft:\n case RelativePosition.TopRight:\n case RelativePosition.BottomLeft:\n case RelativePosition.BottomRight:\n return Point.create({ x: offset.x, y: offset.y + dimension });\n case RelativePosition.Left:\n case RelativePosition.Right:\n return Point.create({ x: offset.x + dimension, y: offset.y });\n }\n\n return Point.create(offset.toProps());\n}\n\nfunction getDimension(\n popupSize: SizeProps,\n relativePosition: RelativePosition\n) {\n switch (relativePosition) {\n case RelativePosition.Top:\n case RelativePosition.Bottom:\n case RelativePosition.TopLeft:\n case RelativePosition.TopRight:\n case RelativePosition.BottomLeft:\n case RelativePosition.BottomRight:\n return popupSize.height;\n case RelativePosition.Left:\n case RelativePosition.Right:\n return popupSize.width;\n }\n\n return 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CursorPopupManager.js","sourceRoot":"","sources":["../../../../src/appui-react/cursor/cursorpopup/CursorPopupManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cursor\n */\n\nimport * as React from \"react\";\nimport { BeUiEvent, Logger } from \"@itwin/core-bentley\";\nimport type { XAndY } from \"@itwin/core-geometry\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport { UiFramework } from \"../../UiFramework.js\";\nimport { CursorPopupShow } from \"./CursorPopup.js\";\nimport { CursorPopup } from \"./CursorPopup.js\";\nimport type { SizeProps } from \"../../utils/SizeProps.js\";\nimport type { RectangleProps } from \"../../utils/RectangleProps.js\";\nimport { ChildWindowContext } from \"../../childwindow/ChildWindowRenderer.js\";\n\n/** Options for the [[CursorPopupManager]] open method\n * @public\n */\nexport interface CursorPopupOptions {\n /** Title of the popup */\n title?: string;\n /** Called on popup close */\n onClose?: () => void;\n /** Callback to apply changes */\n onApply?: () => void;\n /** Draw shadow */\n shadow?: boolean;\n}\n\n/** Information maintained by CursorPopupManager about a CursorPopup.\n * @public\n */\ninterface CursorPopupInfo {\n id: string;\n content: React.ReactNode;\n relativePosition: RelativePosition;\n offset: Point;\n priority: number;\n options?: CursorPopupOptions;\n targetDocument?: Document;\n\n renderRelativePosition: RelativePosition;\n popupSize?: SizeProps;\n\n cancelFadeOut?: () => void;\n}\n\n/** CursorPopup component\n * @public\n */\nexport class CursorPopupManager {\n private static _popups: CursorPopupInfo[] = new Array<CursorPopupInfo>();\n\n /** @internal */\n public static readonly onCursorPopupUpdatePositionEvent = new BeUiEvent<{\n pt: XAndY;\n }>();\n /** @internal */\n public static readonly onCursorPopupFadeOutEvent = new BeUiEvent<{\n id: string;\n show?: CursorPopupShow;\n }>();\n /** @internal */\n public static readonly onCursorPopupsChangedEvent = new BeUiEvent<object>();\n /** @internal */\n public static clearPopups() {\n this._popups.length = 0;\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n\n public static get popups() {\n return this._popups;\n }\n\n public static get popupCount() {\n return this._popups.length;\n }\n\n private static pushPopup(popupInfo: CursorPopupInfo): void {\n CursorPopupManager._popups.push(popupInfo);\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n\n /** Called to open popup with a new set of properties\n */\n public static open(\n id: string,\n content: React.ReactNode,\n pt: XAndY,\n offset: XAndY,\n relativePosition: RelativePosition,\n priority: number = 0,\n options?: CursorPopupOptions,\n targetDocument?: Document\n ) {\n const popupInfo = CursorPopupManager._popups.find((info) => id === info.id);\n if (popupInfo) {\n CursorPopupManager.onCursorPopupFadeOutEvent.emit({\n id,\n show: CursorPopupShow.Open,\n });\n\n popupInfo.content = content;\n popupInfo.offset = Point.create(offset);\n popupInfo.relativePosition = relativePosition;\n popupInfo.renderRelativePosition = relativePosition;\n popupInfo.priority = priority;\n popupInfo.options = options;\n popupInfo.targetDocument = targetDocument;\n CursorPopupManager.updatePosition(pt, targetDocument);\n\n if (popupInfo.cancelFadeOut) {\n popupInfo.cancelFadeOut();\n popupInfo.cancelFadeOut = undefined;\n }\n return;\n }\n\n const newPopupInfo: CursorPopupInfo = {\n id,\n content,\n offset: Point.create(offset),\n relativePosition,\n options,\n renderRelativePosition: relativePosition,\n priority,\n targetDocument,\n };\n CursorPopupManager.pushPopup(newPopupInfo);\n CursorPopupManager.updatePosition(pt, targetDocument);\n }\n\n /** Called to update popup with a new set of properties\n */\n public static update(\n id: string,\n content: React.ReactNode,\n pt: XAndY,\n offset: XAndY,\n relativePosition: RelativePosition,\n priority: number = 0,\n targetDocument?: Document\n ) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n if (popupInfo) {\n popupInfo.content = content;\n popupInfo.offset = Point.create(offset);\n popupInfo.relativePosition = relativePosition;\n popupInfo.renderRelativePosition = relativePosition;\n popupInfo.priority = priority;\n popupInfo.targetDocument = targetDocument;\n } else {\n Logger.logError(\n UiFramework.loggerCategory(\"CursorPopupManager\"),\n `update: Could not find popup with id of '${id}'`\n );\n }\n\n CursorPopupManager.updatePosition(pt);\n }\n\n /** Called to move the open popup to new location\n */\n public static updatePosition(pt: XAndY, targetDocument?: Document) {\n CursorPopupManager.resetPopupsRenderRelativePosition(\n Point.create(pt),\n targetDocument\n );\n CursorPopupManager.onCursorPopupUpdatePositionEvent.emit({ pt });\n }\n\n /** Called when tool wants to close the popup\n */\n public static close(id: string, apply: boolean, fadeOut?: boolean) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\n if (!popupInfo) {\n Logger.logError(\n UiFramework.loggerCategory(\"CursorPopupManager\"),\n `close: Could not find popup with id of '${id}'`\n );\n return;\n }\n\n if (apply) popupInfo.options?.onApply?.();\n popupInfo.options?.onClose?.();\n\n if (fadeOut) {\n // Already closing\n if (popupInfo.cancelFadeOut) return;\n\n let cancelled = false;\n popupInfo.cancelFadeOut = () => {\n cancelled = true;\n };\n CursorPopupManager.onCursorPopupFadeOutEvent.emit({ id });\n\n setTimeout(() => {\n if (cancelled) return;\n CursorPopupManager.removePopup(id);\n }, CursorPopup.fadeOutTime);\n return;\n }\n\n popupInfo.cancelFadeOut?.();\n popupInfo.cancelFadeOut = undefined;\n CursorPopupManager.removePopup(id);\n }\n\n private static removePopup(id: string): void {\n const index = CursorPopupManager._popups.findIndex(\n (popupInfo: CursorPopupInfo) => id === popupInfo.id\n );\n if (index >= 0) {\n CursorPopupManager._popups.splice(index, 1);\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n }\n\n private static resetPopupsRenderRelativePosition(\n pt: Point,\n targetDocument: Document | undefined\n ) {\n CursorPopupManager.popups.forEach((popupInfo) => {\n if (\n popupInfo.cancelFadeOut &&\n popupInfo.targetDocument !== targetDocument\n ) {\n // Popup if fading out - do not change target document.\n return;\n }\n\n popupInfo.renderRelativePosition = popupInfo.relativePosition;\n popupInfo.targetDocument = targetDocument;\n\n const flipped = CursorPopupManager.validateRenderRelativePosition(\n pt,\n popupInfo,\n targetDocument\n );\n\n // If flipped, call again to validate again.\n if (flipped) {\n CursorPopupManager.validateRenderRelativePosition(\n pt,\n popupInfo,\n targetDocument\n );\n }\n });\n }\n\n private static validateRenderRelativePosition(\n pt: Point,\n popupInfo: CursorPopupInfo,\n targetDocument: Document | undefined\n ): boolean {\n const popupRect = CursorPopup.getPopupRect(\n pt,\n Point.create(popupInfo.offset),\n popupInfo.popupSize,\n popupInfo.renderRelativePosition\n );\n const targetWindow = targetDocument?.defaultView ?? window;\n const { outPos, flipped } = CursorPopupManager.autoFlip(\n popupInfo.renderRelativePosition,\n popupRect,\n targetWindow.innerWidth,\n targetWindow.innerHeight\n );\n\n if (flipped) popupInfo.renderRelativePosition = outPos;\n\n return flipped;\n }\n\n private static autoFlip(\n inPos: RelativePosition,\n rect: RectangleProps,\n windowWidth: number,\n windowHeight: number\n ): { outPos: RelativePosition; flipped: boolean } {\n let flipped = false;\n let outPos = inPos;\n\n if (rect.right > windowWidth) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Top:\n case RelativePosition.TopRight:\n outPos = RelativePosition.TopLeft;\n break;\n case RelativePosition.Right:\n outPos = RelativePosition.Left;\n break;\n case RelativePosition.Bottom:\n case RelativePosition.BottomRight:\n outPos = RelativePosition.BottomLeft;\n break;\n }\n }\n\n if (rect.left < 0) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Top:\n case RelativePosition.TopLeft:\n outPos = RelativePosition.TopRight;\n break;\n case RelativePosition.Left:\n outPos = RelativePosition.Right;\n break;\n case RelativePosition.Bottom:\n case RelativePosition.BottomLeft:\n outPos = RelativePosition.BottomRight;\n break;\n }\n }\n\n if (rect.bottom > windowHeight) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Left:\n case RelativePosition.BottomLeft:\n outPos = RelativePosition.TopLeft;\n break;\n case RelativePosition.Bottom:\n outPos = RelativePosition.Top;\n break;\n case RelativePosition.Right:\n case RelativePosition.BottomRight:\n outPos = RelativePosition.TopRight;\n break;\n }\n }\n\n if (rect.top < 0) {\n flipped = true;\n switch (inPos) {\n case RelativePosition.Left:\n case RelativePosition.TopLeft:\n outPos = RelativePosition.BottomLeft;\n break;\n case RelativePosition.Top:\n outPos = RelativePosition.Bottom;\n break;\n case RelativePosition.Right:\n case RelativePosition.TopRight:\n outPos = RelativePosition.BottomRight;\n break;\n }\n }\n\n return { outPos, flipped };\n }\n}\n\nconst relativePositions = Object.values(RelativePosition).filter(\n (value): value is RelativePosition => typeof value !== \"string\"\n);\n\n/** CursorPopupRenderer React component.\n * @public\n */\nexport function CursorPopupRenderer() {\n const popupWindow = React.useContext(ChildWindowContext) ?? window;\n const [popups, setPopups] = React.useState(CursorPopupManager.popups);\n const [point, setPoint] = React.useState(new Point());\n\n React.useEffect(() => {\n return CursorPopupManager.onCursorPopupsChangedEvent.addListener(() => {\n const allPopups = CursorPopupManager.popups;\n const newPopups = allPopups.map((p) => ({ ...p }));\n setPopups(newPopups);\n });\n }, []);\n React.useEffect(() => {\n return CursorPopupManager.onCursorPopupUpdatePositionEvent.addListener(\n (args) => {\n const allPopups = CursorPopupManager.popups;\n const newPopups = allPopups.map((p) => ({ ...p }));\n setPopups(newPopups);\n setPoint(Point.create(args.pt));\n }\n );\n }, []);\n\n if (popups.length === 0) return undefined;\n return (\n <>\n {relativePositions.map((position) => {\n const filteredInfo = popups.filter(\n (popupInfo) => popupInfo.renderRelativePosition === position\n );\n if (filteredInfo.length === 0) return undefined;\n\n let totalDimension = 0;\n const positionPopups = filteredInfo\n .sort((a, b) => {\n const ascending =\n position === RelativePosition.Right ||\n position === RelativePosition.BottomRight ||\n position === RelativePosition.Bottom ||\n position === RelativePosition.BottomLeft;\n return ascending\n ? a.priority - b.priority\n : b.priority - a.priority;\n })\n .map((popupInfo, index) => {\n const targetDocument = popupInfo.targetDocument ?? window.document;\n if (popupWindow.document !== targetDocument) return undefined;\n\n const title =\n popupInfo.options !== undefined ? popupInfo.options.title : \"\";\n const shadow =\n popupInfo.options !== undefined\n ? popupInfo.options.shadow\n : false;\n let offset = popupInfo.offset;\n\n if (index > 0)\n offset = adjustOffset(\n offset,\n popupInfo.renderRelativePosition,\n totalDimension\n );\n\n if (popupInfo.popupSize)\n totalDimension += getDimension(popupInfo.popupSize, position);\n\n return (\n <CursorPopup\n key={popupInfo.id}\n id={popupInfo.id}\n content={popupInfo.content}\n pt={point}\n offset={offset}\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n relativePosition={popupInfo.renderRelativePosition}\n title={title}\n shadow={shadow}\n onSizeKnown={(size) => {\n popupInfo.popupSize = size;\n }}\n />\n );\n });\n\n return <React.Fragment key={position}>{positionPopups}</React.Fragment>;\n })}\n </>\n );\n}\n\nfunction adjustOffset(\n offset: Point,\n relativePosition: RelativePosition,\n dimension: number\n) {\n switch (relativePosition) {\n case RelativePosition.Top:\n case RelativePosition.Bottom:\n case RelativePosition.TopLeft:\n case RelativePosition.TopRight:\n case RelativePosition.BottomLeft:\n case RelativePosition.BottomRight:\n return Point.create({ x: offset.x, y: offset.y + dimension });\n case RelativePosition.Left:\n case RelativePosition.Right:\n return Point.create({ x: offset.x + dimension, y: offset.y });\n }\n\n return Point.create(offset.toProps());\n}\n\nfunction getDimension(\n popupSize: SizeProps,\n relativePosition: RelativePosition\n) {\n switch (relativePosition) {\n case RelativePosition.Top:\n case RelativePosition.Bottom:\n case RelativePosition.TopLeft:\n case RelativePosition.TopRight:\n case RelativePosition.BottomLeft:\n case RelativePosition.BottomRight:\n return popupSize.height;\n case RelativePosition.Left:\n case RelativePosition.Right:\n return popupSize.width;\n }\n\n return 0;\n}\n"]}
|
|
@@ -25,9 +25,13 @@ const ZINDEX_DEFAULT = 12000;
|
|
|
25
25
|
* @internal
|
|
26
26
|
*/
|
|
27
27
|
export class DialogManagerBase {
|
|
28
|
+
static _sId = 0;
|
|
29
|
+
_dialogs = new Array();
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
31
|
+
_onDialogChangedEvent;
|
|
32
|
+
static _topZIndex = ZINDEX_DEFAULT;
|
|
28
33
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
29
34
|
constructor(onDialogChangedEvent) {
|
|
30
|
-
this._dialogs = new Array();
|
|
31
35
|
this._onDialogChangedEvent = onDialogChangedEvent;
|
|
32
36
|
}
|
|
33
37
|
/** Initialize the modeless dialog manager */
|
|
@@ -113,28 +117,20 @@ export class DialogManagerBase {
|
|
|
113
117
|
return this._dialogs.length;
|
|
114
118
|
}
|
|
115
119
|
}
|
|
116
|
-
DialogManagerBase._sId = 0;
|
|
117
|
-
DialogManagerBase._topZIndex = ZINDEX_DEFAULT;
|
|
118
120
|
/** DialogRenderer React component.
|
|
119
121
|
* @internal
|
|
120
122
|
*/
|
|
121
123
|
export class DialogRendererBase extends React.PureComponent {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
});
|
|
133
|
-
};
|
|
134
|
-
this._handleDialogChangedEvent = () => {
|
|
135
|
-
this.forceUpdate();
|
|
136
|
-
};
|
|
137
|
-
}
|
|
124
|
+
state = {
|
|
125
|
+
parentDocument: undefined,
|
|
126
|
+
renderer: undefined,
|
|
127
|
+
};
|
|
128
|
+
_handleRefSet = (el) => {
|
|
129
|
+
this.setState({
|
|
130
|
+
parentDocument: el?.ownerDocument ?? undefined,
|
|
131
|
+
renderer: el ?? undefined,
|
|
132
|
+
});
|
|
133
|
+
};
|
|
138
134
|
render() {
|
|
139
135
|
if (this.props.dialogManager.dialogCount <= 0)
|
|
140
136
|
return null;
|
|
@@ -152,5 +148,8 @@ export class DialogRendererBase extends React.PureComponent {
|
|
|
152
148
|
componentWillUnmount() {
|
|
153
149
|
this.props.dialogManager.onDialogChangedEvent.removeListener(this._handleDialogChangedEvent);
|
|
154
150
|
}
|
|
151
|
+
_handleDialogChangedEvent = () => {
|
|
152
|
+
this.forceUpdate();
|
|
153
|
+
};
|
|
155
154
|
}
|
|
156
155
|
//# sourceMappingURL=DialogManagerBase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DialogManagerBase.js","sourceRoot":"","sources":["../../../src/appui-react/dialog/DialogManagerBase.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Dialog\n */\n\nimport \"./DialogManagerBase.scss\";\nimport * as React from \"react\";\nimport type { BeUiEvent } from \"@itwin/core-bentley\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { getCssVariableAsNumber } from \"@itwin/core-react\";\nimport { ThemeProvider } from \"@itwin/itwinui-react\";\n\n/** Dialog Stack Changed Event Args class.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface DialogChangedEventArgs {\n dialogCount: number;\n activeDialog: React.ReactNode | undefined;\n}\n\n/** Dialog Changed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class DialogChangedEvent extends UiEvent<DialogChangedEventArgs> {}\n\n/** Information maintained by a Dialog Manager about a dialog\n * @public\n */\nexport interface DialogInfo {\n reactNode: React.ReactNode;\n id: string;\n parentDocument: Document;\n}\n\n/** Used if the 'dialog' z-index CSS variable cannot be read */\nconst ZINDEX_DEFAULT = 12000;\n\n/** Dialog Manager class.\n * @internal\n */\nexport class DialogManagerBase {\n private static _sId = 0;\n private _dialogs: DialogInfo[] = new Array<DialogInfo>();\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _onDialogChangedEvent: BeUiEvent<DialogChangedEventArgs>;\n private static _topZIndex = ZINDEX_DEFAULT;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(onDialogChangedEvent: BeUiEvent<DialogChangedEventArgs>) {\n this._onDialogChangedEvent = onDialogChangedEvent;\n }\n\n /** Initialize the modeless dialog manager */\n public static initialize(): void {\n DialogManagerBase._topZIndex = DialogManagerBase.getDialogZIndexDefault();\n }\n\n public static get topZIndex(): number {\n return DialogManagerBase._topZIndex;\n }\n\n public static set topZIndex(zIndex: number) {\n DialogManagerBase._topZIndex = zIndex;\n }\n public get dialogs() {\n return this._dialogs;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public get onDialogChangedEvent(): BeUiEvent<DialogChangedEventArgs> {\n return this._onDialogChangedEvent;\n }\n\n public static getDialogZIndexDefault(): number {\n const variable = \"--uicore-z-index-dialog\";\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const value = getCssVariableAsNumber(variable);\n\n if (!isNaN(value)) return value;\n\n Logger.logError(\n UiFramework.loggerCategory(\"DialogManagerBase\"),\n `'${variable}' CSS variable not found`\n );\n return ZINDEX_DEFAULT;\n }\n\n /**\n * Triggers opening a dialog.\n * @param dialog Dialog React component.\n * @param id The unique Id the identifies the dialog.\n * @param parentDocument Optional document required when displaying a dialog in a child popup window.\n */\n public openDialog(\n dialog: React.ReactNode,\n id?: string,\n parentDocument?: Document\n ): void {\n if (!id) id = `Dialog-${++DialogManagerBase._sId}`;\n\n const owningDoc = parentDocument ?? document;\n this.pushDialog({ reactNode: dialog, id, parentDocument: owningDoc });\n }\n\n /** @internal */\n public pushDialog(dialogInfo: DialogInfo): void {\n this._dialogs.push(dialogInfo);\n this.emitDialogChangedEvent();\n }\n\n public closeDialog(dialog?: React.ReactNode): void {\n let targetDialog = dialog;\n if (!dialog) targetDialog = this.activeDialog;\n\n this.removeDialog(targetDialog);\n this.emitDialogChangedEvent();\n }\n\n /** @internal */\n public closeAll(): void {\n this._dialogs = [];\n this.emitDialogChangedEvent();\n }\n\n /** @internal */\n public removeDialog(dialog: React.ReactNode): void {\n const index = this._dialogs.findIndex((dialogInfo: DialogInfo) => {\n return dialog === dialogInfo.reactNode;\n });\n if (index >= 0) this._dialogs.splice(index, 1);\n if (this._dialogs.length < 1)\n DialogManagerBase.topZIndex = DialogManagerBase.getDialogZIndexDefault();\n }\n\n public emitDialogChangedEvent(): void {\n this._onDialogChangedEvent.emit({\n dialogCount: this.dialogCount,\n activeDialog: this.activeDialog,\n });\n }\n\n public update(): void {\n this.emitDialogChangedEvent();\n }\n\n public get activeDialog(): React.ReactNode | undefined {\n if (this._dialogs.length > 0)\n return this._dialogs[this._dialogs.length - 1].reactNode;\n\n return undefined;\n }\n\n public get dialogCount(): number {\n return this._dialogs.length;\n }\n}\n\n/** Properties for the [[DialogRendererBase]] component\n * @internal\n */\nexport interface DialogRendererProps {\n dialogManager: DialogManagerBase;\n style?: React.CSSProperties;\n}\n\ninterface DialogRendererState {\n parentDocument: Document | undefined;\n renderer: HTMLElement | undefined;\n}\n/** DialogRenderer React component.\n * @internal\n */\nexport class DialogRendererBase extends React.PureComponent<\n DialogRendererProps,\n DialogRendererState\n> {\n public override readonly state: DialogRendererState = {\n parentDocument: undefined,\n renderer: undefined,\n };\n\n private _handleRefSet = (el: HTMLElement | null) => {\n this.setState({\n parentDocument: el?.ownerDocument ?? undefined,\n renderer: el ?? undefined,\n });\n };\n\n public override render(): React.ReactNode {\n if (this.props.dialogManager.dialogCount <= 0) return null;\n\n return (\n <div\n className=\"uifw-dialog-dialogManagerBase_renderer\"\n ref={this._handleRefSet}\n >\n <ThemeProvider portalContainer={this.state.renderer}>\n {this.state.parentDocument &&\n this.props.dialogManager.dialogs\n .filter(\n (info) => info.parentDocument === this.state.parentDocument\n )\n .map((info) => {\n return (\n <React.Fragment key={info.id}>\n {info.reactNode}\n </React.Fragment>\n );\n })}\n </ThemeProvider>\n </div>\n );\n }\n\n public override componentDidMount(): void {\n this.props.dialogManager.onDialogChangedEvent.addListener(\n this._handleDialogChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n this.props.dialogManager.onDialogChangedEvent.removeListener(\n this._handleDialogChangedEvent\n );\n }\n\n private _handleDialogChangedEvent: ListenerType<\n DialogManagerBase[\"onDialogChangedEvent\"]\n > = () => {\n this.forceUpdate();\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DialogManagerBase.js","sourceRoot":"","sources":["../../../src/appui-react/dialog/DialogManagerBase.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAWrD;;;GAGG;AACH,4DAA4D;AAC5D,MAAM,OAAO,kBAAmB,SAAQ,OAA+B;CAAG;AAW1E,+DAA+D;AAC/D,MAAM,cAAc,GAAG,KAAK,CAAC;AAE7B;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACpB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IAChB,QAAQ,GAAiB,IAAI,KAAK,EAAc,CAAC;IACzD,4DAA4D;IACpD,qBAAqB,CAAoC;IACzD,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC;IAE3C,4DAA4D;IAC5D,YAAY,oBAAuD;QACjE,IAAI,CAAC,qBAAqB,GAAG,oBAAoB,CAAC;IACpD,CAAC;IAED,6CAA6C;IACtC,MAAM,CAAC,UAAU;QACtB,iBAAiB,CAAC,UAAU,GAAG,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;IAC5E,CAAC;IAEM,MAAM,KAAK,SAAS;QACzB,OAAO,iBAAiB,CAAC,UAAU,CAAC;IACtC,CAAC;IAEM,MAAM,KAAK,SAAS,CAAC,MAAc;QACxC,iBAAiB,CAAC,UAAU,GAAG,MAAM,CAAC;IACxC,CAAC;IACD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,4DAA4D;IAC5D,IAAW,oBAAoB;QAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAEM,MAAM,CAAC,sBAAsB;QAClC,MAAM,QAAQ,GAAG,yBAAyB,CAAC;QAC3C,4DAA4D;QAC5D,MAAM,KAAK,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QAE/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEhC,MAAM,CAAC,QAAQ,CACb,WAAW,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAC/C,IAAI,QAAQ,0BAA0B,CACvC,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED;;;;;OAKG;IACI,UAAU,CACf,MAAuB,EACvB,EAAW,EACX,cAAyB;QAEzB,IAAI,CAAC,EAAE;YAAE,EAAE,GAAG,UAAU,EAAE,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAEnD,MAAM,SAAS,GAAG,cAAc,IAAI,QAAQ,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,cAAc,EAAE,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,gBAAgB;IACT,UAAU,CAAC,UAAsB;QACtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEM,WAAW,CAAC,MAAwB;QACzC,IAAI,YAAY,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM;YAAE,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QAE9C,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,gBAAgB;IACT,QAAQ;QACb,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,gBAAgB;IACT,YAAY,CAAC,MAAuB;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,UAAsB,EAAE,EAAE;YAC/D,OAAO,MAAM,KAAK,UAAU,CAAC,SAAS,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC1B,iBAAiB,CAAC,SAAS,GAAG,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;IAC7E,CAAC;IAEM,sBAAsB;QAC3B,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM;QACX,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAED,IAAW,YAAY;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;;AAeH;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK,CAAC,aAG7C;IAC0B,KAAK,GAAwB;QACpD,cAAc,EAAE,SAAS;QACzB,QAAQ,EAAE,SAAS;KACpB,CAAC;IAEM,aAAa,GAAG,CAAC,EAAsB,EAAE,EAAE;QACjD,IAAI,CAAC,QAAQ,CAAC;YACZ,cAAc,EAAE,EAAE,EAAE,aAAa,IAAI,SAAS;YAC9C,QAAQ,EAAE,EAAE,IAAI,SAAS;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC;IAEc,MAAM;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAE3D,OAAO,CACL,6BACE,SAAS,EAAC,wCAAwC,EAClD,GAAG,EAAE,IAAI,CAAC,aAAa;YAEvB,oBAAC,aAAa,IAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAChD,IAAI,CAAC,KAAK,CAAC,cAAc;gBACxB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO;qBAC7B,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,KAAK,CAAC,cAAc,CAC5D;qBACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACZ,OAAO,CACL,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IACzB,IAAI,CAAC,SAAS,CACA,CAClB,CAAC;gBACJ,CAAC,CAAC,CACQ,CACZ,CACP,CAAC;IACJ,CAAC;IAEe,iBAAiB;QAC/B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,WAAW,CACvD,IAAI,CAAC,yBAAyB,CAC/B,CAAC;IACJ,CAAC;IAEe,oBAAoB;QAClC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,cAAc,CAC1D,IAAI,CAAC,yBAAyB,CAC/B,CAAC;IACJ,CAAC;IAEO,yBAAyB,GAE7B,GAAG,EAAE;QACP,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC,CAAC;CACH","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Dialog\n */\n\nimport \"./DialogManagerBase.scss\";\nimport * as React from \"react\";\nimport type { BeUiEvent } from \"@itwin/core-bentley\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { UiEvent } from \"@itwin/appui-abstract\";\nimport { UiFramework } from \"../UiFramework.js\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { getCssVariableAsNumber } from \"@itwin/core-react\";\nimport { ThemeProvider } from \"@itwin/itwinui-react\";\n\n/** Dialog Stack Changed Event Args class.\n * @public\n * @deprecated in 4.13.0. Event args are inferred from a listener. If explicit type is needed use a type helper.\n */\nexport interface DialogChangedEventArgs {\n dialogCount: number;\n activeDialog: React.ReactNode | undefined;\n}\n\n/** Dialog Changed Event class.\n * @public\n * @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.\n */\n// eslint-disable-next-line @typescript-eslint/no-deprecated\nexport class DialogChangedEvent extends UiEvent<DialogChangedEventArgs> {}\n\n/** Information maintained by a Dialog Manager about a dialog\n * @public\n */\nexport interface DialogInfo {\n reactNode: React.ReactNode;\n id: string;\n parentDocument: Document;\n}\n\n/** Used if the 'dialog' z-index CSS variable cannot be read */\nconst ZINDEX_DEFAULT = 12000;\n\n/** Dialog Manager class.\n * @internal\n */\nexport class DialogManagerBase {\n private static _sId = 0;\n private _dialogs: DialogInfo[] = new Array<DialogInfo>();\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n private _onDialogChangedEvent: BeUiEvent<DialogChangedEventArgs>;\n private static _topZIndex = ZINDEX_DEFAULT;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n constructor(onDialogChangedEvent: BeUiEvent<DialogChangedEventArgs>) {\n this._onDialogChangedEvent = onDialogChangedEvent;\n }\n\n /** Initialize the modeless dialog manager */\n public static initialize(): void {\n DialogManagerBase._topZIndex = DialogManagerBase.getDialogZIndexDefault();\n }\n\n public static get topZIndex(): number {\n return DialogManagerBase._topZIndex;\n }\n\n public static set topZIndex(zIndex: number) {\n DialogManagerBase._topZIndex = zIndex;\n }\n public get dialogs() {\n return this._dialogs;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n public get onDialogChangedEvent(): BeUiEvent<DialogChangedEventArgs> {\n return this._onDialogChangedEvent;\n }\n\n public static getDialogZIndexDefault(): number {\n const variable = \"--uicore-z-index-dialog\";\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const value = getCssVariableAsNumber(variable);\n\n if (!isNaN(value)) return value;\n\n Logger.logError(\n UiFramework.loggerCategory(\"DialogManagerBase\"),\n `'${variable}' CSS variable not found`\n );\n return ZINDEX_DEFAULT;\n }\n\n /**\n * Triggers opening a dialog.\n * @param dialog Dialog React component.\n * @param id The unique Id the identifies the dialog.\n * @param parentDocument Optional document required when displaying a dialog in a child popup window.\n */\n public openDialog(\n dialog: React.ReactNode,\n id?: string,\n parentDocument?: Document\n ): void {\n if (!id) id = `Dialog-${++DialogManagerBase._sId}`;\n\n const owningDoc = parentDocument ?? document;\n this.pushDialog({ reactNode: dialog, id, parentDocument: owningDoc });\n }\n\n /** @internal */\n public pushDialog(dialogInfo: DialogInfo): void {\n this._dialogs.push(dialogInfo);\n this.emitDialogChangedEvent();\n }\n\n public closeDialog(dialog?: React.ReactNode): void {\n let targetDialog = dialog;\n if (!dialog) targetDialog = this.activeDialog;\n\n this.removeDialog(targetDialog);\n this.emitDialogChangedEvent();\n }\n\n /** @internal */\n public closeAll(): void {\n this._dialogs = [];\n this.emitDialogChangedEvent();\n }\n\n /** @internal */\n public removeDialog(dialog: React.ReactNode): void {\n const index = this._dialogs.findIndex((dialogInfo: DialogInfo) => {\n return dialog === dialogInfo.reactNode;\n });\n if (index >= 0) this._dialogs.splice(index, 1);\n if (this._dialogs.length < 1)\n DialogManagerBase.topZIndex = DialogManagerBase.getDialogZIndexDefault();\n }\n\n public emitDialogChangedEvent(): void {\n this._onDialogChangedEvent.emit({\n dialogCount: this.dialogCount,\n activeDialog: this.activeDialog,\n });\n }\n\n public update(): void {\n this.emitDialogChangedEvent();\n }\n\n public get activeDialog(): React.ReactNode | undefined {\n if (this._dialogs.length > 0)\n return this._dialogs[this._dialogs.length - 1].reactNode;\n\n return undefined;\n }\n\n public get dialogCount(): number {\n return this._dialogs.length;\n }\n}\n\n/** Properties for the [[DialogRendererBase]] component\n * @internal\n */\nexport interface DialogRendererProps {\n dialogManager: DialogManagerBase;\n style?: React.CSSProperties;\n}\n\ninterface DialogRendererState {\n parentDocument: Document | undefined;\n renderer: HTMLElement | undefined;\n}\n/** DialogRenderer React component.\n * @internal\n */\nexport class DialogRendererBase extends React.PureComponent<\n DialogRendererProps,\n DialogRendererState\n> {\n public override readonly state: DialogRendererState = {\n parentDocument: undefined,\n renderer: undefined,\n };\n\n private _handleRefSet = (el: HTMLElement | null) => {\n this.setState({\n parentDocument: el?.ownerDocument ?? undefined,\n renderer: el ?? undefined,\n });\n };\n\n public override render(): React.ReactNode {\n if (this.props.dialogManager.dialogCount <= 0) return null;\n\n return (\n <div\n className=\"uifw-dialog-dialogManagerBase_renderer\"\n ref={this._handleRefSet}\n >\n <ThemeProvider portalContainer={this.state.renderer}>\n {this.state.parentDocument &&\n this.props.dialogManager.dialogs\n .filter(\n (info) => info.parentDocument === this.state.parentDocument\n )\n .map((info) => {\n return (\n <React.Fragment key={info.id}>\n {info.reactNode}\n </React.Fragment>\n );\n })}\n </ThemeProvider>\n </div>\n );\n }\n\n public override componentDidMount(): void {\n this.props.dialogManager.onDialogChangedEvent.addListener(\n this._handleDialogChangedEvent\n );\n }\n\n public override componentWillUnmount(): void {\n this.props.dialogManager.onDialogChangedEvent.removeListener(\n this._handleDialogChangedEvent\n );\n }\n\n private _handleDialogChangedEvent: ListenerType<\n DialogManagerBase[\"onDialogChangedEvent\"]\n > = () => {\n this.forceUpdate();\n };\n}\n"]}
|
|
@@ -16,10 +16,17 @@ const CONTENT_DIALOG_ZINDEX_DEFAULT = 2000;
|
|
|
16
16
|
* @internal
|
|
17
17
|
*/
|
|
18
18
|
export class InternalContentDialogManager {
|
|
19
|
+
/** Content Dialog Changed Event */
|
|
20
|
+
static onContentDialogChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
21
|
+
/** @internal */
|
|
22
|
+
static dialogManager = new DialogManagerBase(InternalContentDialogManager.onContentDialogChangedEvent);
|
|
19
23
|
/** Get the array of modeless dialogs */
|
|
20
24
|
static get dialogs() {
|
|
21
25
|
return InternalContentDialogManager.dialogManager.dialogs;
|
|
22
26
|
}
|
|
27
|
+
static _dialogMap = new Map();
|
|
28
|
+
static _idArray = new Array();
|
|
29
|
+
static _topZIndex = CONTENT_DIALOG_ZINDEX_DEFAULT;
|
|
23
30
|
/** Initialize the modeless dialog manager.
|
|
24
31
|
* @internal
|
|
25
32
|
*/
|
|
@@ -126,11 +133,4 @@ export class InternalContentDialogManager {
|
|
|
126
133
|
return InternalContentDialogManager._dialogMap.get(id);
|
|
127
134
|
}
|
|
128
135
|
}
|
|
129
|
-
/** Content Dialog Changed Event */
|
|
130
|
-
InternalContentDialogManager.onContentDialogChangedEvent = new BeUiEvent(); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
131
|
-
/** @internal */
|
|
132
|
-
InternalContentDialogManager.dialogManager = new DialogManagerBase(InternalContentDialogManager.onContentDialogChangedEvent);
|
|
133
|
-
InternalContentDialogManager._dialogMap = new Map();
|
|
134
|
-
InternalContentDialogManager._idArray = new Array();
|
|
135
|
-
InternalContentDialogManager._topZIndex = CONTENT_DIALOG_ZINDEX_DEFAULT;
|
|
136
136
|
//# sourceMappingURL=InternalContentDialogManager.js.map
|