@vertexvis/viewer 0.19.2-canary.2 → 0.19.2-canary.3

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.
@@ -177,11 +177,20 @@ const ViewerViewCube = class {
177
177
  ? { animation: { milliseconds: this.animationDuration } }
178
178
  : {};
179
179
  const worldStandardView = standardView.transformMatrix(this.worldOrientation.matrix);
180
- scene
181
- .camera()
182
- .standardView(worldStandardView)
183
- .viewAll()
184
- .render(animation);
180
+ // Check to see if any geometry is visible. If not, don't perform viewAll
181
+ const currentBoundingBox = scene.boundingBox();
182
+ if ((currentBoundingBox === null || currentBoundingBox === void 0 ? void 0 : currentBoundingBox.max) != null &&
183
+ bundle_esm.vector3.isEqual(currentBoundingBox.max, bundle_esm.vector3.origin()) &&
184
+ bundle_esm.vector3.isEqual(currentBoundingBox.min, bundle_esm.vector3.origin())) {
185
+ scene.camera().standardView(worldStandardView).render(animation);
186
+ }
187
+ else {
188
+ scene
189
+ .camera()
190
+ .standardView(worldStandardView)
191
+ .viewAll()
192
+ .render(animation);
193
+ }
185
194
  }
186
195
  };
187
196
  }
