@itwin/appui-react 3.2.0-dev.13 → 3.2.0-dev.16
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/accudraw/AccuDrawFieldContainer.js +4 -4
- package/lib/cjs/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js +6 -6
- package/lib/cjs/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
- package/lib/cjs/appui-react/accudraw/Calculator.d.ts.map +1 -1
- package/lib/cjs/appui-react/accudraw/Calculator.js +3 -2
- package/lib/cjs/appui-react/accudraw/Calculator.js.map +1 -1
- package/lib/cjs/appui-react/childwindow/ChildWindowManager.js +1 -1
- package/lib/cjs/appui-react/childwindow/ChildWindowManager.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js +1 -2
- package/lib/cjs/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js +2 -2
- package/lib/cjs/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js +2 -2
- package/lib/cjs/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js +1 -1
- package/lib/cjs/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js +35 -33
- package/lib/cjs/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js +1 -1
- package/lib/cjs/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/cjs/appui-react/toolbar/Toolbar.js +1 -1
- package/lib/cjs/appui-react/toolbar/Toolbar.js.map +1 -1
- package/lib/cjs/appui-react/widgets/BackstageAppButton.js +3 -3
- package/lib/cjs/appui-react/widgets/BackstageAppButton.js.map +1 -1
- package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts +1 -1
- package/lib/cjs/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
- package/lib/cjs/appui-react/widgets/BasicToolWidget.js.map +1 -1
- package/lib/cjs/appui-react/widgets/WidgetManager.js +1 -1
- package/lib/cjs/appui-react/widgets/WidgetManager.js.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js +4 -4
- package/lib/esm/appui-react/accudraw/AccuDrawFieldContainer.js.map +1 -1
- package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js +6 -6
- package/lib/esm/appui-react/accudraw/AccuDrawPopupManager.js.map +1 -1
- package/lib/esm/appui-react/accudraw/Calculator.d.ts.map +1 -1
- package/lib/esm/appui-react/accudraw/Calculator.js +5 -4
- package/lib/esm/appui-react/accudraw/Calculator.js.map +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowManager.js +1 -1
- package/lib/esm/appui-react/childwindow/ChildWindowManager.js.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.d.ts.map +1 -1
- package/lib/esm/appui-react/frontstage/FrontstageDef.js +1 -2
- package/lib/esm/appui-react/frontstage/FrontstageDef.js.map +1 -1
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js +2 -2
- package/lib/esm/appui-react/frontstage/ModalSettingsStage.js.map +1 -1
- package/lib/esm/appui-react/settings/ui/UiSettingsPage.js +2 -2
- package/lib/esm/appui-react/settings/ui/UiSettingsPage.js.map +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js +1 -1
- package/lib/esm/appui-react/statusfields/tileloading/TileLoadingIndicator.js.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.d.ts.map +1 -1
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js +20 -18
- package/lib/esm/appui-react/statusfields/toolassistance/ToolAssistanceField.js.map +1 -1
- package/lib/esm/appui-react/theme/ThemeManager.js +1 -1
- package/lib/esm/appui-react/theme/ThemeManager.js.map +1 -1
- package/lib/esm/appui-react/toolbar/Toolbar.js +1 -1
- package/lib/esm/appui-react/toolbar/Toolbar.js.map +1 -1
- package/lib/esm/appui-react/widgets/BackstageAppButton.js +3 -3
- package/lib/esm/appui-react/widgets/BackstageAppButton.js.map +1 -1
- package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts +1 -1
- package/lib/esm/appui-react/widgets/BasicToolWidget.d.ts.map +1 -1
- package/lib/esm/appui-react/widgets/BasicToolWidget.js.map +1 -1
- package/lib/esm/appui-react/widgets/WidgetManager.js +1 -1
- package/lib/esm/appui-react/widgets/WidgetManager.js.map +1 -1
- package/package.json +32 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TileLoadingIndicator.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/tileloading/TileLoadingIndicator.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,6BAA6B,CAAC;AACrC,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAA4B,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAahD;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK,CAAC,aAA0D;IAIxG,YAAY,KAAuB;QACjC,KAAK,CAAC,KAAK,CAAC,CAAC;QAIP,kBAAa,GAAG,CAAC,EAAY,EAAE,EAAE;YACvC,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC;YACvC,MAAM,KAAK,GAAG,EAAE,CAAC,aAAa,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;YAChC,MAAM,WAAW,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,0BAA0B,CAAC,GAAG,CAAC;YACzF,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YAEnC,uBAAuB;YACvB,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,IAAI,WAAW,KAAK,GAAG;gBAChD,OAAO,GAAG,IAAI,CAAC;YAEjB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,WAAW,KAAK,GAAG,CAAC;gBACjD,OAAO,GAAG,KAAK,CAAC;YAElB,IAAI,WAAW,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;gBACpC,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC,CAAC;gBAC5E,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,0DAA0D,KAAK,MAAM,KAAK,EAAE,CAAC,CAAC;aACjI;YAED,uBAAuB;YACvB,IAAI,WAAW,KAAK,GAAG,IAAI,QAAQ;gBACjC,QAAQ,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,MAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC;QAEM,YAAO,GAAG,CAAC,EAAY,EAAE,EAAE;YACjC,kDAAkD;YAClD,
|
|
1
|
+
{"version":3,"file":"TileLoadingIndicator.js","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/tileloading/TileLoadingIndicator.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module StatusBar\r\n */\r\n\r\nimport \"./TileLoadingIndicator.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { IModelApp, ScreenViewport, Viewport } from \"@itwin/core-frontend\";\r\nimport { ProgressLinear } from \"@itwin/itwinui-react\";\r\nimport { UiFramework } from \"../../UiFramework\";\r\nimport { StatusFieldProps } from \"../StatusFieldProps\";\r\n\r\n/** State for the [[TileLoadingIndicator]] component\r\n * @internal\r\n */\r\ninterface TileLoadingIndicatorState {\r\n label: string;\r\n progress: number;\r\n enabled: boolean;\r\n finished: boolean;\r\n}\r\n\r\n/** TileLoadingIndicator React component\r\n * @public\r\n */\r\nexport class TileLoadingIndicator extends React.PureComponent<StatusFieldProps, TileLoadingIndicatorState> {\r\n private _removeViewOpenListener?: () => void;\r\n private _removeOnRenderListener?: () => void;\r\n\r\n constructor(props: StatusFieldProps) {\r\n super(props);\r\n this.state = { label: \"\", progress: 0, enabled: false, finished: true };\r\n }\r\n\r\n private _refreshState = (vp: Viewport) => {\r\n const requested = vp.numRequestedTiles;\r\n const ready = vp.numReadyTiles;\r\n const total = ready + requested;\r\n const pctComplete = (total > 0) ? (ready / total) * 100 : /* istanbul ignore next */ 100;\r\n let enabled = this.state.enabled;\r\n let finished = this.state.finished;\r\n\r\n // istanbul ignore else\r\n if (!enabled && total !== 0 && pctComplete !== 100)\r\n enabled = true;\r\n\r\n if (enabled && (total === 0 || pctComplete === 100))\r\n enabled = false;\r\n\r\n if (pctComplete === 100 && !finished) {\r\n finished = true;\r\n Logger.logTrace(UiFramework.loggerCategory(this), `Tiles Finished Loading`);\r\n Logger.logTrace(UiFramework.loggerCategory(this), `Tiles Load Report (tiles finished / tiles requested): ${ready} / ${total}`);\r\n }\r\n\r\n // istanbul ignore else\r\n if (pctComplete !== 100 && finished)\r\n finished = false;\r\n\r\n this.setState({ label: `${ready} / ${total}`, progress: pctComplete, enabled, finished });\r\n };\r\n\r\n private _update = (vp: Viewport) => {\r\n // set progress animation before the next repaint.\r\n setTimeout(() => this._refreshState(vp));\r\n };\r\n\r\n private _onViewOpen = (vp: ScreenViewport) => {\r\n // istanbul ignore next\r\n this._removeOnRenderListener && this._removeOnRenderListener();\r\n this._removeOnRenderListener = vp.onRender.addListener(this._update);\r\n };\r\n\r\n public override componentDidMount() {\r\n // istanbul ignore next\r\n if (!IModelApp.viewManager)\r\n return;\r\n\r\n // get selected viewport\r\n const vp = IModelApp.viewManager.selectedView;\r\n\r\n // if view exists bind update routine to onRender loop, otherwise do so once the onViewOpen event runs\r\n // istanbul ignore else\r\n if (vp) {\r\n this._onViewOpen(vp);\r\n } else {\r\n this._removeViewOpenListener = IModelApp.viewManager.onViewOpen.addListener(this._onViewOpen);\r\n }\r\n }\r\n\r\n public override componentWillUnmount() {\r\n // istanbul ignore next\r\n if (!IModelApp.viewManager)\r\n return;\r\n\r\n // istanbul ignore next\r\n if (this._removeViewOpenListener)\r\n this._removeViewOpenListener();\r\n\r\n // istanbul ignore else\r\n if (this._removeOnRenderListener)\r\n this._removeOnRenderListener();\r\n }\r\n\r\n /** Renders TileLoadingIndicator */\r\n public override render() {\r\n const classes = classnames(\r\n \"uifw-tile-loading-bar\",\r\n this.state.enabled && \"uifw-tile-loading-bar-visible\",\r\n this.props.isInFooterMode && \"nz-footer-mode\",\r\n this.props.className,\r\n );\r\n return (\r\n <div className={classes} style={this.props.style}>\r\n <span>{this.state.label}</span>\r\n <ProgressLinear value={this.state.progress} />\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolAssistanceField.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ToolAssistanceField.d.ts","sourceRoot":"","sources":["../../../../../src/appui-react/statusfields/toolassistance/ToolAssistanceField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/* eslint-disable deprecation/deprecation */
|
|
5
6
|
/** @packageDocumentation
|
|
6
7
|
* @module Notification
|
|
7
8
|
*/
|
|
@@ -11,7 +12,7 @@ import * as React from "react";
|
|
|
11
12
|
import { Logger } from "@itwin/core-bentley";
|
|
12
13
|
import { IModelApp, ToolAssistanceImage, ToolAssistanceInputMethod, } from "@itwin/core-frontend";
|
|
13
14
|
import { IconSpecUtilities } from "@itwin/appui-abstract";
|
|
14
|
-
import { FillCentered, Icon, LocalStateStorage,
|
|
15
|
+
import { FillCentered, Icon, LocalStateStorage, UiCore, UiStateEntry, UiStateStorageStatus, } from "@itwin/core-react";
|
|
15
16
|
import { FooterPopup, ToolAssistanceInstruction as NZ_ToolAssistanceInstruction, TitleBarButton, ToolAssistance, ToolAssistanceDialog, ToolAssistanceItem, ToolAssistanceSeparator, } from "@itwin/appui-layout-react";
|
|
16
17
|
import { HorizontalTabs, ToggleSwitch } from "@itwin/itwinui-react";
|
|
17
18
|
import { CursorPrompt } from "../../cursor/cursorprompt/CursorPrompt";
|
|
@@ -19,22 +20,22 @@ import { FrontstageManager } from "../../frontstage/FrontstageManager";
|
|
|
19
20
|
import { MessageManager } from "../../messages/MessageManager";
|
|
20
21
|
import { UiFramework } from "../../UiFramework";
|
|
21
22
|
import { UiStateStorageContext } from "../../uistate/useUiStateStorage";
|
|
22
|
-
import acceptPointIcon from "./accept-point.svg
|
|
23
|
-
import cursorClickIcon from "./cursor-click.svg
|
|
24
|
-
import oneTouchDragIcon from "./gesture-one-finger-drag.svg
|
|
25
|
-
import oneTouchDoubleTapIcon from "./gesture-one-finger-tap-double.svg
|
|
26
|
-
import oneTouchTapIcon from "./gesture-one-finger-tap.svg
|
|
27
|
-
import twoTouchPinchIcon from "./gesture-pinch.svg
|
|
28
|
-
import twoTouchDragIcon from "./gesture-two-finger-drag.svg
|
|
29
|
-
import twoTouchTapIcon from "./gesture-two-finger-tap.svg
|
|
30
|
-
import clickLeftDragIcon from "./mouse-click-left-drag.svg
|
|
31
|
-
import clickLeftIcon from "./mouse-click-left.svg
|
|
32
|
-
import clickRightDragIcon from "./mouse-click-right-drag.svg
|
|
33
|
-
import clickRightIcon from "./mouse-click-right.svg
|
|
34
|
-
import clickMouseWheelDragIcon from "./mouse-click-wheel-drag.svg
|
|
35
|
-
import mouseWheelClickIcon from "./mouse-click-wheel.svg
|
|
36
|
-
import touchCursorDragIcon from "./touch-cursor-pan.svg
|
|
37
|
-
import touchCursorTapIcon from "./touch-cursor-point.svg
|
|
23
|
+
import acceptPointIcon from "./accept-point.svg";
|
|
24
|
+
import cursorClickIcon from "./cursor-click.svg";
|
|
25
|
+
import oneTouchDragIcon from "./gesture-one-finger-drag.svg";
|
|
26
|
+
import oneTouchDoubleTapIcon from "./gesture-one-finger-tap-double.svg";
|
|
27
|
+
import oneTouchTapIcon from "./gesture-one-finger-tap.svg";
|
|
28
|
+
import twoTouchPinchIcon from "./gesture-pinch.svg";
|
|
29
|
+
import twoTouchDragIcon from "./gesture-two-finger-drag.svg";
|
|
30
|
+
import twoTouchTapIcon from "./gesture-two-finger-tap.svg";
|
|
31
|
+
import clickLeftDragIcon from "./mouse-click-left-drag.svg";
|
|
32
|
+
import clickLeftIcon from "./mouse-click-left.svg";
|
|
33
|
+
import clickRightDragIcon from "./mouse-click-right-drag.svg";
|
|
34
|
+
import clickRightIcon from "./mouse-click-right.svg";
|
|
35
|
+
import clickMouseWheelDragIcon from "./mouse-click-wheel-drag.svg";
|
|
36
|
+
import mouseWheelClickIcon from "./mouse-click-wheel.svg";
|
|
37
|
+
import touchCursorDragIcon from "./touch-cursor-pan.svg";
|
|
38
|
+
import touchCursorTapIcon from "./touch-cursor-point.svg";
|
|
38
39
|
/** Tool Assistance Field React component.
|
|
39
40
|
* @public
|
|
40
41
|
*/
|
|
@@ -391,9 +392,10 @@ export class ToolAssistanceField extends React.Component {
|
|
|
391
392
|
className = mediumSize ? /* istanbul ignore next */ "uifw-toolassistance-svg-medium-wide" : "uifw-toolassistance-svg-wide";
|
|
392
393
|
break;
|
|
393
394
|
}
|
|
395
|
+
const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svgImage);
|
|
394
396
|
image = (React.createElement("div", { className: className }, svgImage &&
|
|
395
397
|
// istanbul ignore next
|
|
396
|
-
React.createElement(
|
|
398
|
+
React.createElement(Icon, { iconSpec: iconSpec })));
|
|
397
399
|
}
|
|
398
400
|
return image;
|
|
399
401
|
}
|
|
@@ -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/** @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, SvgSprite, 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?sprite\";\r\nimport cursorClickIcon from \"./cursor-click.svg?sprite\";\r\nimport oneTouchDragIcon from \"./gesture-one-finger-drag.svg?sprite\";\r\nimport oneTouchDoubleTapIcon from \"./gesture-one-finger-tap-double.svg?sprite\";\r\nimport oneTouchTapIcon from \"./gesture-one-finger-tap.svg?sprite\";\r\nimport twoTouchPinchIcon from \"./gesture-pinch.svg?sprite\";\r\nimport twoTouchDragIcon from \"./gesture-two-finger-drag.svg?sprite\";\r\nimport twoTouchTapIcon from \"./gesture-two-finger-tap.svg?sprite\";\r\nimport clickLeftDragIcon from \"./mouse-click-left-drag.svg?sprite\";\r\nimport clickLeftIcon from \"./mouse-click-left.svg?sprite\";\r\nimport clickRightDragIcon from \"./mouse-click-right-drag.svg?sprite\";\r\nimport clickRightIcon from \"./mouse-click-right.svg?sprite\";\r\nimport clickMouseWheelDragIcon from \"./mouse-click-wheel-drag.svg?sprite\";\r\nimport mouseWheelClickIcon from \"./mouse-click-wheel.svg?sprite\";\r\nimport touchCursorDragIcon from \"./touch-cursor-pan.svg?sprite\";\r\nimport touchCursorTapIcon from \"./touch-cursor-point.svg?sprite\";\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}\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 };\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}\r\n onClick={this._handleToolAssistanceIndicatorClick}\r\n title={tooltip}\r\n >\r\n {this.props.isInFooterMode ? prompt : undefined}\r\n </ToolAssistance>\r\n </div>\r\n <FooterPopup\r\n isOpen={this.props.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._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 // istanbul ignore else\r\n if (this.props.onOpenWidget)\r\n this.props.onOpenWidget(openWidget);\r\n\r\n if (!openWidget && this.state.isPinned) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isPinned: false });\r\n }\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\r\n image = (\r\n <div className={className}>\r\n {svgImage &&\r\n // istanbul ignore next\r\n <SvgSprite src={svgImage} />\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, 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}\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 };\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}\r\n onClick={this._handleToolAssistanceIndicatorClick}\r\n title={tooltip}\r\n >\r\n {this.props.isInFooterMode ? prompt : undefined}\r\n </ToolAssistance>\r\n </div>\r\n <FooterPopup\r\n isOpen={this.props.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._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 // istanbul ignore else\r\n if (this.props.onOpenWidget)\r\n this.props.onOpenWidget(openWidget);\r\n\r\n if (!openWidget && this.state.isPinned) {\r\n // istanbul ignore else\r\n if (this._isMounted)\r\n this.setState({ isPinned: false });\r\n }\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"]}
|
|
@@ -49,7 +49,7 @@ class ThemeManagerComponent extends React.Component {
|
|
|
49
49
|
window.setTimeout(() => document.documentElement.classList.remove("theme-transition"), 1000);
|
|
50
50
|
};
|
|
51
51
|
this._setWidgetOpacity = (opacity) => {
|
|
52
|
-
|
|
52
|
+
setTimeout(() => document.documentElement.style.setProperty("--buic-widget-opacity", opacity.toString()));
|
|
53
53
|
};
|
|
54
54
|
this._handleRefSet = (popupDiv) => {
|
|
55
55
|
var _a;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,aAAa,EAAa,MAAM,sBAAsB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;GAEG;AACH,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,6BAAe,CAAA;IACf,2BAAa,CAAA;AACf,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,kBAAkB,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAY3C,SAAS,eAAe,CAAC,KAAU;IACjC,MAAM,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAmB,CAAC,CAAE,8CAA8C;IAC9H,qBAAqB;IACrB,IAAI,CAAC,cAAc;QACjB,OAAO,SAAS,CAAC;IAEnB,OAAO;QACL,KAAK,EAAE,cAAc,CAAC,mBAAmB,CAAC,KAAK;QAC/C,aAAa,EAAE,cAAc,CAAC,mBAAmB,CAAC,aAAa;KAChE,CAAC;AACJ,CAAC;AAOD;GACG;AACH,MAAM,qBAAsB,SAAQ,KAAK,CAAC,SAA+C;IAAzF;;QAE2B,UAAK,GAAsB;YAClD,aAAa,EAAE,SAAS;SACzB,CAAC;QAcM,cAAS,GAAG,CAAC,KAAa,EAAE,EAAE;YACpC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC3D,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/F,CAAC,CAAC;QAEM,sBAAiB,GAAG,CAAC,OAAe,EAAE,EAAE;YAC9C,
|
|
1
|
+
{"version":3,"file":"ThemeManager.js","sourceRoot":"","sources":["../../../../src/appui-react/theme/ThemeManager.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module State\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { connect } from \"react-redux\";\r\nimport { ThemeProvider, ThemeType } from \"@itwin/itwinui-react\";\r\nimport { FrameworkState } from \"../redux/FrameworkState\";\r\nimport { UiFramework } from \"../UiFramework\";\r\n\r\n/** Enum for the Color Theme string.\r\n * @public\r\n */\r\nexport enum ColorTheme {\r\n Light = \"light\",\r\n Dark = \"dark\",\r\n}\r\n\r\n/** System preferred color theme.\r\n * @public\r\n */\r\nexport const SYSTEM_PREFERRED_COLOR_THEME = \"SYSTEM_PREFERRED\";\r\n\r\n/** The default widget opacity.\r\n * @public\r\n */\r\nexport const WIDGET_OPACITY_DEFAULT = 0.90;\r\n\r\n/** Properties of [[ThemeManagerComponent]].\r\n */\r\ninterface ThemeManagerProps {\r\n /** theme (\"light\", \"dark\", etc.) */\r\n theme: string;\r\n /* Widget Opacity */\r\n widgetOpacity: number;\r\n children?: React.ReactNode;\r\n}\r\n\r\nfunction mapStateToProps(state: any) {\r\n const frameworkState = state[UiFramework.frameworkStateKey] as FrameworkState; // since app sets up key, don't hard-code name\r\n // istanbul ignore if\r\n if (!frameworkState)\r\n return undefined;\r\n\r\n return {\r\n theme: frameworkState.configurableUiState.theme,\r\n widgetOpacity: frameworkState.configurableUiState.widgetOpacity,\r\n };\r\n}\r\n\r\n/** @internal */\r\ninterface ThemeManagerState {\r\n ownerDocument: Document | undefined;\r\n}\r\n\r\n/** ThemeManagerComponent handles setting themes.\r\n */\r\nclass ThemeManagerComponent extends React.Component<ThemeManagerProps, ThemeManagerState> {\r\n\r\n public override readonly state: ThemeManagerState = {\r\n ownerDocument: undefined,\r\n };\r\n\r\n public override componentDidMount() {\r\n this._setTheme(this.props.theme);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ThemeManagerProps) {\r\n if (this.props.theme !== prevProps.theme)\r\n this._setTheme(this.props.theme);\r\n const currentOpacity = document.documentElement.style.getPropertyValue(\"--buic-widget-opacity\");\r\n if (this.props.widgetOpacity.toString() !== currentOpacity)\r\n this._setWidgetOpacity(this.props.widgetOpacity);\r\n }\r\n\r\n private _setTheme = (theme: string) => {\r\n document.documentElement.classList.add(\"theme-transition\");\r\n document.documentElement.setAttribute(\"data-theme\", theme);\r\n window.setTimeout(() => document.documentElement.classList.remove(\"theme-transition\"), 1000);\r\n };\r\n\r\n private _setWidgetOpacity = (opacity: number) => {\r\n setTimeout(() =>\r\n document.documentElement.style.setProperty(\"--buic-widget-opacity\", opacity.toString()));\r\n };\r\n\r\n private _handleRefSet = (popupDiv: HTMLElement | null) => {\r\n const ownerDocument = popupDiv?.ownerDocument ?? undefined;\r\n if (ownerDocument) {\r\n this.setState({ ownerDocument });\r\n }\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const theme: ThemeType = (this.props.theme === SYSTEM_PREFERRED_COLOR_THEME) ? \"os\" : this.props.theme as ThemeType;\r\n\r\n return (\r\n <div style={{ height: \"100%\" }} ref={this._handleRefSet}>\r\n <ThemeProvider theme={theme} themeOptions={{ ownerDocument: this.state.ownerDocument }}>\r\n {this.props.children}\r\n </ThemeProvider>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * ThemeManager handles setting color themes.\r\n * This React component is Redux connected.\r\n * @public\r\n */\r\nexport const ThemeManager = connect(mapStateToProps)(ThemeManagerComponent); // eslint-disable-line @typescript-eslint/naming-convention\r\n"]}
|
|
@@ -24,7 +24,7 @@ export class Toolbar extends React.Component {
|
|
|
24
24
|
this._minToolbarSize = (ActionButtonItemDef.defaultButtonSize + 2);
|
|
25
25
|
this._handleSyncUiEvent = (args) => {
|
|
26
26
|
if (this._processSyncUiEvent(this.props.items, args)) {
|
|
27
|
-
|
|
27
|
+
setTimeout(() => {
|
|
28
28
|
// if sync event changed number of displayable buttons layout the toolbar and re-render
|
|
29
29
|
const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));
|
|
30
30
|
this.setState({ items });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/Toolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Item\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, NoChildrenProps, Orientation, ResizableContainerObserver, Size } from \"@itwin/core-react\";\r\nimport { Direction, Toolbar as NZ_Toolbar, ToolbarPanelAlignment } from \"@itwin/appui-layout-react\";\r\nimport { ActionButtonItemDef } from \"../shared/ActionButtonItemDef\";\r\nimport { AnyItemDef } from \"../shared/AnyItemDef\";\r\nimport { CustomItemDef } from \"../shared/CustomItemDef\";\r\nimport { ItemDefBase } from \"../shared/ItemDefBase\";\r\nimport { ItemList } from \"../shared/ItemMap\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { GroupItemDef } from \"./GroupItem\";\r\n\r\n/** Properties of [[Toolbar]] component. An ancestor of this toolbar must provide the WidgetOpacityContext.\r\n * @internal\r\n */\r\nexport interface ToolbarProps extends CommonProps, NoChildrenProps {\r\n /** Items of the toolbar. */\r\n items: ItemList;\r\n /** Orientation of the toolbar. */\r\n orientation: Orientation;\r\n /** Logging and debugging Id */\r\n toolbarId?: string;\r\n /** Describes to which direction the history/panel items are expanded. Defaults to: [[Direction.Bottom]] */\r\n expandsTo?: Direction; // eslint-disable-line deprecation/deprecation\r\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\r\n panelAlignment?: ToolbarPanelAlignment; // eslint-disable-line deprecation/deprecation\r\n /** initial size */\r\n initialSize?: Size;\r\n}\r\n\r\n/** State of [[Toolbar]] component.\r\n * @internal\r\n */\r\ninterface ToolbarState {\r\n width: number;\r\n height: number;\r\n items: React.ReactNode;\r\n}\r\n\r\n/** Toolbar React component.\r\n * @internal\r\n */\r\nexport class Toolbar extends React.Component<ToolbarProps, ToolbarState> {\r\n private _dimension: number = 0;\r\n private _minToolbarSize = (ActionButtonItemDef.defaultButtonSize + 2);\r\n\r\n public constructor(props: ToolbarProps) {\r\n super(props);\r\n\r\n const itemList = this.props.items;\r\n\r\n // Filter on GroupItemDef\r\n itemList.forEach((item: ItemDefBase) => {\r\n if (item instanceof GroupItemDef) {\r\n // istanbul ignore else\r\n if (!item.directionExplicit && this.props.expandsTo !== undefined)\r\n item.direction = this.props.expandsTo;\r\n }\r\n });\r\n\r\n // pick a reasonable initial size, when zone layout occurs a resize event will trigger to adjust this size.\r\n let width = (ActionButtonItemDef.defaultButtonSize + 2) * 3;\r\n let height = width;\r\n\r\n // istanbul ignore next\r\n if (props.initialSize) {\r\n width = props.initialSize.width;\r\n height = props.initialSize.height;\r\n }\r\n\r\n const items = this.generateToolbarItems(this.props.items, new Size(width, height));\r\n\r\n // let's set the default size big enough to hold a single button.\r\n this.state = {\r\n width,\r\n height,\r\n items,\r\n };\r\n }\r\n\r\n private get _toolbarId(): string {\r\n return this.props.toolbarId ? this.props.toolbarId : \"unknown\";\r\n }\r\n\r\n public override componentDidMount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this._handleSyncUiEvent);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(this._handleSyncUiEvent);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ToolbarProps, _prevState: ToolbarState) {\r\n if (this.props.items !== prevProps.items) {\r\n // if sync event changed number of displayable buttons layout the toolbar and re-render\r\n const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));\r\n this.setState({ items });\r\n }\r\n }\r\n\r\n private setCurrentStateValues(item: ItemDefBase): boolean {\r\n // if a stateFunc is specified call it to get current state values\r\n // istanbul ignore else\r\n if (item.stateFunc) { // eslint-disable-line deprecation/deprecation\r\n const itemState = item.stateFunc({ // eslint-disable-line deprecation/deprecation\r\n isVisible: item.isVisible, isEnabled: item.isEnabled, isPressed: item.isPressed, isActive: item.isActive, // eslint-disable-line deprecation/deprecation\r\n });\r\n item.isVisible = !!itemState.isVisible; // eslint-disable-line deprecation/deprecation\r\n item.isEnabled = !!itemState.isEnabled; // eslint-disable-line deprecation/deprecation\r\n item.isPressed = !!itemState.isPressed;\r\n item.isActive = !!itemState.isActive;\r\n return true;\r\n }\r\n // istanbul ignore next\r\n return false;\r\n }\r\n\r\n private _processSyncUiEvent(itemList: ItemList | ItemDefBase[] | AnyItemDef[] | undefined, args: UiSyncEventArgs): boolean {\r\n // istanbul ignore next\r\n if (!itemList || 0 === itemList.length)\r\n return false;\r\n\r\n let returnValue = false;\r\n\r\n // Review all the itemDefs to see if any are monitoring sync events in UiSyncEventArgs\r\n for (const item of itemList) {\r\n if (item.stateFunc && item.stateSyncIds && item.stateSyncIds.length > 0 && // eslint-disable-line deprecation/deprecation\r\n item.stateSyncIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) { // eslint-disable-line deprecation/deprecation\r\n if (item instanceof GroupItemDef) {\r\n this.setCurrentStateValues(item);\r\n this._processSyncUiEvent(item.items, args);\r\n } else {\r\n this.setCurrentStateValues(item);\r\n }\r\n returnValue = true;\r\n } else {\r\n // istanbul ignore next\r\n if (item instanceof GroupItemDef) {\r\n if (this._processSyncUiEvent(item.items, args))\r\n returnValue = true;\r\n }\r\n }\r\n }\r\n return returnValue;\r\n }\r\n\r\n private _handleSyncUiEvent = (args: UiSyncEventArgs): void => {\r\n if (this._processSyncUiEvent(this.props.items, args)) {\r\n setImmediate(() => {\r\n // if sync event changed number of displayable buttons layout the toolbar and re-render\r\n const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));\r\n this.setState({ items });\r\n });\r\n }\r\n };\r\n\r\n private layoutToolbarItems(itemList: ItemList): React.ReactNode[] {\r\n // istanbul ignore next -\r\n if (0 === itemList.length)\r\n return [];\r\n\r\n Logger.logInfo(UiFramework.loggerCategory(this), `Available space for toolbar [${this._toolbarId}] = ${this._dimension}`);\r\n\r\n const actionItems = new Array<ActionButtonItemDef>();\r\n let itemDimensions = 0;\r\n\r\n // Filter on ActionButtonItemDef\r\n itemList.forEach((item: ItemDefBase) => {\r\n // istanbul ignore else\r\n if (item.isVisible) { // eslint-disable-line deprecation/deprecation\r\n // istanbul ignore else\r\n if (item instanceof ActionButtonItemDef) {\r\n actionItems.push(item);\r\n }\r\n }\r\n });\r\n\r\n // Populate the overflow button\r\n let overflowItemDef: GroupItemDef | undefined;\r\n if (actionItems.length > 1) {\r\n // Get the item dimensions\r\n actionItems.forEach((item: ActionButtonItemDef) => {\r\n const itemSize = item.getDimension(this.props.orientation) + 1;\r\n itemDimensions += itemSize;\r\n Logger.logTrace(UiFramework.loggerCategory(this), ` Item [${item.id ? item.id : /* istanbul ignore next */ item.label}] has a size of ${itemSize} cumulative size=${itemDimensions}.`);\r\n });\r\n\r\n Logger.logInfo(UiFramework.loggerCategory(this), ` Needed toolbar size [${this._toolbarId}] = ${itemDimensions}`);\r\n\r\n // istanbul ignore next - currently unable to set size in unit test\r\n const padding = 2; // used just to insure button will fall inside tool box\r\n if (itemDimensions > (this._dimension - padding)) {\r\n const overflowItems: AnyItemDef[] = [];\r\n const lastItemIndex = actionItems.length - 1;\r\n let singleItemSize = 0;\r\n for (let index = lastItemIndex; index >= 0; index--) {\r\n // istanbul ignore next\r\n if (actionItems[index] instanceof CustomItemDef)\r\n continue;\r\n if (0 === singleItemSize)\r\n singleItemSize = actionItems[index].getDimension(this.props.orientation);\r\n\r\n const deletedItems = actionItems.splice(index, 1);\r\n // istanbul ignore else\r\n if (deletedItems.length === 1) {\r\n const item = deletedItems[0];\r\n overflowItems.unshift(item);\r\n Logger.logTrace(UiFramework.loggerCategory(this), ` * Item [${item.id ? item.id : /* istanbul ignore next */ item.label}] put into overflow items.`);\r\n\r\n let currentWidth = 0;\r\n actionItems.forEach((itemDef) => currentWidth += (itemDef.getDimension(this.props.orientation) + 1));\r\n itemDimensions = (currentWidth + singleItemSize);\r\n if (itemDimensions < (this._dimension - padding))\r\n break;\r\n }\r\n }\r\n\r\n overflowItemDef = new GroupItemDef({\r\n groupId: `overflow-group-${itemDimensions}-${actionItems.length}-${overflowItems.length}`,\r\n labelKey: \"UiFramework:general.overflow\",\r\n items: overflowItems,\r\n direction: this.props.expandsTo,\r\n });\r\n overflowItemDef.overflow = true;\r\n }\r\n }\r\n\r\n // Populate the toolbar items\r\n const toolbarItems = actionItems.map((item: ActionButtonItemDef, index: number) => {\r\n return item.toolbarReactNode(index);\r\n });\r\n\r\n // istanbul ignore next - currently unsure how to trigger sizing/resizing so overflow is never populated\r\n if (overflowItemDef)\r\n toolbarItems.push(overflowItemDef.toolbarReactNode());\r\n\r\n return toolbarItems;\r\n }\r\n\r\n private generateToolbarItems(itemList: ItemList, size: Size): React.ReactNode {\r\n this._dimension = (this.props.orientation === Orientation.Horizontal ? size.width : size.height);\r\n // istanbul ignore next - since sizing is not working in unit test size and dimension always set to default of 42\r\n if (this._dimension < this._minToolbarSize)\r\n this._dimension = this._minToolbarSize;\r\n\r\n return this.layoutToolbarItems(itemList);\r\n }\r\n\r\n // istanbul ignore next - currently unable to replicate resizing in unit test\r\n private _onResize = (width: number | undefined, height: number | undefined) => {\r\n width = width ?? this._minToolbarSize;\r\n height = height ?? this._minToolbarSize;\r\n // do allow toolbar to go to a size that doesn't show at least one button;\r\n if (width < this._minToolbarSize) width = this._minToolbarSize;\r\n if (height < this._minToolbarSize) height = this._minToolbarSize;\r\n if (this.state.width !== width || this.state.height !== height) {\r\n const items = this.generateToolbarItems(this.props.items, new Size(width, height));\r\n this.setState({ width, height, items });\r\n }\r\n };\r\n\r\n private hasVisibleItems(items: ItemList) {\r\n for (const item of items) {\r\n // istanbul ignore else\r\n if (item && item.isVisible) // eslint-disable-line deprecation/deprecation\r\n return true;\r\n }\r\n // istanbul ignore next\r\n return false;\r\n }\r\n\r\n public override render() {\r\n // istanbul ignore next\r\n if (0 === this.props.items.length || !this.hasVisibleItems(this.props.items)) {\r\n Logger.logTrace(UiFramework.loggerCategory(this), `---> nothing to render for ${this._toolbarId} `);\r\n return null;\r\n }\r\n\r\n Logger.logTrace(UiFramework.loggerCategory(this), `---> render ${this._toolbarId} `);\r\n return (\r\n <ResizableContainerObserver onResize={this._onResize}>\r\n <NZ_Toolbar // eslint-disable-line deprecation/deprecation\r\n style={this.props.style}\r\n className={this.props.className}\r\n expandsTo={this.props.expandsTo}\r\n panelAlignment={this.props.panelAlignment}\r\n items={\r\n <>\r\n {this.state.items}\r\n </>\r\n }\r\n />\r\n </ResizableContainerObserver>\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"Toolbar.js","sourceRoot":"","sources":["../../../../src/appui-react/toolbar/Toolbar.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Item\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { UiSyncEventArgs } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, NoChildrenProps, Orientation, ResizableContainerObserver, Size } from \"@itwin/core-react\";\r\nimport { Direction, Toolbar as NZ_Toolbar, ToolbarPanelAlignment } from \"@itwin/appui-layout-react\";\r\nimport { ActionButtonItemDef } from \"../shared/ActionButtonItemDef\";\r\nimport { AnyItemDef } from \"../shared/AnyItemDef\";\r\nimport { CustomItemDef } from \"../shared/CustomItemDef\";\r\nimport { ItemDefBase } from \"../shared/ItemDefBase\";\r\nimport { ItemList } from \"../shared/ItemMap\";\r\nimport { SyncUiEventDispatcher } from \"../syncui/SyncUiEventDispatcher\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { GroupItemDef } from \"./GroupItem\";\r\n\r\n/** Properties of [[Toolbar]] component. An ancestor of this toolbar must provide the WidgetOpacityContext.\r\n * @internal\r\n */\r\nexport interface ToolbarProps extends CommonProps, NoChildrenProps {\r\n /** Items of the toolbar. */\r\n items: ItemList;\r\n /** Orientation of the toolbar. */\r\n orientation: Orientation;\r\n /** Logging and debugging Id */\r\n toolbarId?: string;\r\n /** Describes to which direction the history/panel items are expanded. Defaults to: [[Direction.Bottom]] */\r\n expandsTo?: Direction; // eslint-disable-line deprecation/deprecation\r\n /** Describes how expanded panels are aligned. Defaults to: [[ToolbarPanelAlignment.Start]] */\r\n panelAlignment?: ToolbarPanelAlignment; // eslint-disable-line deprecation/deprecation\r\n /** initial size */\r\n initialSize?: Size;\r\n}\r\n\r\n/** State of [[Toolbar]] component.\r\n * @internal\r\n */\r\ninterface ToolbarState {\r\n width: number;\r\n height: number;\r\n items: React.ReactNode;\r\n}\r\n\r\n/** Toolbar React component.\r\n * @internal\r\n */\r\nexport class Toolbar extends React.Component<ToolbarProps, ToolbarState> {\r\n private _dimension: number = 0;\r\n private _minToolbarSize = (ActionButtonItemDef.defaultButtonSize + 2);\r\n\r\n public constructor(props: ToolbarProps) {\r\n super(props);\r\n\r\n const itemList = this.props.items;\r\n\r\n // Filter on GroupItemDef\r\n itemList.forEach((item: ItemDefBase) => {\r\n if (item instanceof GroupItemDef) {\r\n // istanbul ignore else\r\n if (!item.directionExplicit && this.props.expandsTo !== undefined)\r\n item.direction = this.props.expandsTo;\r\n }\r\n });\r\n\r\n // pick a reasonable initial size, when zone layout occurs a resize event will trigger to adjust this size.\r\n let width = (ActionButtonItemDef.defaultButtonSize + 2) * 3;\r\n let height = width;\r\n\r\n // istanbul ignore next\r\n if (props.initialSize) {\r\n width = props.initialSize.width;\r\n height = props.initialSize.height;\r\n }\r\n\r\n const items = this.generateToolbarItems(this.props.items, new Size(width, height));\r\n\r\n // let's set the default size big enough to hold a single button.\r\n this.state = {\r\n width,\r\n height,\r\n items,\r\n };\r\n }\r\n\r\n private get _toolbarId(): string {\r\n return this.props.toolbarId ? this.props.toolbarId : \"unknown\";\r\n }\r\n\r\n public override componentDidMount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.addListener(this._handleSyncUiEvent);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n SyncUiEventDispatcher.onSyncUiEvent.removeListener(this._handleSyncUiEvent);\r\n }\r\n\r\n public override componentDidUpdate(prevProps: ToolbarProps, _prevState: ToolbarState) {\r\n if (this.props.items !== prevProps.items) {\r\n // if sync event changed number of displayable buttons layout the toolbar and re-render\r\n const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));\r\n this.setState({ items });\r\n }\r\n }\r\n\r\n private setCurrentStateValues(item: ItemDefBase): boolean {\r\n // if a stateFunc is specified call it to get current state values\r\n // istanbul ignore else\r\n if (item.stateFunc) { // eslint-disable-line deprecation/deprecation\r\n const itemState = item.stateFunc({ // eslint-disable-line deprecation/deprecation\r\n isVisible: item.isVisible, isEnabled: item.isEnabled, isPressed: item.isPressed, isActive: item.isActive, // eslint-disable-line deprecation/deprecation\r\n });\r\n item.isVisible = !!itemState.isVisible; // eslint-disable-line deprecation/deprecation\r\n item.isEnabled = !!itemState.isEnabled; // eslint-disable-line deprecation/deprecation\r\n item.isPressed = !!itemState.isPressed;\r\n item.isActive = !!itemState.isActive;\r\n return true;\r\n }\r\n // istanbul ignore next\r\n return false;\r\n }\r\n\r\n private _processSyncUiEvent(itemList: ItemList | ItemDefBase[] | AnyItemDef[] | undefined, args: UiSyncEventArgs): boolean {\r\n // istanbul ignore next\r\n if (!itemList || 0 === itemList.length)\r\n return false;\r\n\r\n let returnValue = false;\r\n\r\n // Review all the itemDefs to see if any are monitoring sync events in UiSyncEventArgs\r\n for (const item of itemList) {\r\n if (item.stateFunc && item.stateSyncIds && item.stateSyncIds.length > 0 && // eslint-disable-line deprecation/deprecation\r\n item.stateSyncIds.some((value: string): boolean => args.eventIds.has(value.toLowerCase()))) { // eslint-disable-line deprecation/deprecation\r\n if (item instanceof GroupItemDef) {\r\n this.setCurrentStateValues(item);\r\n this._processSyncUiEvent(item.items, args);\r\n } else {\r\n this.setCurrentStateValues(item);\r\n }\r\n returnValue = true;\r\n } else {\r\n // istanbul ignore next\r\n if (item instanceof GroupItemDef) {\r\n if (this._processSyncUiEvent(item.items, args))\r\n returnValue = true;\r\n }\r\n }\r\n }\r\n return returnValue;\r\n }\r\n\r\n private _handleSyncUiEvent = (args: UiSyncEventArgs): void => {\r\n if (this._processSyncUiEvent(this.props.items, args)) {\r\n setTimeout(() => {\r\n // if sync event changed number of displayable buttons layout the toolbar and re-render\r\n const items = this.generateToolbarItems(this.props.items, new Size(this.state.width, this.state.height));\r\n this.setState({ items });\r\n });\r\n }\r\n };\r\n\r\n private layoutToolbarItems(itemList: ItemList): React.ReactNode[] {\r\n // istanbul ignore next -\r\n if (0 === itemList.length)\r\n return [];\r\n\r\n Logger.logInfo(UiFramework.loggerCategory(this), `Available space for toolbar [${this._toolbarId}] = ${this._dimension}`);\r\n\r\n const actionItems = new Array<ActionButtonItemDef>();\r\n let itemDimensions = 0;\r\n\r\n // Filter on ActionButtonItemDef\r\n itemList.forEach((item: ItemDefBase) => {\r\n // istanbul ignore else\r\n if (item.isVisible) { // eslint-disable-line deprecation/deprecation\r\n // istanbul ignore else\r\n if (item instanceof ActionButtonItemDef) {\r\n actionItems.push(item);\r\n }\r\n }\r\n });\r\n\r\n // Populate the overflow button\r\n let overflowItemDef: GroupItemDef | undefined;\r\n if (actionItems.length > 1) {\r\n // Get the item dimensions\r\n actionItems.forEach((item: ActionButtonItemDef) => {\r\n const itemSize = item.getDimension(this.props.orientation) + 1;\r\n itemDimensions += itemSize;\r\n Logger.logTrace(UiFramework.loggerCategory(this), ` Item [${item.id ? item.id : /* istanbul ignore next */ item.label}] has a size of ${itemSize} cumulative size=${itemDimensions}.`);\r\n });\r\n\r\n Logger.logInfo(UiFramework.loggerCategory(this), ` Needed toolbar size [${this._toolbarId}] = ${itemDimensions}`);\r\n\r\n // istanbul ignore next - currently unable to set size in unit test\r\n const padding = 2; // used just to insure button will fall inside tool box\r\n if (itemDimensions > (this._dimension - padding)) {\r\n const overflowItems: AnyItemDef[] = [];\r\n const lastItemIndex = actionItems.length - 1;\r\n let singleItemSize = 0;\r\n for (let index = lastItemIndex; index >= 0; index--) {\r\n // istanbul ignore next\r\n if (actionItems[index] instanceof CustomItemDef)\r\n continue;\r\n if (0 === singleItemSize)\r\n singleItemSize = actionItems[index].getDimension(this.props.orientation);\r\n\r\n const deletedItems = actionItems.splice(index, 1);\r\n // istanbul ignore else\r\n if (deletedItems.length === 1) {\r\n const item = deletedItems[0];\r\n overflowItems.unshift(item);\r\n Logger.logTrace(UiFramework.loggerCategory(this), ` * Item [${item.id ? item.id : /* istanbul ignore next */ item.label}] put into overflow items.`);\r\n\r\n let currentWidth = 0;\r\n actionItems.forEach((itemDef) => currentWidth += (itemDef.getDimension(this.props.orientation) + 1));\r\n itemDimensions = (currentWidth + singleItemSize);\r\n if (itemDimensions < (this._dimension - padding))\r\n break;\r\n }\r\n }\r\n\r\n overflowItemDef = new GroupItemDef({\r\n groupId: `overflow-group-${itemDimensions}-${actionItems.length}-${overflowItems.length}`,\r\n labelKey: \"UiFramework:general.overflow\",\r\n items: overflowItems,\r\n direction: this.props.expandsTo,\r\n });\r\n overflowItemDef.overflow = true;\r\n }\r\n }\r\n\r\n // Populate the toolbar items\r\n const toolbarItems = actionItems.map((item: ActionButtonItemDef, index: number) => {\r\n return item.toolbarReactNode(index);\r\n });\r\n\r\n // istanbul ignore next - currently unsure how to trigger sizing/resizing so overflow is never populated\r\n if (overflowItemDef)\r\n toolbarItems.push(overflowItemDef.toolbarReactNode());\r\n\r\n return toolbarItems;\r\n }\r\n\r\n private generateToolbarItems(itemList: ItemList, size: Size): React.ReactNode {\r\n this._dimension = (this.props.orientation === Orientation.Horizontal ? size.width : size.height);\r\n // istanbul ignore next - since sizing is not working in unit test size and dimension always set to default of 42\r\n if (this._dimension < this._minToolbarSize)\r\n this._dimension = this._minToolbarSize;\r\n\r\n return this.layoutToolbarItems(itemList);\r\n }\r\n\r\n // istanbul ignore next - currently unable to replicate resizing in unit test\r\n private _onResize = (width: number | undefined, height: number | undefined) => {\r\n width = width ?? this._minToolbarSize;\r\n height = height ?? this._minToolbarSize;\r\n // do allow toolbar to go to a size that doesn't show at least one button;\r\n if (width < this._minToolbarSize) width = this._minToolbarSize;\r\n if (height < this._minToolbarSize) height = this._minToolbarSize;\r\n if (this.state.width !== width || this.state.height !== height) {\r\n const items = this.generateToolbarItems(this.props.items, new Size(width, height));\r\n this.setState({ width, height, items });\r\n }\r\n };\r\n\r\n private hasVisibleItems(items: ItemList) {\r\n for (const item of items) {\r\n // istanbul ignore else\r\n if (item && item.isVisible) // eslint-disable-line deprecation/deprecation\r\n return true;\r\n }\r\n // istanbul ignore next\r\n return false;\r\n }\r\n\r\n public override render() {\r\n // istanbul ignore next\r\n if (0 === this.props.items.length || !this.hasVisibleItems(this.props.items)) {\r\n Logger.logTrace(UiFramework.loggerCategory(this), `---> nothing to render for ${this._toolbarId} `);\r\n return null;\r\n }\r\n\r\n Logger.logTrace(UiFramework.loggerCategory(this), `---> render ${this._toolbarId} `);\r\n return (\r\n <ResizableContainerObserver onResize={this._onResize}>\r\n <NZ_Toolbar // eslint-disable-line deprecation/deprecation\r\n style={this.props.style}\r\n className={this.props.className}\r\n expandsTo={this.props.expandsTo}\r\n panelAlignment={this.props.panelAlignment}\r\n items={\r\n <>\r\n {this.state.items}\r\n </>\r\n }\r\n />\r\n </ResizableContainerObserver>\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* @module Widget
|
|
7
7
|
*/
|
|
8
8
|
import * as React from "react";
|
|
9
|
-
import widgetIconSvg from "@bentley/icons-generic/icons/home.svg
|
|
9
|
+
import widgetIconSvg from "@bentley/icons-generic/icons/home.svg";
|
|
10
10
|
import { IconSpecUtilities } from "@itwin/appui-abstract";
|
|
11
11
|
import { Icon, useWidgetOpacityContext } from "@itwin/core-react";
|
|
12
12
|
import { AppButton } from "@itwin/appui-layout-react";
|
|
@@ -21,7 +21,7 @@ import { UiShowHideManager } from "../utils/UiShowHideManager";
|
|
|
21
21
|
export function BackstageAppButton(props) {
|
|
22
22
|
const backstageToggleCommand = React.useMemo(() => BackstageManager.getBackstageToggleCommand(props.icon), [props.icon]);
|
|
23
23
|
const backstageLabel = React.useMemo(() => props.label || backstageToggleCommand.tooltip, [backstageToggleCommand.tooltip, props.label]);
|
|
24
|
-
const [icon, setIcon] = React.useState(props.icon ? props.icon : IconSpecUtilities.
|
|
24
|
+
const [icon, setIcon] = React.useState(props.icon ? props.icon : IconSpecUtilities.createWebComponentIconSpec(widgetIconSvg));
|
|
25
25
|
const isInitialMount = React.useRef(true);
|
|
26
26
|
const useSmallAppButton = "1" !== useFrameworkVersion();
|
|
27
27
|
const divClassName = useSmallAppButton ? "uifw-app-button-small" : undefined;
|
|
@@ -39,7 +39,7 @@ export function BackstageAppButton(props) {
|
|
|
39
39
|
onElementRef(ref);
|
|
40
40
|
}
|
|
41
41
|
else {
|
|
42
|
-
setIcon(props.icon ? props.icon : IconSpecUtilities.
|
|
42
|
+
setIcon(props.icon ? props.icon : IconSpecUtilities.createWebComponentIconSpec(widgetIconSvg));
|
|
43
43
|
}
|
|
44
44
|
}, [props.icon, onElementRef]);
|
|
45
45
|
let buttonProximityScale;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackstageAppButton.js","sourceRoot":"","sources":["../../../../src/appui-react/widgets/BackstageAppButton.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,aAAa,MAAM,
|
|
1
|
+
{"version":3,"file":"BackstageAppButton.js","sourceRoot":"","sources":["../../../../src/appui-react/widgets/BackstageAppButton.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Widget\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport widgetIconSvg from \"@bentley/icons-generic/icons/home.svg\";\r\nimport { IconSpecUtilities } from \"@itwin/appui-abstract\";\r\nimport { Icon, useWidgetOpacityContext } from \"@itwin/core-react\";\r\nimport { AppButton } from \"@itwin/appui-layout-react\";\r\nimport { BackstageManager } from \"../backstage/BackstageManager\";\r\nimport { useFrameworkVersion } from \"../hooks/useFrameworkVersion\";\r\nimport { UiFramework } from \"../UiFramework\";\r\nimport { UiShowHideManager } from \"../utils/UiShowHideManager\";\r\n\r\n/**\r\n * Properties for the [[BackstageAppButton]] React component\r\n * @public\r\n */\r\nexport interface BackstageAppButtonProps {\r\n /** Icon specification for the App button */\r\n icon?: string;\r\n /** If specified overrides the default label shown in tooltip. */\r\n label?: string;\r\n /** If specified overrides the default action that displays the backstage. */\r\n execute?: () => void;\r\n}\r\n\r\n/**\r\n * BackstageAppButton used to toggle display of Backstage and is shown in the corner of the ToolWidget.\r\n * @public\r\n */\r\nexport function BackstageAppButton(props: BackstageAppButtonProps) {\r\n const backstageToggleCommand = React.useMemo(() => BackstageManager.getBackstageToggleCommand(props.icon), [props.icon]);\r\n const backstageLabel = React.useMemo(() => props.label || backstageToggleCommand.tooltip, [backstageToggleCommand.tooltip, props.label]);\r\n const [icon, setIcon] = React.useState(props.icon ? props.icon : IconSpecUtilities.createWebComponentIconSpec(widgetIconSvg));\r\n const isInitialMount = React.useRef(true);\r\n const useSmallAppButton = \"1\" !== useFrameworkVersion();\r\n const divClassName = useSmallAppButton ? \"uifw-app-button-small\" : undefined;\r\n const { onElementRef, proximityScale } = useWidgetOpacityContext();\r\n const ref = React.useRef<HTMLDivElement>(null);\r\n\r\n const handleClick = React.useCallback(() => {\r\n if (props.execute)\r\n props.execute();\r\n\r\n else\r\n backstageToggleCommand.execute();\r\n }, [backstageToggleCommand, props]);\r\n\r\n React.useEffect(() => {\r\n if (isInitialMount.current) {\r\n isInitialMount.current = false;\r\n onElementRef(ref);\r\n } else {\r\n setIcon(props.icon ? props.icon : IconSpecUtilities.createWebComponentIconSpec(widgetIconSvg));\r\n }\r\n }, [props.icon, onElementRef]);\r\n\r\n let buttonProximityScale: number | undefined;\r\n\r\n if (\"1\" !== useFrameworkVersion() && UiShowHideManager.useProximityOpacity && !UiFramework.isMobile()) {\r\n buttonProximityScale = proximityScale;\r\n }\r\n\r\n return (\r\n <div ref={ref} className={divClassName}>\r\n <AppButton\r\n small={useSmallAppButton}\r\n mouseProximity={buttonProximityScale}\r\n onClick={handleClick}\r\n icon={<Icon iconSpec={icon} />}\r\n title={backstageLabel} />\r\n </div>\r\n );\r\n}\r\n"]}
|
|
@@ -9,7 +9,7 @@ import { CommonToolbarItem } from "@itwin/appui-abstract";
|
|
|
9
9
|
export interface BasicToolWidgetProps {
|
|
10
10
|
/** if true include hide/isolate Models and Categories */
|
|
11
11
|
showCategoryAndModelsContextTools?: boolean;
|
|
12
|
-
/** Name of icon WebFont entry or if specifying an SVG symbol
|
|
12
|
+
/** Name of icon WebFont entry or if specifying an imported SVG symbol use "webSvg:" prefix to imported symbol Id. */
|
|
13
13
|
icon?: string;
|
|
14
14
|
/** optional set of additional items to include in horizontal toolbar */
|
|
15
15
|
additionalHorizontalItems?: CommonToolbarItem[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BasicToolWidget.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widgets/BasicToolWidget.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAIH,OAAO,EAAE,iBAAiB,EAAoC,MAAM,uBAAuB,CAAC;AAS5F;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,
|
|
1
|
+
{"version":3,"file":"BasicToolWidget.d.ts","sourceRoot":"","sources":["../../../../src/appui-react/widgets/BasicToolWidget.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAIH,OAAO,EAAE,iBAAiB,EAAoC,MAAM,uBAAuB,CAAC;AAS5F;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,yDAAyD;IACzD,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,qHAAqH;IACrH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,yBAAyB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChD,sEAAsE;IACtE,uBAAuB,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAC/C;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,eAgE1D"}
|