@vertexvis/viewer 0.21.0-testing.0 → 0.21.0-testing.1
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/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +9 -12
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/util.js +4 -4
- package/dist/collection/components/viewer-transform-widget/util.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js +4 -4
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js +1 -4
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js.map +1 -1
- package/dist/components/vertex-viewer-transform-widget.js +9 -12
- package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
- package/dist/esm/vertex-viewer-transform-widget.entry.js +9 -12
- package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
- package/dist/types/components/viewer-transform-widget/util.d.ts +4 -3
- package/dist/types/components/viewer-transform-widget/viewer-transform-widget.d.ts +2 -2
- package/dist/viewer/p-3047c5f9.entry.js +5 -0
- package/dist/viewer/p-3047c5f9.entry.js.map +1 -0
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +7 -7
- package/dist/viewer/p-ff7e05fe.entry.js +0 -5
- package/dist/viewer/p-ff7e05fe.entry.js.map +0 -1
|
@@ -130,13 +130,13 @@ export function computeInputPosition(viewport, bounds, shapePoints) {
|
|
|
130
130
|
: closest, topLeft);
|
|
131
131
|
switch (closestPoint) {
|
|
132
132
|
case topLeft:
|
|
133
|
-
return { point: closestPoint,
|
|
133
|
+
return { point: closestPoint, placement: 'top-left' };
|
|
134
134
|
case topRight:
|
|
135
|
-
return { point: closestPoint,
|
|
135
|
+
return { point: closestPoint, placement: 'top-right' };
|
|
136
136
|
case bottomLeft:
|
|
137
|
-
return { point: closestPoint,
|
|
137
|
+
return { point: closestPoint, placement: 'bottom-left' };
|
|
138
138
|
default:
|
|
139
|
-
return { point: closestPoint,
|
|
139
|
+
return { point: closestPoint, placement: 'bottom-right' };
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
//# sourceMappingURL=util.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../src/components/viewer-transform-widget/util.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Euler,\n Matrix4,\n Plane,\n Point,\n Quaternion,\n Ray,\n Rectangle,\n Vector3,\n} from '@vertexvis/geometry';\n\nimport {\n AngleUnits,\n AngleUnitType,\n DistanceUnits,\n DistanceUnitType,\n Frame,\n Viewport,\n} from '../../lib/types';\n\nexport interface PointAndPosition {\n point: Point.Point;\n position: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';\n}\n\nexport function convertPointToCanvas(\n point: Point.Point,\n bounds?: DOMRect\n): Point.Point | undefined {\n return bounds != null\n ? Point.create(point.x - bounds.left, point.y - bounds.top)\n : undefined;\n}\n\nexport function convertCanvasPointToWorld(\n point?: Point.Point,\n frame?: Frame,\n viewport?: Viewport,\n transform?: Matrix4.Matrix4\n): Vector3.Vector3 | undefined {\n const position =\n transform != null ? Vector3.fromMatrixPosition(transform) : undefined;\n\n if (point != null && frame != null && viewport != null && position != null) {\n if (frame.scene.camera.isOrthographic()) {\n const ray = viewport.transformPointToOrthographicRay(\n point,\n frame.image,\n frame.scene.camera\n );\n // Offset the point to past the bounding sphere of the model to\n // adjust the position plane location.\n const offsetPoint = Ray.at(\n Ray.create({\n origin: position,\n direction: frame.scene.camera.direction,\n }),\n Vector3.magnitude(frame.scene.camera.viewVector) * 2\n );\n\n return Ray.intersectPlane(\n ray,\n Plane.fromNormalAndCoplanarPoint(\n frame.scene.camera.direction,\n offsetPoint\n )\n );\n } else {\n const ray = viewport.transformPointToRay(\n point,\n frame.image,\n frame.scene.camera\n );\n\n return Ray.intersectPlane(\n ray,\n Plane.fromNormalAndCoplanarPoint(frame.scene.camera.direction, position)\n );\n }\n }\n return undefined;\n}\n\nexport function computeInputTransform(\n identifier: string,\n value: number,\n lastValue: number,\n distanceUnit: DistanceUnitType = 'millimeters',\n angleUnit: AngleUnitType = 'degrees'\n): Matrix4.Matrix4 {\n const units = new DistanceUnits(distanceUnit);\n const angles = new AngleUnits(angleUnit);\n\n const rotation = (): number => angles.convertFrom(value - lastValue);\n const position = (): number =>\n units.convertRealValueToWorld(value - lastValue);\n\n switch (identifier) {\n case 'x-translate':\n return Matrix4.makeTranslation(Vector3.create(position(), 0, 0));\n case 'y-translate':\n return Matrix4.makeTranslation(Vector3.create(0, position(), 0));\n case 'z-translate':\n return Matrix4.makeTranslation(Vector3.create(0, 0, position()));\n case 'x-rotate':\n return Matrix4.makeRotation(\n Quaternion.fromAxisAngle(Vector3.left(), rotation())\n );\n case 'y-rotate':\n return Matrix4.makeRotation(\n Quaternion.fromAxisAngle(Vector3.down(), rotation())\n );\n case 'z-rotate':\n return Matrix4.makeRotation(\n Quaternion.fromAxisAngle(Vector3.forward(), rotation())\n );\n }\n return Matrix4.makeIdentity();\n}\n\nexport function computeInputDisplayValue(\n identifier: string,\n current: Matrix4.Matrix4,\n start: Matrix4.Matrix4,\n distanceUnit: DistanceUnitType = 'millimeters',\n angleUnit: AngleUnitType = 'degrees'\n): number {\n const units = new DistanceUnits(distanceUnit);\n const angles = new AngleUnits(angleUnit);\n\n const rotation = (): Matrix4.Matrix4 =>\n Matrix4.makeRotation(Quaternion.fromMatrixRotation(current));\n const transformDiff = (): Matrix4.Matrix4 =>\n Matrix4.multiply(current, Matrix4.invert(start));\n const relativeTranslationDiff = (): Vector3.Vector3 =>\n Vector3.transformMatrix(\n Vector3.fromMatrixPosition(transformDiff()),\n Matrix4.invert(rotation())\n );\n const relativeRotationDiff = (): Euler.Euler =>\n Euler.create(\n Vector3.transformMatrix(\n Euler.fromRotationMatrix(Matrix4.invert(transformDiff())),\n Matrix4.invert(rotation())\n )\n );\n\n switch (identifier) {\n case 'x-translate':\n return units.convertWorldValueToReal(relativeTranslationDiff().x);\n case 'y-translate':\n return units.convertWorldValueToReal(relativeTranslationDiff().y);\n case 'z-translate':\n return units.convertWorldValueToReal(relativeTranslationDiff().z);\n case 'x-rotate':\n return angles.convertTo(relativeRotationDiff().x);\n case 'y-rotate':\n return angles.convertTo(relativeRotationDiff().y);\n case 'z-rotate':\n return angles.convertTo(relativeRotationDiff().z);\n }\n return 0;\n}\n\nexport function computeUpdatedTransform(\n current: Matrix4.Matrix4,\n previous: Vector3.Vector3,\n next: Vector3.Vector3,\n viewVector: Vector3.Vector3,\n angle: number,\n identifier: string\n): Matrix4.Matrix4 {\n const delta = Vector3.subtract(next, previous);\n\n switch (identifier) {\n case 'x-translate': {\n return Matrix4.multiply(\n current,\n computeTranslation(current, Vector3.right(), delta)\n );\n }\n case 'y-translate':\n return Matrix4.multiply(\n current,\n computeTranslation(current, Vector3.up(), delta)\n );\n case 'z-translate':\n return Matrix4.multiply(\n current,\n computeTranslation(current, Vector3.back(), delta)\n );\n case 'x-rotate':\n return Matrix4.multiply(\n computeRotation(\n current,\n Matrix4.makeRotation(\n Quaternion.fromAxisAngle(\n computeRotationAxis(current, viewVector, Vector3.right()),\n angle\n )\n )\n ),\n current\n );\n case 'y-rotate':\n return Matrix4.multiply(\n computeRotation(\n current,\n Matrix4.makeRotation(\n Quaternion.fromAxisAngle(\n computeRotationAxis(current, viewVector, Vector3.up()),\n angle\n )\n )\n ),\n current\n );\n case 'z-rotate':\n return Matrix4.multiply(\n computeRotation(\n current,\n Matrix4.makeRotation(\n Quaternion.fromAxisAngle(\n computeRotationAxis(current, viewVector, Vector3.forward()),\n angle\n )\n )\n ),\n current\n );\n default:\n return current;\n }\n}\n\nexport function computeRotationAxis(\n current: Matrix4.Matrix4,\n viewVector: Vector3.Vector3,\n axis: Vector3.Vector3\n): Vector3.Vector3 {\n const rotation = Matrix4.makeRotation(Quaternion.fromMatrixRotation(current));\n const rotatedAxis = Vector3.transformMatrix(axis, rotation);\n const rotatedNegatedAxis = Vector3.transformMatrix(\n Vector3.negate(axis),\n rotation\n );\n\n return Vector3.dot(viewVector, rotatedAxis) >\n Vector3.dot(viewVector, rotatedNegatedAxis)\n ? rotatedAxis\n : rotatedNegatedAxis;\n}\n\nexport function computeTranslation(\n current: Matrix4.Matrix4,\n axis: Vector3.Vector3,\n delta: Vector3.Vector3\n): Matrix4.Matrix4 {\n const rotation = Matrix4.makeRotation(Quaternion.fromMatrixRotation(current));\n const rotatedAxis = Vector3.transformMatrix(axis, rotation);\n const rotatedDelta = Vector3.multiply(rotatedAxis, delta);\n\n return Matrix4.makeTranslation(\n Vector3.scale(rotatedDelta.x + rotatedDelta.y + rotatedDelta.z, axis)\n );\n}\n\n/**\n * Computes a rotation Matrix4 by applying the rotation at the given position,\n * then translating it back to convert it to a world delta.\n * @param rotation\n * @param current\n * @returns\n */\nexport function computeRotation(\n current: Matrix4.Matrix4,\n delta: Matrix4.Matrix4\n): Matrix4.Matrix4 {\n return Matrix4.multiply(\n Matrix4.multiply(\n Matrix4.makeTranslation(Vector3.fromMatrixPosition(current)),\n delta\n ),\n Matrix4.makeTranslation(Vector3.negate(Vector3.fromMatrixPosition(current)))\n );\n}\n\nexport function computeInputPosition(\n viewport: Viewport,\n bounds: Rectangle.Rectangle,\n shapePoints: Point.Point[]\n): PointAndPosition {\n const paddedBounds = Rectangle.pad(bounds, 5);\n const canvasPoints = shapePoints.map((sp) =>\n viewport.transformNdcPointToViewport(sp)\n );\n\n const topLeft = Rectangle.topLeft(paddedBounds);\n const topRight = Point.add(topLeft, Point.create(paddedBounds.width, 0));\n const bottomRight = Rectangle.bottomRight(paddedBounds);\n const bottomLeft = Point.subtract(\n bottomRight,\n Point.create(paddedBounds.width, 0)\n );\n\n const center = Point.scale(\n canvasPoints.reduce((sum, pt) => Point.add(sum, pt), Point.create()),\n 1 / canvasPoints.length,\n 1 / canvasPoints.length\n );\n\n const closestPoint = [topRight, bottomLeft, bottomRight].reduce(\n (closest, pt) =>\n Point.distance(center, pt) < Point.distance(center, closest)\n ? pt\n : closest,\n topLeft\n );\n\n switch (closestPoint) {\n case topLeft:\n return { point: closestPoint, position: 'top-left' };\n case topRight:\n return { point: closestPoint, position: 'top-right' };\n case bottomLeft:\n return { point: closestPoint, position: 'bottom-left' };\n default:\n return { point: closestPoint, position: 'bottom-right' };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../src/components/viewer-transform-widget/util.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Euler,\n Matrix4,\n Plane,\n Point,\n Quaternion,\n Ray,\n Rectangle,\n Vector3,\n} from '@vertexvis/geometry';\n\nimport {\n AngleUnits,\n AngleUnitType,\n DistanceUnits,\n DistanceUnitType,\n Frame,\n Viewport,\n} from '../../lib/types';\nimport { TransformWidgetInputPlacement } from './viewer-transform-widget-components';\n\nexport interface PointAndPlacement {\n point: Point.Point;\n placement: TransformWidgetInputPlacement;\n}\n\nexport function convertPointToCanvas(\n point: Point.Point,\n bounds?: DOMRect\n): Point.Point | undefined {\n return bounds != null\n ? Point.create(point.x - bounds.left, point.y - bounds.top)\n : undefined;\n}\n\nexport function convertCanvasPointToWorld(\n point?: Point.Point,\n frame?: Frame,\n viewport?: Viewport,\n transform?: Matrix4.Matrix4\n): Vector3.Vector3 | undefined {\n const position =\n transform != null ? Vector3.fromMatrixPosition(transform) : undefined;\n\n if (point != null && frame != null && viewport != null && position != null) {\n if (frame.scene.camera.isOrthographic()) {\n const ray = viewport.transformPointToOrthographicRay(\n point,\n frame.image,\n frame.scene.camera\n );\n // Offset the point to past the bounding sphere of the model to\n // adjust the position plane location.\n const offsetPoint = Ray.at(\n Ray.create({\n origin: position,\n direction: frame.scene.camera.direction,\n }),\n Vector3.magnitude(frame.scene.camera.viewVector) * 2\n );\n\n return Ray.intersectPlane(\n ray,\n Plane.fromNormalAndCoplanarPoint(\n frame.scene.camera.direction,\n offsetPoint\n )\n );\n } else {\n const ray = viewport.transformPointToRay(\n point,\n frame.image,\n frame.scene.camera\n );\n\n return Ray.intersectPlane(\n ray,\n Plane.fromNormalAndCoplanarPoint(frame.scene.camera.direction, position)\n );\n }\n }\n return undefined;\n}\n\nexport function computeInputTransform(\n identifier: string,\n value: number,\n lastValue: number,\n distanceUnit: DistanceUnitType = 'millimeters',\n angleUnit: AngleUnitType = 'degrees'\n): Matrix4.Matrix4 {\n const units = new DistanceUnits(distanceUnit);\n const angles = new AngleUnits(angleUnit);\n\n const rotation = (): number => angles.convertFrom(value - lastValue);\n const position = (): number =>\n units.convertRealValueToWorld(value - lastValue);\n\n switch (identifier) {\n case 'x-translate':\n return Matrix4.makeTranslation(Vector3.create(position(), 0, 0));\n case 'y-translate':\n return Matrix4.makeTranslation(Vector3.create(0, position(), 0));\n case 'z-translate':\n return Matrix4.makeTranslation(Vector3.create(0, 0, position()));\n case 'x-rotate':\n return Matrix4.makeRotation(\n Quaternion.fromAxisAngle(Vector3.left(), rotation())\n );\n case 'y-rotate':\n return Matrix4.makeRotation(\n Quaternion.fromAxisAngle(Vector3.down(), rotation())\n );\n case 'z-rotate':\n return Matrix4.makeRotation(\n Quaternion.fromAxisAngle(Vector3.forward(), rotation())\n );\n }\n return Matrix4.makeIdentity();\n}\n\nexport function computeInputDisplayValue(\n identifier: string,\n current: Matrix4.Matrix4,\n start: Matrix4.Matrix4,\n distanceUnit: DistanceUnitType = 'millimeters',\n angleUnit: AngleUnitType = 'degrees'\n): number {\n const units = new DistanceUnits(distanceUnit);\n const angles = new AngleUnits(angleUnit);\n\n const rotation = (): Matrix4.Matrix4 =>\n Matrix4.makeRotation(Quaternion.fromMatrixRotation(current));\n const transformDiff = (): Matrix4.Matrix4 =>\n Matrix4.multiply(current, Matrix4.invert(start));\n const relativeTranslationDiff = (): Vector3.Vector3 =>\n Vector3.transformMatrix(\n Vector3.fromMatrixPosition(transformDiff()),\n Matrix4.invert(rotation())\n );\n const relativeRotationDiff = (): Euler.Euler =>\n Euler.create(\n Vector3.transformMatrix(\n Euler.fromRotationMatrix(Matrix4.invert(transformDiff())),\n Matrix4.invert(rotation())\n )\n );\n\n switch (identifier) {\n case 'x-translate':\n return units.convertWorldValueToReal(relativeTranslationDiff().x);\n case 'y-translate':\n return units.convertWorldValueToReal(relativeTranslationDiff().y);\n case 'z-translate':\n return units.convertWorldValueToReal(relativeTranslationDiff().z);\n case 'x-rotate':\n return angles.convertTo(relativeRotationDiff().x);\n case 'y-rotate':\n return angles.convertTo(relativeRotationDiff().y);\n case 'z-rotate':\n return angles.convertTo(relativeRotationDiff().z);\n }\n return 0;\n}\n\nexport function computeUpdatedTransform(\n current: Matrix4.Matrix4,\n previous: Vector3.Vector3,\n next: Vector3.Vector3,\n viewVector: Vector3.Vector3,\n angle: number,\n identifier: string\n): Matrix4.Matrix4 {\n const delta = Vector3.subtract(next, previous);\n\n switch (identifier) {\n case 'x-translate': {\n return Matrix4.multiply(\n current,\n computeTranslation(current, Vector3.right(), delta)\n );\n }\n case 'y-translate':\n return Matrix4.multiply(\n current,\n computeTranslation(current, Vector3.up(), delta)\n );\n case 'z-translate':\n return Matrix4.multiply(\n current,\n computeTranslation(current, Vector3.back(), delta)\n );\n case 'x-rotate':\n return Matrix4.multiply(\n computeRotation(\n current,\n Matrix4.makeRotation(\n Quaternion.fromAxisAngle(\n computeRotationAxis(current, viewVector, Vector3.right()),\n angle\n )\n )\n ),\n current\n );\n case 'y-rotate':\n return Matrix4.multiply(\n computeRotation(\n current,\n Matrix4.makeRotation(\n Quaternion.fromAxisAngle(\n computeRotationAxis(current, viewVector, Vector3.up()),\n angle\n )\n )\n ),\n current\n );\n case 'z-rotate':\n return Matrix4.multiply(\n computeRotation(\n current,\n Matrix4.makeRotation(\n Quaternion.fromAxisAngle(\n computeRotationAxis(current, viewVector, Vector3.forward()),\n angle\n )\n )\n ),\n current\n );\n default:\n return current;\n }\n}\n\nexport function computeRotationAxis(\n current: Matrix4.Matrix4,\n viewVector: Vector3.Vector3,\n axis: Vector3.Vector3\n): Vector3.Vector3 {\n const rotation = Matrix4.makeRotation(Quaternion.fromMatrixRotation(current));\n const rotatedAxis = Vector3.transformMatrix(axis, rotation);\n const rotatedNegatedAxis = Vector3.transformMatrix(\n Vector3.negate(axis),\n rotation\n );\n\n return Vector3.dot(viewVector, rotatedAxis) >\n Vector3.dot(viewVector, rotatedNegatedAxis)\n ? rotatedAxis\n : rotatedNegatedAxis;\n}\n\nexport function computeTranslation(\n current: Matrix4.Matrix4,\n axis: Vector3.Vector3,\n delta: Vector3.Vector3\n): Matrix4.Matrix4 {\n const rotation = Matrix4.makeRotation(Quaternion.fromMatrixRotation(current));\n const rotatedAxis = Vector3.transformMatrix(axis, rotation);\n const rotatedDelta = Vector3.multiply(rotatedAxis, delta);\n\n return Matrix4.makeTranslation(\n Vector3.scale(rotatedDelta.x + rotatedDelta.y + rotatedDelta.z, axis)\n );\n}\n\n/**\n * Computes a rotation Matrix4 by applying the rotation at the given position,\n * then translating it back to convert it to a world delta.\n * @param rotation\n * @param current\n * @returns\n */\nexport function computeRotation(\n current: Matrix4.Matrix4,\n delta: Matrix4.Matrix4\n): Matrix4.Matrix4 {\n return Matrix4.multiply(\n Matrix4.multiply(\n Matrix4.makeTranslation(Vector3.fromMatrixPosition(current)),\n delta\n ),\n Matrix4.makeTranslation(Vector3.negate(Vector3.fromMatrixPosition(current)))\n );\n}\n\nexport function computeInputPosition(\n viewport: Viewport,\n bounds: Rectangle.Rectangle,\n shapePoints: Point.Point[]\n): PointAndPlacement {\n const paddedBounds = Rectangle.pad(bounds, 5);\n const canvasPoints = shapePoints.map((sp) =>\n viewport.transformNdcPointToViewport(sp)\n );\n\n const topLeft = Rectangle.topLeft(paddedBounds);\n const topRight = Point.add(topLeft, Point.create(paddedBounds.width, 0));\n const bottomRight = Rectangle.bottomRight(paddedBounds);\n const bottomLeft = Point.subtract(\n bottomRight,\n Point.create(paddedBounds.width, 0)\n );\n\n const center = Point.scale(\n canvasPoints.reduce((sum, pt) => Point.add(sum, pt), Point.create()),\n 1 / canvasPoints.length,\n 1 / canvasPoints.length\n );\n\n const closestPoint = [topRight, bottomLeft, bottomRight].reduce(\n (closest, pt) =>\n Point.distance(center, pt) < Point.distance(center, closest)\n ? pt\n : closest,\n topLeft\n );\n\n switch (closestPoint) {\n case topLeft:\n return { point: closestPoint, placement: 'top-left' };\n case topRight:\n return { point: closestPoint, placement: 'top-right' };\n case bottomLeft:\n return { point: closestPoint, placement: 'bottom-left' };\n default:\n return { point: closestPoint, placement: 'bottom-right' };\n }\n}\n"]}
|
package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js
CHANGED
|
@@ -6,12 +6,12 @@ import { h } from '@stencil/core';
|
|
|
6
6
|
import { Dimensions } from '@vertexvis/geometry';
|
|
7
7
|
import { AngleUnits, DistanceUnits, } from '../../lib/types';
|
|
8
8
|
export const TransformWidgetInput = ({ ref, bounds, viewport, point, placement, distance, angle, decimalPlaces, distanceUnit, angleUnit, onChange, onIncrement, onDecrement, }) => {
|
|
9
|
+
var _a;
|
|
9
10
|
const angles = new AngleUnits(angleUnit);
|
|
10
11
|
const units = new DistanceUnits(distanceUnit);
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
const inputPlacement = computeInputPlacement(viewport, bounds !== null && bounds !== void 0 ? bounds : Dimensions.create(100, 30), point, placement);
|
|
12
|
+
const definedValue = (_a = distance !== null && distance !== void 0 ? distance : angle) !== null && _a !== void 0 ? _a : 0;
|
|
13
|
+
const displayValue = `${parseFloat(definedValue.toFixed(decimalPlaces))} ${distance != null ? units.unit.abbreviatedName : angles.unit.abbreviatedName}`;
|
|
14
|
+
const inputPlacement = computeInputPlacement(viewport, bounds !== null && bounds !== void 0 ? bounds : Dimensions.create(0, 0), point, placement);
|
|
15
15
|
const handleChange = (event) => {
|
|
16
16
|
if (event.target != null) {
|
|
17
17
|
const parsed = parseFloat(event.target.value);
|
package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-transform-widget-components.js","sourceRoot":"","sources":["../../../../../src/components/viewer-transform-widget/viewer-transform-widget-components.tsx"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,UAAU,EAAS,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,UAAU,EAEV,aAAa,GAGd,MAAM,iBAAiB,CAAC;AA2BzB,MAAM,CAAC,MAAM,oBAAoB,GAE7B,CAAC,EACH,GAAG,EACH,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,EAAE,EAAE
|
|
1
|
+
{"version":3,"file":"viewer-transform-widget-components.js","sourceRoot":"","sources":["../../../../../src/components/viewer-transform-widget/viewer-transform-widget-components.tsx"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,OAAO,EAAuB,CAAC,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,UAAU,EAAS,MAAM,qBAAqB,CAAC;AAExD,OAAO,EACL,UAAU,EAEV,aAAa,GAGd,MAAM,iBAAiB,CAAC;AA2BzB,MAAM,CAAC,MAAM,oBAAoB,GAE7B,CAAC,EACH,GAAG,EACH,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,aAAa,EACb,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,EAAE,EAAE;;EACH,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;EACzC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;EAC9C,MAAM,YAAY,GAAG,MAAA,QAAQ,aAAR,QAAQ,cAAR,QAAQ,GAAI,KAAK,mCAAI,CAAC,CAAC;EAC5C,MAAM,YAAY,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IACrE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,eAC9D,EAAE,CAAC;EACH,MAAM,cAAc,GAAG,qBAAqB,CAC1C,QAAQ,EACR,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACjC,KAAK,EACL,SAAS,CACV,CAAC;EAEF,MAAM,YAAY,GAAG,CAAC,KAAY,EAAQ,EAAE;IAC1C,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;MACxB,MAAM,MAAM,GAAG,UAAU,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC;MAEpE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAClB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,UAAU,CAAE,KAAK,CAAC,MAA2B,CAAC,KAAK,CAAC,CAAC,CAAC;OAClE;KACF;EACH,CAAC,CAAC;EAEF,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAQ,EAAE;IACnD,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;MAC3B,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC;KACjB;SAAM,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;MACpC,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC;KACjB;EACH,CAAC,CAAC;EAEF,OAAO,CACL,WACE,KAAK,EAAC,sBAAsB,EAC5B,KAAK,oBAAO,cAAc,GAC1B,SAAS,EAAE,aAAa;IAExB,aACE,GAAG,EAAE,GAAG,EACR,KAAK,EAAC,cAAc,EACpB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,YAAY,EACnB,QAAQ,EAAE,YAAY,GACf,CACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,SAAS,WAAW,CAAC,SAAiB,EAAE,MAAc;EACpD,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AASD,SAAS,qBAAqB,CAC5B,QAAkB,EAClB,eAAsC,EACtC,KAAkB,EAClB,SAAwC;EAExC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC;EAE9C,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,GAAG,MAAM,IAAI,CAAC;EACvB,CAAC;EAED,QAAQ,SAAS,EAAE;IACjB,KAAK,UAAU;MACb,OAAO;QACL,KAAK,EAAE,WAAW,CAChB,WAAW,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAC5D;QACD,MAAM,EAAE,WAAW,CACjB,WAAW,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAC/D;OACF,CAAC;IACJ,KAAK,WAAW;MACd,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtE,MAAM,EAAE,WAAW,CACjB,WAAW,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAC/D;OACF,CAAC;IACJ,KAAK,aAAa;MAChB,OAAO;QACL,KAAK,EAAE,WAAW,CAChB,WAAW,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAC5D;QACD,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;OACxE,CAAC;IACJ,KAAK,cAAc,CAAC;IACpB;MACE,OAAO;QACL,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACtE,GAAG,EAAE,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;OACxE,CAAC;GACL;AACH,CAAC","sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { FunctionalComponent, h } from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport {\n AngleUnits,\n AngleUnitType,\n DistanceUnits,\n DistanceUnitType,\n Viewport,\n} from '../../lib/types';\n\nexport type TransformWidgetInputPlacement =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right';\n\nexport interface TransformWidgetInputProps {\n ref: (el?: HTMLInputElement) => void;\n bounds?: DOMRect;\n\n viewport: Viewport;\n point: Point.Point;\n placement: TransformWidgetInputPlacement;\n\n distance?: number;\n angle?: number;\n decimalPlaces: number;\n distanceUnit: DistanceUnitType;\n angleUnit: AngleUnitType;\n\n onChange?: (value: number) => void | Promise<void>;\n onIncrement?: VoidFunction;\n onDecrement?: VoidFunction;\n}\n\nexport const TransformWidgetInput: FunctionalComponent<\n TransformWidgetInputProps\n> = ({\n ref,\n bounds,\n viewport,\n point,\n placement,\n distance,\n angle,\n decimalPlaces,\n distanceUnit,\n angleUnit,\n onChange,\n onIncrement,\n onDecrement,\n}) => {\n const angles = new AngleUnits(angleUnit);\n const units = new DistanceUnits(distanceUnit);\n const definedValue = distance ?? angle ?? 0;\n const displayValue = `${parseFloat(definedValue.toFixed(decimalPlaces))} ${\n distance != null ? units.unit.abbreviatedName : angles.unit.abbreviatedName\n }`;\n const inputPlacement = computeInputPlacement(\n viewport,\n bounds ?? Dimensions.create(0, 0),\n point,\n placement\n );\n\n const handleChange = (event: Event): void => {\n if (event.target != null) {\n const parsed = parseFloat((event.target as HTMLInputElement).value);\n\n if (!isNaN(parsed)) {\n onChange?.(parseFloat((event.target as HTMLInputElement).value));\n }\n }\n };\n\n const handleKeyDown = (event: KeyboardEvent): void => {\n if (event.key === 'ArrowUp') {\n onIncrement?.();\n } else if (event.key === 'ArrowDown') {\n onDecrement?.();\n }\n };\n\n return (\n <div\n class=\"widget-input wrapper\"\n style={{ ...inputPlacement }}\n onKeyDown={handleKeyDown}\n >\n <input\n ref={ref}\n class=\"widget-input\"\n type=\"text\"\n value={displayValue}\n onChange={handleChange}\n ></input>\n </div>\n );\n};\n\nfunction constrainTo(dimension: number, length: number): number {\n return Math.min(dimension, Math.max(0, length));\n}\n\ninterface InputPlacement {\n left?: string;\n right?: string;\n top?: string;\n bottom?: string;\n}\n\nfunction computeInputPlacement(\n viewport: Viewport,\n inputDimensions: Dimensions.Dimensions,\n point: Point.Point,\n placement: TransformWidgetInputPlacement\n): InputPlacement {\n const { width, height } = viewport.dimensions;\n\n function toCssLength(length: number): string {\n return `${length}px`;\n }\n\n switch (placement) {\n case 'top-left':\n return {\n right: toCssLength(\n constrainTo(width - inputDimensions.width, width - point.x)\n ),\n bottom: toCssLength(\n constrainTo(height - inputDimensions.height, height - point.y)\n ),\n };\n case 'top-right':\n return {\n left: toCssLength(constrainTo(width - inputDimensions.width, point.x)),\n bottom: toCssLength(\n constrainTo(height - inputDimensions.height, height - point.y)\n ),\n };\n case 'bottom-left':\n return {\n right: toCssLength(\n constrainTo(width - inputDimensions.width, width - point.x)\n ),\n top: toCssLength(constrainTo(height - inputDimensions.height, point.y)),\n };\n case 'bottom-right':\n default:\n return {\n left: toCssLength(constrainTo(width - inputDimensions.width, point.x)),\n top: toCssLength(constrainTo(height - inputDimensions.height, point.y)),\n };\n }\n}\n"]}
|
|
@@ -77,12 +77,10 @@ export class ViewerTransformWidget {
|
|
|
77
77
|
}
|
|
78
78
|
};
|
|
79
79
|
this.handleInputResize = () => {
|
|
80
|
-
console.log(this.inputRef);
|
|
81
80
|
if (this.inputRef != null) {
|
|
82
81
|
const inputElement = this.inputRef;
|
|
83
82
|
readDOM(() => {
|
|
84
83
|
this.inputBounds = inputElement.getBoundingClientRect();
|
|
85
|
-
console.log(this.inputBounds);
|
|
86
84
|
});
|
|
87
85
|
}
|
|
88
86
|
};
|
|
@@ -224,7 +222,6 @@ export class ViewerTransformWidget {
|
|
|
224
222
|
this.handleInputIncrement = () => {
|
|
225
223
|
if (this.inputValue != null && this.lastInputValue != null) {
|
|
226
224
|
this.inputValue = this.lastInputValue + 1;
|
|
227
|
-
console.log(this.inputValue);
|
|
228
225
|
this.handleInputChange(this.inputValue);
|
|
229
226
|
}
|
|
230
227
|
};
|
|
@@ -485,7 +482,7 @@ export class ViewerTransformWidget {
|
|
|
485
482
|
(_b = this.inputResizeObserver) === null || _b === void 0 ? void 0 : _b.unobserve(this.inputRef);
|
|
486
483
|
}
|
|
487
484
|
this.inputRef = el;
|
|
488
|
-
}, bounds: this.inputBounds, viewport: this.viewer.viewport, point: this.inputPosition.point, placement: this.inputPosition.
|
|
485
|
+
}, bounds: this.inputBounds, viewport: this.viewer.viewport, point: this.inputPosition.point, placement: this.inputPosition.placement, angle: this.getDisplayedAngle(), distance: this.getDisplayedDistance(), decimalPlaces: this.decimalPlaces, distanceUnit: this.distanceUnit, angleUnit: this.angleUnit, onChange: this.handleInputChange, onIncrement: this.handleInputIncrement, onDecrement: this.handleInputDecrement }))));
|
|
489
486
|
}
|
|
490
487
|
transform(previous, next, angle) {
|
|
491
488
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-transform-widget.js","sourceRoot":"","sources":["../../../../../src/components/viewer-transform-widget/viewer-transform-widget.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n Angle,\n Euler,\n Matrix4,\n Point,\n Quaternion,\n Vector3,\n} from '@vertexvis/geometry';\nimport { Color, Disposable } from '@vertexvis/utils';\nimport classNames from 'classnames';\n\nimport { readDOM, writeDOM } from '../../lib/stencil';\nimport { TransformController } from '../../lib/transforms/controller';\nimport { Drawable } from '../../lib/transforms/drawable';\nimport { AngleUnitType, DistanceUnitType } from '../../lib/types';\nimport {\n computeInputDisplayValue,\n computeInputPosition,\n computeInputTransform,\n computeUpdatedTransform,\n convertCanvasPointToWorld,\n convertPointToCanvas,\n PointAndPosition,\n} from './util';\nimport { TransformWidgetInput } from './viewer-transform-widget-components';\nimport { TransformWidget } from './widget';\n\n@Component({\n tag: 'vertex-viewer-transform-widget',\n styleUrl: 'viewer-transform-widget.css',\n shadow: true,\n})\nexport class ViewerTransformWidget {\n /**\n * An event that is emitted when the position of the widget changes.\n */\n @Event({ bubbles: true })\n public positionChanged!: EventEmitter<Vector3.Vector3 | undefined>;\n\n /**\n * An event that is emitted when the rotation of the widget changes.\n */\n @Event({ bubbles: true })\n public rotationChanged!: EventEmitter<Euler.Euler | undefined>;\n\n /**\n * An event that is emitted when the interaction has ended\n */\n @Event({ bubbles: true })\n public interactionEnded!: EventEmitter<Matrix4.Matrix4 | undefined>;\n\n /**\n * An event that is emitted an interaction with the widget has started\n */\n @Event({ bubbles: true })\n public interactionStarted!: EventEmitter<void>;\n\n /**\n * The viewer to connect to transforms. If nested within a <vertex-viewer>,\n * this property will be populated automatically.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The starting position of this transform widget. This position will be updated\n * as transforms occur. Setting this value to `undefined` will remove the widget.\n */\n @Prop({ mutable: true })\n public position?: Vector3.Vector3;\n\n /**\n * The starting angle for the transform widget. This rotation will be updated\n * as the rotations occur.\n */\n @Prop({ mutable: true })\n public rotation?: Euler.Euler;\n\n /**\n * The controller that is responsible for performing transforms.\n */\n @Prop({ mutable: true })\n public controller?: TransformController;\n\n /**\n * Determines whether or not the x-rotation is disabled on the widget\n */\n @Prop({ mutable: true })\n public xRotationDisabled = false;\n\n /**\n * Determines whether or not the y-rotation is disabled on the widget\n */\n @Prop({ mutable: true })\n public yRotationDisabled = false;\n\n /**\n * Determines whether or not the z-rotation is disabled on the widget\n */\n @Prop({ mutable: true })\n public zRotationDisabled = false;\n\n /**\n * Determines whether or not the x-translation is disabled on the widget\n */\n @Prop({ mutable: true })\n public xTranslationDisabled = false;\n\n /**\n * Determines whether or not the y-translation is disabled on the widget\n */\n @Prop({ mutable: true })\n public yTranslationDisabled = false;\n\n /**\n * Determines whether or not the z-translation is disabled on the widget\n */\n @Prop({ mutable: true })\n public zTranslationDisabled = false;\n\n /**\n * The unit to show for translation inputs. Defaults to `millimeters`.\n *\n * @see DistanceUnitType\n */\n @Prop()\n public distanceUnit: DistanceUnitType = 'millimeters';\n\n /**\n * The unit to show for rotation inputs. Defaults to `degrees`.\n *\n * @see AngleUnitType\n */\n @Prop()\n public angleUnit: AngleUnitType = 'degrees';\n\n /**\n * The number of decimal places to show in the input. Defaults to `1`.\n */\n @Prop()\n public decimalPlaces = 1;\n\n /**\n * @internal\n * @ignore\n *\n * Visible for testing.\n */\n @Prop({ mutable: true })\n public hovered?: Drawable;\n\n @State()\n protected inputPosition?: PointAndPosition;\n\n @State()\n protected inputValue?: number;\n\n @Element()\n private hostEl!: HTMLElement;\n\n private startingTransform?: Matrix4.Matrix4;\n private currentTransform?: Matrix4.Matrix4;\n private dragStartTransform?: Matrix4.Matrix4;\n\n private xArrowColor: Color.Color | string = '#ea3324';\n private yArrowColor: Color.Color | string = '#4faf32';\n private zArrowColor: Color.Color | string = '#0000ff';\n private hoveredColor: Color.Color | string = '#ffff00';\n\n private widget?: TransformWidget;\n private lastDragged?: Drawable;\n private dragging?: Drawable;\n private lastAngle = 0;\n private lastWorldPosition?: Vector3.Vector3;\n private lastInputValue?: number;\n\n private canvasBounds?: DOMRect;\n private inputBounds?: DOMRect;\n private canvasResizeObserver?: ResizeObserver;\n private inputResizeObserver?: ResizeObserver;\n private hostStyleObserver?: MutationObserver;\n private canvasRef?: HTMLCanvasElement;\n private inputRef?: HTMLInputElement;\n\n private hoveredChangeDisposable?: Disposable;\n\n protected componentDidLoad(): void {\n window.addEventListener('pointermove', this.handlePointerMove);\n\n this.canvasResizeObserver = new ResizeObserver(this.handleResize);\n this.inputResizeObserver = new ResizeObserver(this.handleInputResize);\n this.hostStyleObserver = new MutationObserver(this.handleStyleChange);\n\n if (this.canvasRef != null) {\n this.canvasResizeObserver.observe(this.canvasRef);\n\n this.setupTransformWidget(this.canvasRef);\n }\n\n this.hostStyleObserver.observe(this.hostEl, {\n attributes: true,\n attributeFilter: ['style'],\n });\n\n this.handleViewerChanged(this.viewer, undefined);\n this.handleStyleChange();\n this.handleInputResize();\n }\n\n protected disconnectedCallback(): void {\n window.removeEventListener('pointermove', this.handlePointerMove);\n\n this.canvasResizeObserver?.disconnect();\n this.inputResizeObserver?.disconnect();\n this.hostStyleObserver?.disconnect();\n\n this.hoveredChangeDisposable?.dispose();\n this.widget?.dispose();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n oldViewer?.removeEventListener('frameDrawn', this.handleViewerFrameDrawn);\n oldViewer?.removeEventListener(\n 'dimensionschange',\n this.handleViewerDimensionsChange\n );\n newViewer?.addEventListener('frameDrawn', this.handleViewerFrameDrawn);\n newViewer?.addEventListener(\n 'dimensionschange',\n this.handleViewerDimensionsChange\n );\n\n if (newViewer?.stream != null) {\n this.controller?.dispose();\n this.controller = new TransformController(newViewer.stream);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('xTranslationDisabled')\n @Watch('yTranslationDisabled')\n @Watch('zTranslationDisabled')\n @Watch('xRotationDisabled')\n @Watch('yRotationDisabled')\n @Watch('zRotationDisabled')\n protected handleDisabledPropertyChanged(): void {\n this.widget?.updateDisabledAxis({\n xRotation: this.xRotationDisabled,\n yRotation: this.yRotationDisabled,\n zRotation: this.zRotationDisabled,\n\n xTranslation: this.xTranslationDisabled,\n yTranslation: this.yTranslationDisabled,\n zTranslation: this.zTranslationDisabled,\n });\n }\n\n /**\n * @ignore\n */\n @Watch('rotation')\n protected handleRotationChanged(\n newRotation?: Euler.Euler,\n oldRotation?: Euler.Euler\n ): void {\n const rotationToApply = newRotation ?? Euler.create();\n\n this.currentTransform = this.getTransformForNewRotation(rotationToApply);\n this.startingTransform = this.currentTransform;\n\n // If the removal of the previous rotation above results in an identity matrix,\n // clear the transformation on the widget to prevent it from appearing at the origin.\n if (\n newRotation == null &&\n this.currentTransform != null &&\n Matrix4.isIdentity(this.currentTransform)\n ) {\n this.currentTransform = undefined;\n this.startingTransform = this.currentTransform;\n }\n\n this.widget?.updateTransform(this.currentTransform);\n\n console.debug(\n `Updating widget rotation [previous=${JSON.stringify(\n oldRotation\n )}, current=${JSON.stringify(newRotation)}]`\n );\n\n this.rotationChanged.emit(newRotation);\n }\n\n /**\n * @ignore\n */\n @Watch('position')\n protected handlePositionChanged(\n newPosition?: Vector3.Vector3,\n oldPosition?: Vector3.Vector3\n ): void {\n this.currentTransform = this.getTransformForNewPosition(newPosition);\n this.startingTransform = this.currentTransform;\n\n console.debug(\n `Updating widget position [previous=${JSON.stringify(\n oldPosition\n )}, current=${JSON.stringify(newPosition)}]`\n );\n this.widget?.updateTransform(this.currentTransform);\n\n if (newPosition == null) {\n this.lastDragged = undefined;\n this.inputPosition = undefined;\n this.controller?.clearTransform();\n }\n\n this.positionChanged.emit(newPosition);\n }\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <canvas\n ref={(el) => {\n this.canvasRef = el;\n }}\n class={classNames('widget', {\n hovered: this.hovered != null,\n })}\n width={this.viewer?.viewport.width}\n height={this.viewer?.viewport.height}\n onPointerDown={this.handleBeginDrag}\n />\n\n {this.inputPosition &&\n this.inputValue != null &&\n this.viewer?.viewport && (\n <TransformWidgetInput\n ref={(el) => {\n if (el != null) {\n this.inputResizeObserver?.observe(el);\n } else if (this.inputRef != null) {\n this.inputResizeObserver?.unobserve(this.inputRef);\n }\n this.inputRef = el;\n }}\n bounds={this.inputBounds}\n viewport={this.viewer.viewport}\n point={this.inputPosition.point}\n placement={this.inputPosition.position}\n angle={this.getDisplayedAngle()}\n distance={this.getDisplayedDistance()}\n decimalPlaces={this.decimalPlaces}\n distanceUnit={this.distanceUnit}\n angleUnit={this.angleUnit}\n onChange={this.handleInputChange}\n onIncrement={this.handleInputIncrement}\n onDecrement={this.handleInputDecrement}\n />\n )}\n </Host>\n );\n }\n\n private handleHoveredDrawableChanged = (drawable?: Drawable): void => {\n this.hovered = drawable;\n };\n\n private handleViewerFrameDrawn = (): void => {\n this.updatePropsFromViewer();\n };\n\n private handleViewerDimensionsChange = (): void => {\n writeDOM(() => {\n if (this.viewer != null && this.canvasRef != null) {\n this.canvasRef.width = this.viewer.viewport.width;\n this.canvasRef.height = this.viewer.viewport.height;\n\n this.updateCanvasBounds(this.canvasRef);\n }\n });\n };\n\n private handleResize = (): void => {\n if (this.canvasRef != null) {\n this.updateCanvasBounds(this.canvasRef);\n }\n };\n\n private handleInputResize = (): void => {\n console.log(this.inputRef);\n if (this.inputRef != null) {\n const inputElement = this.inputRef;\n\n readDOM(() => {\n this.inputBounds = inputElement.getBoundingClientRect();\n console.log(this.inputBounds);\n });\n }\n };\n\n private handleStyleChange = (): void => {\n readDOM(() => {\n const hostStyles = window.getComputedStyle(this.hostEl);\n\n this.xArrowColor = hostStyles\n .getPropertyValue('--viewer-transform-widget-x-axis-arrow-color')\n .trim();\n this.yArrowColor = hostStyles\n .getPropertyValue('--viewer-transform-widget-y-axis-arrow-color')\n .trim();\n this.zArrowColor = hostStyles\n .getPropertyValue('--viewer-transform-widget-z-axis-arrow-color')\n .trim();\n this.hoveredColor = hostStyles\n .getPropertyValue('--viewer-transform-widget-hovered-arrow-color')\n .trim();\n\n this.getTransformWidget().updateColors({\n xArrow: this.xArrowColor,\n yArrow: this.yArrowColor,\n zArrow: this.zArrowColor,\n hovered: this.hoveredColor,\n });\n });\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (this.dragging == null) {\n const canvasPoint = convertPointToCanvas(\n Point.create(event.clientX, event.clientY),\n this.getCanvasBounds()\n );\n const widget = this.getTransformWidget();\n\n if (canvasPoint != null && widget.boundsContainsPoint(canvasPoint)) {\n widget.updateCursor(canvasPoint);\n } else {\n widget.updateCursor(undefined);\n this.hovered = undefined;\n }\n }\n };\n\n private handleBeginDrag = async (event: PointerEvent): Promise<void> => {\n const canvasBounds = this.getCanvasBounds();\n\n if (\n this.hovered != null &&\n canvasBounds != null &&\n this.viewer != null &&\n this.position != null &&\n this.viewer.frame != null\n ) {\n this.dragging = this.hovered;\n\n if (this.dragging.identifier !== this.lastDragged?.identifier) {\n this.dragStartTransform = this.currentTransform;\n }\n this.lastDragged = undefined;\n\n const currentCanvas = convertPointToCanvas(\n Point.create(event.clientX, event.clientY),\n canvasBounds\n );\n const widgetCenter = this.viewer.viewport.transformWorldToViewport(\n this.position,\n this.viewer.frame.scene.camera.projectionViewMatrix\n );\n\n this.lastAngle =\n currentCanvas != null\n ? Angle.fromPoints(widgetCenter, currentCanvas)\n : 0;\n\n this.lastWorldPosition = convertCanvasPointToWorld(\n currentCanvas,\n this.viewer?.frame,\n this.viewer?.viewport,\n this.currentTransform\n );\n\n this.interactionStarted.emit();\n\n window.removeEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointermove', this.handleDrag);\n window.addEventListener('pointerup', this.handleEndTransform);\n }\n };\n\n private handleDrag = async (event: PointerEvent): Promise<void> => {\n // Prevent selection of text and interaction with view cube while dragging the widget\n event.preventDefault();\n\n const canvasBounds = this.getCanvasBounds();\n\n if (\n this.dragging != null &&\n this.lastWorldPosition != null &&\n canvasBounds != null &&\n this.viewer != null &&\n this.viewer.frame != null &&\n this.position != null\n ) {\n // Begin the transform on the first `pointermove` event as opposed to the\n // `pointerdown` to prevent accidental no-op transforms (identity matrix).\n await this.controller?.beginTransform();\n\n const currentCanvas = convertPointToCanvas(\n Point.create(event.clientX, event.clientY),\n canvasBounds\n );\n const widgetCenter = this.viewer.viewport.transformWorldToViewport(\n this.position,\n this.viewer.frame.scene.camera.projectionViewMatrix\n );\n\n const currentWorld = convertCanvasPointToWorld(\n currentCanvas,\n this.viewer?.frame,\n this.viewer?.viewport,\n this.currentTransform\n );\n\n if (\n currentWorld != null &&\n currentCanvas != null &&\n widgetCenter != null\n ) {\n const angle = Angle.fromPoints(widgetCenter, currentCanvas);\n\n this.transform(\n this.lastWorldPosition,\n currentWorld,\n angle - this.lastAngle\n );\n\n this.updateInputPosition();\n this.updateInputValue();\n\n this.lastWorldPosition = currentWorld;\n this.lastAngle = angle;\n }\n }\n };\n\n private handleEndTransform = async (event: PointerEvent): Promise<void> => {\n const canvasPoint = convertPointToCanvas(\n Point.create(event.clientX, event.clientY),\n this.getCanvasBounds()\n );\n const widget = this.getTransformWidget();\n this.lastDragged = this.dragging;\n\n this.dragging = undefined;\n this.lastWorldPosition = undefined;\n this.position =\n this.currentTransform != null\n ? Vector3.fromMatrixPosition(this.currentTransform)\n : this.position;\n this.lastAngle = 0;\n\n this.updateInputPosition();\n this.updateInputValue();\n\n widget.updateCursor(canvasPoint);\n widget.updateTransform(this.currentTransform);\n\n widget.updateDisabledAxis({\n xRotation: true,\n yRotation: true,\n zRotation: true,\n xTranslation: true,\n yTranslation: true,\n zTranslation: true,\n });\n\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleEndTransform);\n\n try {\n const delta = this.controller?.getCurrentDelta();\n\n await this.controller?.endTransform();\n\n this.interactionEnded.emit(delta);\n } catch (e) {\n console.error('Failed to end transform interaction', e);\n }\n\n window.addEventListener('pointermove', this.handlePointerMove);\n\n this.getTransformWidget().updateDisabledAxis({\n xRotation: this.xRotationDisabled,\n yRotation: this.yRotationDisabled,\n zRotation: this.zRotationDisabled,\n\n xTranslation: this.xTranslationDisabled,\n yTranslation: this.yTranslationDisabled,\n zTranslation: this.zTranslationDisabled,\n });\n };\n\n private handleInputIncrement = (): void => {\n if (this.inputValue != null && this.lastInputValue != null) {\n this.inputValue = this.lastInputValue + 1;\n console.log(this.inputValue);\n this.handleInputChange(this.inputValue);\n }\n };\n\n private handleInputDecrement = (): void => {\n if (this.inputValue != null && this.lastInputValue != null) {\n this.inputValue = this.lastInputValue - 1;\n this.handleInputChange(this.inputValue);\n }\n };\n\n private handleInputChange = async (value: number): Promise<void> => {\n if (\n this.lastDragged != null &&\n this.currentTransform != null &&\n this.startingTransform != null &&\n this.lastInputValue != null\n ) {\n this.transformCurrent(\n computeInputTransform(\n this.lastDragged.identifier,\n value,\n this.lastInputValue,\n this.distanceUnit,\n this.angleUnit\n )\n );\n\n this.lastInputValue = value;\n\n await this.controller?.beginTransform();\n this.getTransformWidget().updateTransform(this.currentTransform);\n await this.controller?.updateTransform(\n Matrix4.multiply(\n this.currentTransform,\n Matrix4.invert(this.startingTransform)\n )\n );\n this.updateInputPosition();\n await this.controller?.endTransformDebounced(() => {\n this.position =\n this.currentTransform != null\n ? Vector3.fromMatrixPosition(this.currentTransform)\n : this.position;\n });\n }\n };\n\n private updatePropsFromViewer = (): void => {\n const { frame } = this.viewer || {};\n\n if (frame != null) {\n const widget = this.getTransformWidget();\n\n widget.updateFrame(frame, this.dragging == null);\n this.updateInputPosition();\n }\n };\n\n private transform(\n previous: Vector3.Vector3,\n next: Vector3.Vector3,\n angle: number\n ): void {\n if (\n this.position != null &&\n this.startingTransform != null &&\n this.currentTransform != null &&\n this.dragging != null &&\n this.viewer != null &&\n this.viewer.frame != null\n ) {\n this.currentTransform = computeUpdatedTransform(\n this.currentTransform,\n previous,\n next,\n this.viewer?.frame.scene.camera.viewVector,\n angle,\n this.dragging.identifier\n );\n\n this.getTransformWidget().updateTransform(this.currentTransform);\n this.controller?.updateTransform(\n Matrix4.multiply(\n this.currentTransform,\n Matrix4.invert(this.startingTransform)\n )\n );\n }\n }\n\n private handleSettingDisabledAxis(): void {\n if (this.widget) {\n this.widget.updateDisabledAxis({\n xRotation: this.xRotationDisabled,\n yRotation: this.yRotationDisabled,\n zRotation: this.zRotationDisabled,\n xTranslation: this.xTranslationDisabled,\n yTranslation: this.yTranslationDisabled,\n zTranslation: this.zTranslationDisabled,\n });\n } else {\n console.warn('Cannot set disabled values - no widget defined');\n }\n }\n\n private setupTransformWidget = (\n canvasRef: HTMLCanvasElement\n ): TransformWidget => {\n console.debug(\n `Initializing transform widget. [initial-position=${JSON.stringify(\n this.position\n )}, has-initial-frame=${this.viewer?.frame != null}]`\n );\n\n this.widget = new TransformWidget(canvasRef, {\n xArrow: this.xArrowColor,\n yArrow: this.yArrowColor,\n zArrow: this.zArrowColor,\n hovered: this.hoveredColor,\n });\n\n if (this.rotation != null) {\n this.currentTransform = this.getTransformForNewRotation(this.rotation);\n this.startingTransform = this.currentTransform;\n this.widget.updateTransform(this.currentTransform);\n }\n\n if (this.position != null) {\n this.currentTransform = this.getTransformForNewPosition(this.position);\n this.startingTransform = this.currentTransform;\n this.widget.updateTransform(this.currentTransform);\n }\n if (this.viewer?.frame != null) {\n this.widget.updateFrame(this.viewer.frame, true);\n }\n\n this.handleSettingDisabledAxis();\n\n this.hoveredChangeDisposable = this.widget.onHoveredChanged(\n this.handleHoveredDrawableChanged\n );\n\n return this.widget;\n };\n\n private updateCanvasBounds = (canvasElement: HTMLCanvasElement): void => {\n readDOM(() => {\n this.canvasBounds = canvasElement.getBoundingClientRect();\n\n this.getTransformWidget().updateDimensions(canvasElement);\n });\n };\n\n private get currentRotation(): Matrix4.Matrix4 {\n if (this.currentTransform != null) {\n return Matrix4.makeRotation(\n Quaternion.fromMatrixRotation(this.currentTransform)\n );\n }\n return Matrix4.makeIdentity();\n }\n\n private updateInputValue = (): void => {\n const dragging = this.dragging ?? this.lastDragged;\n if (\n dragging != null &&\n this.currentTransform != null &&\n this.dragStartTransform != null\n ) {\n this.lastInputValue = this.inputValue;\n\n this.inputValue = computeInputDisplayValue(\n dragging.identifier,\n this.currentTransform,\n this.dragStartTransform,\n this.distanceUnit,\n this.angleUnit\n );\n }\n };\n\n private transformCurrent = (transform: Matrix4.Matrix4): void => {\n this.currentTransform =\n this.currentTransform != null\n ? Matrix4.multiply(this.currentTransform, transform)\n : transform;\n };\n\n private updateInputPosition = (): void => {\n const widget = this.getTransformWidget();\n const widgetBounds = widget.getFullBounds();\n const dragging = this.dragging ?? this.lastDragged;\n if (\n this.viewer?.frame != null &&\n this.position != null &&\n dragging != null &&\n widgetBounds != null\n ) {\n this.inputPosition = computeInputPosition(\n this.viewer.viewport,\n widgetBounds,\n dragging.points.toArray()\n );\n }\n };\n\n private getDisplayedAngle = (): number | undefined => {\n const draggingIdentifier =\n this.dragging?.identifier ?? this.lastDragged?.identifier;\n if (draggingIdentifier?.includes('rotate')) {\n return this.inputValue;\n }\n };\n\n private getDisplayedDistance = (): number | undefined => {\n const draggingIdentifier =\n this.dragging?.identifier ?? this.lastDragged?.identifier;\n if (draggingIdentifier?.includes('translate')) {\n return this.inputValue;\n }\n };\n\n private getTransformForNewPosition = (\n newPosition?: Vector3.Vector3\n ): Matrix4.Matrix4 | undefined => {\n if (newPosition != null) {\n const c =\n this.currentTransform != null\n ? this.currentTransform\n : Matrix4.makeIdentity();\n\n const currentRotation = Matrix4.makeRotation(\n Quaternion.fromMatrixRotation(c)\n );\n const position = Matrix4.makeTranslation(newPosition);\n\n return Matrix4.multiply(position, currentRotation);\n }\n };\n\n private getTransformForNewRotation = (\n newRotationEuler: Euler.Euler\n ): Matrix4.Matrix4 | undefined => {\n const c =\n this.currentTransform != null\n ? this.currentTransform\n : Matrix4.makeIdentity();\n\n const oldRotation = Matrix4.invert(\n Matrix4.makeRotation(Quaternion.fromMatrixRotation(c))\n );\n\n const newRotation = Matrix4.makeRotation(\n Quaternion.fromEuler(newRotationEuler)\n );\n const oldTranslation = Matrix4.multiply(c, oldRotation);\n\n return Matrix4.multiply(oldTranslation, newRotation);\n };\n\n private getCanvasBounds = (): DOMRect | undefined => {\n if (this.canvasBounds != null) {\n return this.canvasBounds;\n } else if (this.canvasRef != null) {\n this.updateCanvasBounds(this.canvasRef);\n return this.canvasBounds;\n }\n };\n\n private getTransformWidget = (): TransformWidget => {\n if (this.widget == null && this.canvasRef != null) {\n return this.setupTransformWidget(this.canvasRef);\n } else if (this.widget != null) {\n return this.widget;\n } else {\n throw new Error(\n 'Transform widget was not initialized. The canvas element may not have been initialized.'\n );\n }\n };\n}\n"]}
|
|
1
|
+
{"version":3,"file":"viewer-transform-widget.js","sourceRoot":"","sources":["../../../../../src/components/viewer-transform-widget/viewer-transform-widget.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport {\n Angle,\n Euler,\n Matrix4,\n Point,\n Quaternion,\n Vector3,\n} from '@vertexvis/geometry';\nimport { Color, Disposable } from '@vertexvis/utils';\nimport classNames from 'classnames';\n\nimport { readDOM, writeDOM } from '../../lib/stencil';\nimport { TransformController } from '../../lib/transforms/controller';\nimport { Drawable } from '../../lib/transforms/drawable';\nimport { AngleUnitType, DistanceUnitType } from '../../lib/types';\nimport {\n computeInputDisplayValue,\n computeInputPosition,\n computeInputTransform,\n computeUpdatedTransform,\n convertCanvasPointToWorld,\n convertPointToCanvas,\n PointAndPlacement,\n} from './util';\nimport { TransformWidgetInput } from './viewer-transform-widget-components';\nimport { TransformWidget } from './widget';\n\n@Component({\n tag: 'vertex-viewer-transform-widget',\n styleUrl: 'viewer-transform-widget.css',\n shadow: true,\n})\nexport class ViewerTransformWidget {\n /**\n * An event that is emitted when the position of the widget changes.\n */\n @Event({ bubbles: true })\n public positionChanged!: EventEmitter<Vector3.Vector3 | undefined>;\n\n /**\n * An event that is emitted when the rotation of the widget changes.\n */\n @Event({ bubbles: true })\n public rotationChanged!: EventEmitter<Euler.Euler | undefined>;\n\n /**\n * An event that is emitted when the interaction has ended\n */\n @Event({ bubbles: true })\n public interactionEnded!: EventEmitter<Matrix4.Matrix4 | undefined>;\n\n /**\n * An event that is emitted an interaction with the widget has started\n */\n @Event({ bubbles: true })\n public interactionStarted!: EventEmitter<void>;\n\n /**\n * The viewer to connect to transforms. If nested within a <vertex-viewer>,\n * this property will be populated automatically.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The starting position of this transform widget. This position will be updated\n * as transforms occur. Setting this value to `undefined` will remove the widget.\n */\n @Prop({ mutable: true })\n public position?: Vector3.Vector3;\n\n /**\n * The starting angle for the transform widget. This rotation will be updated\n * as the rotations occur.\n */\n @Prop({ mutable: true })\n public rotation?: Euler.Euler;\n\n /**\n * The controller that is responsible for performing transforms.\n */\n @Prop({ mutable: true })\n public controller?: TransformController;\n\n /**\n * Determines whether or not the x-rotation is disabled on the widget\n */\n @Prop({ mutable: true })\n public xRotationDisabled = false;\n\n /**\n * Determines whether or not the y-rotation is disabled on the widget\n */\n @Prop({ mutable: true })\n public yRotationDisabled = false;\n\n /**\n * Determines whether or not the z-rotation is disabled on the widget\n */\n @Prop({ mutable: true })\n public zRotationDisabled = false;\n\n /**\n * Determines whether or not the x-translation is disabled on the widget\n */\n @Prop({ mutable: true })\n public xTranslationDisabled = false;\n\n /**\n * Determines whether or not the y-translation is disabled on the widget\n */\n @Prop({ mutable: true })\n public yTranslationDisabled = false;\n\n /**\n * Determines whether or not the z-translation is disabled on the widget\n */\n @Prop({ mutable: true })\n public zTranslationDisabled = false;\n\n /**\n * The unit to show for translation inputs. Defaults to `millimeters`.\n *\n * @see DistanceUnitType\n */\n @Prop()\n public distanceUnit: DistanceUnitType = 'millimeters';\n\n /**\n * The unit to show for rotation inputs. Defaults to `degrees`.\n *\n * @see AngleUnitType\n */\n @Prop()\n public angleUnit: AngleUnitType = 'degrees';\n\n /**\n * The number of decimal places to show in the input. Defaults to `1`.\n */\n @Prop()\n public decimalPlaces = 1;\n\n /**\n * @internal\n * @ignore\n *\n * Visible for testing.\n */\n @Prop({ mutable: true })\n public hovered?: Drawable;\n\n @State()\n protected inputPosition?: PointAndPlacement;\n\n @State()\n protected inputValue?: number;\n\n @Element()\n private hostEl!: HTMLElement;\n\n private startingTransform?: Matrix4.Matrix4;\n private currentTransform?: Matrix4.Matrix4;\n private dragStartTransform?: Matrix4.Matrix4;\n\n private xArrowColor: Color.Color | string = '#ea3324';\n private yArrowColor: Color.Color | string = '#4faf32';\n private zArrowColor: Color.Color | string = '#0000ff';\n private hoveredColor: Color.Color | string = '#ffff00';\n\n private widget?: TransformWidget;\n private lastDragged?: Drawable;\n private dragging?: Drawable;\n private lastAngle = 0;\n private lastWorldPosition?: Vector3.Vector3;\n private lastInputValue?: number;\n\n private canvasBounds?: DOMRect;\n private inputBounds?: DOMRect;\n private canvasResizeObserver?: ResizeObserver;\n private inputResizeObserver?: ResizeObserver;\n private hostStyleObserver?: MutationObserver;\n private canvasRef?: HTMLCanvasElement;\n private inputRef?: HTMLInputElement;\n\n private hoveredChangeDisposable?: Disposable;\n\n protected componentDidLoad(): void {\n window.addEventListener('pointermove', this.handlePointerMove);\n\n this.canvasResizeObserver = new ResizeObserver(this.handleResize);\n this.inputResizeObserver = new ResizeObserver(this.handleInputResize);\n this.hostStyleObserver = new MutationObserver(this.handleStyleChange);\n\n if (this.canvasRef != null) {\n this.canvasResizeObserver.observe(this.canvasRef);\n\n this.setupTransformWidget(this.canvasRef);\n }\n\n this.hostStyleObserver.observe(this.hostEl, {\n attributes: true,\n attributeFilter: ['style'],\n });\n\n this.handleViewerChanged(this.viewer, undefined);\n this.handleStyleChange();\n this.handleInputResize();\n }\n\n protected disconnectedCallback(): void {\n window.removeEventListener('pointermove', this.handlePointerMove);\n\n this.canvasResizeObserver?.disconnect();\n this.inputResizeObserver?.disconnect();\n this.hostStyleObserver?.disconnect();\n\n this.hoveredChangeDisposable?.dispose();\n this.widget?.dispose();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n oldViewer?.removeEventListener('frameDrawn', this.handleViewerFrameDrawn);\n oldViewer?.removeEventListener(\n 'dimensionschange',\n this.handleViewerDimensionsChange\n );\n newViewer?.addEventListener('frameDrawn', this.handleViewerFrameDrawn);\n newViewer?.addEventListener(\n 'dimensionschange',\n this.handleViewerDimensionsChange\n );\n\n if (newViewer?.stream != null) {\n this.controller?.dispose();\n this.controller = new TransformController(newViewer.stream);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('xTranslationDisabled')\n @Watch('yTranslationDisabled')\n @Watch('zTranslationDisabled')\n @Watch('xRotationDisabled')\n @Watch('yRotationDisabled')\n @Watch('zRotationDisabled')\n protected handleDisabledPropertyChanged(): void {\n this.widget?.updateDisabledAxis({\n xRotation: this.xRotationDisabled,\n yRotation: this.yRotationDisabled,\n zRotation: this.zRotationDisabled,\n\n xTranslation: this.xTranslationDisabled,\n yTranslation: this.yTranslationDisabled,\n zTranslation: this.zTranslationDisabled,\n });\n }\n\n /**\n * @ignore\n */\n @Watch('rotation')\n protected handleRotationChanged(\n newRotation?: Euler.Euler,\n oldRotation?: Euler.Euler\n ): void {\n const rotationToApply = newRotation ?? Euler.create();\n\n this.currentTransform = this.getTransformForNewRotation(rotationToApply);\n this.startingTransform = this.currentTransform;\n\n // If the removal of the previous rotation above results in an identity matrix,\n // clear the transformation on the widget to prevent it from appearing at the origin.\n if (\n newRotation == null &&\n this.currentTransform != null &&\n Matrix4.isIdentity(this.currentTransform)\n ) {\n this.currentTransform = undefined;\n this.startingTransform = this.currentTransform;\n }\n\n this.widget?.updateTransform(this.currentTransform);\n\n console.debug(\n `Updating widget rotation [previous=${JSON.stringify(\n oldRotation\n )}, current=${JSON.stringify(newRotation)}]`\n );\n\n this.rotationChanged.emit(newRotation);\n }\n\n /**\n * @ignore\n */\n @Watch('position')\n protected handlePositionChanged(\n newPosition?: Vector3.Vector3,\n oldPosition?: Vector3.Vector3\n ): void {\n this.currentTransform = this.getTransformForNewPosition(newPosition);\n this.startingTransform = this.currentTransform;\n\n console.debug(\n `Updating widget position [previous=${JSON.stringify(\n oldPosition\n )}, current=${JSON.stringify(newPosition)}]`\n );\n this.widget?.updateTransform(this.currentTransform);\n\n if (newPosition == null) {\n this.lastDragged = undefined;\n this.inputPosition = undefined;\n this.controller?.clearTransform();\n }\n\n this.positionChanged.emit(newPosition);\n }\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <canvas\n ref={(el) => {\n this.canvasRef = el;\n }}\n class={classNames('widget', {\n hovered: this.hovered != null,\n })}\n width={this.viewer?.viewport.width}\n height={this.viewer?.viewport.height}\n onPointerDown={this.handleBeginDrag}\n />\n\n {this.inputPosition &&\n this.inputValue != null &&\n this.viewer?.viewport && (\n <TransformWidgetInput\n ref={(el) => {\n if (el != null) {\n this.inputResizeObserver?.observe(el);\n } else if (this.inputRef != null) {\n this.inputResizeObserver?.unobserve(this.inputRef);\n }\n this.inputRef = el;\n }}\n bounds={this.inputBounds}\n viewport={this.viewer.viewport}\n point={this.inputPosition.point}\n placement={this.inputPosition.placement}\n angle={this.getDisplayedAngle()}\n distance={this.getDisplayedDistance()}\n decimalPlaces={this.decimalPlaces}\n distanceUnit={this.distanceUnit}\n angleUnit={this.angleUnit}\n onChange={this.handleInputChange}\n onIncrement={this.handleInputIncrement}\n onDecrement={this.handleInputDecrement}\n />\n )}\n </Host>\n );\n }\n\n private handleHoveredDrawableChanged = (drawable?: Drawable): void => {\n this.hovered = drawable;\n };\n\n private handleViewerFrameDrawn = (): void => {\n this.updatePropsFromViewer();\n };\n\n private handleViewerDimensionsChange = (): void => {\n writeDOM(() => {\n if (this.viewer != null && this.canvasRef != null) {\n this.canvasRef.width = this.viewer.viewport.width;\n this.canvasRef.height = this.viewer.viewport.height;\n\n this.updateCanvasBounds(this.canvasRef);\n }\n });\n };\n\n private handleResize = (): void => {\n if (this.canvasRef != null) {\n this.updateCanvasBounds(this.canvasRef);\n }\n };\n\n private handleInputResize = (): void => {\n if (this.inputRef != null) {\n const inputElement = this.inputRef;\n\n readDOM(() => {\n this.inputBounds = inputElement.getBoundingClientRect();\n });\n }\n };\n\n private handleStyleChange = (): void => {\n readDOM(() => {\n const hostStyles = window.getComputedStyle(this.hostEl);\n\n this.xArrowColor = hostStyles\n .getPropertyValue('--viewer-transform-widget-x-axis-arrow-color')\n .trim();\n this.yArrowColor = hostStyles\n .getPropertyValue('--viewer-transform-widget-y-axis-arrow-color')\n .trim();\n this.zArrowColor = hostStyles\n .getPropertyValue('--viewer-transform-widget-z-axis-arrow-color')\n .trim();\n this.hoveredColor = hostStyles\n .getPropertyValue('--viewer-transform-widget-hovered-arrow-color')\n .trim();\n\n this.getTransformWidget().updateColors({\n xArrow: this.xArrowColor,\n yArrow: this.yArrowColor,\n zArrow: this.zArrowColor,\n hovered: this.hoveredColor,\n });\n });\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (this.dragging == null) {\n const canvasPoint = convertPointToCanvas(\n Point.create(event.clientX, event.clientY),\n this.getCanvasBounds()\n );\n const widget = this.getTransformWidget();\n\n if (canvasPoint != null && widget.boundsContainsPoint(canvasPoint)) {\n widget.updateCursor(canvasPoint);\n } else {\n widget.updateCursor(undefined);\n this.hovered = undefined;\n }\n }\n };\n\n private handleBeginDrag = async (event: PointerEvent): Promise<void> => {\n const canvasBounds = this.getCanvasBounds();\n\n if (\n this.hovered != null &&\n canvasBounds != null &&\n this.viewer != null &&\n this.position != null &&\n this.viewer.frame != null\n ) {\n this.dragging = this.hovered;\n\n if (this.dragging.identifier !== this.lastDragged?.identifier) {\n this.dragStartTransform = this.currentTransform;\n }\n this.lastDragged = undefined;\n\n const currentCanvas = convertPointToCanvas(\n Point.create(event.clientX, event.clientY),\n canvasBounds\n );\n const widgetCenter = this.viewer.viewport.transformWorldToViewport(\n this.position,\n this.viewer.frame.scene.camera.projectionViewMatrix\n );\n\n this.lastAngle =\n currentCanvas != null\n ? Angle.fromPoints(widgetCenter, currentCanvas)\n : 0;\n\n this.lastWorldPosition = convertCanvasPointToWorld(\n currentCanvas,\n this.viewer?.frame,\n this.viewer?.viewport,\n this.currentTransform\n );\n\n this.interactionStarted.emit();\n\n window.removeEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointermove', this.handleDrag);\n window.addEventListener('pointerup', this.handleEndTransform);\n }\n };\n\n private handleDrag = async (event: PointerEvent): Promise<void> => {\n // Prevent selection of text and interaction with view cube while dragging the widget\n event.preventDefault();\n\n const canvasBounds = this.getCanvasBounds();\n\n if (\n this.dragging != null &&\n this.lastWorldPosition != null &&\n canvasBounds != null &&\n this.viewer != null &&\n this.viewer.frame != null &&\n this.position != null\n ) {\n // Begin the transform on the first `pointermove` event as opposed to the\n // `pointerdown` to prevent accidental no-op transforms (identity matrix).\n await this.controller?.beginTransform();\n\n const currentCanvas = convertPointToCanvas(\n Point.create(event.clientX, event.clientY),\n canvasBounds\n );\n const widgetCenter = this.viewer.viewport.transformWorldToViewport(\n this.position,\n this.viewer.frame.scene.camera.projectionViewMatrix\n );\n\n const currentWorld = convertCanvasPointToWorld(\n currentCanvas,\n this.viewer?.frame,\n this.viewer?.viewport,\n this.currentTransform\n );\n\n if (\n currentWorld != null &&\n currentCanvas != null &&\n widgetCenter != null\n ) {\n const angle = Angle.fromPoints(widgetCenter, currentCanvas);\n\n this.transform(\n this.lastWorldPosition,\n currentWorld,\n angle - this.lastAngle\n );\n\n this.updateInputPosition();\n this.updateInputValue();\n\n this.lastWorldPosition = currentWorld;\n this.lastAngle = angle;\n }\n }\n };\n\n private handleEndTransform = async (event: PointerEvent): Promise<void> => {\n const canvasPoint = convertPointToCanvas(\n Point.create(event.clientX, event.clientY),\n this.getCanvasBounds()\n );\n const widget = this.getTransformWidget();\n this.lastDragged = this.dragging;\n\n this.dragging = undefined;\n this.lastWorldPosition = undefined;\n this.position =\n this.currentTransform != null\n ? Vector3.fromMatrixPosition(this.currentTransform)\n : this.position;\n this.lastAngle = 0;\n\n this.updateInputPosition();\n this.updateInputValue();\n\n widget.updateCursor(canvasPoint);\n widget.updateTransform(this.currentTransform);\n\n widget.updateDisabledAxis({\n xRotation: true,\n yRotation: true,\n zRotation: true,\n xTranslation: true,\n yTranslation: true,\n zTranslation: true,\n });\n\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleEndTransform);\n\n try {\n const delta = this.controller?.getCurrentDelta();\n\n await this.controller?.endTransform();\n\n this.interactionEnded.emit(delta);\n } catch (e) {\n console.error('Failed to end transform interaction', e);\n }\n\n window.addEventListener('pointermove', this.handlePointerMove);\n\n this.getTransformWidget().updateDisabledAxis({\n xRotation: this.xRotationDisabled,\n yRotation: this.yRotationDisabled,\n zRotation: this.zRotationDisabled,\n\n xTranslation: this.xTranslationDisabled,\n yTranslation: this.yTranslationDisabled,\n zTranslation: this.zTranslationDisabled,\n });\n };\n\n private handleInputIncrement = (): void => {\n if (this.inputValue != null && this.lastInputValue != null) {\n this.inputValue = this.lastInputValue + 1;\n this.handleInputChange(this.inputValue);\n }\n };\n\n private handleInputDecrement = (): void => {\n if (this.inputValue != null && this.lastInputValue != null) {\n this.inputValue = this.lastInputValue - 1;\n this.handleInputChange(this.inputValue);\n }\n };\n\n private handleInputChange = async (value: number): Promise<void> => {\n if (\n this.lastDragged != null &&\n this.currentTransform != null &&\n this.startingTransform != null &&\n this.lastInputValue != null\n ) {\n this.transformCurrent(\n computeInputTransform(\n this.lastDragged.identifier,\n value,\n this.lastInputValue,\n this.distanceUnit,\n this.angleUnit\n )\n );\n\n this.lastInputValue = value;\n\n await this.controller?.beginTransform();\n this.getTransformWidget().updateTransform(this.currentTransform);\n await this.controller?.updateTransform(\n Matrix4.multiply(\n this.currentTransform,\n Matrix4.invert(this.startingTransform)\n )\n );\n this.updateInputPosition();\n await this.controller?.endTransformDebounced(() => {\n this.position =\n this.currentTransform != null\n ? Vector3.fromMatrixPosition(this.currentTransform)\n : this.position;\n });\n }\n };\n\n private updatePropsFromViewer = (): void => {\n const { frame } = this.viewer || {};\n\n if (frame != null) {\n const widget = this.getTransformWidget();\n\n widget.updateFrame(frame, this.dragging == null);\n this.updateInputPosition();\n }\n };\n\n private transform(\n previous: Vector3.Vector3,\n next: Vector3.Vector3,\n angle: number\n ): void {\n if (\n this.position != null &&\n this.startingTransform != null &&\n this.currentTransform != null &&\n this.dragging != null &&\n this.viewer != null &&\n this.viewer.frame != null\n ) {\n this.currentTransform = computeUpdatedTransform(\n this.currentTransform,\n previous,\n next,\n this.viewer?.frame.scene.camera.viewVector,\n angle,\n this.dragging.identifier\n );\n\n this.getTransformWidget().updateTransform(this.currentTransform);\n this.controller?.updateTransform(\n Matrix4.multiply(\n this.currentTransform,\n Matrix4.invert(this.startingTransform)\n )\n );\n }\n }\n\n private handleSettingDisabledAxis(): void {\n if (this.widget) {\n this.widget.updateDisabledAxis({\n xRotation: this.xRotationDisabled,\n yRotation: this.yRotationDisabled,\n zRotation: this.zRotationDisabled,\n xTranslation: this.xTranslationDisabled,\n yTranslation: this.yTranslationDisabled,\n zTranslation: this.zTranslationDisabled,\n });\n } else {\n console.warn('Cannot set disabled values - no widget defined');\n }\n }\n\n private setupTransformWidget = (\n canvasRef: HTMLCanvasElement\n ): TransformWidget => {\n console.debug(\n `Initializing transform widget. [initial-position=${JSON.stringify(\n this.position\n )}, has-initial-frame=${this.viewer?.frame != null}]`\n );\n\n this.widget = new TransformWidget(canvasRef, {\n xArrow: this.xArrowColor,\n yArrow: this.yArrowColor,\n zArrow: this.zArrowColor,\n hovered: this.hoveredColor,\n });\n\n if (this.rotation != null) {\n this.currentTransform = this.getTransformForNewRotation(this.rotation);\n this.startingTransform = this.currentTransform;\n this.widget.updateTransform(this.currentTransform);\n }\n\n if (this.position != null) {\n this.currentTransform = this.getTransformForNewPosition(this.position);\n this.startingTransform = this.currentTransform;\n this.widget.updateTransform(this.currentTransform);\n }\n if (this.viewer?.frame != null) {\n this.widget.updateFrame(this.viewer.frame, true);\n }\n\n this.handleSettingDisabledAxis();\n\n this.hoveredChangeDisposable = this.widget.onHoveredChanged(\n this.handleHoveredDrawableChanged\n );\n\n return this.widget;\n };\n\n private updateCanvasBounds = (canvasElement: HTMLCanvasElement): void => {\n readDOM(() => {\n this.canvasBounds = canvasElement.getBoundingClientRect();\n\n this.getTransformWidget().updateDimensions(canvasElement);\n });\n };\n\n private get currentRotation(): Matrix4.Matrix4 {\n if (this.currentTransform != null) {\n return Matrix4.makeRotation(\n Quaternion.fromMatrixRotation(this.currentTransform)\n );\n }\n return Matrix4.makeIdentity();\n }\n\n private updateInputValue = (): void => {\n const dragging = this.dragging ?? this.lastDragged;\n if (\n dragging != null &&\n this.currentTransform != null &&\n this.dragStartTransform != null\n ) {\n this.lastInputValue = this.inputValue;\n\n this.inputValue = computeInputDisplayValue(\n dragging.identifier,\n this.currentTransform,\n this.dragStartTransform,\n this.distanceUnit,\n this.angleUnit\n );\n }\n };\n\n private transformCurrent = (transform: Matrix4.Matrix4): void => {\n this.currentTransform =\n this.currentTransform != null\n ? Matrix4.multiply(this.currentTransform, transform)\n : transform;\n };\n\n private updateInputPosition = (): void => {\n const widget = this.getTransformWidget();\n const widgetBounds = widget.getFullBounds();\n const dragging = this.dragging ?? this.lastDragged;\n if (\n this.viewer?.frame != null &&\n this.position != null &&\n dragging != null &&\n widgetBounds != null\n ) {\n this.inputPosition = computeInputPosition(\n this.viewer.viewport,\n widgetBounds,\n dragging.points.toArray()\n );\n }\n };\n\n private getDisplayedAngle = (): number | undefined => {\n const draggingIdentifier =\n this.dragging?.identifier ?? this.lastDragged?.identifier;\n if (draggingIdentifier?.includes('rotate')) {\n return this.inputValue;\n }\n };\n\n private getDisplayedDistance = (): number | undefined => {\n const draggingIdentifier =\n this.dragging?.identifier ?? this.lastDragged?.identifier;\n if (draggingIdentifier?.includes('translate')) {\n return this.inputValue;\n }\n };\n\n private getTransformForNewPosition = (\n newPosition?: Vector3.Vector3\n ): Matrix4.Matrix4 | undefined => {\n if (newPosition != null) {\n const c =\n this.currentTransform != null\n ? this.currentTransform\n : Matrix4.makeIdentity();\n\n const currentRotation = Matrix4.makeRotation(\n Quaternion.fromMatrixRotation(c)\n );\n const position = Matrix4.makeTranslation(newPosition);\n\n return Matrix4.multiply(position, currentRotation);\n }\n };\n\n private getTransformForNewRotation = (\n newRotationEuler: Euler.Euler\n ): Matrix4.Matrix4 | undefined => {\n const c =\n this.currentTransform != null\n ? this.currentTransform\n : Matrix4.makeIdentity();\n\n const oldRotation = Matrix4.invert(\n Matrix4.makeRotation(Quaternion.fromMatrixRotation(c))\n );\n\n const newRotation = Matrix4.makeRotation(\n Quaternion.fromEuler(newRotationEuler)\n );\n const oldTranslation = Matrix4.multiply(c, oldRotation);\n\n return Matrix4.multiply(oldTranslation, newRotation);\n };\n\n private getCanvasBounds = (): DOMRect | undefined => {\n if (this.canvasBounds != null) {\n return this.canvasBounds;\n } else if (this.canvasRef != null) {\n this.updateCanvasBounds(this.canvasRef);\n return this.canvasBounds;\n }\n };\n\n private getTransformWidget = (): TransformWidget => {\n if (this.widget == null && this.canvasRef != null) {\n return this.setupTransformWidget(this.canvasRef);\n } else if (this.widget != null) {\n return this.widget;\n } else {\n throw new Error(\n 'Transform widget was not initialized. The canvas element may not have been initialized.'\n );\n }\n };\n}\n"]}
|
|
@@ -137,24 +137,24 @@ function computeInputPosition(viewport, bounds, shapePoints) {
|
|
|
137
137
|
: closest, topLeft);
|
|
138
138
|
switch (closestPoint) {
|
|
139
139
|
case topLeft:
|
|
140
|
-
return { point: closestPoint,
|
|
140
|
+
return { point: closestPoint, placement: 'top-left' };
|
|
141
141
|
case topRight:
|
|
142
|
-
return { point: closestPoint,
|
|
142
|
+
return { point: closestPoint, placement: 'top-right' };
|
|
143
143
|
case bottomLeft:
|
|
144
|
-
return { point: closestPoint,
|
|
144
|
+
return { point: closestPoint, placement: 'bottom-left' };
|
|
145
145
|
default:
|
|
146
|
-
return { point: closestPoint,
|
|
146
|
+
return { point: closestPoint, placement: 'bottom-right' };
|
|
147
147
|
}
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
151
151
|
const TransformWidgetInput = ({ ref, bounds, viewport, point, placement, distance, angle, decimalPlaces, distanceUnit, angleUnit, onChange, onIncrement, onDecrement, }) => {
|
|
152
|
+
var _a;
|
|
152
153
|
const angles = new AngleUnits(angleUnit);
|
|
153
154
|
const units = new DistanceUnits(distanceUnit);
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const inputPlacement = computeInputPlacement(viewport, bounds !== null && bounds !== void 0 ? bounds : dimensions.create(100, 30), point, placement);
|
|
155
|
+
const definedValue = (_a = distance !== null && distance !== void 0 ? distance : angle) !== null && _a !== void 0 ? _a : 0;
|
|
156
|
+
const displayValue = `${parseFloat(definedValue.toFixed(decimalPlaces))} ${distance != null ? units.unit.abbreviatedName : angles.unit.abbreviatedName}`;
|
|
157
|
+
const inputPlacement = computeInputPlacement(viewport, bounds !== null && bounds !== void 0 ? bounds : dimensions.create(0, 0), point, placement);
|
|
158
158
|
const handleChange = (event) => {
|
|
159
159
|
if (event.target != null) {
|
|
160
160
|
const parsed = parseFloat(event.target.value);
|
|
@@ -620,12 +620,10 @@ const ViewerTransformWidget = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
|
620
620
|
}
|
|
621
621
|
};
|
|
622
622
|
this.handleInputResize = () => {
|
|
623
|
-
console.log(this.inputRef);
|
|
624
623
|
if (this.inputRef != null) {
|
|
625
624
|
const inputElement = this.inputRef;
|
|
626
625
|
readDOM(() => {
|
|
627
626
|
this.inputBounds = inputElement.getBoundingClientRect();
|
|
628
|
-
console.log(this.inputBounds);
|
|
629
627
|
});
|
|
630
628
|
}
|
|
631
629
|
};
|
|
@@ -767,7 +765,6 @@ const ViewerTransformWidget = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
|
767
765
|
this.handleInputIncrement = () => {
|
|
768
766
|
if (this.inputValue != null && this.lastInputValue != null) {
|
|
769
767
|
this.inputValue = this.lastInputValue + 1;
|
|
770
|
-
console.log(this.inputValue);
|
|
771
768
|
this.handleInputChange(this.inputValue);
|
|
772
769
|
}
|
|
773
770
|
};
|
|
@@ -1026,7 +1023,7 @@ const ViewerTransformWidget = /*@__PURE__*/ proxyCustomElement(class extends HTM
|
|
|
1026
1023
|
(_b = this.inputResizeObserver) === null || _b === void 0 ? void 0 : _b.unobserve(this.inputRef);
|
|
1027
1024
|
}
|
|
1028
1025
|
this.inputRef = el;
|
|
1029
|
-
}, bounds: this.inputBounds, viewport: this.viewer.viewport, point: this.inputPosition.point, placement: this.inputPosition.
|
|
1026
|
+
}, bounds: this.inputBounds, viewport: this.viewer.viewport, point: this.inputPosition.point, placement: this.inputPosition.placement, angle: this.getDisplayedAngle(), distance: this.getDisplayedDistance(), decimalPlaces: this.decimalPlaces, distanceUnit: this.distanceUnit, angleUnit: this.angleUnit, onChange: this.handleInputChange, onIncrement: this.handleInputIncrement, onDecrement: this.handleInputDecrement }))));
|
|
1030
1027
|
}
|
|
1031
1028
|
transform(previous, next, angle) {
|
|
1032
1029
|
var _a, _b;
|