@@ -1 +1 @@
1
- {"file":"vertex-viewer-view-cube.entry.cjs.js","mappings":"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","names":["Vector3","Quaternion","h","Fragment","Euler","classNames","Orientation","FramePerspectiveCamera","readDOM","Host","StandardView"],"sources":["./src/components/viewer-view-cube/viewer-view-cube-components.tsx","./src/components/viewer-view-cube/viewer-view-cube.css?tag=vertex-viewer-view-cube&encapsulation=shadow","./src/components/viewer-view-cube/viewer-view-cube.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\nimport { Euler, Quaternion, Vector3 } from '@vertexvis/geometry';\nimport classNames from 'classnames';\n\ntype FaceEdge = 'top' | 'bottom' | 'left' | 'right';\n\ntype Corner = 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left';\n\ntype ViewCubeSide = 'front' | 'back' | 'left' | 'right' | 'top' | 'bottom';\n\ninterface ViewCubeSideData {\n direction: Vector3.Vector3;\n quaternion: Quaternion.Quaternion;\n}\n\nconst viewCubeSides: Record<ViewCubeSide, ViewCubeSideData> = {\n front: {\n direction: Vector3.back(),\n quaternion: Quaternion.create(),\n },\n back: {\n direction: Vector3.forward(),\n quaternion: Quaternion.fromAxisAngle(Vector3.up(), Math.PI),\n },\n left: {\n direction: Vector3.left(),\n quaternion: Quaternion.fromAxisAngle(Vector3.down(), Math.PI / 2),\n },\n right: {\n direction: Vector3.right(),\n quaternion: Quaternion.fromAxisAngle(Vector3.up(), Math.PI / 2),\n },\n top: {\n direction: Vector3.up(),\n quaternion: Quaternion.fromAxisAngle(Vector3.right(), -Math.PI / 2),\n },\n bottom: {\n direction: Vector3.down(),\n quaternion: Quaternion.fromAxisAngle(Vector3.left(), -Math.PI / 2),\n },\n};\n\ninterface TriadAxisProps {\n label: string;\n length: number;\n rotationAxis: Vector3.Vector3;\n}\n\nexport const TriadAxis: FunctionalComponent<TriadAxisProps> = ({\n label,\n length,\n rotationAxis,\n}) => {\n const axisStyles = { width: `${length + 5}px` };\n const quaternion = Quaternion.fromAxisAngle(rotationAxis, Math.PI / 2);\n const labelPos = Vector3.scale(length + 15, Vector3.right());\n\n return (\n <Fragment>\n <vertex-viewer-dom-group quaternion={quaternion}>\n <vertex-viewer-dom-element\n style={axisStyles}\n billboardOff\n interactionsOff\n >\n <div class={`triad-axis triad-axis-${label.toLowerCase()}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element\n rotation={Euler.create({ x: Math.PI / 2, y: 0, z: 0 })}\n style={axisStyles}\n billboardOff\n interactionsOff\n >\n <div class={`triad-axis triad-axis-${label.toLowerCase()}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element position={labelPos} interactionsOff>\n <div class={`triad-label triad-label-${label.toLowerCase()}`}>\n {label}\n </div>\n </vertex-viewer-dom-element>\n </vertex-viewer-dom-group>\n </Fragment>\n );\n};\n\ninterface ViewCubeSideProps {\n label: string;\n length: number;\n side: ViewCubeSide;\n disabled: boolean;\n onPointerDown?: (event: MouseEvent) => void;\n}\n\nexport const ViewCubeSide: FunctionalComponent<ViewCubeSideProps> = ({\n label,\n length,\n side,\n disabled,\n onPointerDown,\n}) => {\n const { direction, quaternion } = viewCubeSides[side];\n const position = Vector3.scale(length / 2 - 0.1, direction);\n\n return (\n <vertex-viewer-dom-element\n class={classNames('cube-side', { disabled })}\n position={position}\n quaternion={quaternion}\n style={{ width: `${length}px`, height: `${length}px` }}\n onPointerDown={onPointerDown}\n billboardOff\n >\n <div class={`cube-side-face cube-side-face-${label.toLowerCase()}`}>\n {label}\n </div>\n </vertex-viewer-dom-element>\n );\n};\n\ninterface ViewCubeCornerProps {\n length: number;\n face1Side: ViewCubeSide;\n face1Corner: Corner;\n face2Side: ViewCubeSide;\n face2Corner: Corner;\n face3Side: ViewCubeSide;\n face3Corner: Corner;\n disabled: boolean;\n onPointerDown?: (event: MouseEvent) => void;\n}\n\nexport const ViewCubeCorner: FunctionalComponent<ViewCubeCornerProps> = ({\n length,\n face1Side,\n face1Corner,\n face2Side,\n face2Corner,\n face3Side,\n face3Corner,\n disabled,\n onPointerDown,\n}) => {\n const { direction: dir1, quaternion: rot1 } = viewCubeSides[face1Side];\n const { direction: dir2, quaternion: rot2 } = viewCubeSides[face2Side];\n const { direction: dir3, quaternion: rot3 } = viewCubeSides[face3Side];\n\n const position1 = Vector3.scale(length / 2, dir1);\n const position2 = Vector3.scale(length / 2, dir2);\n const position3 = Vector3.scale(length / 2, dir3);\n\n const styles = { width: `${length}px`, height: `${length}px` };\n\n return (\n <vertex-viewer-dom-group\n class={classNames('cube-corner', { disabled })}\n onPointerDown={onPointerDown}\n >\n <vertex-viewer-dom-element\n position={position1}\n quaternion={rot1}\n style={styles}\n billboardOff\n >\n <div class={`cube-corner-face ${face1Corner}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element\n position={position2}\n quaternion={rot2}\n style={styles}\n billboardOff\n >\n <div class={`cube-corner-face ${face2Corner}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element\n position={position3}\n quaternion={rot3}\n style={styles}\n billboardOff\n >\n <div class={`cube-corner-face ${face3Corner}`} />\n </vertex-viewer-dom-element>\n </vertex-viewer-dom-group>\n );\n};\n\ninterface ViewCubeEdgeProps {\n length: number;\n face1Side: ViewCubeSide;\n face2Side: ViewCubeSide;\n face1Edge: FaceEdge;\n face2Edge: FaceEdge;\n disabled: boolean;\n onPointerDown?: (event: MouseEvent) => void;\n}\n\nexport const ViewCubeEdge: FunctionalComponent<ViewCubeEdgeProps> = ({\n length,\n face1Side,\n face2Side,\n face1Edge,\n face2Edge,\n disabled,\n onPointerDown,\n}) => {\n const { direction: dir1, quaternion: rot1 } = viewCubeSides[face1Side];\n const { direction: dir2, quaternion: rot2 } = viewCubeSides[face2Side];\n const position1 = Vector3.scale(length / 2, dir1);\n const position2 = Vector3.scale(length / 2, dir2);\n const styles = { width: `${length}px`, height: `${length}px` };\n\n return (\n <vertex-viewer-dom-group\n class={classNames('cube-edge', { disabled })}\n onPointerDown={onPointerDown}\n >\n <vertex-viewer-dom-element\n position={position1}\n quaternion={rot1}\n style={styles}\n billboardOff\n >\n <div class={`cube-edge-face ${face1Edge}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element\n position={position2}\n quaternion={rot2}\n style={styles}\n billboardOff\n >\n <div class={`cube-edge-face ${face2Edge}`} />\n </vertex-viewer-dom-element>\n </vertex-viewer-dom-group>\n );\n};\n\ninterface ViewCubeShadowProps {\n length: number;\n}\n\nexport const ViewCubeShadow: FunctionalComponent<ViewCubeShadowProps> = ({\n length,\n}) => {\n const { direction, quaternion } = viewCubeSides.top;\n const position = Vector3.scale(-length / 2, direction);\n\n return (\n <vertex-viewer-dom-element\n class=\"cube-shadow\"\n position={position}\n quaternion={quaternion}\n style={{ width: `${length}px`, height: `${length}px` }}\n billboardOff\n interactionsOff\n >\n <div class=\"cube-shadow-face\" />\n </vertex-viewer-dom-element>\n );\n};\n",":host {\n /**\n * @prop --viewer-view-cube-side-background: A CSS background value that\n * defines the background of a side of the cube.\n */\n --viewer-view-cube-side-background: var(--white);\n\n /**\n * @prop --viewer-view-cube-side-background-hover: A CSS background value that\n * defines the background of the hovered side of the cube. Note, the hover\n * background is rendered on-top of the side's background.\n */\n --viewer-view-cube-side-background-hover: var(--blue-500);\n\n /**\n * @prop --viewer-view-cube-side-background-hover-opacity: A CSS number that\n * defines the opacity of the background for a hovered side of the cube.\n */\n --viewer-view-cube-side-background-hover-opacity: 0.25;\n\n /**\n * @prop --viewer-view-cube-side-border: A CSS border value that defines the\n * border of each side of the cube.\n */\n --viewer-view-cube-side-border: 1.5px solid var(--neutral-500);\n\n /**\n * @prop --viewer-view-cube-edge-length: A CSS length value that defines the\n * size of an edge when hovered.\n */\n --viewer-view-cube-edge-length: 12px;\n\n /**\n * @prop --viewer-view-cube-opacity: A CSS opacity for when the cube is not\n * hovered.\n */\n --viewer-view-cube-opacity: 0.8;\n\n /**\n * @prop --viewer-view-cube-triad-x-axis-color: A CSS color for the X axis of\n * the triad\n */\n --viewer-view-cube-triad-x-axis-color: var(--x-axis-color);\n\n /**\n * @prop --viewer-view-cube-triad-y-axis-color: A CSS color for the Y axis of\n * the triad\n */\n --viewer-view-cube-triad-y-axis-color: var(--y-axis-color);\n\n /**\n * @prop --viewer-view-cube-triad-z-axis-color: A CSS color for the Z axis of\n * the triad\n */\n --viewer-view-cube-triad-z-axis-color: var(--z-axis-color);\n\n color: var(--neutral-700);\n width: 80px;\n height: 80px;\n margin: 20px;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n user-select: none;\n}\n\n.renderer {\n position: unset;\n width: 100%;\n height: 100%;\n overflow: visible;\n}\n\n.reference-point {\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background-color: black;\n}\n\n.triad {\n pointer-events: none;\n}\n\n.triad-axis {\n width: 100%;\n height: 1.5px;\n outline: 1px solid transparent;\n transform: translateX(50%);\n}\n.triad-axis-x {\n background-color: #ea3324;\n}\n.triad-axis-y {\n background-color: #4faf32;\n}\n.triad-axis-z {\n background-color: #0000ff;\n}\n\n.triad-label {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 0.6875rem;\n}\n.triad-label-x {\n color: var(--viewer-view-cube-triad-x-axis-color);\n}\n.triad-label-y {\n color: var(--viewer-view-cube-triad-y-axis-color);\n}\n.triad-label-z {\n color: var(--viewer-view-cube-triad-z-axis-color);\n}\n\n.cube {\n pointer-events: initial;\n}\n.cube:hover .cube-side-face {\n opacity: 1;\n}\n\n.cube-side {\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n.cube-side-face {\n box-sizing: border-box;\n font-size: 0.875rem;\n text-transform: uppercase;\n width: 100%;\n height: 100%;\n background-color: var(--viewer-view-cube-side-background);\n border: var(--viewer-view-cube-side-border);\n display: flex;\n align-items: center;\n justify-content: center;\n outline: 1px solid transparent;\n opacity: var(--viewer-view-cube-opacity);\n transition: opacity 0.2s ease-in-out;\n}\n.cube-side-face::before {\n content: '';\n position: absolute;\n left: calc(var(--viewer-view-cube-edge-length) - 4px);\n right: calc(var(--viewer-view-cube-edge-length) - 4px);\n top: calc(var(--viewer-view-cube-edge-length) - 4px);\n bottom: calc(var(--viewer-view-cube-edge-length) - 4px);\n}\n\n.cube-corner,\n.cube-edge {\n position: relative;\n}\n\n.cube-corner-face,\n.cube-edge-face {\n position: absolute;\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n.cube-edge-face.top {\n top: 0;\n left: var(--viewer-view-cube-edge-length);\n right: var(--viewer-view-cube-edge-length);\n height: var(--viewer-view-cube-edge-length);\n}\n.cube-edge-face.bottom {\n bottom: 0;\n left: var(--viewer-view-cube-edge-length);\n right: var(--viewer-view-cube-edge-length);\n height: var(--viewer-view-cube-edge-length);\n}\n.cube-edge-face.left {\n left: 0;\n top: var(--viewer-view-cube-edge-length);\n bottom: var(--viewer-view-cube-edge-length);\n width: var(--viewer-view-cube-edge-length);\n}\n.cube-edge-face.right {\n right: 0;\n top: var(--viewer-view-cube-edge-length);\n bottom: var(--viewer-view-cube-edge-length);\n width: var(--viewer-view-cube-edge-length);\n}\n\n.cube-corner-face {\n width: var(--viewer-view-cube-edge-length);\n height: var(--viewer-view-cube-edge-length);\n}\n.cube-corner-face.top-left {\n top: 0;\n left: 0;\n}\n.cube-corner-face.top-right {\n top: 0;\n right: 0;\n}\n.cube-corner-face.bottom-right {\n bottom: 0;\n right: 0;\n}\n.cube-corner-face.bottom-left {\n bottom: 0;\n left: 0;\n}\n\n.cube-shadow {\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n.cube-shadow-face {\n position: absolute;\n left: 4px;\n right: 4px;\n top: 4px;\n bottom: 4px;\n background-color: black;\n opacity: 0.12;\n filter: blur(4px);\n}\n\n.cube-corner .cube-corner-face,\n.cube-edge .cube-edge-face,\n.cube-side .cube-side-face::before {\n background: var(--viewer-view-cube-side-background-hover);\n opacity: 0;\n}\n\n.cube-corner:hover .cube-corner-face,\n.cube-edge:hover .cube-edge-face,\n.cube-side:hover .cube-side-face::before {\n opacity: var(--viewer-view-cube-side-background-hover-opacity);\n}\n\n.cube-corner.disabled,\n.cube-edge.disabled,\n.cube-side.disabled {\n pointer-events: none;\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\n\nimport { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Vector3 } from '@vertexvis/geometry';\n\nimport { readDOM } from '../../lib/stencil';\nimport {\n FramePerspectiveCamera,\n Orientation,\n StandardView,\n} from '../../lib/types';\nimport {\n TriadAxis,\n ViewCubeCorner,\n ViewCubeEdge,\n ViewCubeShadow,\n ViewCubeSide,\n} from './viewer-view-cube-components';\n\n@Component({\n tag: 'vertex-viewer-view-cube',\n styleUrl: 'viewer-view-cube.css',\n shadow: true,\n})\nexport class ViewerViewCube {\n private rendererEl?: HTMLVertexViewerDomRendererElement;\n\n @State()\n private boxLength = 80;\n\n @State()\n private triadPosition = Vector3.origin();\n\n /**\n * The label for the side of the cube on the positive x-axis.\n */\n @Prop()\n public xPositiveLabel = 'Right';\n\n /**\n * The label for the side of the cube on the negative x-axis.\n */\n @Prop()\n public xNegativeLabel = 'Left';\n\n /**\n * The label for the side of the cube on the positive y-axis.\n */\n @Prop()\n public yPositiveLabel = 'Top';\n\n /**\n * The label for the side of the cube on the negative y-axis.\n */\n @Prop()\n public yNegativeLabel = 'Bottom';\n\n /**\n * The label for the side of the cube on the positive z-axis.\n */\n @Prop()\n public zPositiveLabel = 'Front';\n\n /**\n * The label for the side of the cube on the negative z-axis.\n */\n @Prop()\n public zNegativeLabel = 'Back';\n\n /**\n * Disables interactions for standard views.\n */\n @Prop()\n public standardViewsOff = false;\n\n /**\n * The duration of the animation, in milliseconds, when a user performs a\n * standard view interaction. Set to 0 to disable animations.\n */\n @Prop()\n public animationDuration = 500;\n\n /**\n * Disables the display of the triad.\n */\n @Prop()\n public triadOff = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public worldOrientation: Orientation = Orientation.DEFAULT;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public camera?: FramePerspectiveCamera;\n\n /**\n * The viewer element that is connected to the view cube.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n oldViewer?.removeEventListener('frameDrawn', this.updateMatrices);\n newViewer?.addEventListener('frameDrawn', this.updateMatrices);\n this.updateMatrices();\n }\n\n private updateMatrices = (): void => {\n if (this.viewer?.frame != null) {\n const { camera } = this.viewer.frame.scene;\n\n const halfLength = this.boxLength / 2;\n this.triadPosition = Vector3.create(\n -halfLength - 5,\n -halfLength - 5,\n -halfLength - 5\n );\n\n // Used to scale the camera position so the cube is the same size as the\n // container. This isn't exact, but pretty close.\n const lengthScalar = 3.125;\n const scale = this.boxLength * lengthScalar;\n const fovY = 21.5;\n\n this.camera = new FramePerspectiveCamera(\n Vector3.scale(scale, Vector3.negate(camera.direction)),\n Vector3.origin(),\n camera.up,\n 0.1,\n 100,\n 1,\n fovY\n );\n\n this.worldOrientation = this.viewer.frame.scene.worldOrientation;\n }\n };\n\n private handleStandardView(standardView: StandardView): () => Promise<void> {\n if (this.standardViewsOff) {\n return async () => undefined;\n } else {\n return async () => {\n if (this.viewer != null) {\n const scene = await this.viewer.scene();\n const animation =\n this.animationDuration > 0\n ? { animation: { milliseconds: this.animationDuration } }\n : {};\n const worldStandardView = standardView.transformMatrix(\n this.worldOrientation.matrix\n );\n\n scene\n .camera()\n .standardView(worldStandardView)\n .viewAll()\n .render(animation);\n }\n };\n }\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.handleViewerChanged(this.viewer);\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n if (this.rendererEl != null) {\n const observer = new ResizeObserver(() => this.handleRendererResized());\n observer.observe(this.rendererEl);\n this.handleRendererResized();\n }\n }\n\n private handleRendererResized(): void {\n readDOM(() => {\n if (this.rendererEl != null) {\n const rect = this.rendererEl.getBoundingClientRect();\n this.boxLength = Math.min(rect.width, rect.height);\n }\n });\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-dom-renderer\n ref={(ref) => (this.rendererEl = ref)}\n class=\"renderer\"\n camera={this.camera}\n >\n {/* Triad */}\n {!this.triadOff && (\n <vertex-viewer-dom-group\n class=\"triad\"\n position={this.triadPosition}\n >\n <TriadAxis\n label=\"X\"\n length={this.boxLength}\n rotationAxis={Vector3.origin()}\n />\n <TriadAxis\n label=\"Y\"\n length={this.boxLength}\n rotationAxis={Vector3.back()}\n />\n <TriadAxis\n label=\"Z\"\n length={this.boxLength}\n rotationAxis={Vector3.down()}\n />\n </vertex-viewer-dom-group>\n )}\n\n {/* Cube */}\n <vertex-viewer-dom-group\n class=\"cube\"\n matrix={this.worldOrientation.matrix}\n >\n <ViewCubeShadow length={this.boxLength + 10} />\n\n {/* Sides */}\n <ViewCubeSide\n label={this.zPositiveLabel}\n length={this.boxLength}\n side=\"front\"\n onPointerDown={this.handleStandardView(StandardView.FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.zNegativeLabel}\n length={this.boxLength}\n side=\"back\"\n onPointerDown={this.handleStandardView(StandardView.BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xNegativeLabel}\n length={this.boxLength}\n side=\"left\"\n onPointerDown={this.handleStandardView(StandardView.RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xPositiveLabel}\n length={this.boxLength}\n side=\"right\"\n onPointerDown={this.handleStandardView(StandardView.LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yPositiveLabel}\n length={this.boxLength}\n side=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yNegativeLabel}\n length={this.boxLength}\n side=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM)}\n disabled={this.standardViewsOff}\n />\n\n {/* Edges */}\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"bottom\"\n face2Side=\"front\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"top\"\n face2Side=\"front\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"left\"\n face2Side=\"right\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.BACK_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"top\"\n face2Side=\"back\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"right\"\n face2Side=\"left\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.BACK_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"bottom\"\n face2Side=\"back\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_RIGHT)}\n disabled={this.standardViewsOff}\n />\n\n {/* Corners */}\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-left\"\n face2Side=\"front\"\n face2Corner=\"top-left\"\n face3Side=\"left\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-right\"\n face2Side=\"front\"\n face2Corner=\"top-right\"\n face3Side=\"right\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-right\"\n face2Side=\"front\"\n face2Corner=\"bottom-right\"\n face3Side=\"right\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-left\"\n face2Side=\"front\"\n face2Corner=\"bottom-left\"\n face3Side=\"left\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-right\"\n face2Side=\"back\"\n face2Corner=\"top-left\"\n face3Side=\"right\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-left\"\n face2Side=\"back\"\n face2Corner=\"top-right\"\n face3Side=\"left\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-left\"\n face2Side=\"back\"\n face2Corner=\"bottom-right\"\n face3Side=\"left\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-right\"\n face2Side=\"back\"\n face2Corner=\"bottom-left\"\n face3Side=\"right\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n </vertex-viewer-dom-group>\n </vertex-viewer-dom-renderer>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"vertex-viewer-view-cube.entry.cjs.js","mappings":"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","names":["Vector3","Quaternion","h","Fragment","Euler","classNames","Orientation","FramePerspectiveCamera","readDOM","Host","StandardView"],"sources":["./src/components/viewer-view-cube/viewer-view-cube-components.tsx","./src/components/viewer-view-cube/viewer-view-cube.css?tag=vertex-viewer-view-cube&encapsulation=shadow","./src/components/viewer-view-cube/viewer-view-cube.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\nimport { Euler, Quaternion, Vector3 } from '@vertexvis/geometry';\nimport classNames from 'classnames';\n\ntype FaceEdge = 'top' | 'bottom' | 'left' | 'right';\n\ntype Corner = 'top-left' | 'top-right' | 'bottom-right' | 'bottom-left';\n\ntype ViewCubeSide = 'front' | 'back' | 'left' | 'right' | 'top' | 'bottom';\n\ninterface ViewCubeSideData {\n direction: Vector3.Vector3;\n quaternion: Quaternion.Quaternion;\n}\n\nconst viewCubeSides: Record<ViewCubeSide, ViewCubeSideData> = {\n front: {\n direction: Vector3.back(),\n quaternion: Quaternion.create(),\n },\n back: {\n direction: Vector3.forward(),\n quaternion: Quaternion.fromAxisAngle(Vector3.up(), Math.PI),\n },\n left: {\n direction: Vector3.left(),\n quaternion: Quaternion.fromAxisAngle(Vector3.down(), Math.PI / 2),\n },\n right: {\n direction: Vector3.right(),\n quaternion: Quaternion.fromAxisAngle(Vector3.up(), Math.PI / 2),\n },\n top: {\n direction: Vector3.up(),\n quaternion: Quaternion.fromAxisAngle(Vector3.right(), -Math.PI / 2),\n },\n bottom: {\n direction: Vector3.down(),\n quaternion: Quaternion.fromAxisAngle(Vector3.left(), -Math.PI / 2),\n },\n};\n\ninterface TriadAxisProps {\n label: string;\n length: number;\n rotationAxis: Vector3.Vector3;\n}\n\nexport const TriadAxis: FunctionalComponent<TriadAxisProps> = ({\n label,\n length,\n rotationAxis,\n}) => {\n const axisStyles = { width: `${length + 5}px` };\n const quaternion = Quaternion.fromAxisAngle(rotationAxis, Math.PI / 2);\n const labelPos = Vector3.scale(length + 15, Vector3.right());\n\n return (\n <Fragment>\n <vertex-viewer-dom-group quaternion={quaternion}>\n <vertex-viewer-dom-element\n style={axisStyles}\n billboardOff\n interactionsOff\n >\n <div class={`triad-axis triad-axis-${label.toLowerCase()}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element\n rotation={Euler.create({ x: Math.PI / 2, y: 0, z: 0 })}\n style={axisStyles}\n billboardOff\n interactionsOff\n >\n <div class={`triad-axis triad-axis-${label.toLowerCase()}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element position={labelPos} interactionsOff>\n <div class={`triad-label triad-label-${label.toLowerCase()}`}>\n {label}\n </div>\n </vertex-viewer-dom-element>\n </vertex-viewer-dom-group>\n </Fragment>\n );\n};\n\ninterface ViewCubeSideProps {\n label: string;\n length: number;\n side: ViewCubeSide;\n disabled: boolean;\n onPointerDown?: (event: MouseEvent) => void;\n}\n\nexport const ViewCubeSide: FunctionalComponent<ViewCubeSideProps> = ({\n label,\n length,\n side,\n disabled,\n onPointerDown,\n}) => {\n const { direction, quaternion } = viewCubeSides[side];\n const position = Vector3.scale(length / 2 - 0.1, direction);\n\n return (\n <vertex-viewer-dom-element\n class={classNames('cube-side', { disabled })}\n position={position}\n quaternion={quaternion}\n style={{ width: `${length}px`, height: `${length}px` }}\n onPointerDown={onPointerDown}\n billboardOff\n >\n <div class={`cube-side-face cube-side-face-${label.toLowerCase()}`}>\n {label}\n </div>\n </vertex-viewer-dom-element>\n );\n};\n\ninterface ViewCubeCornerProps {\n length: number;\n face1Side: ViewCubeSide;\n face1Corner: Corner;\n face2Side: ViewCubeSide;\n face2Corner: Corner;\n face3Side: ViewCubeSide;\n face3Corner: Corner;\n disabled: boolean;\n onPointerDown?: (event: MouseEvent) => void;\n}\n\nexport const ViewCubeCorner: FunctionalComponent<ViewCubeCornerProps> = ({\n length,\n face1Side,\n face1Corner,\n face2Side,\n face2Corner,\n face3Side,\n face3Corner,\n disabled,\n onPointerDown,\n}) => {\n const { direction: dir1, quaternion: rot1 } = viewCubeSides[face1Side];\n const { direction: dir2, quaternion: rot2 } = viewCubeSides[face2Side];\n const { direction: dir3, quaternion: rot3 } = viewCubeSides[face3Side];\n\n const position1 = Vector3.scale(length / 2, dir1);\n const position2 = Vector3.scale(length / 2, dir2);\n const position3 = Vector3.scale(length / 2, dir3);\n\n const styles = { width: `${length}px`, height: `${length}px` };\n\n return (\n <vertex-viewer-dom-group\n class={classNames('cube-corner', { disabled })}\n onPointerDown={onPointerDown}\n >\n <vertex-viewer-dom-element\n position={position1}\n quaternion={rot1}\n style={styles}\n billboardOff\n >\n <div class={`cube-corner-face ${face1Corner}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element\n position={position2}\n quaternion={rot2}\n style={styles}\n billboardOff\n >\n <div class={`cube-corner-face ${face2Corner}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element\n position={position3}\n quaternion={rot3}\n style={styles}\n billboardOff\n >\n <div class={`cube-corner-face ${face3Corner}`} />\n </vertex-viewer-dom-element>\n </vertex-viewer-dom-group>\n );\n};\n\ninterface ViewCubeEdgeProps {\n length: number;\n face1Side: ViewCubeSide;\n face2Side: ViewCubeSide;\n face1Edge: FaceEdge;\n face2Edge: FaceEdge;\n disabled: boolean;\n onPointerDown?: (event: MouseEvent) => void;\n}\n\nexport const ViewCubeEdge: FunctionalComponent<ViewCubeEdgeProps> = ({\n length,\n face1Side,\n face2Side,\n face1Edge,\n face2Edge,\n disabled,\n onPointerDown,\n}) => {\n const { direction: dir1, quaternion: rot1 } = viewCubeSides[face1Side];\n const { direction: dir2, quaternion: rot2 } = viewCubeSides[face2Side];\n const position1 = Vector3.scale(length / 2, dir1);\n const position2 = Vector3.scale(length / 2, dir2);\n const styles = { width: `${length}px`, height: `${length}px` };\n\n return (\n <vertex-viewer-dom-group\n class={classNames('cube-edge', { disabled })}\n onPointerDown={onPointerDown}\n >\n <vertex-viewer-dom-element\n position={position1}\n quaternion={rot1}\n style={styles}\n billboardOff\n >\n <div class={`cube-edge-face ${face1Edge}`} />\n </vertex-viewer-dom-element>\n <vertex-viewer-dom-element\n position={position2}\n quaternion={rot2}\n style={styles}\n billboardOff\n >\n <div class={`cube-edge-face ${face2Edge}`} />\n </vertex-viewer-dom-element>\n </vertex-viewer-dom-group>\n );\n};\n\ninterface ViewCubeShadowProps {\n length: number;\n}\n\nexport const ViewCubeShadow: FunctionalComponent<ViewCubeShadowProps> = ({\n length,\n}) => {\n const { direction, quaternion } = viewCubeSides.top;\n const position = Vector3.scale(-length / 2, direction);\n\n return (\n <vertex-viewer-dom-element\n class=\"cube-shadow\"\n position={position}\n quaternion={quaternion}\n style={{ width: `${length}px`, height: `${length}px` }}\n billboardOff\n interactionsOff\n >\n <div class=\"cube-shadow-face\" />\n </vertex-viewer-dom-element>\n );\n};\n",":host {\n /**\n * @prop --viewer-view-cube-side-background: A CSS background value that\n * defines the background of a side of the cube.\n */\n --viewer-view-cube-side-background: var(--white);\n\n /**\n * @prop --viewer-view-cube-side-background-hover: A CSS background value that\n * defines the background of the hovered side of the cube. Note, the hover\n * background is rendered on-top of the side's background.\n */\n --viewer-view-cube-side-background-hover: var(--blue-500);\n\n /**\n * @prop --viewer-view-cube-side-background-hover-opacity: A CSS number that\n * defines the opacity of the background for a hovered side of the cube.\n */\n --viewer-view-cube-side-background-hover-opacity: 0.25;\n\n /**\n * @prop --viewer-view-cube-side-border: A CSS border value that defines the\n * border of each side of the cube.\n */\n --viewer-view-cube-side-border: 1.5px solid var(--neutral-500);\n\n /**\n * @prop --viewer-view-cube-edge-length: A CSS length value that defines the\n * size of an edge when hovered.\n */\n --viewer-view-cube-edge-length: 12px;\n\n /**\n * @prop --viewer-view-cube-opacity: A CSS opacity for when the cube is not\n * hovered.\n */\n --viewer-view-cube-opacity: 0.8;\n\n /**\n * @prop --viewer-view-cube-triad-x-axis-color: A CSS color for the X axis of\n * the triad\n */\n --viewer-view-cube-triad-x-axis-color: var(--x-axis-color);\n\n /**\n * @prop --viewer-view-cube-triad-y-axis-color: A CSS color for the Y axis of\n * the triad\n */\n --viewer-view-cube-triad-y-axis-color: var(--y-axis-color);\n\n /**\n * @prop --viewer-view-cube-triad-z-axis-color: A CSS color for the Z axis of\n * the triad\n */\n --viewer-view-cube-triad-z-axis-color: var(--z-axis-color);\n\n color: var(--neutral-700);\n width: 80px;\n height: 80px;\n margin: 20px;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n user-select: none;\n}\n\n.renderer {\n position: unset;\n width: 100%;\n height: 100%;\n overflow: visible;\n}\n\n.reference-point {\n width: 5px;\n height: 5px;\n border-radius: 50%;\n background-color: black;\n}\n\n.triad {\n pointer-events: none;\n}\n\n.triad-axis {\n width: 100%;\n height: 1.5px;\n outline: 1px solid transparent;\n transform: translateX(50%);\n}\n.triad-axis-x {\n background-color: #ea3324;\n}\n.triad-axis-y {\n background-color: #4faf32;\n}\n.triad-axis-z {\n background-color: #0000ff;\n}\n\n.triad-label {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 0.6875rem;\n}\n.triad-label-x {\n color: var(--viewer-view-cube-triad-x-axis-color);\n}\n.triad-label-y {\n color: var(--viewer-view-cube-triad-y-axis-color);\n}\n.triad-label-z {\n color: var(--viewer-view-cube-triad-z-axis-color);\n}\n\n.cube {\n pointer-events: initial;\n}\n.cube:hover .cube-side-face {\n opacity: 1;\n}\n\n.cube-side {\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n.cube-side-face {\n box-sizing: border-box;\n font-size: 0.875rem;\n text-transform: uppercase;\n width: 100%;\n height: 100%;\n background-color: var(--viewer-view-cube-side-background);\n border: var(--viewer-view-cube-side-border);\n display: flex;\n align-items: center;\n justify-content: center;\n outline: 1px solid transparent;\n opacity: var(--viewer-view-cube-opacity);\n transition: opacity 0.2s ease-in-out;\n}\n.cube-side-face::before {\n content: '';\n position: absolute;\n left: calc(var(--viewer-view-cube-edge-length) - 4px);\n right: calc(var(--viewer-view-cube-edge-length) - 4px);\n top: calc(var(--viewer-view-cube-edge-length) - 4px);\n bottom: calc(var(--viewer-view-cube-edge-length) - 4px);\n}\n\n.cube-corner,\n.cube-edge {\n position: relative;\n}\n\n.cube-corner-face,\n.cube-edge-face {\n position: absolute;\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n.cube-edge-face.top {\n top: 0;\n left: var(--viewer-view-cube-edge-length);\n right: var(--viewer-view-cube-edge-length);\n height: var(--viewer-view-cube-edge-length);\n}\n.cube-edge-face.bottom {\n bottom: 0;\n left: var(--viewer-view-cube-edge-length);\n right: var(--viewer-view-cube-edge-length);\n height: var(--viewer-view-cube-edge-length);\n}\n.cube-edge-face.left {\n left: 0;\n top: var(--viewer-view-cube-edge-length);\n bottom: var(--viewer-view-cube-edge-length);\n width: var(--viewer-view-cube-edge-length);\n}\n.cube-edge-face.right {\n right: 0;\n top: var(--viewer-view-cube-edge-length);\n bottom: var(--viewer-view-cube-edge-length);\n width: var(--viewer-view-cube-edge-length);\n}\n\n.cube-corner-face {\n width: var(--viewer-view-cube-edge-length);\n height: var(--viewer-view-cube-edge-length);\n}\n.cube-corner-face.top-left {\n top: 0;\n left: 0;\n}\n.cube-corner-face.top-right {\n top: 0;\n right: 0;\n}\n.cube-corner-face.bottom-right {\n bottom: 0;\n right: 0;\n}\n.cube-corner-face.bottom-left {\n bottom: 0;\n left: 0;\n}\n\n.cube-shadow {\n backface-visibility: hidden;\n -webkit-backface-visibility: hidden;\n}\n.cube-shadow-face {\n position: absolute;\n left: 4px;\n right: 4px;\n top: 4px;\n bottom: 4px;\n background-color: black;\n opacity: 0.12;\n filter: blur(4px);\n}\n\n.cube-corner .cube-corner-face,\n.cube-edge .cube-edge-face,\n.cube-side .cube-side-face::before {\n background: var(--viewer-view-cube-side-background-hover);\n opacity: 0;\n}\n\n.cube-corner:hover .cube-corner-face,\n.cube-edge:hover .cube-edge-face,\n.cube-side:hover .cube-side-face::before {\n opacity: var(--viewer-view-cube-side-background-hover-opacity);\n}\n\n.cube-corner.disabled,\n.cube-edge.disabled,\n.cube-side.disabled {\n pointer-events: none;\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\n\nimport { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Vector3 } from '@vertexvis/geometry';\n\nimport { readDOM } from '../../lib/stencil';\nimport {\n FramePerspectiveCamera,\n Orientation,\n StandardView,\n} from '../../lib/types';\nimport {\n TriadAxis,\n ViewCubeCorner,\n ViewCubeEdge,\n ViewCubeShadow,\n ViewCubeSide,\n} from './viewer-view-cube-components';\n\n@Component({\n tag: 'vertex-viewer-view-cube',\n styleUrl: 'viewer-view-cube.css',\n shadow: true,\n})\nexport class ViewerViewCube {\n private rendererEl?: HTMLVertexViewerDomRendererElement;\n\n @State()\n private boxLength = 80;\n\n @State()\n private triadPosition = Vector3.origin();\n\n /**\n * The label for the side of the cube on the positive x-axis.\n */\n @Prop()\n public xPositiveLabel = 'Right';\n\n /**\n * The label for the side of the cube on the negative x-axis.\n */\n @Prop()\n public xNegativeLabel = 'Left';\n\n /**\n * The label for the side of the cube on the positive y-axis.\n */\n @Prop()\n public yPositiveLabel = 'Top';\n\n /**\n * The label for the side of the cube on the negative y-axis.\n */\n @Prop()\n public yNegativeLabel = 'Bottom';\n\n /**\n * The label for the side of the cube on the positive z-axis.\n */\n @Prop()\n public zPositiveLabel = 'Front';\n\n /**\n * The label for the side of the cube on the negative z-axis.\n */\n @Prop()\n public zNegativeLabel = 'Back';\n\n /**\n * Disables interactions for standard views.\n */\n @Prop()\n public standardViewsOff = false;\n\n /**\n * The duration of the animation, in milliseconds, when a user performs a\n * standard view interaction. Set to 0 to disable animations.\n */\n @Prop()\n public animationDuration = 500;\n\n /**\n * Disables the display of the triad.\n */\n @Prop()\n public triadOff = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public worldOrientation: Orientation = Orientation.DEFAULT;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public camera?: FramePerspectiveCamera;\n\n /**\n * The viewer element that is connected to the view cube.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n oldViewer?.removeEventListener('frameDrawn', this.updateMatrices);\n newViewer?.addEventListener('frameDrawn', this.updateMatrices);\n this.updateMatrices();\n }\n\n private updateMatrices = (): void => {\n if (this.viewer?.frame != null) {\n const { camera } = this.viewer.frame.scene;\n\n const halfLength = this.boxLength / 2;\n this.triadPosition = Vector3.create(\n -halfLength - 5,\n -halfLength - 5,\n -halfLength - 5\n );\n\n // Used to scale the camera position so the cube is the same size as the\n // container. This isn't exact, but pretty close.\n const lengthScalar = 3.125;\n const scale = this.boxLength * lengthScalar;\n const fovY = 21.5;\n\n this.camera = new FramePerspectiveCamera(\n Vector3.scale(scale, Vector3.negate(camera.direction)),\n Vector3.origin(),\n camera.up,\n 0.1,\n 100,\n 1,\n fovY\n );\n\n this.worldOrientation = this.viewer.frame.scene.worldOrientation;\n }\n };\n\n private handleStandardView(standardView: StandardView): () => Promise<void> {\n if (this.standardViewsOff) {\n return async () => undefined;\n } else {\n return async () => {\n if (this.viewer != null) {\n const scene = await this.viewer.scene();\n const animation =\n this.animationDuration > 0\n ? { animation: { milliseconds: this.animationDuration } }\n : {};\n const worldStandardView = standardView.transformMatrix(\n this.worldOrientation.matrix\n );\n\n // Check to see if any geometry is visible. If not, don't perform viewAll\n const currentBoundingBox = scene.boundingBox();\n if (\n currentBoundingBox?.max != null &&\n Vector3.isEqual(currentBoundingBox.max, Vector3.origin()) &&\n Vector3.isEqual(currentBoundingBox.min, Vector3.origin())\n ) {\n scene.camera().standardView(worldStandardView).render(animation);\n } else {\n scene\n .camera()\n .standardView(worldStandardView)\n .viewAll()\n .render(animation);\n }\n }\n };\n }\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.handleViewerChanged(this.viewer);\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n if (this.rendererEl != null) {\n const observer = new ResizeObserver(() => this.handleRendererResized());\n observer.observe(this.rendererEl);\n this.handleRendererResized();\n }\n }\n\n private handleRendererResized(): void {\n readDOM(() => {\n if (this.rendererEl != null) {\n const rect = this.rendererEl.getBoundingClientRect();\n this.boxLength = Math.min(rect.width, rect.height);\n }\n });\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-dom-renderer\n ref={(ref) => (this.rendererEl = ref)}\n class=\"renderer\"\n camera={this.camera}\n >\n {/* Triad */}\n {!this.triadOff && (\n <vertex-viewer-dom-group\n class=\"triad\"\n position={this.triadPosition}\n >\n <TriadAxis\n label=\"X\"\n length={this.boxLength}\n rotationAxis={Vector3.origin()}\n />\n <TriadAxis\n label=\"Y\"\n length={this.boxLength}\n rotationAxis={Vector3.back()}\n />\n <TriadAxis\n label=\"Z\"\n length={this.boxLength}\n rotationAxis={Vector3.down()}\n />\n </vertex-viewer-dom-group>\n )}\n\n {/* Cube */}\n <vertex-viewer-dom-group\n class=\"cube\"\n matrix={this.worldOrientation.matrix}\n >\n <ViewCubeShadow length={this.boxLength + 10} />\n\n {/* Sides */}\n <ViewCubeSide\n label={this.zPositiveLabel}\n length={this.boxLength}\n side=\"front\"\n onPointerDown={this.handleStandardView(StandardView.FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.zNegativeLabel}\n length={this.boxLength}\n side=\"back\"\n onPointerDown={this.handleStandardView(StandardView.BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xNegativeLabel}\n length={this.boxLength}\n side=\"left\"\n onPointerDown={this.handleStandardView(StandardView.RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xPositiveLabel}\n length={this.boxLength}\n side=\"right\"\n onPointerDown={this.handleStandardView(StandardView.LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yPositiveLabel}\n length={this.boxLength}\n side=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yNegativeLabel}\n length={this.boxLength}\n side=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM)}\n disabled={this.standardViewsOff}\n />\n\n {/* Edges */}\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"bottom\"\n face2Side=\"front\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"top\"\n face2Side=\"front\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"left\"\n face2Side=\"right\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.BACK_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"top\"\n face2Side=\"back\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"right\"\n face2Side=\"left\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.BACK_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"bottom\"\n face2Side=\"back\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_RIGHT)}\n disabled={this.standardViewsOff}\n />\n\n {/* Corners */}\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-left\"\n face2Side=\"front\"\n face2Corner=\"top-left\"\n face3Side=\"left\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-right\"\n face2Side=\"front\"\n face2Corner=\"top-right\"\n face3Side=\"right\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-right\"\n face2Side=\"front\"\n face2Corner=\"bottom-right\"\n face3Side=\"right\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-left\"\n face2Side=\"front\"\n face2Corner=\"bottom-left\"\n face3Side=\"left\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-right\"\n face2Side=\"back\"\n face2Corner=\"top-left\"\n face3Side=\"right\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-left\"\n face2Side=\"back\"\n face2Corner=\"top-right\"\n face3Side=\"left\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-left\"\n face2Side=\"back\"\n face2Corner=\"bottom-right\"\n face3Side=\"left\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-right\"\n face2Side=\"back\"\n face2Corner=\"bottom-left\"\n face3Side=\"right\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n </vertex-viewer-dom-group>\n </vertex-viewer-dom-renderer>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -85,11 +85,20 @@ export class ViewerViewCube {
85
85
  ? { animation: { milliseconds: this.animationDuration } }
86
86
  : {};
87
87
  const worldStandardView = standardView.transformMatrix(this.worldOrientation.matrix);
88
- scene
89
- .camera()
90
- .standardView(worldStandardView)
91
- .viewAll()
92
- .render(animation);
88
+ // Check to see if any geometry is visible. If not, don't perform viewAll
89
+ const currentBoundingBox = scene.boundingBox();
90
+ if ((currentBoundingBox === null || currentBoundingBox === void 0 ? void 0 : currentBoundingBox.max) != null &&
91
+ Vector3.isEqual(currentBoundingBox.max, Vector3.origin()) &&
92
+ Vector3.isEqual(currentBoundingBox.min, Vector3.origin())) {
93
+ scene.camera().standardView(worldStandardView).render(animation);
94
+ }
95
+ else {
96
+ scene
97
+ .camera()
98
+ .standardView(worldStandardView)
99
+ .viewAll()
100
+ .render(animation);
101
+ }
93
102
  }
94
103
  };
95
104
  }
@@ -1 +1 @@
1
- {"version":3,"file":"viewer-view-cube.js","sourceRoot":"","sources":["../../../src/components/viewer-view-cube/viewer-view-cube.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\n\nimport { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Vector3 } from '@vertexvis/geometry';\n\nimport { readDOM } from '../../lib/stencil';\nimport {\n FramePerspectiveCamera,\n Orientation,\n StandardView,\n} from '../../lib/types';\nimport {\n TriadAxis,\n ViewCubeCorner,\n ViewCubeEdge,\n ViewCubeShadow,\n ViewCubeSide,\n} from './viewer-view-cube-components';\n\n@Component({\n tag: 'vertex-viewer-view-cube',\n styleUrl: 'viewer-view-cube.css',\n shadow: true,\n})\nexport class ViewerViewCube {\n private rendererEl?: HTMLVertexViewerDomRendererElement;\n\n @State()\n private boxLength = 80;\n\n @State()\n private triadPosition = Vector3.origin();\n\n /**\n * The label for the side of the cube on the positive x-axis.\n */\n @Prop()\n public xPositiveLabel = 'Right';\n\n /**\n * The label for the side of the cube on the negative x-axis.\n */\n @Prop()\n public xNegativeLabel = 'Left';\n\n /**\n * The label for the side of the cube on the positive y-axis.\n */\n @Prop()\n public yPositiveLabel = 'Top';\n\n /**\n * The label for the side of the cube on the negative y-axis.\n */\n @Prop()\n public yNegativeLabel = 'Bottom';\n\n /**\n * The label for the side of the cube on the positive z-axis.\n */\n @Prop()\n public zPositiveLabel = 'Front';\n\n /**\n * The label for the side of the cube on the negative z-axis.\n */\n @Prop()\n public zNegativeLabel = 'Back';\n\n /**\n * Disables interactions for standard views.\n */\n @Prop()\n public standardViewsOff = false;\n\n /**\n * The duration of the animation, in milliseconds, when a user performs a\n * standard view interaction. Set to 0 to disable animations.\n */\n @Prop()\n public animationDuration = 500;\n\n /**\n * Disables the display of the triad.\n */\n @Prop()\n public triadOff = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public worldOrientation: Orientation = Orientation.DEFAULT;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public camera?: FramePerspectiveCamera;\n\n /**\n * The viewer element that is connected to the view cube.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n oldViewer?.removeEventListener('frameDrawn', this.updateMatrices);\n newViewer?.addEventListener('frameDrawn', this.updateMatrices);\n this.updateMatrices();\n }\n\n private updateMatrices = (): void => {\n if (this.viewer?.frame != null) {\n const { camera } = this.viewer.frame.scene;\n\n const halfLength = this.boxLength / 2;\n this.triadPosition = Vector3.create(\n -halfLength - 5,\n -halfLength - 5,\n -halfLength - 5\n );\n\n // Used to scale the camera position so the cube is the same size as the\n // container. This isn't exact, but pretty close.\n const lengthScalar = 3.125;\n const scale = this.boxLength * lengthScalar;\n const fovY = 21.5;\n\n this.camera = new FramePerspectiveCamera(\n Vector3.scale(scale, Vector3.negate(camera.direction)),\n Vector3.origin(),\n camera.up,\n 0.1,\n 100,\n 1,\n fovY\n );\n\n this.worldOrientation = this.viewer.frame.scene.worldOrientation;\n }\n };\n\n private handleStandardView(standardView: StandardView): () => Promise<void> {\n if (this.standardViewsOff) {\n return async () => undefined;\n } else {\n return async () => {\n if (this.viewer != null) {\n const scene = await this.viewer.scene();\n const animation =\n this.animationDuration > 0\n ? { animation: { milliseconds: this.animationDuration } }\n : {};\n const worldStandardView = standardView.transformMatrix(\n this.worldOrientation.matrix\n );\n\n scene\n .camera()\n .standardView(worldStandardView)\n .viewAll()\n .render(animation);\n }\n };\n }\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.handleViewerChanged(this.viewer);\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n if (this.rendererEl != null) {\n const observer = new ResizeObserver(() => this.handleRendererResized());\n observer.observe(this.rendererEl);\n this.handleRendererResized();\n }\n }\n\n private handleRendererResized(): void {\n readDOM(() => {\n if (this.rendererEl != null) {\n const rect = this.rendererEl.getBoundingClientRect();\n this.boxLength = Math.min(rect.width, rect.height);\n }\n });\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-dom-renderer\n ref={(ref) => (this.rendererEl = ref)}\n class=\"renderer\"\n camera={this.camera}\n >\n {/* Triad */}\n {!this.triadOff && (\n <vertex-viewer-dom-group\n class=\"triad\"\n position={this.triadPosition}\n >\n <TriadAxis\n label=\"X\"\n length={this.boxLength}\n rotationAxis={Vector3.origin()}\n />\n <TriadAxis\n label=\"Y\"\n length={this.boxLength}\n rotationAxis={Vector3.back()}\n />\n <TriadAxis\n label=\"Z\"\n length={this.boxLength}\n rotationAxis={Vector3.down()}\n />\n </vertex-viewer-dom-group>\n )}\n\n {/* Cube */}\n <vertex-viewer-dom-group\n class=\"cube\"\n matrix={this.worldOrientation.matrix}\n >\n <ViewCubeShadow length={this.boxLength + 10} />\n\n {/* Sides */}\n <ViewCubeSide\n label={this.zPositiveLabel}\n length={this.boxLength}\n side=\"front\"\n onPointerDown={this.handleStandardView(StandardView.FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.zNegativeLabel}\n length={this.boxLength}\n side=\"back\"\n onPointerDown={this.handleStandardView(StandardView.BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xNegativeLabel}\n length={this.boxLength}\n side=\"left\"\n onPointerDown={this.handleStandardView(StandardView.RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xPositiveLabel}\n length={this.boxLength}\n side=\"right\"\n onPointerDown={this.handleStandardView(StandardView.LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yPositiveLabel}\n length={this.boxLength}\n side=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yNegativeLabel}\n length={this.boxLength}\n side=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM)}\n disabled={this.standardViewsOff}\n />\n\n {/* Edges */}\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"bottom\"\n face2Side=\"front\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"top\"\n face2Side=\"front\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"left\"\n face2Side=\"right\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.BACK_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"top\"\n face2Side=\"back\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"right\"\n face2Side=\"left\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.BACK_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"bottom\"\n face2Side=\"back\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_RIGHT)}\n disabled={this.standardViewsOff}\n />\n\n {/* Corners */}\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-left\"\n face2Side=\"front\"\n face2Corner=\"top-left\"\n face3Side=\"left\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-right\"\n face2Side=\"front\"\n face2Corner=\"top-right\"\n face3Side=\"right\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-right\"\n face2Side=\"front\"\n face2Corner=\"bottom-right\"\n face3Side=\"right\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-left\"\n face2Side=\"front\"\n face2Corner=\"bottom-left\"\n face3Side=\"left\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-right\"\n face2Side=\"back\"\n face2Corner=\"top-left\"\n face3Side=\"right\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-left\"\n face2Side=\"back\"\n face2Corner=\"top-right\"\n face3Side=\"left\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-left\"\n face2Side=\"back\"\n face2Corner=\"bottom-right\"\n face3Side=\"left\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-right\"\n face2Side=\"back\"\n face2Corner=\"bottom-left\"\n face3Side=\"right\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n </vertex-viewer-dom-group>\n </vertex-viewer-dom-renderer>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"viewer-view-cube.js","sourceRoot":"","sources":["../../../src/components/viewer-view-cube/viewer-view-cube.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\n\nimport { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Vector3 } from '@vertexvis/geometry';\n\nimport { readDOM } from '../../lib/stencil';\nimport {\n FramePerspectiveCamera,\n Orientation,\n StandardView,\n} from '../../lib/types';\nimport {\n TriadAxis,\n ViewCubeCorner,\n ViewCubeEdge,\n ViewCubeShadow,\n ViewCubeSide,\n} from './viewer-view-cube-components';\n\n@Component({\n tag: 'vertex-viewer-view-cube',\n styleUrl: 'viewer-view-cube.css',\n shadow: true,\n})\nexport class ViewerViewCube {\n private rendererEl?: HTMLVertexViewerDomRendererElement;\n\n @State()\n private boxLength = 80;\n\n @State()\n private triadPosition = Vector3.origin();\n\n /**\n * The label for the side of the cube on the positive x-axis.\n */\n @Prop()\n public xPositiveLabel = 'Right';\n\n /**\n * The label for the side of the cube on the negative x-axis.\n */\n @Prop()\n public xNegativeLabel = 'Left';\n\n /**\n * The label for the side of the cube on the positive y-axis.\n */\n @Prop()\n public yPositiveLabel = 'Top';\n\n /**\n * The label for the side of the cube on the negative y-axis.\n */\n @Prop()\n public yNegativeLabel = 'Bottom';\n\n /**\n * The label for the side of the cube on the positive z-axis.\n */\n @Prop()\n public zPositiveLabel = 'Front';\n\n /**\n * The label for the side of the cube on the negative z-axis.\n */\n @Prop()\n public zNegativeLabel = 'Back';\n\n /**\n * Disables interactions for standard views.\n */\n @Prop()\n public standardViewsOff = false;\n\n /**\n * The duration of the animation, in milliseconds, when a user performs a\n * standard view interaction. Set to 0 to disable animations.\n */\n @Prop()\n public animationDuration = 500;\n\n /**\n * Disables the display of the triad.\n */\n @Prop()\n public triadOff = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public worldOrientation: Orientation = Orientation.DEFAULT;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public camera?: FramePerspectiveCamera;\n\n /**\n * The viewer element that is connected to the view cube.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n oldViewer?.removeEventListener('frameDrawn', this.updateMatrices);\n newViewer?.addEventListener('frameDrawn', this.updateMatrices);\n this.updateMatrices();\n }\n\n private updateMatrices = (): void => {\n if (this.viewer?.frame != null) {\n const { camera } = this.viewer.frame.scene;\n\n const halfLength = this.boxLength / 2;\n this.triadPosition = Vector3.create(\n -halfLength - 5,\n -halfLength - 5,\n -halfLength - 5\n );\n\n // Used to scale the camera position so the cube is the same size as the\n // container. This isn't exact, but pretty close.\n const lengthScalar = 3.125;\n const scale = this.boxLength * lengthScalar;\n const fovY = 21.5;\n\n this.camera = new FramePerspectiveCamera(\n Vector3.scale(scale, Vector3.negate(camera.direction)),\n Vector3.origin(),\n camera.up,\n 0.1,\n 100,\n 1,\n fovY\n );\n\n this.worldOrientation = this.viewer.frame.scene.worldOrientation;\n }\n };\n\n private handleStandardView(standardView: StandardView): () => Promise<void> {\n if (this.standardViewsOff) {\n return async () => undefined;\n } else {\n return async () => {\n if (this.viewer != null) {\n const scene = await this.viewer.scene();\n const animation =\n this.animationDuration > 0\n ? { animation: { milliseconds: this.animationDuration } }\n : {};\n const worldStandardView = standardView.transformMatrix(\n this.worldOrientation.matrix\n );\n\n // Check to see if any geometry is visible. If not, don't perform viewAll\n const currentBoundingBox = scene.boundingBox();\n if (\n currentBoundingBox?.max != null &&\n Vector3.isEqual(currentBoundingBox.max, Vector3.origin()) &&\n Vector3.isEqual(currentBoundingBox.min, Vector3.origin())\n ) {\n scene.camera().standardView(worldStandardView).render(animation);\n } else {\n scene\n .camera()\n .standardView(worldStandardView)\n .viewAll()\n .render(animation);\n }\n }\n };\n }\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.handleViewerChanged(this.viewer);\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n if (this.rendererEl != null) {\n const observer = new ResizeObserver(() => this.handleRendererResized());\n observer.observe(this.rendererEl);\n this.handleRendererResized();\n }\n }\n\n private handleRendererResized(): void {\n readDOM(() => {\n if (this.rendererEl != null) {\n const rect = this.rendererEl.getBoundingClientRect();\n this.boxLength = Math.min(rect.width, rect.height);\n }\n });\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-dom-renderer\n ref={(ref) => (this.rendererEl = ref)}\n class=\"renderer\"\n camera={this.camera}\n >\n {/* Triad */}\n {!this.triadOff && (\n <vertex-viewer-dom-group\n class=\"triad\"\n position={this.triadPosition}\n >\n <TriadAxis\n label=\"X\"\n length={this.boxLength}\n rotationAxis={Vector3.origin()}\n />\n <TriadAxis\n label=\"Y\"\n length={this.boxLength}\n rotationAxis={Vector3.back()}\n />\n <TriadAxis\n label=\"Z\"\n length={this.boxLength}\n rotationAxis={Vector3.down()}\n />\n </vertex-viewer-dom-group>\n )}\n\n {/* Cube */}\n <vertex-viewer-dom-group\n class=\"cube\"\n matrix={this.worldOrientation.matrix}\n >\n <ViewCubeShadow length={this.boxLength + 10} />\n\n {/* Sides */}\n <ViewCubeSide\n label={this.zPositiveLabel}\n length={this.boxLength}\n side=\"front\"\n onPointerDown={this.handleStandardView(StandardView.FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.zNegativeLabel}\n length={this.boxLength}\n side=\"back\"\n onPointerDown={this.handleStandardView(StandardView.BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xNegativeLabel}\n length={this.boxLength}\n side=\"left\"\n onPointerDown={this.handleStandardView(StandardView.RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xPositiveLabel}\n length={this.boxLength}\n side=\"right\"\n onPointerDown={this.handleStandardView(StandardView.LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yPositiveLabel}\n length={this.boxLength}\n side=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yNegativeLabel}\n length={this.boxLength}\n side=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM)}\n disabled={this.standardViewsOff}\n />\n\n {/* Edges */}\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"bottom\"\n face2Side=\"front\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"top\"\n face2Side=\"front\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"left\"\n face2Side=\"right\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.BACK_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"top\"\n face2Side=\"back\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"right\"\n face2Side=\"left\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.BACK_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"bottom\"\n face2Side=\"back\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_RIGHT)}\n disabled={this.standardViewsOff}\n />\n\n {/* Corners */}\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-left\"\n face2Side=\"front\"\n face2Corner=\"top-left\"\n face3Side=\"left\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-right\"\n face2Side=\"front\"\n face2Corner=\"top-right\"\n face3Side=\"right\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-right\"\n face2Side=\"front\"\n face2Corner=\"bottom-right\"\n face3Side=\"right\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-left\"\n face2Side=\"front\"\n face2Corner=\"bottom-left\"\n face3Side=\"left\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-right\"\n face2Side=\"back\"\n face2Corner=\"top-left\"\n face3Side=\"right\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-left\"\n face2Side=\"back\"\n face2Corner=\"top-right\"\n face3Side=\"left\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-left\"\n face2Side=\"back\"\n face2Corner=\"bottom-right\"\n face3Side=\"left\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-right\"\n face2Side=\"back\"\n face2Corner=\"bottom-left\"\n face3Side=\"right\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n </vertex-viewer-dom-group>\n </vertex-viewer-dom-renderer>\n </Host>\n );\n }\n}\n"]}
@@ -174,11 +174,20 @@ const ViewerViewCube = /*@__PURE__*/ proxyCustomElement(class extends HTMLElemen
174
174
  ? { animation: { milliseconds: this.animationDuration } }
175
175
  : {};
176
176
  const worldStandardView = standardView.transformMatrix(this.worldOrientation.matrix);
177
- scene
178
- .camera()
179
- .standardView(worldStandardView)
180
- .viewAll()
181
- .render(animation);
177
+ // Check to see if any geometry is visible. If not, don't perform viewAll
178
+ const currentBoundingBox = scene.boundingBox();
179
+ if ((currentBoundingBox === null || currentBoundingBox === void 0 ? void 0 : currentBoundingBox.max) != null &&
180
+ vector3.isEqual(currentBoundingBox.max, vector3.origin()) &&
181
+ vector3.isEqual(currentBoundingBox.min, vector3.origin())) {
182
+ scene.camera().standardView(worldStandardView).render(animation);
183
+ }
184
+ else {
185
+ scene
186
+ .camera()
187
+ .standardView(worldStandardView)
188
+ .viewAll()
189
+ .render(animation);
190
+ }
182
191
  }
183
192
  };
184
193
  }