@vertexvis/viewer 1.0.2-canary.2 → 1.0.2-canary.4
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/config-20ozv4y8.js.map +1 -1
- package/dist/cjs/controller-BhcNbaX_.js.map +1 -1
- package/dist/cjs/controller-CSwG6gbQ.js.map +1 -1
- package/dist/cjs/cursors-BZmDRtaZ.js.map +1 -1
- package/dist/cjs/dom-BBil4aN3.js.map +1 -1
- package/dist/cjs/dom-CvGkFQon.js.map +1 -1
- package/dist/cjs/entities-D6kgGria.js.map +1 -1
- package/dist/cjs/geometry_pb-BTko2Wi0.js.map +1 -1
- package/dist/cjs/grpc-BsWFEUrc.js.map +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/model-C9WvOKYT.js.map +1 -1
- package/dist/cjs/model-D17EQTIh.js.map +1 -1
- package/dist/cjs/model-DAB4oD5n.js.map +1 -1
- package/dist/cjs/model-DkXCzhs_.js.map +1 -1
- package/dist/cjs/multiElementInteractionHandler-BHvRKVIp.js.map +1 -1
- package/dist/cjs/overlays-B-06bUbI.js.map +1 -1
- package/dist/cjs/queries-Da9I-xMf.js.map +1 -1
- package/dist/cjs/regl-component-HhKCyGQ3.js.map +1 -1
- package/dist/cjs/representation_pb-CrCGjlyP.js.map +1 -1
- package/dist/cjs/results-1wRRZiYG.js.map +1 -1
- package/dist/cjs/row-Cet6xXup.js.map +1 -1
- package/dist/cjs/stencil-Hsr_8Chs.js.map +1 -1
- package/dist/cjs/streamAttributes-D_J-W8-2.js.map +1 -1
- package/dist/cjs/templates-DvjgjnlO.js.map +1 -1
- package/dist/cjs/util-DIJSIQXH.js.map +1 -1
- package/dist/cjs/utils-CibrnHQ4.js.map +1 -1
- package/dist/cjs/utils-D8MbXbwO.js.map +1 -1
- package/dist/cjs/utils-qErVs2Vt.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +6 -8
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
- package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +4 -5
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-walk-mode-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer.cjs.entry.js +9 -5
- package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
- package/dist/cjs/viewport-CG1VYkIU.js.map +1 -1
- package/dist/collection/components/scene-tree/errors.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/dom.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/errors.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/grpc.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/handlers.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/row.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/viewer-ops.js.map +1 -1
- package/dist/collection/components/scene-tree/scene-tree.js +2 -2
- package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
- package/dist/collection/components/scene-tree-search/scene-tree-search.js.map +1 -1
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +1 -1
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js.map +1 -1
- package/dist/collection/components/scene-tree-table-cell/utils.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/lib/dom.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/lib/window.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +5 -5
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js.map +1 -1
- package/dist/collection/components/viewer/utils.js.map +1 -1
- package/dist/collection/components/viewer/viewer.js +9 -5
- package/dist/collection/components/viewer/viewer.js.map +1 -1
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js +2 -2
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js.map +1 -1
- package/dist/collection/components/viewer-dom-element/utils.js.map +1 -1
- package/dist/collection/components/viewer-dom-element/viewer-dom-element.js +1 -1
- package/dist/collection/components/viewer-dom-element/viewer-dom-element.js.map +1 -1
- package/dist/collection/components/viewer-dom-group/utils.js.map +1 -1
- package/dist/collection/components/viewer-dom-group/viewer-dom-group.js +1 -1
- package/dist/collection/components/viewer-dom-group/viewer-dom-group.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer2d.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer3d.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/dom.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/indicator.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/plane.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/point.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js.map +1 -1
- package/dist/collection/components/viewer-icon/viewer-icon.js.map +1 -1
- package/dist/collection/components/viewer-markup/markup-utils.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup-components.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow-components.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.js.map +1 -1
- package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js.map +1 -1
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/hitTest.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/interactions.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/utils.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js.map +1 -1
- package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js +1 -1
- package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js.map +1 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +1 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js.map +1 -1
- package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js.map +1 -1
- package/dist/collection/components/viewer-pin-group/utils.js.map +1 -1
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +2 -2
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.js.map +1 -1
- package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
- package/dist/collection/components/viewer-pin-tool/utils.js.map +1 -1
- package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js +1 -1
- package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js.map +1 -1
- package/dist/collection/components/viewer-teleport-tool/viewer-teleport-tool.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/util.js +1 -2
- package/dist/collection/components/viewer-transform-widget/util.js.map +1 -1
- 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 +3 -3
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/widget.js.map +1 -1
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.js +1 -1
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.js.map +1 -1
- package/dist/collection/components/viewer-walk-mode-tool/viewer-walk-mode-tool.js.map +1 -1
- package/dist/collection/lib/annotations/controller.js.map +1 -1
- package/dist/collection/lib/canvases/controller.js.map +1 -1
- package/dist/collection/lib/canvases/mapper.js.map +1 -1
- package/dist/collection/lib/config.js.map +1 -1
- package/dist/collection/lib/cursors.js.map +1 -1
- package/dist/collection/lib/dom.js.map +1 -1
- package/dist/collection/lib/grpc.js.map +1 -1
- package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/flyToPartKeyInteraction.js.map +1 -1
- package/dist/collection/lib/interactions/flyToPositionKeyInteraction.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApi.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiOrthographic.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiPerspective.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractions.js.map +1 -1
- package/dist/collection/lib/interactions/multiElementInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/multiPointerInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/multiTouchInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/pointerInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/tapInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/touchInteractionHandler.js.map +1 -1
- package/dist/collection/lib/keyBinding.js.map +1 -1
- package/dist/collection/lib/mappers/annotation.js.map +1 -1
- package/dist/collection/lib/mappers/camera.js.map +1 -1
- package/dist/collection/lib/mappers/color.js.map +1 -1
- package/dist/collection/lib/mappers/colorMaterial.js.map +1 -1
- package/dist/collection/lib/mappers/corePb.js.map +1 -1
- package/dist/collection/lib/mappers/corePbJs.js.map +1 -1
- package/dist/collection/lib/mappers/frameStreaming.js.map +1 -1
- package/dist/collection/lib/mappers/geometry.js.map +1 -1
- package/dist/collection/lib/mappers/material.js.map +1 -1
- package/dist/collection/lib/mappers/pagination.js.map +1 -1
- package/dist/collection/lib/mappers/scalar.js.map +1 -1
- package/dist/collection/lib/mappers/streamAttributes.js.map +1 -1
- package/dist/collection/lib/markup/interactions.js.map +1 -1
- package/dist/collection/lib/measurement/controller.js.map +1 -1
- package/dist/collection/lib/measurement/entities.js.map +1 -1
- package/dist/collection/lib/measurement/interactions.js.map +1 -1
- package/dist/collection/lib/measurement/mapper.js.map +1 -1
- package/dist/collection/lib/measurement/model.js.map +1 -1
- package/dist/collection/lib/measurement/overlays.js.map +1 -1
- package/dist/collection/lib/measurement/results.js.map +1 -1
- package/dist/collection/lib/meters.js.map +1 -1
- package/dist/collection/lib/model-views/controller.js.map +1 -1
- package/dist/collection/lib/model-views/mapper.js.map +1 -1
- package/dist/collection/lib/pins/controller.js.map +1 -1
- package/dist/collection/lib/pins/interactions.js.map +1 -1
- package/dist/collection/lib/pmi/controller.js.map +1 -1
- package/dist/collection/lib/pmi/mapper.js.map +1 -1
- package/dist/collection/lib/rendering/canvas.js.map +1 -1
- package/dist/collection/lib/rendering/imageLoaders.js.map +1 -1
- package/dist/collection/lib/rendering/matrices.js.map +1 -1
- package/dist/collection/lib/rendering/timing.js.map +1 -1
- package/dist/collection/lib/rendering/utils.js.map +1 -1
- package/dist/collection/lib/rendering/vectors.js.map +1 -1
- package/dist/collection/lib/scene-items/controller.js.map +1 -1
- package/dist/collection/lib/scene-items/mapper.js.map +1 -1
- package/dist/collection/lib/scenes/camera.js.map +1 -1
- package/dist/collection/lib/scenes/cameraRenderResult.js.map +1 -1
- package/dist/collection/lib/scenes/colorMaterial.js.map +1 -1
- package/dist/collection/lib/scenes/crossSectioner.js.map +1 -1
- package/dist/collection/lib/scenes/mapper.js.map +1 -1
- package/dist/collection/lib/scenes/operations.js.map +1 -1
- package/dist/collection/lib/scenes/queries.js.map +1 -1
- package/dist/collection/lib/scenes/raycaster.js.map +1 -1
- package/dist/collection/lib/scenes/scene.js.map +1 -1
- package/dist/collection/lib/scenes/sceneOperationExecuteResult.js.map +1 -1
- package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
- package/dist/collection/lib/stencil.js.map +1 -1
- package/dist/collection/lib/storage.js.map +1 -1
- package/dist/collection/lib/stream/dispatcher.js.map +1 -1
- package/dist/collection/lib/stream/stream.js.map +1 -1
- package/dist/collection/lib/stream/utils.js.map +1 -1
- package/dist/collection/lib/teleportation/interactions.js.map +1 -1
- package/dist/collection/lib/templates.js.map +1 -1
- package/dist/collection/lib/token.js.map +1 -1
- package/dist/collection/lib/transforms/axis-lines.js.map +1 -1
- package/dist/collection/lib/transforms/axis-rotation.js.map +1 -1
- package/dist/collection/lib/transforms/axis-translation.js.map +1 -1
- package/dist/collection/lib/transforms/controller.js.map +1 -1
- package/dist/collection/lib/transforms/drawable.js.map +1 -1
- package/dist/collection/lib/transforms/hits.js.map +1 -1
- package/dist/collection/lib/transforms/line.js.map +1 -1
- package/dist/collection/lib/transforms/mesh.js.map +1 -1
- package/dist/collection/lib/transforms/shape.js.map +1 -1
- package/dist/collection/lib/transforms/transformation-delta.js.map +1 -1
- package/dist/collection/lib/transforms/util.js.map +1 -1
- package/dist/collection/lib/types/clippingPlanes.js.map +1 -1
- package/dist/collection/lib/types/depthBuffer.js.map +1 -1
- package/dist/collection/lib/types/featureMap.js.map +1 -1
- package/dist/collection/lib/types/flags.js.map +1 -1
- package/dist/collection/lib/types/frame.js.map +1 -1
- package/dist/collection/lib/types/frameCamera.js.map +1 -1
- package/dist/collection/lib/types/loadableResource.js.map +1 -1
- package/dist/collection/lib/types/orientation.js.map +1 -1
- package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
- package/dist/collection/lib/types/standardView.js.map +1 -1
- package/dist/collection/lib/types/stencilBuffer.js.map +1 -1
- package/dist/collection/lib/types/synchronizedClock.js.map +1 -1
- package/dist/collection/lib/types/viewport.js.map +1 -1
- package/dist/collection/lib/visibilityObserver.js.map +1 -1
- package/dist/collection/lib/volume-intersection/controller.js.map +1 -1
- package/dist/collection/lib/volume-intersection/interactions.js.map +1 -1
- package/dist/collection/lib/volume-intersection/model.js.map +1 -1
- package/dist/collection/lib/walk-mode/controller.js.map +1 -1
- package/dist/collection/lib/walk-mode/interactions.js.map +1 -1
- package/dist/collection/lib/walk-mode/model.js.map +1 -1
- package/dist/collection/lib/webgl/regl-component.js.map +1 -1
- package/dist/collection/testing/annotations.js.map +1 -1
- package/dist/collection/testing/canvases.js.map +1 -1
- package/dist/collection/testing/colors.js.map +1 -1
- package/dist/collection/testing/eventually.js.map +1 -1
- package/dist/collection/testing/fixtures.js.map +1 -1
- package/dist/collection/testing/grpc.js +3 -9
- package/dist/collection/testing/grpc.js.map +1 -1
- package/dist/collection/testing/modelViews.js.map +1 -1
- package/dist/collection/testing/pmi.js.map +1 -1
- package/dist/collection/testing/random.js.map +1 -1
- package/dist/collection/testing/resizeObserver.js.map +1 -1
- package/dist/collection/testing/scene-items-helper.js.map +1 -1
- package/dist/collection/testing/sceneTree.js.map +1 -1
- package/dist/collection/testing/viewer.js.map +1 -1
- package/dist/collection/testing/webgl.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-St4ctu2K.js → p-3-bKfpqr.js} +2 -2
- package/dist/components/{p-St4ctu2K.js.map → p-3-bKfpqr.js.map} +1 -1
- package/dist/components/p-3DqRAYgO.js.map +1 -1
- package/dist/components/p-B-ToCp8-.js.map +1 -1
- package/dist/components/p-B156bTbY.js +5 -0
- package/dist/components/p-B156bTbY.js.map +1 -0
- package/dist/components/p-B9R0QWr4.js.map +1 -1
- package/dist/components/p-BCOD9yfw.js.map +1 -1
- package/dist/components/p-BHAaIoH5.js.map +1 -1
- package/dist/components/{p-Doltf1wO.js → p-BOJJZ1cN.js} +2 -2
- package/dist/components/p-BOJJZ1cN.js.map +1 -0
- package/dist/components/p-BkHp-aAR.js.map +1 -1
- package/dist/components/p-Bkm6H5uq.js.map +1 -1
- package/dist/components/p-C-VWDW9n.js.map +1 -1
- package/dist/components/p-C79PxobX.js.map +1 -1
- package/dist/components/p-CAugdB_8.js.map +1 -1
- package/dist/components/p-CEzVEgdQ.js.map +1 -1
- package/dist/components/p-CGCJ5hbJ.js.map +1 -1
- package/dist/components/p-COlcifvm.js.map +1 -1
- package/dist/components/p-CXTH3zrN.js.map +1 -1
- package/dist/components/p-CZCXdo3t.js.map +1 -1
- package/dist/components/p-Cd7kap5W.js.map +1 -1
- package/dist/components/p-CiSHWNC4.js.map +1 -1
- package/dist/components/p-CjG1fMh1.js.map +1 -1
- package/dist/components/p-CkjXRDNL.js.map +1 -1
- package/dist/components/p-D0KZu516.js.map +1 -1
- package/dist/components/p-D12q-fpW.js.map +1 -1
- package/dist/components/p-D33gVA2W.js.map +1 -1
- package/dist/components/p-DC86ZXai.js.map +1 -1
- package/dist/components/{p-B80hfIq6.js → p-DF4kEsJU.js} +2 -2
- package/dist/components/p-DF4kEsJU.js.map +1 -0
- package/dist/components/p-DRh4_Z-g.js.map +1 -1
- package/dist/components/p-DRnMrHWY.js.map +1 -1
- package/dist/components/{p-b0ZzPHz8.js → p-DUC59SSO.js} +2 -2
- package/dist/components/p-DUC59SSO.js.map +1 -0
- package/dist/components/p-DVW2WZTq.js.map +1 -1
- package/dist/components/p-DZI8pnGz.js.map +1 -1
- package/dist/components/p-Dbz9yUqC.js.map +1 -1
- package/dist/components/p-Yfi0i5Kj.js.map +1 -1
- package/dist/components/p-abSJ29r7.js.map +1 -1
- package/dist/components/p-ahjMltGJ.js.map +1 -1
- package/dist/components/p-bal2RLiw.js.map +1 -1
- package/dist/components/{p-BopQW1sA.js → p-oK38ynrd.js} +2 -2
- package/dist/components/p-oK38ynrd.js.map +1 -0
- package/dist/components/vertex-scene-tree-table-cell.js +1 -1
- package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
- package/dist/components/vertex-scene-tree-table-layout.js +1 -1
- package/dist/components/vertex-scene-tree.js +1 -1
- package/dist/components/vertex-scene-tree.js.map +1 -1
- package/dist/components/vertex-viewer-box-query-tool.js +1 -1
- package/dist/components/vertex-viewer-box-query-tool.js.map +1 -1
- package/dist/components/vertex-viewer-dom-element.js +1 -1
- package/dist/components/vertex-viewer-dom-group.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js.map +1 -1
- package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
- package/dist/components/vertex-viewer-markup.js +1 -1
- package/dist/components/vertex-viewer-markup.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-details.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-line.js +1 -1
- package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
- package/dist/components/vertex-viewer-measurement-precise.js +1 -1
- package/dist/components/vertex-viewer-measurement-precise.js.map +1 -1
- package/dist/components/vertex-viewer-pin-group.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js.map +1 -1
- package/dist/components/vertex-viewer-transform-widget.js +1 -1
- package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
- package/dist/components/vertex-viewer-view-cube.js +1 -1
- package/dist/components/vertex-viewer-view-cube.js.map +1 -1
- package/dist/components/vertex-viewer-walk-mode-tool.js.map +1 -1
- package/dist/components/vertex-viewer.js +1 -1
- package/dist/components/vertex-viewer.js.map +1 -1
- package/dist/esm/config-lglER3mU.js.map +1 -1
- package/dist/esm/controller-BMWGs-I6.js.map +1 -1
- package/dist/esm/controller-Iymb_J2R.js.map +1 -1
- package/dist/esm/cursors-BbBDEutb.js.map +1 -1
- package/dist/esm/dom-B3m2VjbN.js.map +1 -1
- package/dist/esm/dom-DX6pEG54.js.map +1 -1
- package/dist/esm/entities-zRken6VS.js.map +1 -1
- package/dist/esm/geometry_pb-BiZRfctN.js.map +1 -1
- package/dist/esm/grpc-CZAYqbTu.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model-BYW5YIye.js.map +1 -1
- package/dist/esm/model-CLtwOS0o.js.map +1 -1
- package/dist/esm/model-D0EJdHmW.js.map +1 -1
- package/dist/esm/model-DHJ5aE4y.js.map +1 -1
- package/dist/esm/multiElementInteractionHandler-DwjL-r55.js.map +1 -1
- package/dist/esm/overlays-BE1oqniA.js.map +1 -1
- package/dist/esm/queries-DEzCmbTD.js.map +1 -1
- package/dist/esm/regl-component-DmkowWhg.js.map +1 -1
- package/dist/esm/representation_pb-g4f0WC4k.js.map +1 -1
- package/dist/esm/results-CFB6nKu8.js.map +1 -1
- package/dist/esm/row-CiSHWNC4.js.map +1 -1
- package/dist/esm/stencil-BV-7pO4q.js.map +1 -1
- package/dist/esm/streamAttributes-Cp8PEH9A.js.map +1 -1
- package/dist/esm/templates-DRh4_Z-g.js.map +1 -1
- package/dist/esm/util-BCZZYmp4.js.map +1 -1
- package/dist/esm/utils-BvZ9-fs0.js.map +1 -1
- package/dist/esm/utils-DC86ZXai.js.map +1 -1
- package/dist/esm/utils-D_pIldrS.js.map +1 -1
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +6 -8
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +2 -2
- package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-box-query-tool.entry.js +2 -2
- package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-icon.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-details.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-distance.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-precise.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-group.entry.js +2 -2
- package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-teleport-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-transform-widget.entry.js +4 -5
- package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-walk-mode-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer.entry.js +9 -5
- package/dist/esm/vertex-viewer.entry.js.map +1 -1
- package/dist/esm/viewport-C8WQZxvx.js.map +1 -1
- package/dist/types/regl-shape.d.ts +1 -1
- package/dist/viewer/index.esm.js.map +1 -1
- package/dist/viewer/{p-eac63070.entry.js → p-051b5154.entry.js} +2 -2
- package/dist/viewer/p-051b5154.entry.js.map +1 -0
- package/dist/viewer/{p-3d3a7eeb.entry.js → p-0984c51f.entry.js} +2 -2
- package/dist/viewer/{p-3d3a7eeb.entry.js.map → p-0984c51f.entry.js.map} +1 -1
- package/dist/viewer/{p-864f40c7.entry.js → p-11cf755a.entry.js} +2 -2
- package/dist/viewer/p-11cf755a.entry.js.map +1 -0
- package/dist/viewer/{p-29d14611.entry.js → p-16775f7d.entry.js} +2 -2
- package/dist/viewer/p-16775f7d.entry.js.map +1 -0
- package/dist/viewer/{p-5a85cae5.entry.js → p-1eb636f8.entry.js} +2 -2
- package/dist/viewer/p-1eb636f8.entry.js.map +1 -0
- package/dist/viewer/{p-e993f300.entry.js → p-228d1d43.entry.js} +2 -2
- package/dist/viewer/p-228d1d43.entry.js.map +1 -0
- package/dist/viewer/p-33f44cc1.entry.js.map +1 -1
- package/dist/viewer/{p-3300d3dc.entry.js → p-35601c85.entry.js} +2 -2
- package/dist/viewer/p-35601c85.entry.js.map +1 -0
- package/dist/viewer/p-47766566.entry.js.map +1 -1
- package/dist/viewer/p-6e3a6bbd.entry.js.map +1 -1
- package/dist/viewer/p-7f388b45.entry.js.map +1 -1
- package/dist/viewer/p-89544066.entry.js.map +1 -1
- package/dist/viewer/{p-07b99ac9.entry.js → p-8c369777.entry.js} +2 -2
- package/dist/viewer/p-8c369777.entry.js.map +1 -0
- package/dist/viewer/{p-e59983dc.entry.js → p-9835c5e2.entry.js} +2 -2
- package/dist/viewer/p-9835c5e2.entry.js.map +1 -0
- package/dist/viewer/{p-aa95e21a.entry.js → p-9d8ff406.entry.js} +2 -2
- package/dist/viewer/p-9d8ff406.entry.js.map +1 -0
- package/dist/viewer/p-BDvACHun.js.map +1 -1
- package/dist/viewer/p-BIkuvTVH.js.map +1 -1
- package/dist/viewer/p-BRPkbTVP.js.map +1 -1
- package/dist/viewer/p-BsBIynwj.js.map +1 -1
- package/dist/viewer/p-BxtKMwBH.js.map +1 -1
- package/dist/viewer/p-C4y4Noe-.js.map +1 -1
- package/dist/viewer/p-C6KrfydC.js.map +1 -1
- package/dist/viewer/p-C7dYsPFU.js.map +1 -1
- package/dist/viewer/p-C9Cqbq6H.js.map +1 -1
- package/dist/viewer/p-CVWO4w6b.js.map +1 -1
- package/dist/viewer/p-ChqXy0cG.js.map +1 -1
- package/dist/viewer/p-CiSHWNC4.js.map +1 -1
- package/dist/viewer/p-CjG1fMh1.js.map +1 -1
- package/dist/viewer/p-Cs5KOvOQ.js.map +1 -1
- package/dist/viewer/p-CyGlYje2.js.map +1 -1
- package/dist/viewer/p-D6eJC1q4.js.map +1 -1
- package/dist/viewer/p-DC86ZXai.js.map +1 -1
- package/dist/viewer/p-DRh4_Z-g.js.map +1 -1
- package/dist/viewer/p-DUX5FvBC.js.map +1 -1
- package/dist/viewer/p-DX6pEG54.js.map +1 -1
- package/dist/viewer/p-D_ixWHO7.js.map +1 -1
- package/dist/viewer/p-DacE-wPp.js.map +1 -1
- package/dist/viewer/p-Dp56p_jX.js.map +1 -1
- package/dist/viewer/p-EsKoKfmx.js.map +1 -1
- package/dist/viewer/p-F8e15or2.js.map +1 -1
- package/dist/viewer/p-Jfxh0jq9.js.map +1 -1
- package/dist/viewer/p-WPRMWirY.js.map +1 -1
- package/dist/viewer/p-_93RRNxT.js.map +1 -1
- package/dist/viewer/p-a8a81cba.entry.js +5 -0
- package/dist/viewer/p-a8a81cba.entry.js.map +1 -0
- package/dist/viewer/p-a9282481.entry.js.map +1 -1
- package/dist/viewer/{p-63f4f702.entry.js → p-c7e62d66.entry.js} +2 -2
- package/dist/viewer/p-c7e62d66.entry.js.map +1 -0
- package/dist/viewer/p-d37e647b.entry.js.map +1 -1
- package/dist/viewer/{p-302f2078.entry.js → p-d9fe788f.entry.js} +2 -2
- package/dist/viewer/p-d9fe788f.entry.js.map +1 -0
- package/dist/viewer/p-e9b83dae.entry.js.map +1 -1
- package/dist/viewer/{p-70f3629d.entry.js → p-f271dc4a.entry.js} +2 -2
- package/dist/viewer/p-f271dc4a.entry.js.map +1 -0
- package/dist/viewer/p-f65c0769.entry.js.map +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +7 -7
- package/dist/components/p-B80hfIq6.js.map +0 -1
- package/dist/components/p-BopQW1sA.js.map +0 -1
- package/dist/components/p-DNtS2F8J.js +0 -5
- package/dist/components/p-DNtS2F8J.js.map +0 -1
- package/dist/components/p-Doltf1wO.js.map +0 -1
- package/dist/components/p-b0ZzPHz8.js.map +0 -1
- package/dist/viewer/p-07b99ac9.entry.js.map +0 -1
- package/dist/viewer/p-29d14611.entry.js.map +0 -1
- package/dist/viewer/p-302f2078.entry.js.map +0 -1
- package/dist/viewer/p-3300d3dc.entry.js.map +0 -1
- package/dist/viewer/p-5a85cae5.entry.js.map +0 -1
- package/dist/viewer/p-60c915e3.entry.js +0 -5
- package/dist/viewer/p-60c915e3.entry.js.map +0 -1
- package/dist/viewer/p-63f4f702.entry.js.map +0 -1
- package/dist/viewer/p-70f3629d.entry.js.map +0 -1
- package/dist/viewer/p-864f40c7.entry.js.map +0 -1
- package/dist/viewer/p-aa95e21a.entry.js.map +0 -1
- package/dist/viewer/p-e59983dc.entry.js.map +0 -1
- package/dist/viewer/p-e993f300.entry.js.map +0 -1
- package/dist/viewer/p-eac63070.entry.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{h as e,F as t,t as i,p as o,H as a,e as r}from"./p-Bb32XUUS.js";import{q as c,v as n,h as d}from"./p-DDQcM-So.js";import{r as s}from"./p-Cd7kap5W.js";import{O as f,f as b,S as l}from"./p-B9R0QWr4.js";import{c as h}from"./p-C6gMOKYg.js";import{d as v}from"./p-BopQW1sA.js";import{d as g}from"./p-St4ctu2K.js";import{d as u}from"./p-BCOD9yfw.js";const w={front:{direction:n.back(),quaternion:c.create()},back:{direction:n.forward(),quaternion:c.fromAxisAngle(n.up(),Math.PI)},left:{direction:n.left(),quaternion:c.fromAxisAngle(n.down(),Math.PI/2)},right:{direction:n.right(),quaternion:c.fromAxisAngle(n.up(),Math.PI/2)},top:{direction:n.up(),quaternion:c.fromAxisAngle(n.right(),-Math.PI/2)},bottom:{direction:n.down(),quaternion:c.fromAxisAngle(n.left(),-Math.PI/2)}};const p=({label:i,length:o,rotationAxis:a})=>{const r={width:`${o+5}px`};const s=c.fromAxisAngle(a,Math.PI/2);const f=n.scale(o+15,n.right());return e(t,null,e("vertex-viewer-dom-group",{quaternion:s},e("vertex-viewer-dom-element",{style:r,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{rotation:d.create({x:Math.PI/2,y:0,z:0}),style:r,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{position:f,interactionsOff:true},e("div",{class:`triad-label triad-label-${i.toLowerCase()}`},i))))};const m=({label:t,length:i,side:o,disabled:a,onPointerDown:r})=>{const{direction:c,quaternion:d}=w[o];const s=n.scale(i/2-.1,c);return e("vertex-viewer-dom-element",{class:h("cube-side",{disabled:a}),position:s,quaternion:d,style:{width:`${i}px`,height:`${i}px`},onPointerDown:r,billboardOff:true},e("div",{class:`cube-side-face cube-side-face-${t.toLowerCase()}`},t))};const x=({length:t,face1Side:i,face1Corner:o,face2Side:a,face2Corner:r,face3Side:c,face3Corner:d,disabled:s,onPointerDown:f})=>{const{direction:b,quaternion:l}=w[i];const{direction:v,quaternion:g}=w[a];const{direction:u,quaternion:p}=w[c];const m=n.scale(t/2,b);const x=n.scale(t/2,v);const y=n.scale(t/2,u);const k={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:h("cube-corner",{disabled:s}),onPointerDown:f},e("vertex-viewer-dom-element",{position:m,quaternion:l,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${o}`})),e("vertex-viewer-dom-element",{position:x,quaternion:g,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${r}`})),e("vertex-viewer-dom-element",{position:y,quaternion:p,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${d}`})))};const y=({length:t,face1Side:i,face2Side:o,face1Edge:a,face2Edge:r,disabled:c,onPointerDown:d})=>{const{direction:s,quaternion:f}=w[i];const{direction:b,quaternion:l}=w[o];const v=n.scale(t/2,s);const g=n.scale(t/2,b);const u={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:h("cube-edge",{disabled:c}),onPointerDown:d},e("vertex-viewer-dom-element",{position:v,quaternion:f,style:u,billboardOff:true},e("div",{class:`cube-edge-face ${a}`})),e("vertex-viewer-dom-element",{position:g,quaternion:l,style:u,billboardOff:true},e("div",{class:`cube-edge-face ${r}`})))};const k=({length:t})=>{const{direction:i,quaternion:o}=w.top;const a=n.scale(-t/2,i);return e("vertex-viewer-dom-element",{class:"cube-shadow",position:a,quaternion:o,style:{width:`${t}px`,height:`${t}px`},billboardOff:true,interactionsOff:true},e("div",{class:"cube-shadow-face"}))};const S=()=>`:host{--viewer-view-cube-side-background:var(--white);--viewer-view-cube-side-background-hover:var(--blue-500);--viewer-view-cube-side-background-hover-opacity:0.25;--viewer-view-cube-side-border:1.5px solid var(--neutral-500);--viewer-view-cube-edge-length:12px;--viewer-view-cube-opacity:0.8;--viewer-view-cube-triad-x-axis-color:var(--x-axis-color);--viewer-view-cube-triad-y-axis-color:var(--y-axis-color);--viewer-view-cube-triad-z-axis-color:var(--z-axis-color);color:var(--neutral-700);width:80px;height:80px;margin:20px;position:relative;display:flex;align-items:center;justify-content:center;user-select:none}.renderer{position:unset;width:100%;height:100%;overflow:visible !important}.reference-point{width:5px;height:5px;border-radius:50%;background-color:black}.triad{pointer-events:none}.triad-axis{width:100%;height:1.5px;outline:1px solid transparent;transform:translateX(50%)}.triad-axis-x{background-color:#ea3324}.triad-axis-y{background-color:#4faf32}.triad-axis-z{background-color:#0000ff}.triad-label{font-family:Arial, Helvetica, sans-serif;font-size:0.6875rem}.triad-label-x{color:var(--viewer-view-cube-triad-x-axis-color)}.triad-label-y{color:var(--viewer-view-cube-triad-y-axis-color)}.triad-label-z{color:var(--viewer-view-cube-triad-z-axis-color)}.cube{pointer-events:initial}.cube:hover .cube-side-face{opacity:1}.cube-side{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-side-face{box-sizing:border-box;font-size:0.875rem;text-transform:uppercase;width:100%;height:100%;background-color:var(--viewer-view-cube-side-background);border:var(--viewer-view-cube-side-border);display:flex;align-items:center;justify-content:center;outline:1px solid transparent;opacity:var(--viewer-view-cube-opacity);transition:opacity 0.2s ease-in-out}.cube-side-face::before{content:'';position:absolute;left:calc(var(--viewer-view-cube-edge-length) - 4px);right:calc(var(--viewer-view-cube-edge-length) - 4px);top:calc(var(--viewer-view-cube-edge-length) - 4px);bottom:calc(var(--viewer-view-cube-edge-length) - 4px)}.cube-corner,.cube-edge{position:relative}.cube-corner-face,.cube-edge-face{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-edge-face.top{top:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.bottom{bottom:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.left{left:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-edge-face.right{right:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-corner-face{width:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-corner-face.top-left{top:0;left:0}.cube-corner-face.top-right{top:0;right:0}.cube-corner-face.bottom-right{bottom:0;right:0}.cube-corner-face.bottom-left{bottom:0;left:0}.cube-shadow{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-shadow-face{position:absolute;left:4px;right:4px;top:4px;bottom:4px;background-color:black;opacity:0.12;filter:blur(4px)}.cube-side-face,.cube-corner-face,.cube-edge-face{pointer-events:initial}.cube-corner .cube-corner-face,.cube-edge .cube-edge-face,.cube-side .cube-side-face::before{background:var(--viewer-view-cube-side-background-hover);opacity:0}.cube-corner:hover .cube-corner-face,.cube-edge:hover .cube-edge-face,.cube-side:hover .cube-side-face::before{opacity:var(--viewer-view-cube-side-background-hover-opacity)}.cube-corner.disabled,.cube-edge.disabled,.cube-side.disabled{pointer-events:none}`;const D=o(class t extends a{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.boxLength=80;this.triadPosition=n.origin();this.xPositiveLabel="Right";this.xNegativeLabel="Left";this.yPositiveLabel="Top";this.yNegativeLabel="Bottom";this.zPositiveLabel="Front";this.zNegativeLabel="Back";this.standardViewsOff=false;this.viewAll=true;this.animationDuration=500;this.triadOff=false;this.worldOrientation=f.DEFAULT;this.updateMatrices=()=>{var e;if(((e=this.viewer)===null||e===void 0?void 0:e.frame)!=null){const{camera:e}=this.viewer.frame.scene;const t=this.boxLength/2;this.triadPosition=n.create(-t-5,-t-5,-t-5);const i=3.125;const o=this.boxLength*i;const a=21.5;this.camera=new b(n.scale(o,n.negate(e.direction)),n.origin(),e.up,.1,100,1,a);this.worldOrientation=this.viewer.frame.scene.worldOrientation}}}handleViewerChanged(e,t){t===null||t===void 0?void 0:t.removeEventListener("frameDrawn",this.updateMatrices);e===null||e===void 0?void 0:e.addEventListener("frameDrawn",this.updateMatrices);this.updateMatrices()}handleStandardView(e){if(this.standardViewsOff){return async()=>undefined}else{return async()=>{if(this.viewer!=null){const t=await this.viewer.scene();const i=this.animationDuration>0?{animation:{milliseconds:this.animationDuration}}:{};const o=e.transformMatrix(this.worldOrientation.matrix);const a=t.boundingBox();if(!this.viewAll){t.camera().standardViewFixedLookAt(o).render(i)}else if((a===null||a===void 0?void 0:a.max)!=null&&n.isEqual(a.max,n.origin())&&n.isEqual(a.min,n.origin())){t.camera().standardView(o).render(i)}else{t.camera().standardView(o).viewAll().render(i)}}}}}componentWillLoad(){this.handleViewerChanged(this.viewer)}componentDidLoad(){if(this.rendererEl!=null){const e=new ResizeObserver((()=>this.handleRendererResized()));e.observe(this.rendererEl);this.handleRendererResized()}}handleRendererResized(){s((()=>{if(this.rendererEl!=null){const e=this.rendererEl.getBoundingClientRect();this.boxLength=Math.min(e.width,e.height)}}))}render(){return e(r,{key:"3e723ac47709db472f6f53e96679139fae0e3f58"},e("vertex-viewer-dom-renderer",{key:"f6cd68e61014aedc6978ec4590d3b8af6bacc39a",ref:e=>this.rendererEl=e,class:"renderer",camera:this.camera},!this.triadOff&&e("vertex-viewer-dom-group",{key:"77bd1b532d5cddeffddfa933716926e4cd97d858",class:"triad",position:this.triadPosition},e(p,{key:"fc954790f8b1e94a0fcbce27a877438f70f690b3",label:"X",length:this.boxLength,rotationAxis:n.origin()}),e(p,{key:"55f8abd997774fa75b59cc25ee367f97e26d8d0e",label:"Y",length:this.boxLength,rotationAxis:n.back()}),e(p,{key:"0edd14df8831e142e7b716c19195372d0ca9b540",label:"Z",length:this.boxLength,rotationAxis:n.down()})),e("vertex-viewer-dom-group",{key:"44c2aa6567000ff3a8b605bfcacff9edea99ad49",class:"cube",matrix:this.worldOrientation.matrix},e(k,{key:"6d332b76534a1792e476d5af4c9928b655245699",length:this.boxLength+10}),e(m,{key:"e912dbdcfd3587e6d889b314da97d4831a5f5820",label:this.zPositiveLabel,length:this.boxLength,side:"front",onPointerDown:this.handleStandardView(l.FRONT),disabled:this.standardViewsOff}),e(m,{key:"9018644613e72bf4f605893e8b802e54e49d7a60",label:this.zNegativeLabel,length:this.boxLength,side:"back",onPointerDown:this.handleStandardView(l.BACK),disabled:this.standardViewsOff}),e(m,{key:"6f3018e38983ee92dd0d237e1f5e8d583ffc5868",label:this.xNegativeLabel,length:this.boxLength,side:"left",onPointerDown:this.handleStandardView(l.LEFT),disabled:this.standardViewsOff}),e(m,{key:"6ad9a228a8f08ed5834e817eb251459a2b790228",label:this.xPositiveLabel,length:this.boxLength,side:"right",onPointerDown:this.handleStandardView(l.RIGHT),disabled:this.standardViewsOff}),e(m,{key:"65444fe7463cc93010f697895259616e2c951185",label:this.yPositiveLabel,length:this.boxLength,side:"top",onPointerDown:this.handleStandardView(l.TOP),disabled:this.standardViewsOff}),e(m,{key:"69bd39a0e0c282d7699fbc43bb8162b5058b2725",label:this.yNegativeLabel,length:this.boxLength,side:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM),disabled:this.standardViewsOff}),e(y,{key:"bff49b1af1febb826d2566f78f44e198e724980a",length:this.boxLength,face1Side:"top",face1Edge:"bottom",face2Side:"front",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_FRONT),disabled:this.standardViewsOff}),e(y,{key:"d218a084a54b52b791b6ee905d572fc4c5f2067e",length:this.boxLength,face1Side:"front",face1Edge:"right",face2Side:"right",face2Edge:"left",onPointerDown:this.handleStandardView(l.FRONT_LEFT),disabled:this.standardViewsOff}),e(y,{key:"55cdc6e8ed92a5d04605648cfba59e503d74b17a",length:this.boxLength,face1Side:"bottom",face1Edge:"top",face2Side:"front",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT),disabled:this.standardViewsOff}),e(y,{key:"e560d8a890575295b0b66391ef6edfa86a352479",length:this.boxLength,face1Side:"front",face1Edge:"left",face2Side:"left",face2Edge:"right",onPointerDown:this.handleStandardView(l.FRONT_RIGHT),disabled:this.standardViewsOff}),e(y,{key:"92175bcdb02a1ac0c69ecf060bf7ab8276bba30b",length:this.boxLength,face1Side:"top",face1Edge:"right",face2Side:"right",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_LEFT),disabled:this.standardViewsOff}),e(y,{key:"5c25934c6add8941aeffebf91e5d2755f736171a",length:this.boxLength,face1Side:"back",face1Edge:"left",face2Side:"right",face2Edge:"right",onPointerDown:this.handleStandardView(l.BACK_LEFT),disabled:this.standardViewsOff}),e(y,{key:"573f648180a2ded37d05f53d54a09b594a745838",length:this.boxLength,face1Side:"bottom",face1Edge:"right",face2Side:"right",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_LEFT),disabled:this.standardViewsOff}),e(y,{key:"0736e5ce0c74c217eb597d05d9cb322176c6c26e",length:this.boxLength,face1Side:"top",face1Edge:"top",face2Side:"back",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_BACK),disabled:this.standardViewsOff}),e(y,{key:"2621bf73adcbdcbed213ebf1bff5c0441066dfde",length:this.boxLength,face1Side:"back",face1Edge:"right",face2Side:"left",face2Edge:"left",onPointerDown:this.handleStandardView(l.BACK_RIGHT),disabled:this.standardViewsOff}),e(y,{key:"a7ce12b7104292548a2f39c3c21be1bbfb741008",length:this.boxLength,face1Side:"bottom",face1Edge:"bottom",face2Side:"back",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_BACK),disabled:this.standardViewsOff}),e(y,{key:"6d51d0af13c7f6058e43d87b3b74c7f79dcd6372",length:this.boxLength,face1Side:"top",face1Edge:"left",face2Side:"left",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_RIGHT),disabled:this.standardViewsOff}),e(y,{key:"6391a20b84bf91a6e6a8bce623fa402d02992b1b",length:this.boxLength,face1Side:"bottom",face1Edge:"left",face2Side:"left",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"119cdae569b4ac1abdc5929be9e789d7459b3d4d",length:this.boxLength,face1Side:"top",face1Corner:"bottom-left",face2Side:"front",face2Corner:"top-left",face3Side:"left",face3Corner:"top-right",onPointerDown:this.handleStandardView(l.TOP_FRONT_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"607d1c0db03091fe6fe49ff8bb3f1d2e4e9ee737",length:this.boxLength,face1Side:"top",face1Corner:"bottom-right",face2Side:"front",face2Corner:"top-right",face3Side:"right",face3Corner:"top-left",onPointerDown:this.handleStandardView(l.TOP_FRONT_LEFT),disabled:this.standardViewsOff}),e(x,{key:"bf417c48dc652d2692d6a122cd8aa4f9aae65331",length:this.boxLength,face1Side:"bottom",face1Corner:"top-right",face2Side:"front",face2Corner:"bottom-right",face3Side:"right",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT_LEFT),disabled:this.standardViewsOff}),e(x,{key:"59f7db859f9d06921e2fa3c30fa2527bc95ff3ce",length:this.boxLength,face1Side:"bottom",face1Corner:"top-left",face2Side:"front",face2Corner:"bottom-left",face3Side:"left",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"f8eb7ba2b8b9384c6fed7f1e930eb872599b7372",length:this.boxLength,face1Side:"top",face1Corner:"top-right",face2Side:"back",face2Corner:"top-left",face3Side:"right",face3Corner:"top-right",onPointerDown:this.handleStandardView(l.TOP_BACK_LEFT),disabled:this.standardViewsOff}),e(x,{key:"122f91a6146b62e145d0e710b8d1b7605b744073",length:this.boxLength,face1Side:"top",face1Corner:"top-left",face2Side:"back",face2Corner:"top-right",face3Side:"left",face3Corner:"top-left",onPointerDown:this.handleStandardView(l.TOP_BACK_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"4114134608fa6903bd0226a541d153175418102b",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-left",face2Side:"back",face2Corner:"bottom-right",face3Side:"left",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(l.BOTTOM_BACK_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"1d4fd46fb9edf0821e3e611c863837d1e9bc7ec8",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-right",face2Side:"back",face2Corner:"bottom-left",face3Side:"right",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(l.BOTTOM_BACK_LEFT),disabled:this.standardViewsOff}))))}static get watchers(){return{viewer:[{handleViewerChanged:0}]}}static get style(){return S()}},[1,"vertex-viewer-view-cube",{xPositiveLabel:[1,"x-positive-label"],xNegativeLabel:[1,"x-negative-label"],yPositiveLabel:[1,"y-positive-label"],yNegativeLabel:[1,"y-negative-label"],zPositiveLabel:[1,"z-positive-label"],zNegativeLabel:[1,"z-negative-label"],standardViewsOff:[4,"standard-views-off"],viewAll:[4,"view-all"],animationDuration:[2,"animation-duration"],triadOff:[4,"triad-off"],worldOrientation:[1040],camera:[1040],viewer:[16],boxLength:[32],triadPosition:[32]},undefined,{viewer:[{handleViewerChanged:0}]}]);function P(){if(typeof customElements==="undefined"){return}const e=["vertex-viewer-view-cube","vertex-viewer-dom-element","vertex-viewer-dom-group","vertex-viewer-dom-renderer"];e.forEach((e=>{switch(e){case"vertex-viewer-view-cube":if(!customElements.get(i(e))){customElements.define(i(e),D)}break;case"vertex-viewer-dom-element":if(!customElements.get(i(e))){v()}break;case"vertex-viewer-dom-group":if(!customElements.get(i(e))){g()}break;case"vertex-viewer-dom-renderer":if(!customElements.get(i(e))){u()}break}}))}P();const C=D;const E=P;export{C as VertexViewerViewCube,E as defineCustomElement};
|
|
4
|
+
import{h as e,F as t,t as i,p as a,H as o,e as r}from"./p-Bb32XUUS.js";import{q as c,v as n,h as d}from"./p-DDQcM-So.js";import{r as s}from"./p-Cd7kap5W.js";import{O as f,f as b,S as l}from"./p-B9R0QWr4.js";import{c as h}from"./p-C6gMOKYg.js";import{d as v}from"./p-oK38ynrd.js";import{d as g}from"./p-3-bKfpqr.js";import{d as u}from"./p-BCOD9yfw.js";const w={front:{direction:n.back(),quaternion:c.create()},back:{direction:n.forward(),quaternion:c.fromAxisAngle(n.up(),Math.PI)},left:{direction:n.left(),quaternion:c.fromAxisAngle(n.down(),Math.PI/2)},right:{direction:n.right(),quaternion:c.fromAxisAngle(n.up(),Math.PI/2)},top:{direction:n.up(),quaternion:c.fromAxisAngle(n.right(),-Math.PI/2)},bottom:{direction:n.down(),quaternion:c.fromAxisAngle(n.left(),-Math.PI/2)}};const p=({label:i,length:a,rotationAxis:o})=>{const r={width:`${a+5}px`};const s=c.fromAxisAngle(o,Math.PI/2);const f=n.scale(a+15,n.right());return e(t,null,e("vertex-viewer-dom-group",{quaternion:s},e("vertex-viewer-dom-element",{style:r,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{rotation:d.create({x:Math.PI/2,y:0,z:0}),style:r,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{position:f,interactionsOff:true},e("div",{class:`triad-label triad-label-${i.toLowerCase()}`},i))))};const m=({label:t,length:i,side:a,disabled:o,onPointerDown:r})=>{const{direction:c,quaternion:d}=w[a];const s=n.scale(i/2-.1,c);return e("vertex-viewer-dom-element",{class:h("cube-side",{disabled:o}),position:s,quaternion:d,style:{width:`${i}px`,height:`${i}px`},onPointerDown:r,billboardOff:true},e("div",{class:`cube-side-face cube-side-face-${t.toLowerCase()}`},t))};const x=({length:t,face1Side:i,face1Corner:a,face2Side:o,face2Corner:r,face3Side:c,face3Corner:d,disabled:s,onPointerDown:f})=>{const{direction:b,quaternion:l}=w[i];const{direction:v,quaternion:g}=w[o];const{direction:u,quaternion:p}=w[c];const m=n.scale(t/2,b);const x=n.scale(t/2,v);const y=n.scale(t/2,u);const k={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:h("cube-corner",{disabled:s}),onPointerDown:f},e("vertex-viewer-dom-element",{position:m,quaternion:l,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${a}`})),e("vertex-viewer-dom-element",{position:x,quaternion:g,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${r}`})),e("vertex-viewer-dom-element",{position:y,quaternion:p,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${d}`})))};const y=({length:t,face1Side:i,face2Side:a,face1Edge:o,face2Edge:r,disabled:c,onPointerDown:d})=>{const{direction:s,quaternion:f}=w[i];const{direction:b,quaternion:l}=w[a];const v=n.scale(t/2,s);const g=n.scale(t/2,b);const u={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:h("cube-edge",{disabled:c}),onPointerDown:d},e("vertex-viewer-dom-element",{position:v,quaternion:f,style:u,billboardOff:true},e("div",{class:`cube-edge-face ${o}`})),e("vertex-viewer-dom-element",{position:g,quaternion:l,style:u,billboardOff:true},e("div",{class:`cube-edge-face ${r}`})))};const k=({length:t})=>{const{direction:i,quaternion:a}=w.top;const o=n.scale(-t/2,i);return e("vertex-viewer-dom-element",{class:"cube-shadow",position:o,quaternion:a,style:{width:`${t}px`,height:`${t}px`},billboardOff:true,interactionsOff:true},e("div",{class:"cube-shadow-face"}))};const S=()=>`:host{--viewer-view-cube-side-background:var(--white);--viewer-view-cube-side-background-hover:var(--blue-500);--viewer-view-cube-side-background-hover-opacity:0.25;--viewer-view-cube-side-border:1.5px solid var(--neutral-500);--viewer-view-cube-edge-length:12px;--viewer-view-cube-opacity:0.8;--viewer-view-cube-triad-x-axis-color:var(--x-axis-color);--viewer-view-cube-triad-y-axis-color:var(--y-axis-color);--viewer-view-cube-triad-z-axis-color:var(--z-axis-color);color:var(--neutral-700);width:80px;height:80px;margin:20px;position:relative;display:flex;align-items:center;justify-content:center;user-select:none}.renderer{position:unset;width:100%;height:100%;overflow:visible !important}.reference-point{width:5px;height:5px;border-radius:50%;background-color:black}.triad{pointer-events:none}.triad-axis{width:100%;height:1.5px;outline:1px solid transparent;transform:translateX(50%)}.triad-axis-x{background-color:#ea3324}.triad-axis-y{background-color:#4faf32}.triad-axis-z{background-color:#0000ff}.triad-label{font-family:Arial, Helvetica, sans-serif;font-size:0.6875rem}.triad-label-x{color:var(--viewer-view-cube-triad-x-axis-color)}.triad-label-y{color:var(--viewer-view-cube-triad-y-axis-color)}.triad-label-z{color:var(--viewer-view-cube-triad-z-axis-color)}.cube{pointer-events:initial}.cube:hover .cube-side-face{opacity:1}.cube-side{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-side-face{box-sizing:border-box;font-size:0.875rem;text-transform:uppercase;width:100%;height:100%;background-color:var(--viewer-view-cube-side-background);border:var(--viewer-view-cube-side-border);display:flex;align-items:center;justify-content:center;outline:1px solid transparent;opacity:var(--viewer-view-cube-opacity);transition:opacity 0.2s ease-in-out}.cube-side-face::before{content:'';position:absolute;left:calc(var(--viewer-view-cube-edge-length) - 4px);right:calc(var(--viewer-view-cube-edge-length) - 4px);top:calc(var(--viewer-view-cube-edge-length) - 4px);bottom:calc(var(--viewer-view-cube-edge-length) - 4px)}.cube-corner,.cube-edge{position:relative}.cube-corner-face,.cube-edge-face{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-edge-face.top{top:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.bottom{bottom:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.left{left:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-edge-face.right{right:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-corner-face{width:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-corner-face.top-left{top:0;left:0}.cube-corner-face.top-right{top:0;right:0}.cube-corner-face.bottom-right{bottom:0;right:0}.cube-corner-face.bottom-left{bottom:0;left:0}.cube-shadow{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-shadow-face{position:absolute;left:4px;right:4px;top:4px;bottom:4px;background-color:black;opacity:0.12;filter:blur(4px)}.cube-side-face,.cube-corner-face,.cube-edge-face{pointer-events:initial}.cube-corner .cube-corner-face,.cube-edge .cube-edge-face,.cube-side .cube-side-face::before{background:var(--viewer-view-cube-side-background-hover);opacity:0}.cube-corner:hover .cube-corner-face,.cube-edge:hover .cube-edge-face,.cube-side:hover .cube-side-face::before{opacity:var(--viewer-view-cube-side-background-hover-opacity)}.cube-corner.disabled,.cube-edge.disabled,.cube-side.disabled{pointer-events:none}`;const D=a(class t extends o{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.boxLength=80;this.triadPosition=n.origin();this.xPositiveLabel="Right";this.xNegativeLabel="Left";this.yPositiveLabel="Top";this.yNegativeLabel="Bottom";this.zPositiveLabel="Front";this.zNegativeLabel="Back";this.standardViewsOff=false;this.viewAll=true;this.animationDuration=500;this.triadOff=false;this.worldOrientation=f.DEFAULT;this.updateMatrices=()=>{var e;if(((e=this.viewer)===null||e===void 0?void 0:e.frame)!=null){const{camera:e}=this.viewer.frame.scene;const t=this.boxLength/2;this.triadPosition=n.create(-t-5,-t-5,-t-5);const i=3.125;const a=this.boxLength*i;const o=21.5;this.camera=new b(n.scale(a,n.negate(e.direction)),n.origin(),e.up,.1,100,1,o);this.worldOrientation=this.viewer.frame.scene.worldOrientation}}}handleViewerChanged(e,t){t===null||t===void 0?void 0:t.removeEventListener("frameDrawn",this.updateMatrices);e===null||e===void 0?void 0:e.addEventListener("frameDrawn",this.updateMatrices);this.updateMatrices()}handleStandardView(e){if(this.standardViewsOff){return async()=>undefined}else{return async()=>{if(this.viewer!=null){const t=await this.viewer.scene();const i=this.animationDuration>0?{animation:{milliseconds:this.animationDuration}}:{};const a=e.transformMatrix(this.worldOrientation.matrix);const o=t.boundingBox();if(!this.viewAll){t.camera().standardViewFixedLookAt(a).render(i)}else if((o===null||o===void 0?void 0:o.max)!=null&&n.isEqual(o.max,n.origin())&&n.isEqual(o.min,n.origin())){t.camera().standardView(a).render(i)}else{t.camera().standardView(a).viewAll().render(i)}}}}}componentWillLoad(){this.handleViewerChanged(this.viewer)}componentDidLoad(){if(this.rendererEl!=null){const e=new ResizeObserver((()=>this.handleRendererResized()));e.observe(this.rendererEl);this.handleRendererResized()}}handleRendererResized(){s((()=>{if(this.rendererEl!=null){const e=this.rendererEl.getBoundingClientRect();this.boxLength=Math.min(e.width,e.height)}}))}render(){return e(r,{key:"a3cea27b2376c4ffbe255168515b8c3f0e7ab5aa"},e("vertex-viewer-dom-renderer",{key:"7f1560abaf53c1dc5b8f43b9dade445917861656",ref:e=>this.rendererEl=e,class:"renderer",camera:this.camera},!this.triadOff&&e("vertex-viewer-dom-group",{key:"0671f7678ab3197709e98649d0ac36a1703614c6",class:"triad",position:this.triadPosition},e(p,{key:"b65eddeb99f9b93120246f8143886ac937afb57a",label:"X",length:this.boxLength,rotationAxis:n.origin()}),e(p,{key:"ba49dbda3e18e90e033453d06b509f31336fffe8",label:"Y",length:this.boxLength,rotationAxis:n.back()}),e(p,{key:"ff765198e6e11cc6b7b2d466766809b055c5ccdf",label:"Z",length:this.boxLength,rotationAxis:n.down()})),e("vertex-viewer-dom-group",{key:"0dd9aab195029c25a3090f35ee39c04ed45da8f8",class:"cube",matrix:this.worldOrientation.matrix},e(k,{key:"995e2af8e70518edcf949d5df72387463ff3cc0e",length:this.boxLength+10}),e(m,{key:"0864a044b3d79b9a483cd492b7a04a20fcf64f42",label:this.zPositiveLabel,length:this.boxLength,side:"front",onPointerDown:this.handleStandardView(l.FRONT),disabled:this.standardViewsOff}),e(m,{key:"8f9110528267a00b802f97a8543a896d9fc333f7",label:this.zNegativeLabel,length:this.boxLength,side:"back",onPointerDown:this.handleStandardView(l.BACK),disabled:this.standardViewsOff}),e(m,{key:"6848e1e273bc815ee40e0218cc15bdc80d1f2715",label:this.xNegativeLabel,length:this.boxLength,side:"left",onPointerDown:this.handleStandardView(l.LEFT),disabled:this.standardViewsOff}),e(m,{key:"825624a992f4d31d9faf7506c8e964392da041ab",label:this.xPositiveLabel,length:this.boxLength,side:"right",onPointerDown:this.handleStandardView(l.RIGHT),disabled:this.standardViewsOff}),e(m,{key:"f59f5693ce4f1b4a794f4665b3f920bf29c1f159",label:this.yPositiveLabel,length:this.boxLength,side:"top",onPointerDown:this.handleStandardView(l.TOP),disabled:this.standardViewsOff}),e(m,{key:"65b8c8a2f8cc5cbc7974ca0dc3e6c328e2ca0649",label:this.yNegativeLabel,length:this.boxLength,side:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM),disabled:this.standardViewsOff}),e(y,{key:"0923dfc3696b2c76e69069156c0f57d6cd4f8285",length:this.boxLength,face1Side:"top",face1Edge:"bottom",face2Side:"front",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_FRONT),disabled:this.standardViewsOff}),e(y,{key:"6bf8058fbb4e35b9a1ed8dc5ff772ed2d2995add",length:this.boxLength,face1Side:"front",face1Edge:"right",face2Side:"right",face2Edge:"left",onPointerDown:this.handleStandardView(l.FRONT_LEFT),disabled:this.standardViewsOff}),e(y,{key:"61f28c6cd18661c643ec1510305a8603efbd5cdb",length:this.boxLength,face1Side:"bottom",face1Edge:"top",face2Side:"front",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT),disabled:this.standardViewsOff}),e(y,{key:"6c62acdf92f6397ec3c381d10078215cf6a29ebb",length:this.boxLength,face1Side:"front",face1Edge:"left",face2Side:"left",face2Edge:"right",onPointerDown:this.handleStandardView(l.FRONT_RIGHT),disabled:this.standardViewsOff}),e(y,{key:"a94dc61cea93cae54e148c4f1ffc73a42717f986",length:this.boxLength,face1Side:"top",face1Edge:"right",face2Side:"right",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_LEFT),disabled:this.standardViewsOff}),e(y,{key:"4a97659a3aad5b162252091401ec666727d204be",length:this.boxLength,face1Side:"back",face1Edge:"left",face2Side:"right",face2Edge:"right",onPointerDown:this.handleStandardView(l.BACK_LEFT),disabled:this.standardViewsOff}),e(y,{key:"422acd7e4689eb7ae0403726a29a3784637bdfd6",length:this.boxLength,face1Side:"bottom",face1Edge:"right",face2Side:"right",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_LEFT),disabled:this.standardViewsOff}),e(y,{key:"afa5fb1b78c1fcbb78a48f040d5c868a4dd338fc",length:this.boxLength,face1Side:"top",face1Edge:"top",face2Side:"back",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_BACK),disabled:this.standardViewsOff}),e(y,{key:"e1aa294c3ed0a6e105929a7094cfbdeab26fe7c0",length:this.boxLength,face1Side:"back",face1Edge:"right",face2Side:"left",face2Edge:"left",onPointerDown:this.handleStandardView(l.BACK_RIGHT),disabled:this.standardViewsOff}),e(y,{key:"e3a83623df735d9987a279ef2e055d1f962cafbe",length:this.boxLength,face1Side:"bottom",face1Edge:"bottom",face2Side:"back",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_BACK),disabled:this.standardViewsOff}),e(y,{key:"ad1d8915f046ba5df73240489c2daf1703b6a310",length:this.boxLength,face1Side:"top",face1Edge:"left",face2Side:"left",face2Edge:"top",onPointerDown:this.handleStandardView(l.TOP_RIGHT),disabled:this.standardViewsOff}),e(y,{key:"f0b94c0f3517d1f54cf0c23f74fa681607da3532",length:this.boxLength,face1Side:"bottom",face1Edge:"left",face2Side:"left",face2Edge:"bottom",onPointerDown:this.handleStandardView(l.BOTTOM_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"c814db371a4b47ba50084e69879845921eb6ba91",length:this.boxLength,face1Side:"top",face1Corner:"bottom-left",face2Side:"front",face2Corner:"top-left",face3Side:"left",face3Corner:"top-right",onPointerDown:this.handleStandardView(l.TOP_FRONT_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"b0f81f620127d1533eeb675c66d74e1b3019cb3b",length:this.boxLength,face1Side:"top",face1Corner:"bottom-right",face2Side:"front",face2Corner:"top-right",face3Side:"right",face3Corner:"top-left",onPointerDown:this.handleStandardView(l.TOP_FRONT_LEFT),disabled:this.standardViewsOff}),e(x,{key:"254834f0214afa786b8997274e0dcbc4f1e5e31c",length:this.boxLength,face1Side:"bottom",face1Corner:"top-right",face2Side:"front",face2Corner:"bottom-right",face3Side:"right",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT_LEFT),disabled:this.standardViewsOff}),e(x,{key:"847425b3886582ddb596408fbfcd2fcd9e424641",length:this.boxLength,face1Side:"bottom",face1Corner:"top-left",face2Side:"front",face2Corner:"bottom-left",face3Side:"left",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(l.BOTTOM_FRONT_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"fe6eaffd1f06fe45a9fa3fb680d638f3623187aa",length:this.boxLength,face1Side:"top",face1Corner:"top-right",face2Side:"back",face2Corner:"top-left",face3Side:"right",face3Corner:"top-right",onPointerDown:this.handleStandardView(l.TOP_BACK_LEFT),disabled:this.standardViewsOff}),e(x,{key:"e4b8004047f4f1da2decc4b17d86297a67e38e9d",length:this.boxLength,face1Side:"top",face1Corner:"top-left",face2Side:"back",face2Corner:"top-right",face3Side:"left",face3Corner:"top-left",onPointerDown:this.handleStandardView(l.TOP_BACK_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"c06a8465a3b39828bf114faaa0039c8e32196441",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-left",face2Side:"back",face2Corner:"bottom-right",face3Side:"left",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(l.BOTTOM_BACK_RIGHT),disabled:this.standardViewsOff}),e(x,{key:"2ea208573579fd18a3b7fde9f0bbc3a5834e2652",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-right",face2Side:"back",face2Corner:"bottom-left",face3Side:"right",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(l.BOTTOM_BACK_LEFT),disabled:this.standardViewsOff}))))}static get watchers(){return{viewer:[{handleViewerChanged:0}]}}static get style(){return S()}},[1,"vertex-viewer-view-cube",{xPositiveLabel:[1,"x-positive-label"],xNegativeLabel:[1,"x-negative-label"],yPositiveLabel:[1,"y-positive-label"],yNegativeLabel:[1,"y-negative-label"],zPositiveLabel:[1,"z-positive-label"],zNegativeLabel:[1,"z-negative-label"],standardViewsOff:[4,"standard-views-off"],viewAll:[4,"view-all"],animationDuration:[2,"animation-duration"],triadOff:[4,"triad-off"],worldOrientation:[1040],camera:[1040],viewer:[16],boxLength:[32],triadPosition:[32]},undefined,{viewer:[{handleViewerChanged:0}]}]);function P(){if(typeof customElements==="undefined"){return}const e=["vertex-viewer-view-cube","vertex-viewer-dom-element","vertex-viewer-dom-group","vertex-viewer-dom-renderer"];e.forEach((e=>{switch(e){case"vertex-viewer-view-cube":if(!customElements.get(i(e))){customElements.define(i(e),D)}break;case"vertex-viewer-dom-element":if(!customElements.get(i(e))){v()}break;case"vertex-viewer-dom-group":if(!customElements.get(i(e))){g()}break;case"vertex-viewer-dom-renderer":if(!customElements.get(i(e))){u()}break}}))}P();const C=D;const E=P;export{C as VertexViewerViewCube,E as defineCustomElement};
|
|
5
5
|
//# sourceMappingURL=vertex-viewer-view-cube.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["viewCubeSides","front","direction","Vector3","back","quaternion","Quaternion","create","forward","fromAxisAngle","up","Math","PI","left","down","right","top","bottom","TriadAxis","label","length","rotationAxis","axisStyles","width","labelPos","scale","h","Fragment","style","billboardOff","interactionsOff","class","toLowerCase","rotation","Euler","x","y","z","position","ViewCubeSide","side","disabled","onPointerDown","classNames","height","ViewCubeCorner","face1Side","face1Corner","face2Side","face2Corner","face3Side","face3Corner","dir1","rot1","dir2","rot2","dir3","rot3","position1","position2","position3","styles","ViewCubeEdge","face1Edge","face2Edge","ViewCubeShadow","viewerViewCubeCss","ViewerViewCube","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","boxLength","triadPosition","origin","xPositiveLabel","xNegativeLabel","yPositiveLabel","yNegativeLabel","zPositiveLabel","zNegativeLabel","standardViewsOff","viewAll","animationDuration","triadOff","worldOrientation","Orientation","DEFAULT","updateMatrices","_a","viewer","frame","camera","scene","halfLength","lengthScalar","fovY","FramePerspectiveCamera","negate","handleViewerChanged","newViewer","oldViewer","removeEventListener","addEventListener","handleStandardView","standardView","async","undefined","animation","milliseconds","worldStandardView","transformMatrix","matrix","currentBoundingBox","boundingBox","standardViewFixedLookAt","render","max","isEqual","min","componentWillLoad","componentDidLoad","rendererEl","observer","ResizeObserver","handleRendererResized","observe","readDOM","rect","getBoundingClientRect","Host","key","ref","StandardView","FRONT","BACK","LEFT","RIGHT","TOP","BOTTOM","TOP_FRONT","FRONT_LEFT","BOTTOM_FRONT","FRONT_RIGHT","TOP_LEFT","BACK_LEFT","BOTTOM_LEFT","TOP_BACK","BACK_RIGHT","BOTTOM_BACK","TOP_RIGHT","BOTTOM_RIGHT","TOP_FRONT_RIGHT","TOP_FRONT_LEFT","BOTTOM_FRONT_LEFT","BOTTOM_FRONT_RIGHT","TOP_BACK_LEFT","TOP_BACK_RIGHT","BOTTOM_BACK_RIGHT","BOTTOM_BACK_LEFT"],"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 !important;\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-side-face,\n.cube-corner-face,\n.cube-edge-face {\n pointer-events: initial;\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 * Whether to perform a `viewAll` when clicking on the view cube. If this\n * is set to `false`, the current `lookAt` point will be maintained, and the\n * camera's `position` and `up` vectors will be aligned to the standard view.\n * Defaults to `true`.\n *\n * **Note** Setting this value to `false` can result in the camera being placed\n * underneath geometry depending on the current `viewVector` length, resulting\n * in a view that may be unexpected.\n */\n @Prop()\n public viewAll = true;\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 (!this.viewAll) {\n scene\n .camera()\n .standardViewFixedLookAt(worldStandardView)\n .render(animation);\n } else 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.LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xPositiveLabel}\n length={this.boxLength}\n side=\"right\"\n onPointerDown={this.handleStandardView(StandardView.RIGHT)}\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"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["viewCubeSides","front","direction","Vector3","back","quaternion","Quaternion","create","forward","fromAxisAngle","up","Math","PI","left","down","right","top","bottom","TriadAxis","label","length","rotationAxis","axisStyles","width","labelPos","scale","h","Fragment","style","billboardOff","interactionsOff","class","toLowerCase","rotation","Euler","x","y","z","position","ViewCubeSide","side","disabled","onPointerDown","classNames","height","ViewCubeCorner","face1Side","face1Corner","face2Side","face2Corner","face3Side","face3Corner","dir1","rot1","dir2","rot2","dir3","rot3","position1","position2","position3","styles","ViewCubeEdge","face1Edge","face2Edge","ViewCubeShadow","viewerViewCubeCss","ViewerViewCube","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","boxLength","triadPosition","origin","xPositiveLabel","xNegativeLabel","yPositiveLabel","yNegativeLabel","zPositiveLabel","zNegativeLabel","standardViewsOff","viewAll","animationDuration","triadOff","worldOrientation","Orientation","DEFAULT","updateMatrices","_a","viewer","frame","camera","scene","halfLength","lengthScalar","fovY","FramePerspectiveCamera","negate","handleViewerChanged","newViewer","oldViewer","removeEventListener","addEventListener","handleStandardView","standardView","async","undefined","animation","milliseconds","worldStandardView","transformMatrix","matrix","currentBoundingBox","boundingBox","standardViewFixedLookAt","render","max","isEqual","min","componentWillLoad","componentDidLoad","rendererEl","observer","ResizeObserver","handleRendererResized","observe","readDOM","rect","getBoundingClientRect","Host","key","ref","StandardView","FRONT","BACK","LEFT","RIGHT","TOP","BOTTOM","TOP_FRONT","FRONT_LEFT","BOTTOM_FRONT","FRONT_RIGHT","TOP_LEFT","BACK_LEFT","BOTTOM_LEFT","TOP_BACK","BACK_RIGHT","BOTTOM_BACK","TOP_RIGHT","BOTTOM_RIGHT","TOP_FRONT_RIGHT","TOP_FRONT_LEFT","BOTTOM_FRONT_LEFT","BOTTOM_FRONT_RIGHT","TOP_BACK_LEFT","TOP_BACK_RIGHT","BOTTOM_BACK_RIGHT","BOTTOM_BACK_LEFT"],"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 !important;\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-side-face,\n.cube-corner-face,\n.cube-edge-face {\n pointer-events: initial;\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 * Whether to perform a `viewAll` when clicking on the view cube. If this\n * is set to `false`, the current `lookAt` point will be maintained, and the\n * camera's `position` and `up` vectors will be aligned to the standard view.\n * Defaults to `true`.\n *\n * **Note** Setting this value to `false` can result in the camera being placed\n * underneath geometry depending on the current `viewVector` length, resulting\n * in a view that may be unexpected.\n */\n @Prop()\n public viewAll = true;\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 (!this.viewAll) {\n scene\n .camera()\n .standardViewFixedLookAt(worldStandardView)\n .render(animation);\n } else 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.LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xPositiveLabel}\n length={this.boxLength}\n side=\"right\"\n onPointerDown={this.handleStandardView(StandardView.RIGHT)}\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"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["targetIsElement","target","Element","WalkInteractionHandler","constructor","model","this","pressed","handleKeyUp","async","event","key","toLocaleLowerCase","Object","keys","filter","k","reduce","length","interval","endInteraction","clearInterval","_a","api","handleKeyDown","bind","handleEnabledChange","restartInteraction","updateCamera","handlers","ViewerWalkModeOperation","MOVE_DOWN","moveDown","MOVE_UP","moveUp","PIVOT_DOWN","pivotDown","PIVOT_LEFT","pivotLeft","PIVOT_RIGHT","pivotRight","PIVOT_UP","pivotUp","WALK_BACKWARD","walkBackward","WALK_FORWARD","walkForward","WALK_LEFT","walkLeft","WALK_RIGHT","walkRight","enabledChangeDisposable","onEnabledChange","keyBindingsChangeDisposable","onKeyBindingsChange","configurationChangeDisposable","onConfigurationChange","dispose","disable","_b","_c","window","removeEventListener","initialize","_","getEnabled","enable","addEventListener","toLowerCase","exclude","isElementExcluded","repeat","tryBeginInteraction","enabled","someOperationMatches","beginInteraction","isInteracting","setInterval","getKeyboardRepeatInterval","undefined","forEach","op","operationMatches","some","pivotCamera","getKeyboardPivotDegrees","walk","Vector3","scale","relativeWalkSpeed","forward","back","left","right","down","up","getKeyboardWalkSpeed","viewerWalkModeToolCss","ViewerWalkModeTool","__stencil_proxyCustomElement","HTMLElement","registerHost","WalkModeModel","stateMap","componentWillLoad","setupController","setupInteractionHandler","componentDidLoad","ensureTeleportToolConfigured","updateTeleportTool","setPivotInteractionMode","connectedCallback","disconnectedCallback","clearInteractionHandler","resetInteractionMode","handleEnabledChanged","controller","setEnabled","toggleInteractionMode","handleViewerChanged","handleTeleportModeChanged","handleControllerChanged","controllerChanged","emit","handleModelChanged","render","h","Host","name","onSlotchange","WalkModeController","updateModel","interactionHandlerDisposable","interactionHandler","viewer","registerInteractionHandler","hostEl","slotted","querySelector","slottedTeleportTool","tagName","teleportTool","document","createElement","slot","appendChild","mode","teleportMode","baseInteractionHandler","getBaseInteractionHandler","interactionType","getPrimaryInteractionType","previousPrimaryInteractionType","setPrimaryInteractionType"],"sources":["src/lib/walk-mode/dom.ts","src/lib/walk-mode/interactions.ts","src/components/viewer-walk-mode-tool/viewer-walk-mode-tool.css?tag=vertex-viewer-walk-mode-tool&encapsulation=shadow","src/components/viewer-walk-mode-tool/viewer-walk-mode-tool.tsx"],"sourcesContent":["export function targetIsElement(target: EventTarget | null): target is Element {\n return target instanceof Element;\n}\n","import { Vector3 } from '@vertexvis/geometry';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { InteractionApiPerspective, InteractionHandler } from '../interactions';\nimport { targetIsElement } from './dom';\nimport { ViewerWalkModeOperation, WalkModeModel } from './model';\n\nexport class WalkInteractionHandler implements InteractionHandler {\n private api?: InteractionApiPerspective;\n\n private interval?: NodeJS.Timeout;\n private pressed: Record<string, boolean> = {};\n private handlers: Record<ViewerWalkModeOperation, VoidFunction>;\n\n private enabledChangeDisposable?: Disposable;\n private keyBindingsChangeDisposable?: Disposable;\n private configurationChangeDisposable?: Disposable;\n\n public constructor(private model: WalkModeModel) {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEnabledChange = this.handleEnabledChange.bind(this);\n this.restartInteraction = this.restartInteraction.bind(this);\n this.updateCamera = this.updateCamera.bind(this);\n\n this.handlers = {\n [ViewerWalkModeOperation.MOVE_DOWN]: this.moveDown.bind(this),\n [ViewerWalkModeOperation.MOVE_UP]: this.moveUp.bind(this),\n [ViewerWalkModeOperation.PIVOT_DOWN]: this.pivotDown.bind(this),\n [ViewerWalkModeOperation.PIVOT_LEFT]: this.pivotLeft.bind(this),\n [ViewerWalkModeOperation.PIVOT_RIGHT]: this.pivotRight.bind(this),\n [ViewerWalkModeOperation.PIVOT_UP]: this.pivotUp.bind(this),\n [ViewerWalkModeOperation.WALK_BACKWARD]: this.walkBackward.bind(this),\n [ViewerWalkModeOperation.WALK_FORWARD]: this.walkForward.bind(this),\n [ViewerWalkModeOperation.WALK_LEFT]: this.walkLeft.bind(this),\n [ViewerWalkModeOperation.WALK_RIGHT]: this.walkRight.bind(this),\n };\n\n this.enabledChangeDisposable = this.model.onEnabledChange(\n this.handleEnabledChange\n );\n this.keyBindingsChangeDisposable = this.model.onKeyBindingsChange(\n this.restartInteraction\n );\n this.configurationChangeDisposable = this.model.onConfigurationChange(\n this.restartInteraction\n );\n }\n\n public dispose(): void {\n this.disable();\n this.enabledChangeDisposable?.dispose();\n this.keyBindingsChangeDisposable?.dispose();\n this.configurationChangeDisposable?.dispose();\n\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('keyup', this.handleKeyUp);\n }\n\n public initialize(_: HTMLElement, api: InteractionApiPerspective): void {\n this.api = api;\n\n this.handleEnabledChange(this.model.getEnabled());\n }\n\n public enable(): void {\n this.disable();\n\n window.addEventListener('keydown', this.handleKeyDown);\n window.addEventListener('keyup', this.handleKeyUp);\n }\n\n public disable(): void {\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('keyup', this.handleKeyUp);\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n const key = event.key.toLowerCase();\n\n const exclude =\n targetIsElement(event.target) &&\n this.model.isElementExcluded(event.target);\n\n if (!event.repeat && !exclude) {\n this.pressed = { ...this.pressed, [key]: true };\n\n this.tryBeginInteraction();\n }\n }\n\n private handleKeyUp = async (event: KeyboardEvent): Promise<void> => {\n const key = event.key.toLocaleLowerCase();\n\n this.pressed = Object.keys(this.pressed)\n .filter((k) => k !== key)\n .reduce((pressed, k) => ({ ...pressed, [k]: true }), {});\n\n if (Object.keys(this.pressed).length === 0 && this.interval != null) {\n this.endInteraction();\n }\n };\n\n private handleEnabledChange(enabled: boolean): void {\n if (enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n private restartInteraction(): void {\n this.clearInterval();\n this.tryBeginInteraction();\n }\n\n private tryBeginInteraction(): void {\n if (Object.keys(this.pressed).length > 0 && this.someOperationMatches()) {\n this.beginInteraction();\n }\n }\n\n private beginInteraction(): void {\n if (!this.api?.isInteracting()) {\n this.api?.beginInteraction();\n }\n\n if (this.interval == null) {\n this.interval = setInterval(\n this.updateCamera,\n this.model.getKeyboardRepeatInterval()\n );\n }\n }\n\n private endInteraction = async (): Promise<void> => {\n this.clearInterval();\n await this.api?.endInteraction();\n };\n\n private clearInterval(): void {\n if (this.interval != null) {\n clearInterval(this.interval);\n this.interval = undefined;\n }\n }\n\n private updateCamera(): void {\n Object.keys(this.handlers).forEach((key) => {\n const op = key as ViewerWalkModeOperation;\n\n if (this.model.operationMatches(op, this.pressed)) {\n this.handlers[op]();\n }\n });\n }\n\n private someOperationMatches(): boolean {\n return Object.keys(this.handlers).some((op) =>\n this.model.operationMatches(op as ViewerWalkModeOperation, this.pressed)\n );\n }\n\n private pivotLeft(): void {\n this.api?.pivotCamera(0, this.model.getKeyboardPivotDegrees());\n }\n\n private pivotRight(): void {\n this.api?.pivotCamera(0, -this.model.getKeyboardPivotDegrees());\n }\n\n private pivotUp(): void {\n this.api?.pivotCamera(-this.model.getKeyboardPivotDegrees(), 0);\n }\n\n private pivotDown(): void {\n this.api?.pivotCamera(this.model.getKeyboardPivotDegrees(), 0);\n }\n\n private walkForward(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.forward()));\n }\n\n private walkBackward(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.back()));\n }\n\n private walkLeft(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.left()));\n }\n\n private walkRight(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.right()));\n }\n\n private moveUp(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.down()));\n }\n\n private moveDown(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.up()));\n }\n\n private relativeWalkSpeed(): number {\n return this.model.getKeyboardWalkSpeed() / 500;\n }\n}\n",":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { InteractionType } from '../../lib/interactions/baseInteractionHandler';\nimport { WalkModeController } from '../../lib/walk-mode/controller';\nimport { WalkInteractionHandler } from '../../lib/walk-mode/interactions';\nimport { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';\n\ninterface StateMap {\n teleportTool?: HTMLVertexViewerTeleportToolElement;\n previousPrimaryInteractionType?: InteractionType;\n}\n\n/**\n * The `<vertex-viewer-walk-mode-tool>` allows for additional interactions\n * intended for walking through a model instead of orbiting a model.\n */\n@Component({\n tag: 'vertex-viewer-walk-mode-tool',\n styleUrl: 'viewer-walk-mode-tool.css',\n shadow: true,\n})\nexport class ViewerWalkModeTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The `WalkModeController` responsible for controlling `KeyBinding`s and excluded\n * elements, as well as updating the `WalkModeModel` with various configuration\n * settings.\n */\n @Prop({ mutable: true })\n public controller?: WalkModeController;\n\n /**\n * The `WalkModeModel` responsible for tracking configuration and emitting\n * events for interaction handlers to respond to.\n */\n @Prop({ mutable: true })\n public model: WalkModeModel = new WalkModeModel();\n\n /**\n * The type of teleportation to perform when clicking. This value is passed through\n * to a `<vertex-viewer-teleport-tool>`'s mode attribute.\n *\n * `teleport` - the camera's `position` is moved to the location of the hit result\n * constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated\n * to align to the plane represented by the hit result's position and normal.\n *\n * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the\n * hit result constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `undefined` - no teleportation will occur when clicking.\n *\n * Defaults to `undefined`.\n */\n @Prop()\n public teleportMode?: ViewerTeleportMode;\n\n /**\n * Determines whether the interaction handlers for this tool should respond to events.\n * When set to `true`, the default viewer interaction mode will be overridden to use the\n * `pivot` camera interaction type, keyboard controls for movement will be added, and\n * setting the `teleportMode` will enable the tool.\n *\n * Defaults to `true`.\n */\n @Prop()\n public enabled = true;\n\n /**\n * Event emitted when the `WalkModeController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<WalkModeController>;\n\n @Element()\n private hostEl?: HTMLElement;\n\n private interactionHandlerDisposable?: Disposable;\n private interactionHandler?: WalkInteractionHandler;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected async componentDidLoad(): Promise<void> {\n await this.ensureTeleportToolConfigured();\n this.updateTeleportTool();\n await this.setPivotInteractionMode();\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setPivotInteractionMode();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.resetInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('enabled')\n protected handleEnabledChanged(): void {\n this.controller?.setEnabled(this.enabled);\n this.toggleInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n this.updateTeleportTool();\n this.toggleInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('teleportMode')\n protected handleTeleportModeChanged(): void {\n this.updateTeleportTool();\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(): void {\n this.updateTeleportTool();\n this.controllerChanged.emit(this.controller);\n }\n\n /**\n * @ignore\n */\n @Watch('model')\n protected handleModelChanged(): void {\n this.setupController();\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n }\n\n protected render(): JSX.Element {\n return (\n <Host>\n <slot\n name=\"teleport-tool\"\n onSlotchange={async () => {\n await this.ensureTeleportToolConfigured();\n this.updateTeleportTool();\n }}\n ></slot>\n </Host>\n );\n }\n\n private setupController(): void {\n if (this.controller == null) {\n this.controller = new WalkModeController(this.model);\n this.controllerChanged.emit(this.controller);\n } else {\n this.controller.updateModel(this.model);\n }\n }\n\n private clearInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandlerDisposable = undefined;\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private async setupInteractionHandler(): Promise<void> {\n if (this.interactionHandler == null) {\n this.interactionHandler = new WalkInteractionHandler(this.model);\n\n this.interactionHandlerDisposable =\n await this.viewer?.registerInteractionHandler(this.interactionHandler);\n }\n }\n\n private async ensureTeleportToolConfigured(): Promise<void> {\n if (this.hostEl != null) {\n const slotted: Element | undefined =\n this.hostEl?.querySelector(\n 'vertex-viewer-teleport-tool[slot=\"teleport-tool\"]'\n ) ?? undefined;\n const slottedTeleportTool =\n slotted?.tagName === 'VERTEX-VIEWER-TELEPORT-TOOL'\n ? (slotted as HTMLVertexViewerTeleportToolElement)\n : undefined;\n\n if (slottedTeleportTool != null) {\n this.stateMap.teleportTool = slottedTeleportTool;\n } else {\n this.stateMap.teleportTool = document.createElement(\n 'vertex-viewer-teleport-tool'\n );\n this.stateMap.teleportTool.slot = 'teleport-tool';\n\n this.hostEl?.appendChild(this.stateMap.teleportTool);\n }\n }\n }\n\n private updateTeleportTool(): void {\n if (this.stateMap.teleportTool != null) {\n this.stateMap.teleportTool.viewer = this.viewer;\n this.stateMap.teleportTool.controller = this.controller;\n this.stateMap.teleportTool.model = this.model;\n this.stateMap.teleportTool.mode = this.teleportMode;\n }\n }\n\n private toggleInteractionMode(): void {\n if (this.enabled) {\n this.setPivotInteractionMode();\n } else {\n this.resetInteractionMode();\n }\n }\n\n private async setPivotInteractionMode(): Promise<void> {\n const baseInteractionHandler =\n await this.viewer?.getBaseInteractionHandler();\n\n if (this.enabled && baseInteractionHandler != null) {\n const interactionType =\n baseInteractionHandler.getPrimaryInteractionType();\n this.stateMap.previousPrimaryInteractionType =\n interactionType === 'pivot'\n ? this.stateMap.previousPrimaryInteractionType\n : interactionType;\n baseInteractionHandler.setPrimaryInteractionType('pivot');\n }\n }\n\n private async resetInteractionMode(): Promise<void> {\n const baseInteractionHandler =\n await this.viewer?.getBaseInteractionHandler();\n\n if (\n baseInteractionHandler != null &&\n baseInteractionHandler.getPrimaryInteractionType() === 'pivot' &&\n this.stateMap.previousPrimaryInteractionType != null\n ) {\n baseInteractionHandler.setPrimaryInteractionType(\n this.stateMap.previousPrimaryInteractionType\n );\n this.stateMap.previousPrimaryInteractionType = undefined;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["targetIsElement","target","Element","WalkInteractionHandler","constructor","model","this","pressed","handleKeyUp","async","event","key","toLocaleLowerCase","Object","keys","filter","k","reduce","length","interval","endInteraction","clearInterval","_a","api","handleKeyDown","bind","handleEnabledChange","restartInteraction","updateCamera","handlers","ViewerWalkModeOperation","MOVE_DOWN","moveDown","MOVE_UP","moveUp","PIVOT_DOWN","pivotDown","PIVOT_LEFT","pivotLeft","PIVOT_RIGHT","pivotRight","PIVOT_UP","pivotUp","WALK_BACKWARD","walkBackward","WALK_FORWARD","walkForward","WALK_LEFT","walkLeft","WALK_RIGHT","walkRight","enabledChangeDisposable","onEnabledChange","keyBindingsChangeDisposable","onKeyBindingsChange","configurationChangeDisposable","onConfigurationChange","dispose","disable","_b","_c","window","removeEventListener","initialize","_","getEnabled","enable","addEventListener","toLowerCase","exclude","isElementExcluded","repeat","tryBeginInteraction","enabled","someOperationMatches","beginInteraction","isInteracting","setInterval","getKeyboardRepeatInterval","undefined","forEach","op","operationMatches","some","pivotCamera","getKeyboardPivotDegrees","walk","Vector3","scale","relativeWalkSpeed","forward","back","left","right","down","up","getKeyboardWalkSpeed","viewerWalkModeToolCss","ViewerWalkModeTool","__stencil_proxyCustomElement","HTMLElement","registerHost","WalkModeModel","stateMap","componentWillLoad","setupController","setupInteractionHandler","componentDidLoad","ensureTeleportToolConfigured","updateTeleportTool","setPivotInteractionMode","connectedCallback","disconnectedCallback","clearInteractionHandler","resetInteractionMode","handleEnabledChanged","controller","setEnabled","toggleInteractionMode","handleViewerChanged","handleTeleportModeChanged","handleControllerChanged","controllerChanged","emit","handleModelChanged","render","h","Host","name","onSlotchange","WalkModeController","updateModel","interactionHandlerDisposable","interactionHandler","viewer","registerInteractionHandler","hostEl","slotted","querySelector","slottedTeleportTool","tagName","teleportTool","document","createElement","slot","appendChild","mode","teleportMode","baseInteractionHandler","getBaseInteractionHandler","interactionType","getPrimaryInteractionType","previousPrimaryInteractionType","setPrimaryInteractionType"],"sources":["src/lib/walk-mode/dom.ts","src/lib/walk-mode/interactions.ts","src/components/viewer-walk-mode-tool/viewer-walk-mode-tool.css?tag=vertex-viewer-walk-mode-tool&encapsulation=shadow","src/components/viewer-walk-mode-tool/viewer-walk-mode-tool.tsx"],"sourcesContent":["export function targetIsElement(target: EventTarget | null): target is Element {\n return target instanceof Element;\n}\n","import { Vector3 } from '@vertexvis/geometry';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { InteractionApiPerspective, InteractionHandler } from '../interactions';\nimport { targetIsElement } from './dom';\nimport { ViewerWalkModeOperation, WalkModeModel } from './model';\n\nexport class WalkInteractionHandler implements InteractionHandler {\n private api?: InteractionApiPerspective;\n\n private interval?: NodeJS.Timeout;\n private pressed: Record<string, boolean> = {};\n private handlers: Record<ViewerWalkModeOperation, VoidFunction>;\n\n private enabledChangeDisposable?: Disposable;\n private keyBindingsChangeDisposable?: Disposable;\n private configurationChangeDisposable?: Disposable;\n\n public constructor(private model: WalkModeModel) {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleKeyUp = this.handleKeyUp.bind(this);\n this.handleEnabledChange = this.handleEnabledChange.bind(this);\n this.restartInteraction = this.restartInteraction.bind(this);\n this.updateCamera = this.updateCamera.bind(this);\n\n this.handlers = {\n [ViewerWalkModeOperation.MOVE_DOWN]: this.moveDown.bind(this),\n [ViewerWalkModeOperation.MOVE_UP]: this.moveUp.bind(this),\n [ViewerWalkModeOperation.PIVOT_DOWN]: this.pivotDown.bind(this),\n [ViewerWalkModeOperation.PIVOT_LEFT]: this.pivotLeft.bind(this),\n [ViewerWalkModeOperation.PIVOT_RIGHT]: this.pivotRight.bind(this),\n [ViewerWalkModeOperation.PIVOT_UP]: this.pivotUp.bind(this),\n [ViewerWalkModeOperation.WALK_BACKWARD]: this.walkBackward.bind(this),\n [ViewerWalkModeOperation.WALK_FORWARD]: this.walkForward.bind(this),\n [ViewerWalkModeOperation.WALK_LEFT]: this.walkLeft.bind(this),\n [ViewerWalkModeOperation.WALK_RIGHT]: this.walkRight.bind(this),\n };\n\n this.enabledChangeDisposable = this.model.onEnabledChange(\n this.handleEnabledChange,\n );\n this.keyBindingsChangeDisposable = this.model.onKeyBindingsChange(\n this.restartInteraction,\n );\n this.configurationChangeDisposable = this.model.onConfigurationChange(\n this.restartInteraction,\n );\n }\n\n public dispose(): void {\n this.disable();\n this.enabledChangeDisposable?.dispose();\n this.keyBindingsChangeDisposable?.dispose();\n this.configurationChangeDisposable?.dispose();\n\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('keyup', this.handleKeyUp);\n }\n\n public initialize(_: HTMLElement, api: InteractionApiPerspective): void {\n this.api = api;\n\n this.handleEnabledChange(this.model.getEnabled());\n }\n\n public enable(): void {\n this.disable();\n\n window.addEventListener('keydown', this.handleKeyDown);\n window.addEventListener('keyup', this.handleKeyUp);\n }\n\n public disable(): void {\n window.removeEventListener('keydown', this.handleKeyDown);\n window.removeEventListener('keyup', this.handleKeyUp);\n }\n\n private handleKeyDown(event: KeyboardEvent): void {\n const key = event.key.toLowerCase();\n\n const exclude =\n targetIsElement(event.target) &&\n this.model.isElementExcluded(event.target);\n\n if (!event.repeat && !exclude) {\n this.pressed = { ...this.pressed, [key]: true };\n\n this.tryBeginInteraction();\n }\n }\n\n private handleKeyUp = async (event: KeyboardEvent): Promise<void> => {\n const key = event.key.toLocaleLowerCase();\n\n this.pressed = Object.keys(this.pressed)\n .filter((k) => k !== key)\n .reduce((pressed, k) => ({ ...pressed, [k]: true }), {});\n\n if (Object.keys(this.pressed).length === 0 && this.interval != null) {\n this.endInteraction();\n }\n };\n\n private handleEnabledChange(enabled: boolean): void {\n if (enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n private restartInteraction(): void {\n this.clearInterval();\n this.tryBeginInteraction();\n }\n\n private tryBeginInteraction(): void {\n if (Object.keys(this.pressed).length > 0 && this.someOperationMatches()) {\n this.beginInteraction();\n }\n }\n\n private beginInteraction(): void {\n if (!this.api?.isInteracting()) {\n this.api?.beginInteraction();\n }\n\n if (this.interval == null) {\n this.interval = setInterval(\n this.updateCamera,\n this.model.getKeyboardRepeatInterval(),\n );\n }\n }\n\n private endInteraction = async (): Promise<void> => {\n this.clearInterval();\n await this.api?.endInteraction();\n };\n\n private clearInterval(): void {\n if (this.interval != null) {\n clearInterval(this.interval);\n this.interval = undefined;\n }\n }\n\n private updateCamera(): void {\n Object.keys(this.handlers).forEach((key) => {\n const op = key as ViewerWalkModeOperation;\n\n if (this.model.operationMatches(op, this.pressed)) {\n this.handlers[op]();\n }\n });\n }\n\n private someOperationMatches(): boolean {\n return Object.keys(this.handlers).some((op) =>\n this.model.operationMatches(op as ViewerWalkModeOperation, this.pressed),\n );\n }\n\n private pivotLeft(): void {\n this.api?.pivotCamera(0, this.model.getKeyboardPivotDegrees());\n }\n\n private pivotRight(): void {\n this.api?.pivotCamera(0, -this.model.getKeyboardPivotDegrees());\n }\n\n private pivotUp(): void {\n this.api?.pivotCamera(-this.model.getKeyboardPivotDegrees(), 0);\n }\n\n private pivotDown(): void {\n this.api?.pivotCamera(this.model.getKeyboardPivotDegrees(), 0);\n }\n\n private walkForward(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.forward()));\n }\n\n private walkBackward(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.back()));\n }\n\n private walkLeft(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.left()));\n }\n\n private walkRight(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.right()));\n }\n\n private moveUp(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.down()));\n }\n\n private moveDown(): void {\n this.api?.walk(Vector3.scale(this.relativeWalkSpeed(), Vector3.up()));\n }\n\n private relativeWalkSpeed(): number {\n return this.model.getKeyboardWalkSpeed() / 500;\n }\n}\n",":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { InteractionType } from '../../lib/interactions/baseInteractionHandler';\nimport { WalkModeController } from '../../lib/walk-mode/controller';\nimport { WalkInteractionHandler } from '../../lib/walk-mode/interactions';\nimport { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';\n\ninterface StateMap {\n teleportTool?: HTMLVertexViewerTeleportToolElement;\n previousPrimaryInteractionType?: InteractionType;\n}\n\n/**\n * The `<vertex-viewer-walk-mode-tool>` allows for additional interactions\n * intended for walking through a model instead of orbiting a model.\n */\n@Component({\n tag: 'vertex-viewer-walk-mode-tool',\n styleUrl: 'viewer-walk-mode-tool.css',\n shadow: true,\n})\nexport class ViewerWalkModeTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The `WalkModeController` responsible for controlling `KeyBinding`s and excluded\n * elements, as well as updating the `WalkModeModel` with various configuration\n * settings.\n */\n @Prop({ mutable: true })\n public controller?: WalkModeController;\n\n /**\n * The `WalkModeModel` responsible for tracking configuration and emitting\n * events for interaction handlers to respond to.\n */\n @Prop({ mutable: true })\n public model: WalkModeModel = new WalkModeModel();\n\n /**\n * The type of teleportation to perform when clicking. This value is passed through\n * to a `<vertex-viewer-teleport-tool>`'s mode attribute.\n *\n * `teleport` - the camera's `position` is moved to the location of the hit result\n * constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated\n * to align to the plane represented by the hit result's position and normal.\n *\n * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the\n * hit result constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `undefined` - no teleportation will occur when clicking.\n *\n * Defaults to `undefined`.\n */\n @Prop()\n public teleportMode?: ViewerTeleportMode;\n\n /**\n * Determines whether the interaction handlers for this tool should respond to events.\n * When set to `true`, the default viewer interaction mode will be overridden to use the\n * `pivot` camera interaction type, keyboard controls for movement will be added, and\n * setting the `teleportMode` will enable the tool.\n *\n * Defaults to `true`.\n */\n @Prop()\n public enabled = true;\n\n /**\n * Event emitted when the `WalkModeController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<WalkModeController>;\n\n @Element()\n private hostEl?: HTMLElement;\n\n private interactionHandlerDisposable?: Disposable;\n private interactionHandler?: WalkInteractionHandler;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected async componentDidLoad(): Promise<void> {\n await this.ensureTeleportToolConfigured();\n this.updateTeleportTool();\n await this.setPivotInteractionMode();\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setPivotInteractionMode();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.resetInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('enabled')\n protected handleEnabledChanged(): void {\n this.controller?.setEnabled(this.enabled);\n this.toggleInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n this.updateTeleportTool();\n this.toggleInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('teleportMode')\n protected handleTeleportModeChanged(): void {\n this.updateTeleportTool();\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(): void {\n this.updateTeleportTool();\n this.controllerChanged.emit(this.controller);\n }\n\n /**\n * @ignore\n */\n @Watch('model')\n protected handleModelChanged(): void {\n this.setupController();\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n }\n\n protected render(): JSX.Element {\n return (\n <Host>\n <slot\n name=\"teleport-tool\"\n onSlotchange={async () => {\n await this.ensureTeleportToolConfigured();\n this.updateTeleportTool();\n }}\n ></slot>\n </Host>\n );\n }\n\n private setupController(): void {\n if (this.controller == null) {\n this.controller = new WalkModeController(this.model);\n this.controllerChanged.emit(this.controller);\n } else {\n this.controller.updateModel(this.model);\n }\n }\n\n private clearInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandlerDisposable = undefined;\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private async setupInteractionHandler(): Promise<void> {\n if (this.interactionHandler == null) {\n this.interactionHandler = new WalkInteractionHandler(this.model);\n\n this.interactionHandlerDisposable =\n await this.viewer?.registerInteractionHandler(this.interactionHandler);\n }\n }\n\n private async ensureTeleportToolConfigured(): Promise<void> {\n if (this.hostEl != null) {\n const slotted: Element | undefined =\n this.hostEl?.querySelector(\n 'vertex-viewer-teleport-tool[slot=\"teleport-tool\"]',\n ) ?? undefined;\n const slottedTeleportTool =\n slotted?.tagName === 'VERTEX-VIEWER-TELEPORT-TOOL'\n ? (slotted as HTMLVertexViewerTeleportToolElement)\n : undefined;\n\n if (slottedTeleportTool != null) {\n this.stateMap.teleportTool = slottedTeleportTool;\n } else {\n this.stateMap.teleportTool = document.createElement(\n 'vertex-viewer-teleport-tool',\n );\n this.stateMap.teleportTool.slot = 'teleport-tool';\n\n this.hostEl?.appendChild(this.stateMap.teleportTool);\n }\n }\n }\n\n private updateTeleportTool(): void {\n if (this.stateMap.teleportTool != null) {\n this.stateMap.teleportTool.viewer = this.viewer;\n this.stateMap.teleportTool.controller = this.controller;\n this.stateMap.teleportTool.model = this.model;\n this.stateMap.teleportTool.mode = this.teleportMode;\n }\n }\n\n private toggleInteractionMode(): void {\n if (this.enabled) {\n this.setPivotInteractionMode();\n } else {\n this.resetInteractionMode();\n }\n }\n\n private async setPivotInteractionMode(): Promise<void> {\n const baseInteractionHandler =\n await this.viewer?.getBaseInteractionHandler();\n\n if (this.enabled && baseInteractionHandler != null) {\n const interactionType =\n baseInteractionHandler.getPrimaryInteractionType();\n this.stateMap.previousPrimaryInteractionType =\n interactionType === 'pivot'\n ? this.stateMap.previousPrimaryInteractionType\n : interactionType;\n baseInteractionHandler.setPrimaryInteractionType('pivot');\n }\n }\n\n private async resetInteractionMode(): Promise<void> {\n const baseInteractionHandler =\n await this.viewer?.getBaseInteractionHandler();\n\n if (\n baseInteractionHandler != null &&\n baseInteractionHandler.getPrimaryInteractionType() === 'pivot' &&\n this.stateMap.previousPrimaryInteractionType != null\n ) {\n baseInteractionHandler.setPrimaryInteractionType(\n this.stateMap.previousPrimaryInteractionType,\n );\n this.stateMap.previousPrimaryInteractionType = undefined;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|