@itwin/imodel-components-react 4.0.0-dev.7 → 4.0.0-dev.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1 -91
- package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +1 -1
- package/lib/cjs/imodel-components-react/UiIModelComponents.js +1 -1
- package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +15 -17
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts +2 -2
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.scss +11 -12
- package/lib/cjs/imodel-components-react/color/Swatch.scss +4 -5
- package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +3 -4
- package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +3 -4
- package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +6 -7
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +6 -7
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +3 -3
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +3 -3
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +8 -7
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +5 -5
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +9 -11
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +10 -19
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.scss +8 -3
- package/lib/cjs/imodel-components-react/timeline/Scrubber.scss +11 -6
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +22 -24
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +15 -15
- package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +1 -1
- package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +1 -1
- package/lib/esm/imodel-components-react/UiIModelComponents.d.ts +1 -1
- package/lib/esm/imodel-components-react/UiIModelComponents.js +1 -1
- package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +15 -17
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts +2 -2
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.js +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.scss +11 -12
- package/lib/esm/imodel-components-react/color/Swatch.scss +4 -5
- package/lib/esm/imodel-components-react/editors/ColorEditor.scss +3 -4
- package/lib/esm/imodel-components-react/editors/WeightEditor.scss +3 -4
- package/lib/esm/imodel-components-react/lineweight/Swatch.scss +6 -7
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +6 -7
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +3 -3
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +3 -3
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +8 -7
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +5 -5
- package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +9 -11
- package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +11 -20
- package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/PlayerButton.scss +8 -3
- package/lib/esm/imodel-components-react/timeline/Scrubber.scss +11 -6
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +22 -24
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +15 -15
- package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +1 -1
- package/lib/esm/imodel-components-react/timeline/interfaces.js.map +1 -1
- package/package.json +31 -38
|
@@ -3,17 +3,16 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
|
|
6
|
-
@import "~@itwin/itwinui-css/scss/style/typography";
|
|
7
6
|
|
|
8
7
|
$components-color-editor-item-height: 100%;
|
|
9
8
|
|
|
10
9
|
.components-color-editor {
|
|
11
|
-
font-family:
|
|
12
|
-
font-size:
|
|
10
|
+
font-family: var(--iui-font-sans);
|
|
11
|
+
font-size: var(--iui-font-size-1);
|
|
13
12
|
color: $buic-foreground-body;
|
|
14
13
|
border: none;
|
|
15
14
|
box-sizing: border-box;
|
|
16
15
|
height: $components-color-editor-item-height;
|
|
17
16
|
display: flex;
|
|
18
17
|
align-items: center;
|
|
19
|
-
}
|
|
18
|
+
}
|
|
@@ -3,15 +3,14 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
|
|
6
|
-
@import "~@itwin/itwinui-css/scss/style/typography";
|
|
7
6
|
|
|
8
7
|
$components-weight-editor-item-height: 100%;
|
|
9
8
|
|
|
10
9
|
.components-weight-editor {
|
|
11
|
-
font-family:
|
|
12
|
-
font-size:
|
|
10
|
+
font-family: var(--iui-font-sans);
|
|
11
|
+
font-size: var(--iui-font-size-1);
|
|
13
12
|
color: $buic-foreground-body;
|
|
14
13
|
border: none;
|
|
15
14
|
box-sizing: border-box;
|
|
16
15
|
height: $components-weight-editor-item-height;
|
|
17
|
-
}
|
|
16
|
+
}
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
|
|
6
|
-
@import "~@itwin/itwinui-css/scss/style/typography";
|
|
7
6
|
|
|
8
7
|
.components-lineweight-swatch {
|
|
9
|
-
font-size:
|
|
8
|
+
font-size: var(--iui-font-size-1);
|
|
10
9
|
color: $buic-foreground-body;
|
|
11
10
|
border: none;
|
|
12
11
|
background: inherit;
|
|
@@ -28,22 +27,22 @@
|
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
&[disabled] {
|
|
31
|
-
opacity: .2;
|
|
30
|
+
opacity: 0.2;
|
|
32
31
|
cursor: default;
|
|
33
32
|
}
|
|
34
33
|
|
|
35
|
-
>span {
|
|
34
|
+
> span {
|
|
36
35
|
width: 1.5em;
|
|
37
36
|
text-align: right;
|
|
38
37
|
}
|
|
39
38
|
|
|
40
|
-
>div {
|
|
39
|
+
> div {
|
|
41
40
|
flex: 1;
|
|
42
41
|
background: $buic-foreground-body;
|
|
43
42
|
margin-left: 15px;
|
|
44
43
|
}
|
|
45
44
|
}
|
|
46
45
|
|
|
47
|
-
.components-lineweight-swatch.hide-label>span {
|
|
46
|
+
.components-lineweight-swatch.hide-label > span {
|
|
48
47
|
display: none;
|
|
49
|
-
}
|
|
48
|
+
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
color: $buic-foreground-body;
|
|
10
10
|
background: $buic-background-control;
|
|
11
11
|
border: 1px solid $buic-inputs-border;
|
|
12
|
-
border-radius:
|
|
12
|
+
border-radius: var(--iui-border-radius-1);
|
|
13
13
|
min-width: 100px;
|
|
14
14
|
|
|
15
15
|
&:not(.readonly):not([disabled]) {
|
|
@@ -23,7 +23,6 @@
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
.components-weightpicker-popup {
|
|
26
|
-
|
|
27
26
|
&.core-popup {
|
|
28
27
|
background: $buic-background-control;
|
|
29
28
|
border: 1px solid $buic-inputs-border;
|
|
@@ -34,20 +33,20 @@
|
|
|
34
33
|
background: $buic-background-control;
|
|
35
34
|
min-width: 60px;
|
|
36
35
|
padding: 0 4px;
|
|
37
|
-
border-radius:
|
|
36
|
+
border-radius: var(--iui-border-radius-1);
|
|
38
37
|
|
|
39
|
-
>ul {
|
|
38
|
+
> ul {
|
|
40
39
|
padding: 4px 0;
|
|
41
40
|
list-style: none;
|
|
42
41
|
margin: 0.25rem 0;
|
|
43
42
|
|
|
44
|
-
|
|
43
|
+
> .components-weightpicker-swatch:hover {
|
|
45
44
|
background: $buic-row-hover;
|
|
46
45
|
}
|
|
47
46
|
|
|
48
|
-
|
|
47
|
+
> .components-weightpicker-swatch.active {
|
|
49
48
|
background: $buic-row-selection;
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
}
|
|
53
|
-
}
|
|
52
|
+
}
|
|
@@ -14,7 +14,7 @@ export declare enum CubeNavigationHitBoxX {
|
|
|
14
14
|
Left = -1
|
|
15
15
|
}
|
|
16
16
|
/** @internal
|
|
17
|
-
* @deprecated
|
|
17
|
+
* @deprecated Use [[CubeNavigationHitBoxX]] */
|
|
18
18
|
export declare enum HitBoxX {
|
|
19
19
|
None = 0,
|
|
20
20
|
Right = 1,
|
|
@@ -27,7 +27,7 @@ export declare enum CubeNavigationHitBoxY {
|
|
|
27
27
|
Front = -1
|
|
28
28
|
}
|
|
29
29
|
/** @internal
|
|
30
|
-
* @deprecated
|
|
30
|
+
* @deprecated Use [[CubeNavigationHitBoxY]] */
|
|
31
31
|
export declare enum HitBoxY {
|
|
32
32
|
None = 0,
|
|
33
33
|
Back = 1,
|
|
@@ -40,7 +40,7 @@ export declare enum CubeNavigationHitBoxZ {
|
|
|
40
40
|
Bottom = -1
|
|
41
41
|
}
|
|
42
42
|
/** @internal
|
|
43
|
-
* @deprecated
|
|
43
|
+
* @deprecated [[CubeNavigationHitBoxZ]] */
|
|
44
44
|
export declare enum HitBoxZ {
|
|
45
45
|
None = 0,
|
|
46
46
|
Top = 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeNavigationAid.d.ts","sourceRoot":"","sources":["../../../../src/imodel-components-react/navigationaids/CubeNavigationAid.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,0BAA0B,CAAC;AAElC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAyC,QAAQ,EAAqB,QAAQ,EAAU,MAAM,sBAAsB,CAAC;AAC5H,OAAO,EAAa,gBAAgB,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAQ,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEpC,cAAc;AACd,oBAAY,qBAAqB;IAC/B,IAAI,IAAI;IACR,KAAK,IAAI;IACT,IAAI,KAAK;CACV;AACD;
|
|
1
|
+
{"version":3,"file":"CubeNavigationAid.d.ts","sourceRoot":"","sources":["../../../../src/imodel-components-react/navigationaids/CubeNavigationAid.tsx"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,7 @@ export var CubeNavigationHitBoxX;
|
|
|
21
21
|
CubeNavigationHitBoxX[CubeNavigationHitBoxX["Left"] = -1] = "Left";
|
|
22
22
|
})(CubeNavigationHitBoxX || (CubeNavigationHitBoxX = {}));
|
|
23
23
|
/** @internal
|
|
24
|
-
* @deprecated
|
|
24
|
+
* @deprecated Use [[CubeNavigationHitBoxX]] */
|
|
25
25
|
export var HitBoxX;
|
|
26
26
|
(function (HitBoxX) {
|
|
27
27
|
HitBoxX[HitBoxX["None"] = 0] = "None";
|
|
@@ -36,7 +36,7 @@ export var CubeNavigationHitBoxY;
|
|
|
36
36
|
CubeNavigationHitBoxY[CubeNavigationHitBoxY["Front"] = -1] = "Front";
|
|
37
37
|
})(CubeNavigationHitBoxY || (CubeNavigationHitBoxY = {}));
|
|
38
38
|
/** @internal
|
|
39
|
-
* @deprecated
|
|
39
|
+
* @deprecated Use [[CubeNavigationHitBoxY]] */
|
|
40
40
|
export var HitBoxY;
|
|
41
41
|
(function (HitBoxY) {
|
|
42
42
|
HitBoxY[HitBoxY["None"] = 0] = "None";
|
|
@@ -51,7 +51,7 @@ export var CubeNavigationHitBoxZ;
|
|
|
51
51
|
CubeNavigationHitBoxZ[CubeNavigationHitBoxZ["Bottom"] = -1] = "Bottom";
|
|
52
52
|
})(CubeNavigationHitBoxZ || (CubeNavigationHitBoxZ = {}));
|
|
53
53
|
/** @internal
|
|
54
|
-
* @deprecated
|
|
54
|
+
* @deprecated [[CubeNavigationHitBoxZ]] */
|
|
55
55
|
export var HitBoxZ;
|
|
56
56
|
(function (HitBoxZ) {
|
|
57
57
|
HitBoxZ[HitBoxZ["None"] = 0] = "None";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CubeNavigationAid.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/navigationaids/CubeNavigationAid.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 NavigationAids\r\n */\r\n\r\nimport \"./CubeNavigationAid.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Angle, AxisIndex, AxisOrder, Geometry, Matrix3d, Point2d, Vector2d, Vector3d, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { IModelApp, IModelConnection, Viewport } from \"@itwin/core-frontend\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { UiIModelComponents } from \"../UiIModelComponents\";\r\nimport { ViewportComponentEvents, ViewRotationChangeEventArgs } from \"../viewport/ViewportComponentEvents\";\r\nimport { Cube, Face } from \"./Cube\";\r\n\r\n/** @public */\r\nexport enum CubeNavigationHitBoxX {\r\n None = 0,\r\n Right = 1,\r\n Left = -1,\r\n}\r\n/** @internal\r\n * @deprecated in 2.x. Use [[CubeNavigationHitBoxX]] */\r\nexport enum HitBoxX {\r\n None = 0,\r\n Right = 1,\r\n Left = -1,\r\n}\r\n\r\n/** @public */\r\nexport enum CubeNavigationHitBoxY {\r\n None = 0,\r\n Back = 1,\r\n Front = -1,\r\n}\r\n/** @internal\r\n * @deprecated in 2.x. Use [[CubeNavigationHitBoxY]] */\r\nexport enum HitBoxY {\r\n None = 0,\r\n Back = 1,\r\n Front = -1,\r\n}\r\n\r\n/** @public */\r\nexport enum CubeNavigationHitBoxZ {\r\n None = 0,\r\n Top = 1,\r\n Bottom = -1,\r\n}\r\n/** @internal\r\n * @deprecated in 2.x. [[CubeNavigationHitBoxZ]] */\r\nexport enum HitBoxZ {\r\n None = 0,\r\n Top = 1,\r\n Bottom = -1,\r\n}\r\n\r\ninterface CubeNavigationRotationMap {\r\n up: Face;\r\n down: Face;\r\n left: Face;\r\n right: Face;\r\n}\r\n\r\nconst cubeNavigationFaceLocs: { [key: string]: Vector3d } = {\r\n [Face.Left]: Vector3d.create(CubeNavigationHitBoxX.Left, CubeNavigationHitBoxY.None, CubeNavigationHitBoxZ.None),\r\n [Face.Right]: Vector3d.create(CubeNavigationHitBoxX.Right, CubeNavigationHitBoxY.None, CubeNavigationHitBoxZ.None),\r\n [Face.Back]: Vector3d.create(CubeNavigationHitBoxX.None, CubeNavigationHitBoxY.Back, CubeNavigationHitBoxZ.None),\r\n [Face.Front]: Vector3d.create(CubeNavigationHitBoxX.None, CubeNavigationHitBoxY.Front, CubeNavigationHitBoxZ.None),\r\n [Face.Bottom]: Vector3d.create(CubeNavigationHitBoxX.None, CubeNavigationHitBoxY.None, CubeNavigationHitBoxZ.Bottom),\r\n [Face.Top]: Vector3d.create(CubeNavigationHitBoxX.None, CubeNavigationHitBoxY.None, CubeNavigationHitBoxZ.Top),\r\n};\r\n\r\nconst cubeNavigationFaceRotations: { [key: string]: Matrix3d } = {\r\n [Face.Left]: Matrix3d.createRowValues(0, -1, 0, 0, 0, 1, -1, 0, 0),\r\n [Face.Right]: Matrix3d.createRowValues(0, 1, 0, 0, 0, 1, 1, 0, 0),\r\n [Face.Back]: Matrix3d.createRowValues(-1, 0, 0, 0, 0, 1, 0, 1, 0),\r\n [Face.Front]: Matrix3d.createRowValues(1, 0, 0, 0, 0, 1, 0, -1, 0),\r\n [Face.Bottom]: Matrix3d.createRowValues(1, 0, 0, 0, -1, 0, 0, 0, -1),\r\n [Face.Top]: Matrix3d.createRowValues(1, 0, 0, 0, 1, 0, 0, 0, 1),\r\n};\r\n\r\n// data relating Up/Down/Left/Right directions relative to every surface\r\nconst cubeNavigationRoutes: { [key: string]: CubeNavigationRotationMap } = {\r\n [Face.Front]: { up: Face.Top, down: Face.Bottom, left: Face.Left, right: Face.Right },\r\n [Face.Back]: { up: Face.Top, down: Face.Bottom, left: Face.Right, right: Face.Left },\r\n [Face.Top]: { up: Face.Back, down: Face.Front, left: Face.Left, right: Face.Right },\r\n [Face.Bottom]: { up: Face.Front, down: Face.Back, left: Face.Left, right: Face.Right },\r\n [Face.Right]: { up: Face.Top, down: Face.Bottom, left: Face.Front, right: Face.Back },\r\n [Face.Left]: { up: Face.Top, down: Face.Bottom, left: Face.Back, right: Face.Front },\r\n};\r\n\r\n/** The default tolerance (1.0e-6) is appropriate if very dirty viewing operations are expected. */\r\nconst DEFAULT_TOLERANCE = 1.0e-6;\r\n\r\n/** @internal */\r\nexport enum CubeHover {\r\n None = 0,\r\n Hover,\r\n Active,\r\n}\r\n\r\n/** Properties for the [[CubeNavigationAid]] component\r\n * @public\r\n */\r\nexport interface CubeNavigationAidProps extends CommonProps {\r\n iModelConnection: IModelConnection;\r\n viewport?: Viewport;\r\n\r\n // used only in testing\r\n\r\n /** @internal */\r\n onAnimationEnd?: () => void;\r\n /** @internal */\r\n animationTime?: number;\r\n}\r\n\r\n/** @public */\r\ninterface CubeNavigationAidState {\r\n dragging: boolean;\r\n startRotMatrix: Matrix3d;\r\n endRotMatrix: Matrix3d;\r\n animation: number;\r\n hoverMap: { [key: string]: CubeHover };\r\n face: Face;\r\n}\r\n\r\n/** Cube Navigation Aid Component\r\n * @public\r\n */\r\nexport class CubeNavigationAid extends React.Component<CubeNavigationAidProps, CubeNavigationAidState> {\r\n private _start: Vector2d = Vector2d.createZero();\r\n /** @internal */\r\n public override readonly state: Readonly<CubeNavigationAidState> = {\r\n dragging: false,\r\n startRotMatrix: Matrix3d.createIdentity(),\r\n endRotMatrix: Matrix3d.createIdentity(),\r\n animation: 1,\r\n hoverMap: {},\r\n face: Face.Top,\r\n };\r\n\r\n private _lastTime: number | undefined;\r\n private _animationFrame: any;\r\n private _mounted: boolean = false;\r\n private _labels: { [key: string]: string } = {\r\n [Face.Right]: UiIModelComponents.translate(\"cube.right\"),\r\n [Face.Left]: UiIModelComponents.translate(\"cube.left\"),\r\n [Face.Back]: UiIModelComponents.translate(\"cube.back\"),\r\n [Face.Front]: UiIModelComponents.translate(\"cube.front\"),\r\n [Face.Top]: UiIModelComponents.translate(\"cube.top\"),\r\n [Face.Bottom]: UiIModelComponents.translate(\"cube.bottom\"),\r\n };\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n ViewportComponentEvents.onViewRotationChangeEvent.addListener(this._handleViewRotationChangeEvent);\r\n\r\n // set initial rotation\r\n if (this.props.viewport) {\r\n const newMatrix = this.props.viewport.view.getRotation().clone();\r\n this.setState({ startRotMatrix: newMatrix, endRotMatrix: newMatrix, animation: 1 });\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n ViewportComponentEvents.onViewRotationChangeEvent.removeListener(this._handleViewRotationChangeEvent);\r\n clearTimeout(this._animationFrame);\r\n this._mounted = false;\r\n }\r\n\r\n // Synchronize with rotation coming from the Viewport\r\n private _handleViewRotationChangeEvent = (args: ViewRotationChangeEventArgs) => {\r\n const { animation, dragging, endRotMatrix } = this.state;\r\n // istanbul ignore else\r\n if (this.props.viewport === args.viewport && animation >= 1 && !dragging) {\r\n const newMatrix = this.props.viewport.view.getRotation().clone();\r\n if (!endRotMatrix.isAlmostEqual(newMatrix)) {\r\n this.setState({ startRotMatrix: newMatrix, endRotMatrix: newMatrix, animation: 1, face: Face.None });\r\n }\r\n }\r\n };\r\n\r\n private _animation = () => {\r\n const t = Date.now();\r\n const delta = this._lastTime ? t - this._lastTime : 16;\r\n this._lastTime = t;\r\n if (this.state.animation !== 1) {\r\n const animation = Math.min(1, this.state.animation + delta / (1000 * (this.props.animationTime || /* istanbul ignore next */ 0.4)));\r\n\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({ animation }, () => {\r\n this._animationFrame = setTimeout(this._animation, 16.667);\r\n });\r\n }\r\n } else {\r\n this._lastTime = undefined;\r\n this._animationEnd();\r\n }\r\n };\r\n\r\n private _animationEnd = () => {\r\n ViewportComponentEvents.setCubeMatrix(this.state.endRotMatrix, this.state.face, true);\r\n const startRotMatrix = this.state.endRotMatrix.clone();\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({ startRotMatrix }, () => {\r\n // istanbul ignore else\r\n if (this.props.onAnimationEnd)\r\n this.props.onAnimationEnd();\r\n });\r\n }\r\n };\r\n\r\n private static _animationFn = (t: number) => t < .5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t;\r\n\r\n private static _isMatrixFace = (matrix: Matrix3d): boolean => {\r\n let sum = 0;\r\n for (const coff of matrix.coffs) {\r\n if (Geometry.isAlmostEqualNumber(Math.abs(coff), 1))\r\n sum++;\r\n }\r\n // Assuming matrix is a proper rotation matrix:\r\n // if matrix viewing a face, there will be a total of 3 values either almost -1, or almost 1.\r\n return sum === 3;\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const { animation, startRotMatrix, endRotMatrix } = this.state;\r\n const visible = CubeNavigationAid._isMatrixFace(endRotMatrix) && animation === 1.0;\r\n const rotMatrix = CubeNavigationAid._interpolateRotMatrix(startRotMatrix, animation, endRotMatrix);\r\n if (rotMatrix !== startRotMatrix && rotMatrix !== endRotMatrix)\r\n ViewportComponentEvents.setCubeMatrix(rotMatrix, Face.None);\r\n\r\n const faces: { [key: string]: React.ReactNode } = {};\r\n for (const key in this._labels) {\r\n // istanbul ignore else\r\n if (this._labels.hasOwnProperty(key)) {\r\n const f = key as Face;\r\n const label = this._labels[f];\r\n faces[f] =\r\n <NavCubeFace\r\n face={f}\r\n label={label}\r\n hoverMap={this.state.hoverMap}\r\n onFaceCellClick={this._handleFaceCellClick}\r\n onFaceCellHoverChange={this._handleCellHoverChange} />;\r\n }\r\n }\r\n\r\n const cubeClassNames = classnames(\r\n \"nav-cube\",\r\n this.state.dragging && \"cube-dragging\",\r\n );\r\n\r\n const upTitle = this.getArrowTitle(Pointer.Up);\r\n const downTitle = this.getArrowTitle(Pointer.Down);\r\n const leftTitle = this.getArrowTitle(Pointer.Left);\r\n const rightTitle = this.getArrowTitle(Pointer.Right);\r\n\r\n return (\r\n <div className={classnames(\"components-cube-container\", this.props.className)}\r\n style={this.props.style}\r\n data-testid=\"components-cube-navigation-aid\"\r\n onMouseDown={this._handleBoxMouseDown}\r\n onTouchStart={this._handleBoxTouchStart}\r\n role=\"presentation\"\r\n >\r\n <div className={\"cube-element-container\"}>\r\n <Cube\r\n className={cubeClassNames}\r\n rotMatrix={rotMatrix}\r\n faces={faces} />\r\n </div>\r\n <PointerButton data-testid=\"cube-pointer-button-up\"\r\n visible={visible} pointerType={Pointer.Up} onArrowClick={this._onArrowClick} title={upTitle} />\r\n <PointerButton data-testid=\"cube-pointer-button-down\"\r\n visible={visible} pointerType={Pointer.Down} onArrowClick={this._onArrowClick} title={downTitle} />\r\n <PointerButton data-testid=\"cube-pointer-button-left\"\r\n visible={visible} pointerType={Pointer.Left} onArrowClick={this._onArrowClick} title={leftTitle} />\r\n <PointerButton data-testid=\"cube-pointer-button-right\"\r\n visible={visible} pointerType={Pointer.Right} onArrowClick={this._onArrowClick} title={rightTitle} />\r\n </div>\r\n );\r\n }\r\n\r\n private _handleCellHoverChange = (vect: Vector3d, state: CubeHover) => {\r\n if (this._isInteractionLocked()) {\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n const hoverMap = this.state.hoverMap;\r\n hoverMap[`${vect.x}-${vect.y}-${vect.z}`] = state;\r\n this.setState({ hoverMap });\r\n };\r\n\r\n private _isInteractionLocked = () => {\r\n // Locked by markup\r\n if(undefined !== this.props.viewport && this.props.viewport === IModelApp.toolAdmin.markupView) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n private static _getMatrixFace = (rotMatrix: Matrix3d): Face => {\r\n if (!CubeNavigationAid._isMatrixFace(rotMatrix)) {\r\n return Face.None;\r\n }\r\n\r\n let matrixFace = Face.None;\r\n\r\n for (const face in cubeNavigationFaceRotations) {\r\n // istanbul ignore else\r\n if (face in cubeNavigationFaceRotations) {\r\n const loc = cubeNavigationFaceRotations[face];\r\n if (rotMatrix.isAlmostEqual(loc)) {\r\n matrixFace = face as Face;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matrixFace;\r\n };\r\n\r\n private static _interpolateRotMatrix = (start: Matrix3d, anim: number, end: Matrix3d): Matrix3d => {\r\n if (anim === 0)\r\n return start;\r\n if (anim === 1 || start.isAlmostEqual(end))\r\n return end;\r\n const startInverse = start.transpose();\r\n const diff = end.multiplyMatrixMatrix(startInverse);\r\n const angleAxis = diff.getAxisAndAngleOfRotation();\r\n // istanbul ignore else\r\n if (angleAxis.ok) {\r\n const angle = Angle.createRadians(angleAxis.angle.radians * CubeNavigationAid._animationFn(anim));\r\n const newDiff = Matrix3d.createRotationAroundVector(angleAxis.axis, angle);\r\n // istanbul ignore else\r\n if (newDiff) {\r\n const newMatrix = newDiff.multiplyMatrixMatrix(start);\r\n return newMatrix;\r\n }\r\n }\r\n // istanbul ignore next\r\n return end;\r\n };\r\n\r\n private static correctSmallNumber(value: number, tolerance: number): number {\r\n return Math.abs(value) < tolerance ? 0 : value;\r\n }\r\n\r\n /**\r\n * Snap coordinates of a vector to zero and to each other so that the vector prefers to be\r\n * * perpendicular to a face of the unit cube.\r\n * * or pass through a nearby vertex or edge of the unit cube.\r\n * @param zVector existing z vector.\r\n * @param tolerance tolerance to determine if a z vector component is close to zero or 1.\r\n */\r\n private static snapVectorToCubeFeatures(zVector: XYAndZ, tolerance: number): Vector3d {\r\n const x = CubeNavigationAid.correctSmallNumber(zVector.x, tolerance);\r\n let y = CubeNavigationAid.correctSmallNumber(zVector.y, tolerance);\r\n let z = CubeNavigationAid.correctSmallNumber(zVector.z, tolerance);\r\n\r\n const xx = Math.abs(x);\r\n const yy = Math.abs(y);\r\n const zz = Math.abs(z);\r\n\r\n // adjust any adjacent pair of near equal values to the first.\r\n // istanbul ignore next\r\n if (Geometry.isSameCoordinate(xx, yy, tolerance)) {\r\n y = Geometry.split3WaySign(y, -xx, xx, xx);\r\n }\r\n if (Geometry.isSameCoordinate(yy, zz, tolerance)) {\r\n z = Geometry.split3WaySign(z, -yy, yy, yy);\r\n }\r\n if (Geometry.isSameCoordinate(xx, zz, tolerance)) {\r\n z = Geometry.split3WaySign(z, -xx, xx, xx);\r\n }\r\n return Vector3d.create(x, y, z);\r\n }\r\n\r\n /**\r\n * Adjust a worldToView matrix to favor both\r\n * * direct view at faces, edges, and corners of a view cube.\r\n * * heads up\r\n * @param worldToView candidate matrix\r\n * @param tolerance tolerance for cleaning up fuzz. The default (1.0e-6) is appropriate if very dirty viewing operations are expected.\r\n * @param result optional result.\r\n */\r\n private static snapWorldToViewMatrixToCubeFeatures(worldToView: Matrix3d, tolerance: number, result?: Matrix3d): Matrix3d {\r\n const oldZ = worldToView.rowZ();\r\n const newZ = CubeNavigationAid.snapVectorToCubeFeatures(oldZ, tolerance);\r\n // If newZ is true up or down, it will have true 0 for x and y.\r\n // special case this to take x direction from the input.\r\n // istanbul ignore next\r\n if (newZ.x === 0.0 && newZ.y === 0) {\r\n const perpVector = worldToView.rowX();\r\n result = Matrix3d.createRigidFromColumns(newZ, perpVector, AxisOrder.ZXY, result)!;\r\n } else {\r\n result = Matrix3d.createRigidViewAxesZTowardsEye(newZ.x, newZ.y, newZ.z, result);\r\n }\r\n // istanbul ignore else\r\n if (result)\r\n result.transposeInPlace();\r\n return result;\r\n }\r\n\r\n private getArrowRotationAndFace(arrow: Pointer): { newRotation: Matrix3d, face: Face } {\r\n const localRotationAxis = Vector3d.create(0, 0, 0);\r\n switch (arrow) {\r\n case Pointer.Up:\r\n localRotationAxis.x = -1.0;\r\n break;\r\n case Pointer.Down:\r\n localRotationAxis.x = 1.0;\r\n break;\r\n case Pointer.Left:\r\n localRotationAxis.y = -1.0;\r\n break;\r\n default:\r\n localRotationAxis.y = 1.0;\r\n break;\r\n }\r\n const localRotation = Matrix3d.createRotationAroundVector(localRotationAxis, Angle.createDegrees(-90))!;\r\n const newRotation = localRotation.multiplyMatrixMatrix(this.state.endRotMatrix);\r\n CubeNavigationAid.snapWorldToViewMatrixToCubeFeatures(newRotation, DEFAULT_TOLERANCE, newRotation);\r\n const face = CubeNavigationAid._getMatrixFace(newRotation);\r\n return { newRotation, face };\r\n }\r\n\r\n private _onArrowClick = (arrow: Pointer) => {\r\n if (this._isInteractionLocked()) {\r\n // istanbul ignore next\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n const { newRotation, face } = this.getArrowRotationAndFace(arrow);\r\n this._animateRotation(newRotation, face);\r\n };\r\n\r\n private getArrowTitle(arrow: Pointer) {\r\n const { face } = this.getArrowRotationAndFace(arrow);\r\n return this._labels[face];\r\n }\r\n\r\n private _lastClientXY: Vector2d = Vector2d.createZero();\r\n private _processDrag(mousePos: Vector2d) {\r\n // istanbul ignore else\r\n if (!this._start.isAlmostEqual(mousePos)) {\r\n const movement = mousePos.minus(this._lastClientXY);\r\n const diff = movement.scale(0.05);\r\n\r\n const yaw = Angle.createRadians(diff.x);\r\n const pitch = Angle.createRadians(diff.y);\r\n\r\n const matX = Matrix3d.createRotationAroundAxisIndex(AxisIndex.X, pitch);\r\n const matZ = Matrix3d.createRotationAroundAxisIndex(AxisIndex.Z, yaw);\r\n\r\n const mat = matX.multiplyMatrixMatrix(this.state.startRotMatrix).multiplyMatrixMatrix(matZ);\r\n this._setRotation(mat, CubeNavigationAid._getMatrixFace(mat));\r\n if (!this.state.dragging)\r\n this.setState({ dragging: true });\r\n }\r\n this._lastClientXY = mousePos;\r\n }\r\n\r\n private _handleBoxMouseDown = (event: any) => {\r\n if (this._isInteractionLocked()) {\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n event.preventDefault();\r\n // only start listening after drag is confirmed. Ie. the 3D box is clicked.\r\n window.addEventListener(\"mousemove\", this._onMouseMove, false);\r\n window.addEventListener(\"mouseup\", this._onMouseUp, false);\r\n this._lastClientXY = Vector2d.create(event.clientX, event.clientY);\r\n this._start = this._lastClientXY;\r\n };\r\n\r\n private _onMouseMove = (event: MouseEvent) => {\r\n const mousePos = Vector2d.create(event.clientX, event.clientY);\r\n this._processDrag(mousePos);\r\n };\r\n\r\n private _onMouseUp = () => {\r\n if (this.state.dragging) {\r\n this.setState({ dragging: false });\r\n ViewportComponentEvents.setCubeMatrix(this.state.endRotMatrix, CubeNavigationAid._getMatrixFace(this.state.endRotMatrix), true);\r\n }\r\n\r\n // remove so event only triggers after this.onMouseStartDrag\r\n window.removeEventListener(\"mousemove\", this._onMouseMove);\r\n window.removeEventListener(\"mouseup\", this._onMouseUp);\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _handleBoxTouchStart = (event: any) => {\r\n if (this._isInteractionLocked()) {\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n if (1 !== event.targetTouches.length)\r\n return;\r\n window.addEventListener(\"touchmove\", this._onTouchMove, false);\r\n window.addEventListener(\"touchend\", this._onTouchEnd, false);\r\n this._lastClientXY = Vector2d.create(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\r\n this._start = this._lastClientXY;\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _onTouchMove = (event: TouchEvent) => {\r\n if (1 !== event.targetTouches.length)\r\n return;\r\n const mousePos = Vector2d.create(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\r\n this._processDrag(mousePos);\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _onTouchEnd = (event: TouchEvent) => {\r\n if (0 !== event.targetTouches.length)\r\n return;\r\n\r\n if (this.state.dragging) {\r\n this.setState({ dragging: false });\r\n ViewportComponentEvents.setCubeMatrix(this.state.endRotMatrix, CubeNavigationAid._getMatrixFace(this.state.endRotMatrix), true);\r\n }\r\n\r\n window.removeEventListener(\"touchmove\", this._onTouchMove);\r\n window.removeEventListener(\"touchend\", this._onTouchEnd);\r\n };\r\n\r\n private _handleFaceCellClick = (pos: Vector3d, face: Face) => {\r\n if (this._isInteractionLocked()) {\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n const { endRotMatrix } = this.state;\r\n let rotMatrix = Matrix3d.createRigidViewAxesZTowardsEye(pos.x, pos.y, pos.z).inverse();\r\n // istanbul ignore else\r\n if (rotMatrix) {\r\n // if isMatrixFace and user is clicking on top/bottom, the current matrix face must be top or bottom\r\n if (!CubeNavigationAid._isMatrixFace(endRotMatrix) && (face === Face.Top || face === Face.Bottom)) {\r\n const angleAxis = endRotMatrix.getAxisAndAngleOfRotation();\r\n // istanbul ignore else\r\n if (angleAxis.ok) {\r\n const xAx = endRotMatrix.columnX();\r\n const a = Math.atan2(xAx.y, xAx.x);\r\n const r = Math.round(a * 2 / Math.PI) * Math.PI / 2; // round to quarter turn intervals\r\n const rot = Matrix3d.createRotationAroundAxisIndex(AxisIndex.Z, Angle.createRadians(r));\r\n rotMatrix = rot.multiplyMatrixMatrix(rotMatrix);\r\n }\r\n }\r\n this._animateRotation(rotMatrix, face);\r\n }\r\n window.removeEventListener(\"mousemove\", this._onMouseMove);\r\n };\r\n\r\n private _animateRotation = (endRotMatrix: Matrix3d, face: Face) => {\r\n if (this.state.endRotMatrix.isAlmostEqual(endRotMatrix))\r\n return;\r\n // set animation variables, let css transitions animate it.\r\n this._animationFrame = setTimeout(this._animation, 16.667);\r\n this.setState((prevState) => ({\r\n startRotMatrix: prevState.endRotMatrix, endRotMatrix,\r\n animation: 0,\r\n face,\r\n }));\r\n };\r\n\r\n private _setRotation = (endRotMatrix: Matrix3d, face: Face) => {\r\n ViewportComponentEvents.setCubeMatrix(endRotMatrix, face);\r\n // set variables, with animTime at 0 to prevent animation.\r\n this.setState({\r\n startRotMatrix: endRotMatrix,\r\n endRotMatrix,\r\n animation: 1,\r\n face,\r\n });\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport interface NavCubeFaceProps extends React.AllHTMLAttributes<HTMLDivElement> {\r\n face: Face;\r\n label: string;\r\n hoverMap: { [key: string]: CubeHover };\r\n onFaceCellClick: (vector: Vector3d, face: Face) => void;\r\n onFaceCellHoverChange: (vector: Vector3d, state: CubeHover) => void;\r\n}\r\n\r\n/** @internal */\r\nexport class NavCubeFace extends React.Component<NavCubeFaceProps> {\r\n public override render(): React.ReactNode {\r\n const { face, hoverMap, onFaceCellClick, onFaceCellHoverChange, label } = this.props;\r\n return (\r\n <div className=\"nav-cube-face\" data-testid=\"nav-cube-face\">\r\n {[-1, 0, 1].map((y: number) => {\r\n return (\r\n <FaceRow key={y} center={y === 0}>\r\n {[-1, 0, 1].map((x: number) => {\r\n return (\r\n <FaceCell\r\n key={x}\r\n onFaceCellHoverChange={onFaceCellHoverChange}\r\n onFaceCellClick={onFaceCellClick}\r\n hoverMap={hoverMap}\r\n vector={NavCubeFace.faceCellToPos(face, x, y)}\r\n face={face}\r\n center={x === 0}>\r\n {x === 0 && y === 0 &&\r\n label}\r\n </FaceCell>\r\n );\r\n })}\r\n </FaceRow>\r\n );\r\n })}\r\n </div>\r\n );\r\n }\r\n public static faceCellToPos = (face: Face, x: number, y: number) => {\r\n const faceVect = cubeNavigationFaceLocs[face];\r\n const route = cubeNavigationRoutes[face];\r\n\r\n const faceX = x < 0 ? route.left : x > 0 ? route.right : Face.None;\r\n const xVect = faceX !== Face.None ? cubeNavigationFaceLocs[faceX] : Vector3d.createZero();\r\n\r\n const faceY = y < 0 ? route.up : y > 0 ? route.down : Face.None;\r\n const yVect = faceY !== Face.None ? cubeNavigationFaceLocs[faceY] : Vector3d.createZero();\r\n\r\n return faceVect.plus(xVect).plus(yVect);\r\n };\r\n}\r\n\r\ninterface FaceRowProps extends React.AllHTMLAttributes<HTMLDivElement> {\r\n center?: boolean;\r\n}\r\n\r\nclass FaceRow extends React.Component<FaceRowProps> {\r\n public override render(): React.ReactNode {\r\n const { center, children, ...props } = this.props;\r\n const classNames = classnames(\r\n \"face-row\",\r\n center && \"cube-center\",\r\n );\r\n return <div className={classNames} {...props}>{children}</div>;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface FaceCellProps extends React.AllHTMLAttributes<HTMLDivElement> {\r\n center?: boolean;\r\n onFaceCellClick: (vector: Vector3d, face: Face) => void;\r\n onFaceCellHoverChange: (vector: Vector3d, state: CubeHover) => void;\r\n hoverMap: { [key: string]: CubeHover };\r\n vector: Vector3d;\r\n face: Face;\r\n}\r\n\r\n/** @internal */\r\nexport class FaceCell extends React.Component<FaceCellProps> {\r\n private _startMouse: Point2d | undefined;\r\n public override render(): React.ReactNode {\r\n const { center, children, onFaceCellClick, onFaceCellHoverChange, hoverMap, face, vector, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n const { x, y, z } = vector;\r\n const n = `${x}-${y}-${z}`;\r\n const hover = hoverMap[n] === CubeHover.Hover;\r\n const active = hoverMap[n] === CubeHover.Active;\r\n const classNames = classnames(\r\n \"face-cell\",\r\n center && \"cube-center\",\r\n hover && \"cube-hover\",\r\n active && \"cube-active\",\r\n );\r\n\r\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\r\n return <div\r\n onMouseDown={this._handleMouseDown}\r\n onMouseUp={this._handleMouseUp}\r\n onMouseOver={this._handleMouseOver}\r\n onMouseOut={this._handleMouseOut}\r\n onTouchStart={this._handleTouchStart}\r\n onTouchEnd={this._handleTouchEnd}\r\n data-testid={`nav-cube-face-cell-${face}-${n}`}\r\n className={classNames}\r\n role=\"presentation\"\r\n {...props}\r\n >\r\n {children}\r\n </div>;\r\n }\r\n private _handleMouseOver = () => {\r\n const { vector } = this.props;\r\n this.props.onFaceCellHoverChange(vector, CubeHover.Hover);\r\n };\r\n private _handleMouseOut = () => {\r\n const { vector } = this.props;\r\n this.props.onFaceCellHoverChange(vector, CubeHover.None);\r\n };\r\n private _handleMouseDown = (event: React.MouseEvent) => {\r\n const { clientX, clientY } = event;\r\n this.handlePointerDown(clientX, clientY);\r\n };\r\n private _handleMouseUp = (event: React.MouseEvent) => {\r\n const { clientX, clientY } = event;\r\n this.handlePointerUp(clientX, clientY);\r\n };\r\n\r\n private _handleTouchStart = (event: React.TouchEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n event.targetTouches.length === 1 && this.handlePointerDown(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\r\n };\r\n\r\n private _handleTouchEnd = (event: React.TouchEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n event.changedTouches.length === 1 && this.handlePointerUp(event.changedTouches[0].clientX, event.changedTouches[0].clientY);\r\n };\r\n\r\n private handlePointerDown(x: number, y: number) {\r\n const { vector } = this.props;\r\n this._startMouse = Point2d.create(x, y);\r\n this.props.onFaceCellHoverChange(vector, CubeHover.Active);\r\n }\r\n\r\n private handlePointerUp(x: number, y: number) {\r\n const { vector, face } = this.props;\r\n this.props.onFaceCellHoverChange(vector, CubeHover.None);\r\n const mouse = Point2d.create(x, y);\r\n if (this._startMouse && this._startMouse.isAlmostEqual(mouse)) {\r\n const isFace = Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z) === 1;\r\n this.props.onFaceCellClick(vector, isFace ? face : Face.None);\r\n }\r\n }\r\n}\r\n\r\nenum Pointer {\r\n None = 0,\r\n Up,\r\n Down,\r\n Left,\r\n Right,\r\n}\r\n\r\nconst pointerIconClass: { [key: number]: string } = {\r\n [Pointer.Up]: \"icon-caret-down\",\r\n [Pointer.Down]: \"icon-caret-up\",\r\n [Pointer.Left]: \"icon-caret-right\",\r\n [Pointer.Right]: \"icon-caret-left\",\r\n};\r\n\r\nconst pointerClass: { [key: number]: string } = {\r\n [Pointer.Up]: \"cube-up\",\r\n [Pointer.Down]: \"cube-down\",\r\n [Pointer.Left]: \"cube-left\",\r\n [Pointer.Right]: \"cube-right\",\r\n};\r\n\r\ninterface PointerProps extends React.AllHTMLAttributes<HTMLDivElement> {\r\n visible: boolean;\r\n pointerType: Pointer;\r\n onArrowClick(pointer: Pointer): void;\r\n title: string;\r\n [\"data-testid\"]?: string;\r\n}\r\n\r\nclass PointerButton extends React.Component<PointerProps> {\r\n public override render(): React.ReactNode {\r\n const { visible, pointerType, onArrowClick, title, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n const classes = classnames(\r\n \"cube-pointer\", \"icon\",\r\n pointerClass[pointerType],\r\n pointerIconClass[pointerType],\r\n visible && \"cube-visible\",\r\n );\r\n\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <div className={classes} role=\"button\" tabIndex={-1} title={title} {...props}\r\n onClick={this._handleClick} />\r\n );\r\n }\r\n private _handleClick = (event: React.MouseEvent) => {\r\n const { pointerType } = this.props;\r\n event.preventDefault();\r\n this.props.onArrowClick(pointerType);\r\n };\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"CubeNavigationAid.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/navigationaids/CubeNavigationAid.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 NavigationAids\r\n */\r\n\r\nimport \"./CubeNavigationAid.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Angle, AxisIndex, AxisOrder, Geometry, Matrix3d, Point2d, Vector2d, Vector3d, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { IModelApp, IModelConnection, Viewport } from \"@itwin/core-frontend\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { UiIModelComponents } from \"../UiIModelComponents\";\r\nimport { ViewportComponentEvents, ViewRotationChangeEventArgs } from \"../viewport/ViewportComponentEvents\";\r\nimport { Cube, Face } from \"./Cube\";\r\n\r\n/** @public */\r\nexport enum CubeNavigationHitBoxX {\r\n None = 0,\r\n Right = 1,\r\n Left = -1,\r\n}\r\n/** @internal\r\n * @deprecated Use [[CubeNavigationHitBoxX]] */\r\nexport enum HitBoxX {\r\n None = 0,\r\n Right = 1,\r\n Left = -1,\r\n}\r\n\r\n/** @public */\r\nexport enum CubeNavigationHitBoxY {\r\n None = 0,\r\n Back = 1,\r\n Front = -1,\r\n}\r\n/** @internal\r\n * @deprecated Use [[CubeNavigationHitBoxY]] */\r\nexport enum HitBoxY {\r\n None = 0,\r\n Back = 1,\r\n Front = -1,\r\n}\r\n\r\n/** @public */\r\nexport enum CubeNavigationHitBoxZ {\r\n None = 0,\r\n Top = 1,\r\n Bottom = -1,\r\n}\r\n/** @internal\r\n * @deprecated [[CubeNavigationHitBoxZ]] */\r\nexport enum HitBoxZ {\r\n None = 0,\r\n Top = 1,\r\n Bottom = -1,\r\n}\r\n\r\ninterface CubeNavigationRotationMap {\r\n up: Face;\r\n down: Face;\r\n left: Face;\r\n right: Face;\r\n}\r\n\r\nconst cubeNavigationFaceLocs: { [key: string]: Vector3d } = {\r\n [Face.Left]: Vector3d.create(CubeNavigationHitBoxX.Left, CubeNavigationHitBoxY.None, CubeNavigationHitBoxZ.None),\r\n [Face.Right]: Vector3d.create(CubeNavigationHitBoxX.Right, CubeNavigationHitBoxY.None, CubeNavigationHitBoxZ.None),\r\n [Face.Back]: Vector3d.create(CubeNavigationHitBoxX.None, CubeNavigationHitBoxY.Back, CubeNavigationHitBoxZ.None),\r\n [Face.Front]: Vector3d.create(CubeNavigationHitBoxX.None, CubeNavigationHitBoxY.Front, CubeNavigationHitBoxZ.None),\r\n [Face.Bottom]: Vector3d.create(CubeNavigationHitBoxX.None, CubeNavigationHitBoxY.None, CubeNavigationHitBoxZ.Bottom),\r\n [Face.Top]: Vector3d.create(CubeNavigationHitBoxX.None, CubeNavigationHitBoxY.None, CubeNavigationHitBoxZ.Top),\r\n};\r\n\r\nconst cubeNavigationFaceRotations: { [key: string]: Matrix3d } = {\r\n [Face.Left]: Matrix3d.createRowValues(0, -1, 0, 0, 0, 1, -1, 0, 0),\r\n [Face.Right]: Matrix3d.createRowValues(0, 1, 0, 0, 0, 1, 1, 0, 0),\r\n [Face.Back]: Matrix3d.createRowValues(-1, 0, 0, 0, 0, 1, 0, 1, 0),\r\n [Face.Front]: Matrix3d.createRowValues(1, 0, 0, 0, 0, 1, 0, -1, 0),\r\n [Face.Bottom]: Matrix3d.createRowValues(1, 0, 0, 0, -1, 0, 0, 0, -1),\r\n [Face.Top]: Matrix3d.createRowValues(1, 0, 0, 0, 1, 0, 0, 0, 1),\r\n};\r\n\r\n// data relating Up/Down/Left/Right directions relative to every surface\r\nconst cubeNavigationRoutes: { [key: string]: CubeNavigationRotationMap } = {\r\n [Face.Front]: { up: Face.Top, down: Face.Bottom, left: Face.Left, right: Face.Right },\r\n [Face.Back]: { up: Face.Top, down: Face.Bottom, left: Face.Right, right: Face.Left },\r\n [Face.Top]: { up: Face.Back, down: Face.Front, left: Face.Left, right: Face.Right },\r\n [Face.Bottom]: { up: Face.Front, down: Face.Back, left: Face.Left, right: Face.Right },\r\n [Face.Right]: { up: Face.Top, down: Face.Bottom, left: Face.Front, right: Face.Back },\r\n [Face.Left]: { up: Face.Top, down: Face.Bottom, left: Face.Back, right: Face.Front },\r\n};\r\n\r\n/** The default tolerance (1.0e-6) is appropriate if very dirty viewing operations are expected. */\r\nconst DEFAULT_TOLERANCE = 1.0e-6;\r\n\r\n/** @internal */\r\nexport enum CubeHover {\r\n None = 0,\r\n Hover,\r\n Active,\r\n}\r\n\r\n/** Properties for the [[CubeNavigationAid]] component\r\n * @public\r\n */\r\nexport interface CubeNavigationAidProps extends CommonProps {\r\n iModelConnection: IModelConnection;\r\n viewport?: Viewport;\r\n\r\n // used only in testing\r\n\r\n /** @internal */\r\n onAnimationEnd?: () => void;\r\n /** @internal */\r\n animationTime?: number;\r\n}\r\n\r\n/** @public */\r\ninterface CubeNavigationAidState {\r\n dragging: boolean;\r\n startRotMatrix: Matrix3d;\r\n endRotMatrix: Matrix3d;\r\n animation: number;\r\n hoverMap: { [key: string]: CubeHover };\r\n face: Face;\r\n}\r\n\r\n/** Cube Navigation Aid Component\r\n * @public\r\n */\r\nexport class CubeNavigationAid extends React.Component<CubeNavigationAidProps, CubeNavigationAidState> {\r\n private _start: Vector2d = Vector2d.createZero();\r\n /** @internal */\r\n public override readonly state: Readonly<CubeNavigationAidState> = {\r\n dragging: false,\r\n startRotMatrix: Matrix3d.createIdentity(),\r\n endRotMatrix: Matrix3d.createIdentity(),\r\n animation: 1,\r\n hoverMap: {},\r\n face: Face.Top,\r\n };\r\n\r\n private _lastTime: number | undefined;\r\n private _animationFrame: any;\r\n private _mounted: boolean = false;\r\n private _labels: { [key: string]: string } = {\r\n [Face.Right]: UiIModelComponents.translate(\"cube.right\"),\r\n [Face.Left]: UiIModelComponents.translate(\"cube.left\"),\r\n [Face.Back]: UiIModelComponents.translate(\"cube.back\"),\r\n [Face.Front]: UiIModelComponents.translate(\"cube.front\"),\r\n [Face.Top]: UiIModelComponents.translate(\"cube.top\"),\r\n [Face.Bottom]: UiIModelComponents.translate(\"cube.bottom\"),\r\n };\r\n\r\n /** @internal */\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n ViewportComponentEvents.onViewRotationChangeEvent.addListener(this._handleViewRotationChangeEvent);\r\n\r\n // set initial rotation\r\n if (this.props.viewport) {\r\n const newMatrix = this.props.viewport.view.getRotation().clone();\r\n this.setState({ startRotMatrix: newMatrix, endRotMatrix: newMatrix, animation: 1 });\r\n }\r\n }\r\n\r\n /** @internal */\r\n public override componentWillUnmount() {\r\n ViewportComponentEvents.onViewRotationChangeEvent.removeListener(this._handleViewRotationChangeEvent);\r\n clearTimeout(this._animationFrame);\r\n this._mounted = false;\r\n }\r\n\r\n // Synchronize with rotation coming from the Viewport\r\n private _handleViewRotationChangeEvent = (args: ViewRotationChangeEventArgs) => {\r\n const { animation, dragging, endRotMatrix } = this.state;\r\n // istanbul ignore else\r\n if (this.props.viewport === args.viewport && animation >= 1 && !dragging) {\r\n const newMatrix = this.props.viewport.view.getRotation().clone();\r\n if (!endRotMatrix.isAlmostEqual(newMatrix)) {\r\n this.setState({ startRotMatrix: newMatrix, endRotMatrix: newMatrix, animation: 1, face: Face.None });\r\n }\r\n }\r\n };\r\n\r\n private _animation = () => {\r\n const t = Date.now();\r\n const delta = this._lastTime ? t - this._lastTime : 16;\r\n this._lastTime = t;\r\n if (this.state.animation !== 1) {\r\n const animation = Math.min(1, this.state.animation + delta / (1000 * (this.props.animationTime || /* istanbul ignore next */ 0.4)));\r\n\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({ animation }, () => {\r\n this._animationFrame = setTimeout(this._animation, 16.667);\r\n });\r\n }\r\n } else {\r\n this._lastTime = undefined;\r\n this._animationEnd();\r\n }\r\n };\r\n\r\n private _animationEnd = () => {\r\n ViewportComponentEvents.setCubeMatrix(this.state.endRotMatrix, this.state.face, true);\r\n const startRotMatrix = this.state.endRotMatrix.clone();\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({ startRotMatrix }, () => {\r\n // istanbul ignore else\r\n if (this.props.onAnimationEnd)\r\n this.props.onAnimationEnd();\r\n });\r\n }\r\n };\r\n\r\n private static _animationFn = (t: number) => t < .5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t;\r\n\r\n private static _isMatrixFace = (matrix: Matrix3d): boolean => {\r\n let sum = 0;\r\n for (const coff of matrix.coffs) {\r\n if (Geometry.isAlmostEqualNumber(Math.abs(coff), 1))\r\n sum++;\r\n }\r\n // Assuming matrix is a proper rotation matrix:\r\n // if matrix viewing a face, there will be a total of 3 values either almost -1, or almost 1.\r\n return sum === 3;\r\n };\r\n\r\n public override render(): React.ReactNode {\r\n const { animation, startRotMatrix, endRotMatrix } = this.state;\r\n const visible = CubeNavigationAid._isMatrixFace(endRotMatrix) && animation === 1.0;\r\n const rotMatrix = CubeNavigationAid._interpolateRotMatrix(startRotMatrix, animation, endRotMatrix);\r\n if (rotMatrix !== startRotMatrix && rotMatrix !== endRotMatrix)\r\n ViewportComponentEvents.setCubeMatrix(rotMatrix, Face.None);\r\n\r\n const faces: { [key: string]: React.ReactNode } = {};\r\n for (const key in this._labels) {\r\n // istanbul ignore else\r\n if (this._labels.hasOwnProperty(key)) {\r\n const f = key as Face;\r\n const label = this._labels[f];\r\n faces[f] =\r\n <NavCubeFace\r\n face={f}\r\n label={label}\r\n hoverMap={this.state.hoverMap}\r\n onFaceCellClick={this._handleFaceCellClick}\r\n onFaceCellHoverChange={this._handleCellHoverChange} />;\r\n }\r\n }\r\n\r\n const cubeClassNames = classnames(\r\n \"nav-cube\",\r\n this.state.dragging && \"cube-dragging\",\r\n );\r\n\r\n const upTitle = this.getArrowTitle(Pointer.Up);\r\n const downTitle = this.getArrowTitle(Pointer.Down);\r\n const leftTitle = this.getArrowTitle(Pointer.Left);\r\n const rightTitle = this.getArrowTitle(Pointer.Right);\r\n\r\n return (\r\n <div className={classnames(\"components-cube-container\", this.props.className)}\r\n style={this.props.style}\r\n data-testid=\"components-cube-navigation-aid\"\r\n onMouseDown={this._handleBoxMouseDown}\r\n onTouchStart={this._handleBoxTouchStart}\r\n role=\"presentation\"\r\n >\r\n <div className={\"cube-element-container\"}>\r\n <Cube\r\n className={cubeClassNames}\r\n rotMatrix={rotMatrix}\r\n faces={faces} />\r\n </div>\r\n <PointerButton data-testid=\"cube-pointer-button-up\"\r\n visible={visible} pointerType={Pointer.Up} onArrowClick={this._onArrowClick} title={upTitle} />\r\n <PointerButton data-testid=\"cube-pointer-button-down\"\r\n visible={visible} pointerType={Pointer.Down} onArrowClick={this._onArrowClick} title={downTitle} />\r\n <PointerButton data-testid=\"cube-pointer-button-left\"\r\n visible={visible} pointerType={Pointer.Left} onArrowClick={this._onArrowClick} title={leftTitle} />\r\n <PointerButton data-testid=\"cube-pointer-button-right\"\r\n visible={visible} pointerType={Pointer.Right} onArrowClick={this._onArrowClick} title={rightTitle} />\r\n </div>\r\n );\r\n }\r\n\r\n private _handleCellHoverChange = (vect: Vector3d, state: CubeHover) => {\r\n if (this._isInteractionLocked()) {\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n const hoverMap = this.state.hoverMap;\r\n hoverMap[`${vect.x}-${vect.y}-${vect.z}`] = state;\r\n this.setState({ hoverMap });\r\n };\r\n\r\n private _isInteractionLocked = () => {\r\n // Locked by markup\r\n if(undefined !== this.props.viewport && this.props.viewport === IModelApp.toolAdmin.markupView) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n private static _getMatrixFace = (rotMatrix: Matrix3d): Face => {\r\n if (!CubeNavigationAid._isMatrixFace(rotMatrix)) {\r\n return Face.None;\r\n }\r\n\r\n let matrixFace = Face.None;\r\n\r\n for (const face in cubeNavigationFaceRotations) {\r\n // istanbul ignore else\r\n if (face in cubeNavigationFaceRotations) {\r\n const loc = cubeNavigationFaceRotations[face];\r\n if (rotMatrix.isAlmostEqual(loc)) {\r\n matrixFace = face as Face;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matrixFace;\r\n };\r\n\r\n private static _interpolateRotMatrix = (start: Matrix3d, anim: number, end: Matrix3d): Matrix3d => {\r\n if (anim === 0)\r\n return start;\r\n if (anim === 1 || start.isAlmostEqual(end))\r\n return end;\r\n const startInverse = start.transpose();\r\n const diff = end.multiplyMatrixMatrix(startInverse);\r\n const angleAxis = diff.getAxisAndAngleOfRotation();\r\n // istanbul ignore else\r\n if (angleAxis.ok) {\r\n const angle = Angle.createRadians(angleAxis.angle.radians * CubeNavigationAid._animationFn(anim));\r\n const newDiff = Matrix3d.createRotationAroundVector(angleAxis.axis, angle);\r\n // istanbul ignore else\r\n if (newDiff) {\r\n const newMatrix = newDiff.multiplyMatrixMatrix(start);\r\n return newMatrix;\r\n }\r\n }\r\n // istanbul ignore next\r\n return end;\r\n };\r\n\r\n private static correctSmallNumber(value: number, tolerance: number): number {\r\n return Math.abs(value) < tolerance ? 0 : value;\r\n }\r\n\r\n /**\r\n * Snap coordinates of a vector to zero and to each other so that the vector prefers to be\r\n * * perpendicular to a face of the unit cube.\r\n * * or pass through a nearby vertex or edge of the unit cube.\r\n * @param zVector existing z vector.\r\n * @param tolerance tolerance to determine if a z vector component is close to zero or 1.\r\n */\r\n private static snapVectorToCubeFeatures(zVector: XYAndZ, tolerance: number): Vector3d {\r\n const x = CubeNavigationAid.correctSmallNumber(zVector.x, tolerance);\r\n let y = CubeNavigationAid.correctSmallNumber(zVector.y, tolerance);\r\n let z = CubeNavigationAid.correctSmallNumber(zVector.z, tolerance);\r\n\r\n const xx = Math.abs(x);\r\n const yy = Math.abs(y);\r\n const zz = Math.abs(z);\r\n\r\n // adjust any adjacent pair of near equal values to the first.\r\n // istanbul ignore next\r\n if (Geometry.isSameCoordinate(xx, yy, tolerance)) {\r\n y = Geometry.split3WaySign(y, -xx, xx, xx);\r\n }\r\n if (Geometry.isSameCoordinate(yy, zz, tolerance)) {\r\n z = Geometry.split3WaySign(z, -yy, yy, yy);\r\n }\r\n if (Geometry.isSameCoordinate(xx, zz, tolerance)) {\r\n z = Geometry.split3WaySign(z, -xx, xx, xx);\r\n }\r\n return Vector3d.create(x, y, z);\r\n }\r\n\r\n /**\r\n * Adjust a worldToView matrix to favor both\r\n * * direct view at faces, edges, and corners of a view cube.\r\n * * heads up\r\n * @param worldToView candidate matrix\r\n * @param tolerance tolerance for cleaning up fuzz. The default (1.0e-6) is appropriate if very dirty viewing operations are expected.\r\n * @param result optional result.\r\n */\r\n private static snapWorldToViewMatrixToCubeFeatures(worldToView: Matrix3d, tolerance: number, result?: Matrix3d): Matrix3d {\r\n const oldZ = worldToView.rowZ();\r\n const newZ = CubeNavigationAid.snapVectorToCubeFeatures(oldZ, tolerance);\r\n // If newZ is true up or down, it will have true 0 for x and y.\r\n // special case this to take x direction from the input.\r\n // istanbul ignore next\r\n if (newZ.x === 0.0 && newZ.y === 0) {\r\n const perpVector = worldToView.rowX();\r\n result = Matrix3d.createRigidFromColumns(newZ, perpVector, AxisOrder.ZXY, result)!;\r\n } else {\r\n result = Matrix3d.createRigidViewAxesZTowardsEye(newZ.x, newZ.y, newZ.z, result);\r\n }\r\n // istanbul ignore else\r\n if (result)\r\n result.transposeInPlace();\r\n return result;\r\n }\r\n\r\n private getArrowRotationAndFace(arrow: Pointer): { newRotation: Matrix3d, face: Face } {\r\n const localRotationAxis = Vector3d.create(0, 0, 0);\r\n switch (arrow) {\r\n case Pointer.Up:\r\n localRotationAxis.x = -1.0;\r\n break;\r\n case Pointer.Down:\r\n localRotationAxis.x = 1.0;\r\n break;\r\n case Pointer.Left:\r\n localRotationAxis.y = -1.0;\r\n break;\r\n default:\r\n localRotationAxis.y = 1.0;\r\n break;\r\n }\r\n const localRotation = Matrix3d.createRotationAroundVector(localRotationAxis, Angle.createDegrees(-90))!;\r\n const newRotation = localRotation.multiplyMatrixMatrix(this.state.endRotMatrix);\r\n CubeNavigationAid.snapWorldToViewMatrixToCubeFeatures(newRotation, DEFAULT_TOLERANCE, newRotation);\r\n const face = CubeNavigationAid._getMatrixFace(newRotation);\r\n return { newRotation, face };\r\n }\r\n\r\n private _onArrowClick = (arrow: Pointer) => {\r\n if (this._isInteractionLocked()) {\r\n // istanbul ignore next\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n const { newRotation, face } = this.getArrowRotationAndFace(arrow);\r\n this._animateRotation(newRotation, face);\r\n };\r\n\r\n private getArrowTitle(arrow: Pointer) {\r\n const { face } = this.getArrowRotationAndFace(arrow);\r\n return this._labels[face];\r\n }\r\n\r\n private _lastClientXY: Vector2d = Vector2d.createZero();\r\n private _processDrag(mousePos: Vector2d) {\r\n // istanbul ignore else\r\n if (!this._start.isAlmostEqual(mousePos)) {\r\n const movement = mousePos.minus(this._lastClientXY);\r\n const diff = movement.scale(0.05);\r\n\r\n const yaw = Angle.createRadians(diff.x);\r\n const pitch = Angle.createRadians(diff.y);\r\n\r\n const matX = Matrix3d.createRotationAroundAxisIndex(AxisIndex.X, pitch);\r\n const matZ = Matrix3d.createRotationAroundAxisIndex(AxisIndex.Z, yaw);\r\n\r\n const mat = matX.multiplyMatrixMatrix(this.state.startRotMatrix).multiplyMatrixMatrix(matZ);\r\n this._setRotation(mat, CubeNavigationAid._getMatrixFace(mat));\r\n if (!this.state.dragging)\r\n this.setState({ dragging: true });\r\n }\r\n this._lastClientXY = mousePos;\r\n }\r\n\r\n private _handleBoxMouseDown = (event: any) => {\r\n if (this._isInteractionLocked()) {\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n event.preventDefault();\r\n // only start listening after drag is confirmed. Ie. the 3D box is clicked.\r\n window.addEventListener(\"mousemove\", this._onMouseMove, false);\r\n window.addEventListener(\"mouseup\", this._onMouseUp, false);\r\n this._lastClientXY = Vector2d.create(event.clientX, event.clientY);\r\n this._start = this._lastClientXY;\r\n };\r\n\r\n private _onMouseMove = (event: MouseEvent) => {\r\n const mousePos = Vector2d.create(event.clientX, event.clientY);\r\n this._processDrag(mousePos);\r\n };\r\n\r\n private _onMouseUp = () => {\r\n if (this.state.dragging) {\r\n this.setState({ dragging: false });\r\n ViewportComponentEvents.setCubeMatrix(this.state.endRotMatrix, CubeNavigationAid._getMatrixFace(this.state.endRotMatrix), true);\r\n }\r\n\r\n // remove so event only triggers after this.onMouseStartDrag\r\n window.removeEventListener(\"mousemove\", this._onMouseMove);\r\n window.removeEventListener(\"mouseup\", this._onMouseUp);\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _handleBoxTouchStart = (event: any) => {\r\n if (this._isInteractionLocked()) {\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n if (1 !== event.targetTouches.length)\r\n return;\r\n window.addEventListener(\"touchmove\", this._onTouchMove, false);\r\n window.addEventListener(\"touchend\", this._onTouchEnd, false);\r\n this._lastClientXY = Vector2d.create(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\r\n this._start = this._lastClientXY;\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _onTouchMove = (event: TouchEvent) => {\r\n if (1 !== event.targetTouches.length)\r\n return;\r\n const mousePos = Vector2d.create(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\r\n this._processDrag(mousePos);\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _onTouchEnd = (event: TouchEvent) => {\r\n if (0 !== event.targetTouches.length)\r\n return;\r\n\r\n if (this.state.dragging) {\r\n this.setState({ dragging: false });\r\n ViewportComponentEvents.setCubeMatrix(this.state.endRotMatrix, CubeNavigationAid._getMatrixFace(this.state.endRotMatrix), true);\r\n }\r\n\r\n window.removeEventListener(\"touchmove\", this._onTouchMove);\r\n window.removeEventListener(\"touchend\", this._onTouchEnd);\r\n };\r\n\r\n private _handleFaceCellClick = (pos: Vector3d, face: Face) => {\r\n if (this._isInteractionLocked()) {\r\n this.props.onAnimationEnd?.();\r\n return;\r\n }\r\n const { endRotMatrix } = this.state;\r\n let rotMatrix = Matrix3d.createRigidViewAxesZTowardsEye(pos.x, pos.y, pos.z).inverse();\r\n // istanbul ignore else\r\n if (rotMatrix) {\r\n // if isMatrixFace and user is clicking on top/bottom, the current matrix face must be top or bottom\r\n if (!CubeNavigationAid._isMatrixFace(endRotMatrix) && (face === Face.Top || face === Face.Bottom)) {\r\n const angleAxis = endRotMatrix.getAxisAndAngleOfRotation();\r\n // istanbul ignore else\r\n if (angleAxis.ok) {\r\n const xAx = endRotMatrix.columnX();\r\n const a = Math.atan2(xAx.y, xAx.x);\r\n const r = Math.round(a * 2 / Math.PI) * Math.PI / 2; // round to quarter turn intervals\r\n const rot = Matrix3d.createRotationAroundAxisIndex(AxisIndex.Z, Angle.createRadians(r));\r\n rotMatrix = rot.multiplyMatrixMatrix(rotMatrix);\r\n }\r\n }\r\n this._animateRotation(rotMatrix, face);\r\n }\r\n window.removeEventListener(\"mousemove\", this._onMouseMove);\r\n };\r\n\r\n private _animateRotation = (endRotMatrix: Matrix3d, face: Face) => {\r\n if (this.state.endRotMatrix.isAlmostEqual(endRotMatrix))\r\n return;\r\n // set animation variables, let css transitions animate it.\r\n this._animationFrame = setTimeout(this._animation, 16.667);\r\n this.setState((prevState) => ({\r\n startRotMatrix: prevState.endRotMatrix, endRotMatrix,\r\n animation: 0,\r\n face,\r\n }));\r\n };\r\n\r\n private _setRotation = (endRotMatrix: Matrix3d, face: Face) => {\r\n ViewportComponentEvents.setCubeMatrix(endRotMatrix, face);\r\n // set variables, with animTime at 0 to prevent animation.\r\n this.setState({\r\n startRotMatrix: endRotMatrix,\r\n endRotMatrix,\r\n animation: 1,\r\n face,\r\n });\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport interface NavCubeFaceProps extends React.AllHTMLAttributes<HTMLDivElement> {\r\n face: Face;\r\n label: string;\r\n hoverMap: { [key: string]: CubeHover };\r\n onFaceCellClick: (vector: Vector3d, face: Face) => void;\r\n onFaceCellHoverChange: (vector: Vector3d, state: CubeHover) => void;\r\n}\r\n\r\n/** @internal */\r\nexport class NavCubeFace extends React.Component<NavCubeFaceProps> {\r\n public override render(): React.ReactNode {\r\n const { face, hoverMap, onFaceCellClick, onFaceCellHoverChange, label } = this.props;\r\n return (\r\n <div className=\"nav-cube-face\" data-testid=\"nav-cube-face\">\r\n {[-1, 0, 1].map((y: number) => {\r\n return (\r\n <FaceRow key={y} center={y === 0}>\r\n {[-1, 0, 1].map((x: number) => {\r\n return (\r\n <FaceCell\r\n key={x}\r\n onFaceCellHoverChange={onFaceCellHoverChange}\r\n onFaceCellClick={onFaceCellClick}\r\n hoverMap={hoverMap}\r\n vector={NavCubeFace.faceCellToPos(face, x, y)}\r\n face={face}\r\n center={x === 0}>\r\n {x === 0 && y === 0 &&\r\n label}\r\n </FaceCell>\r\n );\r\n })}\r\n </FaceRow>\r\n );\r\n })}\r\n </div>\r\n );\r\n }\r\n public static faceCellToPos = (face: Face, x: number, y: number) => {\r\n const faceVect = cubeNavigationFaceLocs[face];\r\n const route = cubeNavigationRoutes[face];\r\n\r\n const faceX = x < 0 ? route.left : x > 0 ? route.right : Face.None;\r\n const xVect = faceX !== Face.None ? cubeNavigationFaceLocs[faceX] : Vector3d.createZero();\r\n\r\n const faceY = y < 0 ? route.up : y > 0 ? route.down : Face.None;\r\n const yVect = faceY !== Face.None ? cubeNavigationFaceLocs[faceY] : Vector3d.createZero();\r\n\r\n return faceVect.plus(xVect).plus(yVect);\r\n };\r\n}\r\n\r\ninterface FaceRowProps extends React.AllHTMLAttributes<HTMLDivElement> {\r\n center?: boolean;\r\n}\r\n\r\nclass FaceRow extends React.Component<FaceRowProps> {\r\n public override render(): React.ReactNode {\r\n const { center, children, ...props } = this.props;\r\n const classNames = classnames(\r\n \"face-row\",\r\n center && \"cube-center\",\r\n );\r\n return <div className={classNames} {...props}>{children}</div>;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface FaceCellProps extends React.AllHTMLAttributes<HTMLDivElement> {\r\n center?: boolean;\r\n onFaceCellClick: (vector: Vector3d, face: Face) => void;\r\n onFaceCellHoverChange: (vector: Vector3d, state: CubeHover) => void;\r\n hoverMap: { [key: string]: CubeHover };\r\n vector: Vector3d;\r\n face: Face;\r\n}\r\n\r\n/** @internal */\r\nexport class FaceCell extends React.Component<FaceCellProps> {\r\n private _startMouse: Point2d | undefined;\r\n public override render(): React.ReactNode {\r\n const { center, children, onFaceCellClick, onFaceCellHoverChange, hoverMap, face, vector, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n const { x, y, z } = vector;\r\n const n = `${x}-${y}-${z}`;\r\n const hover = hoverMap[n] === CubeHover.Hover;\r\n const active = hoverMap[n] === CubeHover.Active;\r\n const classNames = classnames(\r\n \"face-cell\",\r\n center && \"cube-center\",\r\n hover && \"cube-hover\",\r\n active && \"cube-active\",\r\n );\r\n\r\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\r\n return <div\r\n onMouseDown={this._handleMouseDown}\r\n onMouseUp={this._handleMouseUp}\r\n onMouseOver={this._handleMouseOver}\r\n onMouseOut={this._handleMouseOut}\r\n onTouchStart={this._handleTouchStart}\r\n onTouchEnd={this._handleTouchEnd}\r\n data-testid={`nav-cube-face-cell-${face}-${n}`}\r\n className={classNames}\r\n role=\"presentation\"\r\n {...props}\r\n >\r\n {children}\r\n </div>;\r\n }\r\n private _handleMouseOver = () => {\r\n const { vector } = this.props;\r\n this.props.onFaceCellHoverChange(vector, CubeHover.Hover);\r\n };\r\n private _handleMouseOut = () => {\r\n const { vector } = this.props;\r\n this.props.onFaceCellHoverChange(vector, CubeHover.None);\r\n };\r\n private _handleMouseDown = (event: React.MouseEvent) => {\r\n const { clientX, clientY } = event;\r\n this.handlePointerDown(clientX, clientY);\r\n };\r\n private _handleMouseUp = (event: React.MouseEvent) => {\r\n const { clientX, clientY } = event;\r\n this.handlePointerUp(clientX, clientY);\r\n };\r\n\r\n private _handleTouchStart = (event: React.TouchEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n event.targetTouches.length === 1 && this.handlePointerDown(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\r\n };\r\n\r\n private _handleTouchEnd = (event: React.TouchEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n event.changedTouches.length === 1 && this.handlePointerUp(event.changedTouches[0].clientX, event.changedTouches[0].clientY);\r\n };\r\n\r\n private handlePointerDown(x: number, y: number) {\r\n const { vector } = this.props;\r\n this._startMouse = Point2d.create(x, y);\r\n this.props.onFaceCellHoverChange(vector, CubeHover.Active);\r\n }\r\n\r\n private handlePointerUp(x: number, y: number) {\r\n const { vector, face } = this.props;\r\n this.props.onFaceCellHoverChange(vector, CubeHover.None);\r\n const mouse = Point2d.create(x, y);\r\n if (this._startMouse && this._startMouse.isAlmostEqual(mouse)) {\r\n const isFace = Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z) === 1;\r\n this.props.onFaceCellClick(vector, isFace ? face : Face.None);\r\n }\r\n }\r\n}\r\n\r\nenum Pointer {\r\n None = 0,\r\n Up,\r\n Down,\r\n Left,\r\n Right,\r\n}\r\n\r\nconst pointerIconClass: { [key: number]: string } = {\r\n [Pointer.Up]: \"icon-caret-down\",\r\n [Pointer.Down]: \"icon-caret-up\",\r\n [Pointer.Left]: \"icon-caret-right\",\r\n [Pointer.Right]: \"icon-caret-left\",\r\n};\r\n\r\nconst pointerClass: { [key: number]: string } = {\r\n [Pointer.Up]: \"cube-up\",\r\n [Pointer.Down]: \"cube-down\",\r\n [Pointer.Left]: \"cube-left\",\r\n [Pointer.Right]: \"cube-right\",\r\n};\r\n\r\ninterface PointerProps extends React.AllHTMLAttributes<HTMLDivElement> {\r\n visible: boolean;\r\n pointerType: Pointer;\r\n onArrowClick(pointer: Pointer): void;\r\n title: string;\r\n [\"data-testid\"]?: string;\r\n}\r\n\r\nclass PointerButton extends React.Component<PointerProps> {\r\n public override render(): React.ReactNode {\r\n const { visible, pointerType, onArrowClick, title, ...props } = this.props; // eslint-disable-line @typescript-eslint/no-unused-vars\r\n const classes = classnames(\r\n \"cube-pointer\", \"icon\",\r\n pointerClass[pointerType],\r\n pointerIconClass[pointerType],\r\n visible && \"cube-visible\",\r\n );\r\n\r\n return (\r\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\r\n <div className={classes} role=\"button\" tabIndex={-1} title={title} {...props}\r\n onClick={this._handleClick} />\r\n );\r\n }\r\n private _handleClick = (event: React.MouseEvent) => {\r\n const { pointerType } = this.props;\r\n event.preventDefault();\r\n this.props.onArrowClick(pointerType);\r\n };\r\n}\r\n"]}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
|
|
6
|
-
@import "~@itwin/itwinui-css/scss/style/typography";
|
|
7
6
|
|
|
8
7
|
$cube-outer-width: 96px;
|
|
9
8
|
$button-width: 20px;
|
|
@@ -42,10 +41,10 @@ $arrow-margin: -3px;
|
|
|
42
41
|
flex-direction: column;
|
|
43
42
|
width: 100%;
|
|
44
43
|
height: 100%;
|
|
45
|
-
font-size:
|
|
46
|
-
font-weight:
|
|
44
|
+
font-size: var(--iui-font-size-1);
|
|
45
|
+
font-weight: var(--iui-font-weight-semibold);
|
|
47
46
|
color: $buic-text-color;
|
|
48
|
-
box-shadow: inset 0px 0px
|
|
47
|
+
box-shadow: inset 0px 0px 1px 0.2px #000;
|
|
49
48
|
|
|
50
49
|
.face-row {
|
|
51
50
|
display: flex;
|
|
@@ -104,7 +103,6 @@ $arrow-margin: -3px;
|
|
|
104
103
|
|
|
105
104
|
&.cube-dragging {
|
|
106
105
|
.face-row .face-cell {
|
|
107
|
-
|
|
108
106
|
&.cube-hover,
|
|
109
107
|
&.cube-active {
|
|
110
108
|
background: transparent;
|
|
@@ -115,7 +113,10 @@ $arrow-margin: -3px;
|
|
|
115
113
|
.cube-right,
|
|
116
114
|
.cube-front,
|
|
117
115
|
.cube-back {
|
|
118
|
-
background: linear-gradient(
|
|
116
|
+
background: linear-gradient(
|
|
117
|
+
#{$grad-start-highlight},
|
|
118
|
+
#{$grad-end-highlight}
|
|
119
|
+
);
|
|
119
120
|
}
|
|
120
121
|
|
|
121
122
|
.cube-top {
|
|
@@ -178,4 +179,4 @@ $arrow-margin: -3px;
|
|
|
178
179
|
right: 0px;
|
|
179
180
|
}
|
|
180
181
|
}
|
|
181
|
-
}
|
|
182
|
+
}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
background-color: $buic-background-control;
|
|
47
47
|
border: 1px solid $buic-background-toolbutton-stroke;
|
|
48
48
|
cursor: pointer;
|
|
49
|
-
border-radius:
|
|
49
|
+
border-radius: var(--iui-border-radius-1);
|
|
50
50
|
top: 10px;
|
|
51
51
|
left: 0px;
|
|
52
52
|
right: 0px;
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
cursor: pointer;
|
|
68
68
|
background-color: $buic-background-control;
|
|
69
69
|
border: 1px solid $buic-background-toolbutton-stroke;
|
|
70
|
-
border-radius:
|
|
70
|
+
border-radius: var(--iui-border-radius-1);
|
|
71
71
|
right: 10px;
|
|
72
72
|
top: 10px;
|
|
73
73
|
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
opacity: 1;
|
|
97
97
|
}
|
|
98
98
|
|
|
99
|
-
border-radius:
|
|
99
|
+
border-radius: var(--iui-border-radius-1);
|
|
100
100
|
bottom: 10px;
|
|
101
101
|
left: 10px;
|
|
102
102
|
height: 16px;
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
.zoom {
|
|
110
110
|
position: absolute;
|
|
111
111
|
border: 1px solid $buic-background-toolbutton-stroke;
|
|
112
|
-
border-radius:
|
|
112
|
+
border-radius: var(--iui-border-radius-1);
|
|
113
113
|
right: 10px;
|
|
114
114
|
bottom: 10px;
|
|
115
115
|
|
|
@@ -131,4 +131,4 @@
|
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
-
}
|
|
134
|
+
}
|
|
@@ -3,8 +3,6 @@
|
|
|
3
3
|
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
4
|
*--------------------------------------------------------------------------------------------*/
|
|
5
5
|
@import "~@itwin/core-react/lib/cjs/core-react/inputs/variables";
|
|
6
|
-
@import "~@itwin/core-react/lib/cjs/core-react/select/select";
|
|
7
|
-
@import "~@itwin/itwinui-css/scss/style/typography";
|
|
8
6
|
|
|
9
7
|
.components-quantityFormat-panel {
|
|
10
8
|
display: grid;
|
|
@@ -13,8 +11,8 @@
|
|
|
13
11
|
column-gap: 6px;
|
|
14
12
|
align-items: center;
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
font-size:
|
|
14
|
+
> .uicore-label {
|
|
15
|
+
font-size: var(--iui-font-size-1);
|
|
18
16
|
margin: 4.4px 0;
|
|
19
17
|
|
|
20
18
|
/* match margin on other select controls so it spaces properly in grid */
|
|
@@ -23,18 +21,18 @@
|
|
|
23
21
|
}
|
|
24
22
|
}
|
|
25
23
|
|
|
26
|
-
>span.components-inline {
|
|
24
|
+
> span.components-inline {
|
|
27
25
|
display: flex;
|
|
28
26
|
flex-direction: row;
|
|
29
27
|
align-items: center;
|
|
30
28
|
gap: 4px;
|
|
31
29
|
}
|
|
32
30
|
|
|
33
|
-
>label.core-checkbox.core-checkbox-no-label {
|
|
31
|
+
> label.core-checkbox.core-checkbox-no-label {
|
|
34
32
|
min-height: 1.57em;
|
|
35
33
|
}
|
|
36
34
|
|
|
37
|
-
>button.components-quantityFormat-more-button {
|
|
35
|
+
> button.components-quantityFormat-more-button {
|
|
38
36
|
grid-column: 1 / span 2;
|
|
39
37
|
border: none;
|
|
40
38
|
outline: none;
|
|
@@ -42,11 +40,11 @@
|
|
|
42
40
|
}
|
|
43
41
|
|
|
44
42
|
.components-quantityFormat-more-button-label {
|
|
45
|
-
margin-right: .25em;
|
|
43
|
+
margin-right: 0.25em;
|
|
46
44
|
}
|
|
47
45
|
|
|
48
|
-
>a.components-quantityFormat-more-less {
|
|
49
|
-
font-size:
|
|
46
|
+
> a.components-quantityFormat-more-less {
|
|
47
|
+
font-size: var(--iui-font-size-1);
|
|
50
48
|
color: $buic-foreground-alert;
|
|
51
49
|
-webkit-transition: text-decoration 1s ease;
|
|
52
50
|
-moz-transition: text-decoration 1s ease;
|
|
@@ -62,4 +60,4 @@
|
|
|
62
60
|
.iui-input {
|
|
63
61
|
padding: $uicore-iui-input-padding;
|
|
64
62
|
}
|
|
65
|
-
}
|
|
63
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuantityFormatPanel.d.ts","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/QuantityFormatPanel.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,EAE8D,eAAe,EACnF,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAA4B,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"QuantityFormatPanel.d.ts","sourceRoot":"","sources":["../../../../src/imodel-components-react/quantityformat/QuantityFormatPanel.tsx"],"names":[],"mappings":"AAIA;;GAEG;;AAGH,OAAO,EAE8D,eAAe,EACnF,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAA4B,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AA8DhD;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,YAAY,EAAE,eAAe,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,eAkGlE"}
|