@vertexvis/viewer 1.0.2-canary.3 → 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 +1 @@
|
|
|
1
|
-
{"version":3,"names":["lowerCase","str","toLowerCase","DEFAULT_SPLIT_REGEXP","DEFAULT_STRIP_REGEXP","noCase","input","options","_a","splitRegexp","_b","stripRegexp","_c","transform","_d","delimiter","result","replace","start","end","length","charAt","slice","split","map","join","re","value","RegExp","reduce","dotCase","__assign","paramCase","MeasurementDetailsEntry","label","props","children","h","class","classNames","MinimumDistanceResultEntry","formatter","overlays","onShowOverlay","onHideOverlay","v","Vector3","subtract","point1","point2","Fragment","onMouseEnter","addLineFromResult","onMouseLeave","distance","addDistanceVectorFromResult","x","y","z","PlanarAngleResultEntry","angle","PlanarDistanceResultEntry","SurfaceAreaResultEntry","area","viewerMeasurementDetailsCss","ViewerMeasurementDetails","constructor","hostRef","this","measurementModel","MeasurementModel","distanceUnits","angleUnits","fractionalDigits","distanceMeasurementUnits","DistanceUnits","angleMeasurementUnits","AngleUnits","areaMeasurementUnits","AreaUnits","handleShowOverlay","overlay","handleHideOverlay","dispose","handleOutcomeChange","updateStateFromModel","connectedCallback","handleMeasurementModelChanged","disconnectedCallback","onOutcomeChangedHandler","handleDistanceUnitsChanged","handleAngleUnitsChanged","onOutcomeChanged","handleResultTypesChanged","render","isFilteredResultType","resultTypes","includes","type","results","measurementOutcome","filter","Host","renderResult","measurementOverlays","makeAngleFormatter","makeDistanceFormatter","makeAreaFormatter","getOutcome","getResultForType","undefined","find","makeFormatter","convertWorldValueToReal","unit","distanceFormatter","convertTo","angleFormatter","areaFormatter","convert","units","customFormatter","formatValue","val","toFixed","isApprox","isApproximate","abbreviatedName"],"sources":["../../node_modules/lower-case/dist.es2015/index.js","../../node_modules/no-case/dist.es2015/index.js","../../node_modules/dot-case/dist.es2015/index.js","../../node_modules/param-case/dist.es2015/index.js","src/components/viewer-measurement-details/viewer-measurement-details-entry.tsx","src/components/viewer-measurement-details/viewer-measurement-details-results.tsx","src/components/viewer-measurement-details/viewer-measurement-details.css?tag=vertex-viewer-measurement-details&encapsulation=shadow","src/components/viewer-measurement-details/viewer-measurement-details.tsx"],"sourcesContent":["/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang)\n return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}\n//# sourceMappingURL=index.js.map","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { noCase } from \"no-case\";\nexport function dotCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \".\" }, options));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { dotCase } from \"dot-case\";\nexport function paramCase(input, options) {\n if (options === void 0) { options = {}; }\n return dotCase(input, __assign({ delimiter: \"-\" }, options));\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { FunctionalComponent, h } from '@stencil/core';\nimport classNames from 'classnames';\nimport { paramCase } from 'param-case';\n\ninterface MeasurementDetailsEntryProps {\n label: string;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport const MeasurementDetailsEntry: FunctionalComponent<\n MeasurementDetailsEntryProps\n> = ({ label, ...props }, children) => {\n return (\n <div {...props} class=\"measurement-details-entry\">\n <div\n class={classNames('measurement-details-entry-label', paramCase(label))}\n >\n {label}:\n </div>\n {children}\n </div>\n );\n};\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\nimport { Vector3 } from '@vertexvis/geometry';\n\nimport { Formatter } from '../../lib/formatter';\nimport {\n MeasurementOverlay,\n MeasurementOverlayManager,\n MeasurementResult,\n MinimumDistanceMeasurementResult,\n PlanarAngleMeasurementResult,\n PlanarDistanceMeasurementResult,\n SurfaceAreaMeasurementResult,\n} from '../../lib/measurement';\nimport { MeasurementDetailsEntry } from './viewer-measurement-details-entry';\n\ninterface MeasurementResultEntryProps<R extends MeasurementResult> {\n result: R;\n overlays?: MeasurementOverlayManager;\n formatter: Formatter<number>;\n onShowOverlay: (overlay: MeasurementOverlay | undefined) => void;\n onHideOverlay: () => void;\n}\n\nexport const MinimumDistanceResultEntry: FunctionalComponent<\n MeasurementResultEntryProps<MinimumDistanceMeasurementResult>\n> = ({ result, formatter, overlays, onShowOverlay, onHideOverlay }) => {\n const v = Vector3.subtract(result.point1, result.point2);\n\n return (\n <Fragment>\n <MeasurementDetailsEntry\n label=\"Dist\"\n onMouseEnter={() => onShowOverlay(overlays?.addLineFromResult(result))}\n onMouseLeave={onHideOverlay}\n >\n {formatter(result.distance)}\n </MeasurementDetailsEntry>\n <MeasurementDetailsEntry\n label=\"X\"\n onMouseEnter={() =>\n onShowOverlay(overlays?.addDistanceVectorFromResult(result))\n }\n onMouseLeave={onHideOverlay}\n >\n {formatter(v.x)}\n </MeasurementDetailsEntry>\n <MeasurementDetailsEntry\n label=\"Y\"\n onMouseEnter={() =>\n onShowOverlay(overlays?.addDistanceVectorFromResult(result))\n }\n onMouseLeave={onHideOverlay}\n >\n {formatter(v.y)}\n </MeasurementDetailsEntry>\n <MeasurementDetailsEntry\n label=\"Z\"\n onMouseEnter={() =>\n onShowOverlay(overlays?.addDistanceVectorFromResult(result))\n }\n onMouseLeave={onHideOverlay}\n >\n {formatter(v.z)}\n </MeasurementDetailsEntry>\n </Fragment>\n );\n};\n\nexport const PlanarAngleResultEntry: FunctionalComponent<\n MeasurementResultEntryProps<PlanarAngleMeasurementResult>\n> = ({ result, formatter }) => {\n return (\n <MeasurementDetailsEntry label=\"Angle\">\n {formatter(result.angle)}\n </MeasurementDetailsEntry>\n );\n};\n\nexport const PlanarDistanceResultEntry: FunctionalComponent<\n MeasurementResultEntryProps<PlanarDistanceMeasurementResult>\n> = ({ result, formatter }) => {\n return (\n <MeasurementDetailsEntry label=\"Parallel Dist\">\n {formatter(result.distance)}\n </MeasurementDetailsEntry>\n );\n};\n\nexport const SurfaceAreaResultEntry: FunctionalComponent<\n MeasurementResultEntryProps<SurfaceAreaMeasurementResult>\n> = ({ result, formatter }) => {\n return (\n <MeasurementDetailsEntry label=\"Area\">\n {formatter(result.area)}\n </MeasurementDetailsEntry>\n );\n};\n",":host {\n display: flex;\n flex-direction: column;\n\n /**\n * @prop --viewer-measurement-details-x-color:\n * The color of the `X` label in measurements.\n * Defaults to red.\n */\n --viewer-measurement-details-x-color: red;\n\n /**\n * @prop --viewer-measurement-details-y-color:\n * The color of the `X` label in measurements.\n * Defaults to var(--green-500).\n */\n --viewer-measurement-details-y-color: var(--green-500);\n\n /**\n * @prop --viewer-measurement-details-z-color:\n * The color of the `X` label in measurements.\n * Defaults to blue.\n */\n --viewer-measurement-details-z-color: blue;\n}\n\n.measurement-details-entry {\n display: flex;\n align-items: center;\n}\n\n.measurement-details-entry-label {\n user-select: none;\n padding-right: 0.25rem;\n}\n\n.measurement-details-entry-label.x {\n color: var(--viewer-measurement-details-x-color);\n}\n\n.measurement-details-entry-label.y {\n color: var(--viewer-measurement-details-y-color);\n}\n\n.measurement-details-entry-label.z {\n color: var(--viewer-measurement-details-z-color);\n}\n","import { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Formatter } from '../../lib/formatter';\nimport {\n MeasurementModel,\n MeasurementOutcome,\n MeasurementOverlay,\n MeasurementOverlayManager,\n MeasurementResult,\n} from '../../lib/measurement';\nimport {\n AngleUnits,\n AngleUnitType,\n AreaUnits,\n DistanceUnits,\n DistanceUnitType,\n Unit,\n} from '../../lib/types';\nimport {\n MinimumDistanceResultEntry,\n PlanarAngleResultEntry,\n PlanarDistanceResultEntry,\n SurfaceAreaResultEntry,\n} from './viewer-measurement-details-results';\n\n@Component({\n tag: 'vertex-viewer-measurement-details',\n styleUrl: 'viewer-measurement-details.css',\n shadow: true,\n})\nexport class ViewerMeasurementDetails {\n /**\n * The `MeasurementModel` that should be reflected in these details.\n * If not specified, a new `MeasurementModel` will be created,\n * which can then be used to update the display.\n */\n @Prop()\n public measurementModel?: MeasurementModel = new MeasurementModel();\n\n /**\n * The manager that the component will use to present measurement overlays.\n */\n @Prop()\n public measurementOverlays?: MeasurementOverlayManager;\n\n /**\n * The outcome to display. This property is automatically updated if a\n * measurement model is provided.\n */\n @Prop({ mutable: true })\n public measurementOutcome?: MeasurementOutcome;\n\n /**\n * The unit of distance-based measurement.\n */\n @Prop()\n public distanceUnits: DistanceUnitType = 'millimeters';\n\n /**\n * The unit of angle-based measurement.\n */\n @Prop()\n public angleUnits: AngleUnitType = 'degrees';\n\n /**\n * The number of fraction digits to display.\n */\n @Prop()\n public fractionalDigits = 2;\n\n /**\n * An optional formatter that can be used to format the display of a distance.\n * The formatting function is passed a calculated real-world distance and is\n * expected to return a string.\n */\n @Prop()\n public distanceFormatter?: Formatter<number>;\n\n /**\n * An optional formatter that can be used to format the display of an angle.\n * The formatting function is passed a calculated angle in degrees and is\n * expected to return a string.\n */\n @Prop()\n public angleFormatter?: Formatter<number>;\n\n /**\n * An optional formatter that can be used to format the display of an area.\n * The formatting function is passed a calculated area and is\n * expected to return a string.\n */\n @Prop()\n public areaFormatter?: Formatter<number>;\n\n /**\n * A set of result types to display. If `undefined`, then all results will be\n * displayed.\n */\n @Prop()\n public resultTypes?: MeasurementResult['type'][];\n\n @State()\n private overlay?: MeasurementOverlay;\n\n @State()\n private distanceMeasurementUnits = new DistanceUnits(this.distanceUnits);\n\n @State()\n private angleMeasurementUnits = new AngleUnits(this.angleUnits);\n\n @State()\n private areaMeasurementUnits = new AreaUnits(this.distanceUnits);\n\n private onOutcomeChangedHandler?: Disposable;\n\n /**\n * @internal\n */\n protected connectedCallback(): void {\n this.handleMeasurementModelChanged();\n }\n\n /**\n * @internal\n */\n protected disconnectedCallback(): void {\n this.onOutcomeChangedHandler?.dispose();\n }\n\n /**\n * @internal\n */\n @Watch('distanceUnits', { immediate: true })\n protected handleDistanceUnitsChanged(): void {\n this.distanceMeasurementUnits = new DistanceUnits(this.distanceUnits);\n this.areaMeasurementUnits = new AreaUnits(this.distanceUnits);\n }\n\n /**\n * @internal\n */\n @Watch('angleUnits', { immediate: true })\n protected handleAngleUnitsChanged(): void {\n this.angleMeasurementUnits = new AngleUnits(this.angleUnits);\n }\n\n /**\n * @internal\n */\n @Watch('measurementModel', { immediate: true })\n protected handleMeasurementModelChanged(): void {\n this.onOutcomeChangedHandler?.dispose();\n this.onOutcomeChangedHandler = this.measurementModel?.onOutcomeChanged(\n this.handleOutcomeChange\n );\n\n this.updateStateFromModel();\n }\n\n /**\n * @internal\n */\n @Watch('resultTypes')\n protected handleResultTypesChanged(): void {\n this.updateStateFromModel();\n }\n\n /**\n * @internal\n */\n protected render(): h.JSX.IntrinsicElements {\n const isFilteredResultType = (result: MeasurementResult): boolean => {\n return this.resultTypes?.includes(result.type) ?? true;\n };\n\n const results = (this.measurementOutcome?.results ?? []).filter(\n isFilteredResultType\n );\n\n return (\n <Host>\n {this.renderResult('planar-angle', results, (result) => (\n <PlanarAngleResultEntry\n result={result}\n overlays={this.measurementOverlays}\n formatter={this.makeAngleFormatter()}\n onShowOverlay={this.handleShowOverlay}\n onHideOverlay={this.handleHideOverlay}\n />\n ))}\n\n {this.renderResult('planar-distance', results, (result) => (\n <PlanarDistanceResultEntry\n result={result}\n overlays={this.measurementOverlays}\n formatter={this.makeDistanceFormatter()}\n onShowOverlay={this.handleShowOverlay}\n onHideOverlay={this.handleHideOverlay}\n />\n ))}\n\n {this.renderResult('surface-area', results, (result) => (\n <SurfaceAreaResultEntry\n result={result}\n overlays={this.measurementOverlays}\n formatter={this.makeAreaFormatter()}\n onShowOverlay={this.handleShowOverlay}\n onHideOverlay={this.handleHideOverlay}\n />\n ))}\n\n {this.renderResult('minimum-distance', results, (result) => (\n <MinimumDistanceResultEntry\n result={result}\n overlays={this.measurementOverlays}\n formatter={this.makeDistanceFormatter()}\n onShowOverlay={this.handleShowOverlay}\n onHideOverlay={this.handleHideOverlay}\n />\n ))}\n </Host>\n );\n }\n\n private handleShowOverlay = (\n overlay: MeasurementOverlay | undefined\n ): void => {\n this.overlay = overlay;\n };\n\n private handleHideOverlay = (): void => {\n this.overlay?.dispose();\n };\n\n private handleOutcomeChange = (): void => {\n this.updateStateFromModel();\n };\n\n private updateStateFromModel(): void {\n this.measurementOutcome = this.measurementModel?.getOutcome();\n }\n\n private renderResult<T extends MeasurementResult['type']>(\n type: T,\n results: MeasurementResult[],\n render: (\n result: Extract<MeasurementResult, { type: T }>\n ) => h.JSX.IntrinsicElements | undefined\n ): h.JSX.IntrinsicElements | undefined {\n const result = this.getResultForType(type, results);\n return result != null ? render(result) : undefined;\n }\n\n private getResultForType<T extends MeasurementResult['type']>(\n type: T,\n results: MeasurementResult[]\n ): Extract<MeasurementResult, { type: T }> | undefined {\n return results.find((result) => result.type === type) as Extract<\n MeasurementResult,\n { type: T }\n >;\n }\n\n private makeDistanceFormatter(): Formatter<number> {\n return this.makeFormatter(\n (value) => this.distanceMeasurementUnits.convertWorldValueToReal(value),\n this.distanceMeasurementUnits.unit,\n this.distanceFormatter\n );\n }\n\n private makeAngleFormatter(): Formatter<number> {\n return this.makeFormatter(\n (value) => this.angleMeasurementUnits.convertTo(value),\n this.angleMeasurementUnits.unit,\n this.angleFormatter\n );\n }\n\n private makeAreaFormatter(): Formatter<number> {\n return this.makeFormatter(\n (value) => this.areaMeasurementUnits.convertWorldValueToReal(value),\n this.areaMeasurementUnits.unit,\n this.areaFormatter\n );\n }\n\n private makeFormatter(\n convert: (value: number) => number,\n units: Unit,\n customFormatter: Formatter<number> | undefined\n ): Formatter<number> {\n return (value) => {\n const v = convert(value);\n\n if (customFormatter != null) {\n return customFormatter(v);\n } else {\n return this.formatValue(v, units);\n }\n };\n }\n\n private formatValue(value: number, unit: Unit): string {\n const val = value.toFixed(this.fractionalDigits);\n const isApprox = this.measurementOutcome?.isApproximate ?? false;\n return `${isApprox ? '~' + val : val} ${unit.abbreviatedName}`;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["lowerCase","str","toLowerCase","DEFAULT_SPLIT_REGEXP","DEFAULT_STRIP_REGEXP","noCase","input","options","_a","splitRegexp","_b","stripRegexp","_c","transform","_d","delimiter","result","replace","start","end","length","charAt","slice","split","map","join","re","value","RegExp","reduce","dotCase","__assign","paramCase","MeasurementDetailsEntry","label","props","children","h","class","classNames","MinimumDistanceResultEntry","formatter","overlays","onShowOverlay","onHideOverlay","v","Vector3","subtract","point1","point2","Fragment","onMouseEnter","addLineFromResult","onMouseLeave","distance","addDistanceVectorFromResult","x","y","z","PlanarAngleResultEntry","angle","PlanarDistanceResultEntry","SurfaceAreaResultEntry","area","viewerMeasurementDetailsCss","ViewerMeasurementDetails","constructor","hostRef","this","measurementModel","MeasurementModel","distanceUnits","angleUnits","fractionalDigits","distanceMeasurementUnits","DistanceUnits","angleMeasurementUnits","AngleUnits","areaMeasurementUnits","AreaUnits","handleShowOverlay","overlay","handleHideOverlay","dispose","handleOutcomeChange","updateStateFromModel","connectedCallback","handleMeasurementModelChanged","disconnectedCallback","onOutcomeChangedHandler","handleDistanceUnitsChanged","handleAngleUnitsChanged","onOutcomeChanged","handleResultTypesChanged","render","isFilteredResultType","resultTypes","includes","type","results","measurementOutcome","filter","Host","renderResult","measurementOverlays","makeAngleFormatter","makeDistanceFormatter","makeAreaFormatter","getOutcome","getResultForType","undefined","find","makeFormatter","convertWorldValueToReal","unit","distanceFormatter","convertTo","angleFormatter","areaFormatter","convert","units","customFormatter","formatValue","val","toFixed","isApprox","isApproximate","abbreviatedName"],"sources":["../../node_modules/lower-case/dist.es2015/index.js","../../node_modules/no-case/dist.es2015/index.js","../../node_modules/dot-case/dist.es2015/index.js","../../node_modules/param-case/dist.es2015/index.js","src/components/viewer-measurement-details/viewer-measurement-details-entry.tsx","src/components/viewer-measurement-details/viewer-measurement-details-results.tsx","src/components/viewer-measurement-details/viewer-measurement-details.css?tag=vertex-viewer-measurement-details&encapsulation=shadow","src/components/viewer-measurement-details/viewer-measurement-details.tsx"],"sourcesContent":["/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\nvar SUPPORTED_LOCALE = {\n tr: {\n regexp: /\\u0130|\\u0049|\\u0049\\u0307/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n az: {\n regexp: /\\u0130/g,\n map: {\n İ: \"\\u0069\",\n I: \"\\u0131\",\n İ: \"\\u0069\",\n },\n },\n lt: {\n regexp: /\\u0049|\\u004A|\\u012E|\\u00CC|\\u00CD|\\u0128/g,\n map: {\n I: \"\\u0069\\u0307\",\n J: \"\\u006A\\u0307\",\n Į: \"\\u012F\\u0307\",\n Ì: \"\\u0069\\u0307\\u0300\",\n Í: \"\\u0069\\u0307\\u0301\",\n Ĩ: \"\\u0069\\u0307\\u0303\",\n },\n },\n};\n/**\n * Localized lower case.\n */\nexport function localeLowerCase(str, locale) {\n var lang = SUPPORTED_LOCALE[locale.toLowerCase()];\n if (lang)\n return lowerCase(str.replace(lang.regexp, function (m) { return lang.map[m]; }));\n return lowerCase(str);\n}\n/**\n * Lower case as a function.\n */\nexport function lowerCase(str) {\n return str.toLowerCase();\n}\n//# sourceMappingURL=index.js.map","import { lowerCase } from \"lower-case\";\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nexport function noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { noCase } from \"no-case\";\nexport function dotCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \".\" }, options));\n}\n//# sourceMappingURL=index.js.map","import { __assign } from \"tslib\";\nimport { dotCase } from \"dot-case\";\nexport function paramCase(input, options) {\n if (options === void 0) { options = {}; }\n return dotCase(input, __assign({ delimiter: \"-\" }, options));\n}\n//# sourceMappingURL=index.js.map","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { FunctionalComponent, h } from '@stencil/core';\nimport classNames from 'classnames';\nimport { paramCase } from 'param-case';\n\ninterface MeasurementDetailsEntryProps {\n label: string;\n onMouseEnter?: () => void;\n onMouseLeave?: () => void;\n}\n\nexport const MeasurementDetailsEntry: FunctionalComponent<\n MeasurementDetailsEntryProps\n> = ({ label, ...props }, children) => {\n return (\n <div {...props} class=\"measurement-details-entry\">\n <div\n class={classNames('measurement-details-entry-label', paramCase(label))}\n >\n {label}:\n </div>\n {children}\n </div>\n );\n};\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\nimport { Vector3 } from '@vertexvis/geometry';\n\nimport { Formatter } from '../../lib/formatter';\nimport {\n MeasurementOverlay,\n MeasurementOverlayManager,\n MeasurementResult,\n MinimumDistanceMeasurementResult,\n PlanarAngleMeasurementResult,\n PlanarDistanceMeasurementResult,\n SurfaceAreaMeasurementResult,\n} from '../../lib/measurement';\nimport { MeasurementDetailsEntry } from './viewer-measurement-details-entry';\n\ninterface MeasurementResultEntryProps<R extends MeasurementResult> {\n result: R;\n overlays?: MeasurementOverlayManager;\n formatter: Formatter<number>;\n onShowOverlay: (overlay: MeasurementOverlay | undefined) => void;\n onHideOverlay: () => void;\n}\n\nexport const MinimumDistanceResultEntry: FunctionalComponent<\n MeasurementResultEntryProps<MinimumDistanceMeasurementResult>\n> = ({ result, formatter, overlays, onShowOverlay, onHideOverlay }) => {\n const v = Vector3.subtract(result.point1, result.point2);\n\n return (\n <Fragment>\n <MeasurementDetailsEntry\n label=\"Dist\"\n onMouseEnter={() => onShowOverlay(overlays?.addLineFromResult(result))}\n onMouseLeave={onHideOverlay}\n >\n {formatter(result.distance)}\n </MeasurementDetailsEntry>\n <MeasurementDetailsEntry\n label=\"X\"\n onMouseEnter={() =>\n onShowOverlay(overlays?.addDistanceVectorFromResult(result))\n }\n onMouseLeave={onHideOverlay}\n >\n {formatter(v.x)}\n </MeasurementDetailsEntry>\n <MeasurementDetailsEntry\n label=\"Y\"\n onMouseEnter={() =>\n onShowOverlay(overlays?.addDistanceVectorFromResult(result))\n }\n onMouseLeave={onHideOverlay}\n >\n {formatter(v.y)}\n </MeasurementDetailsEntry>\n <MeasurementDetailsEntry\n label=\"Z\"\n onMouseEnter={() =>\n onShowOverlay(overlays?.addDistanceVectorFromResult(result))\n }\n onMouseLeave={onHideOverlay}\n >\n {formatter(v.z)}\n </MeasurementDetailsEntry>\n </Fragment>\n );\n};\n\nexport const PlanarAngleResultEntry: FunctionalComponent<\n MeasurementResultEntryProps<PlanarAngleMeasurementResult>\n> = ({ result, formatter }) => {\n return (\n <MeasurementDetailsEntry label=\"Angle\">\n {formatter(result.angle)}\n </MeasurementDetailsEntry>\n );\n};\n\nexport const PlanarDistanceResultEntry: FunctionalComponent<\n MeasurementResultEntryProps<PlanarDistanceMeasurementResult>\n> = ({ result, formatter }) => {\n return (\n <MeasurementDetailsEntry label=\"Parallel Dist\">\n {formatter(result.distance)}\n </MeasurementDetailsEntry>\n );\n};\n\nexport const SurfaceAreaResultEntry: FunctionalComponent<\n MeasurementResultEntryProps<SurfaceAreaMeasurementResult>\n> = ({ result, formatter }) => {\n return (\n <MeasurementDetailsEntry label=\"Area\">\n {formatter(result.area)}\n </MeasurementDetailsEntry>\n );\n};\n",":host {\n display: flex;\n flex-direction: column;\n\n /**\n * @prop --viewer-measurement-details-x-color:\n * The color of the `X` label in measurements.\n * Defaults to red.\n */\n --viewer-measurement-details-x-color: red;\n\n /**\n * @prop --viewer-measurement-details-y-color:\n * The color of the `X` label in measurements.\n * Defaults to var(--green-500).\n */\n --viewer-measurement-details-y-color: var(--green-500);\n\n /**\n * @prop --viewer-measurement-details-z-color:\n * The color of the `X` label in measurements.\n * Defaults to blue.\n */\n --viewer-measurement-details-z-color: blue;\n}\n\n.measurement-details-entry {\n display: flex;\n align-items: center;\n}\n\n.measurement-details-entry-label {\n user-select: none;\n padding-right: 0.25rem;\n}\n\n.measurement-details-entry-label.x {\n color: var(--viewer-measurement-details-x-color);\n}\n\n.measurement-details-entry-label.y {\n color: var(--viewer-measurement-details-y-color);\n}\n\n.measurement-details-entry-label.z {\n color: var(--viewer-measurement-details-z-color);\n}\n","import { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Formatter } from '../../lib/formatter';\nimport {\n MeasurementModel,\n MeasurementOutcome,\n MeasurementOverlay,\n MeasurementOverlayManager,\n MeasurementResult,\n} from '../../lib/measurement';\nimport {\n AngleUnits,\n AngleUnitType,\n AreaUnits,\n DistanceUnits,\n DistanceUnitType,\n Unit,\n} from '../../lib/types';\nimport {\n MinimumDistanceResultEntry,\n PlanarAngleResultEntry,\n PlanarDistanceResultEntry,\n SurfaceAreaResultEntry,\n} from './viewer-measurement-details-results';\n\n@Component({\n tag: 'vertex-viewer-measurement-details',\n styleUrl: 'viewer-measurement-details.css',\n shadow: true,\n})\nexport class ViewerMeasurementDetails {\n /**\n * The `MeasurementModel` that should be reflected in these details.\n * If not specified, a new `MeasurementModel` will be created,\n * which can then be used to update the display.\n */\n @Prop()\n public measurementModel?: MeasurementModel = new MeasurementModel();\n\n /**\n * The manager that the component will use to present measurement overlays.\n */\n @Prop()\n public measurementOverlays?: MeasurementOverlayManager;\n\n /**\n * The outcome to display. This property is automatically updated if a\n * measurement model is provided.\n */\n @Prop({ mutable: true })\n public measurementOutcome?: MeasurementOutcome;\n\n /**\n * The unit of distance-based measurement.\n */\n @Prop()\n public distanceUnits: DistanceUnitType = 'millimeters';\n\n /**\n * The unit of angle-based measurement.\n */\n @Prop()\n public angleUnits: AngleUnitType = 'degrees';\n\n /**\n * The number of fraction digits to display.\n */\n @Prop()\n public fractionalDigits = 2;\n\n /**\n * An optional formatter that can be used to format the display of a distance.\n * The formatting function is passed a calculated real-world distance and is\n * expected to return a string.\n */\n @Prop()\n public distanceFormatter?: Formatter<number>;\n\n /**\n * An optional formatter that can be used to format the display of an angle.\n * The formatting function is passed a calculated angle in degrees and is\n * expected to return a string.\n */\n @Prop()\n public angleFormatter?: Formatter<number>;\n\n /**\n * An optional formatter that can be used to format the display of an area.\n * The formatting function is passed a calculated area and is\n * expected to return a string.\n */\n @Prop()\n public areaFormatter?: Formatter<number>;\n\n /**\n * A set of result types to display. If `undefined`, then all results will be\n * displayed.\n */\n @Prop()\n public resultTypes?: MeasurementResult['type'][];\n\n @State()\n private overlay?: MeasurementOverlay;\n\n @State()\n private distanceMeasurementUnits = new DistanceUnits(this.distanceUnits);\n\n @State()\n private angleMeasurementUnits = new AngleUnits(this.angleUnits);\n\n @State()\n private areaMeasurementUnits = new AreaUnits(this.distanceUnits);\n\n private onOutcomeChangedHandler?: Disposable;\n\n /**\n * @internal\n */\n protected connectedCallback(): void {\n this.handleMeasurementModelChanged();\n }\n\n /**\n * @internal\n */\n protected disconnectedCallback(): void {\n this.onOutcomeChangedHandler?.dispose();\n }\n\n /**\n * @internal\n */\n @Watch('distanceUnits', { immediate: true })\n protected handleDistanceUnitsChanged(): void {\n this.distanceMeasurementUnits = new DistanceUnits(this.distanceUnits);\n this.areaMeasurementUnits = new AreaUnits(this.distanceUnits);\n }\n\n /**\n * @internal\n */\n @Watch('angleUnits', { immediate: true })\n protected handleAngleUnitsChanged(): void {\n this.angleMeasurementUnits = new AngleUnits(this.angleUnits);\n }\n\n /**\n * @internal\n */\n @Watch('measurementModel', { immediate: true })\n protected handleMeasurementModelChanged(): void {\n this.onOutcomeChangedHandler?.dispose();\n this.onOutcomeChangedHandler = this.measurementModel?.onOutcomeChanged(\n this.handleOutcomeChange,\n );\n\n this.updateStateFromModel();\n }\n\n /**\n * @internal\n */\n @Watch('resultTypes')\n protected handleResultTypesChanged(): void {\n this.updateStateFromModel();\n }\n\n /**\n * @internal\n */\n protected render(): h.JSX.IntrinsicElements {\n const isFilteredResultType = (result: MeasurementResult): boolean => {\n return this.resultTypes?.includes(result.type) ?? true;\n };\n\n const results = (this.measurementOutcome?.results ?? []).filter(\n isFilteredResultType,\n );\n\n return (\n <Host>\n {this.renderResult('planar-angle', results, (result) => (\n <PlanarAngleResultEntry\n result={result}\n overlays={this.measurementOverlays}\n formatter={this.makeAngleFormatter()}\n onShowOverlay={this.handleShowOverlay}\n onHideOverlay={this.handleHideOverlay}\n />\n ))}\n\n {this.renderResult('planar-distance', results, (result) => (\n <PlanarDistanceResultEntry\n result={result}\n overlays={this.measurementOverlays}\n formatter={this.makeDistanceFormatter()}\n onShowOverlay={this.handleShowOverlay}\n onHideOverlay={this.handleHideOverlay}\n />\n ))}\n\n {this.renderResult('surface-area', results, (result) => (\n <SurfaceAreaResultEntry\n result={result}\n overlays={this.measurementOverlays}\n formatter={this.makeAreaFormatter()}\n onShowOverlay={this.handleShowOverlay}\n onHideOverlay={this.handleHideOverlay}\n />\n ))}\n\n {this.renderResult('minimum-distance', results, (result) => (\n <MinimumDistanceResultEntry\n result={result}\n overlays={this.measurementOverlays}\n formatter={this.makeDistanceFormatter()}\n onShowOverlay={this.handleShowOverlay}\n onHideOverlay={this.handleHideOverlay}\n />\n ))}\n </Host>\n );\n }\n\n private handleShowOverlay = (\n overlay: MeasurementOverlay | undefined,\n ): void => {\n this.overlay = overlay;\n };\n\n private handleHideOverlay = (): void => {\n this.overlay?.dispose();\n };\n\n private handleOutcomeChange = (): void => {\n this.updateStateFromModel();\n };\n\n private updateStateFromModel(): void {\n this.measurementOutcome = this.measurementModel?.getOutcome();\n }\n\n private renderResult<T extends MeasurementResult['type']>(\n type: T,\n results: MeasurementResult[],\n render: (\n result: Extract<MeasurementResult, { type: T }>,\n ) => h.JSX.IntrinsicElements | undefined,\n ): h.JSX.IntrinsicElements | undefined {\n const result = this.getResultForType(type, results);\n return result != null ? render(result) : undefined;\n }\n\n private getResultForType<T extends MeasurementResult['type']>(\n type: T,\n results: MeasurementResult[],\n ): Extract<MeasurementResult, { type: T }> | undefined {\n return results.find((result) => result.type === type) as Extract<\n MeasurementResult,\n { type: T }\n >;\n }\n\n private makeDistanceFormatter(): Formatter<number> {\n return this.makeFormatter(\n (value) => this.distanceMeasurementUnits.convertWorldValueToReal(value),\n this.distanceMeasurementUnits.unit,\n this.distanceFormatter,\n );\n }\n\n private makeAngleFormatter(): Formatter<number> {\n return this.makeFormatter(\n (value) => this.angleMeasurementUnits.convertTo(value),\n this.angleMeasurementUnits.unit,\n this.angleFormatter,\n );\n }\n\n private makeAreaFormatter(): Formatter<number> {\n return this.makeFormatter(\n (value) => this.areaMeasurementUnits.convertWorldValueToReal(value),\n this.areaMeasurementUnits.unit,\n this.areaFormatter,\n );\n }\n\n private makeFormatter(\n convert: (value: number) => number,\n units: Unit,\n customFormatter: Formatter<number> | undefined,\n ): Formatter<number> {\n return (value) => {\n const v = convert(value);\n\n if (customFormatter != null) {\n return customFormatter(v);\n } else {\n return this.formatValue(v, units);\n }\n };\n }\n\n private formatValue(value: number, unit: Unit): string {\n const val = value.toFixed(this.fractionalDigits);\n const isApprox = this.measurementOutcome?.isApproximate ?? false;\n return `${isApprox ? '~' + val : val} ${unit.abbreviatedName}`;\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -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,r as i,H as o}from"./p-CCVkga9Q.js";import{q as a,v as r,h as c}from"./p-CkIzrpO0.js";import{r as d}from"./p-BxtKMwBH.js";import{O as n,f as s,S as f}from"./p-Dp56p_jX.js";import"./p-BAhfr1Nx.js";import{c as b}from"./p-Dw4-tG-V.js";import"./p-Og6pwwEB.js";import"./p-CG9AChtV.js";import"./p-Ct0GdHoc.js";const l={front:{direction:r.back(),quaternion:a.create()},back:{direction:r.forward(),quaternion:a.fromAxisAngle(r.up(),Math.PI)},left:{direction:r.left(),quaternion:a.fromAxisAngle(r.down(),Math.PI/2)},right:{direction:r.right(),quaternion:a.fromAxisAngle(r.up(),Math.PI/2)},top:{direction:r.up(),quaternion:a.fromAxisAngle(r.right(),-Math.PI/2)},bottom:{direction:r.down(),quaternion:a.fromAxisAngle(r.left(),-Math.PI/2)}};const h=({label:i,length:o,rotationAxis:d})=>{const n={width:`${o+5}px`};const s=a.fromAxisAngle(d,Math.PI/2);const f=r.scale(o+15,r.right());return e(t,null,e("vertex-viewer-dom-group",{quaternion:s},e("vertex-viewer-dom-element",{style:n,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{rotation:c.create({x:Math.PI/2,y:0,z:0}),style:n,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 g=({label:t,length:i,side:o,disabled:a,onPointerDown:c})=>{const{direction:d,quaternion:n}=l[o];const s=r.scale(i/2-.1,d);return e("vertex-viewer-dom-element",{class:b("cube-side",{disabled:a}),position:s,quaternion:n,style:{width:`${i}px`,height:`${i}px`},onPointerDown:c,billboardOff:true},e("div",{class:`cube-side-face cube-side-face-${t.toLowerCase()}`},t))};const v=({length:t,face1Side:i,face1Corner:o,face2Side:a,face2Corner:c,face3Side:d,face3Corner:n,disabled:s,onPointerDown:f})=>{const{direction:h,quaternion:g}=l[i];const{direction:v,quaternion:u}=l[a];const{direction:w,quaternion:p}=l[d];const m=r.scale(t/2,h);const x=r.scale(t/2,v);const y=r.scale(t/2,w);const k={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:b("cube-corner",{disabled:s}),onPointerDown:f},e("vertex-viewer-dom-element",{position:m,quaternion:g,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${o}`})),e("vertex-viewer-dom-element",{position:x,quaternion:u,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${c}`})),e("vertex-viewer-dom-element",{position:y,quaternion:p,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${n}`})))};const u=({length:t,face1Side:i,face2Side:o,face1Edge:a,face2Edge:c,disabled:d,onPointerDown:n})=>{const{direction:s,quaternion:f}=l[i];const{direction:h,quaternion:g}=l[o];const v=r.scale(t/2,s);const u=r.scale(t/2,h);const w={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:b("cube-edge",{disabled:d}),onPointerDown:n},e("vertex-viewer-dom-element",{position:v,quaternion:f,style:w,billboardOff:true},e("div",{class:`cube-edge-face ${a}`})),e("vertex-viewer-dom-element",{position:u,quaternion:g,style:w,billboardOff:true},e("div",{class:`cube-edge-face ${c}`})))};const w=({length:t})=>{const{direction:i,quaternion:o}=l.top;const a=r.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 p=()=>`: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 m=class{constructor(e){i(this,e);this.boxLength=80;this.triadPosition=r.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=n.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=r.create(-t-5,-t-5,-t-5);const i=3.125;const o=this.boxLength*i;const a=21.5;this.camera=new s(r.scale(o,r.negate(e.direction)),r.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&&r.isEqual(a.max,r.origin())&&r.isEqual(a.min,r.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(){d((()=>{if(this.rendererEl!=null){const e=this.rendererEl.getBoundingClientRect();this.boxLength=Math.min(e.width,e.height)}}))}render(){return e(o,{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(h,{key:"fc954790f8b1e94a0fcbce27a877438f70f690b3",label:"X",length:this.boxLength,rotationAxis:r.origin()}),e(h,{key:"55f8abd997774fa75b59cc25ee367f97e26d8d0e",label:"Y",length:this.boxLength,rotationAxis:r.back()}),e(h,{key:"0edd14df8831e142e7b716c19195372d0ca9b540",label:"Z",length:this.boxLength,rotationAxis:r.down()})),e("vertex-viewer-dom-group",{key:"44c2aa6567000ff3a8b605bfcacff9edea99ad49",class:"cube",matrix:this.worldOrientation.matrix},e(w,{key:"6d332b76534a1792e476d5af4c9928b655245699",length:this.boxLength+10}),e(g,{key:"e912dbdcfd3587e6d889b314da97d4831a5f5820",label:this.zPositiveLabel,length:this.boxLength,side:"front",onPointerDown:this.handleStandardView(f.FRONT),disabled:this.standardViewsOff}),e(g,{key:"9018644613e72bf4f605893e8b802e54e49d7a60",label:this.zNegativeLabel,length:this.boxLength,side:"back",onPointerDown:this.handleStandardView(f.BACK),disabled:this.standardViewsOff}),e(g,{key:"6f3018e38983ee92dd0d237e1f5e8d583ffc5868",label:this.xNegativeLabel,length:this.boxLength,side:"left",onPointerDown:this.handleStandardView(f.LEFT),disabled:this.standardViewsOff}),e(g,{key:"6ad9a228a8f08ed5834e817eb251459a2b790228",label:this.xPositiveLabel,length:this.boxLength,side:"right",onPointerDown:this.handleStandardView(f.RIGHT),disabled:this.standardViewsOff}),e(g,{key:"65444fe7463cc93010f697895259616e2c951185",label:this.yPositiveLabel,length:this.boxLength,side:"top",onPointerDown:this.handleStandardView(f.TOP),disabled:this.standardViewsOff}),e(g,{key:"69bd39a0e0c282d7699fbc43bb8162b5058b2725",label:this.yNegativeLabel,length:this.boxLength,side:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM),disabled:this.standardViewsOff}),e(u,{key:"bff49b1af1febb826d2566f78f44e198e724980a",length:this.boxLength,face1Side:"top",face1Edge:"bottom",face2Side:"front",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_FRONT),disabled:this.standardViewsOff}),e(u,{key:"d218a084a54b52b791b6ee905d572fc4c5f2067e",length:this.boxLength,face1Side:"front",face1Edge:"right",face2Side:"right",face2Edge:"left",onPointerDown:this.handleStandardView(f.FRONT_LEFT),disabled:this.standardViewsOff}),e(u,{key:"55cdc6e8ed92a5d04605648cfba59e503d74b17a",length:this.boxLength,face1Side:"bottom",face1Edge:"top",face2Side:"front",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT),disabled:this.standardViewsOff}),e(u,{key:"e560d8a890575295b0b66391ef6edfa86a352479",length:this.boxLength,face1Side:"front",face1Edge:"left",face2Side:"left",face2Edge:"right",onPointerDown:this.handleStandardView(f.FRONT_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"92175bcdb02a1ac0c69ecf060bf7ab8276bba30b",length:this.boxLength,face1Side:"top",face1Edge:"right",face2Side:"right",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_LEFT),disabled:this.standardViewsOff}),e(u,{key:"5c25934c6add8941aeffebf91e5d2755f736171a",length:this.boxLength,face1Side:"back",face1Edge:"left",face2Side:"right",face2Edge:"right",onPointerDown:this.handleStandardView(f.BACK_LEFT),disabled:this.standardViewsOff}),e(u,{key:"573f648180a2ded37d05f53d54a09b594a745838",length:this.boxLength,face1Side:"bottom",face1Edge:"right",face2Side:"right",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_LEFT),disabled:this.standardViewsOff}),e(u,{key:"0736e5ce0c74c217eb597d05d9cb322176c6c26e",length:this.boxLength,face1Side:"top",face1Edge:"top",face2Side:"back",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_BACK),disabled:this.standardViewsOff}),e(u,{key:"2621bf73adcbdcbed213ebf1bff5c0441066dfde",length:this.boxLength,face1Side:"back",face1Edge:"right",face2Side:"left",face2Edge:"left",onPointerDown:this.handleStandardView(f.BACK_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"a7ce12b7104292548a2f39c3c21be1bbfb741008",length:this.boxLength,face1Side:"bottom",face1Edge:"bottom",face2Side:"back",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_BACK),disabled:this.standardViewsOff}),e(u,{key:"6d51d0af13c7f6058e43d87b3b74c7f79dcd6372",length:this.boxLength,face1Side:"top",face1Edge:"left",face2Side:"left",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"6391a20b84bf91a6e6a8bce623fa402d02992b1b",length:this.boxLength,face1Side:"bottom",face1Edge:"left",face2Side:"left",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"119cdae569b4ac1abdc5929be9e789d7459b3d4d",length:this.boxLength,face1Side:"top",face1Corner:"bottom-left",face2Side:"front",face2Corner:"top-left",face3Side:"left",face3Corner:"top-right",onPointerDown:this.handleStandardView(f.TOP_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"607d1c0db03091fe6fe49ff8bb3f1d2e4e9ee737",length:this.boxLength,face1Side:"top",face1Corner:"bottom-right",face2Side:"front",face2Corner:"top-right",face3Side:"right",face3Corner:"top-left",onPointerDown:this.handleStandardView(f.TOP_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{key:"bf417c48dc652d2692d6a122cd8aa4f9aae65331",length:this.boxLength,face1Side:"bottom",face1Corner:"top-right",face2Side:"front",face2Corner:"bottom-right",face3Side:"right",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{key:"59f7db859f9d06921e2fa3c30fa2527bc95ff3ce",length:this.boxLength,face1Side:"bottom",face1Corner:"top-left",face2Side:"front",face2Corner:"bottom-left",face3Side:"left",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"f8eb7ba2b8b9384c6fed7f1e930eb872599b7372",length:this.boxLength,face1Side:"top",face1Corner:"top-right",face2Side:"back",face2Corner:"top-left",face3Side:"right",face3Corner:"top-right",onPointerDown:this.handleStandardView(f.TOP_BACK_LEFT),disabled:this.standardViewsOff}),e(v,{key:"122f91a6146b62e145d0e710b8d1b7605b744073",length:this.boxLength,face1Side:"top",face1Corner:"top-left",face2Side:"back",face2Corner:"top-right",face3Side:"left",face3Corner:"top-left",onPointerDown:this.handleStandardView(f.TOP_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"4114134608fa6903bd0226a541d153175418102b",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-left",face2Side:"back",face2Corner:"bottom-right",face3Side:"left",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(f.BOTTOM_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"1d4fd46fb9edf0821e3e611c863837d1e9bc7ec8",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-right",face2Side:"back",face2Corner:"bottom-left",face3Side:"right",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(f.BOTTOM_BACK_LEFT),disabled:this.standardViewsOff}))))}static get watchers(){return{viewer:[{handleViewerChanged:0}]}}};m.style=p();export{m as vertex_viewer_view_cube};
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{h as e,F as t,r as i,H as o}from"./p-CCVkga9Q.js";import{q as a,v as r,h as c}from"./p-CkIzrpO0.js";import{r as n}from"./p-BxtKMwBH.js";import{O as d,f as s,S as f}from"./p-Dp56p_jX.js";import"./p-BAhfr1Nx.js";import{c as b}from"./p-Dw4-tG-V.js";import"./p-Og6pwwEB.js";import"./p-CG9AChtV.js";import"./p-Ct0GdHoc.js";const l={front:{direction:r.back(),quaternion:a.create()},back:{direction:r.forward(),quaternion:a.fromAxisAngle(r.up(),Math.PI)},left:{direction:r.left(),quaternion:a.fromAxisAngle(r.down(),Math.PI/2)},right:{direction:r.right(),quaternion:a.fromAxisAngle(r.up(),Math.PI/2)},top:{direction:r.up(),quaternion:a.fromAxisAngle(r.right(),-Math.PI/2)},bottom:{direction:r.down(),quaternion:a.fromAxisAngle(r.left(),-Math.PI/2)}};const h=({label:i,length:o,rotationAxis:n})=>{const d={width:`${o+5}px`};const s=a.fromAxisAngle(n,Math.PI/2);const f=r.scale(o+15,r.right());return e(t,null,e("vertex-viewer-dom-group",{quaternion:s},e("vertex-viewer-dom-element",{style:d,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{rotation:c.create({x:Math.PI/2,y:0,z:0}),style:d,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 g=({label:t,length:i,side:o,disabled:a,onPointerDown:c})=>{const{direction:n,quaternion:d}=l[o];const s=r.scale(i/2-.1,n);return e("vertex-viewer-dom-element",{class:b("cube-side",{disabled:a}),position:s,quaternion:d,style:{width:`${i}px`,height:`${i}px`},onPointerDown:c,billboardOff:true},e("div",{class:`cube-side-face cube-side-face-${t.toLowerCase()}`},t))};const v=({length:t,face1Side:i,face1Corner:o,face2Side:a,face2Corner:c,face3Side:n,face3Corner:d,disabled:s,onPointerDown:f})=>{const{direction:h,quaternion:g}=l[i];const{direction:v,quaternion:u}=l[a];const{direction:w,quaternion:p}=l[n];const m=r.scale(t/2,h);const x=r.scale(t/2,v);const y=r.scale(t/2,w);const k={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:b("cube-corner",{disabled:s}),onPointerDown:f},e("vertex-viewer-dom-element",{position:m,quaternion:g,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${o}`})),e("vertex-viewer-dom-element",{position:x,quaternion:u,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${c}`})),e("vertex-viewer-dom-element",{position:y,quaternion:p,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${d}`})))};const u=({length:t,face1Side:i,face2Side:o,face1Edge:a,face2Edge:c,disabled:n,onPointerDown:d})=>{const{direction:s,quaternion:f}=l[i];const{direction:h,quaternion:g}=l[o];const v=r.scale(t/2,s);const u=r.scale(t/2,h);const w={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:b("cube-edge",{disabled:n}),onPointerDown:d},e("vertex-viewer-dom-element",{position:v,quaternion:f,style:w,billboardOff:true},e("div",{class:`cube-edge-face ${a}`})),e("vertex-viewer-dom-element",{position:u,quaternion:g,style:w,billboardOff:true},e("div",{class:`cube-edge-face ${c}`})))};const w=({length:t})=>{const{direction:i,quaternion:o}=l.top;const a=r.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 p=()=>`: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 m=class{constructor(e){i(this,e);this.boxLength=80;this.triadPosition=r.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=d.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=r.create(-t-5,-t-5,-t-5);const i=3.125;const o=this.boxLength*i;const a=21.5;this.camera=new s(r.scale(o,r.negate(e.direction)),r.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&&r.isEqual(a.max,r.origin())&&r.isEqual(a.min,r.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(){n((()=>{if(this.rendererEl!=null){const e=this.rendererEl.getBoundingClientRect();this.boxLength=Math.min(e.width,e.height)}}))}render(){return e(o,{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(h,{key:"b65eddeb99f9b93120246f8143886ac937afb57a",label:"X",length:this.boxLength,rotationAxis:r.origin()}),e(h,{key:"ba49dbda3e18e90e033453d06b509f31336fffe8",label:"Y",length:this.boxLength,rotationAxis:r.back()}),e(h,{key:"ff765198e6e11cc6b7b2d466766809b055c5ccdf",label:"Z",length:this.boxLength,rotationAxis:r.down()})),e("vertex-viewer-dom-group",{key:"0dd9aab195029c25a3090f35ee39c04ed45da8f8",class:"cube",matrix:this.worldOrientation.matrix},e(w,{key:"995e2af8e70518edcf949d5df72387463ff3cc0e",length:this.boxLength+10}),e(g,{key:"0864a044b3d79b9a483cd492b7a04a20fcf64f42",label:this.zPositiveLabel,length:this.boxLength,side:"front",onPointerDown:this.handleStandardView(f.FRONT),disabled:this.standardViewsOff}),e(g,{key:"8f9110528267a00b802f97a8543a896d9fc333f7",label:this.zNegativeLabel,length:this.boxLength,side:"back",onPointerDown:this.handleStandardView(f.BACK),disabled:this.standardViewsOff}),e(g,{key:"6848e1e273bc815ee40e0218cc15bdc80d1f2715",label:this.xNegativeLabel,length:this.boxLength,side:"left",onPointerDown:this.handleStandardView(f.LEFT),disabled:this.standardViewsOff}),e(g,{key:"825624a992f4d31d9faf7506c8e964392da041ab",label:this.xPositiveLabel,length:this.boxLength,side:"right",onPointerDown:this.handleStandardView(f.RIGHT),disabled:this.standardViewsOff}),e(g,{key:"f59f5693ce4f1b4a794f4665b3f920bf29c1f159",label:this.yPositiveLabel,length:this.boxLength,side:"top",onPointerDown:this.handleStandardView(f.TOP),disabled:this.standardViewsOff}),e(g,{key:"65b8c8a2f8cc5cbc7974ca0dc3e6c328e2ca0649",label:this.yNegativeLabel,length:this.boxLength,side:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM),disabled:this.standardViewsOff}),e(u,{key:"0923dfc3696b2c76e69069156c0f57d6cd4f8285",length:this.boxLength,face1Side:"top",face1Edge:"bottom",face2Side:"front",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_FRONT),disabled:this.standardViewsOff}),e(u,{key:"6bf8058fbb4e35b9a1ed8dc5ff772ed2d2995add",length:this.boxLength,face1Side:"front",face1Edge:"right",face2Side:"right",face2Edge:"left",onPointerDown:this.handleStandardView(f.FRONT_LEFT),disabled:this.standardViewsOff}),e(u,{key:"61f28c6cd18661c643ec1510305a8603efbd5cdb",length:this.boxLength,face1Side:"bottom",face1Edge:"top",face2Side:"front",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT),disabled:this.standardViewsOff}),e(u,{key:"6c62acdf92f6397ec3c381d10078215cf6a29ebb",length:this.boxLength,face1Side:"front",face1Edge:"left",face2Side:"left",face2Edge:"right",onPointerDown:this.handleStandardView(f.FRONT_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"a94dc61cea93cae54e148c4f1ffc73a42717f986",length:this.boxLength,face1Side:"top",face1Edge:"right",face2Side:"right",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_LEFT),disabled:this.standardViewsOff}),e(u,{key:"4a97659a3aad5b162252091401ec666727d204be",length:this.boxLength,face1Side:"back",face1Edge:"left",face2Side:"right",face2Edge:"right",onPointerDown:this.handleStandardView(f.BACK_LEFT),disabled:this.standardViewsOff}),e(u,{key:"422acd7e4689eb7ae0403726a29a3784637bdfd6",length:this.boxLength,face1Side:"bottom",face1Edge:"right",face2Side:"right",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_LEFT),disabled:this.standardViewsOff}),e(u,{key:"afa5fb1b78c1fcbb78a48f040d5c868a4dd338fc",length:this.boxLength,face1Side:"top",face1Edge:"top",face2Side:"back",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_BACK),disabled:this.standardViewsOff}),e(u,{key:"e1aa294c3ed0a6e105929a7094cfbdeab26fe7c0",length:this.boxLength,face1Side:"back",face1Edge:"right",face2Side:"left",face2Edge:"left",onPointerDown:this.handleStandardView(f.BACK_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"e3a83623df735d9987a279ef2e055d1f962cafbe",length:this.boxLength,face1Side:"bottom",face1Edge:"bottom",face2Side:"back",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_BACK),disabled:this.standardViewsOff}),e(u,{key:"ad1d8915f046ba5df73240489c2daf1703b6a310",length:this.boxLength,face1Side:"top",face1Edge:"left",face2Side:"left",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"f0b94c0f3517d1f54cf0c23f74fa681607da3532",length:this.boxLength,face1Side:"bottom",face1Edge:"left",face2Side:"left",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"c814db371a4b47ba50084e69879845921eb6ba91",length:this.boxLength,face1Side:"top",face1Corner:"bottom-left",face2Side:"front",face2Corner:"top-left",face3Side:"left",face3Corner:"top-right",onPointerDown:this.handleStandardView(f.TOP_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"b0f81f620127d1533eeb675c66d74e1b3019cb3b",length:this.boxLength,face1Side:"top",face1Corner:"bottom-right",face2Side:"front",face2Corner:"top-right",face3Side:"right",face3Corner:"top-left",onPointerDown:this.handleStandardView(f.TOP_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{key:"254834f0214afa786b8997274e0dcbc4f1e5e31c",length:this.boxLength,face1Side:"bottom",face1Corner:"top-right",face2Side:"front",face2Corner:"bottom-right",face3Side:"right",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{key:"847425b3886582ddb596408fbfcd2fcd9e424641",length:this.boxLength,face1Side:"bottom",face1Corner:"top-left",face2Side:"front",face2Corner:"bottom-left",face3Side:"left",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"fe6eaffd1f06fe45a9fa3fb680d638f3623187aa",length:this.boxLength,face1Side:"top",face1Corner:"top-right",face2Side:"back",face2Corner:"top-left",face3Side:"right",face3Corner:"top-right",onPointerDown:this.handleStandardView(f.TOP_BACK_LEFT),disabled:this.standardViewsOff}),e(v,{key:"e4b8004047f4f1da2decc4b17d86297a67e38e9d",length:this.boxLength,face1Side:"top",face1Corner:"top-left",face2Side:"back",face2Corner:"top-right",face3Side:"left",face3Corner:"top-left",onPointerDown:this.handleStandardView(f.TOP_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"c06a8465a3b39828bf114faaa0039c8e32196441",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-left",face2Side:"back",face2Corner:"bottom-right",face3Side:"left",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(f.BOTTOM_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"2ea208573579fd18a3b7fde9f0bbc3a5834e2652",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-right",face2Side:"back",face2Corner:"bottom-left",face3Side:"right",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(f.BOTTOM_BACK_LEFT),disabled:this.standardViewsOff}))))}static get watchers(){return{viewer:[{handleViewerChanged:0}]}}};m.style=p();export{m as vertex_viewer_view_cube};
|
|
5
|
+
//# sourceMappingURL=p-35601c85.entry.js.map
|
|
@@ -0,0 +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","constructor","hostRef","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","hostRef","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","hostRef","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":[]}
|