@itwin/appui-react 3.5.0-dev.49 → 3.5.0-dev.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +0 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +13 -11
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
- package/lib/cjs/appui-react/utils/UiShowHideManager.js +8 -0
- package/lib/cjs/appui-react/utils/UiShowHideManager.js.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/cjs/appui-react/widget-panels/Frontstage.js +25 -19
- package/lib/cjs/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts +0 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +15 -13
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/utils/UiShowHideManager.d.ts.map +1 -1
- package/lib/esm/appui-react/utils/UiShowHideManager.js +8 -0
- package/lib/esm/appui-react/utils/UiShowHideManager.js.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.d.ts.map +1 -1
- package/lib/esm/appui-react/widget-panels/Frontstage.js +25 -19
- package/lib/esm/appui-react/widget-panels/Frontstage.js.map +1 -1
- package/package.json +32 -32
|
@@ -86,7 +86,6 @@ export declare class ToolAssistanceField extends React.Component<ToolAssistanceF
|
|
|
86
86
|
private _handleOutsideClick;
|
|
87
87
|
private _handleToolAssistanceIndicatorClick;
|
|
88
88
|
private _handlePinButtonClick;
|
|
89
|
-
private _handleCloseButtonClick;
|
|
90
89
|
private setOpenWidget;
|
|
91
90
|
/** @internal */
|
|
92
91
|
static getInstructionImage(instruction: ToolAssistanceInstruction): React.ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolAssistanceField.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,4BAA4B,CAAC;AAEpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EACsD,yBAAyB,EAAE,0BAA0B,EAEjH,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACwD,cAAc,EAC5E,MAAM,mBAAmB,CAAC;AAY3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"ToolAssistanceField.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,7 @@ const mouse_click_wheel_drag_svg_1 = require("./mouse-click-wheel-drag.svg");
|
|
|
39
39
|
const mouse_click_wheel_svg_1 = require("./mouse-click-wheel.svg");
|
|
40
40
|
const touch_cursor_pan_svg_1 = require("./touch-cursor-pan.svg");
|
|
41
41
|
const touch_cursor_point_svg_1 = require("./touch-cursor-point.svg");
|
|
42
|
+
const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
|
|
42
43
|
/** Tool Assistance Field React component.
|
|
43
44
|
* @public
|
|
44
45
|
*/
|
|
@@ -144,11 +145,15 @@ class ToolAssistanceField extends React.Component {
|
|
|
144
145
|
};
|
|
145
146
|
this._handlePinButtonClick = () => {
|
|
146
147
|
// istanbul ignore else
|
|
147
|
-
if (this._isMounted)
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
if (this._isMounted) {
|
|
149
|
+
const isPinned = !this.state.isPinned;
|
|
150
|
+
this.setState({
|
|
151
|
+
isPinned,
|
|
152
|
+
});
|
|
153
|
+
if (!isPinned) {
|
|
154
|
+
this._handleClose();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
152
157
|
};
|
|
153
158
|
const instance = this.constructor;
|
|
154
159
|
this._className = instance.name;
|
|
@@ -281,12 +286,9 @@ class ToolAssistanceField extends React.Component {
|
|
|
281
286
|
, { icons: React.createElement(React.Fragment, null, toolIcon), indicatorRef: this._indicator, className: (0, classnames_1.default)("uifw-statusFields-toolassistance", this.props.className), style: this.props.style, isInFooterMode: (_a = this.props.isInFooterMode) !== null && _a !== void 0 ? _a : true, onClick: this._handleToolAssistanceIndicatorClick, title: tooltip }, ((_b = this.props.isInFooterMode) !== null && _b !== void 0 ? _b : true) ? prompt : undefined)),
|
|
282
287
|
React.createElement(appui_layout_react_1.FooterPopup, { isOpen: ((_c = this.props.openWidget) !== null && _c !== void 0 ? _c : this.state.openWidget) === this._className, onClose: this._handleClose, onOutsideClick: this._handleOutsideClick, target: this._target, isPinned: this.state.isPinned },
|
|
283
288
|
React.createElement(appui_layout_react_1.ToolAssistanceDialog, { buttons: React.createElement(React.Fragment, null,
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
this.state.isPinned &&
|
|
288
|
-
React.createElement(appui_layout_react_1.TitleBarButton, { onClick: this._handleCloseButtonClick, title: core_react_1.UiCore.translate("dialog.close") },
|
|
289
|
-
React.createElement("i", { className: "icon icon-close" }))), title: dialogTitle }, dialogContent))));
|
|
289
|
+
React.createElement(itwinui_react_1.IconButton, { size: "small", styleType: "borderless", onClick: this._handlePinButtonClick, title: this.state.isPinned
|
|
290
|
+
? core_react_1.UiCore.translate("dialog.close")
|
|
291
|
+
: UiFramework_1.UiFramework.translate("toolAssistance.pin") }, this.state.isPinned ? React.createElement(itwinui_icons_react_1.SvgClose, null) : React.createElement(itwinui_icons_react_1.SvgPinHollow, null))), title: dialogTitle }, dialogContent))));
|
|
290
292
|
}
|
|
291
293
|
setOpenWidget(openWidget) {
|
|
292
294
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolAssistanceField.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport \"./ToolAssistanceField.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport {\r\n IModelApp, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceInstructions, ToolAssistanceKeyboardInfo,\r\n ToolAssistanceSection,\r\n} from \"@itwin/core-frontend\";\r\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\r\nimport {\r\n FillCentered, Icon, LocalStateStorage, UiCore, UiStateEntry, UiStateStorage, UiStateStorageResult, UiStateStorageStatus,\r\n} from \"@itwin/core-react\";\r\nimport {\r\n FooterPopup, ToolAssistanceInstruction as NZ_ToolAssistanceInstruction, TitleBarButton, ToolAssistance, ToolAssistanceDialog,\r\n ToolAssistanceItem,\r\n ToolAssistanceSeparator,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { HorizontalTabs, ToggleSwitch } from \"@itwin/itwinui-react\";\r\nimport { CursorPrompt } from \"../../cursor/cursorprompt/CursorPrompt\";\r\nimport { FrontstageManager, ToolIconChangedEventArgs } from \"../../frontstage/FrontstageManager\";\r\nimport { MessageManager, ToolAssistanceChangedEventArgs } from \"../../messages/MessageManager\";\r\nimport { StatusBarFieldId } from \"../../statusbar/StatusBarWidgetControl\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { StatusFieldProps } from \"../StatusFieldProps\";\r\nimport { UiStateStorageContext } from \"../../uistate/useUiStateStorage\";\r\n\r\nimport acceptPointIcon from \"./accept-point.svg\";\r\nimport cursorClickIcon from \"./cursor-click.svg\";\r\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg\";\r\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg\";\r\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg\";\r\nimport twoTouchPinchIcon from \"./gesture-pinch.svg\";\r\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg\";\r\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg\";\r\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg\";\r\nimport clickLeftIcon from \"./mouse-click-left.svg\";\r\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg\";\r\nimport clickRightIcon from \"./mouse-click-right.svg\";\r\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg\";\r\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg\";\r\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg\";\r\nimport touchCursorTapIcon from \"./touch-cursor-point.svg\";\r\n\r\n// cSpell:ignore cursorprompt\r\n\r\n/** Properties of [[ToolAssistanceField]] component.\r\n * @public\r\n */\r\nexport interface ToolAssistanceFieldProps extends StatusFieldProps {\r\n /** Indicates whether to include promptAtCursor Checkbox. Defaults to true. */\r\n includePromptAtCursor: boolean;\r\n /** Optional parameter for persistent UI settings. Defaults to UiStateStorageContext.\r\n */\r\n uiStateStorage?: UiStateStorage; // eslint-disable-line deprecation/deprecation\r\n /** Cursor Prompt Timeout period. Defaults to 5000. */\r\n cursorPromptTimeout: number;\r\n /** Fade Out the Cursor Prompt when closed. */\r\n fadeOutCursorPrompt: boolean;\r\n /** Indicates whether to show promptAtCursor by default. Defaults to false. */\r\n defaultPromptAtCursor: boolean;\r\n}\r\n\r\n/** Default properties of [[ToolAssistanceField]] component.\r\n * @internal\r\n */\r\nexport type ToolAssistanceFieldDefaultProps =\r\n Pick<ToolAssistanceFieldProps, \"includePromptAtCursor\" | \"uiStateStorage\" | \"cursorPromptTimeout\" | \"fadeOutCursorPrompt\" | \"defaultPromptAtCursor\">;\r\n\r\n/** @internal */\r\ninterface ToolAssistanceFieldState {\r\n instructions: ToolAssistanceInstructions | undefined;\r\n toolIconSpec: string;\r\n showPromptAtCursor: boolean;\r\n includeMouseInstructions: boolean;\r\n includeTouchInstructions: boolean;\r\n showMouseTouchTabs: boolean;\r\n showMouseInstructions: boolean;\r\n showTouchInstructions: boolean;\r\n mouseTouchTabIndex: number;\r\n isPinned: boolean;\r\n openWidget: string | null;\r\n}\r\n\r\n/** Tool Assistance Field React component.\r\n * @public\r\n */\r\nexport class ToolAssistanceField extends React.Component<ToolAssistanceFieldProps, ToolAssistanceFieldState> {\r\n /** @internal */\r\n public static override contextType = UiStateStorageContext;\r\n /** @internal */\r\n public declare context: React.ContextType<typeof UiStateStorageContext>;\r\n\r\n private static _toolAssistanceKey = \"ToolAssistance\";\r\n private static _showPromptAtCursorKey = \"showPromptAtCursor\";\r\n private static _mouseTouchTabIndexKey = \"mouseTouchTabIndex\";\r\n private _showPromptAtCursorSetting: UiStateEntry<boolean>;\r\n private _mouseTouchTabIndexSetting: UiStateEntry<number>;\r\n private _target: HTMLElement | null = null;\r\n private _className: string;\r\n private _indicator = React.createRef<HTMLDivElement>();\r\n private _cursorPrompt: CursorPrompt;\r\n private _isMounted = false;\r\n private _uiSettingsStorage: UiStateStorage; // eslint-disable-line deprecation/deprecation\r\n\r\n /** @internal */\r\n public static readonly defaultProps: ToolAssistanceFieldDefaultProps = {\r\n includePromptAtCursor: true,\r\n cursorPromptTimeout: 5000,\r\n fadeOutCursorPrompt: true,\r\n defaultPromptAtCursor: false,\r\n };\r\n\r\n /** @internal */\r\n constructor(p: ToolAssistanceFieldProps) {\r\n super(p);\r\n\r\n const instance = this.constructor;\r\n this._className = instance.name;\r\n\r\n const mobile = UiFramework.isMobile();\r\n\r\n this.state = {\r\n instructions: undefined,\r\n toolIconSpec: \"\",\r\n showPromptAtCursor: p.defaultPromptAtCursor,\r\n includeMouseInstructions: !mobile,\r\n includeTouchInstructions: true,\r\n showMouseTouchTabs: false,\r\n showMouseInstructions: false,\r\n showTouchInstructions: false,\r\n mouseTouchTabIndex: 0,\r\n isPinned: false,\r\n openWidget: null,\r\n };\r\n\r\n this._uiSettingsStorage = new LocalStateStorage();\r\n this._cursorPrompt = new CursorPrompt(this.props.cursorPromptTimeout, this.props.fadeOutCursorPrompt);\r\n this._showPromptAtCursorSetting = new UiStateEntry(ToolAssistanceField._toolAssistanceKey, ToolAssistanceField._showPromptAtCursorKey,\r\n () => this.state.showPromptAtCursor);\r\n this._mouseTouchTabIndexSetting = new UiStateEntry(ToolAssistanceField._toolAssistanceKey, ToolAssistanceField._mouseTouchTabIndexKey,\r\n () => this.state.mouseTouchTabIndex);\r\n }\r\n\r\n /** @internal */\r\n public override async componentDidMount() {\r\n this._isMounted = true;\r\n MessageManager.onToolAssistanceChangedEvent.addListener(this._handleToolAssistanceChangedEvent);\r\n FrontstageManager.onToolIconChangedEvent.addListener(this._handleToolIconChangedEvent);\r\n\r\n // istanbul ignore else\r\n if (this.props.uiStateStorage)\r\n this._uiSettingsStorage = this.props.uiStateStorage;\r\n else if (this.context)\r\n this._uiSettingsStorage = this.context;\r\n\r\n await this.restoreSettings();\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n MessageManager.onToolAssistanceChangedEvent.removeListener(this._handleToolAssistanceChangedEvent);\r\n FrontstageManager.onToolIconChangedEvent.removeListener(this._handleToolIconChangedEvent);\r\n }\r\n\r\n private async restoreSettings() {\r\n let getShowPromptAtCursor: Promise<UiStateStorageResult> | undefined; // eslint-disable-line deprecation/deprecation\r\n // istanbul ignore else\r\n if (this.props.includePromptAtCursor) {\r\n getShowPromptAtCursor = this._showPromptAtCursorSetting.getSetting(this._uiSettingsStorage);\r\n }\r\n const getMouseTouchTabIndex = this._mouseTouchTabIndexSetting.getSetting(this._uiSettingsStorage);\r\n const [showPromptAtCursorResult, mouseTouchTabIndexResult] = await Promise.all([\r\n getShowPromptAtCursor,\r\n getMouseTouchTabIndex,\r\n ]);\r\n\r\n // istanbul ignore else\r\n if (showPromptAtCursorResult !== undefined && showPromptAtCursorResult.status === UiStateStorageStatus.Success) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ showPromptAtCursor: showPromptAtCursorResult.setting });\r\n }\r\n\r\n // istanbul ignore else\r\n if (mouseTouchTabIndexResult.status === UiStateStorageStatus.Success) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ mouseTouchTabIndex: mouseTouchTabIndexResult.setting });\r\n }\r\n }\r\n\r\n private _handleToolAssistanceChangedEvent = (args: ToolAssistanceChangedEventArgs): void => {\r\n let showMouseTouchTabs = false;\r\n let showMouseInstructions = false;\r\n let showTouchInstructions = false;\r\n\r\n if (args.instructions && args.instructions.sections) {\r\n const hasMouseInstructions = args.instructions.sections.some((section: ToolAssistanceSection) => {\r\n return section.instructions.some((instruction: ToolAssistanceInstruction) => this._isMouseInstruction(instruction));\r\n });\r\n const hasTouchInstructions = args.instructions.sections.some((section: ToolAssistanceSection) => {\r\n return section.instructions.some((instruction: ToolAssistanceInstruction) => this._isTouchInstruction(instruction));\r\n });\r\n\r\n if (this.state.includeMouseInstructions && this.state.includeTouchInstructions && hasMouseInstructions && hasTouchInstructions) {\r\n showMouseTouchTabs = true;\r\n showMouseInstructions = this.state.mouseTouchTabIndex === 0;\r\n showTouchInstructions = this.state.mouseTouchTabIndex === 1;\r\n } else {\r\n if (this.state.includeMouseInstructions && hasMouseInstructions)\r\n showMouseInstructions = true;\r\n else if (this.state.includeTouchInstructions && hasTouchInstructions)\r\n showTouchInstructions = true;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState(\r\n {\r\n instructions: args.instructions,\r\n showMouseTouchTabs,\r\n showMouseInstructions,\r\n showTouchInstructions,\r\n },\r\n () => {\r\n this._showCursorPrompt();\r\n },\r\n );\r\n };\r\n\r\n private _isBothInstruction = (instruction: ToolAssistanceInstruction) => {\r\n return instruction.inputMethod === undefined || instruction.inputMethod === ToolAssistanceInputMethod.Both;\r\n };\r\n\r\n private _isMouseInstruction = (instruction: ToolAssistanceInstruction) => instruction.inputMethod === ToolAssistanceInputMethod.Mouse;\r\n\r\n private _isTouchInstruction = (instruction: ToolAssistanceInstruction) => instruction.inputMethod === ToolAssistanceInputMethod.Touch;\r\n\r\n private _handleToolIconChangedEvent = (args: ToolIconChangedEventArgs): void => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState(\r\n { toolIconSpec: args.iconSpec },\r\n () => {\r\n this._showCursorPrompt();\r\n },\r\n );\r\n\r\n };\r\n\r\n private _showCursorPrompt() {\r\n if (this.state.showPromptAtCursor && this.state.instructions)\r\n this._cursorPrompt.display(this.state.toolIconSpec, this.state.instructions.mainInstruction);\r\n }\r\n\r\n private _sectionHasDisplayableInstructions(section: ToolAssistanceSection): boolean {\r\n const displayableInstructions = this._getDisplayableInstructions(section);\r\n return displayableInstructions.length > 0;\r\n }\r\n\r\n private _getDisplayableInstructions(section: ToolAssistanceSection): ToolAssistanceInstruction[] {\r\n const displayableInstructions = section.instructions.filter((instruction: ToolAssistanceInstruction) => {\r\n return (\r\n this._isBothInstruction(instruction)\r\n || (this.state.showMouseInstructions && this._isMouseInstruction(instruction))\r\n || (this.state.showTouchInstructions && this._isTouchInstruction(instruction))\r\n );\r\n });\r\n return displayableInstructions;\r\n }\r\n\r\n private _handleMouseTouchTab = async (index: number) => {\r\n const showMouseInstructions = index === 0;\r\n const showTouchInstructions = index === 1;\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n mouseTouchTabIndex: index,\r\n showMouseInstructions,\r\n showTouchInstructions,\r\n }, async () => {\r\n await this._mouseTouchTabIndexSetting.saveSetting(this._uiSettingsStorage);\r\n });\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const { instructions } = this.state;\r\n const dialogTitle = (IModelApp.toolAdmin.activeTool) ? /* istanbul ignore next */ IModelApp.toolAdmin.activeTool.flyover : UiFramework.translate(\"toolAssistance.title\");\r\n const mouseLabel = UiFramework.translate(\"toolAssistance.mouse\");\r\n const touchLabel = UiFramework.translate(\"toolAssistance.touch\");\r\n let prompt = \"\";\r\n let tooltip = \"\";\r\n let toolIcon: React.ReactNode;\r\n let dialogContent: React.ReactNode;\r\n\r\n if (instructions) {\r\n prompt = instructions.mainInstruction.text;\r\n toolIcon = <Icon iconSpec={this.state.toolIconSpec} />;\r\n\r\n let displayableSections: ToolAssistanceSection[] | undefined;\r\n if (instructions.sections) {\r\n displayableSections = instructions.sections.filter((section: ToolAssistanceSection) => this._sectionHasDisplayableInstructions(section));\r\n }\r\n\r\n dialogContent = (\r\n <div>\r\n {this.state.showMouseTouchTabs &&\r\n <HorizontalTabs\r\n tabsClassName=\"uifw-toolAssistance-tabs\"\r\n labels={[mouseLabel, touchLabel]}\r\n activeIndex={this.state.mouseTouchTabIndex}\r\n onTabSelected={this._handleMouseTouchTab} />\r\n }\r\n\r\n <div className=\"uifw-toolAssistance-content\">\r\n <NZ_ToolAssistanceInstruction\r\n key=\"main\"\r\n image={ToolAssistanceField.getInstructionImage(instructions.mainInstruction)}\r\n text={instructions.mainInstruction.text}\r\n isNew={instructions.mainInstruction.isNew} />\r\n\r\n {displayableSections && displayableSections.map((section: ToolAssistanceSection, index1: number) => {\r\n return (\r\n <React.Fragment key={index1.toString()}>\r\n <ToolAssistanceSeparator key={index1.toString()}>{section.label}</ToolAssistanceSeparator>\r\n {this._getDisplayableInstructions(section).map((instruction: ToolAssistanceInstruction, index2: number) => {\r\n return (\r\n <NZ_ToolAssistanceInstruction\r\n key={`${index1.toString()}-${index2.toString()}`}\r\n image={ToolAssistanceField.getInstructionImage(instruction)}\r\n text={instruction.text}\r\n isNew={instruction.isNew} />\r\n );\r\n })}\r\n </React.Fragment>\r\n );\r\n })}\r\n\r\n {this.props.includePromptAtCursor &&\r\n <>\r\n <ToolAssistanceSeparator key=\"prompt-sep\" />\r\n <ToolAssistanceItem key=\"prompt-item\">\r\n <ToggleSwitch\r\n label={UiFramework.translate(\"toolAssistance.promptAtCursor\")}\r\n labelPosition=\"right\"\r\n checked={this.state.showPromptAtCursor} onChange={this._onPromptAtCursorChange} />\r\n </ToolAssistanceItem>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n if (prompt)\r\n tooltip = prompt;\r\n\r\n // istanbul ignore next\r\n if (IModelApp.toolAdmin.activeTool)\r\n tooltip = `${IModelApp.toolAdmin.activeTool.flyover} > ${tooltip} `;\r\n\r\n if (tooltip) {\r\n const lineBreak = \"\\u000d\\u000a\";\r\n tooltip = tooltip + lineBreak;\r\n }\r\n\r\n tooltip += UiFramework.translate(\"toolAssistance.moreInfo\");\r\n\r\n return (\r\n <>\r\n <div style={{ height: \"100%\" }} ref={this._handleTargetRef}>\r\n <ToolAssistance // eslint-disable-line deprecation/deprecation\r\n icons={\r\n <>\r\n {toolIcon}\r\n </>\r\n }\r\n indicatorRef={this._indicator}\r\n className={classnames(\"uifw-statusFields-toolassistance\", this.props.className)}\r\n style={this.props.style}\r\n isInFooterMode={this.props.isInFooterMode ?? true}\r\n onClick={this._handleToolAssistanceIndicatorClick}\r\n title={tooltip}\r\n >\r\n {(this.props.isInFooterMode ?? true) ? prompt : undefined}\r\n </ToolAssistance>\r\n </div>\r\n <FooterPopup\r\n isOpen={(this.props.openWidget ?? this.state.openWidget) === this._className}\r\n onClose={this._handleClose}\r\n onOutsideClick={this._handleOutsideClick}\r\n target={this._target}\r\n isPinned={this.state.isPinned}\r\n >\r\n <ToolAssistanceDialog\r\n buttons={\r\n <>\r\n {!this.state.isPinned &&\r\n <TitleBarButton onClick={this._handlePinButtonClick} title={UiFramework.translate(\"toolAssistance.pin\")}>\r\n <i className={\"icon icon-pin\"} />\r\n </TitleBarButton>\r\n }\r\n {this.state.isPinned &&\r\n <TitleBarButton onClick={this._handleCloseButtonClick} title={UiCore.translate(\"dialog.close\")}>\r\n <i className={\"icon icon-close\"} />\r\n </TitleBarButton>\r\n }\r\n </>\r\n }\r\n title={dialogTitle}\r\n >\r\n {dialogContent}\r\n </ToolAssistanceDialog>\r\n </FooterPopup>\r\n </>\r\n );\r\n }\r\n\r\n private _handleTargetRef = (target: HTMLElement | null) => {\r\n this._target = target;\r\n };\r\n\r\n private _onPromptAtCursorChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n showPromptAtCursor: e.target.checked,\r\n }, async () => {\r\n await this._showPromptAtCursorSetting.saveSetting(this._uiSettingsStorage);\r\n });\r\n };\r\n\r\n private _handleClose = () => {\r\n this.setOpenWidget(null);\r\n };\r\n\r\n private _handleOutsideClick = (e: MouseEvent) => {\r\n if (this.state.isPinned)\r\n return;\r\n\r\n // istanbul ignore if\r\n if (!this._indicator.current ||\r\n !(e.target instanceof Node) ||\r\n this._indicator.current.contains(e.target))\r\n return;\r\n\r\n this._handleClose();\r\n };\r\n\r\n private _handleToolAssistanceIndicatorClick = () => {\r\n const isOpen = (this.props.openWidget ?? this.state.openWidget) === this._className;\r\n if (isOpen) {\r\n this.setOpenWidget(null);\r\n } else\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n private _handlePinButtonClick = () => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isPinned: true });\r\n };\r\n\r\n private _handleCloseButtonClick = () => {\r\n this._handleClose();\r\n };\r\n\r\n private setOpenWidget(openWidget: StatusBarFieldId) {\r\n this.props.onOpenWidget?.(openWidget);\r\n let newState = {\r\n openWidget,\r\n };\r\n if (!openWidget && this.state.isPinned && this._isMounted) {\r\n newState = {...newState, ...{isPinned: false}};\r\n }\r\n this.setState(newState);\r\n }\r\n\r\n /** @internal */\r\n public static getInstructionImage(instruction: ToolAssistanceInstruction): React.ReactNode {\r\n let image: React.ReactNode;\r\n\r\n if ((typeof instruction.image === \"string\" || instruction.image !== ToolAssistanceImage.Keyboard) && instruction.keyboardInfo) {\r\n if (instruction.keyboardInfo.keys.length === 1 && !instruction.keyboardInfo.bottomKeys) {\r\n const key = instruction.keyboardInfo.keys[0];\r\n const rightImage = (typeof instruction.image === \"string\") ?\r\n <div className=\"uifw-toolassistance-icon-medium\"><Icon iconSpec={instruction.image} /></div> :\r\n this.getInstructionSvgImage(instruction, true);\r\n\r\n image = (\r\n <FillCentered>\r\n {ToolAssistanceField.getKeyNode(key, 0, \"uifw-toolassistance-key-modifier\")}\r\n {rightImage}\r\n </FillCentered>\r\n );\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `getInstructionImage: Invalid keyboardInfo provided with image`);\r\n }\r\n } else if (typeof instruction.image === \"string\") {\r\n if (instruction.image.length > 0) {\r\n const svgSource = IconSpecUtilities.getSvgSource(instruction.image);\r\n const className = (svgSource !== undefined) ? \"uifw-toolassistance-svg\" : \"uifw-toolassistance-icon-large\";\r\n image = <div className={className}><Icon iconSpec={instruction.image} /></div>;\r\n }\r\n } else if (instruction.image === ToolAssistanceImage.Keyboard) {\r\n if (instruction.keyboardInfo) {\r\n image = ToolAssistanceField.getInstructionKeyboardImage(instruction.keyboardInfo);\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `getInstructionImage: ToolAssistanceImage.Keyboard specified but no keyboardInfo provided`);\r\n }\r\n } else {\r\n image = this.getInstructionSvgImage(instruction, false);\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getInstructionSvgImage(instruction: ToolAssistanceInstruction, mediumSize: boolean): React.ReactNode {\r\n let image: React.ReactNode;\r\n let className = mediumSize ? \"uifw-toolassistance-svg-medium\" : \"uifw-toolassistance-svg\";\r\n\r\n // istanbul ignore else\r\n if (typeof instruction.image !== \"string\" && instruction.image !== ToolAssistanceImage.Keyboard) {\r\n const toolAssistanceImage: ToolAssistanceImage = instruction.image;\r\n let svgImage = \"\";\r\n\r\n switch (toolAssistanceImage) {\r\n case ToolAssistanceImage.AcceptPoint:\r\n svgImage = acceptPointIcon;\r\n break;\r\n case ToolAssistanceImage.CursorClick:\r\n svgImage = cursorClickIcon;\r\n break;\r\n case ToolAssistanceImage.LeftClick:\r\n svgImage = clickLeftIcon;\r\n break;\r\n case ToolAssistanceImage.RightClick:\r\n svgImage = clickRightIcon;\r\n break;\r\n case ToolAssistanceImage.MouseWheel:\r\n svgImage = mouseWheelClickIcon;\r\n break;\r\n case ToolAssistanceImage.LeftClickDrag:\r\n svgImage = clickLeftDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.RightClickDrag:\r\n svgImage = clickRightDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.MouseWheelClickDrag:\r\n svgImage = clickMouseWheelDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.OneTouchTap:\r\n svgImage = oneTouchTapIcon;\r\n break;\r\n case ToolAssistanceImage.OneTouchDoubleTap:\r\n svgImage = oneTouchDoubleTapIcon;\r\n break;\r\n case ToolAssistanceImage.OneTouchDrag:\r\n svgImage = oneTouchDragIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchTap:\r\n svgImage = twoTouchTapIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchDrag:\r\n svgImage = twoTouchDragIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchPinch:\r\n svgImage = twoTouchPinchIcon;\r\n break;\r\n case ToolAssistanceImage.TouchCursorTap:\r\n svgImage = touchCursorTapIcon;\r\n break;\r\n case ToolAssistanceImage.TouchCursorDrag:\r\n svgImage = touchCursorDragIcon;\r\n className = mediumSize ? /* istanbul ignore next */ \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n }\r\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgImage);\r\n image = (\r\n <div className={className}>\r\n {svgImage &&\r\n // istanbul ignore next\r\n <Icon iconSpec={iconSpec} />\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getInstructionKeyboardImage(keyboardInfo: ToolAssistanceKeyboardInfo): React.ReactNode {\r\n let image: React.ReactNode;\r\n\r\n if (keyboardInfo.bottomKeys !== undefined) {\r\n image = (\r\n <div className=\"uifw-toolassistance-key-group\">\r\n <span className=\"row1\">\r\n {keyboardInfo.keys.map((key: string, index1: number) => {\r\n return ToolAssistanceField.getKeyNode(key, index1, \"uifw-toolassistance-key-small\");\r\n })}\r\n </span>\r\n <br />\r\n <span className=\"row2\">\r\n {keyboardInfo.bottomKeys.map((key: string, index2: number) => {\r\n return ToolAssistanceField.getKeyNode(key, index2, \"uifw-toolassistance-key-small\");\r\n })}\r\n </span>\r\n </div>\r\n );\r\n } else if (keyboardInfo.keys.length === 2) {\r\n image = (\r\n <FillCentered>\r\n {keyboardInfo.keys.map((key: string, index3: number) => {\r\n let className = \"uifw-toolassistance-key-medium\";\r\n if (key.length > 1)\r\n className = \"uifw-toolassistance-key-modifier\";\r\n return ToolAssistanceField.getKeyNode(key, index3, className);\r\n })}\r\n </FillCentered>\r\n );\r\n } else if (keyboardInfo.keys[0]) {\r\n if (keyboardInfo.keys[0].length > 1)\r\n image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0, \"uifw-toolassistance-key-large\");\r\n else\r\n image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0);\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `ToolAssistanceImage.Keyboard specified but ToolAssistanceKeyboardInfo not valid`);\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getKeyNode(key: string, index: number, className?: string): React.ReactNode {\r\n return (\r\n <div key={index.toString()} className={classnames(\"uifw-toolassistance-key\", className)}>\r\n <FillCentered>{key}</FillCentered>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ToolAssistanceField.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/* eslint-disable deprecation/deprecation */\r\n/** @packageDocumentation\r\n * @module Notification\r\n */\r\n\r\nimport \"./ToolAssistanceField.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport {\r\n IModelApp, ToolAssistanceImage, ToolAssistanceInputMethod, ToolAssistanceInstruction, ToolAssistanceInstructions, ToolAssistanceKeyboardInfo,\r\n ToolAssistanceSection,\r\n} from \"@itwin/core-frontend\";\r\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\r\nimport {\r\n FillCentered, Icon, LocalStateStorage, UiCore, UiStateEntry, UiStateStorage, UiStateStorageResult, UiStateStorageStatus,\r\n} from \"@itwin/core-react\";\r\nimport {\r\n FooterPopup, ToolAssistanceInstruction as NZ_ToolAssistanceInstruction, ToolAssistance, ToolAssistanceDialog,\r\n ToolAssistanceItem,\r\n ToolAssistanceSeparator,\r\n} from \"@itwin/appui-layout-react\";\r\nimport { HorizontalTabs, IconButton, ToggleSwitch } from \"@itwin/itwinui-react\";\r\nimport { CursorPrompt } from \"../../cursor/cursorprompt/CursorPrompt\";\r\nimport { FrontstageManager, ToolIconChangedEventArgs } from \"../../frontstage/FrontstageManager\";\r\nimport { MessageManager, ToolAssistanceChangedEventArgs } from \"../../messages/MessageManager\";\r\nimport { StatusBarFieldId } from \"../../statusbar/StatusBarWidgetControl\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { StatusFieldProps } from \"../StatusFieldProps\";\r\nimport { UiStateStorageContext } from \"../../uistate/useUiStateStorage\";\r\n\r\nimport acceptPointIcon from \"./accept-point.svg\";\r\nimport cursorClickIcon from \"./cursor-click.svg\";\r\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg\";\r\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg\";\r\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg\";\r\nimport twoTouchPinchIcon from \"./gesture-pinch.svg\";\r\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg\";\r\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg\";\r\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg\";\r\nimport clickLeftIcon from \"./mouse-click-left.svg\";\r\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg\";\r\nimport clickRightIcon from \"./mouse-click-right.svg\";\r\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg\";\r\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg\";\r\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg\";\r\nimport touchCursorTapIcon from \"./touch-cursor-point.svg\";\r\nimport { SvgClose, SvgPinHollow } from \"@itwin/itwinui-icons-react\";\r\n\r\n// cSpell:ignore cursorprompt\r\n\r\n/** Properties of [[ToolAssistanceField]] component.\r\n * @public\r\n */\r\nexport interface ToolAssistanceFieldProps extends StatusFieldProps {\r\n /** Indicates whether to include promptAtCursor Checkbox. Defaults to true. */\r\n includePromptAtCursor: boolean;\r\n /** Optional parameter for persistent UI settings. Defaults to UiStateStorageContext.\r\n */\r\n uiStateStorage?: UiStateStorage; // eslint-disable-line deprecation/deprecation\r\n /** Cursor Prompt Timeout period. Defaults to 5000. */\r\n cursorPromptTimeout: number;\r\n /** Fade Out the Cursor Prompt when closed. */\r\n fadeOutCursorPrompt: boolean;\r\n /** Indicates whether to show promptAtCursor by default. Defaults to false. */\r\n defaultPromptAtCursor: boolean;\r\n}\r\n\r\n/** Default properties of [[ToolAssistanceField]] component.\r\n * @internal\r\n */\r\nexport type ToolAssistanceFieldDefaultProps =\r\n Pick<ToolAssistanceFieldProps, \"includePromptAtCursor\" | \"uiStateStorage\" | \"cursorPromptTimeout\" | \"fadeOutCursorPrompt\" | \"defaultPromptAtCursor\">;\r\n\r\n/** @internal */\r\ninterface ToolAssistanceFieldState {\r\n instructions: ToolAssistanceInstructions | undefined;\r\n toolIconSpec: string;\r\n showPromptAtCursor: boolean;\r\n includeMouseInstructions: boolean;\r\n includeTouchInstructions: boolean;\r\n showMouseTouchTabs: boolean;\r\n showMouseInstructions: boolean;\r\n showTouchInstructions: boolean;\r\n mouseTouchTabIndex: number;\r\n isPinned: boolean;\r\n openWidget: string | null;\r\n}\r\n\r\n/** Tool Assistance Field React component.\r\n * @public\r\n */\r\nexport class ToolAssistanceField extends React.Component<ToolAssistanceFieldProps, ToolAssistanceFieldState> {\r\n /** @internal */\r\n public static override contextType = UiStateStorageContext;\r\n /** @internal */\r\n public declare context: React.ContextType<typeof UiStateStorageContext>;\r\n\r\n private static _toolAssistanceKey = \"ToolAssistance\";\r\n private static _showPromptAtCursorKey = \"showPromptAtCursor\";\r\n private static _mouseTouchTabIndexKey = \"mouseTouchTabIndex\";\r\n private _showPromptAtCursorSetting: UiStateEntry<boolean>;\r\n private _mouseTouchTabIndexSetting: UiStateEntry<number>;\r\n private _target: HTMLElement | null = null;\r\n private _className: string;\r\n private _indicator = React.createRef<HTMLDivElement>();\r\n private _cursorPrompt: CursorPrompt;\r\n private _isMounted = false;\r\n private _uiSettingsStorage: UiStateStorage; // eslint-disable-line deprecation/deprecation\r\n\r\n /** @internal */\r\n public static readonly defaultProps: ToolAssistanceFieldDefaultProps = {\r\n includePromptAtCursor: true,\r\n cursorPromptTimeout: 5000,\r\n fadeOutCursorPrompt: true,\r\n defaultPromptAtCursor: false,\r\n };\r\n\r\n /** @internal */\r\n constructor(p: ToolAssistanceFieldProps) {\r\n super(p);\r\n\r\n const instance = this.constructor;\r\n this._className = instance.name;\r\n\r\n const mobile = UiFramework.isMobile();\r\n\r\n this.state = {\r\n instructions: undefined,\r\n toolIconSpec: \"\",\r\n showPromptAtCursor: p.defaultPromptAtCursor,\r\n includeMouseInstructions: !mobile,\r\n includeTouchInstructions: true,\r\n showMouseTouchTabs: false,\r\n showMouseInstructions: false,\r\n showTouchInstructions: false,\r\n mouseTouchTabIndex: 0,\r\n isPinned: false,\r\n openWidget: null,\r\n };\r\n\r\n this._uiSettingsStorage = new LocalStateStorage();\r\n this._cursorPrompt = new CursorPrompt(this.props.cursorPromptTimeout, this.props.fadeOutCursorPrompt);\r\n this._showPromptAtCursorSetting = new UiStateEntry(ToolAssistanceField._toolAssistanceKey, ToolAssistanceField._showPromptAtCursorKey,\r\n () => this.state.showPromptAtCursor);\r\n this._mouseTouchTabIndexSetting = new UiStateEntry(ToolAssistanceField._toolAssistanceKey, ToolAssistanceField._mouseTouchTabIndexKey,\r\n () => this.state.mouseTouchTabIndex);\r\n }\r\n\r\n /** @internal */\r\n public override async componentDidMount() {\r\n this._isMounted = true;\r\n MessageManager.onToolAssistanceChangedEvent.addListener(this._handleToolAssistanceChangedEvent);\r\n FrontstageManager.onToolIconChangedEvent.addListener(this._handleToolIconChangedEvent);\r\n\r\n // istanbul ignore else\r\n if (this.props.uiStateStorage)\r\n this._uiSettingsStorage = this.props.uiStateStorage;\r\n else if (this.context)\r\n this._uiSettingsStorage = this.context;\r\n\r\n await this.restoreSettings();\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n this._isMounted = false;\r\n MessageManager.onToolAssistanceChangedEvent.removeListener(this._handleToolAssistanceChangedEvent);\r\n FrontstageManager.onToolIconChangedEvent.removeListener(this._handleToolIconChangedEvent);\r\n }\r\n\r\n private async restoreSettings() {\r\n let getShowPromptAtCursor: Promise<UiStateStorageResult> | undefined; // eslint-disable-line deprecation/deprecation\r\n // istanbul ignore else\r\n if (this.props.includePromptAtCursor) {\r\n getShowPromptAtCursor = this._showPromptAtCursorSetting.getSetting(this._uiSettingsStorage);\r\n }\r\n const getMouseTouchTabIndex = this._mouseTouchTabIndexSetting.getSetting(this._uiSettingsStorage);\r\n const [showPromptAtCursorResult, mouseTouchTabIndexResult] = await Promise.all([\r\n getShowPromptAtCursor,\r\n getMouseTouchTabIndex,\r\n ]);\r\n\r\n // istanbul ignore else\r\n if (showPromptAtCursorResult !== undefined && showPromptAtCursorResult.status === UiStateStorageStatus.Success) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ showPromptAtCursor: showPromptAtCursorResult.setting });\r\n }\r\n\r\n // istanbul ignore else\r\n if (mouseTouchTabIndexResult.status === UiStateStorageStatus.Success) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ mouseTouchTabIndex: mouseTouchTabIndexResult.setting });\r\n }\r\n }\r\n\r\n private _handleToolAssistanceChangedEvent = (args: ToolAssistanceChangedEventArgs): void => {\r\n let showMouseTouchTabs = false;\r\n let showMouseInstructions = false;\r\n let showTouchInstructions = false;\r\n\r\n if (args.instructions && args.instructions.sections) {\r\n const hasMouseInstructions = args.instructions.sections.some((section: ToolAssistanceSection) => {\r\n return section.instructions.some((instruction: ToolAssistanceInstruction) => this._isMouseInstruction(instruction));\r\n });\r\n const hasTouchInstructions = args.instructions.sections.some((section: ToolAssistanceSection) => {\r\n return section.instructions.some((instruction: ToolAssistanceInstruction) => this._isTouchInstruction(instruction));\r\n });\r\n\r\n if (this.state.includeMouseInstructions && this.state.includeTouchInstructions && hasMouseInstructions && hasTouchInstructions) {\r\n showMouseTouchTabs = true;\r\n showMouseInstructions = this.state.mouseTouchTabIndex === 0;\r\n showTouchInstructions = this.state.mouseTouchTabIndex === 1;\r\n } else {\r\n if (this.state.includeMouseInstructions && hasMouseInstructions)\r\n showMouseInstructions = true;\r\n else if (this.state.includeTouchInstructions && hasTouchInstructions)\r\n showTouchInstructions = true;\r\n }\r\n }\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState(\r\n {\r\n instructions: args.instructions,\r\n showMouseTouchTabs,\r\n showMouseInstructions,\r\n showTouchInstructions,\r\n },\r\n () => {\r\n this._showCursorPrompt();\r\n },\r\n );\r\n };\r\n\r\n private _isBothInstruction = (instruction: ToolAssistanceInstruction) => {\r\n return instruction.inputMethod === undefined || instruction.inputMethod === ToolAssistanceInputMethod.Both;\r\n };\r\n\r\n private _isMouseInstruction = (instruction: ToolAssistanceInstruction) => instruction.inputMethod === ToolAssistanceInputMethod.Mouse;\r\n\r\n private _isTouchInstruction = (instruction: ToolAssistanceInstruction) => instruction.inputMethod === ToolAssistanceInputMethod.Touch;\r\n\r\n private _handleToolIconChangedEvent = (args: ToolIconChangedEventArgs): void => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState(\r\n { toolIconSpec: args.iconSpec },\r\n () => {\r\n this._showCursorPrompt();\r\n },\r\n );\r\n\r\n };\r\n\r\n private _showCursorPrompt() {\r\n if (this.state.showPromptAtCursor && this.state.instructions)\r\n this._cursorPrompt.display(this.state.toolIconSpec, this.state.instructions.mainInstruction);\r\n }\r\n\r\n private _sectionHasDisplayableInstructions(section: ToolAssistanceSection): boolean {\r\n const displayableInstructions = this._getDisplayableInstructions(section);\r\n return displayableInstructions.length > 0;\r\n }\r\n\r\n private _getDisplayableInstructions(section: ToolAssistanceSection): ToolAssistanceInstruction[] {\r\n const displayableInstructions = section.instructions.filter((instruction: ToolAssistanceInstruction) => {\r\n return (\r\n this._isBothInstruction(instruction)\r\n || (this.state.showMouseInstructions && this._isMouseInstruction(instruction))\r\n || (this.state.showTouchInstructions && this._isTouchInstruction(instruction))\r\n );\r\n });\r\n return displayableInstructions;\r\n }\r\n\r\n private _handleMouseTouchTab = async (index: number) => {\r\n const showMouseInstructions = index === 0;\r\n const showTouchInstructions = index === 1;\r\n\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n mouseTouchTabIndex: index,\r\n showMouseInstructions,\r\n showTouchInstructions,\r\n }, async () => {\r\n await this._mouseTouchTabIndexSetting.saveSetting(this._uiSettingsStorage);\r\n });\r\n };\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const { instructions } = this.state;\r\n const dialogTitle = (IModelApp.toolAdmin.activeTool) ? /* istanbul ignore next */ IModelApp.toolAdmin.activeTool.flyover : UiFramework.translate(\"toolAssistance.title\");\r\n const mouseLabel = UiFramework.translate(\"toolAssistance.mouse\");\r\n const touchLabel = UiFramework.translate(\"toolAssistance.touch\");\r\n let prompt = \"\";\r\n let tooltip = \"\";\r\n let toolIcon: React.ReactNode;\r\n let dialogContent: React.ReactNode;\r\n\r\n if (instructions) {\r\n prompt = instructions.mainInstruction.text;\r\n toolIcon = <Icon iconSpec={this.state.toolIconSpec} />;\r\n\r\n let displayableSections: ToolAssistanceSection[] | undefined;\r\n if (instructions.sections) {\r\n displayableSections = instructions.sections.filter((section: ToolAssistanceSection) => this._sectionHasDisplayableInstructions(section));\r\n }\r\n\r\n dialogContent = (\r\n <div>\r\n {this.state.showMouseTouchTabs &&\r\n <HorizontalTabs\r\n tabsClassName=\"uifw-toolAssistance-tabs\"\r\n labels={[mouseLabel, touchLabel]}\r\n activeIndex={this.state.mouseTouchTabIndex}\r\n onTabSelected={this._handleMouseTouchTab} />\r\n }\r\n\r\n <div className=\"uifw-toolAssistance-content\">\r\n <NZ_ToolAssistanceInstruction\r\n key=\"main\"\r\n image={ToolAssistanceField.getInstructionImage(instructions.mainInstruction)}\r\n text={instructions.mainInstruction.text}\r\n isNew={instructions.mainInstruction.isNew} />\r\n\r\n {displayableSections && displayableSections.map((section: ToolAssistanceSection, index1: number) => {\r\n return (\r\n <React.Fragment key={index1.toString()}>\r\n <ToolAssistanceSeparator key={index1.toString()}>{section.label}</ToolAssistanceSeparator>\r\n {this._getDisplayableInstructions(section).map((instruction: ToolAssistanceInstruction, index2: number) => {\r\n return (\r\n <NZ_ToolAssistanceInstruction\r\n key={`${index1.toString()}-${index2.toString()}`}\r\n image={ToolAssistanceField.getInstructionImage(instruction)}\r\n text={instruction.text}\r\n isNew={instruction.isNew} />\r\n );\r\n })}\r\n </React.Fragment>\r\n );\r\n })}\r\n\r\n {this.props.includePromptAtCursor &&\r\n <>\r\n <ToolAssistanceSeparator key=\"prompt-sep\" />\r\n <ToolAssistanceItem key=\"prompt-item\">\r\n <ToggleSwitch\r\n label={UiFramework.translate(\"toolAssistance.promptAtCursor\")}\r\n labelPosition=\"right\"\r\n checked={this.state.showPromptAtCursor} onChange={this._onPromptAtCursorChange} />\r\n </ToolAssistanceItem>\r\n </>\r\n }\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n if (prompt)\r\n tooltip = prompt;\r\n\r\n // istanbul ignore next\r\n if (IModelApp.toolAdmin.activeTool)\r\n tooltip = `${IModelApp.toolAdmin.activeTool.flyover} > ${tooltip} `;\r\n\r\n if (tooltip) {\r\n const lineBreak = \"\\u000d\\u000a\";\r\n tooltip = tooltip + lineBreak;\r\n }\r\n\r\n tooltip += UiFramework.translate(\"toolAssistance.moreInfo\");\r\n\r\n return (\r\n <>\r\n <div style={{ height: \"100%\" }} ref={this._handleTargetRef}>\r\n <ToolAssistance // eslint-disable-line deprecation/deprecation\r\n icons={\r\n <>\r\n {toolIcon}\r\n </>\r\n }\r\n indicatorRef={this._indicator}\r\n className={classnames(\"uifw-statusFields-toolassistance\", this.props.className)}\r\n style={this.props.style}\r\n isInFooterMode={this.props.isInFooterMode ?? true}\r\n onClick={this._handleToolAssistanceIndicatorClick}\r\n title={tooltip}\r\n >\r\n {(this.props.isInFooterMode ?? true) ? prompt : undefined}\r\n </ToolAssistance>\r\n </div>\r\n <FooterPopup\r\n isOpen={(this.props.openWidget ?? this.state.openWidget) === this._className}\r\n onClose={this._handleClose}\r\n onOutsideClick={this._handleOutsideClick}\r\n target={this._target}\r\n isPinned={this.state.isPinned}\r\n >\r\n <ToolAssistanceDialog\r\n buttons={\r\n <>\r\n <IconButton\r\n size=\"small\"\r\n styleType=\"borderless\"\r\n onClick={this._handlePinButtonClick}\r\n title={\r\n this.state.isPinned\r\n ? UiCore.translate(\"dialog.close\")\r\n : UiFramework.translate(\"toolAssistance.pin\")\r\n }\r\n >\r\n {this.state.isPinned ? <SvgClose /> : <SvgPinHollow />}\r\n </IconButton>\r\n </>\r\n }\r\n title={dialogTitle}\r\n >\r\n {dialogContent}\r\n </ToolAssistanceDialog>\r\n </FooterPopup>\r\n </>\r\n );\r\n }\r\n\r\n private _handleTargetRef = (target: HTMLElement | null) => {\r\n this._target = target;\r\n };\r\n\r\n private _onPromptAtCursorChange = async (e: React.ChangeEvent<HTMLInputElement>) => {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({\r\n showPromptAtCursor: e.target.checked,\r\n }, async () => {\r\n await this._showPromptAtCursorSetting.saveSetting(this._uiSettingsStorage);\r\n });\r\n };\r\n\r\n private _handleClose = () => {\r\n this.setOpenWidget(null);\r\n };\r\n\r\n private _handleOutsideClick = (e: MouseEvent) => {\r\n if (this.state.isPinned)\r\n return;\r\n\r\n // istanbul ignore if\r\n if (!this._indicator.current ||\r\n !(e.target instanceof Node) ||\r\n this._indicator.current.contains(e.target))\r\n return;\r\n\r\n this._handleClose();\r\n };\r\n\r\n private _handleToolAssistanceIndicatorClick = () => {\r\n const isOpen = (this.props.openWidget ?? this.state.openWidget) === this._className;\r\n if (isOpen) {\r\n this.setOpenWidget(null);\r\n } else\r\n this.setOpenWidget(this._className);\r\n };\r\n\r\n private _handlePinButtonClick = () => {\r\n // istanbul ignore else\r\n if (this._isMounted) {\r\n const isPinned = !this.state.isPinned;\r\n this.setState({\r\n isPinned,\r\n });\r\n if (!isPinned) {\r\n this._handleClose();\r\n }\r\n }\r\n };\r\n\r\n private setOpenWidget(openWidget: StatusBarFieldId) {\r\n this.props.onOpenWidget?.(openWidget);\r\n let newState = {\r\n openWidget,\r\n };\r\n if (!openWidget && this.state.isPinned && this._isMounted) {\r\n newState = { ...newState, ...{ isPinned: false } };\r\n }\r\n this.setState(newState);\r\n }\r\n\r\n /** @internal */\r\n public static getInstructionImage(instruction: ToolAssistanceInstruction): React.ReactNode {\r\n let image: React.ReactNode;\r\n\r\n if ((typeof instruction.image === \"string\" || instruction.image !== ToolAssistanceImage.Keyboard) && instruction.keyboardInfo) {\r\n if (instruction.keyboardInfo.keys.length === 1 && !instruction.keyboardInfo.bottomKeys) {\r\n const key = instruction.keyboardInfo.keys[0];\r\n const rightImage = (typeof instruction.image === \"string\") ?\r\n <div className=\"uifw-toolassistance-icon-medium\"><Icon iconSpec={instruction.image} /></div> :\r\n this.getInstructionSvgImage(instruction, true);\r\n\r\n image = (\r\n <FillCentered>\r\n {ToolAssistanceField.getKeyNode(key, 0, \"uifw-toolassistance-key-modifier\")}\r\n {rightImage}\r\n </FillCentered>\r\n );\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `getInstructionImage: Invalid keyboardInfo provided with image`);\r\n }\r\n } else if (typeof instruction.image === \"string\") {\r\n if (instruction.image.length > 0) {\r\n const svgSource = IconSpecUtilities.getSvgSource(instruction.image);\r\n const className = (svgSource !== undefined) ? \"uifw-toolassistance-svg\" : \"uifw-toolassistance-icon-large\";\r\n image = <div className={className}><Icon iconSpec={instruction.image} /></div>;\r\n }\r\n } else if (instruction.image === ToolAssistanceImage.Keyboard) {\r\n if (instruction.keyboardInfo) {\r\n image = ToolAssistanceField.getInstructionKeyboardImage(instruction.keyboardInfo);\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `getInstructionImage: ToolAssistanceImage.Keyboard specified but no keyboardInfo provided`);\r\n }\r\n } else {\r\n image = this.getInstructionSvgImage(instruction, false);\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getInstructionSvgImage(instruction: ToolAssistanceInstruction, mediumSize: boolean): React.ReactNode {\r\n let image: React.ReactNode;\r\n let className = mediumSize ? \"uifw-toolassistance-svg-medium\" : \"uifw-toolassistance-svg\";\r\n\r\n // istanbul ignore else\r\n if (typeof instruction.image !== \"string\" && instruction.image !== ToolAssistanceImage.Keyboard) {\r\n const toolAssistanceImage: ToolAssistanceImage = instruction.image;\r\n let svgImage = \"\";\r\n\r\n switch (toolAssistanceImage) {\r\n case ToolAssistanceImage.AcceptPoint:\r\n svgImage = acceptPointIcon;\r\n break;\r\n case ToolAssistanceImage.CursorClick:\r\n svgImage = cursorClickIcon;\r\n break;\r\n case ToolAssistanceImage.LeftClick:\r\n svgImage = clickLeftIcon;\r\n break;\r\n case ToolAssistanceImage.RightClick:\r\n svgImage = clickRightIcon;\r\n break;\r\n case ToolAssistanceImage.MouseWheel:\r\n svgImage = mouseWheelClickIcon;\r\n break;\r\n case ToolAssistanceImage.LeftClickDrag:\r\n svgImage = clickLeftDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.RightClickDrag:\r\n svgImage = clickRightDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.MouseWheelClickDrag:\r\n svgImage = clickMouseWheelDragIcon;\r\n className = mediumSize ? \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n case ToolAssistanceImage.OneTouchTap:\r\n svgImage = oneTouchTapIcon;\r\n break;\r\n case ToolAssistanceImage.OneTouchDoubleTap:\r\n svgImage = oneTouchDoubleTapIcon;\r\n break;\r\n case ToolAssistanceImage.OneTouchDrag:\r\n svgImage = oneTouchDragIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchTap:\r\n svgImage = twoTouchTapIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchDrag:\r\n svgImage = twoTouchDragIcon;\r\n break;\r\n case ToolAssistanceImage.TwoTouchPinch:\r\n svgImage = twoTouchPinchIcon;\r\n break;\r\n case ToolAssistanceImage.TouchCursorTap:\r\n svgImage = touchCursorTapIcon;\r\n break;\r\n case ToolAssistanceImage.TouchCursorDrag:\r\n svgImage = touchCursorDragIcon;\r\n className = mediumSize ? /* istanbul ignore next */ \"uifw-toolassistance-svg-medium-wide\" : \"uifw-toolassistance-svg-wide\";\r\n break;\r\n }\r\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgImage);\r\n image = (\r\n <div className={className}>\r\n {svgImage &&\r\n // istanbul ignore next\r\n <Icon iconSpec={iconSpec} />\r\n }\r\n </div>\r\n );\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getInstructionKeyboardImage(keyboardInfo: ToolAssistanceKeyboardInfo): React.ReactNode {\r\n let image: React.ReactNode;\r\n\r\n if (keyboardInfo.bottomKeys !== undefined) {\r\n image = (\r\n <div className=\"uifw-toolassistance-key-group\">\r\n <span className=\"row1\">\r\n {keyboardInfo.keys.map((key: string, index1: number) => {\r\n return ToolAssistanceField.getKeyNode(key, index1, \"uifw-toolassistance-key-small\");\r\n })}\r\n </span>\r\n <br />\r\n <span className=\"row2\">\r\n {keyboardInfo.bottomKeys.map((key: string, index2: number) => {\r\n return ToolAssistanceField.getKeyNode(key, index2, \"uifw-toolassistance-key-small\");\r\n })}\r\n </span>\r\n </div>\r\n );\r\n } else if (keyboardInfo.keys.length === 2) {\r\n image = (\r\n <FillCentered>\r\n {keyboardInfo.keys.map((key: string, index3: number) => {\r\n let className = \"uifw-toolassistance-key-medium\";\r\n if (key.length > 1)\r\n className = \"uifw-toolassistance-key-modifier\";\r\n return ToolAssistanceField.getKeyNode(key, index3, className);\r\n })}\r\n </FillCentered>\r\n );\r\n } else if (keyboardInfo.keys[0]) {\r\n if (keyboardInfo.keys[0].length > 1)\r\n image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0, \"uifw-toolassistance-key-large\");\r\n else\r\n image = ToolAssistanceField.getKeyNode(keyboardInfo.keys[0], 0);\r\n } else {\r\n Logger.logError(UiFramework.loggerCategory(this), `ToolAssistanceImage.Keyboard specified but ToolAssistanceKeyboardInfo not valid`);\r\n }\r\n\r\n return image;\r\n }\r\n\r\n private static getKeyNode(key: string, index: number, className?: string): React.ReactNode {\r\n return (\r\n <div key={index.toString()} className={classnames(\"uifw-toolassistance-key\", className)}>\r\n <FillCentered>{key}</FillCentered>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiShowHideManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"UiShowHideManager.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -177,6 +177,14 @@ class UiShowHideManager {
|
|
|
177
177
|
/** @internal */
|
|
178
178
|
static terminate() {
|
|
179
179
|
UiShowHideManager.cancelTimer();
|
|
180
|
+
// Ensure that next use will have default values for tests.
|
|
181
|
+
UiShowHideManager._isUiVisible = true;
|
|
182
|
+
UiShowHideManager._autoHideUi = true;
|
|
183
|
+
UiShowHideManager._showHidePanels = false;
|
|
184
|
+
UiShowHideManager._showHideFooter = false;
|
|
185
|
+
UiShowHideManager._inactivityTime = exports.INACTIVITY_TIME_DEFAULT;
|
|
186
|
+
UiShowHideManager._useProximityOpacity = false;
|
|
187
|
+
UiShowHideManager._snapWidgetOpacity = false;
|
|
180
188
|
}
|
|
181
189
|
}
|
|
182
190
|
exports.UiShowHideManager = UiShowHideManager;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UiShowHideManager.js","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Utilities\r\n */\r\n\r\nimport { UiStateStorage, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n/** Class that maintain UiShowHide user settings between sessions\r\n * @internal\r\n */\r\nexport class UiShowHideSettingsProvider implements UserSettingsProvider {\r\n private static _settingsNamespace = \"AppUiSettings\";\r\n private static _autoHideUiKey = \"AutoHideUi\";\r\n private static _useProximityOpacityKey = \"UseProximityOpacity\";\r\n private static _snapWidgetOpacityKey = \"SnapWidgetOpacity\";\r\n public readonly providerId = \"UiShowHideSettingsProvider\";\r\n\r\n public static initialize() {\r\n UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());\r\n }\r\n\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n let result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._autoHideUiKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setAutoHideUi(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._useProximityOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setUseProximityOpacity(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._snapWidgetOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setSnapWidgetOpacity(result.setting);\r\n }\r\n\r\n public static async storeAutoHideUi(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._autoHideUiKey, v);\r\n }\r\n\r\n public static async storeUseProximityOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._useProximityOpacityKey, v);\r\n }\r\n\r\n public static async storeSnapWidgetOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);\r\n }\r\n}\r\n\r\n/** The default inactivity time.\r\n * @internal\r\n */\r\nexport const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */\r\n\r\n/** Maintains Ui Show/Hide state. The `Ui` includes widgets, panels and the status bar.\r\n * @public\r\n */\r\nexport class UiShowHideManager {\r\n private static _isUiVisible: boolean = true;\r\n private static _autoHideUi: boolean = true;\r\n private static _showHidePanels: boolean = false;\r\n private static _showHideFooter: boolean = false;\r\n private static _inactivityTime: number = INACTIVITY_TIME_DEFAULT;\r\n private static _timeout: NodeJS.Timeout;\r\n private static _useProximityOpacity: boolean = false;\r\n private static _snapWidgetOpacity: boolean = false;\r\n\r\n /** Determines if the Ui is visible */\r\n public static get isUiVisible() {\r\n return UiShowHideManager._isUiVisible;\r\n }\r\n public static set isUiVisible(visible: boolean) {\r\n UiShowHideManager._isUiVisible = visible;\r\n }\r\n\r\n /** @internal */\r\n public static setAutoHideUi(value: boolean) {\r\n UiShowHideManager._autoHideUi = value;\r\n }\r\n\r\n /** @internal */\r\n public static setUseProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n }\r\n\r\n /** @internal */\r\n public static setSnapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n }\r\n\r\n /** Determines whether the `auto-hide Ui` feature is on. Defaults to false.\r\n * When true, the Ui automatically hides after a few seconds of inactivity.\r\n */\r\n public static get autoHideUi(): boolean {\r\n return UiShowHideManager._autoHideUi;\r\n }\r\n\r\n public static set autoHideUi(autoHide: boolean) {\r\n void UiShowHideSettingsProvider.storeAutoHideUi(autoHide);\r\n UiShowHideManager._autoHideUi = autoHide;\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n }\r\n /** Determines whether the widget panels are shown and hidden. Defaults to false. */\r\n public static get showHidePanels(): boolean {\r\n return UiShowHideManager._showHidePanels;\r\n }\r\n public static set showHidePanels(showHide: boolean) {\r\n UiShowHideManager._showHidePanels = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the status bar is shown and hidden. Defaults to false. */\r\n public static get showHideFooter(): boolean {\r\n return UiShowHideManager._showHideFooter;\r\n }\r\n public static set showHideFooter(showHide: boolean) {\r\n UiShowHideManager._showHideFooter = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines the amount of inactivity time before the Ui is hidden. Defaults to 3.5 seconds. */\r\n public static get inactivityTime(): number {\r\n return UiShowHideManager._inactivityTime;\r\n }\r\n public static set inactivityTime(time: number) {\r\n UiShowHideManager._inactivityTime = time;\r\n }\r\n\r\n /** Determines whether the proximity of the mouse should alter the opacity of a toolbar. Defaults to true. */\r\n public static get useProximityOpacity(): boolean {\r\n return UiShowHideManager._useProximityOpacity;\r\n }\r\n public static set useProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n void UiShowHideSettingsProvider.storeUseProximityOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the opacity of a toolbar should snap. Defaults to false. */\r\n public static get snapWidgetOpacity(): boolean {\r\n return UiShowHideManager._snapWidgetOpacity;\r\n }\r\n public static set snapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n void UiShowHideSettingsProvider.storeSnapWidgetOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Handler for when a Frontstage is ready */\r\n public static handleFrontstageReady() {\r\n // istanbul ignore next\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse moves over the content area */\r\n public static handleContentMouseMove(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse enters a widget */\r\n public static handleWidgetMouseEnter(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndCancelTimer();\r\n }\r\n\r\n /** Shows the Ui and resets the inactivity timer */\r\n public static showUiAndResetTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.resetTimer();\r\n });\r\n }\r\n\r\n /** Shows the Ui and cancels the inactivity timer */\r\n public static showUiAndCancelTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.cancelTimer();\r\n });\r\n }\r\n\r\n private static cancelTimer() {\r\n clearTimeout(UiShowHideManager._timeout);\r\n }\r\n\r\n private static resetTimer() {\r\n UiShowHideManager.cancelTimer();\r\n UiShowHideManager._timeout = setTimeout(UiShowHideManager.hideUi, UiShowHideManager._inactivityTime);\r\n }\r\n\r\n private static showUi() {\r\n UiFramework.setIsUiVisible(true);\r\n }\r\n\r\n private static hideUi() {\r\n UiFramework.setIsUiVisible(false);\r\n }\r\n\r\n /** @internal */\r\n public static terminate() {\r\n UiShowHideManager.cancelTimer();\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"UiShowHideManager.js","sourceRoot":"","sources":["../../../../src/appui-react/utils/UiShowHideManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Utilities\r\n */\r\n\r\nimport { UiStateStorage, UiStateStorageStatus } from \"@itwin/core-react\";\r\nimport { SyncUiEventDispatcher, SyncUiEventId } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework, UserSettingsProvider } from \"../UiFramework\";\r\n\r\n/** Class that maintain UiShowHide user settings between sessions\r\n * @internal\r\n */\r\nexport class UiShowHideSettingsProvider implements UserSettingsProvider {\r\n private static _settingsNamespace = \"AppUiSettings\";\r\n private static _autoHideUiKey = \"AutoHideUi\";\r\n private static _useProximityOpacityKey = \"UseProximityOpacity\";\r\n private static _snapWidgetOpacityKey = \"SnapWidgetOpacity\";\r\n public readonly providerId = \"UiShowHideSettingsProvider\";\r\n\r\n public static initialize() {\r\n UiFramework.registerUserSettingsProvider(new UiShowHideSettingsProvider());\r\n }\r\n\r\n public async loadUserSettings(storage: UiStateStorage): Promise<void> {\r\n let result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._autoHideUiKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setAutoHideUi(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._useProximityOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setUseProximityOpacity(result.setting);\r\n\r\n result = await storage.getSetting(UiShowHideSettingsProvider._settingsNamespace, UiShowHideSettingsProvider._snapWidgetOpacityKey);\r\n if (result.status === UiStateStorageStatus.Success)\r\n UiShowHideManager.setSnapWidgetOpacity(result.setting);\r\n }\r\n\r\n public static async storeAutoHideUi(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._autoHideUiKey, v);\r\n }\r\n\r\n public static async storeUseProximityOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._useProximityOpacityKey, v);\r\n }\r\n\r\n public static async storeSnapWidgetOpacity(v: boolean, storage?: UiStateStorage) {\r\n void (storage ?? UiFramework.getUiStateStorage()).saveSetting(this._settingsNamespace, this._snapWidgetOpacityKey, v);\r\n }\r\n}\r\n\r\n/** The default inactivity time.\r\n * @internal\r\n */\r\nexport const INACTIVITY_TIME_DEFAULT = 3500; /** Wait 3.5 seconds */\r\n\r\n/** Maintains Ui Show/Hide state. The `Ui` includes widgets, panels and the status bar.\r\n * @public\r\n */\r\nexport class UiShowHideManager {\r\n private static _isUiVisible: boolean = true;\r\n private static _autoHideUi: boolean = true;\r\n private static _showHidePanels: boolean = false;\r\n private static _showHideFooter: boolean = false;\r\n private static _inactivityTime: number = INACTIVITY_TIME_DEFAULT;\r\n private static _timeout: NodeJS.Timeout;\r\n private static _useProximityOpacity: boolean = false;\r\n private static _snapWidgetOpacity: boolean = false;\r\n\r\n /** Determines if the Ui is visible */\r\n public static get isUiVisible() {\r\n return UiShowHideManager._isUiVisible;\r\n }\r\n public static set isUiVisible(visible: boolean) {\r\n UiShowHideManager._isUiVisible = visible;\r\n }\r\n\r\n /** @internal */\r\n public static setAutoHideUi(value: boolean) {\r\n UiShowHideManager._autoHideUi = value;\r\n }\r\n\r\n /** @internal */\r\n public static setUseProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n }\r\n\r\n /** @internal */\r\n public static setSnapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n }\r\n\r\n /** Determines whether the `auto-hide Ui` feature is on. Defaults to false.\r\n * When true, the Ui automatically hides after a few seconds of inactivity.\r\n */\r\n public static get autoHideUi(): boolean {\r\n return UiShowHideManager._autoHideUi;\r\n }\r\n\r\n public static set autoHideUi(autoHide: boolean) {\r\n void UiShowHideSettingsProvider.storeAutoHideUi(autoHide);\r\n UiShowHideManager._autoHideUi = autoHide;\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n }\r\n /** Determines whether the widget panels are shown and hidden. Defaults to false. */\r\n public static get showHidePanels(): boolean {\r\n return UiShowHideManager._showHidePanels;\r\n }\r\n public static set showHidePanels(showHide: boolean) {\r\n UiShowHideManager._showHidePanels = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the status bar is shown and hidden. Defaults to false. */\r\n public static get showHideFooter(): boolean {\r\n return UiShowHideManager._showHideFooter;\r\n }\r\n public static set showHideFooter(showHide: boolean) {\r\n UiShowHideManager._showHideFooter = showHide;\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines the amount of inactivity time before the Ui is hidden. Defaults to 3.5 seconds. */\r\n public static get inactivityTime(): number {\r\n return UiShowHideManager._inactivityTime;\r\n }\r\n public static set inactivityTime(time: number) {\r\n UiShowHideManager._inactivityTime = time;\r\n }\r\n\r\n /** Determines whether the proximity of the mouse should alter the opacity of a toolbar. Defaults to true. */\r\n public static get useProximityOpacity(): boolean {\r\n return UiShowHideManager._useProximityOpacity;\r\n }\r\n public static set useProximityOpacity(value: boolean) {\r\n UiShowHideManager._useProximityOpacity = value;\r\n void UiShowHideSettingsProvider.storeUseProximityOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Determines whether the opacity of a toolbar should snap. Defaults to false. */\r\n public static get snapWidgetOpacity(): boolean {\r\n return UiShowHideManager._snapWidgetOpacity;\r\n }\r\n public static set snapWidgetOpacity(value: boolean) {\r\n UiShowHideManager._snapWidgetOpacity = value;\r\n void UiShowHideSettingsProvider.storeSnapWidgetOpacity(value);\r\n SyncUiEventDispatcher.dispatchImmediateSyncUiEvent(SyncUiEventId.ShowHideManagerSettingChange);\r\n UiFramework.onUiVisibilityChanged.emit({ visible: UiFramework.getIsUiVisible() });\r\n }\r\n\r\n /** Handler for when a Frontstage is ready */\r\n public static handleFrontstageReady() {\r\n // istanbul ignore next\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse moves over the content area */\r\n public static handleContentMouseMove(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndResetTimer();\r\n }\r\n\r\n /** Handler for when the mouse enters a widget */\r\n public static handleWidgetMouseEnter(_event?: React.MouseEvent<HTMLElement, MouseEvent>) {\r\n if (!UiShowHideManager._autoHideUi)\r\n return;\r\n\r\n UiShowHideManager.showUiAndCancelTimer();\r\n }\r\n\r\n /** Shows the Ui and resets the inactivity timer */\r\n public static showUiAndResetTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.resetTimer();\r\n });\r\n }\r\n\r\n /** Shows the Ui and cancels the inactivity timer */\r\n public static showUiAndCancelTimer() {\r\n setTimeout(() => {\r\n UiShowHideManager.showUi();\r\n UiShowHideManager.cancelTimer();\r\n });\r\n }\r\n\r\n private static cancelTimer() {\r\n clearTimeout(UiShowHideManager._timeout);\r\n }\r\n\r\n private static resetTimer() {\r\n UiShowHideManager.cancelTimer();\r\n UiShowHideManager._timeout = setTimeout(UiShowHideManager.hideUi, UiShowHideManager._inactivityTime);\r\n }\r\n\r\n private static showUi() {\r\n UiFramework.setIsUiVisible(true);\r\n }\r\n\r\n private static hideUi() {\r\n UiFramework.setIsUiVisible(false);\r\n }\r\n\r\n /** @internal */\r\n public static terminate() {\r\n UiShowHideManager.cancelTimer();\r\n // Ensure that next use will have default values for tests.\r\n UiShowHideManager._isUiVisible = true;\r\n UiShowHideManager._autoHideUi = true;\r\n UiShowHideManager._showHidePanels = false;\r\n UiShowHideManager._showHideFooter = false;\r\n UiShowHideManager._inactivityTime = INACTIVITY_TIME_DEFAULT;\r\n UiShowHideManager._useProximityOpacity = false;\r\n UiShowHideManager._snapWidgetOpacity = false;\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"AAMA;;GAEG;AAIH,OAAO,mBAAmB,CAAC;AAE3B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAsC,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAa,cAAc,EAAmB,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE3H,OAAO,EAIqF,gBAAgB,EAAE,cAAc,EAAE,aAAa,EAAwB,SAAS,EAC9H,QAAQ,EACrD,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,aAAa,EAAgE,MAAM,6BAA6B,CAAC;AAG1H,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAGtF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAgD,MAAM,sBAAsB,CAAC;AAC5G,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqD7C,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,aAAa,6BAgB5D;AAcD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,aAAa,QAejE;AAsBD,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,oBA8B/D;AAED,gBAAgB;AAChB,eAAO,MAAM,sBAAsB,oCAqBjC,CAAC;AAMH,gBAAgB;AAChB,wBAAgB,2BAA2B,CAAC,EAAE,aAAa,EAAE,EAAE;IAAE,aAAa,EAAE,aAAa,CAAA;CAAE,eAoD9F;AAED,gBAAgB;AAChB,wBAAgB,SAAS,mBAYxB;AAED,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,GAAG,aAAa,CAgC3I;AAED,gBAAgB;AAEhB,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,GAAG,aAAa,CAoEtJ;AAoBD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,CA0B1G;AAkBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,GAAG,aAAa,CAW7G;AAMD,aAAK,aAAa,GAChB,WAAW,GACX,SAAS,GACT,YAAY,GACZ,UAAU,GACV,UAAU,GACV,QAAQ,GACR,aAAa,GACb,WAAW,CAAC;AAed,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,qBAAqB,GAAG,aAAa,CA0BtF;AAED,gBAAgB;AAChB,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,GAAG,SAAS,EAAE,CAqFvG;AAED,gBAAgB;AAChB,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,EACpB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,SAAS,GACd,aAAa,CASf;AAED,gBAAgB;AAChB,wBAAgB,8BAA8B,CAAC,cAAc,EAAE,oBAAoB,GAAG,cAAc,IAAI;IACtG,MAAM,EAAE,oBAAoB,CAAC,OAAO,CAAC;IACrC,OAAO,EAAE,2BAA2B,CAAC;CACtC,CAIA;AAED,gBAAgB;AAChB,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,iBAiBvG;AAYD,gBAAgB;AAChB,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,aAAa,GAAG,aAAa,CAsDnF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAsE3G;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,kBAAkB,CAmB1E;
|
|
1
|
+
{"version":3,"file":"Frontstage.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widget-panels/Frontstage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -734,9 +734,9 @@ function packNineZoneState(state) {
|
|
|
734
734
|
return packed;
|
|
735
735
|
}
|
|
736
736
|
exports.packNineZoneState = packNineZoneState;
|
|
737
|
-
// TODO: clean-up of saved widgets.
|
|
738
737
|
// istanbul ignore next
|
|
739
|
-
function packSavedWidgets(
|
|
738
|
+
function packSavedWidgets(frontstageDef) {
|
|
739
|
+
let savedWidgets = [];
|
|
740
740
|
for (const widgetDef of frontstageDef.widgetDefs) {
|
|
741
741
|
const id = widgetDef.id;
|
|
742
742
|
const initialWidget = {
|
|
@@ -752,17 +752,25 @@ function packSavedWidgets(savedWidgets, frontstageDef) {
|
|
|
752
752
|
});
|
|
753
753
|
if (widget === initialWidget)
|
|
754
754
|
continue;
|
|
755
|
-
savedWidgets
|
|
756
|
-
|
|
757
|
-
|
|
755
|
+
savedWidgets.push(widget);
|
|
756
|
+
}
|
|
757
|
+
// Add previously saved widgets.
|
|
758
|
+
const prevSavedWidgets = frontstageDef.savedWidgetDefs || [];
|
|
759
|
+
for (const prevWidget of prevSavedWidgets) {
|
|
760
|
+
if (savedWidgets.find((w) => w.id === prevWidget.id))
|
|
761
|
+
continue;
|
|
762
|
+
savedWidgets.push(prevWidget);
|
|
758
763
|
}
|
|
764
|
+
// Limit number of saved widgets.
|
|
765
|
+
const maxWidgets = 100;
|
|
766
|
+
if (savedWidgets.length > maxWidgets)
|
|
767
|
+
savedWidgets = savedWidgets.slice(0, maxWidgets);
|
|
759
768
|
return savedWidgets;
|
|
760
769
|
}
|
|
761
770
|
// istanbul ignore next
|
|
762
|
-
function restoreSavedWidgets(
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
const savedWidget = savedWidgets[i];
|
|
771
|
+
function restoreSavedWidgets(frontstage) {
|
|
772
|
+
const savedWidgets = frontstage.savedWidgetDefs || [];
|
|
773
|
+
for (const savedWidget of savedWidgets) {
|
|
766
774
|
const widgetId = savedWidget.id;
|
|
767
775
|
const widgetDef = frontstage.findWidgetDef(widgetId);
|
|
768
776
|
if (!widgetDef)
|
|
@@ -773,11 +781,7 @@ function restoreSavedWidgets(savedWidgets, frontstage) {
|
|
|
773
781
|
if (savedWidget.popoutBounds) {
|
|
774
782
|
widgetDef.popoutBounds = core_react_1.Rectangle.create(savedWidget.popoutBounds);
|
|
775
783
|
}
|
|
776
|
-
savedWidgets = (0, immer_1.default)(savedWidgets, (draft) => {
|
|
777
|
-
draft.splice(i, 1);
|
|
778
|
-
});
|
|
779
784
|
}
|
|
780
|
-
return savedWidgets;
|
|
781
785
|
}
|
|
782
786
|
/** @internal */
|
|
783
787
|
function isPanelCollapsed(zoneStates, panelStates) {
|
|
@@ -993,12 +997,12 @@ function useSavedFrontstageState(frontstageDef) {
|
|
|
993
997
|
const setting = settingResult.setting;
|
|
994
998
|
if (setting.version >= version && setting.stateVersion >= stateVersion) {
|
|
995
999
|
const restored = restoreNineZoneState(frontstageDef, setting.nineZone);
|
|
996
|
-
|
|
1000
|
+
frontstageDef.savedWidgetDefs = setting.widgets;
|
|
1001
|
+
restoreSavedWidgets(frontstageDef);
|
|
997
1002
|
let state = addMissingWidgets(frontstageDef, restored);
|
|
998
1003
|
state = hideWidgets(state, frontstageDef);
|
|
999
1004
|
state = processPopoutWidgets(state, frontstageDef);
|
|
1000
1005
|
frontstageDef.nineZoneState = state;
|
|
1001
|
-
frontstageDef.savedWidgetDefs = savedWidgets;
|
|
1002
1006
|
return;
|
|
1003
1007
|
}
|
|
1004
1008
|
}
|
|
@@ -1013,14 +1017,16 @@ function useSaveFrontstageSettings(frontstageDef) {
|
|
|
1013
1017
|
const nineZone = useNineZoneState(frontstageDef);
|
|
1014
1018
|
const uiSettingsStorage = (0, useUiStateStorage_1.useUiStateStorageHandler)();
|
|
1015
1019
|
const saveSetting = React.useMemo(() => {
|
|
1016
|
-
return debounce(async (frontstage, state
|
|
1020
|
+
return debounce(async (frontstage, state) => {
|
|
1017
1021
|
const id = frontstage.id;
|
|
1022
|
+
const widgets = packSavedWidgets(frontstage);
|
|
1023
|
+
frontstage.savedWidgetDefs = widgets;
|
|
1018
1024
|
const setting = {
|
|
1019
1025
|
id,
|
|
1020
1026
|
version: frontstage.version,
|
|
1021
1027
|
stateVersion,
|
|
1022
1028
|
nineZone: packNineZoneState(state),
|
|
1023
|
-
widgets
|
|
1029
|
+
widgets,
|
|
1024
1030
|
};
|
|
1025
1031
|
await uiSettingsStorage.saveSetting(exports.FRONTSTAGE_SETTINGS_NAMESPACE, getFrontstageStateSettingName(id), setting);
|
|
1026
1032
|
}, 1000);
|
|
@@ -1033,8 +1039,7 @@ function useSaveFrontstageSettings(frontstageDef) {
|
|
|
1033
1039
|
React.useEffect(() => {
|
|
1034
1040
|
if (!nineZone || nineZone.draggedTab)
|
|
1035
1041
|
return;
|
|
1036
|
-
|
|
1037
|
-
saveSetting(frontstageDef, nineZone, savedWidgets);
|
|
1042
|
+
saveSetting(frontstageDef, nineZone);
|
|
1038
1043
|
}, [frontstageDef, nineZone, saveSetting]);
|
|
1039
1044
|
}
|
|
1040
1045
|
exports.useSaveFrontstageSettings = useSaveFrontstageSettings;
|
|
@@ -1166,6 +1171,7 @@ function useItemsManager(frontstageDef) {
|
|
|
1166
1171
|
const refreshNineZoneState = (def) => {
|
|
1167
1172
|
// Fired for both registered/unregistered. Update definitions and remove/add missing widgets.
|
|
1168
1173
|
def.updateWidgetDefs();
|
|
1174
|
+
restoreSavedWidgets(def);
|
|
1169
1175
|
let state = def.nineZoneState;
|
|
1170
1176
|
if (!state)
|
|
1171
1177
|
return;
|