@vertexvis/viewer 1.0.2-canary.2 → 1.0.2-canary.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/config-20ozv4y8.js.map +1 -1
- package/dist/cjs/controller-BhcNbaX_.js.map +1 -1
- package/dist/cjs/controller-CSwG6gbQ.js.map +1 -1
- package/dist/cjs/cursors-BZmDRtaZ.js.map +1 -1
- package/dist/cjs/dom-BBil4aN3.js.map +1 -1
- package/dist/cjs/dom-CvGkFQon.js.map +1 -1
- package/dist/cjs/entities-D6kgGria.js.map +1 -1
- package/dist/cjs/geometry_pb-BTko2Wi0.js.map +1 -1
- package/dist/cjs/grpc-BsWFEUrc.js.map +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/model-C9WvOKYT.js.map +1 -1
- package/dist/cjs/model-D17EQTIh.js.map +1 -1
- package/dist/cjs/model-DAB4oD5n.js.map +1 -1
- package/dist/cjs/model-DkXCzhs_.js.map +1 -1
- package/dist/cjs/multiElementInteractionHandler-BHvRKVIp.js.map +1 -1
- package/dist/cjs/overlays-B-06bUbI.js.map +1 -1
- package/dist/cjs/queries-Da9I-xMf.js.map +1 -1
- package/dist/cjs/regl-component-HhKCyGQ3.js.map +1 -1
- package/dist/cjs/representation_pb-CrCGjlyP.js.map +1 -1
- package/dist/cjs/results-1wRRZiYG.js.map +1 -1
- package/dist/cjs/row-Cet6xXup.js.map +1 -1
- package/dist/cjs/stencil-Hsr_8Chs.js.map +1 -1
- package/dist/cjs/streamAttributes-D_J-W8-2.js.map +1 -1
- package/dist/cjs/templates-DvjgjnlO.js.map +1 -1
- package/dist/cjs/util-DIJSIQXH.js.map +1 -1
- package/dist/cjs/utils-CibrnHQ4.js.map +1 -1
- package/dist/cjs/utils-D8MbXbwO.js.map +1 -1
- package/dist/cjs/utils-qErVs2Vt.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +6 -8
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
- package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +4 -5
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-walk-mode-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer.cjs.entry.js +9 -5
- package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
- package/dist/cjs/viewport-CG1VYkIU.js.map +1 -1
- package/dist/collection/components/scene-tree/errors.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/dom.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/errors.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/grpc.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/handlers.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/row.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/viewer-ops.js.map +1 -1
- package/dist/collection/components/scene-tree/scene-tree.js +2 -2
- package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
- package/dist/collection/components/scene-tree-search/scene-tree-search.js.map +1 -1
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +1 -1
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js.map +1 -1
- package/dist/collection/components/scene-tree-table-cell/utils.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/lib/dom.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/lib/window.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +5 -5
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js.map +1 -1
- package/dist/collection/components/viewer/utils.js.map +1 -1
- package/dist/collection/components/viewer/viewer.js +9 -5
- package/dist/collection/components/viewer/viewer.js.map +1 -1
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js +2 -2
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js.map +1 -1
- package/dist/collection/components/viewer-dom-element/utils.js.map +1 -1
- package/dist/collection/components/viewer-dom-element/viewer-dom-element.js +1 -1
- package/dist/collection/components/viewer-dom-element/viewer-dom-element.js.map +1 -1
- package/dist/collection/components/viewer-dom-group/utils.js.map +1 -1
- package/dist/collection/components/viewer-dom-group/viewer-dom-group.js +1 -1
- package/dist/collection/components/viewer-dom-group/viewer-dom-group.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer2d.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer3d.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/dom.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/indicator.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/plane.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/point.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js.map +1 -1
- package/dist/collection/components/viewer-icon/viewer-icon.js.map +1 -1
- package/dist/collection/components/viewer-markup/markup-utils.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup-components.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow-components.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.js.map +1 -1
- package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js.map +1 -1
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/hitTest.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/interactions.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/utils.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js.map +1 -1
- package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js +1 -1
- package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js.map +1 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +1 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js.map +1 -1
- package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js.map +1 -1
- package/dist/collection/components/viewer-pin-group/utils.js.map +1 -1
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +2 -2
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.js.map +1 -1
- package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
- package/dist/collection/components/viewer-pin-tool/utils.js.map +1 -1
- package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js +1 -1
- package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js.map +1 -1
- package/dist/collection/components/viewer-teleport-tool/viewer-teleport-tool.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/util.js +1 -2
- package/dist/collection/components/viewer-transform-widget/util.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js +3 -3
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/widget.js.map +1 -1
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.js +1 -1
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.js.map +1 -1
- package/dist/collection/components/viewer-walk-mode-tool/viewer-walk-mode-tool.js.map +1 -1
- package/dist/collection/lib/annotations/controller.js.map +1 -1
- package/dist/collection/lib/canvases/controller.js.map +1 -1
- package/dist/collection/lib/canvases/mapper.js.map +1 -1
- package/dist/collection/lib/config.js.map +1 -1
- package/dist/collection/lib/cursors.js.map +1 -1
- package/dist/collection/lib/dom.js.map +1 -1
- package/dist/collection/lib/grpc.js.map +1 -1
- package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/flyToPartKeyInteraction.js.map +1 -1
- package/dist/collection/lib/interactions/flyToPositionKeyInteraction.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApi.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiOrthographic.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiPerspective.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractions.js.map +1 -1
- package/dist/collection/lib/interactions/multiElementInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/multiPointerInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/multiTouchInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/pointerInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/tapInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/touchInteractionHandler.js.map +1 -1
- package/dist/collection/lib/keyBinding.js.map +1 -1
- package/dist/collection/lib/mappers/annotation.js.map +1 -1
- package/dist/collection/lib/mappers/camera.js.map +1 -1
- package/dist/collection/lib/mappers/color.js.map +1 -1
- package/dist/collection/lib/mappers/colorMaterial.js.map +1 -1
- package/dist/collection/lib/mappers/corePb.js.map +1 -1
- package/dist/collection/lib/mappers/corePbJs.js.map +1 -1
- package/dist/collection/lib/mappers/frameStreaming.js.map +1 -1
- package/dist/collection/lib/mappers/geometry.js.map +1 -1
- package/dist/collection/lib/mappers/material.js.map +1 -1
- package/dist/collection/lib/mappers/pagination.js.map +1 -1
- package/dist/collection/lib/mappers/scalar.js.map +1 -1
- package/dist/collection/lib/mappers/streamAttributes.js.map +1 -1
- package/dist/collection/lib/markup/interactions.js.map +1 -1
- package/dist/collection/lib/measurement/controller.js.map +1 -1
- package/dist/collection/lib/measurement/entities.js.map +1 -1
- package/dist/collection/lib/measurement/interactions.js.map +1 -1
- package/dist/collection/lib/measurement/mapper.js.map +1 -1
- package/dist/collection/lib/measurement/model.js.map +1 -1
- package/dist/collection/lib/measurement/overlays.js.map +1 -1
- package/dist/collection/lib/measurement/results.js.map +1 -1
- package/dist/collection/lib/meters.js.map +1 -1
- package/dist/collection/lib/model-views/controller.js.map +1 -1
- package/dist/collection/lib/model-views/mapper.js.map +1 -1
- package/dist/collection/lib/pins/controller.js.map +1 -1
- package/dist/collection/lib/pins/interactions.js.map +1 -1
- package/dist/collection/lib/pmi/controller.js.map +1 -1
- package/dist/collection/lib/pmi/mapper.js.map +1 -1
- package/dist/collection/lib/rendering/canvas.js.map +1 -1
- package/dist/collection/lib/rendering/imageLoaders.js.map +1 -1
- package/dist/collection/lib/rendering/matrices.js.map +1 -1
- package/dist/collection/lib/rendering/timing.js.map +1 -1
- package/dist/collection/lib/rendering/utils.js.map +1 -1
- package/dist/collection/lib/rendering/vectors.js.map +1 -1
- package/dist/collection/lib/scene-items/controller.js.map +1 -1
- package/dist/collection/lib/scene-items/mapper.js.map +1 -1
- package/dist/collection/lib/scenes/camera.js.map +1 -1
- package/dist/collection/lib/scenes/cameraRenderResult.js.map +1 -1
- package/dist/collection/lib/scenes/colorMaterial.js.map +1 -1
- package/dist/collection/lib/scenes/crossSectioner.js.map +1 -1
- package/dist/collection/lib/scenes/mapper.js.map +1 -1
- package/dist/collection/lib/scenes/operations.js.map +1 -1
- package/dist/collection/lib/scenes/queries.js.map +1 -1
- package/dist/collection/lib/scenes/raycaster.js.map +1 -1
- package/dist/collection/lib/scenes/scene.js.map +1 -1
- package/dist/collection/lib/scenes/sceneOperationExecuteResult.js.map +1 -1
- package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
- package/dist/collection/lib/stencil.js.map +1 -1
- package/dist/collection/lib/storage.js.map +1 -1
- package/dist/collection/lib/stream/dispatcher.js.map +1 -1
- package/dist/collection/lib/stream/stream.js.map +1 -1
- package/dist/collection/lib/stream/utils.js.map +1 -1
- package/dist/collection/lib/teleportation/interactions.js.map +1 -1
- package/dist/collection/lib/templates.js.map +1 -1
- package/dist/collection/lib/token.js.map +1 -1
- package/dist/collection/lib/transforms/axis-lines.js.map +1 -1
- package/dist/collection/lib/transforms/axis-rotation.js.map +1 -1
- package/dist/collection/lib/transforms/axis-translation.js.map +1 -1
- package/dist/collection/lib/transforms/controller.js.map +1 -1
- package/dist/collection/lib/transforms/drawable.js.map +1 -1
- package/dist/collection/lib/transforms/hits.js.map +1 -1
- package/dist/collection/lib/transforms/line.js.map +1 -1
- package/dist/collection/lib/transforms/mesh.js.map +1 -1
- package/dist/collection/lib/transforms/shape.js.map +1 -1
- package/dist/collection/lib/transforms/transformation-delta.js.map +1 -1
- package/dist/collection/lib/transforms/util.js.map +1 -1
- package/dist/collection/lib/types/clippingPlanes.js.map +1 -1
- package/dist/collection/lib/types/depthBuffer.js.map +1 -1
- package/dist/collection/lib/types/featureMap.js.map +1 -1
- package/dist/collection/lib/types/flags.js.map +1 -1
- package/dist/collection/lib/types/frame.js.map +1 -1
- package/dist/collection/lib/types/frameCamera.js.map +1 -1
- package/dist/collection/lib/types/loadableResource.js.map +1 -1
- package/dist/collection/lib/types/orientation.js.map +1 -1
- package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
- package/dist/collection/lib/types/standardView.js.map +1 -1
- package/dist/collection/lib/types/stencilBuffer.js.map +1 -1
- package/dist/collection/lib/types/synchronizedClock.js.map +1 -1
- package/dist/collection/lib/types/viewport.js.map +1 -1
- package/dist/collection/lib/visibilityObserver.js.map +1 -1
- package/dist/collection/lib/volume-intersection/controller.js.map +1 -1
- package/dist/collection/lib/volume-intersection/interactions.js.map +1 -1
- package/dist/collection/lib/volume-intersection/model.js.map +1 -1
- package/dist/collection/lib/walk-mode/controller.js.map +1 -1
- package/dist/collection/lib/walk-mode/interactions.js.map +1 -1
- package/dist/collection/lib/walk-mode/model.js.map +1 -1
- package/dist/collection/lib/webgl/regl-component.js.map +1 -1
- package/dist/collection/testing/annotations.js.map +1 -1
- package/dist/collection/testing/canvases.js.map +1 -1
- package/dist/collection/testing/colors.js.map +1 -1
- package/dist/collection/testing/eventually.js.map +1 -1
- package/dist/collection/testing/fixtures.js.map +1 -1
- package/dist/collection/testing/grpc.js +3 -9
- package/dist/collection/testing/grpc.js.map +1 -1
- package/dist/collection/testing/modelViews.js.map +1 -1
- package/dist/collection/testing/pmi.js.map +1 -1
- package/dist/collection/testing/random.js.map +1 -1
- package/dist/collection/testing/resizeObserver.js.map +1 -1
- package/dist/collection/testing/scene-items-helper.js.map +1 -1
- package/dist/collection/testing/sceneTree.js.map +1 -1
- package/dist/collection/testing/viewer.js.map +1 -1
- package/dist/collection/testing/webgl.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-St4ctu2K.js → p-3-bKfpqr.js} +2 -2
- package/dist/components/{p-St4ctu2K.js.map → p-3-bKfpqr.js.map} +1 -1
- package/dist/components/p-3DqRAYgO.js.map +1 -1
- package/dist/components/p-B-ToCp8-.js.map +1 -1
- package/dist/components/p-B156bTbY.js +5 -0
- package/dist/components/p-B156bTbY.js.map +1 -0
- package/dist/components/p-B9R0QWr4.js.map +1 -1
- package/dist/components/p-BCOD9yfw.js.map +1 -1
- package/dist/components/p-BHAaIoH5.js.map +1 -1
- package/dist/components/{p-Doltf1wO.js → p-BOJJZ1cN.js} +2 -2
- package/dist/components/p-BOJJZ1cN.js.map +1 -0
- package/dist/components/p-BkHp-aAR.js.map +1 -1
- package/dist/components/p-Bkm6H5uq.js.map +1 -1
- package/dist/components/p-C-VWDW9n.js.map +1 -1
- package/dist/components/p-C79PxobX.js.map +1 -1
- package/dist/components/p-CAugdB_8.js.map +1 -1
- package/dist/components/p-CEzVEgdQ.js.map +1 -1
- package/dist/components/p-CGCJ5hbJ.js.map +1 -1
- package/dist/components/p-COlcifvm.js.map +1 -1
- package/dist/components/p-CXTH3zrN.js.map +1 -1
- package/dist/components/p-CZCXdo3t.js.map +1 -1
- package/dist/components/p-Cd7kap5W.js.map +1 -1
- package/dist/components/p-CiSHWNC4.js.map +1 -1
- package/dist/components/p-CjG1fMh1.js.map +1 -1
- package/dist/components/p-CkjXRDNL.js.map +1 -1
- package/dist/components/p-D0KZu516.js.map +1 -1
- package/dist/components/p-D12q-fpW.js.map +1 -1
- package/dist/components/p-D33gVA2W.js.map +1 -1
- package/dist/components/p-DC86ZXai.js.map +1 -1
- package/dist/components/{p-B80hfIq6.js → p-DF4kEsJU.js} +2 -2
- package/dist/components/p-DF4kEsJU.js.map +1 -0
- package/dist/components/p-DRh4_Z-g.js.map +1 -1
- package/dist/components/p-DRnMrHWY.js.map +1 -1
- package/dist/components/{p-b0ZzPHz8.js → p-DUC59SSO.js} +2 -2
- package/dist/components/p-DUC59SSO.js.map +1 -0
- package/dist/components/p-DVW2WZTq.js.map +1 -1
- package/dist/components/p-DZI8pnGz.js.map +1 -1
- package/dist/components/p-Dbz9yUqC.js.map +1 -1
- package/dist/components/p-Yfi0i5Kj.js.map +1 -1
- package/dist/components/p-abSJ29r7.js.map +1 -1
- package/dist/components/p-ahjMltGJ.js.map +1 -1
- package/dist/components/p-bal2RLiw.js.map +1 -1
- package/dist/components/{p-BopQW1sA.js → p-oK38ynrd.js} +2 -2
- package/dist/components/p-oK38ynrd.js.map +1 -0
- package/dist/components/vertex-scene-tree-table-cell.js +1 -1
- package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
- package/dist/components/vertex-scene-tree-table-layout.js +1 -1
- package/dist/components/vertex-scene-tree.js +1 -1
- package/dist/components/vertex-scene-tree.js.map +1 -1
- package/dist/components/vertex-viewer-box-query-tool.js +1 -1
- package/dist/components/vertex-viewer-box-query-tool.js.map +1 -1
- package/dist/components/vertex-viewer-dom-element.js +1 -1
- package/dist/components/vertex-viewer-dom-group.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js.map +1 -1
- package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
- package/dist/components/vertex-viewer-markup.js +1 -1
- package/dist/components/vertex-viewer-markup.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-details.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-line.js +1 -1
- package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
- package/dist/components/vertex-viewer-measurement-precise.js +1 -1
- package/dist/components/vertex-viewer-measurement-precise.js.map +1 -1
- package/dist/components/vertex-viewer-pin-group.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js.map +1 -1
- package/dist/components/vertex-viewer-transform-widget.js +1 -1
- package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
- package/dist/components/vertex-viewer-view-cube.js +1 -1
- package/dist/components/vertex-viewer-view-cube.js.map +1 -1
- package/dist/components/vertex-viewer-walk-mode-tool.js.map +1 -1
- package/dist/components/vertex-viewer.js +1 -1
- package/dist/components/vertex-viewer.js.map +1 -1
- package/dist/esm/config-lglER3mU.js.map +1 -1
- package/dist/esm/controller-BMWGs-I6.js.map +1 -1
- package/dist/esm/controller-Iymb_J2R.js.map +1 -1
- package/dist/esm/cursors-BbBDEutb.js.map +1 -1
- package/dist/esm/dom-B3m2VjbN.js.map +1 -1
- package/dist/esm/dom-DX6pEG54.js.map +1 -1
- package/dist/esm/entities-zRken6VS.js.map +1 -1
- package/dist/esm/geometry_pb-BiZRfctN.js.map +1 -1
- package/dist/esm/grpc-CZAYqbTu.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model-BYW5YIye.js.map +1 -1
- package/dist/esm/model-CLtwOS0o.js.map +1 -1
- package/dist/esm/model-D0EJdHmW.js.map +1 -1
- package/dist/esm/model-DHJ5aE4y.js.map +1 -1
- package/dist/esm/multiElementInteractionHandler-DwjL-r55.js.map +1 -1
- package/dist/esm/overlays-BE1oqniA.js.map +1 -1
- package/dist/esm/queries-DEzCmbTD.js.map +1 -1
- package/dist/esm/regl-component-DmkowWhg.js.map +1 -1
- package/dist/esm/representation_pb-g4f0WC4k.js.map +1 -1
- package/dist/esm/results-CFB6nKu8.js.map +1 -1
- package/dist/esm/row-CiSHWNC4.js.map +1 -1
- package/dist/esm/stencil-BV-7pO4q.js.map +1 -1
- package/dist/esm/streamAttributes-Cp8PEH9A.js.map +1 -1
- package/dist/esm/templates-DRh4_Z-g.js.map +1 -1
- package/dist/esm/util-BCZZYmp4.js.map +1 -1
- package/dist/esm/utils-BvZ9-fs0.js.map +1 -1
- package/dist/esm/utils-DC86ZXai.js.map +1 -1
- package/dist/esm/utils-D_pIldrS.js.map +1 -1
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +6 -8
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +2 -2
- package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-box-query-tool.entry.js +2 -2
- package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-icon.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-details.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-distance.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-precise.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-group.entry.js +2 -2
- package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-teleport-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-transform-widget.entry.js +4 -5
- package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-walk-mode-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer.entry.js +9 -5
- package/dist/esm/vertex-viewer.entry.js.map +1 -1
- package/dist/esm/viewport-C8WQZxvx.js.map +1 -1
- package/dist/types/regl-shape.d.ts +1 -1
- package/dist/viewer/index.esm.js.map +1 -1
- package/dist/viewer/{p-eac63070.entry.js → p-051b5154.entry.js} +2 -2
- package/dist/viewer/p-051b5154.entry.js.map +1 -0
- package/dist/viewer/{p-3d3a7eeb.entry.js → p-0984c51f.entry.js} +2 -2
- package/dist/viewer/{p-3d3a7eeb.entry.js.map → p-0984c51f.entry.js.map} +1 -1
- package/dist/viewer/{p-864f40c7.entry.js → p-11cf755a.entry.js} +2 -2
- package/dist/viewer/p-11cf755a.entry.js.map +1 -0
- package/dist/viewer/{p-29d14611.entry.js → p-16775f7d.entry.js} +2 -2
- package/dist/viewer/p-16775f7d.entry.js.map +1 -0
- package/dist/viewer/{p-5a85cae5.entry.js → p-1eb636f8.entry.js} +2 -2
- package/dist/viewer/p-1eb636f8.entry.js.map +1 -0
- package/dist/viewer/{p-e993f300.entry.js → p-228d1d43.entry.js} +2 -2
- package/dist/viewer/p-228d1d43.entry.js.map +1 -0
- package/dist/viewer/p-33f44cc1.entry.js.map +1 -1
- package/dist/viewer/{p-3300d3dc.entry.js → p-35601c85.entry.js} +2 -2
- package/dist/viewer/p-35601c85.entry.js.map +1 -0
- package/dist/viewer/p-47766566.entry.js.map +1 -1
- package/dist/viewer/p-6e3a6bbd.entry.js.map +1 -1
- package/dist/viewer/p-7f388b45.entry.js.map +1 -1
- package/dist/viewer/p-89544066.entry.js.map +1 -1
- package/dist/viewer/{p-07b99ac9.entry.js → p-8c369777.entry.js} +2 -2
- package/dist/viewer/p-8c369777.entry.js.map +1 -0
- package/dist/viewer/{p-e59983dc.entry.js → p-9835c5e2.entry.js} +2 -2
- package/dist/viewer/p-9835c5e2.entry.js.map +1 -0
- package/dist/viewer/{p-aa95e21a.entry.js → p-9d8ff406.entry.js} +2 -2
- package/dist/viewer/p-9d8ff406.entry.js.map +1 -0
- package/dist/viewer/p-BDvACHun.js.map +1 -1
- package/dist/viewer/p-BIkuvTVH.js.map +1 -1
- package/dist/viewer/p-BRPkbTVP.js.map +1 -1
- package/dist/viewer/p-BsBIynwj.js.map +1 -1
- package/dist/viewer/p-BxtKMwBH.js.map +1 -1
- package/dist/viewer/p-C4y4Noe-.js.map +1 -1
- package/dist/viewer/p-C6KrfydC.js.map +1 -1
- package/dist/viewer/p-C7dYsPFU.js.map +1 -1
- package/dist/viewer/p-C9Cqbq6H.js.map +1 -1
- package/dist/viewer/p-CVWO4w6b.js.map +1 -1
- package/dist/viewer/p-ChqXy0cG.js.map +1 -1
- package/dist/viewer/p-CiSHWNC4.js.map +1 -1
- package/dist/viewer/p-CjG1fMh1.js.map +1 -1
- package/dist/viewer/p-Cs5KOvOQ.js.map +1 -1
- package/dist/viewer/p-CyGlYje2.js.map +1 -1
- package/dist/viewer/p-D6eJC1q4.js.map +1 -1
- package/dist/viewer/p-DC86ZXai.js.map +1 -1
- package/dist/viewer/p-DRh4_Z-g.js.map +1 -1
- package/dist/viewer/p-DUX5FvBC.js.map +1 -1
- package/dist/viewer/p-DX6pEG54.js.map +1 -1
- package/dist/viewer/p-D_ixWHO7.js.map +1 -1
- package/dist/viewer/p-DacE-wPp.js.map +1 -1
- package/dist/viewer/p-Dp56p_jX.js.map +1 -1
- package/dist/viewer/p-EsKoKfmx.js.map +1 -1
- package/dist/viewer/p-F8e15or2.js.map +1 -1
- package/dist/viewer/p-Jfxh0jq9.js.map +1 -1
- package/dist/viewer/p-WPRMWirY.js.map +1 -1
- package/dist/viewer/p-_93RRNxT.js.map +1 -1
- package/dist/viewer/p-a8a81cba.entry.js +5 -0
- package/dist/viewer/p-a8a81cba.entry.js.map +1 -0
- package/dist/viewer/p-a9282481.entry.js.map +1 -1
- package/dist/viewer/{p-63f4f702.entry.js → p-c7e62d66.entry.js} +2 -2
- package/dist/viewer/p-c7e62d66.entry.js.map +1 -0
- package/dist/viewer/p-d37e647b.entry.js.map +1 -1
- package/dist/viewer/{p-302f2078.entry.js → p-d9fe788f.entry.js} +2 -2
- package/dist/viewer/p-d9fe788f.entry.js.map +1 -0
- package/dist/viewer/p-e9b83dae.entry.js.map +1 -1
- package/dist/viewer/{p-70f3629d.entry.js → p-f271dc4a.entry.js} +2 -2
- package/dist/viewer/p-f271dc4a.entry.js.map +1 -0
- package/dist/viewer/p-f65c0769.entry.js.map +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +7 -7
- package/dist/components/p-B80hfIq6.js.map +0 -1
- package/dist/components/p-BopQW1sA.js.map +0 -1
- package/dist/components/p-DNtS2F8J.js +0 -5
- package/dist/components/p-DNtS2F8J.js.map +0 -1
- package/dist/components/p-Doltf1wO.js.map +0 -1
- package/dist/components/p-b0ZzPHz8.js.map +0 -1
- package/dist/viewer/p-07b99ac9.entry.js.map +0 -1
- package/dist/viewer/p-29d14611.entry.js.map +0 -1
- package/dist/viewer/p-302f2078.entry.js.map +0 -1
- package/dist/viewer/p-3300d3dc.entry.js.map +0 -1
- package/dist/viewer/p-5a85cae5.entry.js.map +0 -1
- package/dist/viewer/p-60c915e3.entry.js +0 -5
- package/dist/viewer/p-60c915e3.entry.js.map +0 -1
- package/dist/viewer/p-63f4f702.entry.js.map +0 -1
- package/dist/viewer/p-70f3629d.entry.js.map +0 -1
- package/dist/viewer/p-864f40c7.entry.js.map +0 -1
- package/dist/viewer/p-aa95e21a.entry.js.map +0 -1
- package/dist/viewer/p-e59983dc.entry.js.map +0 -1
- package/dist/viewer/p-e993f300.entry.js.map +0 -1
- package/dist/viewer/p-eac63070.entry.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["MeasurementInteractionHandler","elementRect","this","rectObserver","rect","constructor","controller","measurableEntityTypes","ElementRectObserver","handlePointerMove","async","event","isMeasurableEntityUnderPointer","clearCursor","addCursor","measurementWithArrowCursor","handlePointerDown","ifNoInteraction","measureEntityUnderPointer","clearEntities","initialize","element","api","observe","addEventListener","dispose","disconnect","_a","measurementInteraction","_b","removeEventListener","_c","undefined","cursor","ifInitialized","pt","getMouseClientPosition","type","getEntityTypeAtPoint","includes","hit","hitItems","entity","MeasurementEntity","fromHit","addEntity","f","Error","startPos","Point","create","clientX","clientY","didInteract","handleMouseMove","pos","dis","distance","handleMouseUp","window","viewerMeasurementPreciseCss","ViewerMeasurementPrecise","__stencil_proxyCustomElement","HTMLElement","registerHost","measurementModel","MeasurementModel","measurementOverlays","MeasurementOverlayManager","EntityType","PRECISE_SURFACE","IMPRECISE_SURFACE","configEnv","connectedCallback","setupInteractionHandler","componentWillLoad","setupController","disconnectedCallback","clearInteractionHandler","handleMeasurableEntityTypesChanged","handleMeasurementControllerChanged","handleMeasurementModelChanged","handleViewerChanged","render","h","Host","key","viewer","config","parseAndValidateConfig","client","SceneViewAPIClient","network","sceneViewHost","measurementController","MeasurementController","token","deviceId","registeredInteractionHandler","then","handler","registerInteractionHandler"],"sources":["src/lib/measurement/interactions.ts","src/components/viewer-measurement-precise/viewer-measurement-precise.css?tag=vertex-viewer-measurement-precise&encapsulation=shadow","src/components/viewer-measurement-precise/viewer-measurement-precise.tsx"],"sourcesContent":["import { Point } from '@vertexvis/geometry';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Cursor, measurementWithArrowCursor } from '../cursors';\nimport { getMouseClientPosition } from '../dom';\nimport { ElementRectObserver } from '../elementRectObserver';\nimport { InteractionApi, InteractionHandler } from '../interactions';\nimport { EntityType } from '../types';\nimport { MeasurementController } from './controller';\nimport { MeasurementEntity } from './entities';\n\nexport class MeasurementInteractionHandler implements InteractionHandler {\n private controller: MeasurementController;\n private measurableEntityTypes: EntityType[];\n\n private element?: HTMLElement;\n private api?: InteractionApi;\n\n private cursor?: Disposable;\n private measurementInteraction?: InteractionHandler;\n\n private rectObserver = new ElementRectObserver();\n private get elementRect(): DOMRect | undefined {\n return this.rectObserver.rect;\n }\n\n public constructor(\n controller: MeasurementController,\n measurableEntityTypes: EntityType[]\n ) {\n this.controller = controller;\n this.measurableEntityTypes = measurableEntityTypes;\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.rectObserver.observe(element);\n\n element.addEventListener('pointermove', this.handlePointerMove);\n element.addEventListener('pointerdown', this.handlePointerDown);\n }\n\n public dispose(): void {\n this.rectObserver.disconnect();\n this.measurementInteraction?.dispose();\n this.clearCursor();\n\n this.element?.removeEventListener('pointermove', this.handlePointerMove);\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n\n this.element = undefined;\n this.api = undefined;\n }\n\n private addCursor(cursor: Cursor): void {\n this.cursor = this.ifInitialized(({ api }) => api.addCursor(cursor));\n }\n\n private clearCursor(): void {\n this.cursor?.dispose();\n this.cursor = undefined;\n }\n\n private handlePointerMove = async (event: PointerEvent): Promise<void> => {\n if (await this.isMeasurableEntityUnderPointer(event)) {\n this.clearCursor();\n this.addCursor(measurementWithArrowCursor);\n } else {\n this.clearCursor();\n }\n };\n\n private handlePointerDown = (event: PointerEvent): void => {\n this.ifNoInteraction(event, async () => {\n if (await this.isMeasurableEntityUnderPointer(event)) {\n this.measureEntityUnderPointer(event);\n } else {\n await this.controller.clearEntities();\n }\n });\n };\n\n private async isMeasurableEntityUnderPointer(\n event: PointerEvent\n ): Promise<boolean> {\n const pt = getMouseClientPosition(event, this.elementRect);\n const type = await this.api?.getEntityTypeAtPoint(pt);\n return type != null && this.measurableEntityTypes.includes(type);\n }\n\n private measureEntityUnderPointer(event: PointerEvent): void {\n this.ifInitialized(async ({ api }) => {\n const pt = getMouseClientPosition(event, this.elementRect);\n const [hit] = await api.hitItems(pt);\n const entity = hit != null ? MeasurementEntity.fromHit(hit) : undefined;\n\n if (entity != null) {\n await this.controller.addEntity(entity);\n } else {\n await this.controller.clearEntities();\n }\n });\n }\n\n protected ifInitialized<R>(\n f: (data: { element: HTMLElement; api: InteractionApi }) => R\n ): R {\n if (this.element != null && this.api != null) {\n return f({ element: this.element, api: this.api });\n } else {\n throw new Error('Measurement interaction handler not initialized.');\n }\n }\n\n protected ifNoInteraction(\n event: PointerEvent,\n f: () => void | Promise<void>\n ): void {\n const startPos = Point.create(event.clientX, event.clientY);\n let didInteract = false;\n\n const handleMouseMove = (event: PointerEvent): void => {\n const pos = Point.create(event.clientX, event.clientY);\n const dis = Point.distance(startPos, pos);\n didInteract = dis > 2;\n };\n\n const handleMouseUp = (): void => {\n window.removeEventListener('pointermove', handleMouseMove);\n window.removeEventListener('pointerup', handleMouseUp);\n\n if (!didInteract) {\n f();\n }\n };\n\n window.addEventListener('pointermove', handleMouseMove);\n window.addEventListener('pointerup', handleMouseUp);\n }\n}\n",":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Component, h, Host, JSX, Prop, State, Watch } from '@stencil/core';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { parseAndValidateConfig, PartialConfig } from '../../lib/config';\nimport { Environment } from '../../lib/environment';\nimport {\n MeasurementController,\n MeasurementModel,\n MeasurementOverlayManager,\n} from '../../lib/measurement';\nimport { MeasurementInteractionHandler } from '../../lib/measurement/interactions';\nimport { EntityType } from '../../lib/types';\n\n@Component({\n tag: 'vertex-viewer-measurement-precise',\n styleUrl: 'viewer-measurement-precise.css',\n shadow: true,\n})\nexport class ViewerMeasurementPrecise {\n /**\n * The model that contains the entities and outcomes from performing precise\n * measurements.\n */\n @Prop()\n public measurementModel: MeasurementModel = new MeasurementModel();\n\n /**\n * The manager that is responsible for measurement overlays to present by this\n * component.\n */\n @Prop()\n public measurementOverlays: MeasurementOverlayManager =\n new MeasurementOverlayManager();\n\n /**\n * The controller that is responsible for performing measurements and updating\n * the model.\n */\n @Prop({ mutable: true })\n public measurementController?: MeasurementController;\n\n /**\n * @internal\n *\n * An internal property that can be used to opt-in to performing measurements\n * on other types of entities.\n */\n @Prop()\n public measurableEntityTypes: EntityType[] = [\n EntityType.PRECISE_SURFACE,\n EntityType.IMPRECISE_SURFACE,\n ];\n\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 environment that will be used to request measurement results.\n */\n @Prop()\n public configEnv: Environment = 'platprod';\n\n /**\n * An optional configuration to setup network configuration of measurement\n * endpoints.\n */\n @Prop()\n public config?: PartialConfig | string;\n\n private registeredInteractionHandler?: Promise<Disposable>;\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('measurableEntityTypes')\n protected handleMeasurableEntityTypesChanged(): void {\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('measurementController')\n protected handleMeasurementControllerChanged(): void {\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('measurementModel', { immediate: true })\n protected handleMeasurementModelChanged(): void {\n this.setupController();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected render(): JSX.Element {\n return (\n <Host>\n <vertex-viewer-measurement-overlays\n viewer={this.viewer}\n measurementOverlays={this.measurementOverlays}\n />\n </Host>\n );\n }\n\n private setupController(): void {\n const config = parseAndValidateConfig(this.configEnv, this.config);\n const client = new SceneViewAPIClient(config.network.sceneViewHost);\n this.measurementController = new MeasurementController(\n this.measurementModel,\n client,\n () => this.viewer?.token,\n this.viewer?.deviceId\n );\n }\n\n private clearInteractionHandler(): void {\n this.registeredInteractionHandler?.then((handler) => handler.dispose());\n this.registeredInteractionHandler = undefined;\n }\n\n private setupInteractionHandler(): void {\n this.clearInteractionHandler();\n\n if (this.measurementController != null) {\n this.registeredInteractionHandler =\n this.viewer?.registerInteractionHandler(\n new MeasurementInteractionHandler(\n this.measurementController,\n this.measurableEntityTypes\n )\n );\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["MeasurementInteractionHandler","elementRect","this","rectObserver","rect","constructor","controller","measurableEntityTypes","ElementRectObserver","handlePointerMove","async","event","isMeasurableEntityUnderPointer","clearCursor","addCursor","measurementWithArrowCursor","handlePointerDown","ifNoInteraction","measureEntityUnderPointer","clearEntities","initialize","element","api","observe","addEventListener","dispose","disconnect","_a","measurementInteraction","_b","removeEventListener","_c","undefined","cursor","ifInitialized","pt","getMouseClientPosition","type","getEntityTypeAtPoint","includes","hit","hitItems","entity","MeasurementEntity","fromHit","addEntity","f","Error","startPos","Point","create","clientX","clientY","didInteract","handleMouseMove","pos","dis","distance","handleMouseUp","window","viewerMeasurementPreciseCss","ViewerMeasurementPrecise","__stencil_proxyCustomElement","HTMLElement","registerHost","measurementModel","MeasurementModel","measurementOverlays","MeasurementOverlayManager","EntityType","PRECISE_SURFACE","IMPRECISE_SURFACE","configEnv","connectedCallback","setupInteractionHandler","componentWillLoad","setupController","disconnectedCallback","clearInteractionHandler","handleMeasurableEntityTypesChanged","handleMeasurementControllerChanged","handleMeasurementModelChanged","handleViewerChanged","render","h","Host","key","viewer","config","parseAndValidateConfig","client","SceneViewAPIClient","network","sceneViewHost","measurementController","MeasurementController","token","deviceId","registeredInteractionHandler","then","handler","registerInteractionHandler"],"sources":["src/lib/measurement/interactions.ts","src/components/viewer-measurement-precise/viewer-measurement-precise.css?tag=vertex-viewer-measurement-precise&encapsulation=shadow","src/components/viewer-measurement-precise/viewer-measurement-precise.tsx"],"sourcesContent":["import { Point } from '@vertexvis/geometry';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { Cursor, measurementWithArrowCursor } from '../cursors';\nimport { getMouseClientPosition } from '../dom';\nimport { ElementRectObserver } from '../elementRectObserver';\nimport { InteractionApi, InteractionHandler } from '../interactions';\nimport { EntityType } from '../types';\nimport { MeasurementController } from './controller';\nimport { MeasurementEntity } from './entities';\n\nexport class MeasurementInteractionHandler implements InteractionHandler {\n private controller: MeasurementController;\n private measurableEntityTypes: EntityType[];\n\n private element?: HTMLElement;\n private api?: InteractionApi;\n\n private cursor?: Disposable;\n private measurementInteraction?: InteractionHandler;\n\n private rectObserver = new ElementRectObserver();\n private get elementRect(): DOMRect | undefined {\n return this.rectObserver.rect;\n }\n\n public constructor(\n controller: MeasurementController,\n measurableEntityTypes: EntityType[],\n ) {\n this.controller = controller;\n this.measurableEntityTypes = measurableEntityTypes;\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.rectObserver.observe(element);\n\n element.addEventListener('pointermove', this.handlePointerMove);\n element.addEventListener('pointerdown', this.handlePointerDown);\n }\n\n public dispose(): void {\n this.rectObserver.disconnect();\n this.measurementInteraction?.dispose();\n this.clearCursor();\n\n this.element?.removeEventListener('pointermove', this.handlePointerMove);\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n\n this.element = undefined;\n this.api = undefined;\n }\n\n private addCursor(cursor: Cursor): void {\n this.cursor = this.ifInitialized(({ api }) => api.addCursor(cursor));\n }\n\n private clearCursor(): void {\n this.cursor?.dispose();\n this.cursor = undefined;\n }\n\n private handlePointerMove = async (event: PointerEvent): Promise<void> => {\n if (await this.isMeasurableEntityUnderPointer(event)) {\n this.clearCursor();\n this.addCursor(measurementWithArrowCursor);\n } else {\n this.clearCursor();\n }\n };\n\n private handlePointerDown = (event: PointerEvent): void => {\n this.ifNoInteraction(event, async () => {\n if (await this.isMeasurableEntityUnderPointer(event)) {\n this.measureEntityUnderPointer(event);\n } else {\n await this.controller.clearEntities();\n }\n });\n };\n\n private async isMeasurableEntityUnderPointer(\n event: PointerEvent,\n ): Promise<boolean> {\n const pt = getMouseClientPosition(event, this.elementRect);\n const type = await this.api?.getEntityTypeAtPoint(pt);\n return type != null && this.measurableEntityTypes.includes(type);\n }\n\n private measureEntityUnderPointer(event: PointerEvent): void {\n this.ifInitialized(async ({ api }) => {\n const pt = getMouseClientPosition(event, this.elementRect);\n const [hit] = await api.hitItems(pt);\n const entity = hit != null ? MeasurementEntity.fromHit(hit) : undefined;\n\n if (entity != null) {\n await this.controller.addEntity(entity);\n } else {\n await this.controller.clearEntities();\n }\n });\n }\n\n protected ifInitialized<R>(\n f: (data: { element: HTMLElement; api: InteractionApi }) => R,\n ): R {\n if (this.element != null && this.api != null) {\n return f({ element: this.element, api: this.api });\n } else {\n throw new Error('Measurement interaction handler not initialized.');\n }\n }\n\n protected ifNoInteraction(\n event: PointerEvent,\n f: () => void | Promise<void>,\n ): void {\n const startPos = Point.create(event.clientX, event.clientY);\n let didInteract = false;\n\n const handleMouseMove = (event: PointerEvent): void => {\n const pos = Point.create(event.clientX, event.clientY);\n const dis = Point.distance(startPos, pos);\n didInteract = dis > 2;\n };\n\n const handleMouseUp = (): void => {\n window.removeEventListener('pointermove', handleMouseMove);\n window.removeEventListener('pointerup', handleMouseUp);\n\n if (!didInteract) {\n f();\n }\n };\n\n window.addEventListener('pointermove', handleMouseMove);\n window.addEventListener('pointerup', handleMouseUp);\n }\n}\n",":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Component, h, Host, JSX, Prop, State, Watch } from '@stencil/core';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { parseAndValidateConfig, PartialConfig } from '../../lib/config';\nimport { Environment } from '../../lib/environment';\nimport {\n MeasurementController,\n MeasurementModel,\n MeasurementOverlayManager,\n} from '../../lib/measurement';\nimport { MeasurementInteractionHandler } from '../../lib/measurement/interactions';\nimport { EntityType } from '../../lib/types';\n\n@Component({\n tag: 'vertex-viewer-measurement-precise',\n styleUrl: 'viewer-measurement-precise.css',\n shadow: true,\n})\nexport class ViewerMeasurementPrecise {\n /**\n * The model that contains the entities and outcomes from performing precise\n * measurements.\n */\n @Prop()\n public measurementModel: MeasurementModel = new MeasurementModel();\n\n /**\n * The manager that is responsible for measurement overlays to present by this\n * component.\n */\n @Prop()\n public measurementOverlays: MeasurementOverlayManager =\n new MeasurementOverlayManager();\n\n /**\n * The controller that is responsible for performing measurements and updating\n * the model.\n */\n @Prop({ mutable: true })\n public measurementController?: MeasurementController;\n\n /**\n * @internal\n *\n * An internal property that can be used to opt-in to performing measurements\n * on other types of entities.\n */\n @Prop()\n public measurableEntityTypes: EntityType[] = [\n EntityType.PRECISE_SURFACE,\n EntityType.IMPRECISE_SURFACE,\n ];\n\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 environment that will be used to request measurement results.\n */\n @Prop()\n public configEnv: Environment = 'platprod';\n\n /**\n * An optional configuration to setup network configuration of measurement\n * endpoints.\n */\n @Prop()\n public config?: PartialConfig | string;\n\n private registeredInteractionHandler?: Promise<Disposable>;\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('measurableEntityTypes')\n protected handleMeasurableEntityTypesChanged(): void {\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('measurementController')\n protected handleMeasurementControllerChanged(): void {\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('measurementModel', { immediate: true })\n protected handleMeasurementModelChanged(): void {\n this.setupController();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected render(): JSX.Element {\n return (\n <Host>\n <vertex-viewer-measurement-overlays\n viewer={this.viewer}\n measurementOverlays={this.measurementOverlays}\n />\n </Host>\n );\n }\n\n private setupController(): void {\n const config = parseAndValidateConfig(this.configEnv, this.config);\n const client = new SceneViewAPIClient(config.network.sceneViewHost);\n this.measurementController = new MeasurementController(\n this.measurementModel,\n client,\n () => this.viewer?.token,\n this.viewer?.deviceId,\n );\n }\n\n private clearInteractionHandler(): void {\n this.registeredInteractionHandler?.then((handler) => handler.dispose());\n this.registeredInteractionHandler = undefined;\n }\n\n private setupInteractionHandler(): void {\n this.clearInteractionHandler();\n\n if (this.measurementController != null) {\n this.registeredInteractionHandler =\n this.viewer?.registerInteractionHandler(\n new MeasurementInteractionHandler(\n this.measurementController,\n this.measurableEntityTypes,\n ),\n );\n }\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{V as
|
|
4
|
+
import{V as s,d as o}from"./p-DF4kEsJU.js";const t=s;const p=o;export{t as VertexViewerPinGroup,p as defineCustomElement};
|
|
5
5
|
//# sourceMappingURL=vertex-viewer-pin-group.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{t as i,p as t,H as e,h as s,e as n}from"./p-Bb32XUUS.js";import{a as o,d as l,P as r}from"./p-DVW2WZTq.js";import{p as h}from"./p-DDQcM-So.js";import{b as d}from"./p-CHdoymO5.js";import{l as a,p as u}from"./p-B-ToCp8-.js";import{g as v}from"./p-bal2RLiw.js";import{E as c}from"./p-CFus3r7d.js";import{E as p}from"./p-B9R0QWr4.js";import{P as f}from"./p-BWUNIo7P.js";import{g as m}from"./p-Bg-uS9BH.js";import{d as w}from"./p-BopQW1sA.js";import{d as C}from"./p-BCOD9yfw.js";import{d as b}from"./p-Bkm6H5uq.js";import{d as y}from"./p-B80hfIq6.js";import{d as g}from"./p-B5FnyWQm.js";class x{get elementRect(){return this.rectObserver.rect}constructor(i,t,e){this.rectObserver=new c;this.droppableSurfaces=[p.PRECISE_SURFACE,p.IMPRECISE_SURFACE,p.GENERIC_GEOMETRY];this.handlePointerMove=async i=>{const t=await this.isDroppableSurface(i);const e=this.controller.getDraggable();if(e!=null&&t){this.handleDrag(e,i)}if(this.controller.getDraggable()==null&&this.controller.getToolMode()==="edit"&&t){this.addCursor(this.getCursorType())}else{this.clearCursor()}};this.handleDrag=async(i,t)=>{const e=v(t,this.elementRect);const s=await this.getWorldPositionForPoint(e);if(s!=null){this.controller.updateDraggable({...i,lastPoint:e},s)}};this.handlePointerDown=async i=>{const t=t=>{const s=h.distance(h.create(i.clientX,t.clientY),h.create(t.clientX,t.clientY));if(s<=2&&i.buttons!==2){if(this.controller.getToolMode()==="edit"){const t=v(i,this.elementRect);this.handlePlacePin(t)}}e()};const e=()=>{window.removeEventListener("pointerup",t)};window.addEventListener("pointerup",t);return{dispose:e}};this.handlePointerUp=async()=>{const i=this.controller.getDraggable();const t=i===null||i===void 0?void 0:i.lastPoint;this.controller.setDraggable(undefined);if(t!=null&&i!=null){this.ifInitialized((async({api:e})=>{var s,n,o,l,r,h;const[d]=await e.hitItems(t);if((d===null||d===void 0?void 0:d.hitPoint)!=null&&((s=d===null||d===void 0?void 0:d.hitPoint)===null||s===void 0?void 0:s.x)!=null&&((n=d===null||d===void 0?void 0:d.hitPoint)===null||n===void 0?void 0:n.y)!=null&&((o=d===null||d===void 0?void 0:d.hitPoint)===null||o===void 0?void 0:o.z)!=null){this.controller.updateDraggable({...i,lastPoint:t},{x:(l=d===null||d===void 0?void 0:d.hitPoint)===null||l===void 0?void 0:l.x,y:d===null||d===void 0?void 0:d.hitPoint.y,z:d===null||d===void 0?void 0:d.hitPoint.z},(h=(r=d===null||d===void 0?void 0:d.partId)===null||r===void 0?void 0:r.hex)!==null&&h!==void 0?h:undefined)}}))}};this.controller=i;this.xOffset=t;this.yOffset=e}initialize(i,t){this.element=i;this.api=t;this.rectObserver.observe(i);i.addEventListener("pointermove",this.handlePointerMove);i.addEventListener("pointerdown",this.handlePointerDown);window.addEventListener("pointerup",this.handlePointerUp)}dispose(){var i,t;this.rectObserver.disconnect();this.clearCursor();(i=this.element)===null||i===void 0?void 0:i.removeEventListener("pointermove",this.handlePointerMove);(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointerdown",this.handlePointerDown);window.removeEventListener("pointerup",this.handlePointerUp);this.element=undefined;this.api=undefined}async getWorldPositionForPoint(i){return this.ifInitialized((async({api:t})=>{const e=await t.getWorldPointFromViewport(i);return e}))}async handlePlacePin(i,t){this.ifInitialized((async({api:e})=>{var s,n,l,r,h,a;const[u]=await e.hitItems(i);if((u===null||u===void 0?void 0:u.hitPoint)!=null&&this.elementRect!=null){if((u===null||u===void 0?void 0:u.hitPoint)!=null&&(u===null||u===void 0?void 0:u.hitPoint.x)!=null&&(u===null||u===void 0?void 0:u.hitPoint.y)!=null&&(u===null||u===void 0?void 0:u.hitPoint.z)!=null){const e=t!=null?t.id:d.create();const v=this.controller.getStyleAttributes()!=null?{style:this.controller.getStyleAttributes()}:undefined;switch(this.controller.getToolType()){case"pin-icon":this.controller.setPin({type:"icon",id:e,worldPosition:{x:(s=u===null||u===void 0?void 0:u.hitPoint)===null||s===void 0?void 0:s.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(l=(n=u===null||u===void 0?void 0:u.itemId)===null||n===void 0?void 0:n.hex)!==null&&l!==void 0?l:undefined,attributes:v});break;case"pin-text":const d=t==null;const c=o(i,this.elementRect,d,this.xOffset,this.yOffset);this.controller.setPin({type:"text",id:e,worldPosition:{x:(r=u===null||u===void 0?void 0:u.hitPoint)===null||r===void 0?void 0:r.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(a=(h=u===null||u===void 0?void 0:u.itemId)===null||h===void 0?void 0:h.hex)!==null&&a!==void 0?a:undefined,label:{point:c},attributes:v});this.controller.setSelectedPinId(e);break}}}else{this.controller.setSelectedPinId()}}))}getCursorType(){switch(this.controller.getToolType()){case"pin-icon":return u;case"pin-text":return a}}addCursor(i){this.clearCursor();this.cursor=this.ifInitialized((({api:t})=>t.addCursor(i)))}async isDroppableSurface(i){var t;const e=v(i,this.elementRect);const s=await((t=this.api)===null||t===void 0?void 0:t.getEntityTypeAtPoint(e));return s!=null&&this.droppableSurfaces.includes(s)}ifInitialized(i){if(this.element!=null&&this.api!=null){return i({element:this.element,api:this.api})}else{throw new Error("Pins interaction handler not initialized.")}}clearCursor(){var i;(i=this.cursor)===null||i===void 0?void 0:i.dispose();this.cursor=undefined}}const P=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none;--viewer-pin-tool-initial-label-offset-x:20;--viewer-pin-tool-initial-label-offset-y:20}`;const j=t(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.__attachShadow();this.pinModel=new f;this.tool="pin-icon";this.mode="view";this.pins=[];this.stateMap={};this.handleSetProjectionMatrix=()=>{var i,t;this.projectionViewMatrix=(t=(i=this.viewer)===null||i===void 0?void 0:i.frame)===null||t===void 0?void 0:t.scene.camera.projectionViewMatrix}}watchModeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolMode(this.mode);this.setupInteractionHandler();if(this.mode==="edit"){this.setFeatureMaps();this.setCameraAndKeyboardControls()}else{this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}}watchTypeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolType(this.tool);this.setupInteractionHandler()}watchAccentColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setAccentColor(this.accentColor);this.setupInteractionHandler()}watchPrimaryColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setPrimaryColor(this.primaryColor);this.setupInteractionHandler()}watchPinsChange(){if(this.pins.length>0){this.setDepthBuffers();this.setFeatureMaps()}else{this.resetDepthBuffers();this.resetFeatureMaps()}}connectedCallback(){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls()}componentWillLoad(){this.updateViewport();this.setupController();this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();this.pinModel.onEntitiesChanged((i=>{this.pins=i}));this.pinModel.onSelectionChange((i=>{this.selectedPinId=i}));this.handleViewerChanged(this.viewer,undefined)}componentDidLoad(){this.resizeObserver=new ResizeObserver((()=>this.updateViewport()));this.resizeObserver.observe(this.hostEl)}disconnectedCallback(){this.clearInteractionHandler();this.clearModelListeners();this.resetDepthBuffers();this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}handleViewerChanged(i,t){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();if(t!=null){t.removeEventListener("frameDrawn",this.handleSetProjectionMatrix)}if(i!=null){i.addEventListener("frameDrawn",this.handleSetProjectionMatrix)}this.handleSetProjectionMatrix()}render(){return s(n,{key:"311442b0cc3d62c485b81526fde10692b560af93"},s("vertex-viewer-dom-renderer",{key:"e4fe9d022a717db444590a6c2d2239d233bbe2ce",viewer:this.viewer,drawMode:"2d"},this.pins.map((i=>s("vertex-viewer-pin-group",{id:`pin-group-${i.id}`,"data-is-dom-group-element":true,pin:i,elementBounds:this.elementBounds,pinModel:this.pinModel,pinController:this.pinController,projectionViewMatrix:this.projectionViewMatrix,selected:this.selectedPinId===i.id})))))}setupController(){const i=this.accentColor||this.primaryColor?{accentColor:this.accentColor,primaryColor:this.primaryColor}:undefined;this.pinController=new r(this.pinModel,this.mode,this.tool,i)}clearInteractionHandler(){var i;(i=this.registeredInteractionHandler)===null||i===void 0?void 0:i.then((i=>i.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var i;const t=window.getComputedStyle(this.hostEl);const e=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-x").trim();const s=Number.isFinite(Number.parseInt(e))?Number.parseInt(e):20;const n=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-y").trim();const o=Number.isFinite(Number.parseInt(n))?Number.parseInt(n):20;this.clearInteractionHandler();if(this.pinController!=null){this.registeredInteractionHandler=(i=this.viewer)===null||i===void 0?void 0:i.registerInteractionHandler(new x(this.pinController,s,o))}}clearModelListeners(){var i,t,e;(i=this.onEntitiesChangedHandler)===null||i===void 0?void 0:i.dispose();this.onEntitiesChangedHandler=undefined;(t=this.onEntityAddedHandler)===null||t===void 0?void 0:t.dispose();this.onEntityAddedHandler=undefined;(e=this.resizeObserver)===null||e===void 0?void 0:e.disconnect()}updateViewport(){this.elementBounds=m(this.hostEl)}setDepthBuffers(){if(this.pins.length>0&&this.viewer!=null&&this.viewer.depthBuffers==null){this.stateMap.shouldClearDepthBuffers=true;this.viewer.depthBuffers="final"}}resetDepthBuffers(){if(this.stateMap.shouldClearDepthBuffers&&this.viewer!=null){this.viewer.depthBuffers=undefined;this.stateMap.shouldClearDepthBuffers=undefined}}setFeatureMaps(){if((this.pins.length>0||this.mode==="edit")&&this.viewer!=null&&this.viewer.featureMaps==null){this.stateMap.shouldClearFeatureMaps=true;this.viewer.featureMaps="final"}}resetFeatureMaps(){if(this.stateMap.shouldClearFeatureMaps&&this.viewer!=null){this.viewer.featureMaps=undefined;this.stateMap.shouldClearFeatureMaps=undefined}}setCameraAndKeyboardControls(){if(this.mode==="edit"&&this.viewer!=null){if(this.viewer.cameraControls){this.stateMap.shouldClearCameraControls=true;this.viewer.cameraControls=false}if(this.viewer.keyboardControls){this.stateMap.shouldClearKeyboardControls=true;this.viewer.keyboardControls=false}}}resetCameraAndKeyboardControls(){if(this.viewer!=null){if(this.stateMap.shouldClearCameraControls){this.viewer.cameraControls=true;this.stateMap.shouldClearCameraControls=undefined}if(this.stateMap.shouldClearKeyboardControls){this.viewer.keyboardControls=true;this.stateMap.shouldClearKeyboardControls=undefined}}}get hostEl(){return this}static get watchers(){return{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}}static get style(){return P()}},[1,"vertex-viewer-pin-tool",{pinController:[1040],pinModel:[16],viewer:[16],tool:[1025],mode:[1025],primaryColor:[1025,"primary-color"],accentColor:[1025,"accent-color"],pins:[32],selectedPinId:[32],elementBounds:[32],projectionViewMatrix:[32]},undefined,{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}]);function B(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-pin-tool","vertex-viewer-dom-element","vertex-viewer-dom-renderer","vertex-viewer-icon","vertex-viewer-pin-group","vertex-viewer-pin-label","vertex-viewer-pin-label-line"];t.forEach((t=>{switch(t){case"vertex-viewer-pin-tool":if(!customElements.get(i(t))){customElements.define(i(t),j)}break;case"vertex-viewer-dom-element":if(!customElements.get(i(t))){w()}break;case"vertex-viewer-dom-renderer":if(!customElements.get(i(t))){C()}break;case"vertex-viewer-icon":if(!customElements.get(i(t))){b()}break;case"vertex-viewer-pin-group":if(!customElements.get(i(t))){y()}break;case"vertex-viewer-pin-label":if(!customElements.get(i(t))){l()}break;case"vertex-viewer-pin-label-line":if(!customElements.get(i(t))){g()}break}}))}B();const k=j;const E=B;export{k as VertexViewerPinTool,E as defineCustomElement};
|
|
4
|
+
import{t as i,p as t,H as e,h as s,e as n}from"./p-Bb32XUUS.js";import{a as o,d as l,P as r}from"./p-DVW2WZTq.js";import{p as h}from"./p-DDQcM-So.js";import{b as d}from"./p-CHdoymO5.js";import{l as a,p as u}from"./p-B-ToCp8-.js";import{g as v}from"./p-bal2RLiw.js";import{E as c}from"./p-CFus3r7d.js";import{E as p}from"./p-B9R0QWr4.js";import{P as f}from"./p-BWUNIo7P.js";import{g as m}from"./p-Bg-uS9BH.js";import{d as w}from"./p-oK38ynrd.js";import{d as C}from"./p-BCOD9yfw.js";import{d as b}from"./p-Bkm6H5uq.js";import{d as y}from"./p-DF4kEsJU.js";import{d as g}from"./p-B5FnyWQm.js";class x{get elementRect(){return this.rectObserver.rect}constructor(i,t,e){this.rectObserver=new c;this.droppableSurfaces=[p.PRECISE_SURFACE,p.IMPRECISE_SURFACE,p.GENERIC_GEOMETRY];this.handlePointerMove=async i=>{const t=await this.isDroppableSurface(i);const e=this.controller.getDraggable();if(e!=null&&t){this.handleDrag(e,i)}if(this.controller.getDraggable()==null&&this.controller.getToolMode()==="edit"&&t){this.addCursor(this.getCursorType())}else{this.clearCursor()}};this.handleDrag=async(i,t)=>{const e=v(t,this.elementRect);const s=await this.getWorldPositionForPoint(e);if(s!=null){this.controller.updateDraggable({...i,lastPoint:e},s)}};this.handlePointerDown=async i=>{const t=t=>{const s=h.distance(h.create(i.clientX,t.clientY),h.create(t.clientX,t.clientY));if(s<=2&&i.buttons!==2){if(this.controller.getToolMode()==="edit"){const t=v(i,this.elementRect);this.handlePlacePin(t)}}e()};const e=()=>{window.removeEventListener("pointerup",t)};window.addEventListener("pointerup",t);return{dispose:e}};this.handlePointerUp=async()=>{const i=this.controller.getDraggable();const t=i===null||i===void 0?void 0:i.lastPoint;this.controller.setDraggable(undefined);if(t!=null&&i!=null){this.ifInitialized((async({api:e})=>{var s,n,o,l,r,h;const[d]=await e.hitItems(t);if((d===null||d===void 0?void 0:d.hitPoint)!=null&&((s=d===null||d===void 0?void 0:d.hitPoint)===null||s===void 0?void 0:s.x)!=null&&((n=d===null||d===void 0?void 0:d.hitPoint)===null||n===void 0?void 0:n.y)!=null&&((o=d===null||d===void 0?void 0:d.hitPoint)===null||o===void 0?void 0:o.z)!=null){this.controller.updateDraggable({...i,lastPoint:t},{x:(l=d===null||d===void 0?void 0:d.hitPoint)===null||l===void 0?void 0:l.x,y:d===null||d===void 0?void 0:d.hitPoint.y,z:d===null||d===void 0?void 0:d.hitPoint.z},(h=(r=d===null||d===void 0?void 0:d.partId)===null||r===void 0?void 0:r.hex)!==null&&h!==void 0?h:undefined)}}))}};this.controller=i;this.xOffset=t;this.yOffset=e}initialize(i,t){this.element=i;this.api=t;this.rectObserver.observe(i);i.addEventListener("pointermove",this.handlePointerMove);i.addEventListener("pointerdown",this.handlePointerDown);window.addEventListener("pointerup",this.handlePointerUp)}dispose(){var i,t;this.rectObserver.disconnect();this.clearCursor();(i=this.element)===null||i===void 0?void 0:i.removeEventListener("pointermove",this.handlePointerMove);(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointerdown",this.handlePointerDown);window.removeEventListener("pointerup",this.handlePointerUp);this.element=undefined;this.api=undefined}async getWorldPositionForPoint(i){return this.ifInitialized((async({api:t})=>{const e=await t.getWorldPointFromViewport(i);return e}))}async handlePlacePin(i,t){this.ifInitialized((async({api:e})=>{var s,n,l,r,h,a;const[u]=await e.hitItems(i);if((u===null||u===void 0?void 0:u.hitPoint)!=null&&this.elementRect!=null){if((u===null||u===void 0?void 0:u.hitPoint)!=null&&(u===null||u===void 0?void 0:u.hitPoint.x)!=null&&(u===null||u===void 0?void 0:u.hitPoint.y)!=null&&(u===null||u===void 0?void 0:u.hitPoint.z)!=null){const e=t!=null?t.id:d.create();const v=this.controller.getStyleAttributes()!=null?{style:this.controller.getStyleAttributes()}:undefined;switch(this.controller.getToolType()){case"pin-icon":this.controller.setPin({type:"icon",id:e,worldPosition:{x:(s=u===null||u===void 0?void 0:u.hitPoint)===null||s===void 0?void 0:s.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(l=(n=u===null||u===void 0?void 0:u.itemId)===null||n===void 0?void 0:n.hex)!==null&&l!==void 0?l:undefined,attributes:v});break;case"pin-text":const d=t==null;const c=o(i,this.elementRect,d,this.xOffset,this.yOffset);this.controller.setPin({type:"text",id:e,worldPosition:{x:(r=u===null||u===void 0?void 0:u.hitPoint)===null||r===void 0?void 0:r.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(a=(h=u===null||u===void 0?void 0:u.itemId)===null||h===void 0?void 0:h.hex)!==null&&a!==void 0?a:undefined,label:{point:c},attributes:v});this.controller.setSelectedPinId(e);break}}}else{this.controller.setSelectedPinId()}}))}getCursorType(){switch(this.controller.getToolType()){case"pin-icon":return u;case"pin-text":return a}}addCursor(i){this.clearCursor();this.cursor=this.ifInitialized((({api:t})=>t.addCursor(i)))}async isDroppableSurface(i){var t;const e=v(i,this.elementRect);const s=await((t=this.api)===null||t===void 0?void 0:t.getEntityTypeAtPoint(e));return s!=null&&this.droppableSurfaces.includes(s)}ifInitialized(i){if(this.element!=null&&this.api!=null){return i({element:this.element,api:this.api})}else{throw new Error("Pins interaction handler not initialized.")}}clearCursor(){var i;(i=this.cursor)===null||i===void 0?void 0:i.dispose();this.cursor=undefined}}const P=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none;--viewer-pin-tool-initial-label-offset-x:20;--viewer-pin-tool-initial-label-offset-y:20}`;const j=t(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.__attachShadow();this.pinModel=new f;this.tool="pin-icon";this.mode="view";this.pins=[];this.stateMap={};this.handleSetProjectionMatrix=()=>{var i,t;this.projectionViewMatrix=(t=(i=this.viewer)===null||i===void 0?void 0:i.frame)===null||t===void 0?void 0:t.scene.camera.projectionViewMatrix}}watchModeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolMode(this.mode);this.setupInteractionHandler();if(this.mode==="edit"){this.setFeatureMaps();this.setCameraAndKeyboardControls()}else{this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}}watchTypeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolType(this.tool);this.setupInteractionHandler()}watchAccentColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setAccentColor(this.accentColor);this.setupInteractionHandler()}watchPrimaryColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setPrimaryColor(this.primaryColor);this.setupInteractionHandler()}watchPinsChange(){if(this.pins.length>0){this.setDepthBuffers();this.setFeatureMaps()}else{this.resetDepthBuffers();this.resetFeatureMaps()}}connectedCallback(){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls()}componentWillLoad(){this.updateViewport();this.setupController();this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();this.pinModel.onEntitiesChanged((i=>{this.pins=i}));this.pinModel.onSelectionChange((i=>{this.selectedPinId=i}));this.handleViewerChanged(this.viewer,undefined)}componentDidLoad(){this.resizeObserver=new ResizeObserver((()=>this.updateViewport()));this.resizeObserver.observe(this.hostEl)}disconnectedCallback(){this.clearInteractionHandler();this.clearModelListeners();this.resetDepthBuffers();this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}handleViewerChanged(i,t){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();if(t!=null){t.removeEventListener("frameDrawn",this.handleSetProjectionMatrix)}if(i!=null){i.addEventListener("frameDrawn",this.handleSetProjectionMatrix)}this.handleSetProjectionMatrix()}render(){return s(n,{key:"ce2867d4a624dabf607b9de837e73a0a0c40eaf9"},s("vertex-viewer-dom-renderer",{key:"7d2dc3d75ca1818ba7b9b292ccbe1db7ac5c7ac8",viewer:this.viewer,drawMode:"2d"},this.pins.map((i=>s("vertex-viewer-pin-group",{id:`pin-group-${i.id}`,"data-is-dom-group-element":true,pin:i,elementBounds:this.elementBounds,pinModel:this.pinModel,pinController:this.pinController,projectionViewMatrix:this.projectionViewMatrix,selected:this.selectedPinId===i.id})))))}setupController(){const i=this.accentColor||this.primaryColor?{accentColor:this.accentColor,primaryColor:this.primaryColor}:undefined;this.pinController=new r(this.pinModel,this.mode,this.tool,i)}clearInteractionHandler(){var i;(i=this.registeredInteractionHandler)===null||i===void 0?void 0:i.then((i=>i.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var i;const t=window.getComputedStyle(this.hostEl);const e=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-x").trim();const s=Number.isFinite(Number.parseInt(e))?Number.parseInt(e):20;const n=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-y").trim();const o=Number.isFinite(Number.parseInt(n))?Number.parseInt(n):20;this.clearInteractionHandler();if(this.pinController!=null){this.registeredInteractionHandler=(i=this.viewer)===null||i===void 0?void 0:i.registerInteractionHandler(new x(this.pinController,s,o))}}clearModelListeners(){var i,t,e;(i=this.onEntitiesChangedHandler)===null||i===void 0?void 0:i.dispose();this.onEntitiesChangedHandler=undefined;(t=this.onEntityAddedHandler)===null||t===void 0?void 0:t.dispose();this.onEntityAddedHandler=undefined;(e=this.resizeObserver)===null||e===void 0?void 0:e.disconnect()}updateViewport(){this.elementBounds=m(this.hostEl)}setDepthBuffers(){if(this.pins.length>0&&this.viewer!=null&&this.viewer.depthBuffers==null){this.stateMap.shouldClearDepthBuffers=true;this.viewer.depthBuffers="final"}}resetDepthBuffers(){if(this.stateMap.shouldClearDepthBuffers&&this.viewer!=null){this.viewer.depthBuffers=undefined;this.stateMap.shouldClearDepthBuffers=undefined}}setFeatureMaps(){if((this.pins.length>0||this.mode==="edit")&&this.viewer!=null&&this.viewer.featureMaps==null){this.stateMap.shouldClearFeatureMaps=true;this.viewer.featureMaps="final"}}resetFeatureMaps(){if(this.stateMap.shouldClearFeatureMaps&&this.viewer!=null){this.viewer.featureMaps=undefined;this.stateMap.shouldClearFeatureMaps=undefined}}setCameraAndKeyboardControls(){if(this.mode==="edit"&&this.viewer!=null){if(this.viewer.cameraControls){this.stateMap.shouldClearCameraControls=true;this.viewer.cameraControls=false}if(this.viewer.keyboardControls){this.stateMap.shouldClearKeyboardControls=true;this.viewer.keyboardControls=false}}}resetCameraAndKeyboardControls(){if(this.viewer!=null){if(this.stateMap.shouldClearCameraControls){this.viewer.cameraControls=true;this.stateMap.shouldClearCameraControls=undefined}if(this.stateMap.shouldClearKeyboardControls){this.viewer.keyboardControls=true;this.stateMap.shouldClearKeyboardControls=undefined}}}get hostEl(){return this}static get watchers(){return{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}}static get style(){return P()}},[1,"vertex-viewer-pin-tool",{pinController:[1040],pinModel:[16],viewer:[16],tool:[1025],mode:[1025],primaryColor:[1025,"primary-color"],accentColor:[1025,"accent-color"],pins:[32],selectedPinId:[32],elementBounds:[32],projectionViewMatrix:[32]},undefined,{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}]);function k(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-pin-tool","vertex-viewer-dom-element","vertex-viewer-dom-renderer","vertex-viewer-icon","vertex-viewer-pin-group","vertex-viewer-pin-label","vertex-viewer-pin-label-line"];t.forEach((t=>{switch(t){case"vertex-viewer-pin-tool":if(!customElements.get(i(t))){customElements.define(i(t),j)}break;case"vertex-viewer-dom-element":if(!customElements.get(i(t))){w()}break;case"vertex-viewer-dom-renderer":if(!customElements.get(i(t))){C()}break;case"vertex-viewer-icon":if(!customElements.get(i(t))){b()}break;case"vertex-viewer-pin-group":if(!customElements.get(i(t))){y()}break;case"vertex-viewer-pin-label":if(!customElements.get(i(t))){l()}break;case"vertex-viewer-pin-label-line":if(!customElements.get(i(t))){g()}break}}))}k();const E=j;const B=k;export{E as VertexViewerPinTool,B as defineCustomElement};
|
|
5
5
|
//# sourceMappingURL=vertex-viewer-pin-tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PinsInteractionHandler","elementRect","this","rectObserver","rect","constructor","controller","xOffset","yOffset","ElementRectObserver","droppableSurfaces","EntityType","PRECISE_SURFACE","IMPRECISE_SURFACE","GENERIC_GEOMETRY","handlePointerMove","async","event","isDroppableSurface","draggable","getDraggable","handleDrag","getToolMode","addCursor","getCursorType","clearCursor","pt","getMouseClientPosition","worldPosition","getWorldPositionForPoint","updateDraggable","lastPoint","handlePointerDown","pointerDown","pointerUp","distanceBetweenStartAndEndPoint","Point","distance","create","clientX","clientY","buttons","handlePlacePin","dispose","window","removeEventListener","addEventListener","handlePointerUp","setDraggable","undefined","ifInitialized","api","hit","hitItems","hitPoint","_a","x","_b","y","_c","z","_d","_f","_e","partId","hex","initialize","element","observe","disconnect","vector3","getWorldPointFromViewport","existingPin","pinId","id","UUID","attributes","getStyleAttributes","style","getToolType","setPin","type","itemId","isNewPin","relativePoint","translatePointToRelative","label","point","setSelectedPinId","pinCursor","labelPinCursor","cursor","getEntityTypeAtPoint","includes","f","Error","viewerPinToolCss","ViewerPinTool","__stencil_proxyCustomElement","HTMLElement","registerHost","pinModel","PinModel","tool","mode","pins","stateMap","handleSetProjectionMatrix","projectionViewMatrix","viewer","frame","scene","camera","watchModeChange","pinController","setToolMode","setupInteractionHandler","setFeatureMaps","setCameraAndKeyboardControls","resetFeatureMaps","resetCameraAndKeyboardControls","watchTypeChange","setToolType","watchAccentColorChange","setAccentColor","accentColor","watchPrimaryColorChange","setPrimaryColor","primaryColor","watchPinsChange","length","setDepthBuffers","resetDepthBuffers","connectedCallback","componentWillLoad","updateViewport","setupController","onEntitiesChanged","entities","onSelectionChange","selectedId","selectedPinId","handleViewerChanged","componentDidLoad","resizeObserver","ResizeObserver","hostEl","disconnectedCallback","clearInteractionHandler","clearModelListeners","newViewer","oldViewer","render","h","Host","key","drawMode","map","pin","elementBounds","selected","PinController","registeredInteractionHandler","then","handler","hostStyles","getComputedStyle","getPropertyValue","trim","xOffsetAsNumber","Number","isFinite","parseInt","yOffsetAsNumber","registerInteractionHandler","onEntitiesChangedHandler","onEntityAddedHandler","getMarkupBoundingClientRect","depthBuffers","shouldClearDepthBuffers","featureMaps","shouldClearFeatureMaps","cameraControls","shouldClearCameraControls","keyboardControls","shouldClearKeyboardControls"],"sources":["src/lib/pins/interactions.ts","src/components/viewer-pin-tool/viewer-pin-tool.css?tag=vertex-viewer-pin-tool&encapsulation=shadow","src/components/viewer-pin-tool/viewer-pin-tool.tsx"],"sourcesContent":["import { Point, Vector3 } from '@vertexvis/geometry';\nimport { Disposable, UUID } from '@vertexvis/utils';\n\nimport { translatePointToRelative } from '../../components/viewer-pin-tool/utils';\nimport { Cursor, labelPinCursor, pinCursor } from '../cursors';\nimport { getMouseClientPosition } from '../dom';\nimport { ElementRectObserver } from '../elementRectObserver';\nimport { InteractionApi, InteractionHandler } from '../interactions';\nimport { EntityType } from '../types/entities';\nimport { Draggable, PinController } from './controller';\nimport { Pin } from './model';\n\nexport class PinsInteractionHandler implements InteractionHandler {\n private controller: PinController;\n private element?: HTMLElement;\n private api?: InteractionApi;\n\n private cursor?: Disposable;\n\n private xOffset?: number;\n private yOffset?: number;\n\n private rectObserver = new ElementRectObserver();\n\n private droppableSurfaces: EntityType[] = [\n EntityType.PRECISE_SURFACE,\n EntityType.IMPRECISE_SURFACE,\n EntityType.GENERIC_GEOMETRY,\n ];\n\n private get elementRect(): DOMRect | undefined {\n return this.rectObserver.rect;\n }\n\n public constructor(\n controller: PinController,\n xOffset: number,\n yOffset: number\n ) {\n this.controller = controller;\n this.xOffset = xOffset;\n this.yOffset = yOffset;\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n this.rectObserver.observe(element);\n\n element.addEventListener('pointermove', this.handlePointerMove);\n element.addEventListener('pointerdown', this.handlePointerDown);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n\n public dispose(): void {\n this.rectObserver.disconnect();\n this.clearCursor();\n this.element?.removeEventListener('pointermove', this.handlePointerMove);\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n window.removeEventListener('pointerup', this.handlePointerUp);\n\n this.element = undefined;\n this.api = undefined;\n }\n\n public async getWorldPositionForPoint(\n pt: Point.Point\n ): Promise<Vector3.Vector3 | undefined> {\n return this.ifInitialized(async ({ api }) => {\n const vector3 = await api.getWorldPointFromViewport(pt);\n\n return vector3;\n });\n }\n\n public async handlePlacePin(\n pt: Point.Point,\n existingPin?: Pin\n ): Promise<void> {\n this.ifInitialized(async ({ api }) => {\n const [hit] = await api.hitItems(pt);\n\n if (hit?.hitPoint != null && this.elementRect != null) {\n if (\n hit?.hitPoint != null &&\n hit?.hitPoint.x != null &&\n hit?.hitPoint.y != null &&\n hit?.hitPoint.z != null\n ) {\n const pinId = existingPin != null ? existingPin.id : UUID.create();\n\n const attributes =\n this.controller.getStyleAttributes() != null\n ? {\n style: this.controller.getStyleAttributes(),\n }\n : undefined;\n\n switch (this.controller.getToolType()) {\n case 'pin-icon':\n this.controller.setPin({\n type: 'icon',\n id: pinId,\n worldPosition: {\n x: hit?.hitPoint?.x,\n y: hit?.hitPoint.y,\n z: hit?.hitPoint.z,\n },\n partId: hit?.itemId?.hex ?? undefined,\n attributes,\n });\n break;\n case 'pin-text':\n const isNewPin = existingPin == null;\n const relativePoint = translatePointToRelative(\n pt,\n this.elementRect,\n isNewPin,\n this.xOffset,\n this.yOffset\n );\n this.controller.setPin({\n type: 'text',\n id: pinId,\n worldPosition: {\n x: hit?.hitPoint?.x,\n y: hit?.hitPoint.y,\n z: hit?.hitPoint.z,\n },\n partId: hit?.itemId?.hex ?? undefined,\n label: {\n point: relativePoint,\n },\n attributes,\n });\n this.controller.setSelectedPinId(pinId);\n break;\n }\n }\n } else {\n this.controller.setSelectedPinId();\n }\n });\n }\n\n private handlePointerMove = async (event: PointerEvent): Promise<void> => {\n const isDroppableSurface = await this.isDroppableSurface(event);\n const draggable = this.controller.getDraggable();\n if (draggable != null && isDroppableSurface) {\n this.handleDrag(draggable, event);\n }\n\n if (\n this.controller.getDraggable() == null &&\n this.controller.getToolMode() === 'edit' &&\n isDroppableSurface\n ) {\n this.addCursor(this.getCursorType());\n } else {\n this.clearCursor();\n }\n };\n\n private getCursorType(): Cursor {\n switch (this.controller.getToolType()) {\n case 'pin-icon':\n return pinCursor;\n case 'pin-text':\n return labelPinCursor;\n }\n }\n\n private handleDrag = async (\n draggable: Draggable,\n event: PointerEvent\n ): Promise<void> => {\n const pt = getMouseClientPosition(event, this.elementRect);\n const worldPosition = await this.getWorldPositionForPoint(pt);\n\n if (worldPosition != null) {\n this.controller.updateDraggable(\n {\n ...draggable,\n lastPoint: pt,\n },\n worldPosition\n );\n }\n };\n\n private handlePointerDown = async (\n pointerDown: PointerEvent\n ): Promise<Disposable> => {\n const pointerUp = (pointerUp: PointerEvent): void => {\n const distanceBetweenStartAndEndPoint = Point.distance(\n Point.create(pointerDown.clientX, pointerUp.clientY),\n Point.create(pointerUp.clientX, pointerUp.clientY)\n );\n\n if (distanceBetweenStartAndEndPoint <= 2 && pointerDown.buttons !== 2) {\n if (this.controller.getToolMode() === 'edit') {\n const pt = getMouseClientPosition(pointerDown, this.elementRect);\n\n this.handlePlacePin(pt);\n }\n }\n\n dispose();\n };\n\n const dispose = (): void => {\n window.removeEventListener('pointerup', pointerUp);\n };\n\n window.addEventListener('pointerup', pointerUp);\n\n return {\n dispose,\n };\n };\n\n private handlePointerUp = async (): Promise<void> => {\n const draggable = this.controller.getDraggable();\n const lastPoint = draggable?.lastPoint;\n\n this.controller.setDraggable(undefined);\n\n if (lastPoint != null && draggable != null) {\n this.ifInitialized(async ({ api }) => {\n const [hit] = await api.hitItems(lastPoint);\n\n if (\n hit?.hitPoint != null &&\n hit?.hitPoint?.x != null &&\n hit?.hitPoint?.y != null &&\n hit?.hitPoint?.z != null\n ) {\n this.controller.updateDraggable(\n {\n ...draggable,\n lastPoint,\n },\n {\n x: hit?.hitPoint?.x,\n y: hit?.hitPoint.y,\n z: hit?.hitPoint.z,\n },\n hit?.partId?.hex ?? undefined\n );\n }\n });\n }\n };\n\n private addCursor(cursor: Cursor): void {\n this.clearCursor();\n this.cursor = this.ifInitialized(({ api }) => api.addCursor(cursor));\n }\n\n private async isDroppableSurface(event: PointerEvent): Promise<boolean> {\n const pt = getMouseClientPosition(event, this.elementRect);\n const type = await this.api?.getEntityTypeAtPoint(pt);\n\n return type != null && this.droppableSurfaces.includes(type);\n }\n\n protected ifInitialized<R>(\n f: (data: { element: HTMLElement; api: InteractionApi }) => R\n ): R {\n if (this.element != null && this.api != null) {\n return f({ element: this.element, api: this.api });\n } else {\n throw new Error('Pins interaction handler not initialized.');\n }\n }\n\n private clearCursor(): void {\n this.cursor?.dispose();\n this.cursor = undefined;\n }\n}\n",":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n pointer-events: none;\n\n /**\n * @prop --viewer-pin-tool-initial-label-offset-x: The number of pixels to offset\n the label in the x direction. Defaults to 20.\n */\n --viewer-pin-tool-initial-label-offset-x: 20;\n\n /**\n * @prop --viewer-pin-tool-initial-label-offset-y: The number of pixels to offset\n the label in the y direction. Defaults to 20.\n */\n --viewer-pin-tool-initial-label-offset-y: 20;\n}\n","import {\n Component,\n Element,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Matrix4 } from '@vertexvis/geometry';\nimport { Color, Disposable } from '@vertexvis/utils';\n\nimport { PinController } from '../../lib/pins/controller';\nimport { PinsInteractionHandler } from '../../lib/pins/interactions';\nimport {\n Pin,\n PinModel,\n ViewerPinToolMode,\n ViewerPinToolType,\n} from '../../lib/pins/model';\nimport { getMarkupBoundingClientRect } from '../viewer-markup/dom';\n\ninterface StateMap {\n shouldClearDepthBuffers?: boolean;\n shouldClearFeatureMaps?: boolean;\n shouldClearCameraControls?: boolean;\n shouldClearKeyboardControls?: boolean;\n}\n\n@Component({\n tag: 'vertex-viewer-pin-tool',\n styleUrl: 'viewer-pin-tool.css',\n shadow: true,\n})\nexport class ViewerPinTool {\n /**\n * The controller that is responsible for drawing pins and updating the model\n */\n @Prop({ mutable: true })\n public pinController?: PinController;\n\n /**\n * The model that contains the entities and outcomes from performing pin annotations\n */\n @Prop()\n public pinModel: PinModel = new PinModel();\n\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 type of pin.\n *\n * This property will automatically be set.\n */\n @Prop({ mutable: true })\n public tool: ViewerPinToolType = 'pin-icon';\n\n /**\n * The mode of the pin tool\n */\n @Prop({ mutable: true })\n public mode: ViewerPinToolMode = 'view';\n\n /**\n * The primary color for new pins. Setting this will override the primary template color, and will be used for any new\n * pins created with this `vertex-viewer-pin-tool`. This styling applies to pin anchors, and borders, etc.\n */\n @Prop({ mutable: true })\n public primaryColor: Color.Color | string | undefined;\n\n /**\n * The accent color for new pins. Setting this will override the accent template color, and will be used for any new\n * pins created with this `vertex-viewer-pin-tool`. This styling applies to some background colors, etc\n */\n @Prop({ mutable: true })\n public accentColor: Color.Color | string | undefined;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private pins: Pin[] = [];\n\n @State()\n private selectedPinId?: string;\n\n @State()\n private elementBounds?: DOMRect;\n\n @State()\n private projectionViewMatrix?: Matrix4.Matrix4;\n\n private registeredInteractionHandler?: Promise<Disposable>;\n private onEntitiesChangedHandler?: Disposable;\n private onEntityAddedHandler?: Disposable;\n\n private resizeObserver?: ResizeObserver;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected watchModeChange(): void {\n this.pinController?.setToolMode(this.mode);\n this.setupInteractionHandler();\n\n if (this.mode === 'edit') {\n this.setFeatureMaps();\n this.setCameraAndKeyboardControls();\n } else {\n this.resetFeatureMaps();\n this.resetCameraAndKeyboardControls();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('tool')\n protected watchTypeChange(): void {\n this.pinController?.setToolType(this.tool);\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('accentColor')\n protected watchAccentColorChange(): void {\n this.pinController?.setAccentColor(this.accentColor);\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('primaryColor')\n protected watchPrimaryColorChange(): void {\n this.pinController?.setPrimaryColor(this.primaryColor);\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('pins')\n protected watchPinsChange(): void {\n if (this.pins.length > 0) {\n this.setDepthBuffers();\n this.setFeatureMaps();\n } else {\n this.resetDepthBuffers();\n this.resetFeatureMaps();\n }\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setDepthBuffers();\n this.setFeatureMaps();\n this.setCameraAndKeyboardControls();\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.updateViewport();\n this.setupController();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n this.setFeatureMaps();\n this.setCameraAndKeyboardControls();\n\n this.pinModel.onEntitiesChanged((entities) => {\n this.pins = entities;\n });\n\n this.pinModel.onSelectionChange((selectedId) => {\n this.selectedPinId = selectedId;\n });\n\n this.handleViewerChanged(this.viewer, undefined);\n }\n\n protected componentDidLoad(): void {\n this.resizeObserver = new ResizeObserver(() => this.updateViewport());\n this.resizeObserver.observe(this.hostEl);\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.clearModelListeners();\n this.resetDepthBuffers();\n this.resetFeatureMaps();\n this.resetCameraAndKeyboardControls();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n this.setupInteractionHandler();\n this.setDepthBuffers();\n this.setFeatureMaps();\n this.setCameraAndKeyboardControls();\n\n if (oldViewer != null) {\n oldViewer.removeEventListener(\n 'frameDrawn',\n this.handleSetProjectionMatrix\n );\n }\n\n if (newViewer != null) {\n newViewer.addEventListener('frameDrawn', this.handleSetProjectionMatrix);\n }\n\n this.handleSetProjectionMatrix();\n }\n\n private handleSetProjectionMatrix = (): void => {\n this.projectionViewMatrix =\n this.viewer?.frame?.scene.camera.projectionViewMatrix;\n };\n\n protected render(): JSX.Element {\n return (\n <Host>\n <vertex-viewer-dom-renderer viewer={this.viewer} drawMode=\"2d\">\n {this.pins.map((pin) => {\n return (\n <vertex-viewer-pin-group\n id={`pin-group-${pin.id}`}\n data-is-dom-group-element={true}\n pin={pin}\n elementBounds={this.elementBounds}\n pinModel={this.pinModel}\n pinController={this.pinController}\n projectionViewMatrix={this.projectionViewMatrix}\n selected={this.selectedPinId === pin.id}\n ></vertex-viewer-pin-group>\n );\n })}\n </vertex-viewer-dom-renderer>\n </Host>\n );\n }\n\n private setupController(): void {\n const attributes =\n this.accentColor || this.primaryColor\n ? {\n accentColor: this.accentColor,\n primaryColor: this.primaryColor,\n }\n : undefined;\n this.pinController = new PinController(\n this.pinModel,\n this.mode,\n this.tool,\n attributes\n );\n }\n\n private clearInteractionHandler(): void {\n this.registeredInteractionHandler?.then((handler) => handler.dispose());\n this.registeredInteractionHandler = undefined;\n }\n\n private setupInteractionHandler(): void {\n const hostStyles = window.getComputedStyle(this.hostEl);\n\n const xOffset = hostStyles\n .getPropertyValue('--viewer-pin-tool-initial-label-offset-x')\n .trim();\n const xOffsetAsNumber = Number.isFinite(Number.parseInt(xOffset))\n ? Number.parseInt(xOffset)\n : 20;\n\n const yOffset = hostStyles\n .getPropertyValue('--viewer-pin-tool-initial-label-offset-y')\n .trim();\n const yOffsetAsNumber = Number.isFinite(Number.parseInt(yOffset))\n ? Number.parseInt(yOffset)\n : 20;\n\n this.clearInteractionHandler();\n\n if (this.pinController != null) {\n this.registeredInteractionHandler =\n this.viewer?.registerInteractionHandler(\n new PinsInteractionHandler(\n this.pinController,\n xOffsetAsNumber,\n yOffsetAsNumber\n )\n );\n }\n }\n\n private clearModelListeners(): void {\n this.onEntitiesChangedHandler?.dispose();\n this.onEntitiesChangedHandler = undefined;\n this.onEntityAddedHandler?.dispose();\n this.onEntityAddedHandler = undefined;\n this.resizeObserver?.disconnect();\n }\n\n private updateViewport(): void {\n this.elementBounds = getMarkupBoundingClientRect(this.hostEl);\n }\n\n private setDepthBuffers(): void {\n if (\n this.pins.length > 0 &&\n this.viewer != null &&\n this.viewer.depthBuffers == null\n ) {\n this.stateMap.shouldClearDepthBuffers = true;\n this.viewer.depthBuffers = 'final';\n }\n }\n\n private resetDepthBuffers(): void {\n if (this.stateMap.shouldClearDepthBuffers && this.viewer != null) {\n this.viewer.depthBuffers = undefined;\n this.stateMap.shouldClearDepthBuffers = undefined;\n }\n }\n\n private setFeatureMaps(): void {\n if (\n (this.pins.length > 0 || this.mode === 'edit') &&\n this.viewer != null &&\n this.viewer.featureMaps == null\n ) {\n this.stateMap.shouldClearFeatureMaps = true;\n this.viewer.featureMaps = 'final';\n }\n }\n\n private resetFeatureMaps(): void {\n if (this.stateMap.shouldClearFeatureMaps && this.viewer != null) {\n this.viewer.featureMaps = undefined;\n this.stateMap.shouldClearFeatureMaps = undefined;\n }\n }\n\n private setCameraAndKeyboardControls(): void {\n if (this.mode === 'edit' && this.viewer != null) {\n // Check camera controls\n if (this.viewer.cameraControls) {\n this.stateMap.shouldClearCameraControls = true;\n this.viewer.cameraControls = false;\n }\n\n // Check keyboard controls\n if (this.viewer.keyboardControls) {\n this.stateMap.shouldClearKeyboardControls = true;\n this.viewer.keyboardControls = false;\n }\n }\n }\n\n private resetCameraAndKeyboardControls(): void {\n if (this.viewer != null) {\n if (this.stateMap.shouldClearCameraControls) {\n this.viewer.cameraControls = true;\n this.stateMap.shouldClearCameraControls = undefined;\n }\n\n if (this.stateMap.shouldClearKeyboardControls) {\n this.viewer.keyboardControls = true;\n this.stateMap.shouldClearKeyboardControls = undefined;\n }\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["PinsInteractionHandler","elementRect","this","rectObserver","rect","constructor","controller","xOffset","yOffset","ElementRectObserver","droppableSurfaces","EntityType","PRECISE_SURFACE","IMPRECISE_SURFACE","GENERIC_GEOMETRY","handlePointerMove","async","event","isDroppableSurface","draggable","getDraggable","handleDrag","getToolMode","addCursor","getCursorType","clearCursor","pt","getMouseClientPosition","worldPosition","getWorldPositionForPoint","updateDraggable","lastPoint","handlePointerDown","pointerDown","pointerUp","distanceBetweenStartAndEndPoint","Point","distance","create","clientX","clientY","buttons","handlePlacePin","dispose","window","removeEventListener","addEventListener","handlePointerUp","setDraggable","undefined","ifInitialized","api","hit","hitItems","hitPoint","_a","x","_b","y","_c","z","_d","_f","_e","partId","hex","initialize","element","observe","disconnect","vector3","getWorldPointFromViewport","existingPin","pinId","id","UUID","attributes","getStyleAttributes","style","getToolType","setPin","type","itemId","isNewPin","relativePoint","translatePointToRelative","label","point","setSelectedPinId","pinCursor","labelPinCursor","cursor","getEntityTypeAtPoint","includes","f","Error","viewerPinToolCss","ViewerPinTool","__stencil_proxyCustomElement","HTMLElement","registerHost","pinModel","PinModel","tool","mode","pins","stateMap","handleSetProjectionMatrix","projectionViewMatrix","viewer","frame","scene","camera","watchModeChange","pinController","setToolMode","setupInteractionHandler","setFeatureMaps","setCameraAndKeyboardControls","resetFeatureMaps","resetCameraAndKeyboardControls","watchTypeChange","setToolType","watchAccentColorChange","setAccentColor","accentColor","watchPrimaryColorChange","setPrimaryColor","primaryColor","watchPinsChange","length","setDepthBuffers","resetDepthBuffers","connectedCallback","componentWillLoad","updateViewport","setupController","onEntitiesChanged","entities","onSelectionChange","selectedId","selectedPinId","handleViewerChanged","componentDidLoad","resizeObserver","ResizeObserver","hostEl","disconnectedCallback","clearInteractionHandler","clearModelListeners","newViewer","oldViewer","render","h","Host","key","drawMode","map","pin","elementBounds","selected","PinController","registeredInteractionHandler","then","handler","hostStyles","getComputedStyle","getPropertyValue","trim","xOffsetAsNumber","Number","isFinite","parseInt","yOffsetAsNumber","registerInteractionHandler","onEntitiesChangedHandler","onEntityAddedHandler","getMarkupBoundingClientRect","depthBuffers","shouldClearDepthBuffers","featureMaps","shouldClearFeatureMaps","cameraControls","shouldClearCameraControls","keyboardControls","shouldClearKeyboardControls"],"sources":["src/lib/pins/interactions.ts","src/components/viewer-pin-tool/viewer-pin-tool.css?tag=vertex-viewer-pin-tool&encapsulation=shadow","src/components/viewer-pin-tool/viewer-pin-tool.tsx"],"sourcesContent":["import { Point, Vector3 } from '@vertexvis/geometry';\nimport { Disposable, UUID } from '@vertexvis/utils';\n\nimport { translatePointToRelative } from '../../components/viewer-pin-tool/utils';\nimport { Cursor, labelPinCursor, pinCursor } from '../cursors';\nimport { getMouseClientPosition } from '../dom';\nimport { ElementRectObserver } from '../elementRectObserver';\nimport { InteractionApi, InteractionHandler } from '../interactions';\nimport { EntityType } from '../types/entities';\nimport { Draggable, PinController } from './controller';\nimport { Pin } from './model';\n\nexport class PinsInteractionHandler implements InteractionHandler {\n private controller: PinController;\n private element?: HTMLElement;\n private api?: InteractionApi;\n\n private cursor?: Disposable;\n\n private xOffset?: number;\n private yOffset?: number;\n\n private rectObserver = new ElementRectObserver();\n\n private droppableSurfaces: EntityType[] = [\n EntityType.PRECISE_SURFACE,\n EntityType.IMPRECISE_SURFACE,\n EntityType.GENERIC_GEOMETRY,\n ];\n\n private get elementRect(): DOMRect | undefined {\n return this.rectObserver.rect;\n }\n\n public constructor(\n controller: PinController,\n xOffset: number,\n yOffset: number,\n ) {\n this.controller = controller;\n this.xOffset = xOffset;\n this.yOffset = yOffset;\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n this.rectObserver.observe(element);\n\n element.addEventListener('pointermove', this.handlePointerMove);\n element.addEventListener('pointerdown', this.handlePointerDown);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n\n public dispose(): void {\n this.rectObserver.disconnect();\n this.clearCursor();\n this.element?.removeEventListener('pointermove', this.handlePointerMove);\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n window.removeEventListener('pointerup', this.handlePointerUp);\n\n this.element = undefined;\n this.api = undefined;\n }\n\n public async getWorldPositionForPoint(\n pt: Point.Point,\n ): Promise<Vector3.Vector3 | undefined> {\n return this.ifInitialized(async ({ api }) => {\n const vector3 = await api.getWorldPointFromViewport(pt);\n\n return vector3;\n });\n }\n\n public async handlePlacePin(\n pt: Point.Point,\n existingPin?: Pin,\n ): Promise<void> {\n this.ifInitialized(async ({ api }) => {\n const [hit] = await api.hitItems(pt);\n\n if (hit?.hitPoint != null && this.elementRect != null) {\n if (\n hit?.hitPoint != null &&\n hit?.hitPoint.x != null &&\n hit?.hitPoint.y != null &&\n hit?.hitPoint.z != null\n ) {\n const pinId = existingPin != null ? existingPin.id : UUID.create();\n\n const attributes =\n this.controller.getStyleAttributes() != null\n ? {\n style: this.controller.getStyleAttributes(),\n }\n : undefined;\n\n switch (this.controller.getToolType()) {\n case 'pin-icon':\n this.controller.setPin({\n type: 'icon',\n id: pinId,\n worldPosition: {\n x: hit?.hitPoint?.x,\n y: hit?.hitPoint.y,\n z: hit?.hitPoint.z,\n },\n partId: hit?.itemId?.hex ?? undefined,\n attributes,\n });\n break;\n case 'pin-text':\n const isNewPin = existingPin == null;\n const relativePoint = translatePointToRelative(\n pt,\n this.elementRect,\n isNewPin,\n this.xOffset,\n this.yOffset,\n );\n this.controller.setPin({\n type: 'text',\n id: pinId,\n worldPosition: {\n x: hit?.hitPoint?.x,\n y: hit?.hitPoint.y,\n z: hit?.hitPoint.z,\n },\n partId: hit?.itemId?.hex ?? undefined,\n label: {\n point: relativePoint,\n },\n attributes,\n });\n this.controller.setSelectedPinId(pinId);\n break;\n }\n }\n } else {\n this.controller.setSelectedPinId();\n }\n });\n }\n\n private handlePointerMove = async (event: PointerEvent): Promise<void> => {\n const isDroppableSurface = await this.isDroppableSurface(event);\n const draggable = this.controller.getDraggable();\n if (draggable != null && isDroppableSurface) {\n this.handleDrag(draggable, event);\n }\n\n if (\n this.controller.getDraggable() == null &&\n this.controller.getToolMode() === 'edit' &&\n isDroppableSurface\n ) {\n this.addCursor(this.getCursorType());\n } else {\n this.clearCursor();\n }\n };\n\n private getCursorType(): Cursor {\n switch (this.controller.getToolType()) {\n case 'pin-icon':\n return pinCursor;\n case 'pin-text':\n return labelPinCursor;\n }\n }\n\n private handleDrag = async (\n draggable: Draggable,\n event: PointerEvent,\n ): Promise<void> => {\n const pt = getMouseClientPosition(event, this.elementRect);\n const worldPosition = await this.getWorldPositionForPoint(pt);\n\n if (worldPosition != null) {\n this.controller.updateDraggable(\n {\n ...draggable,\n lastPoint: pt,\n },\n worldPosition,\n );\n }\n };\n\n private handlePointerDown = async (\n pointerDown: PointerEvent,\n ): Promise<Disposable> => {\n const pointerUp = (pointerUp: PointerEvent): void => {\n const distanceBetweenStartAndEndPoint = Point.distance(\n Point.create(pointerDown.clientX, pointerUp.clientY),\n Point.create(pointerUp.clientX, pointerUp.clientY),\n );\n\n if (distanceBetweenStartAndEndPoint <= 2 && pointerDown.buttons !== 2) {\n if (this.controller.getToolMode() === 'edit') {\n const pt = getMouseClientPosition(pointerDown, this.elementRect);\n\n this.handlePlacePin(pt);\n }\n }\n\n dispose();\n };\n\n const dispose = (): void => {\n window.removeEventListener('pointerup', pointerUp);\n };\n\n window.addEventListener('pointerup', pointerUp);\n\n return {\n dispose,\n };\n };\n\n private handlePointerUp = async (): Promise<void> => {\n const draggable = this.controller.getDraggable();\n const lastPoint = draggable?.lastPoint;\n\n this.controller.setDraggable(undefined);\n\n if (lastPoint != null && draggable != null) {\n this.ifInitialized(async ({ api }) => {\n const [hit] = await api.hitItems(lastPoint);\n\n if (\n hit?.hitPoint != null &&\n hit?.hitPoint?.x != null &&\n hit?.hitPoint?.y != null &&\n hit?.hitPoint?.z != null\n ) {\n this.controller.updateDraggable(\n {\n ...draggable,\n lastPoint,\n },\n {\n x: hit?.hitPoint?.x,\n y: hit?.hitPoint.y,\n z: hit?.hitPoint.z,\n },\n hit?.partId?.hex ?? undefined,\n );\n }\n });\n }\n };\n\n private addCursor(cursor: Cursor): void {\n this.clearCursor();\n this.cursor = this.ifInitialized(({ api }) => api.addCursor(cursor));\n }\n\n private async isDroppableSurface(event: PointerEvent): Promise<boolean> {\n const pt = getMouseClientPosition(event, this.elementRect);\n const type = await this.api?.getEntityTypeAtPoint(pt);\n\n return type != null && this.droppableSurfaces.includes(type);\n }\n\n protected ifInitialized<R>(\n f: (data: { element: HTMLElement; api: InteractionApi }) => R,\n ): R {\n if (this.element != null && this.api != null) {\n return f({ element: this.element, api: this.api });\n } else {\n throw new Error('Pins interaction handler not initialized.');\n }\n }\n\n private clearCursor(): void {\n this.cursor?.dispose();\n this.cursor = undefined;\n }\n}\n",":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n pointer-events: none;\n\n /**\n * @prop --viewer-pin-tool-initial-label-offset-x: The number of pixels to offset\n the label in the x direction. Defaults to 20.\n */\n --viewer-pin-tool-initial-label-offset-x: 20;\n\n /**\n * @prop --viewer-pin-tool-initial-label-offset-y: The number of pixels to offset\n the label in the y direction. Defaults to 20.\n */\n --viewer-pin-tool-initial-label-offset-y: 20;\n}\n","import {\n Component,\n Element,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Matrix4 } from '@vertexvis/geometry';\nimport { Color, Disposable } from '@vertexvis/utils';\n\nimport { PinController } from '../../lib/pins/controller';\nimport { PinsInteractionHandler } from '../../lib/pins/interactions';\nimport {\n Pin,\n PinModel,\n ViewerPinToolMode,\n ViewerPinToolType,\n} from '../../lib/pins/model';\nimport { getMarkupBoundingClientRect } from '../viewer-markup/dom';\n\ninterface StateMap {\n shouldClearDepthBuffers?: boolean;\n shouldClearFeatureMaps?: boolean;\n shouldClearCameraControls?: boolean;\n shouldClearKeyboardControls?: boolean;\n}\n\n@Component({\n tag: 'vertex-viewer-pin-tool',\n styleUrl: 'viewer-pin-tool.css',\n shadow: true,\n})\nexport class ViewerPinTool {\n /**\n * The controller that is responsible for drawing pins and updating the model\n */\n @Prop({ mutable: true })\n public pinController?: PinController;\n\n /**\n * The model that contains the entities and outcomes from performing pin annotations\n */\n @Prop()\n public pinModel: PinModel = new PinModel();\n\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 type of pin.\n *\n * This property will automatically be set.\n */\n @Prop({ mutable: true })\n public tool: ViewerPinToolType = 'pin-icon';\n\n /**\n * The mode of the pin tool\n */\n @Prop({ mutable: true })\n public mode: ViewerPinToolMode = 'view';\n\n /**\n * The primary color for new pins. Setting this will override the primary template color, and will be used for any new\n * pins created with this `vertex-viewer-pin-tool`. This styling applies to pin anchors, and borders, etc.\n */\n @Prop({ mutable: true })\n public primaryColor: Color.Color | string | undefined;\n\n /**\n * The accent color for new pins. Setting this will override the accent template color, and will be used for any new\n * pins created with this `vertex-viewer-pin-tool`. This styling applies to some background colors, etc\n */\n @Prop({ mutable: true })\n public accentColor: Color.Color | string | undefined;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private pins: Pin[] = [];\n\n @State()\n private selectedPinId?: string;\n\n @State()\n private elementBounds?: DOMRect;\n\n @State()\n private projectionViewMatrix?: Matrix4.Matrix4;\n\n private registeredInteractionHandler?: Promise<Disposable>;\n private onEntitiesChangedHandler?: Disposable;\n private onEntityAddedHandler?: Disposable;\n\n private resizeObserver?: ResizeObserver;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected watchModeChange(): void {\n this.pinController?.setToolMode(this.mode);\n this.setupInteractionHandler();\n\n if (this.mode === 'edit') {\n this.setFeatureMaps();\n this.setCameraAndKeyboardControls();\n } else {\n this.resetFeatureMaps();\n this.resetCameraAndKeyboardControls();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('tool')\n protected watchTypeChange(): void {\n this.pinController?.setToolType(this.tool);\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('accentColor')\n protected watchAccentColorChange(): void {\n this.pinController?.setAccentColor(this.accentColor);\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('primaryColor')\n protected watchPrimaryColorChange(): void {\n this.pinController?.setPrimaryColor(this.primaryColor);\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('pins')\n protected watchPinsChange(): void {\n if (this.pins.length > 0) {\n this.setDepthBuffers();\n this.setFeatureMaps();\n } else {\n this.resetDepthBuffers();\n this.resetFeatureMaps();\n }\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setDepthBuffers();\n this.setFeatureMaps();\n this.setCameraAndKeyboardControls();\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.updateViewport();\n this.setupController();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n this.setFeatureMaps();\n this.setCameraAndKeyboardControls();\n\n this.pinModel.onEntitiesChanged((entities) => {\n this.pins = entities;\n });\n\n this.pinModel.onSelectionChange((selectedId) => {\n this.selectedPinId = selectedId;\n });\n\n this.handleViewerChanged(this.viewer, undefined);\n }\n\n protected componentDidLoad(): void {\n this.resizeObserver = new ResizeObserver(() => this.updateViewport());\n this.resizeObserver.observe(this.hostEl);\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.clearModelListeners();\n this.resetDepthBuffers();\n this.resetFeatureMaps();\n this.resetCameraAndKeyboardControls();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement,\n ): void {\n this.setupInteractionHandler();\n this.setDepthBuffers();\n this.setFeatureMaps();\n this.setCameraAndKeyboardControls();\n\n if (oldViewer != null) {\n oldViewer.removeEventListener(\n 'frameDrawn',\n this.handleSetProjectionMatrix,\n );\n }\n\n if (newViewer != null) {\n newViewer.addEventListener('frameDrawn', this.handleSetProjectionMatrix);\n }\n\n this.handleSetProjectionMatrix();\n }\n\n private handleSetProjectionMatrix = (): void => {\n this.projectionViewMatrix =\n this.viewer?.frame?.scene.camera.projectionViewMatrix;\n };\n\n protected render(): JSX.Element {\n return (\n <Host>\n <vertex-viewer-dom-renderer viewer={this.viewer} drawMode=\"2d\">\n {this.pins.map((pin) => {\n return (\n <vertex-viewer-pin-group\n id={`pin-group-${pin.id}`}\n data-is-dom-group-element={true}\n pin={pin}\n elementBounds={this.elementBounds}\n pinModel={this.pinModel}\n pinController={this.pinController}\n projectionViewMatrix={this.projectionViewMatrix}\n selected={this.selectedPinId === pin.id}\n ></vertex-viewer-pin-group>\n );\n })}\n </vertex-viewer-dom-renderer>\n </Host>\n );\n }\n\n private setupController(): void {\n const attributes =\n this.accentColor || this.primaryColor\n ? {\n accentColor: this.accentColor,\n primaryColor: this.primaryColor,\n }\n : undefined;\n this.pinController = new PinController(\n this.pinModel,\n this.mode,\n this.tool,\n attributes,\n );\n }\n\n private clearInteractionHandler(): void {\n this.registeredInteractionHandler?.then((handler) => handler.dispose());\n this.registeredInteractionHandler = undefined;\n }\n\n private setupInteractionHandler(): void {\n const hostStyles = window.getComputedStyle(this.hostEl);\n\n const xOffset = hostStyles\n .getPropertyValue('--viewer-pin-tool-initial-label-offset-x')\n .trim();\n const xOffsetAsNumber = Number.isFinite(Number.parseInt(xOffset))\n ? Number.parseInt(xOffset)\n : 20;\n\n const yOffset = hostStyles\n .getPropertyValue('--viewer-pin-tool-initial-label-offset-y')\n .trim();\n const yOffsetAsNumber = Number.isFinite(Number.parseInt(yOffset))\n ? Number.parseInt(yOffset)\n : 20;\n\n this.clearInteractionHandler();\n\n if (this.pinController != null) {\n this.registeredInteractionHandler =\n this.viewer?.registerInteractionHandler(\n new PinsInteractionHandler(\n this.pinController,\n xOffsetAsNumber,\n yOffsetAsNumber,\n ),\n );\n }\n }\n\n private clearModelListeners(): void {\n this.onEntitiesChangedHandler?.dispose();\n this.onEntitiesChangedHandler = undefined;\n this.onEntityAddedHandler?.dispose();\n this.onEntityAddedHandler = undefined;\n this.resizeObserver?.disconnect();\n }\n\n private updateViewport(): void {\n this.elementBounds = getMarkupBoundingClientRect(this.hostEl);\n }\n\n private setDepthBuffers(): void {\n if (\n this.pins.length > 0 &&\n this.viewer != null &&\n this.viewer.depthBuffers == null\n ) {\n this.stateMap.shouldClearDepthBuffers = true;\n this.viewer.depthBuffers = 'final';\n }\n }\n\n private resetDepthBuffers(): void {\n if (this.stateMap.shouldClearDepthBuffers && this.viewer != null) {\n this.viewer.depthBuffers = undefined;\n this.stateMap.shouldClearDepthBuffers = undefined;\n }\n }\n\n private setFeatureMaps(): void {\n if (\n (this.pins.length > 0 || this.mode === 'edit') &&\n this.viewer != null &&\n this.viewer.featureMaps == null\n ) {\n this.stateMap.shouldClearFeatureMaps = true;\n this.viewer.featureMaps = 'final';\n }\n }\n\n private resetFeatureMaps(): void {\n if (this.stateMap.shouldClearFeatureMaps && this.viewer != null) {\n this.viewer.featureMaps = undefined;\n this.stateMap.shouldClearFeatureMaps = undefined;\n }\n }\n\n private setCameraAndKeyboardControls(): void {\n if (this.mode === 'edit' && this.viewer != null) {\n // Check camera controls\n if (this.viewer.cameraControls) {\n this.stateMap.shouldClearCameraControls = true;\n this.viewer.cameraControls = false;\n }\n\n // Check keyboard controls\n if (this.viewer.keyboardControls) {\n this.stateMap.shouldClearKeyboardControls = true;\n this.viewer.keyboardControls = false;\n }\n }\n }\n\n private resetCameraAndKeyboardControls(): void {\n if (this.viewer != null) {\n if (this.stateMap.shouldClearCameraControls) {\n this.viewer.cameraControls = true;\n this.stateMap.shouldClearCameraControls = undefined;\n }\n\n if (this.stateMap.shouldClearKeyboardControls) {\n this.viewer.keyboardControls = true;\n this.stateMap.shouldClearKeyboardControls = undefined;\n }\n }\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 i,t,p as s,H as n,d as o,e as l}from"./p-Bb32XUUS.js";import{p as e,v as h,r as a,b as r,a as d,m as u,h as v,g as c,q as f,e as w,c as p}from"./p-DDQcM-So.js";import{c as g}from"./p-C6gMOKYg.js";import{w as x,r as y}from"./p-Cd7kap5W.js";import{T as b}from"./p-D33gVA2W.js";import{A as m,D as z}from"./p-B9R0QWr4.js";import{E as T}from"./p-CHdoymO5.js";import{d as D,T as C,R,e as P,r as S,s as E,x as A,A as U,b as H,y as I,z as F,f as N,g as O,h as M,i as k,j as $}from"./p-abSJ29r7.js";function j(i){if(window.document.activeElement!==i){i.focus();i.setSelectionRange(i.value.length,i.value.length)}}function B(i,t){return t!=null?e.create(i.x-t.left,i.y-t.top):undefined}function J(i,t,s,n){const o=n!=null?h.fromMatrixPosition(n):undefined;if(i!=null&&t!=null&&s!=null&&o!=null){const n=s.transformPointToRay(i,t.image,t.scene.camera);if(t.scene.camera.isOrthographic()){const i=a.at(a.create({origin:o,direction:t.scene.camera.direction}),h.magnitude(t.scene.camera.viewVector)*2);return a.intersectPlane(n,r.fromNormalAndCoplanarPoint(t.scene.camera.direction,i))}else{return a.intersectPlane(n,r.fromNormalAndCoplanarPoint(t.scene.camera.direction,o))}}return undefined}function X(i,t,s,n,o,l){return u.multiply(i,_(t,s,n,o,l))}function _(i,t,s,n,o){const l=new z(n);const e=new m(o);const a=()=>e.convertFrom(t-s);const r=()=>l.convertRealValueToWorld(t-s);switch(i){case"x-translate":return u.makeTranslation(h.create(r(),0,0));case"y-translate":return u.makeTranslation(h.create(0,r(),0));case"z-translate":return u.makeTranslation(h.create(0,0,r()));case"x-rotate":return u.makeRotation(f.fromAxisAngle(h.left(),a()));case"y-rotate":return u.makeRotation(f.fromAxisAngle(h.down(),a()));case"z-rotate":return u.makeRotation(f.fromAxisAngle(h.forward(),a()));default:return u.makeIdentity()}}function q(i){switch(i){case"x-rotate":return"xyz";case"y-rotate":return"yzx";case"z-rotate":return"zxy";default:return"xyz"}}function K(i,t,s,n,o){const l=new z(n);const e=new m(o);const a=()=>u.makeRotation(f.fromMatrixRotation(t));const r=()=>u.multiply(t,u.invert(s));const c=()=>h.transformMatrix(h.fromMatrixPosition(r()),u.invert(a()));const w=()=>v.fromRotationMatrix(u.multiply(u.invert(a()),s),q(i));switch(i){case"x-translate":return l.convertWorldValueToReal(c().x);case"y-translate":return l.convertWorldValueToReal(c().y);case"z-translate":return l.convertWorldValueToReal(c().z);case"x-rotate":return e.convertTo(d.normalizeRadians(w().x));case"y-rotate":return e.convertTo(d.normalizeRadians(w().y));case"z-rotate":return e.convertTo(d.normalizeRadians(w().z));default:return 0}}function L(i,t,s,n,o,l){return V(i,h.subtract(s,t),n,o,l)}function V(i,t,s,n,o){switch(o){case"x-translate":return Q(i,t,h.right());case"y-translate":return Q(i,t,h.up());case"z-translate":return Q(i,t,h.back());case"xy-translate":return Z(i,t,h.create(0,0,1));case"xz-translate":return Z(i,t,h.create(0,1,0));case"yz-translate":return Z(i,t,h.create(1,0,0));case"x-rotate":return W(i,s,h.right(),n);case"y-rotate":return W(i,s,h.up(),n);case"z-rotate":return W(i,s,h.forward(),n);default:return i}}function W(i,t,s,n){const o=Y(i,t,s);const l=f.fromAxisAngle(o,n);const e=u.makeRotation(l);return u.multiply(i,e)}function Y(i,t,s){const n=u.makeRotation(f.fromMatrixRotation(i));const o=h.transformMatrix(s,n);const l=h.transformMatrix(h.negate(s),n);return h.dot(t,o)>h.dot(t,l)?s:h.negate(s)}function Q(i,t,s){const n=h.normalize(s);const o=u.makeRotation(f.fromMatrixRotation(i));const l=h.transformMatrix(n,o);const e=h.project(t,l);const a=u.makeTranslation(e);return u.multiply(a,i)}function Z(i,t,s){const n=h.normalize(s);const o=u.makeRotation(f.fromMatrixRotation(i));const l=h.transformMatrix(n,o);const e=h.fromMatrixPosition(i);const a=r.fromNormalAndCoplanarPoint(l,e);const d=r.projectPoint(a,t);const v=h.add(d,h.scale(a.constant,a.normal));const c=u.makeTranslation(v);return u.multiply(c,i)}function G(i,t,s){if(s.length===0){throw new Error("Unable to compute input position. At least one shape point must be provided.")}const n=c.pad(t,5);const o=s.map((t=>i.transformNdcPointToViewport(t)));const l=c.topLeft(n);const h=e.add(l,e.create(n.width,0));const a=c.bottomRight(n);const r=e.subtract(a,e.create(n.width,0));const d=e.scale(o.reduce(((i,t)=>e.add(i,t)),e.create()),1/o.length,1/o.length);const u=[h,r,a].reduce(((i,t)=>e.distance(d,t)<e.distance(d,i)?t:i),l);switch(u){case l:return{point:u,placement:"top-left"};case h:return{point:u,placement:"top-right"};case r:return{point:u,placement:"bottom-left"};default:return{point:u,placement:"bottom-right"}}}function ii(i,t,s,n,o,l){const e=t==="alt"&&i.altKey||t==="ctrl"&&i.ctrlKey||t==="meta"&&i.metaKey||t==="shift"&&i.shiftKey;if(e&&l!=null&&l>0&&Number.isInteger(l)){const i=s-n;const t=d.toDegrees(i);const e=Math.round(t/l)*l;if(o!=null){const i=Math.round(o/l)*l;const t=o-i;const s=e-t;const h=d.toRadians(s);return h+n}else{const i=d.toRadians(e);return i+n}}else{return s}}const ti=({ref:t,bounds:s,viewport:n,point:o,placement:l,displayUnit:e},h)=>{const a=oi(n,s!==null&&s!==void 0?s:w.create(0,0),o,l);return i("div",{ref:t,class:"widget-input wrapper",style:{...a,height:(s===null||s===void 0?void 0:s.height)!=null?`${s.height}px`:undefined}},h,i("div",{class:"widget-input units"},e.unit.abbreviatedName))};const si=({ref:t,identifier:s,disabled:n,onChange:o,onIncrement:l,onDecrement:e,onBlur:h,onUndo:a})=>{const r=i=>{if(i.target!=null){const t=parseFloat(i.target.value);if(!isNaN(t)){o===null||o===void 0?void 0:o(parseFloat(i.target.value))}}};const d=i=>{const t=i.ctrlKey||i.metaKey;if(i.key==="ArrowUp"){l===null||l===void 0?void 0:l()}else if(i.key==="ArrowDown"){e===null||e===void 0?void 0:e()}else if(i.key==="z"&&t&&a){i.preventDefault();a()}};return i("input",{ref:t,disabled:n,class:`widget-input ${s}`,type:"text",onChange:r,onKeyDown:d,onBlur:h})};function ni(i,t){return Math.min(i,Math.max(0,t))}function oi(i,t,s,n,o=5){const{width:l,height:e}=i.dimensions;const h=t.width+o;const a=t.height+o;function r(i){return`${i}px`}switch(n){case"top-left":return{right:r(ni(l-h,l-s.x)),bottom:r(ni(e-a,e-s.y))};case"top-right":return{left:r(ni(l-h,s.x)),bottom:r(ni(e-a,e-s.y))};case"bottom-left":return{right:r(ni(l-h,l-s.x)),top:r(ni(e-a,s.y))};case"bottom-right":default:return{left:r(ni(l-h,s.x)),top:r(ni(e-a,s.y))}}}function li(i,t,s=3,n=1,o=1){return ai(i,t,h.back(),h.up(),s,n,o)}function ei(i,t,s=3,n=1,o=1){return ai(i,t,h.right(),h.back(),s,n,o)}function hi(i,t,s=3,n=1,o=1){return ai(i,t,h.right(),h.up(),s,n,o)}function ai(i,t,s,n,o,l=1,e=1){const r=h.transformMatrix(h.add(s,n),u.makeRotation(f.fromMatrixRotation(i)));const v=h.transformMatrix(s,u.makeRotation(f.fromMatrixRotation(i)));const c=h.transformMatrix(n,u.makeRotation(f.fromMatrixRotation(i)));const w=10*e**.25;const p=h.fromMatrixPosition(i);const g=h.add(p,h.scale(o*w,r));const x=a.create({origin:g,direction:v});const y=a.create({origin:g,direction:c});const b=h.cross(v,c);const m=h.rotateAboutAxis(d.toRadians(45),a.at(y,-(o*l)),b,g);const z=h.rotateAboutAxis(d.toRadians(45),a.at(x,o*l),b,g);const T=h.rotateAboutAxis(d.toRadians(45),a.at(y,o*l),b,g);const C=h.rotateAboutAxis(d.toRadians(45),a.at(x,-(o*l)),b,g);return new D(h.dot(v,t.direction)!==-1&&h.dot(c,t.direction)!==-1,m,C,z,T,h.transformMatrix(m,t.projectionViewMatrix),h.transformMatrix(C,t.projectionViewMatrix),h.transformMatrix(z,t.projectionViewMatrix),h.transformMatrix(T,t.projectionViewMatrix))}function ri(i,t,s,n){if(i instanceof C){return di(i,t,s,n)}return false}function di(i,t,s,n){return ui([i.points.worldLeft,i.points.worldRight,i.points.worldTip],t,s,n)||ui([i.points.worldLeft,i.points.worldRight,i.points.worldBase],t,s,n)}function ui(i,t,s,n){var o;if(i.length===3){const l=s.transformPointToRay(n,t.image,t.scene.camera);const e=h.subtract(i[1],i[0]);const a=h.subtract(i[2],i[0]);const r=p.epsilon((o=p.fromVectors([l.direction,l.origin,e,a]))!==null&&o!==void 0?o:p.create(e,a));const d=h.cross(l.direction,a);const u=h.dot(e,d);if(!(Math.abs(u)>=r)){return false}const v=h.subtract(l.origin,i[0]);const c=h.dot(v,d)/u;if(c<0||c>1){return false}const f=h.cross(v,e);const w=h.dot(l.direction,f)/u;if(w<0||c+w>1){return false}const g=h.dot(a,f)/u;return!isNaN(g)&&(g>0||t.scene.camera.isOrthographic())}return false}class vi extends R{constructor(i,t={},s={}){var n,o,l,e,h,a,r,d,u,v,c,f,w,p;super(i);this.customization=t;this.disabledAxis={xTranslation:false,yTranslation:false,zTranslation:false,xyTranslation:false,xzTranslation:false,yzTranslation:false,xRotation:false,yRotation:false,zRotation:false};this.axisLines=[];this.rotationLines=[];this.translationMeshes=[];this.rotationMeshes=[];this.hoveredChanged=new T;this.xArrowFillColor=(n=t.colors)===null||n===void 0?void 0:n.xArrow;this.yArrowFillColor=(o=t.colors)===null||o===void 0?void 0:o.yArrow;this.zArrowFillColor=(l=t.colors)===null||l===void 0?void 0:l.zArrow;this.hoveredArrowFillColor=(e=t.colors)===null||e===void 0?void 0:e.hovered;this.outlineColor=(h=t.colors)===null||h===void 0?void 0:h.outline;this.disabledAxis.xTranslation=(a=s.xTranslation)!==null&&a!==void 0?a:false;this.disabledAxis.yTranslation=(r=s.yTranslation)!==null&&r!==void 0?r:false;this.disabledAxis.zTranslation=(d=s.zTranslation)!==null&&d!==void 0?d:false;this.disabledAxis.xyTranslation=(u=s.xyTranslation)!==null&&u!==void 0?u:false;this.disabledAxis.xzTranslation=(v=s.xzTranslation)!==null&&v!==void 0?v:false;this.disabledAxis.yzTranslation=(c=s.yzTranslation)!==null&&c!==void 0?c:false;this.disabledAxis.xRotation=(f=s.xRotation)!==null&&f!==void 0?f:false;this.disabledAxis.yRotation=(w=s.yRotation)!==null&&w!==void 0?w:false;this.disabledAxis.zRotation=(p=s.zRotation)!==null&&p!==void 0?p:false}dispose(){var i;(i=this.reglFrameDisposable)===null||i===void 0?void 0:i.cancel()}getDrawableElements(){return this.drawableElements}getFullBounds(){return this.fullBounds}boundsContainsPoint(i){return this.interactiveBounds!=null&&this.frame!=null&&c.containsPoints(this.interactiveBounds,i)}updateDisabledAxis(i){this.disabledAxis={...this.disabledAxis,...i};this.updateDisabledOnDrawables()}updateCursor(i){this.cursor=i;if(i!=null&&this.frame!=null){this.updateHovered()}else{this.clearHovered()}}updateTransform(i){var t;this.transform=i;if(i!=null&&this.frame!=null){this.updateAndDraw()}else{this.clear();(t=this.reglFrameDisposable)===null||t===void 0?void 0:t.cancel();this.reglFrameDisposable=undefined}}updateColors(i={}){var t,s,n,o,l,e,h,a,r,d,u,v,c,f,w,p;this.xArrowFillColor=(t=i.xArrow)!==null&&t!==void 0?t:this.xArrowFillColor;this.yArrowFillColor=(s=i.yArrow)!==null&&s!==void 0?s:this.yArrowFillColor;this.zArrowFillColor=(n=i.zArrow)!==null&&n!==void 0?n:this.zArrowFillColor;this.twoAxesSquareFillColor=(o=i.twoAxesSquare)!==null&&o!==void 0?o:this.twoAxesSquareFillColor;this.hoveredArrowFillColor=(l=i.hovered)!==null&&l!==void 0?l:this.hoveredArrowFillColor;this.outlineColor=(e=i.outline)!==null&&e!==void 0?e:this.outlineColor;(h=this.xArrow)===null||h===void 0?void 0:h.updateFillColor(this.getXTranslationColor(),true);(a=this.yArrow)===null||a===void 0?void 0:a.updateFillColor(this.getYTranslationColor(),true);(r=this.zArrow)===null||r===void 0?void 0:r.updateFillColor(this.getZTranslationColor(),true);(d=this.xRotation)===null||d===void 0?void 0:d.updateFillColor(this.getXRotationColor(),true);(u=this.yRotation)===null||u===void 0?void 0:u.updateFillColor(this.getYRotationColor(),true);(v=this.zRotation)===null||v===void 0?void 0:v.updateFillColor(this.getZRotationColor(),true);(c=this.xyTranslation)===null||c===void 0?void 0:c.updateFillColor(this.getTwoAxesTranslationColor(),true);(f=this.xzTranslation)===null||f===void 0?void 0:f.updateFillColor(this.getTwoAxesTranslationColor(),true);(w=this.yzTranslation)===null||w===void 0?void 0:w.updateFillColor(this.getTwoAxesTranslationColor(),true);(p=this.hoveredElement)===null||p===void 0?void 0:p.updateFillColor(this.hoveredArrowFillColor)}updateScalars(i){this.customization={...this.customization,scalars:i};if(this.transform!=null&&this.frame!=null){this.updateElements(this.transform,this.frame)}}onHoveredChanged(i){return this.hoveredChanged.on(i)}updateDisabledOnDrawables(){var i,t,s,n,o,l,e,h,a,r,d,u,v,c,f;(i=this.xRotation)===null||i===void 0?void 0:i.setDisabled(this.disabledAxis.xRotation);(t=this.xyRotationLine)===null||t===void 0?void 0:t.setDisabled(this.disabledAxis.xRotation);(s=this.xzRotationLine)===null||s===void 0?void 0:s.setDisabled(this.disabledAxis.xRotation);(n=this.yRotation)===null||n===void 0?void 0:n.setDisabled(this.disabledAxis.yRotation);(o=this.yzRotationLine)===null||o===void 0?void 0:o.setDisabled(this.disabledAxis.yRotation);(l=this.yxRotationLine)===null||l===void 0?void 0:l.setDisabled(this.disabledAxis.yRotation);(e=this.zRotation)===null||e===void 0?void 0:e.setDisabled(this.disabledAxis.zRotation);(h=this.zxRotationLine)===null||h===void 0?void 0:h.setDisabled(this.disabledAxis.zRotation);(a=this.zyRotationLine)===null||a===void 0?void 0:a.setDisabled(this.disabledAxis.zRotation);(r=this.xArrow)===null||r===void 0?void 0:r.setDisabled(this.disabledAxis.xTranslation);(d=this.yArrow)===null||d===void 0?void 0:d.setDisabled(this.disabledAxis.yTranslation);(u=this.zArrow)===null||u===void 0?void 0:u.setDisabled(this.disabledAxis.zTranslation);(v=this.xyTranslation)===null||v===void 0?void 0:v.setDisabled(this.disabledAxis.xyTranslation);(c=this.xzTranslation)===null||c===void 0?void 0:c.setDisabled(this.disabledAxis.xzTranslation);(f=this.yzTranslation)===null||f===void 0?void 0:f.setDisabled(this.disabledAxis.yzTranslation);this.updateColors()}updateHovered(){var i,t,s,n,o,l,e,h,a,r;const d=this.hoveredElement;const u=this.frame;if(u!=null){this.hoveredElement=[...this.translationMeshes,...this.rotationMeshes].filter((i=>i.points.valid&&!i.isDisabled())).find((i=>this.cursor!=null?ri(i,u,this.viewport,this.cursor):false));if(this.hoveredElement!==d){this.hoveredChanged.emit(this.hoveredElement);(i=this.hoveredElement)===null||i===void 0?void 0:i.updateFillColor(this.hoveredArrowFillColor);this.clearFillColorOfPreviouslyHovered(d);if(((t=this.hoveredElement)===null||t===void 0?void 0:t.identifier)==="xy-translate"){(s=this.xArrow)===null||s===void 0?void 0:s.updateFillColor(this.hoveredArrowFillColor);(n=this.yArrow)===null||n===void 0?void 0:n.updateFillColor(this.hoveredArrowFillColor)}else if(((o=this.hoveredElement)===null||o===void 0?void 0:o.identifier)==="xz-translate"){(l=this.xArrow)===null||l===void 0?void 0:l.updateFillColor(this.hoveredArrowFillColor);(e=this.zArrow)===null||e===void 0?void 0:e.updateFillColor(this.hoveredArrowFillColor)}else if(((h=this.hoveredElement)===null||h===void 0?void 0:h.identifier)==="yz-translate"){(a=this.yArrow)===null||a===void 0?void 0:a.updateFillColor(this.hoveredArrowFillColor);(r=this.zArrow)===null||r===void 0?void 0:r.updateFillColor(this.hoveredArrowFillColor)}}}}clearHovered(){const i=this.hoveredElement;this.hoveredElement=undefined;if(this.hoveredElement!==i){this.hoveredChanged.emit(this.hoveredElement);this.clearFillColorOfPreviouslyHovered(i)}}clearFillColorOfPreviouslyHovered(i){var t,s,n,o,l,e,h,a,r,d,u,v;i===null||i===void 0?void 0:i.updateFillColor(i===null||i===void 0?void 0:i.initialFillColor);if((i===null||i===void 0?void 0:i.identifier)==="xy-translate"){(t=this.xArrow)===null||t===void 0?void 0:t.updateFillColor((s=this.xArrow)===null||s===void 0?void 0:s.initialFillColor);(n=this.yArrow)===null||n===void 0?void 0:n.updateFillColor((o=this.yArrow)===null||o===void 0?void 0:o.initialFillColor)}else if((i===null||i===void 0?void 0:i.identifier)==="xz-translate"){(l=this.xArrow)===null||l===void 0?void 0:l.updateFillColor((e=this.xArrow)===null||e===void 0?void 0:e.initialFillColor);(h=this.zArrow)===null||h===void 0?void 0:h.updateFillColor((a=this.zArrow)===null||a===void 0?void 0:a.initialFillColor)}else if((i===null||i===void 0?void 0:i.identifier)==="yz-translate"){(r=this.yArrow)===null||r===void 0?void 0:r.updateFillColor((d=this.yArrow)===null||d===void 0?void 0:d.initialFillColor);(u=this.zArrow)===null||u===void 0?void 0:u.updateFillColor((v=this.zArrow)===null||v===void 0?void 0:v.initialFillColor)}}hasData(){return this.transform!=null}createOrUpdateElements(){if(this.transform!=null&&this.frame!=null){if(this.xArrow==null||this.yArrow==null||this.zArrow==null){this.createElements(this.transform,this.frame)}else{this.updateElements(this.transform,this.frame)}this.interactiveBounds=P(this.viewport,...this.rotationMeshes,...this.translationMeshes);this.fullBounds=P(this.viewport,...this.rotationMeshes,...this.translationMeshes,...this.axisLines)}}createElements(i,t){var s,n,o,l,e,a,r,d,u,v,c,f;this.reglCommand=S({canvas:this.canvasElement,extensions:"angle_instanced_arrays"});const{createShape:w}=E(this.reglCommand);const p=this.computeTriangleSize(h.fromMatrixPosition(i),t);this.xArrow=new C(w,"x-translate",A(i,t.scene.camera,p,(s=this.customization.scalars)===null||s===void 0?void 0:s.xTranslation),this.outlineColor,this.getXTranslationColor());this.xRotation=new C(w,"x-rotate",li(i,t.scene.camera,p,(n=this.customization.scalars)===null||n===void 0?void 0:n.xRotation,(o=this.customization.scalars)===null||o===void 0?void 0:o.xTranslation),this.outlineColor,this.getXRotationColor());this.xAxis=new U(w,"x-axis",H(i,t.scene.camera,this.xArrow),this.outlineColor,this.getXTranslationColor());this.yArrow=new C(w,"y-translate",I(i,t.scene.camera,p,(l=this.customization.scalars)===null||l===void 0?void 0:l.yTranslation),this.outlineColor,this.getYTranslationColor());this.yRotation=new C(w,"y-rotate",ei(i,t.scene.camera,p,(e=this.customization.scalars)===null||e===void 0?void 0:e.yRotation,(a=this.customization.scalars)===null||a===void 0?void 0:a.yTranslation),this.outlineColor,this.getYRotationColor());this.yAxis=new U(w,"y-axis",H(i,t.scene.camera,this.yArrow),this.outlineColor,this.getYTranslationColor());this.zArrow=new C(w,"z-translate",F(i,t.scene.camera,p,(r=this.customization.scalars)===null||r===void 0?void 0:r.zTranslation),this.outlineColor,this.getZTranslationColor());this.zAxis=new U(w,"z-axis",H(i,t.scene.camera,this.zArrow),this.outlineColor,this.getZTranslationColor());this.zRotation=new C(w,"z-rotate",hi(i,t.scene.camera,p,(d=this.customization.scalars)===null||d===void 0?void 0:d.zRotation,(u=this.customization.scalars)===null||u===void 0?void 0:u.zTranslation),this.outlineColor,this.getZRotationColor());this.xyTranslation=new C(w,"xy-translate",N(i,t.scene.camera,p,(v=this.customization.scalars)===null||v===void 0?void 0:v.xyTranslation),this.outlineColor,this.getTwoAxesTranslationColor());this.xzTranslation=new C(w,"xz-translate",O(i,t.scene.camera,p,(c=this.customization.scalars)===null||c===void 0?void 0:c.xzTranslation),this.outlineColor,this.getTwoAxesTranslationColor());this.yzTranslation=new C(w,"yz-translate",M(i,t.scene.camera,p,(f=this.customization.scalars)===null||f===void 0?void 0:f.yzTranslation),this.outlineColor,this.getTwoAxesTranslationColor());this.createRotationLines(w,i,t);this.axisLines=[this.xAxis,this.yAxis,this.zAxis];this.translationMeshes=[this.xArrow,this.yArrow,this.zArrow,this.xyTranslation,this.xzTranslation,this.yzTranslation];this.rotationMeshes=[this.xRotation,this.yRotation,this.zRotation];this.updateDisabledOnDrawables();this.availableElements=[...this.axisLines,...this.rotationLines,...this.translationMeshes,...this.rotationMeshes]}getXRotationColor(){return this.xArrowFillColor}getYRotationColor(){return this.yArrowFillColor}getZRotationColor(){return this.zArrowFillColor}getXTranslationColor(){return this.xArrowFillColor}getYTranslationColor(){return this.yArrowFillColor}getZTranslationColor(){return this.zArrowFillColor}getTwoAxesTranslationColor(){return this.twoAxesSquareFillColor}createRotationLines(i,t,s){var n,o,l,e,a,r;const d=this.computeTriangleSize(h.fromMatrixPosition(t),s);const u=k(s.scene.camera,this.xRotation,(n=this.yArrow)===null||n===void 0?void 0:n.points.worldTip,d);const v=k(s.scene.camera,this.xRotation,(o=this.zArrow)===null||o===void 0?void 0:o.points.worldTip,d);const c=k(s.scene.camera,this.yRotation,(l=this.xArrow)===null||l===void 0?void 0:l.points.worldTip,d);const f=k(s.scene.camera,this.yRotation,(e=this.zArrow)===null||e===void 0?void 0:e.points.worldTip,d);const w=k(s.scene.camera,this.zRotation,(a=this.xArrow)===null||a===void 0?void 0:a.points.worldTip,d);const p=k(s.scene.camera,this.zRotation,(r=this.yArrow)===null||r===void 0?void 0:r.points.worldTip,d);if(u!=null){this.xyRotationLine=new $(i,"xy-rotation-line",u,this.outlineColor)}if(v!=null){this.xzRotationLine=new $(i,"xz-rotation-line",v,this.outlineColor)}if(c!=null){this.yxRotationLine=new $(i,"yx-rotation-line",c,this.outlineColor)}if(f!=null){this.yzRotationLine=new $(i,"yz-rotation-line",f,this.outlineColor)}if(w!=null){this.zxRotationLine=new $(i,"zx-rotation-line",w,this.outlineColor)}if(p!=null){this.zyRotationLine=new $(i,"zy-rotation-line",p,this.outlineColor)}this.rotationLines=[this.xyRotationLine,this.xzRotationLine,this.yxRotationLine,this.yzRotationLine,this.zxRotationLine,this.zyRotationLine].filter((i=>i!=null))}updateElements(i,t){var s,n,o,l,e,a,r,d,u,v,c,f,w,p,g,x,y,b,m,z,T,D,C,R,P,S,E,U,$,j;const B=this.computeTriangleSize(h.fromMatrixPosition(i),t);if(this.xArrow!=null){this.xArrow.updatePoints(A(i,t.scene.camera,B,(s=this.customization.scalars)===null||s===void 0?void 0:s.xTranslation));(n=this.xAxis)===null||n===void 0?void 0:n.updatePoints(H(i,t.scene.camera,this.xArrow))}(o=this.xRotation)===null||o===void 0?void 0:o.updatePoints(li(i,t.scene.camera,B,(l=this.customization.scalars)===null||l===void 0?void 0:l.xRotation,(e=this.customization.scalars)===null||e===void 0?void 0:e.xTranslation));if(this.yArrow!=null){this.yArrow.updatePoints(I(i,t.scene.camera,B,(a=this.customization.scalars)===null||a===void 0?void 0:a.yTranslation));(r=this.yAxis)===null||r===void 0?void 0:r.updatePoints(H(i,t.scene.camera,this.yArrow))}(d=this.yRotation)===null||d===void 0?void 0:d.updatePoints(ei(i,t.scene.camera,B,(u=this.customization.scalars)===null||u===void 0?void 0:u.yRotation,(v=this.customization.scalars)===null||v===void 0?void 0:v.yTranslation));if(this.zArrow!=null){this.zArrow.updatePoints(F(i,t.scene.camera,B,(c=this.customization.scalars)===null||c===void 0?void 0:c.zTranslation));(f=this.zAxis)===null||f===void 0?void 0:f.updatePoints(H(i,t.scene.camera,this.zArrow))}(w=this.zRotation)===null||w===void 0?void 0:w.updatePoints(hi(i,t.scene.camera,B,(p=this.customization.scalars)===null||p===void 0?void 0:p.zRotation,(g=this.customization.scalars)===null||g===void 0?void 0:g.zTranslation));(x=this.xyRotationLine)===null||x===void 0?void 0:x.updatePoints(k(t.scene.camera,this.xRotation,(y=this.yArrow)===null||y===void 0?void 0:y.points.worldTip,B));(b=this.xzRotationLine)===null||b===void 0?void 0:b.updatePoints(k(t.scene.camera,this.xRotation,(m=this.zArrow)===null||m===void 0?void 0:m.points.worldTip,B));(z=this.yxRotationLine)===null||z===void 0?void 0:z.updatePoints(k(t.scene.camera,this.yRotation,(T=this.xArrow)===null||T===void 0?void 0:T.points.worldTip,B));(D=this.yzRotationLine)===null||D===void 0?void 0:D.updatePoints(k(t.scene.camera,this.yRotation,(C=this.zArrow)===null||C===void 0?void 0:C.points.worldTip,B));(R=this.zxRotationLine)===null||R===void 0?void 0:R.updatePoints(k(t.scene.camera,this.zRotation,(P=this.xArrow)===null||P===void 0?void 0:P.points.worldTip,B));(S=this.zyRotationLine)===null||S===void 0?void 0:S.updatePoints(k(t.scene.camera,this.zRotation,(E=this.yArrow)===null||E===void 0?void 0:E.points.worldTip,B));if(this.xyTranslation!=null){this.xyTranslation.updatePoints(N(i,t.scene.camera,B,(U=this.customization.scalars)===null||U===void 0?void 0:U.xyTranslation))}if(this.xzTranslation!=null){this.xzTranslation.updatePoints(O(i,t.scene.camera,B,($=this.customization.scalars)===null||$===void 0?void 0:$.xzTranslation))}if(this.yzTranslation!=null){this.yzTranslation.updatePoints(M(i,t.scene.camera,B,(j=this.customization.scalars)===null||j===void 0?void 0:j.yzTranslation))}}}const ci=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-transform-widget-x-axis-arrow-color:var(--x-axis-color);--viewer-transform-widget-y-axis-arrow-color:var(--y-axis-color);--viewer-transform-widget-z-axis-arrow-color:var(--z-axis-color);--viewer-transform-widget-two-axes-square-color:var(--two-axes-color);--viewer-transform-widget-hovered-arrow-color:#ffff00;--viewer-transform-widget-input-width:8em}.widget{position:absolute;top:0;left:0}.widget.hovered{pointer-events:auto}.widget-input.wrapper{position:absolute;pointer-events:auto;display:flex;align-items:center;border:1px solid #444444;border-radius:4px;width:var(--viewer-transform-widget-input-width);text-align:center;background-color:white;box-sizing:border-box}.widget-input.units{position:relative;width:25%;height:100%;padding:0 0.25rem;font-size:0.8125rem;color:#444444}input.widget-input{position:relative;text-align:center;box-sizing:border-box;width:75%;height:100%;outline:none;border-width:0 1px 0 0;border-color:#444444;border-radius:2px 0 0 2px;font-size:0.875rem;color:#444444}input.widget-input.x-translate,input.widget-input.x-rotate{border-left:5px solid var(--viewer-transform-widget-x-axis-arrow-color)}input.widget-input.y-translate,input.widget-input.y-rotate{border-left:5px solid var(--viewer-transform-widget-y-axis-arrow-color)}input.widget-input.z-translate,input.widget-input.z-rotate{border-left:5px solid var(--viewer-transform-widget-z-axis-arrow-color)}input.widget-input:disabled{color:#888888}input.widget-input:focus{outline:none}`;const fi=s(class t extends n{constructor(i){super();if(i!==false){this.__registerHost()}this.__attachShadow();this.positionChanged=o(this,"positionChanged");this.rotationChanged=o(this,"rotationChanged");this.interactionEnded=o(this,"interactionEnded");this.interactionStarted=o(this,"interactionStarted");this.xRotationDisabled=false;this.yRotationDisabled=false;this.zRotationDisabled=false;this.xTranslationDisabled=false;this.yTranslationDisabled=false;this.zTranslationDisabled=false;this.xyTranslationDisabled=false;this.xzTranslationDisabled=false;this.yzTranslationDisabled=false;this.showInputs=true;this.distanceUnit="millimeters";this.angleUnit="degrees";this.decimalPlaces=1;this.rotationSnapKey="shift";this.translationHandleScalar=1;this.rotationHandleScalar=1;this.interactionThrottle=75;this.EXPERIMENTAL_undoKeybindings=false;this.inputValue=0;this.isEndingTransform=false;this.xArrowColor="#ea3324";this.yArrowColor="#4faf32";this.zArrowColor="#0000ff";this.twoAxesSquareColor="#e0e0e0";this.hoveredColor="#ffff00";this.lastAngle=0;this.inputShouldFocus=false;this.handleHoveredDrawableChanged=i=>{this.hovered=i};this.handleViewerFrameDrawn=()=>{this.updatePropsFromViewer()};this.handleViewerDimensionsChange=()=>{x((()=>{if(this.viewer!=null&&this.canvasRef!=null){this.canvasRef.width=this.viewer.viewport.width;this.canvasRef.height=this.viewer.viewport.height;this.updateCanvasBounds(this.canvasRef)}}))};this.handleResize=()=>{if(this.canvasRef!=null){this.updateCanvasBounds(this.canvasRef)}};this.handleInputResize=()=>{if(this.inputWrapperRef!=null){const i=this.inputWrapperRef;y((()=>{this.inputBounds=i.getBoundingClientRect()}))}};this.handleStyleChange=()=>{y((()=>{const i=window.getComputedStyle(this.hostEl);this.xArrowColor=i.getPropertyValue("--viewer-transform-widget-x-axis-arrow-color").trim();this.yArrowColor=i.getPropertyValue("--viewer-transform-widget-y-axis-arrow-color").trim();this.zArrowColor=i.getPropertyValue("--viewer-transform-widget-z-axis-arrow-color").trim();this.twoAxesSquareColor=i.getPropertyValue("--viewer-transform-widget-two-axes-square-color").trim();this.hoveredColor=i.getPropertyValue("--viewer-transform-widget-hovered-arrow-color").trim();this.getTransformWidget().updateColors({xArrow:this.xArrowColor,yArrow:this.yArrowColor,zArrow:this.zArrowColor,twoAxesSquare:this.twoAxesSquareColor,hovered:this.hoveredColor})}))};this.handlePointerMove=i=>{if(this.dragging==null){const t=B(e.create(i.clientX,i.clientY),this.getCanvasBounds());const s=this.getTransformWidget();if(t!=null&&s.boundsContainsPoint(t)){s.updateCursor(t)}else{s.updateCursor(undefined);this.hovered=undefined}}};this.handleBeginDrag=async i=>{var t,s,n;const o=this.getCanvasBounds();if(this.hovered!=null&&o!=null&&this.viewer!=null&&this.position!=null&&this.viewer.frame!=null){this.dragging=this.hovered;if(this.dragging.identifier!==((t=this.lastDragged)===null||t===void 0?void 0:t.identifier)){this.inputValue=0;this.dragStartTransform=this.currentTransform;this.updateInputPosition();this.updateInputValue()}this.lastDragged=undefined;const l=B(e.create(i.clientX,i.clientY),o);const h=this.viewer.viewport.transformWorldToViewport(this.position,this.viewer.frame.scene.camera.projectionViewMatrix);this.lastAngle=l!=null?d.fromPoints(h,l):0;this.lastWorldPosition=J(l,(s=this.viewer)===null||s===void 0?void 0:s.frame,(n=this.viewer)===null||n===void 0?void 0:n.viewport,this.currentTransform);this.interactionStarted.emit();window.removeEventListener("pointermove",this.handlePointerMove);window.addEventListener("pointermove",this.handleDragWithTimer);window.addEventListener("pointerup",this.handleEndTransform)}};this.handleDragWithTimer=async i=>{if(i!=null){i.preventDefault();this.lastMouseEvent=i}if(this.interactionTimer==null){this.interactionTimer=window.setTimeout((async()=>{this.interactionTimer=undefined;await this.handleDrag();this.lastMouseEvent=undefined}),this.interactionThrottle)}};this.handleDrag=async()=>{var i,t,s;const n=this.getCanvasBounds();if(this.dragging!=null&&this.lastWorldPosition!=null&&n!=null&&this.viewer!=null&&this.viewer.frame!=null&&this.position!=null&&this.lastMouseEvent!=null){await((i=this.controller)===null||i===void 0?void 0:i.beginTransform());const o=B(e.create(this.lastMouseEvent.clientX,this.lastMouseEvent.clientY),n);const l=this.viewer.viewport.transformWorldToViewport(this.position,this.viewer.frame.scene.camera.projectionViewMatrix);const h=J(o,(t=this.viewer)===null||t===void 0?void 0:t.frame,(s=this.viewer)===null||s===void 0?void 0:s.viewport,this.currentTransform);if(h!=null&&o!=null&&l!=null){const i=d.fromPoints(l,o);const t=ii(this.lastMouseEvent,this.rotationSnapKey,i,this.lastAngle,this.getDisplayedAngle(),this.rotationSnapDegrees);this.transform(this.lastWorldPosition,h,t-this.lastAngle);this.updateInputPosition();this.updateInputValue();this.lastWorldPosition=h;this.lastAngle=t}}};this.handleEndTransform=async i=>{var t,s;const n=B(e.create(i.clientX,i.clientY),this.getCanvasBounds());const o=this.getTransformWidget();this.lastDragged=this.dragging;this.dragging=undefined;this.lastWorldPosition=undefined;this.lastAngle=0;this.updateInputPosition();this.updateInputValue();o.updateCursor(n);o.updateTransform(this.currentTransform);this.beginEndTransform();window.removeEventListener("pointermove",this.handleDragWithTimer);window.removeEventListener("pointerup",this.handleEndTransform);try{const i=(t=this.controller)===null||t===void 0?void 0:t.getCurrentDelta();await((s=this.controller)===null||s===void 0?void 0:s.endTransform());this.interactionEnded.emit(i)}catch(i){console.error("Failed to end transform interaction",i)}window.addEventListener("pointermove",this.handlePointerMove);this.completeEndTransform()};this.handleInputStep=async i=>{if(this.inputValue!=null&&this.lastInputValue!=null){if(this.isModifyingAngleUnits()){const t=new m(this.angleUnit);const s=t.convertFrom(this.lastInputValue);const n=d.normalizeRadians(s+d.toRadians(i));this.inputValue=t.convertTo(n)}else{this.inputValue=this.lastInputValue+i}await this.updateTransformFromInput(this.inputValue)}};this.handleInputChange=async i=>{await this.updateTransformFromInput(i)};this.handleKeyDown=async i=>{const t=i.ctrlKey||i.metaKey;if(i.key==="z"&&t&&this.EXPERIMENTAL_undoKeybindings){i.stopPropagation();await this.EXPERIMENTAL_undo()}};this.updateTransformFromInput=async i=>{var t,s,n;if(this.lastDragged!=null&&this.currentTransform!=null&&this.startingTransform!=null&&this.lastInputValue!=null){this.currentTransform=X(this.currentTransform,this.lastDragged.identifier,i,this.lastInputValue,this.distanceUnit,this.angleUnit);this.updateInputValue();this.lastInputValue=i;await((t=this.controller)===null||t===void 0?void 0:t.beginTransform());this.getTransformWidget().updateTransform(this.currentTransform);await((s=this.controller)===null||s===void 0?void 0:s.updateTransform(u.multiply(this.currentTransform,u.invert(this.startingTransform))));this.updateInputPosition();await((n=this.controller)===null||n===void 0?void 0:n.endTransformDebounced(this.beginEndTransform,this.completeEndTransform))}};this.updatePropsFromViewer=()=>{const{frame:i}=this.viewer||{};if(i!=null){const t=this.getTransformWidget();t.updateFrame(i,this.dragging==null);this.updateInputPosition()}};this.setupTransformWidget=i=>{var t,s;console.debug(`Initializing transform widget. [initial-position=${JSON.stringify(this.position)}, has-initial-frame=${((t=this.viewer)===null||t===void 0?void 0:t.frame)!=null}]`);const n=this.getTranslationScalar();const o=this.getRotationScalar();this.widget=new vi(i,{colors:{xArrow:this.xArrowColor,yArrow:this.yArrowColor,zArrow:this.zArrowColor,twoAxesSquare:this.twoAxesSquareColor,hovered:this.hoveredColor},scalars:{xTranslation:n,yTranslation:n,zTranslation:n,xyTranslation:o,xzTranslation:o,yzTranslation:o,xRotation:o,yRotation:o,zRotation:o}});if(this.rotation!=null){this.currentTransform=this.getTransformForNewRotation(this.rotation);this.startingTransform=this.currentTransform;this.widget.updateTransform(this.currentTransform)}if(this.position!=null){this.currentTransform=this.getTransformForNewPosition(this.position);this.startingTransform=this.currentTransform;this.widget.updateTransform(this.currentTransform)}if(((s=this.viewer)===null||s===void 0?void 0:s.frame)!=null){this.widget.updateFrame(this.viewer.frame,true)}this.handleSettingDisabledAxis();this.hoveredChangeDisposable=this.widget.onHoveredChanged(this.handleHoveredDrawableChanged);return this.widget};this.updateCanvasBounds=i=>{y((()=>{this.canvasBounds=i.getBoundingClientRect();this.getTransformWidget().updateDimensions(i)}))};this.updateInputValue=()=>{var i,t,s;const n=(i=this.dragging)!==null&&i!==void 0?i:this.lastDragged;const o=(n===null||n===void 0?void 0:n.identifier)==="xy-translate"||(n===null||n===void 0?void 0:n.identifier)==="xz-translate"||(n===null||n===void 0?void 0:n.identifier)==="yz-translate";if(n!=null&&this.currentTransform!=null&&this.dragStartTransform!=null&&!o){this.lastInputValue=this.inputValue;this.inputValue=K(n.identifier,this.currentTransform,this.dragStartTransform,this.distanceUnit,this.angleUnit);if(this.inputRef!=null){const i=(s=(t=this.getDisplayedDistance())!==null&&t!==void 0?t:this.getDisplayedAngle())!==null&&s!==void 0?s:0;const n=`${parseFloat(i.toFixed(this.decimalPlaces))}`;this.inputRef.value=n}}};this.updateInputPosition=()=>{var i,t;const s=(i=this.dragging)!==null&&i!==void 0?i:this.lastDragged;const n=(s===null||s===void 0?void 0:s.identifier)==="xy-translate"||(s===null||s===void 0?void 0:s.identifier)==="xz-translate"||(s===null||s===void 0?void 0:s.identifier)==="yz-translate";if(this.showInputs&&((t=this.viewer)===null||t===void 0?void 0:t.frame)!=null&&this.position!=null&&s!=null&&!n){const i=this.getTransformWidget();const t=i.getFullBounds();this.inputPosition=t!=null?G(this.viewer.viewport,t,s.points.toArray()):undefined}else if(n){this.inputPosition=undefined}};this.beginEndTransform=()=>{const i=this.getTransformWidget();i.updateDisabledAxis({xRotation:true,yRotation:true,zRotation:true,xTranslation:true,yTranslation:true,zTranslation:true,xyTranslation:true,xzTranslation:true,yzTranslation:true});this.isEndingTransform=true};this.completeEndTransform=()=>{const i=this.getTransformWidget();i.updateDisabledAxis({xRotation:this.xRotationDisabled,yRotation:this.yRotationDisabled,zRotation:this.zRotationDisabled,xTranslation:this.xTranslationDisabled,yTranslation:this.yTranslationDisabled,zTranslation:this.zTranslationDisabled,xyTranslation:this.xyTranslationDisabled,xzTranslation:this.xzTranslationDisabled,yzTranslation:this.yzTranslationDisabled});this.isEndingTransform=false;this.inputShouldFocus=true;if(this.currentTransform!=null){this.position=h.fromMatrixPosition(this.currentTransform);this.rotation=v.fromRotationMatrix(this.currentTransform)}};this.isModifyingAngleUnits=()=>{var i,t,s;const n=(t=(i=this.dragging)===null||i===void 0?void 0:i.identifier)!==null&&t!==void 0?t:(s=this.lastDragged)===null||s===void 0?void 0:s.identifier;return!!(n===null||n===void 0?void 0:n.includes("rotate"))};this.getTranslationScalar=()=>{if(this.translationHandleScalar>0){return this.translationHandleScalar}console.warn("Invalid value provided for translation-handle-scalar. Expected a positive value greater than zero.");return 1};this.getRotationScalar=()=>{if(this.rotationHandleScalar>0){return this.rotationHandleScalar}console.warn("Invalid value provided for rotation-handle-scalar. Expected a positive value greater than zero.");return 1};this.getDisplayedUnits=()=>{if(this.isModifyingAngleUnits()){return new m(this.angleUnit)}return new z(this.distanceUnit)};this.getDisplayedAngle=()=>{if(this.isModifyingAngleUnits()){return this.inputValue}};this.getDisplayedDistance=()=>{var i,t,s;const n=(t=(i=this.dragging)===null||i===void 0?void 0:i.identifier)!==null&&t!==void 0?t:(s=this.lastDragged)===null||s===void 0?void 0:s.identifier;if(n===null||n===void 0?void 0:n.includes("translate")){return this.inputValue}};this.getTransformForNewPosition=i=>{if(i!=null){const t=this.currentTransform!=null?this.currentTransform:u.makeIdentity();const s=u.makeRotation(f.fromMatrixRotation(t));const n=u.makeTranslation(i);return u.multiply(n,s)}};this.getTransformForNewRotation=i=>{const t=this.currentTransform!=null?this.currentTransform:u.makeIdentity();const s=u.invert(u.makeRotation(f.fromMatrixRotation(t)));const n=u.makeRotation(f.fromEuler(i));const o=u.multiply(t,s);return u.multiply(o,n)};this.getCanvasBounds=()=>{if(this.canvasBounds!=null){return this.canvasBounds}else if(this.canvasRef!=null){this.updateCanvasBounds(this.canvasRef);return this.canvasBounds}};this.getTransformWidget=()=>{if(this.widget==null&&this.canvasRef!=null){return this.setupTransformWidget(this.canvasRef)}else if(this.widget!=null){return this.widget}else{throw new Error("Transform widget was not initialized. The canvas element may not have been initialized.")}}}componentDidLoad(){window.addEventListener("pointermove",this.handlePointerMove);this.canvasResizeObserver=new ResizeObserver(this.handleResize);this.inputResizeObserver=new ResizeObserver(this.handleInputResize);this.hostStyleObserver=new MutationObserver(this.handleStyleChange);if(this.canvasRef!=null){this.canvasResizeObserver.observe(this.canvasRef);this.setupTransformWidget(this.canvasRef)}this.hostStyleObserver.observe(this.hostEl,{attributes:true,attributeFilter:["style"]});this.handleViewerChanged(this.viewer,undefined);this.handleStyleChange()}disconnectedCallback(){var i,t,s,n,o;window.removeEventListener("pointermove",this.handlePointerMove);(i=this.canvasResizeObserver)===null||i===void 0?void 0:i.disconnect();(t=this.inputResizeObserver)===null||t===void 0?void 0:t.disconnect();(s=this.hostStyleObserver)===null||s===void 0?void 0:s.disconnect();(n=this.hoveredChangeDisposable)===null||n===void 0?void 0:n.dispose();(o=this.widget)===null||o===void 0?void 0:o.dispose()}componentDidRender(){if(this.inputShouldFocus&&this.inputRef!=null){j(this.inputRef);this.inputShouldFocus=false}}async EXPERIMENTAL_undo(){var i,t;const s=await((i=this.controller)===null||i===void 0?void 0:i.EXPERIMENTAL_undoTransform());if(this.currentTransform!=null&&s!=null){this.currentTransform=u.multiply(s,this.currentTransform);(t=this.widget)===null||t===void 0?void 0:t.updateTransform(this.currentTransform);this.updateInputPosition();this.updateInputValue();this.lastInputValue=this.inputValue;this.position=h.fromMatrixPosition(this.currentTransform);this.rotation=v.fromRotationMatrix(this.currentTransform)}}handleViewerChanged(i,t){var s;t===null||t===void 0?void 0:t.removeEventListener("frameDrawn",this.handleViewerFrameDrawn);t===null||t===void 0?void 0:t.removeEventListener("dimensionschange",this.handleViewerDimensionsChange);i===null||i===void 0?void 0:i.addEventListener("frameDrawn",this.handleViewerFrameDrawn);i===null||i===void 0?void 0:i.addEventListener("dimensionschange",this.handleViewerDimensionsChange);if((i===null||i===void 0?void 0:i.stream)!=null){(s=this.controller)===null||s===void 0?void 0:s.dispose();this.controller=new b(i.stream)}}handleDisabledPropertyChanged(){var i;(i=this.widget)===null||i===void 0?void 0:i.updateDisabledAxis({xRotation:this.xRotationDisabled,yRotation:this.yRotationDisabled,zRotation:this.zRotationDisabled,xTranslation:this.xTranslationDisabled,yTranslation:this.yTranslationDisabled,zTranslation:this.zTranslationDisabled,xyTranslation:this.xyTranslationDisabled,xzTranslation:this.xzTranslationDisabled,yzTranslation:this.yzTranslationDisabled})}handleTransformHandleScalarChanged(){var i;const t=this.getTranslationScalar();const s=this.getRotationScalar();(i=this.widget)===null||i===void 0?void 0:i.updateScalars({xTranslation:t,yTranslation:t,zTranslation:t,xyTranslation:s,xzTranslation:s,yzTranslation:s,xRotation:s,yRotation:s,zRotation:s})}handleRotationChanged(i,t){var s;const n=i!==null&&i!==void 0?i:v.create();this.currentTransform=this.getTransformForNewRotation(n);this.startingTransform=this.currentTransform;if(i==null&&this.currentTransform!=null&&u.isIdentity(this.currentTransform)){this.currentTransform=undefined;this.startingTransform=this.currentTransform}(s=this.widget)===null||s===void 0?void 0:s.updateTransform(this.currentTransform);console.debug(`Updating widget rotation [previous=${JSON.stringify(t)}, current=${JSON.stringify(i)}]`);this.rotationChanged.emit(i)}handlePositionChanged(i,t){var s,n;this.currentTransform=this.getTransformForNewPosition(i);this.startingTransform=this.currentTransform;console.debug(`Updating widget position [previous=${JSON.stringify(t)}, current=${JSON.stringify(i)}]`);(s=this.widget)===null||s===void 0?void 0:s.updateTransform(this.currentTransform);if(i==null){this.lastDragged=undefined;this.inputPosition=undefined;(n=this.controller)===null||n===void 0?void 0:n.clearTransform()}this.positionChanged.emit(i)}handleInputFormattingChanged(){this.updateInputValue();this.lastInputValue=this.inputValue}render(){var t,s,n,o,e,h;return i(l,{key:"aa99b642f46da67635bdfb1e22a61f3962446684"},i("canvas",{key:"3ea5a08ee3e8ae427b4010857a2ef9d126197bd6",ref:i=>{this.canvasRef=i},class:g("widget",{hovered:this.hovered!=null}),tabindex:"0",width:(t=this.viewer)===null||t===void 0?void 0:t.viewport.width,height:(s=this.viewer)===null||s===void 0?void 0:s.viewport.height,onPointerDown:this.handleBeginDrag,onKeyDown:this.handleKeyDown}),this.showInputs&&this.inputPosition&&((n=this.viewer)===null||n===void 0?void 0:n.viewport)&&i(ti,{key:"148947fe2816804ec05d3b04e7c45bd722f479f1",ref:i=>{var t,s;if(i!=null){(t=this.inputResizeObserver)===null||t===void 0?void 0:t.observe(i)}else if(this.inputWrapperRef!=null){(s=this.inputResizeObserver)===null||s===void 0?void 0:s.unobserve(this.inputWrapperRef)}this.inputWrapperRef=i},bounds:this.inputBounds,viewport:this.viewer.viewport,point:this.inputPosition.point,placement:this.inputPosition.placement,displayUnit:this.getDisplayedUnits()},i(si,{key:"db03509252b8e72fb975337274e693cc4d0bebf1",ref:i=>{this.inputRef=i},identifier:(e=(o=this.dragging)===null||o===void 0?void 0:o.identifier)!==null&&e!==void 0?e:(h=this.lastDragged)===null||h===void 0?void 0:h.identifier,disabled:this.isEndingTransform,onChange:this.handleInputChange,onIncrement:()=>this.handleInputStep(1),onDecrement:()=>this.handleInputStep(-1),onBlur:()=>{this.inputShouldFocus=false},onUndo:this.EXPERIMENTAL_undoKeybindings?()=>this.EXPERIMENTAL_undo():undefined})))}transform(i,t,s){var n,o;if(this.position!=null&&this.startingTransform!=null&&this.currentTransform!=null&&this.dragging!=null&&this.viewer!=null&&this.viewer.frame!=null){this.currentTransform=L(this.currentTransform,i,t,(n=this.viewer)===null||n===void 0?void 0:n.frame.scene.camera.viewVector,s,this.dragging.identifier);this.getTransformWidget().updateTransform(this.currentTransform);(o=this.controller)===null||o===void 0?void 0:o.updateTransform(u.multiply(this.currentTransform,u.invert(this.startingTransform)))}}handleSettingDisabledAxis(){if(this.widget){this.widget.updateDisabledAxis({xRotation:this.xRotationDisabled,yRotation:this.yRotationDisabled,zRotation:this.zRotationDisabled,xTranslation:this.xTranslationDisabled,yTranslation:this.yTranslationDisabled,zTranslation:this.zTranslationDisabled,xyTranslation:this.xyTranslationDisabled,xzTranslation:this.xzTranslationDisabled,yzTranslation:this.yzTranslationDisabled})}else{console.warn("Cannot set disabled values - no widget defined")}}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],xTranslationDisabled:[{handleDisabledPropertyChanged:0}],yTranslationDisabled:[{handleDisabledPropertyChanged:0}],zTranslationDisabled:[{handleDisabledPropertyChanged:0}],xyTranslationDisabled:[{handleDisabledPropertyChanged:0}],xzTranslationDisabled:[{handleDisabledPropertyChanged:0}],yzTranslationDisabled:[{handleDisabledPropertyChanged:0}],xRotationDisabled:[{handleDisabledPropertyChanged:0}],yRotationDisabled:[{handleDisabledPropertyChanged:0}],zRotationDisabled:[{handleDisabledPropertyChanged:0}],translationHandleScalar:[{handleTransformHandleScalarChanged:0}],rotationHandleScalar:[{handleTransformHandleScalarChanged:0}],rotation:[{handleRotationChanged:0}],position:[{handlePositionChanged:0}],distanceUnit:[{handleInputFormattingChanged:0}],angleUnit:[{handleInputFormattingChanged:0}],decimalPlaces:[{handleInputFormattingChanged:0}]}}static get style(){return ci()}},[1,"vertex-viewer-transform-widget",{viewer:[16],position:[1040],rotation:[1040],controller:[1040],xRotationDisabled:[1028,"x-rotation-disabled"],yRotationDisabled:[1028,"y-rotation-disabled"],zRotationDisabled:[1028,"z-rotation-disabled"],xTranslationDisabled:[1028,"x-translation-disabled"],yTranslationDisabled:[1028,"y-translation-disabled"],zTranslationDisabled:[1028,"z-translation-disabled"],xyTranslationDisabled:[1028,"xy-translation-disabled"],xzTranslationDisabled:[1028,"xz-translation-disabled"],yzTranslationDisabled:[1028,"yz-translation-disabled"],showInputs:[4,"show-inputs"],distanceUnit:[1,"distance-unit"],angleUnit:[1,"angle-unit"],decimalPlaces:[2,"decimal-places"],rotationSnapDegrees:[2,"rotation-snap-degrees"],rotationSnapKey:[1,"rotation-snap-key"],translationHandleScalar:[2,"translation-handle-scalar"],rotationHandleScalar:[2,"rotation-handle-scalar"],interactionThrottle:[2,"interaction-throttle"],EXPERIMENTAL_undoKeybindings:[4,"e-x-p-e-r-i-m-e-n-t-a-l_undo-keybindings"],hovered:[1040],inputPosition:[32],inputValue:[32],isEndingTransform:[32],EXPERIMENTAL_undo:[64]},undefined,{viewer:[{handleViewerChanged:0}],xTranslationDisabled:[{handleDisabledPropertyChanged:0}],yTranslationDisabled:[{handleDisabledPropertyChanged:0}],zTranslationDisabled:[{handleDisabledPropertyChanged:0}],xyTranslationDisabled:[{handleDisabledPropertyChanged:0}],xzTranslationDisabled:[{handleDisabledPropertyChanged:0}],yzTranslationDisabled:[{handleDisabledPropertyChanged:0}],xRotationDisabled:[{handleDisabledPropertyChanged:0}],yRotationDisabled:[{handleDisabledPropertyChanged:0}],zRotationDisabled:[{handleDisabledPropertyChanged:0}],translationHandleScalar:[{handleTransformHandleScalarChanged:0}],rotationHandleScalar:[{handleTransformHandleScalarChanged:0}],rotation:[{handleRotationChanged:0}],position:[{handlePositionChanged:0}],distanceUnit:[{handleInputFormattingChanged:0}],angleUnit:[{handleInputFormattingChanged:0}],decimalPlaces:[{handleInputFormattingChanged:0}]}]);function wi(){if(typeof customElements==="undefined"){return}const i=["vertex-viewer-transform-widget"];i.forEach((i=>{switch(i){case"vertex-viewer-transform-widget":if(!customElements.get(t(i))){customElements.define(t(i),fi)}break}}))}wi();const pi=fi;const gi=wi;export{pi as VertexViewerTransformWidget,gi as defineCustomElement};
|
|
4
|
+
import{h as i,t,p as s,H as n,d as o,e as l}from"./p-Bb32XUUS.js";import{p as e,v as h,r as a,b as r,a as d,m as u,h as v,g as c,q as f,e as w,c as p}from"./p-DDQcM-So.js";import{c as g}from"./p-C6gMOKYg.js";import{w as x,r as y}from"./p-Cd7kap5W.js";import{T as b}from"./p-D33gVA2W.js";import{A as m,D as z}from"./p-B9R0QWr4.js";import{E as T}from"./p-CHdoymO5.js";import{d as D,T as C,R,e as P,r as S,s as E,x as A,A as U,b as H,y as I,z as F,f as N,g as O,h as M,i as k,j as $}from"./p-abSJ29r7.js";function j(i){if(window.document.activeElement!==i){i.focus();i.setSelectionRange(i.value.length,i.value.length)}}function B(i,t){return t!=null?e.create(i.x-t.left,i.y-t.top):undefined}function J(i,t,s,n){const o=n!=null?h.fromMatrixPosition(n):undefined;if(i!=null&&t!=null&&s!=null&&o!=null){const n=s.transformPointToRay(i,t.image,t.scene.camera);if(t.scene.camera.isOrthographic()){const i=a.at(a.create({origin:o,direction:t.scene.camera.direction}),h.magnitude(t.scene.camera.viewVector)*2);return a.intersectPlane(n,r.fromNormalAndCoplanarPoint(t.scene.camera.direction,i))}else{return a.intersectPlane(n,r.fromNormalAndCoplanarPoint(t.scene.camera.direction,o))}}return undefined}function X(i,t,s,n,o,l){return u.multiply(i,_(t,s,n,o,l))}function _(i,t,s,n,o){const l=new z(n);const e=new m(o);const a=()=>e.convertFrom(t-s);const r=()=>l.convertRealValueToWorld(t-s);switch(i){case"x-translate":return u.makeTranslation(h.create(r(),0,0));case"y-translate":return u.makeTranslation(h.create(0,r(),0));case"z-translate":return u.makeTranslation(h.create(0,0,r()));case"x-rotate":return u.makeRotation(f.fromAxisAngle(h.left(),a()));case"y-rotate":return u.makeRotation(f.fromAxisAngle(h.down(),a()));case"z-rotate":return u.makeRotation(f.fromAxisAngle(h.forward(),a()));default:return u.makeIdentity()}}function q(i){switch(i){case"x-rotate":return"xyz";case"y-rotate":return"yzx";case"z-rotate":return"zxy";default:return"xyz"}}function K(i,t,s,n,o){const l=new z(n);const e=new m(o);const a=()=>u.makeRotation(f.fromMatrixRotation(t));const r=()=>u.multiply(t,u.invert(s));const c=()=>h.transformMatrix(h.fromMatrixPosition(r()),u.invert(a()));const w=()=>v.fromRotationMatrix(u.multiply(u.invert(a()),s),q(i));switch(i){case"x-translate":return l.convertWorldValueToReal(c().x);case"y-translate":return l.convertWorldValueToReal(c().y);case"z-translate":return l.convertWorldValueToReal(c().z);case"x-rotate":return e.convertTo(d.normalizeRadians(w().x));case"y-rotate":return e.convertTo(d.normalizeRadians(w().y));case"z-rotate":return e.convertTo(d.normalizeRadians(w().z));default:return 0}}function L(i,t,s,n,o,l){return V(i,h.subtract(s,t),n,o,l)}function V(i,t,s,n,o){switch(o){case"x-translate":return Q(i,t,h.right());case"y-translate":return Q(i,t,h.up());case"z-translate":return Q(i,t,h.back());case"xy-translate":return Z(i,t,h.create(0,0,1));case"xz-translate":return Z(i,t,h.create(0,1,0));case"yz-translate":return Z(i,t,h.create(1,0,0));case"x-rotate":return W(i,s,h.right(),n);case"y-rotate":return W(i,s,h.up(),n);case"z-rotate":return W(i,s,h.forward(),n);default:return i}}function W(i,t,s,n){const o=Y(i,t,s);const l=f.fromAxisAngle(o,n);const e=u.makeRotation(l);return u.multiply(i,e)}function Y(i,t,s){const n=u.makeRotation(f.fromMatrixRotation(i));const o=h.transformMatrix(s,n);const l=h.transformMatrix(h.negate(s),n);return h.dot(t,o)>h.dot(t,l)?s:h.negate(s)}function Q(i,t,s){const n=h.normalize(s);const o=u.makeRotation(f.fromMatrixRotation(i));const l=h.transformMatrix(n,o);const e=h.project(t,l);const a=u.makeTranslation(e);return u.multiply(a,i)}function Z(i,t,s){const n=h.normalize(s);const o=u.makeRotation(f.fromMatrixRotation(i));const l=h.transformMatrix(n,o);const e=h.fromMatrixPosition(i);const a=r.fromNormalAndCoplanarPoint(l,e);const d=r.projectPoint(a,t);const v=h.add(d,h.scale(a.constant,a.normal));const c=u.makeTranslation(v);return u.multiply(c,i)}function G(i,t,s){if(s.length===0){throw new Error("Unable to compute input position. At least one shape point must be provided.")}const n=c.pad(t,5);const o=s.map((t=>i.transformNdcPointToViewport(t)));const l=c.topLeft(n);const h=e.add(l,e.create(n.width,0));const a=c.bottomRight(n);const r=e.subtract(a,e.create(n.width,0));const d=e.scale(o.reduce(((i,t)=>e.add(i,t)),e.create()),1/o.length,1/o.length);const u=[h,r,a].reduce(((i,t)=>e.distance(d,t)<e.distance(d,i)?t:i),l);switch(u){case l:return{point:u,placement:"top-left"};case h:return{point:u,placement:"top-right"};case r:return{point:u,placement:"bottom-left"};default:return{point:u,placement:"bottom-right"}}}function ii(i,t,s,n,o,l){const e=t==="alt"&&i.altKey||t==="ctrl"&&i.ctrlKey||t==="meta"&&i.metaKey||t==="shift"&&i.shiftKey;if(e&&l!=null&&l>0&&Number.isInteger(l)){const i=s-n;const t=d.toDegrees(i);const e=Math.round(t/l)*l;if(o!=null){const i=Math.round(o/l)*l;const t=o-i;const s=e-t;const h=d.toRadians(s);return h+n}else{const i=d.toRadians(e);return i+n}}else{return s}}const ti=({ref:t,bounds:s,viewport:n,point:o,placement:l,displayUnit:e},h)=>{const a=oi(n,s!==null&&s!==void 0?s:w.create(0,0),o,l);return i("div",{ref:t,class:"widget-input wrapper",style:{...a,height:(s===null||s===void 0?void 0:s.height)!=null?`${s.height}px`:undefined}},h,i("div",{class:"widget-input units"},e.unit.abbreviatedName))};const si=({ref:t,identifier:s,disabled:n,onChange:o,onIncrement:l,onDecrement:e,onBlur:h,onUndo:a})=>{const r=i=>{if(i.target!=null){const t=parseFloat(i.target.value);if(!isNaN(t)){o===null||o===void 0?void 0:o(parseFloat(i.target.value))}}};const d=i=>{const t=i.ctrlKey||i.metaKey;if(i.key==="ArrowUp"){l===null||l===void 0?void 0:l()}else if(i.key==="ArrowDown"){e===null||e===void 0?void 0:e()}else if(i.key==="z"&&t&&a){i.preventDefault();a()}};return i("input",{ref:t,disabled:n,class:`widget-input ${s}`,type:"text",onChange:r,onKeyDown:d,onBlur:h})};function ni(i,t){return Math.min(i,Math.max(0,t))}function oi(i,t,s,n,o=5){const{width:l,height:e}=i.dimensions;const h=t.width+o;const a=t.height+o;function r(i){return`${i}px`}switch(n){case"top-left":return{right:r(ni(l-h,l-s.x)),bottom:r(ni(e-a,e-s.y))};case"top-right":return{left:r(ni(l-h,s.x)),bottom:r(ni(e-a,e-s.y))};case"bottom-left":return{right:r(ni(l-h,l-s.x)),top:r(ni(e-a,s.y))};case"bottom-right":default:return{left:r(ni(l-h,s.x)),top:r(ni(e-a,s.y))}}}function li(i,t,s=3,n=1,o=1){return ai(i,t,h.back(),h.up(),s,n,o)}function ei(i,t,s=3,n=1,o=1){return ai(i,t,h.right(),h.back(),s,n,o)}function hi(i,t,s=3,n=1,o=1){return ai(i,t,h.right(),h.up(),s,n,o)}function ai(i,t,s,n,o,l=1,e=1){const r=h.transformMatrix(h.add(s,n),u.makeRotation(f.fromMatrixRotation(i)));const v=h.transformMatrix(s,u.makeRotation(f.fromMatrixRotation(i)));const c=h.transformMatrix(n,u.makeRotation(f.fromMatrixRotation(i)));const w=10*e**.25;const p=h.fromMatrixPosition(i);const g=h.add(p,h.scale(o*w,r));const x=a.create({origin:g,direction:v});const y=a.create({origin:g,direction:c});const b=h.cross(v,c);const m=h.rotateAboutAxis(d.toRadians(45),a.at(y,-(o*l)),b,g);const z=h.rotateAboutAxis(d.toRadians(45),a.at(x,o*l),b,g);const T=h.rotateAboutAxis(d.toRadians(45),a.at(y,o*l),b,g);const C=h.rotateAboutAxis(d.toRadians(45),a.at(x,-(o*l)),b,g);return new D(h.dot(v,t.direction)!==-1&&h.dot(c,t.direction)!==-1,m,C,z,T,h.transformMatrix(m,t.projectionViewMatrix),h.transformMatrix(C,t.projectionViewMatrix),h.transformMatrix(z,t.projectionViewMatrix),h.transformMatrix(T,t.projectionViewMatrix))}function ri(i,t,s,n){if(i instanceof C){return di(i,t,s,n)}return false}function di(i,t,s,n){return ui([i.points.worldLeft,i.points.worldRight,i.points.worldTip],t,s,n)||ui([i.points.worldLeft,i.points.worldRight,i.points.worldBase],t,s,n)}function ui(i,t,s,n){var o;if(i.length===3){const l=s.transformPointToRay(n,t.image,t.scene.camera);const e=h.subtract(i[1],i[0]);const a=h.subtract(i[2],i[0]);const r=p.epsilon((o=p.fromVectors([l.direction,l.origin,e,a]))!==null&&o!==void 0?o:p.create(e,a));const d=h.cross(l.direction,a);const u=h.dot(e,d);if(!(Math.abs(u)>=r)){return false}const v=h.subtract(l.origin,i[0]);const c=h.dot(v,d)/u;if(c<0||c>1){return false}const f=h.cross(v,e);const w=h.dot(l.direction,f)/u;if(w<0||c+w>1){return false}const g=h.dot(a,f)/u;return!isNaN(g)&&(g>0||t.scene.camera.isOrthographic())}return false}class vi extends R{constructor(i,t={},s={}){var n,o,l,e,h,a,r,d,u,v,c,f,w,p;super(i);this.customization=t;this.disabledAxis={xTranslation:false,yTranslation:false,zTranslation:false,xyTranslation:false,xzTranslation:false,yzTranslation:false,xRotation:false,yRotation:false,zRotation:false};this.axisLines=[];this.rotationLines=[];this.translationMeshes=[];this.rotationMeshes=[];this.hoveredChanged=new T;this.xArrowFillColor=(n=t.colors)===null||n===void 0?void 0:n.xArrow;this.yArrowFillColor=(o=t.colors)===null||o===void 0?void 0:o.yArrow;this.zArrowFillColor=(l=t.colors)===null||l===void 0?void 0:l.zArrow;this.hoveredArrowFillColor=(e=t.colors)===null||e===void 0?void 0:e.hovered;this.outlineColor=(h=t.colors)===null||h===void 0?void 0:h.outline;this.disabledAxis.xTranslation=(a=s.xTranslation)!==null&&a!==void 0?a:false;this.disabledAxis.yTranslation=(r=s.yTranslation)!==null&&r!==void 0?r:false;this.disabledAxis.zTranslation=(d=s.zTranslation)!==null&&d!==void 0?d:false;this.disabledAxis.xyTranslation=(u=s.xyTranslation)!==null&&u!==void 0?u:false;this.disabledAxis.xzTranslation=(v=s.xzTranslation)!==null&&v!==void 0?v:false;this.disabledAxis.yzTranslation=(c=s.yzTranslation)!==null&&c!==void 0?c:false;this.disabledAxis.xRotation=(f=s.xRotation)!==null&&f!==void 0?f:false;this.disabledAxis.yRotation=(w=s.yRotation)!==null&&w!==void 0?w:false;this.disabledAxis.zRotation=(p=s.zRotation)!==null&&p!==void 0?p:false}dispose(){var i;(i=this.reglFrameDisposable)===null||i===void 0?void 0:i.cancel()}getDrawableElements(){return this.drawableElements}getFullBounds(){return this.fullBounds}boundsContainsPoint(i){return this.interactiveBounds!=null&&this.frame!=null&&c.containsPoints(this.interactiveBounds,i)}updateDisabledAxis(i){this.disabledAxis={...this.disabledAxis,...i};this.updateDisabledOnDrawables()}updateCursor(i){this.cursor=i;if(i!=null&&this.frame!=null){this.updateHovered()}else{this.clearHovered()}}updateTransform(i){var t;this.transform=i;if(i!=null&&this.frame!=null){this.updateAndDraw()}else{this.clear();(t=this.reglFrameDisposable)===null||t===void 0?void 0:t.cancel();this.reglFrameDisposable=undefined}}updateColors(i={}){var t,s,n,o,l,e,h,a,r,d,u,v,c,f,w,p;this.xArrowFillColor=(t=i.xArrow)!==null&&t!==void 0?t:this.xArrowFillColor;this.yArrowFillColor=(s=i.yArrow)!==null&&s!==void 0?s:this.yArrowFillColor;this.zArrowFillColor=(n=i.zArrow)!==null&&n!==void 0?n:this.zArrowFillColor;this.twoAxesSquareFillColor=(o=i.twoAxesSquare)!==null&&o!==void 0?o:this.twoAxesSquareFillColor;this.hoveredArrowFillColor=(l=i.hovered)!==null&&l!==void 0?l:this.hoveredArrowFillColor;this.outlineColor=(e=i.outline)!==null&&e!==void 0?e:this.outlineColor;(h=this.xArrow)===null||h===void 0?void 0:h.updateFillColor(this.getXTranslationColor(),true);(a=this.yArrow)===null||a===void 0?void 0:a.updateFillColor(this.getYTranslationColor(),true);(r=this.zArrow)===null||r===void 0?void 0:r.updateFillColor(this.getZTranslationColor(),true);(d=this.xRotation)===null||d===void 0?void 0:d.updateFillColor(this.getXRotationColor(),true);(u=this.yRotation)===null||u===void 0?void 0:u.updateFillColor(this.getYRotationColor(),true);(v=this.zRotation)===null||v===void 0?void 0:v.updateFillColor(this.getZRotationColor(),true);(c=this.xyTranslation)===null||c===void 0?void 0:c.updateFillColor(this.getTwoAxesTranslationColor(),true);(f=this.xzTranslation)===null||f===void 0?void 0:f.updateFillColor(this.getTwoAxesTranslationColor(),true);(w=this.yzTranslation)===null||w===void 0?void 0:w.updateFillColor(this.getTwoAxesTranslationColor(),true);(p=this.hoveredElement)===null||p===void 0?void 0:p.updateFillColor(this.hoveredArrowFillColor)}updateScalars(i){this.customization={...this.customization,scalars:i};if(this.transform!=null&&this.frame!=null){this.updateElements(this.transform,this.frame)}}onHoveredChanged(i){return this.hoveredChanged.on(i)}updateDisabledOnDrawables(){var i,t,s,n,o,l,e,h,a,r,d,u,v,c,f;(i=this.xRotation)===null||i===void 0?void 0:i.setDisabled(this.disabledAxis.xRotation);(t=this.xyRotationLine)===null||t===void 0?void 0:t.setDisabled(this.disabledAxis.xRotation);(s=this.xzRotationLine)===null||s===void 0?void 0:s.setDisabled(this.disabledAxis.xRotation);(n=this.yRotation)===null||n===void 0?void 0:n.setDisabled(this.disabledAxis.yRotation);(o=this.yzRotationLine)===null||o===void 0?void 0:o.setDisabled(this.disabledAxis.yRotation);(l=this.yxRotationLine)===null||l===void 0?void 0:l.setDisabled(this.disabledAxis.yRotation);(e=this.zRotation)===null||e===void 0?void 0:e.setDisabled(this.disabledAxis.zRotation);(h=this.zxRotationLine)===null||h===void 0?void 0:h.setDisabled(this.disabledAxis.zRotation);(a=this.zyRotationLine)===null||a===void 0?void 0:a.setDisabled(this.disabledAxis.zRotation);(r=this.xArrow)===null||r===void 0?void 0:r.setDisabled(this.disabledAxis.xTranslation);(d=this.yArrow)===null||d===void 0?void 0:d.setDisabled(this.disabledAxis.yTranslation);(u=this.zArrow)===null||u===void 0?void 0:u.setDisabled(this.disabledAxis.zTranslation);(v=this.xyTranslation)===null||v===void 0?void 0:v.setDisabled(this.disabledAxis.xyTranslation);(c=this.xzTranslation)===null||c===void 0?void 0:c.setDisabled(this.disabledAxis.xzTranslation);(f=this.yzTranslation)===null||f===void 0?void 0:f.setDisabled(this.disabledAxis.yzTranslation);this.updateColors()}updateHovered(){var i,t,s,n,o,l,e,h,a,r;const d=this.hoveredElement;const u=this.frame;if(u!=null){this.hoveredElement=[...this.translationMeshes,...this.rotationMeshes].filter((i=>i.points.valid&&!i.isDisabled())).find((i=>this.cursor!=null?ri(i,u,this.viewport,this.cursor):false));if(this.hoveredElement!==d){this.hoveredChanged.emit(this.hoveredElement);(i=this.hoveredElement)===null||i===void 0?void 0:i.updateFillColor(this.hoveredArrowFillColor);this.clearFillColorOfPreviouslyHovered(d);if(((t=this.hoveredElement)===null||t===void 0?void 0:t.identifier)==="xy-translate"){(s=this.xArrow)===null||s===void 0?void 0:s.updateFillColor(this.hoveredArrowFillColor);(n=this.yArrow)===null||n===void 0?void 0:n.updateFillColor(this.hoveredArrowFillColor)}else if(((o=this.hoveredElement)===null||o===void 0?void 0:o.identifier)==="xz-translate"){(l=this.xArrow)===null||l===void 0?void 0:l.updateFillColor(this.hoveredArrowFillColor);(e=this.zArrow)===null||e===void 0?void 0:e.updateFillColor(this.hoveredArrowFillColor)}else if(((h=this.hoveredElement)===null||h===void 0?void 0:h.identifier)==="yz-translate"){(a=this.yArrow)===null||a===void 0?void 0:a.updateFillColor(this.hoveredArrowFillColor);(r=this.zArrow)===null||r===void 0?void 0:r.updateFillColor(this.hoveredArrowFillColor)}}}}clearHovered(){const i=this.hoveredElement;this.hoveredElement=undefined;if(this.hoveredElement!==i){this.hoveredChanged.emit(this.hoveredElement);this.clearFillColorOfPreviouslyHovered(i)}}clearFillColorOfPreviouslyHovered(i){var t,s,n,o,l,e,h,a,r,d,u,v;i===null||i===void 0?void 0:i.updateFillColor(i===null||i===void 0?void 0:i.initialFillColor);if((i===null||i===void 0?void 0:i.identifier)==="xy-translate"){(t=this.xArrow)===null||t===void 0?void 0:t.updateFillColor((s=this.xArrow)===null||s===void 0?void 0:s.initialFillColor);(n=this.yArrow)===null||n===void 0?void 0:n.updateFillColor((o=this.yArrow)===null||o===void 0?void 0:o.initialFillColor)}else if((i===null||i===void 0?void 0:i.identifier)==="xz-translate"){(l=this.xArrow)===null||l===void 0?void 0:l.updateFillColor((e=this.xArrow)===null||e===void 0?void 0:e.initialFillColor);(h=this.zArrow)===null||h===void 0?void 0:h.updateFillColor((a=this.zArrow)===null||a===void 0?void 0:a.initialFillColor)}else if((i===null||i===void 0?void 0:i.identifier)==="yz-translate"){(r=this.yArrow)===null||r===void 0?void 0:r.updateFillColor((d=this.yArrow)===null||d===void 0?void 0:d.initialFillColor);(u=this.zArrow)===null||u===void 0?void 0:u.updateFillColor((v=this.zArrow)===null||v===void 0?void 0:v.initialFillColor)}}hasData(){return this.transform!=null}createOrUpdateElements(){if(this.transform!=null&&this.frame!=null){if(this.xArrow==null||this.yArrow==null||this.zArrow==null){this.createElements(this.transform,this.frame)}else{this.updateElements(this.transform,this.frame)}this.interactiveBounds=P(this.viewport,...this.rotationMeshes,...this.translationMeshes);this.fullBounds=P(this.viewport,...this.rotationMeshes,...this.translationMeshes,...this.axisLines)}}createElements(i,t){var s,n,o,l,e,a,r,d,u,v,c,f;this.reglCommand=S({canvas:this.canvasElement,extensions:"angle_instanced_arrays"});const{createShape:w}=E(this.reglCommand);const p=this.computeTriangleSize(h.fromMatrixPosition(i),t);this.xArrow=new C(w,"x-translate",A(i,t.scene.camera,p,(s=this.customization.scalars)===null||s===void 0?void 0:s.xTranslation),this.outlineColor,this.getXTranslationColor());this.xRotation=new C(w,"x-rotate",li(i,t.scene.camera,p,(n=this.customization.scalars)===null||n===void 0?void 0:n.xRotation,(o=this.customization.scalars)===null||o===void 0?void 0:o.xTranslation),this.outlineColor,this.getXRotationColor());this.xAxis=new U(w,"x-axis",H(i,t.scene.camera,this.xArrow),this.outlineColor,this.getXTranslationColor());this.yArrow=new C(w,"y-translate",I(i,t.scene.camera,p,(l=this.customization.scalars)===null||l===void 0?void 0:l.yTranslation),this.outlineColor,this.getYTranslationColor());this.yRotation=new C(w,"y-rotate",ei(i,t.scene.camera,p,(e=this.customization.scalars)===null||e===void 0?void 0:e.yRotation,(a=this.customization.scalars)===null||a===void 0?void 0:a.yTranslation),this.outlineColor,this.getYRotationColor());this.yAxis=new U(w,"y-axis",H(i,t.scene.camera,this.yArrow),this.outlineColor,this.getYTranslationColor());this.zArrow=new C(w,"z-translate",F(i,t.scene.camera,p,(r=this.customization.scalars)===null||r===void 0?void 0:r.zTranslation),this.outlineColor,this.getZTranslationColor());this.zAxis=new U(w,"z-axis",H(i,t.scene.camera,this.zArrow),this.outlineColor,this.getZTranslationColor());this.zRotation=new C(w,"z-rotate",hi(i,t.scene.camera,p,(d=this.customization.scalars)===null||d===void 0?void 0:d.zRotation,(u=this.customization.scalars)===null||u===void 0?void 0:u.zTranslation),this.outlineColor,this.getZRotationColor());this.xyTranslation=new C(w,"xy-translate",N(i,t.scene.camera,p,(v=this.customization.scalars)===null||v===void 0?void 0:v.xyTranslation),this.outlineColor,this.getTwoAxesTranslationColor());this.xzTranslation=new C(w,"xz-translate",O(i,t.scene.camera,p,(c=this.customization.scalars)===null||c===void 0?void 0:c.xzTranslation),this.outlineColor,this.getTwoAxesTranslationColor());this.yzTranslation=new C(w,"yz-translate",M(i,t.scene.camera,p,(f=this.customization.scalars)===null||f===void 0?void 0:f.yzTranslation),this.outlineColor,this.getTwoAxesTranslationColor());this.createRotationLines(w,i,t);this.axisLines=[this.xAxis,this.yAxis,this.zAxis];this.translationMeshes=[this.xArrow,this.yArrow,this.zArrow,this.xyTranslation,this.xzTranslation,this.yzTranslation];this.rotationMeshes=[this.xRotation,this.yRotation,this.zRotation];this.updateDisabledOnDrawables();this.availableElements=[...this.axisLines,...this.rotationLines,...this.translationMeshes,...this.rotationMeshes]}getXRotationColor(){return this.xArrowFillColor}getYRotationColor(){return this.yArrowFillColor}getZRotationColor(){return this.zArrowFillColor}getXTranslationColor(){return this.xArrowFillColor}getYTranslationColor(){return this.yArrowFillColor}getZTranslationColor(){return this.zArrowFillColor}getTwoAxesTranslationColor(){return this.twoAxesSquareFillColor}createRotationLines(i,t,s){var n,o,l,e,a,r;const d=this.computeTriangleSize(h.fromMatrixPosition(t),s);const u=k(s.scene.camera,this.xRotation,(n=this.yArrow)===null||n===void 0?void 0:n.points.worldTip,d);const v=k(s.scene.camera,this.xRotation,(o=this.zArrow)===null||o===void 0?void 0:o.points.worldTip,d);const c=k(s.scene.camera,this.yRotation,(l=this.xArrow)===null||l===void 0?void 0:l.points.worldTip,d);const f=k(s.scene.camera,this.yRotation,(e=this.zArrow)===null||e===void 0?void 0:e.points.worldTip,d);const w=k(s.scene.camera,this.zRotation,(a=this.xArrow)===null||a===void 0?void 0:a.points.worldTip,d);const p=k(s.scene.camera,this.zRotation,(r=this.yArrow)===null||r===void 0?void 0:r.points.worldTip,d);if(u!=null){this.xyRotationLine=new $(i,"xy-rotation-line",u,this.outlineColor)}if(v!=null){this.xzRotationLine=new $(i,"xz-rotation-line",v,this.outlineColor)}if(c!=null){this.yxRotationLine=new $(i,"yx-rotation-line",c,this.outlineColor)}if(f!=null){this.yzRotationLine=new $(i,"yz-rotation-line",f,this.outlineColor)}if(w!=null){this.zxRotationLine=new $(i,"zx-rotation-line",w,this.outlineColor)}if(p!=null){this.zyRotationLine=new $(i,"zy-rotation-line",p,this.outlineColor)}this.rotationLines=[this.xyRotationLine,this.xzRotationLine,this.yxRotationLine,this.yzRotationLine,this.zxRotationLine,this.zyRotationLine].filter((i=>i!=null))}updateElements(i,t){var s,n,o,l,e,a,r,d,u,v,c,f,w,p,g,x,y,b,m,z,T,D,C,R,P,S,E,U,$,j;const B=this.computeTriangleSize(h.fromMatrixPosition(i),t);if(this.xArrow!=null){this.xArrow.updatePoints(A(i,t.scene.camera,B,(s=this.customization.scalars)===null||s===void 0?void 0:s.xTranslation));(n=this.xAxis)===null||n===void 0?void 0:n.updatePoints(H(i,t.scene.camera,this.xArrow))}(o=this.xRotation)===null||o===void 0?void 0:o.updatePoints(li(i,t.scene.camera,B,(l=this.customization.scalars)===null||l===void 0?void 0:l.xRotation,(e=this.customization.scalars)===null||e===void 0?void 0:e.xTranslation));if(this.yArrow!=null){this.yArrow.updatePoints(I(i,t.scene.camera,B,(a=this.customization.scalars)===null||a===void 0?void 0:a.yTranslation));(r=this.yAxis)===null||r===void 0?void 0:r.updatePoints(H(i,t.scene.camera,this.yArrow))}(d=this.yRotation)===null||d===void 0?void 0:d.updatePoints(ei(i,t.scene.camera,B,(u=this.customization.scalars)===null||u===void 0?void 0:u.yRotation,(v=this.customization.scalars)===null||v===void 0?void 0:v.yTranslation));if(this.zArrow!=null){this.zArrow.updatePoints(F(i,t.scene.camera,B,(c=this.customization.scalars)===null||c===void 0?void 0:c.zTranslation));(f=this.zAxis)===null||f===void 0?void 0:f.updatePoints(H(i,t.scene.camera,this.zArrow))}(w=this.zRotation)===null||w===void 0?void 0:w.updatePoints(hi(i,t.scene.camera,B,(p=this.customization.scalars)===null||p===void 0?void 0:p.zRotation,(g=this.customization.scalars)===null||g===void 0?void 0:g.zTranslation));(x=this.xyRotationLine)===null||x===void 0?void 0:x.updatePoints(k(t.scene.camera,this.xRotation,(y=this.yArrow)===null||y===void 0?void 0:y.points.worldTip,B));(b=this.xzRotationLine)===null||b===void 0?void 0:b.updatePoints(k(t.scene.camera,this.xRotation,(m=this.zArrow)===null||m===void 0?void 0:m.points.worldTip,B));(z=this.yxRotationLine)===null||z===void 0?void 0:z.updatePoints(k(t.scene.camera,this.yRotation,(T=this.xArrow)===null||T===void 0?void 0:T.points.worldTip,B));(D=this.yzRotationLine)===null||D===void 0?void 0:D.updatePoints(k(t.scene.camera,this.yRotation,(C=this.zArrow)===null||C===void 0?void 0:C.points.worldTip,B));(R=this.zxRotationLine)===null||R===void 0?void 0:R.updatePoints(k(t.scene.camera,this.zRotation,(P=this.xArrow)===null||P===void 0?void 0:P.points.worldTip,B));(S=this.zyRotationLine)===null||S===void 0?void 0:S.updatePoints(k(t.scene.camera,this.zRotation,(E=this.yArrow)===null||E===void 0?void 0:E.points.worldTip,B));if(this.xyTranslation!=null){this.xyTranslation.updatePoints(N(i,t.scene.camera,B,(U=this.customization.scalars)===null||U===void 0?void 0:U.xyTranslation))}if(this.xzTranslation!=null){this.xzTranslation.updatePoints(O(i,t.scene.camera,B,($=this.customization.scalars)===null||$===void 0?void 0:$.xzTranslation))}if(this.yzTranslation!=null){this.yzTranslation.updatePoints(M(i,t.scene.camera,B,(j=this.customization.scalars)===null||j===void 0?void 0:j.yzTranslation))}}}const ci=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-transform-widget-x-axis-arrow-color:var(--x-axis-color);--viewer-transform-widget-y-axis-arrow-color:var(--y-axis-color);--viewer-transform-widget-z-axis-arrow-color:var(--z-axis-color);--viewer-transform-widget-two-axes-square-color:var(--two-axes-color);--viewer-transform-widget-hovered-arrow-color:#ffff00;--viewer-transform-widget-input-width:8em}.widget{position:absolute;top:0;left:0}.widget.hovered{pointer-events:auto}.widget-input.wrapper{position:absolute;pointer-events:auto;display:flex;align-items:center;border:1px solid #444444;border-radius:4px;width:var(--viewer-transform-widget-input-width);text-align:center;background-color:white;box-sizing:border-box}.widget-input.units{position:relative;width:25%;height:100%;padding:0 0.25rem;font-size:0.8125rem;color:#444444}input.widget-input{position:relative;text-align:center;box-sizing:border-box;width:75%;height:100%;outline:none;border-width:0 1px 0 0;border-color:#444444;border-radius:2px 0 0 2px;font-size:0.875rem;color:#444444}input.widget-input.x-translate,input.widget-input.x-rotate{border-left:5px solid var(--viewer-transform-widget-x-axis-arrow-color)}input.widget-input.y-translate,input.widget-input.y-rotate{border-left:5px solid var(--viewer-transform-widget-y-axis-arrow-color)}input.widget-input.z-translate,input.widget-input.z-rotate{border-left:5px solid var(--viewer-transform-widget-z-axis-arrow-color)}input.widget-input:disabled{color:#888888}input.widget-input:focus{outline:none}`;const fi=s(class t extends n{constructor(i){super();if(i!==false){this.__registerHost()}this.__attachShadow();this.positionChanged=o(this,"positionChanged");this.rotationChanged=o(this,"rotationChanged");this.interactionEnded=o(this,"interactionEnded");this.interactionStarted=o(this,"interactionStarted");this.xRotationDisabled=false;this.yRotationDisabled=false;this.zRotationDisabled=false;this.xTranslationDisabled=false;this.yTranslationDisabled=false;this.zTranslationDisabled=false;this.xyTranslationDisabled=false;this.xzTranslationDisabled=false;this.yzTranslationDisabled=false;this.showInputs=true;this.distanceUnit="millimeters";this.angleUnit="degrees";this.decimalPlaces=1;this.rotationSnapKey="shift";this.translationHandleScalar=1;this.rotationHandleScalar=1;this.interactionThrottle=75;this.EXPERIMENTAL_undoKeybindings=false;this.inputValue=0;this.isEndingTransform=false;this.xArrowColor="#ea3324";this.yArrowColor="#4faf32";this.zArrowColor="#0000ff";this.twoAxesSquareColor="#e0e0e0";this.hoveredColor="#ffff00";this.lastAngle=0;this.inputShouldFocus=false;this.handleHoveredDrawableChanged=i=>{this.hovered=i};this.handleViewerFrameDrawn=()=>{this.updatePropsFromViewer()};this.handleViewerDimensionsChange=()=>{x((()=>{if(this.viewer!=null&&this.canvasRef!=null){this.canvasRef.width=this.viewer.viewport.width;this.canvasRef.height=this.viewer.viewport.height;this.updateCanvasBounds(this.canvasRef)}}))};this.handleResize=()=>{if(this.canvasRef!=null){this.updateCanvasBounds(this.canvasRef)}};this.handleInputResize=()=>{if(this.inputWrapperRef!=null){const i=this.inputWrapperRef;y((()=>{this.inputBounds=i.getBoundingClientRect()}))}};this.handleStyleChange=()=>{y((()=>{const i=window.getComputedStyle(this.hostEl);this.xArrowColor=i.getPropertyValue("--viewer-transform-widget-x-axis-arrow-color").trim();this.yArrowColor=i.getPropertyValue("--viewer-transform-widget-y-axis-arrow-color").trim();this.zArrowColor=i.getPropertyValue("--viewer-transform-widget-z-axis-arrow-color").trim();this.twoAxesSquareColor=i.getPropertyValue("--viewer-transform-widget-two-axes-square-color").trim();this.hoveredColor=i.getPropertyValue("--viewer-transform-widget-hovered-arrow-color").trim();this.getTransformWidget().updateColors({xArrow:this.xArrowColor,yArrow:this.yArrowColor,zArrow:this.zArrowColor,twoAxesSquare:this.twoAxesSquareColor,hovered:this.hoveredColor})}))};this.handlePointerMove=i=>{if(this.dragging==null){const t=B(e.create(i.clientX,i.clientY),this.getCanvasBounds());const s=this.getTransformWidget();if(t!=null&&s.boundsContainsPoint(t)){s.updateCursor(t)}else{s.updateCursor(undefined);this.hovered=undefined}}};this.handleBeginDrag=async i=>{var t,s,n;const o=this.getCanvasBounds();if(this.hovered!=null&&o!=null&&this.viewer!=null&&this.position!=null&&this.viewer.frame!=null){this.dragging=this.hovered;if(this.dragging.identifier!==((t=this.lastDragged)===null||t===void 0?void 0:t.identifier)){this.inputValue=0;this.dragStartTransform=this.currentTransform;this.updateInputPosition();this.updateInputValue()}this.lastDragged=undefined;const l=B(e.create(i.clientX,i.clientY),o);const h=this.viewer.viewport.transformWorldToViewport(this.position,this.viewer.frame.scene.camera.projectionViewMatrix);this.lastAngle=l!=null?d.fromPoints(h,l):0;this.lastWorldPosition=J(l,(s=this.viewer)===null||s===void 0?void 0:s.frame,(n=this.viewer)===null||n===void 0?void 0:n.viewport,this.currentTransform);this.interactionStarted.emit();window.removeEventListener("pointermove",this.handlePointerMove);window.addEventListener("pointermove",this.handleDragWithTimer);window.addEventListener("pointerup",this.handleEndTransform)}};this.handleDragWithTimer=async i=>{if(i!=null){i.preventDefault();this.lastMouseEvent=i}if(this.interactionTimer==null){this.interactionTimer=window.setTimeout((async()=>{this.interactionTimer=undefined;await this.handleDrag();this.lastMouseEvent=undefined}),this.interactionThrottle)}};this.handleDrag=async()=>{var i,t,s;const n=this.getCanvasBounds();if(this.dragging!=null&&this.lastWorldPosition!=null&&n!=null&&this.viewer!=null&&this.viewer.frame!=null&&this.position!=null&&this.lastMouseEvent!=null){await((i=this.controller)===null||i===void 0?void 0:i.beginTransform());const o=B(e.create(this.lastMouseEvent.clientX,this.lastMouseEvent.clientY),n);const l=this.viewer.viewport.transformWorldToViewport(this.position,this.viewer.frame.scene.camera.projectionViewMatrix);const h=J(o,(t=this.viewer)===null||t===void 0?void 0:t.frame,(s=this.viewer)===null||s===void 0?void 0:s.viewport,this.currentTransform);if(h!=null&&o!=null&&l!=null){const i=d.fromPoints(l,o);const t=ii(this.lastMouseEvent,this.rotationSnapKey,i,this.lastAngle,this.getDisplayedAngle(),this.rotationSnapDegrees);this.transform(this.lastWorldPosition,h,t-this.lastAngle);this.updateInputPosition();this.updateInputValue();this.lastWorldPosition=h;this.lastAngle=t}}};this.handleEndTransform=async i=>{var t,s;const n=B(e.create(i.clientX,i.clientY),this.getCanvasBounds());const o=this.getTransformWidget();this.lastDragged=this.dragging;this.dragging=undefined;this.lastWorldPosition=undefined;this.lastAngle=0;this.updateInputPosition();this.updateInputValue();o.updateCursor(n);o.updateTransform(this.currentTransform);this.beginEndTransform();window.removeEventListener("pointermove",this.handleDragWithTimer);window.removeEventListener("pointerup",this.handleEndTransform);try{const i=(t=this.controller)===null||t===void 0?void 0:t.getCurrentDelta();await((s=this.controller)===null||s===void 0?void 0:s.endTransform());this.interactionEnded.emit(i)}catch(i){console.error("Failed to end transform interaction",i)}window.addEventListener("pointermove",this.handlePointerMove);this.completeEndTransform()};this.handleInputStep=async i=>{if(this.inputValue!=null&&this.lastInputValue!=null){if(this.isModifyingAngleUnits()){const t=new m(this.angleUnit);const s=t.convertFrom(this.lastInputValue);const n=d.normalizeRadians(s+d.toRadians(i));this.inputValue=t.convertTo(n)}else{this.inputValue=this.lastInputValue+i}await this.updateTransformFromInput(this.inputValue)}};this.handleInputChange=async i=>{await this.updateTransformFromInput(i)};this.handleKeyDown=async i=>{const t=i.ctrlKey||i.metaKey;if(i.key==="z"&&t&&this.EXPERIMENTAL_undoKeybindings){i.stopPropagation();await this.EXPERIMENTAL_undo()}};this.updateTransformFromInput=async i=>{var t,s,n;if(this.lastDragged!=null&&this.currentTransform!=null&&this.startingTransform!=null&&this.lastInputValue!=null){this.currentTransform=X(this.currentTransform,this.lastDragged.identifier,i,this.lastInputValue,this.distanceUnit,this.angleUnit);this.updateInputValue();this.lastInputValue=i;await((t=this.controller)===null||t===void 0?void 0:t.beginTransform());this.getTransformWidget().updateTransform(this.currentTransform);await((s=this.controller)===null||s===void 0?void 0:s.updateTransform(u.multiply(this.currentTransform,u.invert(this.startingTransform))));this.updateInputPosition();await((n=this.controller)===null||n===void 0?void 0:n.endTransformDebounced(this.beginEndTransform,this.completeEndTransform))}};this.updatePropsFromViewer=()=>{const{frame:i}=this.viewer||{};if(i!=null){const t=this.getTransformWidget();t.updateFrame(i,this.dragging==null);this.updateInputPosition()}};this.setupTransformWidget=i=>{var t,s;console.debug(`Initializing transform widget. [initial-position=${JSON.stringify(this.position)}, has-initial-frame=${((t=this.viewer)===null||t===void 0?void 0:t.frame)!=null}]`);const n=this.getTranslationScalar();const o=this.getRotationScalar();this.widget=new vi(i,{colors:{xArrow:this.xArrowColor,yArrow:this.yArrowColor,zArrow:this.zArrowColor,twoAxesSquare:this.twoAxesSquareColor,hovered:this.hoveredColor},scalars:{xTranslation:n,yTranslation:n,zTranslation:n,xyTranslation:o,xzTranslation:o,yzTranslation:o,xRotation:o,yRotation:o,zRotation:o}});if(this.rotation!=null){this.currentTransform=this.getTransformForNewRotation(this.rotation);this.startingTransform=this.currentTransform;this.widget.updateTransform(this.currentTransform)}if(this.position!=null){this.currentTransform=this.getTransformForNewPosition(this.position);this.startingTransform=this.currentTransform;this.widget.updateTransform(this.currentTransform)}if(((s=this.viewer)===null||s===void 0?void 0:s.frame)!=null){this.widget.updateFrame(this.viewer.frame,true)}this.handleSettingDisabledAxis();this.hoveredChangeDisposable=this.widget.onHoveredChanged(this.handleHoveredDrawableChanged);return this.widget};this.updateCanvasBounds=i=>{y((()=>{this.canvasBounds=i.getBoundingClientRect();this.getTransformWidget().updateDimensions(i)}))};this.updateInputValue=()=>{var i,t,s;const n=(i=this.dragging)!==null&&i!==void 0?i:this.lastDragged;const o=(n===null||n===void 0?void 0:n.identifier)==="xy-translate"||(n===null||n===void 0?void 0:n.identifier)==="xz-translate"||(n===null||n===void 0?void 0:n.identifier)==="yz-translate";if(n!=null&&this.currentTransform!=null&&this.dragStartTransform!=null&&!o){this.lastInputValue=this.inputValue;this.inputValue=K(n.identifier,this.currentTransform,this.dragStartTransform,this.distanceUnit,this.angleUnit);if(this.inputRef!=null){const i=(s=(t=this.getDisplayedDistance())!==null&&t!==void 0?t:this.getDisplayedAngle())!==null&&s!==void 0?s:0;const n=`${parseFloat(i.toFixed(this.decimalPlaces))}`;this.inputRef.value=n}}};this.updateInputPosition=()=>{var i,t;const s=(i=this.dragging)!==null&&i!==void 0?i:this.lastDragged;const n=(s===null||s===void 0?void 0:s.identifier)==="xy-translate"||(s===null||s===void 0?void 0:s.identifier)==="xz-translate"||(s===null||s===void 0?void 0:s.identifier)==="yz-translate";if(this.showInputs&&((t=this.viewer)===null||t===void 0?void 0:t.frame)!=null&&this.position!=null&&s!=null&&!n){const i=this.getTransformWidget();const t=i.getFullBounds();this.inputPosition=t!=null?G(this.viewer.viewport,t,s.points.toArray()):undefined}else if(n){this.inputPosition=undefined}};this.beginEndTransform=()=>{const i=this.getTransformWidget();i.updateDisabledAxis({xRotation:true,yRotation:true,zRotation:true,xTranslation:true,yTranslation:true,zTranslation:true,xyTranslation:true,xzTranslation:true,yzTranslation:true});this.isEndingTransform=true};this.completeEndTransform=()=>{const i=this.getTransformWidget();i.updateDisabledAxis({xRotation:this.xRotationDisabled,yRotation:this.yRotationDisabled,zRotation:this.zRotationDisabled,xTranslation:this.xTranslationDisabled,yTranslation:this.yTranslationDisabled,zTranslation:this.zTranslationDisabled,xyTranslation:this.xyTranslationDisabled,xzTranslation:this.xzTranslationDisabled,yzTranslation:this.yzTranslationDisabled});this.isEndingTransform=false;this.inputShouldFocus=true;if(this.currentTransform!=null){this.position=h.fromMatrixPosition(this.currentTransform);this.rotation=v.fromRotationMatrix(this.currentTransform)}};this.isModifyingAngleUnits=()=>{var i,t,s;const n=(t=(i=this.dragging)===null||i===void 0?void 0:i.identifier)!==null&&t!==void 0?t:(s=this.lastDragged)===null||s===void 0?void 0:s.identifier;return!!(n===null||n===void 0?void 0:n.includes("rotate"))};this.getTranslationScalar=()=>{if(this.translationHandleScalar>0){return this.translationHandleScalar}console.warn("Invalid value provided for translation-handle-scalar. Expected a positive value greater than zero.");return 1};this.getRotationScalar=()=>{if(this.rotationHandleScalar>0){return this.rotationHandleScalar}console.warn("Invalid value provided for rotation-handle-scalar. Expected a positive value greater than zero.");return 1};this.getDisplayedUnits=()=>{if(this.isModifyingAngleUnits()){return new m(this.angleUnit)}return new z(this.distanceUnit)};this.getDisplayedAngle=()=>{if(this.isModifyingAngleUnits()){return this.inputValue}};this.getDisplayedDistance=()=>{var i,t,s;const n=(t=(i=this.dragging)===null||i===void 0?void 0:i.identifier)!==null&&t!==void 0?t:(s=this.lastDragged)===null||s===void 0?void 0:s.identifier;if(n===null||n===void 0?void 0:n.includes("translate")){return this.inputValue}};this.getTransformForNewPosition=i=>{if(i!=null){const t=this.currentTransform!=null?this.currentTransform:u.makeIdentity();const s=u.makeRotation(f.fromMatrixRotation(t));const n=u.makeTranslation(i);return u.multiply(n,s)}};this.getTransformForNewRotation=i=>{const t=this.currentTransform!=null?this.currentTransform:u.makeIdentity();const s=u.invert(u.makeRotation(f.fromMatrixRotation(t)));const n=u.makeRotation(f.fromEuler(i));const o=u.multiply(t,s);return u.multiply(o,n)};this.getCanvasBounds=()=>{if(this.canvasBounds!=null){return this.canvasBounds}else if(this.canvasRef!=null){this.updateCanvasBounds(this.canvasRef);return this.canvasBounds}};this.getTransformWidget=()=>{if(this.widget==null&&this.canvasRef!=null){return this.setupTransformWidget(this.canvasRef)}else if(this.widget!=null){return this.widget}else{throw new Error("Transform widget was not initialized. The canvas element may not have been initialized.")}}}componentDidLoad(){window.addEventListener("pointermove",this.handlePointerMove);this.canvasResizeObserver=new ResizeObserver(this.handleResize);this.inputResizeObserver=new ResizeObserver(this.handleInputResize);this.hostStyleObserver=new MutationObserver(this.handleStyleChange);if(this.canvasRef!=null){this.canvasResizeObserver.observe(this.canvasRef);this.setupTransformWidget(this.canvasRef)}this.hostStyleObserver.observe(this.hostEl,{attributes:true,attributeFilter:["style"]});this.handleViewerChanged(this.viewer,undefined);this.handleStyleChange()}disconnectedCallback(){var i,t,s,n,o;window.removeEventListener("pointermove",this.handlePointerMove);(i=this.canvasResizeObserver)===null||i===void 0?void 0:i.disconnect();(t=this.inputResizeObserver)===null||t===void 0?void 0:t.disconnect();(s=this.hostStyleObserver)===null||s===void 0?void 0:s.disconnect();(n=this.hoveredChangeDisposable)===null||n===void 0?void 0:n.dispose();(o=this.widget)===null||o===void 0?void 0:o.dispose()}componentDidRender(){if(this.inputShouldFocus&&this.inputRef!=null){j(this.inputRef);this.inputShouldFocus=false}}async EXPERIMENTAL_undo(){var i,t;const s=await((i=this.controller)===null||i===void 0?void 0:i.EXPERIMENTAL_undoTransform());if(this.currentTransform!=null&&s!=null){this.currentTransform=u.multiply(s,this.currentTransform);(t=this.widget)===null||t===void 0?void 0:t.updateTransform(this.currentTransform);this.updateInputPosition();this.updateInputValue();this.lastInputValue=this.inputValue;this.position=h.fromMatrixPosition(this.currentTransform);this.rotation=v.fromRotationMatrix(this.currentTransform)}}handleViewerChanged(i,t){var s;t===null||t===void 0?void 0:t.removeEventListener("frameDrawn",this.handleViewerFrameDrawn);t===null||t===void 0?void 0:t.removeEventListener("dimensionschange",this.handleViewerDimensionsChange);i===null||i===void 0?void 0:i.addEventListener("frameDrawn",this.handleViewerFrameDrawn);i===null||i===void 0?void 0:i.addEventListener("dimensionschange",this.handleViewerDimensionsChange);if((i===null||i===void 0?void 0:i.stream)!=null){(s=this.controller)===null||s===void 0?void 0:s.dispose();this.controller=new b(i.stream)}}handleDisabledPropertyChanged(){var i;(i=this.widget)===null||i===void 0?void 0:i.updateDisabledAxis({xRotation:this.xRotationDisabled,yRotation:this.yRotationDisabled,zRotation:this.zRotationDisabled,xTranslation:this.xTranslationDisabled,yTranslation:this.yTranslationDisabled,zTranslation:this.zTranslationDisabled,xyTranslation:this.xyTranslationDisabled,xzTranslation:this.xzTranslationDisabled,yzTranslation:this.yzTranslationDisabled})}handleTransformHandleScalarChanged(){var i;const t=this.getTranslationScalar();const s=this.getRotationScalar();(i=this.widget)===null||i===void 0?void 0:i.updateScalars({xTranslation:t,yTranslation:t,zTranslation:t,xyTranslation:s,xzTranslation:s,yzTranslation:s,xRotation:s,yRotation:s,zRotation:s})}handleRotationChanged(i,t){var s;const n=i!==null&&i!==void 0?i:v.create();this.currentTransform=this.getTransformForNewRotation(n);this.startingTransform=this.currentTransform;if(i==null&&this.currentTransform!=null&&u.isIdentity(this.currentTransform)){this.currentTransform=undefined;this.startingTransform=this.currentTransform}(s=this.widget)===null||s===void 0?void 0:s.updateTransform(this.currentTransform);console.debug(`Updating widget rotation [previous=${JSON.stringify(t)}, current=${JSON.stringify(i)}]`);this.rotationChanged.emit(i)}handlePositionChanged(i,t){var s,n;this.currentTransform=this.getTransformForNewPosition(i);this.startingTransform=this.currentTransform;console.debug(`Updating widget position [previous=${JSON.stringify(t)}, current=${JSON.stringify(i)}]`);(s=this.widget)===null||s===void 0?void 0:s.updateTransform(this.currentTransform);if(i==null){this.lastDragged=undefined;this.inputPosition=undefined;(n=this.controller)===null||n===void 0?void 0:n.clearTransform()}this.positionChanged.emit(i)}handleInputFormattingChanged(){this.updateInputValue();this.lastInputValue=this.inputValue}render(){var t,s,n,o,e,h;return i(l,{key:"5d32e8df03f363c836a8a6194f9ff945227a70c8"},i("canvas",{key:"ba1d8b8b1fb99b808809d32176f341d12708af32",ref:i=>{this.canvasRef=i},class:g("widget",{hovered:this.hovered!=null}),tabindex:"0",width:(t=this.viewer)===null||t===void 0?void 0:t.viewport.width,height:(s=this.viewer)===null||s===void 0?void 0:s.viewport.height,onPointerDown:this.handleBeginDrag,onKeyDown:this.handleKeyDown}),this.showInputs&&this.inputPosition&&((n=this.viewer)===null||n===void 0?void 0:n.viewport)&&i(ti,{key:"734bd29977c8efe57e5e4e9d838279c8d7777ead",ref:i=>{var t,s;if(i!=null){(t=this.inputResizeObserver)===null||t===void 0?void 0:t.observe(i)}else if(this.inputWrapperRef!=null){(s=this.inputResizeObserver)===null||s===void 0?void 0:s.unobserve(this.inputWrapperRef)}this.inputWrapperRef=i},bounds:this.inputBounds,viewport:this.viewer.viewport,point:this.inputPosition.point,placement:this.inputPosition.placement,displayUnit:this.getDisplayedUnits()},i(si,{key:"0d8d997c37a534fcbfe24d452e520a321fea2f18",ref:i=>{this.inputRef=i},identifier:(e=(o=this.dragging)===null||o===void 0?void 0:o.identifier)!==null&&e!==void 0?e:(h=this.lastDragged)===null||h===void 0?void 0:h.identifier,disabled:this.isEndingTransform,onChange:this.handleInputChange,onIncrement:()=>this.handleInputStep(1),onDecrement:()=>this.handleInputStep(-1),onBlur:()=>{this.inputShouldFocus=false},onUndo:this.EXPERIMENTAL_undoKeybindings?()=>this.EXPERIMENTAL_undo():undefined})))}transform(i,t,s){var n,o;if(this.position!=null&&this.startingTransform!=null&&this.currentTransform!=null&&this.dragging!=null&&this.viewer!=null&&this.viewer.frame!=null){this.currentTransform=L(this.currentTransform,i,t,(n=this.viewer)===null||n===void 0?void 0:n.frame.scene.camera.viewVector,s,this.dragging.identifier);this.getTransformWidget().updateTransform(this.currentTransform);(o=this.controller)===null||o===void 0?void 0:o.updateTransform(u.multiply(this.currentTransform,u.invert(this.startingTransform)))}}handleSettingDisabledAxis(){if(this.widget){this.widget.updateDisabledAxis({xRotation:this.xRotationDisabled,yRotation:this.yRotationDisabled,zRotation:this.zRotationDisabled,xTranslation:this.xTranslationDisabled,yTranslation:this.yTranslationDisabled,zTranslation:this.zTranslationDisabled,xyTranslation:this.xyTranslationDisabled,xzTranslation:this.xzTranslationDisabled,yzTranslation:this.yzTranslationDisabled})}else{console.warn("Cannot set disabled values - no widget defined")}}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],xTranslationDisabled:[{handleDisabledPropertyChanged:0}],yTranslationDisabled:[{handleDisabledPropertyChanged:0}],zTranslationDisabled:[{handleDisabledPropertyChanged:0}],xyTranslationDisabled:[{handleDisabledPropertyChanged:0}],xzTranslationDisabled:[{handleDisabledPropertyChanged:0}],yzTranslationDisabled:[{handleDisabledPropertyChanged:0}],xRotationDisabled:[{handleDisabledPropertyChanged:0}],yRotationDisabled:[{handleDisabledPropertyChanged:0}],zRotationDisabled:[{handleDisabledPropertyChanged:0}],translationHandleScalar:[{handleTransformHandleScalarChanged:0}],rotationHandleScalar:[{handleTransformHandleScalarChanged:0}],rotation:[{handleRotationChanged:0}],position:[{handlePositionChanged:0}],distanceUnit:[{handleInputFormattingChanged:0}],angleUnit:[{handleInputFormattingChanged:0}],decimalPlaces:[{handleInputFormattingChanged:0}]}}static get style(){return ci()}},[1,"vertex-viewer-transform-widget",{viewer:[16],position:[1040],rotation:[1040],controller:[1040],xRotationDisabled:[1028,"x-rotation-disabled"],yRotationDisabled:[1028,"y-rotation-disabled"],zRotationDisabled:[1028,"z-rotation-disabled"],xTranslationDisabled:[1028,"x-translation-disabled"],yTranslationDisabled:[1028,"y-translation-disabled"],zTranslationDisabled:[1028,"z-translation-disabled"],xyTranslationDisabled:[1028,"xy-translation-disabled"],xzTranslationDisabled:[1028,"xz-translation-disabled"],yzTranslationDisabled:[1028,"yz-translation-disabled"],showInputs:[4,"show-inputs"],distanceUnit:[1,"distance-unit"],angleUnit:[1,"angle-unit"],decimalPlaces:[2,"decimal-places"],rotationSnapDegrees:[2,"rotation-snap-degrees"],rotationSnapKey:[1,"rotation-snap-key"],translationHandleScalar:[2,"translation-handle-scalar"],rotationHandleScalar:[2,"rotation-handle-scalar"],interactionThrottle:[2,"interaction-throttle"],EXPERIMENTAL_undoKeybindings:[4,"e-x-p-e-r-i-m-e-n-t-a-l_undo-keybindings"],hovered:[1040],inputPosition:[32],inputValue:[32],isEndingTransform:[32],EXPERIMENTAL_undo:[64]},undefined,{viewer:[{handleViewerChanged:0}],xTranslationDisabled:[{handleDisabledPropertyChanged:0}],yTranslationDisabled:[{handleDisabledPropertyChanged:0}],zTranslationDisabled:[{handleDisabledPropertyChanged:0}],xyTranslationDisabled:[{handleDisabledPropertyChanged:0}],xzTranslationDisabled:[{handleDisabledPropertyChanged:0}],yzTranslationDisabled:[{handleDisabledPropertyChanged:0}],xRotationDisabled:[{handleDisabledPropertyChanged:0}],yRotationDisabled:[{handleDisabledPropertyChanged:0}],zRotationDisabled:[{handleDisabledPropertyChanged:0}],translationHandleScalar:[{handleTransformHandleScalarChanged:0}],rotationHandleScalar:[{handleTransformHandleScalarChanged:0}],rotation:[{handleRotationChanged:0}],position:[{handlePositionChanged:0}],distanceUnit:[{handleInputFormattingChanged:0}],angleUnit:[{handleInputFormattingChanged:0}],decimalPlaces:[{handleInputFormattingChanged:0}]}]);function wi(){if(typeof customElements==="undefined"){return}const i=["vertex-viewer-transform-widget"];i.forEach((i=>{switch(i){case"vertex-viewer-transform-widget":if(!customElements.get(t(i))){customElements.define(t(i),fi)}break}}))}wi();const pi=fi;const gi=wi;export{pi as VertexViewerTransformWidget,gi as defineCustomElement};
|
|
5
5
|
//# sourceMappingURL=vertex-viewer-transform-widget.js.map
|