@itwin/appui-react 5.3.1 → 5.4.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 -1
- package/lib/appui-react/UiFramework.d.ts +6 -2
- package/lib/appui-react/UiFramework.d.ts.map +1 -1
- package/lib/appui-react/UiFramework.js +29 -2
- package/lib/appui-react/UiFramework.js.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawFieldContainer.d.ts.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawFieldContainer.js +4 -4
- package/lib/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawPopupManager.d.ts.map +1 -1
- package/lib/appui-react/accudraw/AccuDrawPopupManager.js +10 -6
- package/lib/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
- package/lib/appui-react/accudraw/Calculator.js +2 -2
- package/lib/appui-react/accudraw/Calculator.js.map +1 -1
- package/lib/appui-react/childwindow/ChildWindowRenderer.d.ts +2 -0
- package/lib/appui-react/childwindow/ChildWindowRenderer.d.ts.map +1 -1
- package/lib/appui-react/childwindow/ChildWindowRenderer.js +15 -10
- package/lib/appui-react/childwindow/ChildWindowRenderer.js.map +1 -1
- package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts +23 -1
- package/lib/appui-react/configurableui/ConfigurableUiContent.d.ts.map +1 -1
- package/lib/appui-react/configurableui/ConfigurableUiContent.js +20 -12
- package/lib/appui-react/configurableui/ConfigurableUiContent.js.map +1 -1
- package/lib/appui-react/content/ContentLayout.d.ts.map +1 -1
- package/lib/appui-react/content/ContentLayout.js +10 -11
- package/lib/appui-react/content/ContentLayout.js.map +1 -1
- package/lib/appui-react/content/ContentOverlay.d.ts +1 -0
- package/lib/appui-react/content/ContentOverlay.d.ts.map +1 -1
- package/lib/appui-react/content/ContentOverlay.js +3 -1
- package/lib/appui-react/content/ContentOverlay.js.map +1 -1
- package/lib/appui-react/content/FloatingViewportContent.d.ts.map +1 -1
- package/lib/appui-react/content/FloatingViewportContent.js +1 -1
- package/lib/appui-react/content/FloatingViewportContent.js.map +1 -1
- package/lib/appui-react/cursor/CursorInformation.d.ts +4 -1
- package/lib/appui-react/cursor/CursorInformation.d.ts.map +1 -1
- package/lib/appui-react/cursor/CursorInformation.js +6 -1
- package/lib/appui-react/cursor/CursorInformation.js.map +1 -1
- package/lib/appui-react/cursor/cursormenu/CursorMenu.d.ts +1 -24
- package/lib/appui-react/cursor/cursormenu/CursorMenu.d.ts.map +1 -1
- package/lib/appui-react/cursor/cursormenu/CursorMenu.js +37 -58
- package/lib/appui-react/cursor/cursormenu/CursorMenu.js.map +1 -1
- package/lib/appui-react/cursor/cursorpopup/CursorPopup.scss +3 -0
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts +8 -22
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.d.ts.map +1 -1
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js +109 -116
- package/lib/appui-react/cursor/cursorpopup/CursorPopupManager.js.map +1 -1
- package/lib/appui-react/cursor/cursorprompt/CursorPrompt.d.ts +12 -15
- package/lib/appui-react/cursor/cursorprompt/CursorPrompt.d.ts.map +1 -1
- package/lib/appui-react/cursor/cursorprompt/CursorPrompt.js +85 -48
- package/lib/appui-react/cursor/cursorprompt/CursorPrompt.js.map +1 -1
- package/lib/appui-react/framework/FrameworkFrontstages.d.ts +47 -0
- package/lib/appui-react/framework/FrameworkFrontstages.d.ts.map +1 -1
- package/lib/appui-react/framework/FrameworkFrontstages.js +136 -0
- package/lib/appui-react/framework/FrameworkFrontstages.js.map +1 -1
- package/lib/appui-react/framework/FrameworkVisibility.d.ts +2 -0
- package/lib/appui-react/framework/FrameworkVisibility.d.ts.map +1 -1
- package/lib/appui-react/framework/FrameworkVisibility.js.map +1 -1
- package/lib/appui-react/frontstage/InternalFrontstageManager.d.ts.map +1 -1
- package/lib/appui-react/frontstage/InternalFrontstageManager.js +121 -115
- package/lib/appui-react/frontstage/InternalFrontstageManager.js.map +1 -1
- package/lib/appui-react/hooks/useActiveTool.d.ts +9 -0
- package/lib/appui-react/hooks/useActiveTool.d.ts.map +1 -0
- package/lib/appui-react/hooks/useActiveTool.js +23 -0
- package/lib/appui-react/hooks/useActiveTool.js.map +1 -0
- package/lib/appui-react/icons/SvgAngle.d.ts +7 -0
- package/lib/appui-react/icons/SvgAngle.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgAngle.js +15 -0
- package/lib/appui-react/icons/SvgAngle.js.map +1 -0
- package/lib/appui-react/icons/SvgBackspace.d.ts +7 -0
- package/lib/appui-react/icons/SvgBackspace.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgBackspace.js +14 -0
- package/lib/appui-react/icons/SvgBackspace.js.map +1 -0
- package/lib/appui-react/icons/SvgDistance.d.ts +7 -0
- package/lib/appui-react/icons/SvgDistance.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgDistance.js +16 -0
- package/lib/appui-react/icons/SvgDistance.js.map +1 -0
- package/lib/appui-react/icons/SvgHeight.d.ts +7 -0
- package/lib/appui-react/icons/SvgHeight.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgHeight.js +17 -0
- package/lib/appui-react/icons/SvgHeight.js.map +1 -0
- package/lib/appui-react/icons/SvgMouseClickLeftDrag.d.ts +7 -0
- package/lib/appui-react/icons/SvgMouseClickLeftDrag.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgMouseClickLeftDrag.js +15 -0
- package/lib/appui-react/icons/SvgMouseClickLeftDrag.js.map +1 -0
- package/lib/appui-react/icons/SvgMouseClickRightDrag.d.ts +7 -0
- package/lib/appui-react/icons/SvgMouseClickRightDrag.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgMouseClickRightDrag.js +15 -0
- package/lib/appui-react/icons/SvgMouseClickRightDrag.js.map +1 -0
- package/lib/appui-react/icons/SvgMouseClickWheelDrag.d.ts +7 -0
- package/lib/appui-react/icons/SvgMouseClickWheelDrag.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgMouseClickWheelDrag.js +15 -0
- package/lib/appui-react/icons/SvgMouseClickWheelDrag.js.map +1 -0
- package/lib/appui-react/icons/SvgTouchCursorPan.d.ts +7 -0
- package/lib/appui-react/icons/SvgTouchCursorPan.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgTouchCursorPan.js +15 -0
- package/lib/appui-react/icons/SvgTouchCursorPan.js.map +1 -0
- package/lib/appui-react/icons/SvgTouchCursorPoint.d.ts +7 -0
- package/lib/appui-react/icons/SvgTouchCursorPoint.d.ts.map +1 -0
- package/lib/appui-react/icons/SvgTouchCursorPoint.js +16 -0
- package/lib/appui-react/icons/SvgTouchCursorPoint.js.map +1 -0
- package/lib/appui-react/layout/StandardLayout.scss +3 -8
- package/lib/appui-react/layout/base/DragManager.d.ts.map +1 -1
- package/lib/appui-react/layout/base/DragManager.js +10 -15
- package/lib/appui-react/layout/base/DragManager.js.map +1 -1
- package/lib/appui-react/layout/state/NineZoneAction.d.ts +1 -0
- package/lib/appui-react/layout/state/NineZoneAction.d.ts.map +1 -1
- package/lib/appui-react/layout/state/NineZoneAction.js.map +1 -1
- package/lib/appui-react/layout/state/NineZoneStateReducer.d.ts.map +1 -1
- package/lib/appui-react/layout/state/NineZoneStateReducer.js +23 -16
- package/lib/appui-react/layout/state/NineZoneStateReducer.js.map +1 -1
- package/lib/appui-react/shared/MenuItem.d.ts +3 -0
- package/lib/appui-react/shared/MenuItem.d.ts.map +1 -1
- package/lib/appui-react/shared/MenuItem.js +2 -3
- package/lib/appui-react/shared/MenuItem.js.map +1 -1
- package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +2 -55
- package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.js +333 -403
- package/lib/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/appui-react/toolbar/Toolbar.d.ts.map +1 -1
- package/lib/appui-react/toolbar/Toolbar.js +4 -3
- package/lib/appui-react/toolbar/Toolbar.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/ActionItem.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/ActionItem.js +3 -0
- package/lib/appui-react/toolbar/new-toolbars/ActionItem.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/GroupItem.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/GroupItem.js +2 -0
- package/lib/appui-react/toolbar/new-toolbars/GroupItem.js.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Toolbar.d.ts +6 -3
- package/lib/appui-react/toolbar/new-toolbars/Toolbar.d.ts.map +1 -1
- package/lib/appui-react/toolbar/new-toolbars/Toolbar.js +4 -3
- package/lib/appui-react/toolbar/new-toolbars/Toolbar.js.map +1 -1
- package/lib/appui-react/utils/InternalUiShowHideManager.d.ts +2 -0
- package/lib/appui-react/utils/InternalUiShowHideManager.d.ts.map +1 -1
- package/lib/appui-react/utils/InternalUiShowHideManager.js +6 -0
- package/lib/appui-react/utils/InternalUiShowHideManager.js.map +1 -1
- package/lib/appui-react/widget-panels/Frontstage.d.ts +7 -2
- package/lib/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/appui-react/widget-panels/Frontstage.js +29 -12
- package/lib/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/appui-react/widgets/BackstageAppButton.scss +8 -3
- package/lib/appui-react.d.ts +1 -1
- package/lib/appui-react.d.ts.map +1 -1
- package/lib/appui-react.js +1 -1
- package/lib/appui-react.js.map +1 -1
- package/lib/cjs/appui-react/cursor/cursorpopup/CursorPopup.scss +3 -0
- package/lib/cjs/appui-react/layout/StandardLayout.scss +3 -8
- package/lib/cjs/appui-react/widgets/BackstageAppButton.scss +8 -3
- package/lib/esm/appui-react/cursor/cursorpopup/CursorPopup.scss +3 -0
- package/lib/esm/appui-react/layout/StandardLayout.scss +3 -8
- package/lib/esm/appui-react/widgets/BackstageAppButton.scss +8 -3
- package/package.json +8 -10
- package/lib/appui-react/accudraw/angle.svg +0 -1
- package/lib/appui-react/accudraw/backspace.svg +0 -9
- package/lib/appui-react/accudraw/constraint-2d.svg +0 -11
- package/lib/appui-react/accudraw/distance.svg +0 -1
- package/lib/appui-react/accudraw/height-2.svg +0 -10
- package/lib/appui-react/accudraw/height.svg +0 -11
- package/lib/appui-react/statusfields/toolassistance/accept-point.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/cursor-click.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/gesture-one-finger-drag.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/gesture-one-finger-tap-double.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/gesture-one-finger-tap.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/gesture-pinch.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/gesture-two-finger-drag.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/gesture-two-finger-tap.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/mouse-click-left-drag.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/mouse-click-left.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/mouse-click-right-drag.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/mouse-click-right.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/mouse-click-wheel-drag.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/mouse-click-wheel.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/touch-cursor-pan.svg +0 -1
- package/lib/appui-react/statusfields/toolassistance/touch-cursor-point.svg +0 -1
- package/lib/cjs/appui-react/accudraw/angle.svg +0 -1
- package/lib/cjs/appui-react/accudraw/backspace.svg +0 -9
- package/lib/cjs/appui-react/accudraw/constraint-2d.svg +0 -11
- package/lib/cjs/appui-react/accudraw/distance.svg +0 -1
- package/lib/cjs/appui-react/accudraw/height-2.svg +0 -10
- package/lib/cjs/appui-react/accudraw/height.svg +0 -11
- package/lib/cjs/appui-react/statusfields/toolassistance/accept-point.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/cursor-click.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-drag.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-tap-double.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-one-finger-tap.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-pinch.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-two-finger-drag.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/gesture-two-finger-tap.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-left-drag.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-left.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-right-drag.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-right.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-wheel-drag.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/mouse-click-wheel.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/touch-cursor-pan.svg +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/touch-cursor-point.svg +0 -1
- package/lib/esm/appui-react/accudraw/angle.svg +0 -1
- package/lib/esm/appui-react/accudraw/backspace.svg +0 -9
- package/lib/esm/appui-react/accudraw/constraint-2d.svg +0 -11
- package/lib/esm/appui-react/accudraw/distance.svg +0 -1
- package/lib/esm/appui-react/accudraw/height-2.svg +0 -10
- package/lib/esm/appui-react/accudraw/height.svg +0 -11
- package/lib/esm/appui-react/statusfields/toolassistance/accept-point.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/cursor-click.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-drag.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-tap-double.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-one-finger-tap.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-pinch.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-two-finger-drag.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/gesture-two-finger-tap.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-left-drag.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-left.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-right-drag.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-right.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-wheel-drag.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/mouse-click-wheel.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/touch-cursor-pan.svg +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/touch-cursor-point.svg +0 -1
|
@@ -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 type { ListenerType } from \"@itwin/core-react/internal\";\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\";\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. */\ninterface CursorPopupInfo {\n id: string;\n content: React.ReactNode;\n relativePosition: RelativePosition;\n offset: Point;\n priority: number;\n options?: CursorPopupOptions;\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._emitPopupsChangedEvent();\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 _emitPopupsChangedEvent(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.emit({});\n }\n\n private static pushPopup(popupInfo: CursorPopupInfo): void {\n CursorPopupManager._popups.push(popupInfo);\n CursorPopupManager._emitPopupsChangedEvent();\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 ) {\n const popupInfo = CursorPopupManager._popups.find(\n (info: CursorPopupInfo) => id === info.id\n );\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 CursorPopupManager.updatePosition(pt);\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 };\n CursorPopupManager.pushPopup(newPopupInfo);\n CursorPopupManager.updatePosition(pt);\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 ) {\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 } 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) {\n CursorPopupManager.resetPopupsRenderRelativePosition(Point.create(pt));\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._emitPopupsChangedEvent();\n }\n }\n\n private static resetPopupsRenderRelativePosition(pt: Point) {\n CursorPopupManager.popups.forEach((popupInfo: CursorPopupInfo) => {\n popupInfo.renderRelativePosition = popupInfo.relativePosition;\n\n const flipped = CursorPopupManager.validateRenderRelativePosition(\n pt,\n popupInfo\n );\n\n // If flipped, call again to validate again.\n if (flipped) {\n CursorPopupManager.validateRenderRelativePosition(pt, popupInfo);\n }\n });\n }\n\n private static validateRenderRelativePosition(\n pt: Point,\n popupInfo: CursorPopupInfo\n ): boolean {\n const popupRect = CursorPopup.getPopupRect(\n pt,\n Point.create(popupInfo.offset),\n popupInfo.popupSize,\n popupInfo.renderRelativePosition\n );\n const { outPos, flipped } = CursorPopupManager.autoFlip(\n popupInfo.renderRelativePosition,\n popupRect,\n window.innerWidth,\n window.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\n/** State for the [[CursorPopupRenderer]] React component */\ninterface CursorPopupRendererState {\n pt: Point;\n}\n\n/** CursorPopupRenderer React component.\n * @public\n */\nexport class CursorPopupRenderer extends React.Component<\n any,\n CursorPopupRendererState\n> {\n constructor(props: any) {\n super(props);\n\n this.state = {\n pt: new Point(),\n };\n }\n\n public override render(): React.ReactNode {\n if (CursorPopupManager.popupCount <= 0) return null;\n\n return <>{this.renderPositions()}</>;\n }\n\n private _handleSizeKnown(popupInfo: CursorPopupInfo, size: SizeProps) {\n popupInfo.popupSize = size;\n }\n\n private renderPositions(): React.ReactNode[] {\n const positions = new Array<React.ReactNode>();\n let renderedPosition: React.ReactNode;\n const begin = RelativePosition.Left;\n const end = RelativePosition.BottomRight;\n\n for (let position = begin; position <= end; position++) {\n renderedPosition = this.renderRelativePosition(position);\n if (renderedPosition) positions.push(renderedPosition);\n }\n\n return positions;\n }\n\n private renderRelativePosition(\n relativePosition: RelativePosition\n ): React.ReactNode {\n const filteredInfo = CursorPopupManager.popups.filter(\n (popupInfo: CursorPopupInfo) =>\n popupInfo.renderRelativePosition === relativePosition\n );\n\n if (filteredInfo.length > 0) {\n let totalDimension = 0;\n const ascending =\n relativePosition === RelativePosition.Right ||\n relativePosition === RelativePosition.BottomRight ||\n relativePosition === RelativePosition.Bottom ||\n relativePosition === RelativePosition.BottomLeft;\n\n const positionPopups = filteredInfo\n .sort((a: CursorPopupInfo, b: CursorPopupInfo): number =>\n ascending ? a.priority - b.priority : b.priority - a.priority\n )\n .map((popupInfo: CursorPopupInfo, index: number) => {\n const title =\n popupInfo.options !== undefined ? popupInfo.options.title : \"\";\n const shadow =\n popupInfo.options !== undefined ? popupInfo.options.shadow : false;\n let offset = popupInfo.offset;\n\n if (index > 0)\n offset = this.adjustOffset(\n offset,\n popupInfo.renderRelativePosition,\n totalDimension\n );\n\n if (popupInfo.popupSize)\n totalDimension += this.getDimension(\n popupInfo.popupSize,\n relativePosition\n );\n\n return (\n <CursorPopup\n key={popupInfo.id}\n id={popupInfo.id}\n content={popupInfo.content}\n pt={this.state.pt}\n offset={offset}\n relativePosition={popupInfo.renderRelativePosition}\n title={title}\n shadow={shadow}\n onSizeKnown={(size: SizeProps) =>\n this._handleSizeKnown(popupInfo, size)\n }\n />\n );\n });\n\n return (\n <React.Fragment key={relativePosition.toString()}>\n {positionPopups}\n </React.Fragment>\n );\n }\n\n return null;\n }\n\n private getDimension(\n popupSize: SizeProps,\n relativePosition: RelativePosition\n ): number {\n let dimension = 0;\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 dimension = popupSize.height;\n break;\n case RelativePosition.Left:\n case RelativePosition.Right:\n dimension = popupSize.width;\n break;\n }\n\n return dimension;\n }\n\n private adjustOffset(\n offset: Point,\n relativePosition: RelativePosition,\n dimension: number\n ): Point {\n let outOffset = Point.create(offset.toProps());\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 outOffset = Point.create({ x: offset.x, y: offset.y + dimension });\n break;\n case RelativePosition.Left:\n case RelativePosition.Right:\n outOffset = Point.create({ x: offset.x + dimension, y: offset.y });\n break;\n }\n\n return outOffset;\n }\n\n public override componentDidMount(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.addListener(\n this._handlePopupChangedEvent\n );\n CursorPopupManager.onCursorPopupUpdatePositionEvent.addListener(\n this._handleCursorPopupUpdatePositionEvent\n );\n }\n\n public override componentWillUnmount(): void {\n CursorPopupManager.onCursorPopupsChangedEvent.removeListener(\n this._handlePopupChangedEvent\n );\n CursorPopupManager.onCursorPopupUpdatePositionEvent.removeListener(\n this._handleCursorPopupUpdatePositionEvent\n );\n }\n\n private _handlePopupChangedEvent: ListenerType<\n typeof CursorPopupManager.onCursorPopupsChangedEvent\n > = () => {\n this.forceUpdate();\n };\n\n private _handleCursorPopupUpdatePositionEvent: ListenerType<\n typeof CursorPopupManager.onCursorPopupUpdatePositionEvent\n > = (args) => {\n this.setState({ pt: Point.create(args.pt) });\n };\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 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"]}
|
|
@@ -2,20 +2,17 @@
|
|
|
2
2
|
* @module Notification
|
|
3
3
|
*/
|
|
4
4
|
import "./CursorPrompt.scss";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
fadeout: boolean;
|
|
13
|
-
iconSpec: string;
|
|
14
|
-
instruction: string;
|
|
15
|
-
promptAtContent: boolean;
|
|
16
|
-
}): void;
|
|
17
|
-
close(fadeout: boolean): void;
|
|
18
|
-
private show;
|
|
19
|
-
private hide;
|
|
5
|
+
interface UseCursorPromptArgs {
|
|
6
|
+
show: boolean;
|
|
7
|
+
timeout: number;
|
|
8
|
+
iconSpec: string;
|
|
9
|
+
instruction: string | undefined;
|
|
10
|
+
fadeOut: boolean;
|
|
11
|
+
promptAtContent: boolean;
|
|
20
12
|
}
|
|
13
|
+
/** @internal */
|
|
14
|
+
export declare function useCursorPrompt(args: UseCursorPromptArgs): {
|
|
15
|
+
open: () => void;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
21
18
|
//# sourceMappingURL=CursorPrompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CursorPrompt.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/cursor/cursorprompt/CursorPrompt.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"CursorPrompt.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/cursor/cursorprompt/CursorPrompt.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAe7B,UAAU,mBAAmB;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAKD,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB;;EA+FxD"}
|
|
@@ -8,64 +8,101 @@
|
|
|
8
8
|
import "./CursorPrompt.scss";
|
|
9
9
|
import * as React from "react";
|
|
10
10
|
import { RelativePosition } from "@itwin/appui-abstract";
|
|
11
|
+
import { Logger } from "@itwin/core-bentley";
|
|
11
12
|
import { Icon, Timer } from "@itwin/core-react";
|
|
12
13
|
import { Point } from "@itwin/core-react/internal";
|
|
13
14
|
import { Text } from "@itwin/itwinui-react";
|
|
14
15
|
import { CursorInformation, useCursorInformationStore, } from "../CursorInformation.js";
|
|
15
16
|
import { CursorPopupManager } from "../cursorpopup/CursorPopupManager.js";
|
|
17
|
+
import { UiFramework } from "../../UiFramework.js";
|
|
18
|
+
import { useDraggedItem } from "../../layout/base/DragManager.js";
|
|
19
|
+
const popupId = "cursor-prompt";
|
|
20
|
+
const getCategory = () => UiFramework.loggerCategory("useCursorPrompt");
|
|
16
21
|
/** @internal */
|
|
17
|
-
export
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
});
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
this.hide(fadeout);
|
|
38
|
-
}),
|
|
39
|
-
];
|
|
40
|
-
this._removeListeners = () => {
|
|
41
|
-
listeners.forEach((remove) => remove());
|
|
42
|
-
};
|
|
22
|
+
export function useCursorPrompt(args) {
|
|
23
|
+
const { show, timeout, instruction, iconSpec, promptAtContent } = args;
|
|
24
|
+
const lastArgsRef = React.useRef(args);
|
|
25
|
+
React.useEffect(() => {
|
|
26
|
+
lastArgsRef.current = args;
|
|
27
|
+
}, [args]);
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
29
|
+
const timerRef = React.useRef();
|
|
30
|
+
const [isOpen, setIsOpen] = React.useState(false);
|
|
31
|
+
const dragged = !!useDraggedItem();
|
|
32
|
+
// Workaround to make sure the prompt is not shown when dragging a widget.
|
|
33
|
+
const [draggedRecently, setDraggedRecently] = React.useState(false);
|
|
34
|
+
React.useEffect(() => {
|
|
35
|
+
if (dragged) {
|
|
36
|
+
Logger.logTrace(getCategory(), "dragged recently");
|
|
37
|
+
setDraggedRecently(true);
|
|
38
|
+
return;
|
|
43
39
|
}
|
|
44
|
-
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
41
|
+
const timer = new Timer(250);
|
|
42
|
+
timer.setOnExecute(() => {
|
|
43
|
+
Logger.logTrace(getCategory(), "reset dragged recently");
|
|
44
|
+
setDraggedRecently(false);
|
|
45
|
+
});
|
|
46
|
+
timer.start();
|
|
47
|
+
return () => {
|
|
48
|
+
timer.stop();
|
|
49
|
+
};
|
|
50
|
+
}, [dragged]);
|
|
51
|
+
const contentHovered = useCursorInformationStore((state) => state.contentHovered);
|
|
52
|
+
const shouldOpen = React.useMemo(() => {
|
|
53
|
+
if (!show)
|
|
54
|
+
return false;
|
|
55
|
+
if (!isOpen)
|
|
56
|
+
return false;
|
|
57
|
+
if (promptAtContent && (dragged || draggedRecently))
|
|
58
|
+
return false;
|
|
59
|
+
if (promptAtContent && !contentHovered)
|
|
60
|
+
return false;
|
|
61
|
+
return true;
|
|
62
|
+
}, [show, isOpen, dragged, draggedRecently, promptAtContent, contentHovered]);
|
|
63
|
+
React.useEffect(() => {
|
|
45
64
|
if (timeout === Number.POSITIVE_INFINITY)
|
|
46
65
|
return;
|
|
47
66
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
48
67
|
const timer = new Timer(timeout);
|
|
49
|
-
timer.setOnExecute(() =>
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
CursorPopupManager.open(
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
68
|
+
timer.setOnExecute(() => {
|
|
69
|
+
Logger.logTrace(getCategory(), "timer expired");
|
|
70
|
+
setIsOpen(false);
|
|
71
|
+
});
|
|
72
|
+
timer.delay = timeout;
|
|
73
|
+
timerRef.current = timer;
|
|
74
|
+
return () => {
|
|
75
|
+
timer.stop();
|
|
76
|
+
};
|
|
77
|
+
}, [timeout]);
|
|
78
|
+
React.useEffect(() => {
|
|
79
|
+
if (!shouldOpen)
|
|
80
|
+
return;
|
|
81
|
+
if (!instruction)
|
|
82
|
+
return;
|
|
83
|
+
Logger.logTrace(getCategory(), "open");
|
|
84
|
+
CursorPopupManager.open(popupId, React.createElement(CursorPrompt, { iconSpec: iconSpec, instruction: instruction }), CursorInformation.cursorPosition, new Point(20, 20), RelativePosition.BottomRight, 0, { shadow: true }, CursorInformation.cursorDocument);
|
|
85
|
+
return () => {
|
|
86
|
+
Logger.logTrace(getCategory(), "close");
|
|
87
|
+
CursorPopupManager.close(popupId, false, lastArgsRef.current.fadeOut);
|
|
88
|
+
};
|
|
89
|
+
}, [shouldOpen, instruction, iconSpec]);
|
|
90
|
+
React.useEffect(() => {
|
|
91
|
+
return CursorInformation.onCursorUpdatedEvent.addListener((args) => {
|
|
92
|
+
CursorPopupManager.updatePosition(args.newPt, CursorInformation.cursorDocument);
|
|
93
|
+
});
|
|
94
|
+
}, []);
|
|
95
|
+
const open = React.useCallback(() => {
|
|
96
|
+
Logger.logTrace(getCategory(), "request open");
|
|
97
|
+
setIsOpen(true);
|
|
98
|
+
timerRef.current?.start();
|
|
99
|
+
}, []);
|
|
100
|
+
return { open };
|
|
101
|
+
}
|
|
102
|
+
function CursorPrompt({ iconSpec, instruction, }) {
|
|
103
|
+
return (React.createElement("div", { className: "uifw-cursor-prompt" },
|
|
104
|
+
iconSpec && (React.createElement("span", { className: "uifw-cursor-prompt-icon" },
|
|
105
|
+
React.createElement(Icon, { iconSpec: iconSpec }))),
|
|
106
|
+
React.createElement(Text, { variant: "body", className: "uifw-cursor-prompt-text" }, instruction)));
|
|
70
107
|
}
|
|
71
108
|
//# sourceMappingURL=CursorPrompt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CursorPrompt.js","sourceRoot":"","sources":["../../../../src/appui-react/cursor/cursorprompt/CursorPrompt.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,qBAAqB,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"CursorPrompt.js","sourceRoot":"","sources":["../../../../src/appui-react/cursor/cursorprompt/CursorPrompt.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Notification\n */\n\nimport \"./CursorPrompt.scss\";\nimport * as React from \"react\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport { Logger } from \"@itwin/core-bentley\";\nimport { Icon, Timer } from \"@itwin/core-react\";\nimport { Point } from \"@itwin/core-react/internal\";\nimport { Text } from \"@itwin/itwinui-react\";\nimport {\n CursorInformation,\n useCursorInformationStore,\n} from \"../CursorInformation.js\";\nimport { CursorPopupManager } from \"../cursorpopup/CursorPopupManager.js\";\nimport { UiFramework } from \"../../UiFramework.js\";\nimport { useDraggedItem } from \"../../layout/base/DragManager.js\";\n\ninterface UseCursorPromptArgs {\n show: boolean;\n timeout: number;\n iconSpec: string;\n instruction: string | undefined;\n fadeOut: boolean;\n promptAtContent: boolean;\n}\n\nconst popupId = \"cursor-prompt\";\nconst getCategory = () => UiFramework.loggerCategory(\"useCursorPrompt\");\n\n/** @internal */\nexport function useCursorPrompt(args: UseCursorPromptArgs) {\n const { show, timeout, instruction, iconSpec, promptAtContent } = args;\n const lastArgsRef = React.useRef(args);\n React.useEffect(() => {\n lastArgsRef.current = args;\n }, [args]);\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const timerRef = React.useRef<Timer | undefined>();\n const [isOpen, setIsOpen] = React.useState(false);\n\n const dragged = !!useDraggedItem();\n // Workaround to make sure the prompt is not shown when dragging a widget.\n const [draggedRecently, setDraggedRecently] = React.useState(false);\n React.useEffect(() => {\n if (dragged) {\n Logger.logTrace(getCategory(), \"dragged recently\");\n setDraggedRecently(true);\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const timer = new Timer(250);\n timer.setOnExecute(() => {\n Logger.logTrace(getCategory(), \"reset dragged recently\");\n setDraggedRecently(false);\n });\n timer.start();\n return () => {\n timer.stop();\n };\n }, [dragged]);\n\n const contentHovered = useCursorInformationStore(\n (state) => state.contentHovered\n );\n const shouldOpen = React.useMemo(() => {\n if (!show) return false;\n if (!isOpen) return false;\n if (promptAtContent && (dragged || draggedRecently)) return false;\n if (promptAtContent && !contentHovered) return false;\n return true;\n }, [show, isOpen, dragged, draggedRecently, promptAtContent, contentHovered]);\n\n React.useEffect(() => {\n if (timeout === Number.POSITIVE_INFINITY) return;\n\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n const timer = new Timer(timeout);\n timer.setOnExecute(() => {\n Logger.logTrace(getCategory(), \"timer expired\");\n setIsOpen(false);\n });\n timer.delay = timeout;\n timerRef.current = timer;\n return () => {\n timer.stop();\n };\n }, [timeout]);\n React.useEffect(() => {\n if (!shouldOpen) return;\n if (!instruction) return;\n\n Logger.logTrace(getCategory(), \"open\");\n CursorPopupManager.open(\n popupId,\n <CursorPrompt iconSpec={iconSpec} instruction={instruction} />,\n CursorInformation.cursorPosition,\n new Point(20, 20),\n RelativePosition.BottomRight,\n 0,\n { shadow: true },\n CursorInformation.cursorDocument\n );\n return () => {\n Logger.logTrace(getCategory(), \"close\");\n CursorPopupManager.close(popupId, false, lastArgsRef.current.fadeOut);\n };\n }, [shouldOpen, instruction, iconSpec]);\n React.useEffect(() => {\n return CursorInformation.onCursorUpdatedEvent.addListener((args) => {\n CursorPopupManager.updatePosition(\n args.newPt,\n CursorInformation.cursorDocument\n );\n });\n }, []);\n\n const open = React.useCallback(() => {\n Logger.logTrace(getCategory(), \"request open\");\n setIsOpen(true);\n timerRef.current?.start();\n }, []);\n\n return { open };\n}\n\nfunction CursorPrompt({\n iconSpec,\n instruction,\n}: {\n iconSpec: string;\n instruction: string;\n}) {\n return (\n <div className=\"uifw-cursor-prompt\">\n {iconSpec && (\n <span className=\"uifw-cursor-prompt-icon\">\n {/* eslint-disable-next-line @typescript-eslint/no-deprecated */}\n <Icon iconSpec={iconSpec} />\n </span>\n )}\n <Text variant=\"body\" className=\"uifw-cursor-prompt-text\">\n {instruction}\n </Text>\n </div>\n );\n}\n"]}
|
|
@@ -314,4 +314,51 @@ export interface FrameworkFrontstages {
|
|
|
314
314
|
*/
|
|
315
315
|
readonly nestedFrontstageCount: number;
|
|
316
316
|
}
|
|
317
|
+
/** @alpha */
|
|
318
|
+
export declare class DefaultFrameworkFrontstages implements FrameworkFrontstages {
|
|
319
|
+
get isLoading(): boolean;
|
|
320
|
+
get onFrontstageDeactivatedEvent(): import("@itwin/core-bentley").BeUiEvent<FrontstageDeactivatedEventArgs>;
|
|
321
|
+
get onFrontstageActivatedEvent(): import("@itwin/core-bentley").BeUiEvent<FrontstageActivatedEventArgs>;
|
|
322
|
+
get onFrontstageReadyEvent(): import("@itwin/core-bentley").BeUiEvent<FrontstageReadyEventArgs>;
|
|
323
|
+
get onModalFrontstageChangedEvent(): import("@itwin/core-bentley").BeUiEvent<ModalFrontstageChangedEventArgs>;
|
|
324
|
+
get onModalFrontstageClosedEvent(): import("@itwin/core-bentley").BeUiEvent<ModalFrontstageClosedEventArgs>;
|
|
325
|
+
get onCloseModalFrontstageRequestedEvent(): import("@itwin/core-bentley").BeUiEvent<ModalFrontstageRequestedCloseEventArgs>;
|
|
326
|
+
get onToolActivatedEvent(): import("@itwin/core-bentley").BeUiEvent<ToolActivatedEventArgs>;
|
|
327
|
+
get onToolSettingsReloadEvent(): import("@itwin/core-bentley").BeUiEvent<void>;
|
|
328
|
+
get onToolIconChangedEvent(): import("@itwin/core-bentley").BeUiEvent<ToolIconChangedEventArgs>;
|
|
329
|
+
get onContentLayoutActivatedEvent(): import("@itwin/core-bentley").BeUiEvent<import("../content/ContentLayout.js").ContentLayoutActivatedEventArgs>;
|
|
330
|
+
get onContentControlActivatedEvent(): import("@itwin/core-bentley").BeUiEvent<import("../content/ContentControl.js").ContentControlActivatedEventArgs>;
|
|
331
|
+
get onNavigationAidActivatedEvent(): import("@itwin/core-bentley").BeUiEvent<import("../navigationaids/NavigationAidControl.js").NavigationAidActivatedEventArgs>;
|
|
332
|
+
get onWidgetStateChangedEvent(): import("@itwin/core-bentley").BeUiEvent<import("../widgets/WidgetDef.js").WidgetStateChangedEventArgs>;
|
|
333
|
+
get onPanelStateChangedEvent(): import("@itwin/core-bentley").BeUiEvent<import("../stagepanels/StagePanelDef.js").PanelStateChangedEventArgs>;
|
|
334
|
+
get onPanelPinnedChangedEvent(): import("@itwin/core-bentley").BeUiEvent<PanelPinnedChangedEventArgs>;
|
|
335
|
+
get activeFrontstageDef(): FrontstageDef | undefined;
|
|
336
|
+
get activeFrontstageId(): string;
|
|
337
|
+
get activeToolId(): string;
|
|
338
|
+
get activeToolInformation(): ToolInformation | undefined;
|
|
339
|
+
get activeModalFrontstage(): ModalFrontstageInfo | undefined;
|
|
340
|
+
get modalFrontstageCount(): number;
|
|
341
|
+
get activeNestedFrontstage(): FrontstageDef | undefined;
|
|
342
|
+
get nestedFrontstageCount(): number;
|
|
343
|
+
clearFrontstageDefs(...args: Parameters<FrameworkFrontstages["clearFrontstageDefs"]>): void;
|
|
344
|
+
clearFrontstageProviders(...args: Parameters<FrameworkFrontstages["clearFrontstageProviders"]>): void;
|
|
345
|
+
clearFrontstages(...args: Parameters<FrameworkFrontstages["clearFrontstages"]>): void;
|
|
346
|
+
addFrontstageProvider(...args: Parameters<FrameworkFrontstages["addFrontstageProvider"]>): void;
|
|
347
|
+
addFrontstage(...args: Parameters<FrameworkFrontstages["addFrontstage"]>): void;
|
|
348
|
+
getFrontstageDef(...args: Parameters<FrameworkFrontstages["getFrontstageDef"]>): Promise<FrontstageDef | undefined>;
|
|
349
|
+
hasFrontstage(...args: Parameters<FrameworkFrontstages["hasFrontstage"]>): boolean;
|
|
350
|
+
setActiveFrontstage(...args: Parameters<FrameworkFrontstages["setActiveFrontstage"]>): Promise<void>;
|
|
351
|
+
setActiveFrontstageDef(...args: Parameters<FrameworkFrontstages["setActiveFrontstageDef"]>): Promise<void>;
|
|
352
|
+
deactivateFrontstageDef(...args: Parameters<FrameworkFrontstages["deactivateFrontstageDef"]>): Promise<void>;
|
|
353
|
+
setActiveToolId(...args: Parameters<FrameworkFrontstages["setActiveToolId"]>): void;
|
|
354
|
+
setActiveTool(...args: Parameters<FrameworkFrontstages["setActiveTool"]>): void;
|
|
355
|
+
openModalFrontstage(...args: Parameters<FrameworkFrontstages["openModalFrontstage"]>): void;
|
|
356
|
+
closeModalFrontstage(...args: Parameters<FrameworkFrontstages["closeModalFrontstage"]>): void;
|
|
357
|
+
updateModalFrontstage(...args: Parameters<FrameworkFrontstages["updateModalFrontstage"]>): void;
|
|
358
|
+
setActiveNavigationAid(...args: Parameters<FrameworkFrontstages["setActiveNavigationAid"]>): void;
|
|
359
|
+
setWidgetState(...args: Parameters<FrameworkFrontstages["setWidgetState"]>): boolean;
|
|
360
|
+
findWidget(...args: Parameters<FrameworkFrontstages["findWidget"]>): WidgetDef | undefined;
|
|
361
|
+
openNestedFrontstage(...args: Parameters<FrameworkFrontstages["openNestedFrontstage"]>): Promise<void>;
|
|
362
|
+
closeNestedFrontstage(...args: Parameters<FrameworkFrontstages["closeNestedFrontstage"]>): Promise<void>;
|
|
363
|
+
}
|
|
317
364
|
//# sourceMappingURL=FrameworkFrontstages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FrameworkFrontstages.d.ts","sourceRoot":"","sources":["../../../src/appui-react/framework/FrameworkFrontstages.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AACjF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,KAAK,EACV,2BAA2B,EAC3B,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EACV,SAAS,EACT,uBAAuB,EACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"FrameworkFrontstages.d.ts","sourceRoot":"","sources":["../../../src/appui-react/framework/FrameworkFrontstages.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
* @module Frontstage
|
|
7
7
|
*/
|
|
8
8
|
import { UiEvent } from "@itwin/appui-abstract";
|
|
9
|
+
import { InternalFrontstageManager } from "../frontstage/InternalFrontstageManager.js";
|
|
9
10
|
/** Frontstage Activated Event class.
|
|
10
11
|
* @public
|
|
11
12
|
* @deprecated in 4.13.0. This class should not be used by applications to instantiate objects.
|
|
@@ -66,4 +67,139 @@ export class ToolActivatedEvent extends UiEvent {
|
|
|
66
67
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
67
68
|
export class ToolIconChangedEvent extends UiEvent {
|
|
68
69
|
}
|
|
70
|
+
/** @alpha */
|
|
71
|
+
export class DefaultFrameworkFrontstages {
|
|
72
|
+
get isLoading() {
|
|
73
|
+
return InternalFrontstageManager.isLoading;
|
|
74
|
+
}
|
|
75
|
+
get onFrontstageDeactivatedEvent() {
|
|
76
|
+
return InternalFrontstageManager.onFrontstageDeactivatedEvent;
|
|
77
|
+
}
|
|
78
|
+
get onFrontstageActivatedEvent() {
|
|
79
|
+
return InternalFrontstageManager.onFrontstageActivatedEvent;
|
|
80
|
+
}
|
|
81
|
+
get onFrontstageReadyEvent() {
|
|
82
|
+
return InternalFrontstageManager.onFrontstageReadyEvent;
|
|
83
|
+
}
|
|
84
|
+
get onModalFrontstageChangedEvent() {
|
|
85
|
+
return InternalFrontstageManager.onModalFrontstageChangedEvent;
|
|
86
|
+
}
|
|
87
|
+
get onModalFrontstageClosedEvent() {
|
|
88
|
+
return InternalFrontstageManager.onModalFrontstageClosedEvent;
|
|
89
|
+
}
|
|
90
|
+
get onCloseModalFrontstageRequestedEvent() {
|
|
91
|
+
return InternalFrontstageManager.onCloseModalFrontstageRequestedEvent;
|
|
92
|
+
}
|
|
93
|
+
get onToolActivatedEvent() {
|
|
94
|
+
return InternalFrontstageManager.onToolActivatedEvent;
|
|
95
|
+
}
|
|
96
|
+
get onToolSettingsReloadEvent() {
|
|
97
|
+
return InternalFrontstageManager.onToolSettingsReloadEvent;
|
|
98
|
+
}
|
|
99
|
+
get onToolIconChangedEvent() {
|
|
100
|
+
return InternalFrontstageManager.onToolIconChangedEvent;
|
|
101
|
+
}
|
|
102
|
+
get onContentLayoutActivatedEvent() {
|
|
103
|
+
return InternalFrontstageManager.onContentLayoutActivatedEvent;
|
|
104
|
+
}
|
|
105
|
+
get onContentControlActivatedEvent() {
|
|
106
|
+
return InternalFrontstageManager.onContentControlActivatedEvent;
|
|
107
|
+
}
|
|
108
|
+
get onNavigationAidActivatedEvent() {
|
|
109
|
+
return InternalFrontstageManager.onNavigationAidActivatedEvent;
|
|
110
|
+
}
|
|
111
|
+
get onWidgetStateChangedEvent() {
|
|
112
|
+
return InternalFrontstageManager.onWidgetStateChangedEvent;
|
|
113
|
+
}
|
|
114
|
+
get onPanelStateChangedEvent() {
|
|
115
|
+
return InternalFrontstageManager.onPanelStateChangedEvent;
|
|
116
|
+
}
|
|
117
|
+
get onPanelPinnedChangedEvent() {
|
|
118
|
+
return InternalFrontstageManager.onPanelPinnedChangedEvent;
|
|
119
|
+
}
|
|
120
|
+
get activeFrontstageDef() {
|
|
121
|
+
return InternalFrontstageManager.activeFrontstageDef;
|
|
122
|
+
}
|
|
123
|
+
get activeFrontstageId() {
|
|
124
|
+
return InternalFrontstageManager.activeFrontstageId;
|
|
125
|
+
}
|
|
126
|
+
get activeToolId() {
|
|
127
|
+
return InternalFrontstageManager.activeToolId;
|
|
128
|
+
}
|
|
129
|
+
get activeToolInformation() {
|
|
130
|
+
return InternalFrontstageManager.activeToolInformation;
|
|
131
|
+
}
|
|
132
|
+
get activeModalFrontstage() {
|
|
133
|
+
return InternalFrontstageManager.activeModalFrontstage;
|
|
134
|
+
}
|
|
135
|
+
get modalFrontstageCount() {
|
|
136
|
+
return InternalFrontstageManager.modalFrontstageCount;
|
|
137
|
+
}
|
|
138
|
+
get activeNestedFrontstage() {
|
|
139
|
+
return InternalFrontstageManager.activeNestedFrontstage;
|
|
140
|
+
}
|
|
141
|
+
get nestedFrontstageCount() {
|
|
142
|
+
return InternalFrontstageManager.nestedFrontstageCount;
|
|
143
|
+
}
|
|
144
|
+
clearFrontstageDefs(...args) {
|
|
145
|
+
return InternalFrontstageManager.clearFrontstageDefs(...args);
|
|
146
|
+
}
|
|
147
|
+
clearFrontstageProviders(...args) {
|
|
148
|
+
return InternalFrontstageManager.clearFrontstageProviders(...args);
|
|
149
|
+
}
|
|
150
|
+
clearFrontstages(...args) {
|
|
151
|
+
return InternalFrontstageManager.clearFrontstages(...args);
|
|
152
|
+
}
|
|
153
|
+
addFrontstageProvider(...args) {
|
|
154
|
+
return InternalFrontstageManager.addFrontstageProvider(...args);
|
|
155
|
+
}
|
|
156
|
+
addFrontstage(...args) {
|
|
157
|
+
return InternalFrontstageManager.addFrontstage(...args);
|
|
158
|
+
}
|
|
159
|
+
async getFrontstageDef(...args) {
|
|
160
|
+
return InternalFrontstageManager.getFrontstageDef(...args);
|
|
161
|
+
}
|
|
162
|
+
hasFrontstage(...args) {
|
|
163
|
+
return InternalFrontstageManager.hasFrontstage(...args);
|
|
164
|
+
}
|
|
165
|
+
async setActiveFrontstage(...args) {
|
|
166
|
+
return InternalFrontstageManager.setActiveFrontstage(...args);
|
|
167
|
+
}
|
|
168
|
+
async setActiveFrontstageDef(...args) {
|
|
169
|
+
return InternalFrontstageManager.setActiveFrontstageDef(...args);
|
|
170
|
+
}
|
|
171
|
+
async deactivateFrontstageDef(...args) {
|
|
172
|
+
return InternalFrontstageManager.deactivateFrontstageDef(...args);
|
|
173
|
+
}
|
|
174
|
+
setActiveToolId(...args) {
|
|
175
|
+
return InternalFrontstageManager.setActiveToolId(...args);
|
|
176
|
+
}
|
|
177
|
+
setActiveTool(...args) {
|
|
178
|
+
return InternalFrontstageManager.setActiveTool(...args);
|
|
179
|
+
}
|
|
180
|
+
openModalFrontstage(...args) {
|
|
181
|
+
return InternalFrontstageManager.openModalFrontstage(...args);
|
|
182
|
+
}
|
|
183
|
+
closeModalFrontstage(...args) {
|
|
184
|
+
return InternalFrontstageManager.closeModalFrontstage(...args);
|
|
185
|
+
}
|
|
186
|
+
updateModalFrontstage(...args) {
|
|
187
|
+
return InternalFrontstageManager.updateModalFrontstage(...args);
|
|
188
|
+
}
|
|
189
|
+
setActiveNavigationAid(...args) {
|
|
190
|
+
return InternalFrontstageManager.setActiveNavigationAid(...args);
|
|
191
|
+
}
|
|
192
|
+
setWidgetState(...args) {
|
|
193
|
+
return InternalFrontstageManager.setWidgetState(...args);
|
|
194
|
+
}
|
|
195
|
+
findWidget(...args) {
|
|
196
|
+
return InternalFrontstageManager.findWidget(...args);
|
|
197
|
+
}
|
|
198
|
+
async openNestedFrontstage(...args) {
|
|
199
|
+
return InternalFrontstageManager.openNestedFrontstage(...args);
|
|
200
|
+
}
|
|
201
|
+
async closeNestedFrontstage(...args) {
|
|
202
|
+
return InternalFrontstageManager.closeNestedFrontstage(...args);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
69
205
|
//# sourceMappingURL=FrameworkFrontstages.js.map
|