@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,"file":"viewer-view-cube.js","sourceRoot":"","sources":["../../../../../src/components/viewer-view-cube/viewer-view-cube.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\n\nimport { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Vector3 } from '@vertexvis/geometry';\n\nimport { readDOM } from '../../lib/stencil';\nimport {\n FramePerspectiveCamera,\n Orientation,\n StandardView,\n} from '../../lib/types';\nimport {\n TriadAxis,\n ViewCubeCorner,\n ViewCubeEdge,\n ViewCubeShadow,\n ViewCubeSide,\n} from './viewer-view-cube-components';\n\n@Component({\n tag: 'vertex-viewer-view-cube',\n styleUrl: 'viewer-view-cube.css',\n shadow: true,\n})\nexport class ViewerViewCube {\n private rendererEl?: HTMLVertexViewerDomRendererElement;\n\n @State()\n private boxLength = 80;\n\n @State()\n private triadPosition = Vector3.origin();\n\n /**\n * The label for the side of the cube on the positive x-axis.\n */\n @Prop()\n public xPositiveLabel = 'Right';\n\n /**\n * The label for the side of the cube on the negative x-axis.\n */\n @Prop()\n public xNegativeLabel = 'Left';\n\n /**\n * The label for the side of the cube on the positive y-axis.\n */\n @Prop()\n public yPositiveLabel = 'Top';\n\n /**\n * The label for the side of the cube on the negative y-axis.\n */\n @Prop()\n public yNegativeLabel = 'Bottom';\n\n /**\n * The label for the side of the cube on the positive z-axis.\n */\n @Prop()\n public zPositiveLabel = 'Front';\n\n /**\n * The label for the side of the cube on the negative z-axis.\n */\n @Prop()\n public zNegativeLabel = 'Back';\n\n /**\n * Disables interactions for standard views.\n */\n @Prop()\n public standardViewsOff = false;\n\n /**\n * Whether to perform a `viewAll` when clicking on the view cube. If this\n * is set to `false`, the current `lookAt` point will be maintained, and the\n * camera's `position` and `up` vectors will be aligned to the standard view.\n * Defaults to `true`.\n *\n * **Note** Setting this value to `false` can result in the camera being placed\n * underneath geometry depending on the current `viewVector` length, resulting\n * in a view that may be unexpected.\n */\n @Prop()\n public viewAll = true;\n\n /**\n * The duration of the animation, in milliseconds, when a user performs a\n * standard view interaction. Set to 0 to disable animations.\n */\n @Prop()\n public animationDuration = 500;\n\n /**\n * Disables the display of the triad.\n */\n @Prop()\n public triadOff = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public worldOrientation: Orientation = Orientation.DEFAULT;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public camera?: FramePerspectiveCamera;\n\n /**\n * The viewer element that is connected to the view cube.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n oldViewer?.removeEventListener('frameDrawn', this.updateMatrices);\n newViewer?.addEventListener('frameDrawn', this.updateMatrices);\n this.updateMatrices();\n }\n\n private updateMatrices = (): void => {\n if (this.viewer?.frame != null) {\n const { camera } = this.viewer.frame.scene;\n\n const halfLength = this.boxLength / 2;\n this.triadPosition = Vector3.create(\n -halfLength - 5,\n -halfLength - 5,\n -halfLength - 5\n );\n\n // Used to scale the camera position so the cube is the same size as the\n // container. This isn't exact, but pretty close.\n const lengthScalar = 3.125;\n const scale = this.boxLength * lengthScalar;\n const fovY = 21.5;\n\n this.camera = new FramePerspectiveCamera(\n Vector3.scale(scale, Vector3.negate(camera.direction)),\n Vector3.origin(),\n camera.up,\n 0.1,\n 100,\n 1,\n fovY\n );\n\n this.worldOrientation = this.viewer.frame.scene.worldOrientation;\n }\n };\n\n private handleStandardView(standardView: StandardView): () => Promise<void> {\n if (this.standardViewsOff) {\n return async () => undefined;\n } else {\n return async () => {\n if (this.viewer != null) {\n const scene = await this.viewer.scene();\n const animation =\n this.animationDuration > 0\n ? { animation: { milliseconds: this.animationDuration } }\n : {};\n const worldStandardView = standardView.transformMatrix(\n this.worldOrientation.matrix\n );\n\n // Check to see if any geometry is visible. If not, don't perform viewAll\n const currentBoundingBox = scene.boundingBox();\n if (!this.viewAll) {\n scene\n .camera()\n .standardViewFixedLookAt(worldStandardView)\n .render(animation);\n } else if (\n currentBoundingBox?.max != null &&\n Vector3.isEqual(currentBoundingBox.max, Vector3.origin()) &&\n Vector3.isEqual(currentBoundingBox.min, Vector3.origin())\n ) {\n scene.camera().standardView(worldStandardView).render(animation);\n } else {\n scene\n .camera()\n .standardView(worldStandardView)\n .viewAll()\n .render(animation);\n }\n }\n };\n }\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.handleViewerChanged(this.viewer);\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n if (this.rendererEl != null) {\n const observer = new ResizeObserver(() => this.handleRendererResized());\n observer.observe(this.rendererEl);\n this.handleRendererResized();\n }\n }\n\n private handleRendererResized(): void {\n readDOM(() => {\n if (this.rendererEl != null) {\n const rect = this.rendererEl.getBoundingClientRect();\n this.boxLength = Math.min(rect.width, rect.height);\n }\n });\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-dom-renderer\n ref={(ref) => (this.rendererEl = ref)}\n class=\"renderer\"\n camera={this.camera}\n >\n {/* Triad */}\n {!this.triadOff && (\n <vertex-viewer-dom-group\n class=\"triad\"\n position={this.triadPosition}\n >\n <TriadAxis\n label=\"X\"\n length={this.boxLength}\n rotationAxis={Vector3.origin()}\n />\n <TriadAxis\n label=\"Y\"\n length={this.boxLength}\n rotationAxis={Vector3.back()}\n />\n <TriadAxis\n label=\"Z\"\n length={this.boxLength}\n rotationAxis={Vector3.down()}\n />\n </vertex-viewer-dom-group>\n )}\n\n {/* Cube */}\n <vertex-viewer-dom-group\n class=\"cube\"\n matrix={this.worldOrientation.matrix}\n >\n <ViewCubeShadow length={this.boxLength + 10} />\n\n {/* Sides */}\n <ViewCubeSide\n label={this.zPositiveLabel}\n length={this.boxLength}\n side=\"front\"\n onPointerDown={this.handleStandardView(StandardView.FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.zNegativeLabel}\n length={this.boxLength}\n side=\"back\"\n onPointerDown={this.handleStandardView(StandardView.BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xNegativeLabel}\n length={this.boxLength}\n side=\"left\"\n onPointerDown={this.handleStandardView(StandardView.LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xPositiveLabel}\n length={this.boxLength}\n side=\"right\"\n onPointerDown={this.handleStandardView(StandardView.RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yPositiveLabel}\n length={this.boxLength}\n side=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yNegativeLabel}\n length={this.boxLength}\n side=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM)}\n disabled={this.standardViewsOff}\n />\n\n {/* Edges */}\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"bottom\"\n face2Side=\"front\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"top\"\n face2Side=\"front\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"left\"\n face2Side=\"right\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.BACK_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"top\"\n face2Side=\"back\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"right\"\n face2Side=\"left\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.BACK_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"bottom\"\n face2Side=\"back\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_RIGHT)}\n disabled={this.standardViewsOff}\n />\n\n {/* Corners */}\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-left\"\n face2Side=\"front\"\n face2Corner=\"top-left\"\n face3Side=\"left\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-right\"\n face2Side=\"front\"\n face2Corner=\"top-right\"\n face3Side=\"right\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-right\"\n face2Side=\"front\"\n face2Corner=\"bottom-right\"\n face3Side=\"right\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-left\"\n face2Side=\"front\"\n face2Corner=\"bottom-left\"\n face3Side=\"left\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-right\"\n face2Side=\"back\"\n face2Corner=\"top-left\"\n face3Side=\"right\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-left\"\n face2Side=\"back\"\n face2Corner=\"top-right\"\n face3Side=\"left\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-left\"\n face2Side=\"back\"\n face2Corner=\"bottom-right\"\n face3Side=\"left\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_RIGHT\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-right\"\n face2Side=\"back\"\n face2Corner=\"bottom-left\"\n face3Side=\"right\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_LEFT\n )}\n disabled={this.standardViewsOff}\n />\n </vertex-viewer-dom-group>\n </vertex-viewer-dom-renderer>\n </Host>\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"viewer-view-cube.js","sourceRoot":"","sources":["../../../../../src/components/viewer-view-cube/viewer-view-cube.tsx"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/member-ordering */\n\nimport { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Vector3 } from '@vertexvis/geometry';\n\nimport { readDOM } from '../../lib/stencil';\nimport {\n FramePerspectiveCamera,\n Orientation,\n StandardView,\n} from '../../lib/types';\nimport {\n TriadAxis,\n ViewCubeCorner,\n ViewCubeEdge,\n ViewCubeShadow,\n ViewCubeSide,\n} from './viewer-view-cube-components';\n\n@Component({\n tag: 'vertex-viewer-view-cube',\n styleUrl: 'viewer-view-cube.css',\n shadow: true,\n})\nexport class ViewerViewCube {\n private rendererEl?: HTMLVertexViewerDomRendererElement;\n\n @State()\n private boxLength = 80;\n\n @State()\n private triadPosition = Vector3.origin();\n\n /**\n * The label for the side of the cube on the positive x-axis.\n */\n @Prop()\n public xPositiveLabel = 'Right';\n\n /**\n * The label for the side of the cube on the negative x-axis.\n */\n @Prop()\n public xNegativeLabel = 'Left';\n\n /**\n * The label for the side of the cube on the positive y-axis.\n */\n @Prop()\n public yPositiveLabel = 'Top';\n\n /**\n * The label for the side of the cube on the negative y-axis.\n */\n @Prop()\n public yNegativeLabel = 'Bottom';\n\n /**\n * The label for the side of the cube on the positive z-axis.\n */\n @Prop()\n public zPositiveLabel = 'Front';\n\n /**\n * The label for the side of the cube on the negative z-axis.\n */\n @Prop()\n public zNegativeLabel = 'Back';\n\n /**\n * Disables interactions for standard views.\n */\n @Prop()\n public standardViewsOff = false;\n\n /**\n * Whether to perform a `viewAll` when clicking on the view cube. If this\n * is set to `false`, the current `lookAt` point will be maintained, and the\n * camera's `position` and `up` vectors will be aligned to the standard view.\n * Defaults to `true`.\n *\n * **Note** Setting this value to `false` can result in the camera being placed\n * underneath geometry depending on the current `viewVector` length, resulting\n * in a view that may be unexpected.\n */\n @Prop()\n public viewAll = true;\n\n /**\n * The duration of the animation, in milliseconds, when a user performs a\n * standard view interaction. Set to 0 to disable animations.\n */\n @Prop()\n public animationDuration = 500;\n\n /**\n * Disables the display of the triad.\n */\n @Prop()\n public triadOff = false;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public worldOrientation: Orientation = Orientation.DEFAULT;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public camera?: FramePerspectiveCamera;\n\n /**\n * The viewer element that is connected to the view cube.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement,\n ): void {\n oldViewer?.removeEventListener('frameDrawn', this.updateMatrices);\n newViewer?.addEventListener('frameDrawn', this.updateMatrices);\n this.updateMatrices();\n }\n\n private updateMatrices = (): void => {\n if (this.viewer?.frame != null) {\n const { camera } = this.viewer.frame.scene;\n\n const halfLength = this.boxLength / 2;\n this.triadPosition = Vector3.create(\n -halfLength - 5,\n -halfLength - 5,\n -halfLength - 5,\n );\n\n // Used to scale the camera position so the cube is the same size as the\n // container. This isn't exact, but pretty close.\n const lengthScalar = 3.125;\n const scale = this.boxLength * lengthScalar;\n const fovY = 21.5;\n\n this.camera = new FramePerspectiveCamera(\n Vector3.scale(scale, Vector3.negate(camera.direction)),\n Vector3.origin(),\n camera.up,\n 0.1,\n 100,\n 1,\n fovY,\n );\n\n this.worldOrientation = this.viewer.frame.scene.worldOrientation;\n }\n };\n\n private handleStandardView(standardView: StandardView): () => Promise<void> {\n if (this.standardViewsOff) {\n return async () => undefined;\n } else {\n return async () => {\n if (this.viewer != null) {\n const scene = await this.viewer.scene();\n const animation =\n this.animationDuration > 0\n ? { animation: { milliseconds: this.animationDuration } }\n : {};\n const worldStandardView = standardView.transformMatrix(\n this.worldOrientation.matrix,\n );\n\n // Check to see if any geometry is visible. If not, don't perform viewAll\n const currentBoundingBox = scene.boundingBox();\n if (!this.viewAll) {\n scene\n .camera()\n .standardViewFixedLookAt(worldStandardView)\n .render(animation);\n } else if (\n currentBoundingBox?.max != null &&\n Vector3.isEqual(currentBoundingBox.max, Vector3.origin()) &&\n Vector3.isEqual(currentBoundingBox.min, Vector3.origin())\n ) {\n scene.camera().standardView(worldStandardView).render(animation);\n } else {\n scene\n .camera()\n .standardView(worldStandardView)\n .viewAll()\n .render(animation);\n }\n }\n };\n }\n }\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.handleViewerChanged(this.viewer);\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n if (this.rendererEl != null) {\n const observer = new ResizeObserver(() => this.handleRendererResized());\n observer.observe(this.rendererEl);\n this.handleRendererResized();\n }\n }\n\n private handleRendererResized(): void {\n readDOM(() => {\n if (this.rendererEl != null) {\n const rect = this.rendererEl.getBoundingClientRect();\n this.boxLength = Math.min(rect.width, rect.height);\n }\n });\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-dom-renderer\n ref={(ref) => (this.rendererEl = ref)}\n class=\"renderer\"\n camera={this.camera}\n >\n {/* Triad */}\n {!this.triadOff && (\n <vertex-viewer-dom-group\n class=\"triad\"\n position={this.triadPosition}\n >\n <TriadAxis\n label=\"X\"\n length={this.boxLength}\n rotationAxis={Vector3.origin()}\n />\n <TriadAxis\n label=\"Y\"\n length={this.boxLength}\n rotationAxis={Vector3.back()}\n />\n <TriadAxis\n label=\"Z\"\n length={this.boxLength}\n rotationAxis={Vector3.down()}\n />\n </vertex-viewer-dom-group>\n )}\n\n {/* Cube */}\n <vertex-viewer-dom-group\n class=\"cube\"\n matrix={this.worldOrientation.matrix}\n >\n <ViewCubeShadow length={this.boxLength + 10} />\n\n {/* Sides */}\n <ViewCubeSide\n label={this.zPositiveLabel}\n length={this.boxLength}\n side=\"front\"\n onPointerDown={this.handleStandardView(StandardView.FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.zNegativeLabel}\n length={this.boxLength}\n side=\"back\"\n onPointerDown={this.handleStandardView(StandardView.BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xNegativeLabel}\n length={this.boxLength}\n side=\"left\"\n onPointerDown={this.handleStandardView(StandardView.LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.xPositiveLabel}\n length={this.boxLength}\n side=\"right\"\n onPointerDown={this.handleStandardView(StandardView.RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yPositiveLabel}\n length={this.boxLength}\n side=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeSide\n label={this.yNegativeLabel}\n length={this.boxLength}\n side=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM)}\n disabled={this.standardViewsOff}\n />\n\n {/* Edges */}\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"bottom\"\n face2Side=\"front\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"top\"\n face2Side=\"front\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_FRONT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"front\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.FRONT_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"left\"\n face2Side=\"right\"\n face2Edge=\"right\"\n onPointerDown={this.handleStandardView(StandardView.BACK_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"right\"\n face2Side=\"right\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_LEFT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"top\"\n face2Side=\"back\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"back\"\n face1Edge=\"right\"\n face2Side=\"left\"\n face2Edge=\"left\"\n onPointerDown={this.handleStandardView(StandardView.BACK_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"bottom\"\n face2Side=\"back\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_BACK)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"top\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"top\"\n onPointerDown={this.handleStandardView(StandardView.TOP_RIGHT)}\n disabled={this.standardViewsOff}\n />\n <ViewCubeEdge\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Edge=\"left\"\n face2Side=\"left\"\n face2Edge=\"bottom\"\n onPointerDown={this.handleStandardView(StandardView.BOTTOM_RIGHT)}\n disabled={this.standardViewsOff}\n />\n\n {/* Corners */}\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-left\"\n face2Side=\"front\"\n face2Corner=\"top-left\"\n face3Side=\"left\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_RIGHT,\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"bottom-right\"\n face2Side=\"front\"\n face2Corner=\"top-right\"\n face3Side=\"right\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_FRONT_LEFT,\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-right\"\n face2Side=\"front\"\n face2Corner=\"bottom-right\"\n face3Side=\"right\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_LEFT,\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"top-left\"\n face2Side=\"front\"\n face2Corner=\"bottom-left\"\n face3Side=\"left\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_FRONT_RIGHT,\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-right\"\n face2Side=\"back\"\n face2Corner=\"top-left\"\n face3Side=\"right\"\n face3Corner=\"top-right\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_LEFT,\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"top\"\n face1Corner=\"top-left\"\n face2Side=\"back\"\n face2Corner=\"top-right\"\n face3Side=\"left\"\n face3Corner=\"top-left\"\n onPointerDown={this.handleStandardView(\n StandardView.TOP_BACK_RIGHT,\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-left\"\n face2Side=\"back\"\n face2Corner=\"bottom-right\"\n face3Side=\"left\"\n face3Corner=\"bottom-left\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_RIGHT,\n )}\n disabled={this.standardViewsOff}\n />\n <ViewCubeCorner\n length={this.boxLength}\n face1Side=\"bottom\"\n face1Corner=\"bottom-right\"\n face2Side=\"back\"\n face2Corner=\"bottom-left\"\n face3Side=\"right\"\n face3Corner=\"bottom-right\"\n onPointerDown={this.handleStandardView(\n StandardView.BOTTOM_BACK_LEFT,\n )}\n disabled={this.standardViewsOff}\n />\n </vertex-viewer-dom-group>\n </vertex-viewer-dom-renderer>\n </Host>\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewer-walk-mode-tool.js","sourceRoot":"","sources":["../../../../../src/components/viewer-walk-mode-tool/viewer-walk-mode-tool.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { InteractionType } from '../../lib/interactions/baseInteractionHandler';\nimport { WalkModeController } from '../../lib/walk-mode/controller';\nimport { WalkInteractionHandler } from '../../lib/walk-mode/interactions';\nimport { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';\n\ninterface StateMap {\n teleportTool?: HTMLVertexViewerTeleportToolElement;\n previousPrimaryInteractionType?: InteractionType;\n}\n\n/**\n * The `<vertex-viewer-walk-mode-tool>` allows for additional interactions\n * intended for walking through a model instead of orbiting a model.\n */\n@Component({\n tag: 'vertex-viewer-walk-mode-tool',\n styleUrl: 'viewer-walk-mode-tool.css',\n shadow: true,\n})\nexport class ViewerWalkModeTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The `WalkModeController` responsible for controlling `KeyBinding`s and excluded\n * elements, as well as updating the `WalkModeModel` with various configuration\n * settings.\n */\n @Prop({ mutable: true })\n public controller?: WalkModeController;\n\n /**\n * The `WalkModeModel` responsible for tracking configuration and emitting\n * events for interaction handlers to respond to.\n */\n @Prop({ mutable: true })\n public model: WalkModeModel = new WalkModeModel();\n\n /**\n * The type of teleportation to perform when clicking. This value is passed through\n * to a `<vertex-viewer-teleport-tool>`'s mode attribute.\n *\n * `teleport` - the camera's `position` is moved to the location of the hit result\n * constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated\n * to align to the plane represented by the hit result's position and normal.\n *\n * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the\n * hit result constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `undefined` - no teleportation will occur when clicking.\n *\n * Defaults to `undefined`.\n */\n @Prop()\n public teleportMode?: ViewerTeleportMode;\n\n /**\n * Determines whether the interaction handlers for this tool should respond to events.\n * When set to `true`, the default viewer interaction mode will be overridden to use the\n * `pivot` camera interaction type, keyboard controls for movement will be added, and\n * setting the `teleportMode` will enable the tool.\n *\n * Defaults to `true`.\n */\n @Prop()\n public enabled = true;\n\n /**\n * Event emitted when the `WalkModeController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<WalkModeController>;\n\n @Element()\n private hostEl?: HTMLElement;\n\n private interactionHandlerDisposable?: Disposable;\n private interactionHandler?: WalkInteractionHandler;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected async componentDidLoad(): Promise<void> {\n await this.ensureTeleportToolConfigured();\n this.updateTeleportTool();\n await this.setPivotInteractionMode();\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setPivotInteractionMode();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.resetInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('enabled')\n protected handleEnabledChanged(): void {\n this.controller?.setEnabled(this.enabled);\n this.toggleInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n this.updateTeleportTool();\n this.toggleInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('teleportMode')\n protected handleTeleportModeChanged(): void {\n this.updateTeleportTool();\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(): void {\n this.updateTeleportTool();\n this.controllerChanged.emit(this.controller);\n }\n\n /**\n * @ignore\n */\n @Watch('model')\n protected handleModelChanged(): void {\n this.setupController();\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n }\n\n protected render(): JSX.Element {\n return (\n <Host>\n <slot\n name=\"teleport-tool\"\n onSlotchange={async () => {\n await this.ensureTeleportToolConfigured();\n this.updateTeleportTool();\n }}\n ></slot>\n </Host>\n );\n }\n\n private setupController(): void {\n if (this.controller == null) {\n this.controller = new WalkModeController(this.model);\n this.controllerChanged.emit(this.controller);\n } else {\n this.controller.updateModel(this.model);\n }\n }\n\n private clearInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandlerDisposable = undefined;\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private async setupInteractionHandler(): Promise<void> {\n if (this.interactionHandler == null) {\n this.interactionHandler = new WalkInteractionHandler(this.model);\n\n this.interactionHandlerDisposable =\n await this.viewer?.registerInteractionHandler(this.interactionHandler);\n }\n }\n\n private async ensureTeleportToolConfigured(): Promise<void> {\n if (this.hostEl != null) {\n const slotted: Element | undefined =\n this.hostEl?.querySelector(\n 'vertex-viewer-teleport-tool[slot=\"teleport-tool\"]'\n ) ?? undefined;\n const slottedTeleportTool =\n slotted?.tagName === 'VERTEX-VIEWER-TELEPORT-TOOL'\n ? (slotted as HTMLVertexViewerTeleportToolElement)\n : undefined;\n\n if (slottedTeleportTool != null) {\n this.stateMap.teleportTool = slottedTeleportTool;\n } else {\n this.stateMap.teleportTool = document.createElement(\n 'vertex-viewer-teleport-tool'\n );\n this.stateMap.teleportTool.slot = 'teleport-tool';\n\n this.hostEl?.appendChild(this.stateMap.teleportTool);\n }\n }\n }\n\n private updateTeleportTool(): void {\n if (this.stateMap.teleportTool != null) {\n this.stateMap.teleportTool.viewer = this.viewer;\n this.stateMap.teleportTool.controller = this.controller;\n this.stateMap.teleportTool.model = this.model;\n this.stateMap.teleportTool.mode = this.teleportMode;\n }\n }\n\n private toggleInteractionMode(): void {\n if (this.enabled) {\n this.setPivotInteractionMode();\n } else {\n this.resetInteractionMode();\n }\n }\n\n private async setPivotInteractionMode(): Promise<void> {\n const baseInteractionHandler =\n await this.viewer?.getBaseInteractionHandler();\n\n if (this.enabled && baseInteractionHandler != null) {\n const interactionType =\n baseInteractionHandler.getPrimaryInteractionType();\n this.stateMap.previousPrimaryInteractionType =\n interactionType === 'pivot'\n ? this.stateMap.previousPrimaryInteractionType\n : interactionType;\n baseInteractionHandler.setPrimaryInteractionType('pivot');\n }\n }\n\n private async resetInteractionMode(): Promise<void> {\n const baseInteractionHandler =\n await this.viewer?.getBaseInteractionHandler();\n\n if (\n baseInteractionHandler != null &&\n baseInteractionHandler.getPrimaryInteractionType() === 'pivot' &&\n this.stateMap.previousPrimaryInteractionType != null\n ) {\n baseInteractionHandler.setPrimaryInteractionType(\n this.stateMap.previousPrimaryInteractionType\n );\n this.stateMap.previousPrimaryInteractionType = undefined;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"viewer-walk-mode-tool.js","sourceRoot":"","sources":["../../../../../src/components/viewer-walk-mode-tool/viewer-walk-mode-tool.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { InteractionType } from '../../lib/interactions/baseInteractionHandler';\nimport { WalkModeController } from '../../lib/walk-mode/controller';\nimport { WalkInteractionHandler } from '../../lib/walk-mode/interactions';\nimport { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';\n\ninterface StateMap {\n teleportTool?: HTMLVertexViewerTeleportToolElement;\n previousPrimaryInteractionType?: InteractionType;\n}\n\n/**\n * The `<vertex-viewer-walk-mode-tool>` allows for additional interactions\n * intended for walking through a model instead of orbiting a model.\n */\n@Component({\n tag: 'vertex-viewer-walk-mode-tool',\n styleUrl: 'viewer-walk-mode-tool.css',\n shadow: true,\n})\nexport class ViewerWalkModeTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The `WalkModeController` responsible for controlling `KeyBinding`s and excluded\n * elements, as well as updating the `WalkModeModel` with various configuration\n * settings.\n */\n @Prop({ mutable: true })\n public controller?: WalkModeController;\n\n /**\n * The `WalkModeModel` responsible for tracking configuration and emitting\n * events for interaction handlers to respond to.\n */\n @Prop({ mutable: true })\n public model: WalkModeModel = new WalkModeModel();\n\n /**\n * The type of teleportation to perform when clicking. This value is passed through\n * to a `<vertex-viewer-teleport-tool>`'s mode attribute.\n *\n * `teleport` - the camera's `position` is moved to the location of the hit result\n * constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated\n * to align to the plane represented by the hit result's position and normal.\n *\n * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the\n * hit result constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `undefined` - no teleportation will occur when clicking.\n *\n * Defaults to `undefined`.\n */\n @Prop()\n public teleportMode?: ViewerTeleportMode;\n\n /**\n * Determines whether the interaction handlers for this tool should respond to events.\n * When set to `true`, the default viewer interaction mode will be overridden to use the\n * `pivot` camera interaction type, keyboard controls for movement will be added, and\n * setting the `teleportMode` will enable the tool.\n *\n * Defaults to `true`.\n */\n @Prop()\n public enabled = true;\n\n /**\n * Event emitted when the `WalkModeController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<WalkModeController>;\n\n @Element()\n private hostEl?: HTMLElement;\n\n private interactionHandlerDisposable?: Disposable;\n private interactionHandler?: WalkInteractionHandler;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n }\n\n /**\n * @ignore\n */\n protected async componentDidLoad(): Promise<void> {\n await this.ensureTeleportToolConfigured();\n this.updateTeleportTool();\n await this.setPivotInteractionMode();\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setPivotInteractionMode();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.resetInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('enabled')\n protected handleEnabledChanged(): void {\n this.controller?.setEnabled(this.enabled);\n this.toggleInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n this.updateTeleportTool();\n this.toggleInteractionMode();\n }\n\n /**\n * @ignore\n */\n @Watch('teleportMode')\n protected handleTeleportModeChanged(): void {\n this.updateTeleportTool();\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(): void {\n this.updateTeleportTool();\n this.controllerChanged.emit(this.controller);\n }\n\n /**\n * @ignore\n */\n @Watch('model')\n protected handleModelChanged(): void {\n this.setupController();\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n }\n\n protected render(): JSX.Element {\n return (\n <Host>\n <slot\n name=\"teleport-tool\"\n onSlotchange={async () => {\n await this.ensureTeleportToolConfigured();\n this.updateTeleportTool();\n }}\n ></slot>\n </Host>\n );\n }\n\n private setupController(): void {\n if (this.controller == null) {\n this.controller = new WalkModeController(this.model);\n this.controllerChanged.emit(this.controller);\n } else {\n this.controller.updateModel(this.model);\n }\n }\n\n private clearInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandlerDisposable = undefined;\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private async setupInteractionHandler(): Promise<void> {\n if (this.interactionHandler == null) {\n this.interactionHandler = new WalkInteractionHandler(this.model);\n\n this.interactionHandlerDisposable =\n await this.viewer?.registerInteractionHandler(this.interactionHandler);\n }\n }\n\n private async ensureTeleportToolConfigured(): Promise<void> {\n if (this.hostEl != null) {\n const slotted: Element | undefined =\n this.hostEl?.querySelector(\n 'vertex-viewer-teleport-tool[slot=\"teleport-tool\"]',\n ) ?? undefined;\n const slottedTeleportTool =\n slotted?.tagName === 'VERTEX-VIEWER-TELEPORT-TOOL'\n ? (slotted as HTMLVertexViewerTeleportToolElement)\n : undefined;\n\n if (slottedTeleportTool != null) {\n this.stateMap.teleportTool = slottedTeleportTool;\n } else {\n this.stateMap.teleportTool = document.createElement(\n 'vertex-viewer-teleport-tool',\n );\n this.stateMap.teleportTool.slot = 'teleport-tool';\n\n this.hostEl?.appendChild(this.stateMap.teleportTool);\n }\n }\n }\n\n private updateTeleportTool(): void {\n if (this.stateMap.teleportTool != null) {\n this.stateMap.teleportTool.viewer = this.viewer;\n this.stateMap.teleportTool.controller = this.controller;\n this.stateMap.teleportTool.model = this.model;\n this.stateMap.teleportTool.mode = this.teleportMode;\n }\n }\n\n private toggleInteractionMode(): void {\n if (this.enabled) {\n this.setPivotInteractionMode();\n } else {\n this.resetInteractionMode();\n }\n }\n\n private async setPivotInteractionMode(): Promise<void> {\n const baseInteractionHandler =\n await this.viewer?.getBaseInteractionHandler();\n\n if (this.enabled && baseInteractionHandler != null) {\n const interactionType =\n baseInteractionHandler.getPrimaryInteractionType();\n this.stateMap.previousPrimaryInteractionType =\n interactionType === 'pivot'\n ? this.stateMap.previousPrimaryInteractionType\n : interactionType;\n baseInteractionHandler.setPrimaryInteractionType('pivot');\n }\n }\n\n private async resetInteractionMode(): Promise<void> {\n const baseInteractionHandler =\n await this.viewer?.getBaseInteractionHandler();\n\n if (\n baseInteractionHandler != null &&\n baseInteractionHandler.getPrimaryInteractionType() === 'pivot' &&\n this.stateMap.previousPrimaryInteractionType != null\n ) {\n baseInteractionHandler.setPrimaryInteractionType(\n this.stateMap.previousPrimaryInteractionType,\n );\n this.stateMap.previousPrimaryInteractionType = undefined;\n }\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../../src/lib/annotations/controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Uuid } from '@vertexvis/scene-tree-protos/core/protos/uuid_pb';\nimport { Pager } from '@vertexvis/scene-view-protos/core/protos/paging_pb';\nimport {\n CreateSceneViewAnnotationSetRequest,\n DeleteSceneViewAnnotationSetRequest,\n ListSceneAnnotationsRequest,\n ListSceneAnnotationsResponse,\n ListSceneViewAnnotationSetsRequest,\n ListSceneViewAnnotationSetsResponse,\n} from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { Disposable, EventDispatcher, UUID } from '@vertexvis/utils';\nimport { Async } from '@vertexvis/utils';\n\nimport { delay } from '../../testing/utils';\nimport {\n createMetadata,\n JwtProvider,\n requestPaged,\n requestUnary,\n} from '../grpc';\nimport {\n fromPbAnnotationOrThrow,\n fromPbAnnotationSetOrThrow,\n} from '../mappers/annotation';\nimport { toUuid2l } from '../mappers/uuid';\nimport { Annotation, AnnotationSet } from './annotation';\n\nexport interface AnnotationState {\n annotations: Record<AnnotationSet['id'], Annotation[]>;\n}\n\n/**\n * The controller for managing the annotations of a scene and scene view.\n */\nexport class AnnotationController {\n /**\n * A dispatcher that emits an event whenever the state of the annotations has\n * changed. The annotation state includes the annotation sets that are active\n * and the annotations that belong to each set.\n */\n public onStateChange = new EventDispatcher<AnnotationState>();\n\n private state?: AnnotationState;\n\n private connection?: Disposable;\n\n public constructor(\n private client: SceneViewAPIClient,\n private jwtProvider: JwtProvider,\n private deviceIdProvider: () => string | undefined\n ) {}\n\n /**\n * Activates an annotation set for the current session. This method will emit\n * an event on `onStateChange` when the annotation set has been added, and\n * return a promise the resolves with the new annotation state.\n *\n * @param id The ID of the annotation set.\n * @returns A promise that resolves with the new annotation state.\n */\n public async addAnnotationSet(id: UUID.UUID): Promise<AnnotationState> {\n await requestUnary(async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n\n const req = new CreateSceneViewAnnotationSetRequest();\n\n const setId = new Uuid();\n setId.setHex(id);\n req.setSceneAnnotationSetId(setId);\n\n this.client.createSceneViewAnnotationSet(req, meta, handler);\n });\n\n return this.fetch();\n }\n\n /**\n * Stops the automatic retrieval of annotation state.\n */\n public disconnect(): void {\n if (this.connection != null) {\n this.connection.dispose();\n this.connection = undefined;\n }\n }\n\n /**\n * Starts the automatic retrieval of annotation state. When a new annotation\n * state is retrieved, an event will be emitted on `onStateChange`.\n *\n * @param pollingIntervalInMs The interval to poll for a new annotation state.\n */\n public connect(pollingIntervalInMs = 10000): void {\n this.disconnect();\n\n const controller = this.pollAnnotationState(pollingIntervalInMs);\n this.connection = { dispose: () => controller.abort() };\n }\n\n /**\n * Performs a manual fetch of the annotation state. This method will emit an\n * event on `onStateChange` when the annotation set has been added, and return\n * a promise the resolves with the new annotation state.\n *\n * @param opts Options to configure the fetch behavior. If an abort signal is\n * given, then this will not emit a change event if the signal is aborted.\n * @returns A promise that resolves with the new annotation state.\n */\n public async fetch(\n opts: {\n signal?: AbortSignal;\n } = {}\n ): Promise<AnnotationState> {\n const sets = await this.fetchAnnotationSetsAsArray();\n const annotations = await this.fetchAnnotationsAsArray(sets);\n\n const state = (await Promise.all(annotations)).reduce(\n (state, [set, annotations]) => ({\n annotations: { ...state.annotations, [set.id]: annotations },\n }),\n { annotations: {} } as AnnotationState\n );\n\n if (opts.signal == null || !opts.signal.aborted) {\n this.updateState(state);\n }\n\n return state;\n }\n\n /**\n * Deactivates an annotation set for the current session. This method will\n * emit an event on `onStateChange` when the annotation set has been added,\n * and return a promise the resolves with the new annotation state.\n *\n * @param id The ID of the annotation set.\n * @returns A promise that resolves with the new annotation state.\n */\n public async removeAnnotationSet(id: UUID.UUID): Promise<AnnotationState> {\n await requestUnary(async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n const req = new DeleteSceneViewAnnotationSetRequest();\n\n const setId = new Uuid();\n setId.setHex(id);\n req.setSceneAnnotationSetId(setId);\n\n this.client.deleteSceneViewAnnotationSet(req, meta, handler);\n });\n\n return this.fetch();\n }\n\n private pollAnnotationState(pollingIntervalInMs: number): AbortController {\n const controller = new AbortController();\n\n const poll = async (delayMs: number): Promise<void> => {\n await this.fetch({ signal: controller.signal });\n\n if (!controller.signal.aborted) {\n await delay(delayMs);\n await poll(delayMs);\n }\n };\n\n Async.abort(controller.signal, poll(pollingIntervalInMs));\n return controller;\n }\n\n private fetchAnnotationSets(): AsyncGenerator<\n ListSceneViewAnnotationSetsResponse,\n void\n > {\n return requestPaged(\n (cursor) => async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n\n const req = new ListSceneViewAnnotationSetsRequest();\n\n if (cursor != null) {\n const page = new Pager();\n page.setCursor(cursor);\n page.setLimit(100);\n req.setPage(page);\n }\n\n this.client.listSceneViewAnnotationSets(req, meta, handler);\n },\n (res) => res.toObject().nextCursor?.next\n );\n }\n\n private async fetchAnnotationSetsAsArray(): Promise<AnnotationSet[]> {\n return (await Async.asArray(this.fetchAnnotationSets()))\n .flatMap((res) => res.getSceneAnnotationSetsList())\n .map((set) => fromPbAnnotationSetOrThrow(set));\n }\n\n private fetchAnnotations(\n setId: UUID.UUID\n ): AsyncGenerator<ListSceneAnnotationsResponse, void> {\n return requestPaged(\n (cursor) => async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n\n const req = new ListSceneAnnotationsRequest();\n\n const setId2l = toUuid2l(setId);\n req.setSceneAnnotationSetId(setId2l);\n\n if (cursor != null) {\n const page = new Pager();\n page.setCursor(cursor);\n page.setLimit(100);\n req.setPage(page);\n }\n\n this.client.listSceneAnnotations(req, meta, handler);\n },\n (res) => res.toObject().nextCursor?.next\n );\n }\n\n private fetchAnnotationsAsArray(\n sets: AnnotationSet[]\n ): Promise<[AnnotationSet, Annotation[]][]> {\n const annotations = sets.map(async (set) => {\n const annotations = (await Async.asArray(this.fetchAnnotations(set.id)))\n .flatMap((ann) => ann.getSceneAnnotationsList())\n .map((ann) => fromPbAnnotationOrThrow(ann));\n return [set, annotations] as [AnnotationSet, Annotation[]];\n });\n\n return Promise.all(annotations);\n }\n\n private updateState(state: AnnotationState): void {\n this.state = state;\n this.onStateChange.emit(state);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../../src/lib/annotations/controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Uuid } from '@vertexvis/scene-tree-protos/core/protos/uuid_pb';\nimport { Pager } from '@vertexvis/scene-view-protos/core/protos/paging_pb';\nimport {\n CreateSceneViewAnnotationSetRequest,\n DeleteSceneViewAnnotationSetRequest,\n ListSceneAnnotationsRequest,\n ListSceneAnnotationsResponse,\n ListSceneViewAnnotationSetsRequest,\n ListSceneViewAnnotationSetsResponse,\n} from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { Disposable, EventDispatcher, UUID } from '@vertexvis/utils';\nimport { Async } from '@vertexvis/utils';\n\nimport { delay } from '../../testing/utils';\nimport {\n createMetadata,\n JwtProvider,\n requestPaged,\n requestUnary,\n} from '../grpc';\nimport {\n fromPbAnnotationOrThrow,\n fromPbAnnotationSetOrThrow,\n} from '../mappers/annotation';\nimport { toUuid2l } from '../mappers/uuid';\nimport { Annotation, AnnotationSet } from './annotation';\n\nexport interface AnnotationState {\n annotations: Record<AnnotationSet['id'], Annotation[]>;\n}\n\n/**\n * The controller for managing the annotations of a scene and scene view.\n */\nexport class AnnotationController {\n /**\n * A dispatcher that emits an event whenever the state of the annotations has\n * changed. The annotation state includes the annotation sets that are active\n * and the annotations that belong to each set.\n */\n public onStateChange = new EventDispatcher<AnnotationState>();\n\n private state?: AnnotationState;\n\n private connection?: Disposable;\n\n public constructor(\n private client: SceneViewAPIClient,\n private jwtProvider: JwtProvider,\n private deviceIdProvider: () => string | undefined,\n ) {}\n\n /**\n * Activates an annotation set for the current session. This method will emit\n * an event on `onStateChange` when the annotation set has been added, and\n * return a promise the resolves with the new annotation state.\n *\n * @param id The ID of the annotation set.\n * @returns A promise that resolves with the new annotation state.\n */\n public async addAnnotationSet(id: UUID.UUID): Promise<AnnotationState> {\n await requestUnary(async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n\n const req = new CreateSceneViewAnnotationSetRequest();\n\n const setId = new Uuid();\n setId.setHex(id);\n req.setSceneAnnotationSetId(setId);\n\n this.client.createSceneViewAnnotationSet(req, meta, handler);\n });\n\n return this.fetch();\n }\n\n /**\n * Stops the automatic retrieval of annotation state.\n */\n public disconnect(): void {\n if (this.connection != null) {\n this.connection.dispose();\n this.connection = undefined;\n }\n }\n\n /**\n * Starts the automatic retrieval of annotation state. When a new annotation\n * state is retrieved, an event will be emitted on `onStateChange`.\n *\n * @param pollingIntervalInMs The interval to poll for a new annotation state.\n */\n public connect(pollingIntervalInMs = 10000): void {\n this.disconnect();\n\n const controller = this.pollAnnotationState(pollingIntervalInMs);\n this.connection = { dispose: () => controller.abort() };\n }\n\n /**\n * Performs a manual fetch of the annotation state. This method will emit an\n * event on `onStateChange` when the annotation set has been added, and return\n * a promise the resolves with the new annotation state.\n *\n * @param opts Options to configure the fetch behavior. If an abort signal is\n * given, then this will not emit a change event if the signal is aborted.\n * @returns A promise that resolves with the new annotation state.\n */\n public async fetch(\n opts: {\n signal?: AbortSignal;\n } = {},\n ): Promise<AnnotationState> {\n const sets = await this.fetchAnnotationSetsAsArray();\n const annotations = await this.fetchAnnotationsAsArray(sets);\n\n const state = (await Promise.all(annotations)).reduce(\n (state, [set, annotations]) => ({\n annotations: { ...state.annotations, [set.id]: annotations },\n }),\n { annotations: {} } as AnnotationState,\n );\n\n if (opts.signal == null || !opts.signal.aborted) {\n this.updateState(state);\n }\n\n return state;\n }\n\n /**\n * Deactivates an annotation set for the current session. This method will\n * emit an event on `onStateChange` when the annotation set has been added,\n * and return a promise the resolves with the new annotation state.\n *\n * @param id The ID of the annotation set.\n * @returns A promise that resolves with the new annotation state.\n */\n public async removeAnnotationSet(id: UUID.UUID): Promise<AnnotationState> {\n await requestUnary(async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n const req = new DeleteSceneViewAnnotationSetRequest();\n\n const setId = new Uuid();\n setId.setHex(id);\n req.setSceneAnnotationSetId(setId);\n\n this.client.deleteSceneViewAnnotationSet(req, meta, handler);\n });\n\n return this.fetch();\n }\n\n private pollAnnotationState(pollingIntervalInMs: number): AbortController {\n const controller = new AbortController();\n\n const poll = async (delayMs: number): Promise<void> => {\n await this.fetch({ signal: controller.signal });\n\n if (!controller.signal.aborted) {\n await delay(delayMs);\n await poll(delayMs);\n }\n };\n\n Async.abort(controller.signal, poll(pollingIntervalInMs));\n return controller;\n }\n\n private fetchAnnotationSets(): AsyncGenerator<\n ListSceneViewAnnotationSetsResponse,\n void\n > {\n return requestPaged(\n (cursor) => async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n\n const req = new ListSceneViewAnnotationSetsRequest();\n\n if (cursor != null) {\n const page = new Pager();\n page.setCursor(cursor);\n page.setLimit(100);\n req.setPage(page);\n }\n\n this.client.listSceneViewAnnotationSets(req, meta, handler);\n },\n (res) => res.toObject().nextCursor?.next,\n );\n }\n\n private async fetchAnnotationSetsAsArray(): Promise<AnnotationSet[]> {\n return (await Async.asArray(this.fetchAnnotationSets()))\n .flatMap((res) => res.getSceneAnnotationSetsList())\n .map((set) => fromPbAnnotationSetOrThrow(set));\n }\n\n private fetchAnnotations(\n setId: UUID.UUID,\n ): AsyncGenerator<ListSceneAnnotationsResponse, void> {\n return requestPaged(\n (cursor) => async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n\n const req = new ListSceneAnnotationsRequest();\n\n const setId2l = toUuid2l(setId);\n req.setSceneAnnotationSetId(setId2l);\n\n if (cursor != null) {\n const page = new Pager();\n page.setCursor(cursor);\n page.setLimit(100);\n req.setPage(page);\n }\n\n this.client.listSceneAnnotations(req, meta, handler);\n },\n (res) => res.toObject().nextCursor?.next,\n );\n }\n\n private fetchAnnotationsAsArray(\n sets: AnnotationSet[],\n ): Promise<[AnnotationSet, Annotation[]][]> {\n const annotations = sets.map(async (set) => {\n const annotations = (await Async.asArray(this.fetchAnnotations(set.id)))\n .flatMap((ann) => ann.getSceneAnnotationsList())\n .map((ann) => fromPbAnnotationOrThrow(ann));\n return [set, annotations] as [AnnotationSet, Annotation[]];\n });\n\n return Promise.all(annotations);\n }\n\n private updateState(state: AnnotationState): void {\n this.state = state;\n this.onStateChange.emit(state);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../../src/lib/canvases/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAEjB,MAAM,iEAAiE,CAAC;AAIzE,OAAO,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAQvD,MAAM,OAAO,gBAAgB;IAC3B,YACU,MAA0B,EAC1B,WAAwB,EACxB,gBAA0C;QAF1C,WAAM,GAAN,MAAM,CAAoB;QAC1B,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAA0B;IACjD,CAAC;IAEG,KAAK,CAAC,SAAS,CAAC,EACrB,QAAQ,EACR,gBAAgB,GACC;QACjB,IAAI,QAAQ,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAsB,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;YAEnC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACtC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;gBACpC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACtD,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,OAAO,2BAA2B,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;CACF","sourcesContent":["import {\n GetCanvasRequest,\n GetCanvasResponse,\n} from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { UUID } from '@vertexvis/utils';\n\nimport { createMetadata, JwtProvider, requestUnary } from '../grpc';\nimport { toUuid2l } from '../mappers/uuid';\nimport { mapGetCanvasResponseOrThrow } from './mapper';\nimport { CanvasDocument } from './types';\n\nexport interface GetCanvasOptions {\n canvasId?: UUID.UUID;\n sceneViewStateId?: UUID.UUID;\n}\n\nexport class CanvasController {\n public constructor(\n private client: SceneViewAPIClient,\n private jwtProvider: JwtProvider,\n private deviceIdProvider: () => string | undefined
|
|
1
|
+
{"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../../../src/lib/canvases/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,GAEjB,MAAM,iEAAiE,CAAC;AAIzE,OAAO,EAAE,cAAc,EAAe,YAAY,EAAE,MAAM,SAAS,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAQvD,MAAM,OAAO,gBAAgB;IAC3B,YACU,MAA0B,EAC1B,WAAwB,EACxB,gBAA0C;QAF1C,WAAM,GAAN,MAAM,CAAoB;QAC1B,gBAAW,GAAX,WAAW,CAAa;QACxB,qBAAgB,GAAhB,gBAAgB,CAA0B;IACjD,CAAC;IAEG,KAAK,CAAC,SAAS,CAAC,EACrB,QAAQ,EACR,gBAAgB,GACC;QACjB,IAAI,QAAQ,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAsB,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC9D,MAAM,GAAG,GAAG,IAAI,gBAAgB,EAAE,CAAC;YAEnC,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACrB,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBACtC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;gBACpC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC;gBACtD,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;YAC9C,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,OAAO,2BAA2B,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,CAAC;CACF","sourcesContent":["import {\n GetCanvasRequest,\n GetCanvasResponse,\n} from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { UUID } from '@vertexvis/utils';\n\nimport { createMetadata, JwtProvider, requestUnary } from '../grpc';\nimport { toUuid2l } from '../mappers/uuid';\nimport { mapGetCanvasResponseOrThrow } from './mapper';\nimport { CanvasDocument } from './types';\n\nexport interface GetCanvasOptions {\n canvasId?: UUID.UUID;\n sceneViewStateId?: UUID.UUID;\n}\n\nexport class CanvasController {\n public constructor(\n private client: SceneViewAPIClient,\n private jwtProvider: JwtProvider,\n private deviceIdProvider: () => string | undefined,\n ) {}\n\n public async getCanvas({\n canvasId,\n sceneViewStateId,\n }: GetCanvasOptions): Promise<CanvasDocument> {\n if (canvasId != null && sceneViewStateId != null) {\n throw new Error(\n 'Invalid request. Only one lookup ID between `canvasId` and `sceneViewStateId` can be provided.',\n );\n }\n\n const res: GetCanvasResponse = await requestUnary(async (handler) => {\n const deviceId = this.deviceIdProvider();\n const meta = await createMetadata(this.jwtProvider, deviceId);\n const req = new GetCanvasRequest();\n\n if (canvasId != null) {\n const canvasId2l = toUuid2l(canvasId);\n req.setCanvasId(canvasId2l);\n } else if (sceneViewStateId != null) {\n const sceneViewStateId2l = toUuid2l(sceneViewStateId);\n req.setSceneViewStateId(sceneViewStateId2l);\n }\n\n this.client.getCanvas(req, meta, handler);\n });\n\n return mapGetCanvasResponseOrThrow(res.toObject());\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../../../src/lib/canvases/mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EndShape as PBEndShape,\n FillStyle as PBFillStyle,\n FreeformItem2d as PBFreeformItem2d,\n LineItem2d as PBLineItem2d,\n OvalItem2d as PBOvalItem2d,\n StrokeStyle as PBStrokeStyle,\n} from '@vertexvis/scene-view-protos/core/protos/canvas_items_2d_pb';\nimport {\n CalloutItem as PBCalloutItem,\n CanvasDocument3dV1 as PBCanvasDocumentV1,\n CanvasItem as PBCanvasItem,\n Pin2d as PBPin2d,\n} from '@vertexvis/scene-view-protos/core/protos/scene_canvas_pb';\nimport { GetCanvasResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport {\n fromPbRGBAi,\n fromPbUuid2l,\n fromPbVector2d,\n fromPbVector3f,\n} from '../mappers';\nimport {\n ArrowEndShape,\n CalloutItem,\n CanvasDocument,\n CircleEndShape,\n DashEndShape,\n FillStyle,\n FreeformItem2d,\n LineItem2d,\n OvalItem2d,\n PinItem2d,\n StrokeStyle,\n} from './types';\n\nconst mapStrokeStyle: M.Func<PBStrokeStyle.AsObject, StrokeStyle> =\n M.defineMapper(\n M.read(M.mapRequiredProp('color', fromPbRGBAi), M.getProp('thickness')),\n ([color, thickness]) => ({ color, thickness })\n );\n\nconst mapFillStyle: M.Func<PBFillStyle.AsObject, FillStyle> = M.defineMapper(\n M.read(M.mapRequiredProp('color', fromPbRGBAi)),\n ([color]) => ({ color })\n);\n\nconst mapEndShape: M.Func<\n PBEndShape.AsObject,\n ArrowEndShape | CircleEndShape | DashEndShape | undefined\n> = M.defineMapper(\n M.read(\n M.pickFirst(\n M.mapProp(\n 'arrow',\n M.ifDefined((a): ArrowEndShape => ({ ...a, type: 'arrow-end' }))\n ),\n M.mapProp(\n 'circle',\n M.ifDefined((a): CircleEndShape => ({ ...a, type: 'circle-end' }))\n ),\n M.mapProp(\n 'dash',\n M.ifDefined((a): DashEndShape => ({ ...a, type: 'dash-end' }))\n )\n )\n ),\n ([shape]) => shape ?? undefined\n);\n\nconst mapLineItem2d: M.Func<PBLineItem2d.AsObject, LineItem2d> = M.defineMapper(\n M.read(\n M.mapRequiredProp('startPosition', fromPbVector2d),\n M.mapRequiredProp('endPosition', fromPbVector2d),\n M.mapProp('strokeStyle', M.ifDefined(mapStrokeStyle)),\n M.mapProp('fillStyle', M.ifDefined(mapFillStyle)),\n M.mapProp('startShape', M.ifDefined(mapEndShape)),\n M.mapProp('endShape', M.ifDefined(mapEndShape))\n ),\n ([\n startPosition,\n endPosition,\n strokeStyle,\n fillStyle,\n startShape,\n endShape,\n ]) => ({\n type: 'line-2d',\n startPosition,\n endPosition,\n strokeStyle,\n fillStyle,\n startShape: startShape ?? undefined,\n endShape: endShape ?? undefined,\n })\n);\n\nconst mapOvalItem2d: M.Func<PBOvalItem2d.AsObject, OvalItem2d> = M.defineMapper(\n M.read(\n M.mapRequiredProp('topLeft', fromPbVector2d),\n M.mapRequiredProp('bottomRight', fromPbVector2d),\n M.mapProp('strokeStyle', M.ifDefined(mapStrokeStyle)),\n M.mapProp('fillStyle', M.ifDefined(mapFillStyle))\n ),\n ([topLeftPosition, bottomRightPosition, strokeStyle, fillStyle]) => ({\n type: 'oval-2d',\n topLeftPosition,\n bottomRightPosition,\n strokeStyle,\n fillStyle,\n })\n);\n\nconst mapFreeformItem2d: M.Func<PBFreeformItem2d.AsObject, FreeformItem2d> =\n M.defineMapper(\n M.read(\n M.mapRequiredProp('positionsList', M.mapArray(fromPbVector2d)),\n M.mapProp('strokeStyle', M.ifDefined(mapStrokeStyle)),\n M.mapProp('fillStyle', M.ifDefined(mapFillStyle))\n ),\n ([positions, strokeStyle, fillStyle]) => ({\n type: 'freeform-2d',\n positions,\n strokeStyle,\n fillStyle,\n })\n );\n\nconst mapPinItem2d: M.Func<PBPin2d.AsObject, PinItem2d> = M.defineMapper(\n M.read(\n M.mapRequiredProp('primaryColor', fromPbRGBAi),\n M.mapRequiredProp('accentColor', fromPbRGBAi),\n M.mapRequiredProp('position', fromPbVector3f),\n M.mapProp('sceneItemId', M.ifDefined(fromPbUuid2l))\n ),\n ([primaryColor, accentColor, position, sceneItemId]) => ({\n type: 'pin-2d',\n primaryColor,\n accentColor,\n position,\n sceneItemId: sceneItemId ?? undefined,\n })\n);\n\nconst mapCalloutItem: M.Func<PBCalloutItem.AsObject, CalloutItem> =\n M.defineMapper(\n M.read(\n M.mapRequiredProp('primaryColor', fromPbRGBAi),\n M.mapRequiredProp('accentColor', fromPbRGBAi),\n M.mapRequiredProp('anchorPosition', fromPbVector3f),\n M.mapRequiredProp('textPosition', fromPbVector2d),\n M.getProp('text'),\n M.mapProp('sceneItemId', M.ifDefined(fromPbUuid2l))\n ),\n ([\n primaryColor,\n accentColor,\n anchorPosition,\n textPosition,\n text,\n sceneItemId,\n ]) => ({\n type: 'callout',\n primaryColor,\n accentColor,\n anchorPosition,\n textPosition,\n text,\n sceneItemId: sceneItemId ?? undefined,\n })\n );\n\n/**\n * @internal\n * @ignore\n *\n * Visible for testing.\n */\nexport const mapCanvasItem: M.Func<\n PBCanvasItem.AsObject,\n LineItem2d | OvalItem2d | FreeformItem2d | PinItem2d | CalloutItem | undefined\n> = M.defineMapper(\n M.read(\n M.pickFirst(\n M.mapProp('line2d', M.ifDefined(mapLineItem2d)),\n M.mapProp('oval', M.ifDefined(mapOvalItem2d)),\n M.mapProp('freeform', M.ifDefined(mapFreeformItem2d)),\n M.mapProp('pin', M.ifDefined(mapPinItem2d)),\n M.mapProp('callout', M.ifDefined(mapCalloutItem))\n )\n ),\n ([canvasItem]) => canvasItem ?? undefined\n);\n\nconst mapCanvasDocument: M.Func<PBCanvasDocumentV1.AsObject, CanvasDocument> =\n M.defineMapper(\n M.read(M.mapRequiredProp('itemsList', M.mapArray(mapCanvasItem))),\n ([items]) => ({ items: items.filter(<T>(i?: T): i is T => i != null) })\n );\n\nconst mapGetCanvasResponse: M.Func<GetCanvasResponse.AsObject, CanvasDocument> =\n M.defineMapper(\n M.read(\n M.mapRequiredProp(\n 'canvas',\n M.mapRequiredProp(\n 'document',\n M.mapRequiredProp('v1', mapCanvasDocument)\n )\n )\n ),\n ([doc]) => doc\n );\n\nexport const mapGetCanvasResponseOrThrow =\n M.ifInvalidThrow(mapGetCanvasResponse);\n"]}
|
|
1
|
+
{"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../../../src/lib/canvases/mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n EndShape as PBEndShape,\n FillStyle as PBFillStyle,\n FreeformItem2d as PBFreeformItem2d,\n LineItem2d as PBLineItem2d,\n OvalItem2d as PBOvalItem2d,\n StrokeStyle as PBStrokeStyle,\n} from '@vertexvis/scene-view-protos/core/protos/canvas_items_2d_pb';\nimport {\n CalloutItem as PBCalloutItem,\n CanvasDocument3dV1 as PBCanvasDocumentV1,\n CanvasItem as PBCanvasItem,\n Pin2d as PBPin2d,\n} from '@vertexvis/scene-view-protos/core/protos/scene_canvas_pb';\nimport { GetCanvasResponse } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper as M } from '@vertexvis/utils';\n\nimport {\n fromPbRGBAi,\n fromPbUuid2l,\n fromPbVector2d,\n fromPbVector3f,\n} from '../mappers';\nimport {\n ArrowEndShape,\n CalloutItem,\n CanvasDocument,\n CircleEndShape,\n DashEndShape,\n FillStyle,\n FreeformItem2d,\n LineItem2d,\n OvalItem2d,\n PinItem2d,\n StrokeStyle,\n} from './types';\n\nconst mapStrokeStyle: M.Func<PBStrokeStyle.AsObject, StrokeStyle> =\n M.defineMapper(\n M.read(M.mapRequiredProp('color', fromPbRGBAi), M.getProp('thickness')),\n ([color, thickness]) => ({ color, thickness }),\n );\n\nconst mapFillStyle: M.Func<PBFillStyle.AsObject, FillStyle> = M.defineMapper(\n M.read(M.mapRequiredProp('color', fromPbRGBAi)),\n ([color]) => ({ color }),\n);\n\nconst mapEndShape: M.Func<\n PBEndShape.AsObject,\n ArrowEndShape | CircleEndShape | DashEndShape | undefined\n> = M.defineMapper(\n M.read(\n M.pickFirst(\n M.mapProp(\n 'arrow',\n M.ifDefined((a): ArrowEndShape => ({ ...a, type: 'arrow-end' })),\n ),\n M.mapProp(\n 'circle',\n M.ifDefined((a): CircleEndShape => ({ ...a, type: 'circle-end' })),\n ),\n M.mapProp(\n 'dash',\n M.ifDefined((a): DashEndShape => ({ ...a, type: 'dash-end' })),\n ),\n ),\n ),\n ([shape]) => shape ?? undefined,\n);\n\nconst mapLineItem2d: M.Func<PBLineItem2d.AsObject, LineItem2d> = M.defineMapper(\n M.read(\n M.mapRequiredProp('startPosition', fromPbVector2d),\n M.mapRequiredProp('endPosition', fromPbVector2d),\n M.mapProp('strokeStyle', M.ifDefined(mapStrokeStyle)),\n M.mapProp('fillStyle', M.ifDefined(mapFillStyle)),\n M.mapProp('startShape', M.ifDefined(mapEndShape)),\n M.mapProp('endShape', M.ifDefined(mapEndShape)),\n ),\n ([\n startPosition,\n endPosition,\n strokeStyle,\n fillStyle,\n startShape,\n endShape,\n ]) => ({\n type: 'line-2d',\n startPosition,\n endPosition,\n strokeStyle,\n fillStyle,\n startShape: startShape ?? undefined,\n endShape: endShape ?? undefined,\n }),\n);\n\nconst mapOvalItem2d: M.Func<PBOvalItem2d.AsObject, OvalItem2d> = M.defineMapper(\n M.read(\n M.mapRequiredProp('topLeft', fromPbVector2d),\n M.mapRequiredProp('bottomRight', fromPbVector2d),\n M.mapProp('strokeStyle', M.ifDefined(mapStrokeStyle)),\n M.mapProp('fillStyle', M.ifDefined(mapFillStyle)),\n ),\n ([topLeftPosition, bottomRightPosition, strokeStyle, fillStyle]) => ({\n type: 'oval-2d',\n topLeftPosition,\n bottomRightPosition,\n strokeStyle,\n fillStyle,\n }),\n);\n\nconst mapFreeformItem2d: M.Func<PBFreeformItem2d.AsObject, FreeformItem2d> =\n M.defineMapper(\n M.read(\n M.mapRequiredProp('positionsList', M.mapArray(fromPbVector2d)),\n M.mapProp('strokeStyle', M.ifDefined(mapStrokeStyle)),\n M.mapProp('fillStyle', M.ifDefined(mapFillStyle)),\n ),\n ([positions, strokeStyle, fillStyle]) => ({\n type: 'freeform-2d',\n positions,\n strokeStyle,\n fillStyle,\n }),\n );\n\nconst mapPinItem2d: M.Func<PBPin2d.AsObject, PinItem2d> = M.defineMapper(\n M.read(\n M.mapRequiredProp('primaryColor', fromPbRGBAi),\n M.mapRequiredProp('accentColor', fromPbRGBAi),\n M.mapRequiredProp('position', fromPbVector3f),\n M.mapProp('sceneItemId', M.ifDefined(fromPbUuid2l)),\n ),\n ([primaryColor, accentColor, position, sceneItemId]) => ({\n type: 'pin-2d',\n primaryColor,\n accentColor,\n position,\n sceneItemId: sceneItemId ?? undefined,\n }),\n);\n\nconst mapCalloutItem: M.Func<PBCalloutItem.AsObject, CalloutItem> =\n M.defineMapper(\n M.read(\n M.mapRequiredProp('primaryColor', fromPbRGBAi),\n M.mapRequiredProp('accentColor', fromPbRGBAi),\n M.mapRequiredProp('anchorPosition', fromPbVector3f),\n M.mapRequiredProp('textPosition', fromPbVector2d),\n M.getProp('text'),\n M.mapProp('sceneItemId', M.ifDefined(fromPbUuid2l)),\n ),\n ([\n primaryColor,\n accentColor,\n anchorPosition,\n textPosition,\n text,\n sceneItemId,\n ]) => ({\n type: 'callout',\n primaryColor,\n accentColor,\n anchorPosition,\n textPosition,\n text,\n sceneItemId: sceneItemId ?? undefined,\n }),\n );\n\n/**\n * @internal\n * @ignore\n *\n * Visible for testing.\n */\nexport const mapCanvasItem: M.Func<\n PBCanvasItem.AsObject,\n LineItem2d | OvalItem2d | FreeformItem2d | PinItem2d | CalloutItem | undefined\n> = M.defineMapper(\n M.read(\n M.pickFirst(\n M.mapProp('line2d', M.ifDefined(mapLineItem2d)),\n M.mapProp('oval', M.ifDefined(mapOvalItem2d)),\n M.mapProp('freeform', M.ifDefined(mapFreeformItem2d)),\n M.mapProp('pin', M.ifDefined(mapPinItem2d)),\n M.mapProp('callout', M.ifDefined(mapCalloutItem)),\n ),\n ),\n ([canvasItem]) => canvasItem ?? undefined,\n);\n\nconst mapCanvasDocument: M.Func<PBCanvasDocumentV1.AsObject, CanvasDocument> =\n M.defineMapper(\n M.read(M.mapRequiredProp('itemsList', M.mapArray(mapCanvasItem))),\n ([items]) => ({ items: items.filter(<T>(i?: T): i is T => i != null) }),\n );\n\nconst mapGetCanvasResponse: M.Func<GetCanvasResponse.AsObject, CanvasDocument> =\n M.defineMapper(\n M.read(\n M.mapRequiredProp(\n 'canvas',\n M.mapRequiredProp(\n 'document',\n M.mapRequiredProp('v1', mapCanvasDocument),\n ),\n ),\n ),\n ([doc]) => doc,\n );\n\nexport const mapGetCanvasResponseOrThrow =\n M.ifInvalidThrow(mapGetCanvasResponse);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/lib/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { FrameDeliverySettings } from '@vertexvis/stream-api';\nimport {\n AdaptiveRenderingSettings,\n QualityOfServiceSettings,\n} from '@vertexvis/stream-api';\nimport { DeepPartial, Objects } from '@vertexvis/utils';\n\nimport { Environment } from './environment';\nimport { Animation, Events, Flags, Interactions } from './types';\n\ninterface NetworkConfig {\n apiHost: string;\n renderingHost: string;\n sceneTreeHost: string;\n sceneViewHost: string;\n}\n\nexport interface Config {\n network: NetworkConfig;\n flags: Flags.Flags;\n events: Events.EventConfig;\n animation: Animation.AnimationConfig;\n interactions: Interactions.InteractionConfig;\n EXPERIMENTAL_frameDelivery: Omit<\n FrameDeliverySettings,\n 'rateLimitingEnabled'\n >;\n EXPERIMENTAL_adaptiveRendering: Omit<AdaptiveRenderingSettings, 'enabled'>;\n EXPERIMENTAL_qualityOfService: QualityOfServiceSettings;\n EXPERIMENTAL_annotationPollingIntervalInMs: number | undefined;\n}\n\nexport type PartialConfig = DeepPartial<Config>;\n\nexport type ConfigProvider = () => Config;\n\nexport type InteractionConfigProvider = () => Interactions.InteractionConfig;\n\nconst config: Config = {\n network: {\n apiHost: 'https://platform.platprod.vertexvis.io',\n renderingHost: 'wss://stream.platprod.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platprod.vertexvis.io',\n sceneViewHost: 'https://scenes.platprod.vertexvis.io',\n },\n flags: Flags.defaultFlags,\n events: Events.defaultEventConfig,\n animation: Animation.defaultAnimationConfig,\n interactions: Interactions.defaultInteractionConfig,\n EXPERIMENTAL_frameDelivery: {},\n EXPERIMENTAL_adaptiveRendering: {},\n EXPERIMENTAL_qualityOfService: {},\n EXPERIMENTAL_annotationPollingIntervalInMs: undefined,\n};\n\nconst platdevConfig: Config = {\n ...config,\n network: {\n apiHost: 'https://platform.platdev.vertexvis.io',\n renderingHost: 'wss://stream.platdev.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platdev.vertexvis.io',\n sceneViewHost: 'https://scenes.platdev.vertexvis.io',\n },\n};\n\nconst platstagingConfig: Config = {\n ...config,\n network: {\n apiHost: 'https://platform.platstaging.vertexvis.io',\n renderingHost: 'wss://stream.platstaging.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platstaging.vertexvis.io',\n sceneViewHost: 'https://scenes.platstaging.vertexvis.io',\n },\n};\n\nfunction getEnvironmentConfig(environment: Environment): Config {\n switch (environment) {\n case 'platdev':\n return platdevConfig;\n case 'platstaging':\n return platstagingConfig;\n default:\n return config;\n }\n}\n\nexport function parseAndValidateConfig(\n environment: Environment = 'platprod',\n config?: string | PartialConfig
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/lib/config.ts"],"names":[],"mappings":"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","sourcesContent":["import { FrameDeliverySettings } from '@vertexvis/stream-api';\nimport {\n AdaptiveRenderingSettings,\n QualityOfServiceSettings,\n} from '@vertexvis/stream-api';\nimport { DeepPartial, Objects } from '@vertexvis/utils';\n\nimport { Environment } from './environment';\nimport { Animation, Events, Flags, Interactions } from './types';\n\ninterface NetworkConfig {\n apiHost: string;\n renderingHost: string;\n sceneTreeHost: string;\n sceneViewHost: string;\n}\n\nexport interface Config {\n network: NetworkConfig;\n flags: Flags.Flags;\n events: Events.EventConfig;\n animation: Animation.AnimationConfig;\n interactions: Interactions.InteractionConfig;\n EXPERIMENTAL_frameDelivery: Omit<\n FrameDeliverySettings,\n 'rateLimitingEnabled'\n >;\n EXPERIMENTAL_adaptiveRendering: Omit<AdaptiveRenderingSettings, 'enabled'>;\n EXPERIMENTAL_qualityOfService: QualityOfServiceSettings;\n EXPERIMENTAL_annotationPollingIntervalInMs: number | undefined;\n}\n\nexport type PartialConfig = DeepPartial<Config>;\n\nexport type ConfigProvider = () => Config;\n\nexport type InteractionConfigProvider = () => Interactions.InteractionConfig;\n\nconst config: Config = {\n network: {\n apiHost: 'https://platform.platprod.vertexvis.io',\n renderingHost: 'wss://stream.platprod.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platprod.vertexvis.io',\n sceneViewHost: 'https://scenes.platprod.vertexvis.io',\n },\n flags: Flags.defaultFlags,\n events: Events.defaultEventConfig,\n animation: Animation.defaultAnimationConfig,\n interactions: Interactions.defaultInteractionConfig,\n EXPERIMENTAL_frameDelivery: {},\n EXPERIMENTAL_adaptiveRendering: {},\n EXPERIMENTAL_qualityOfService: {},\n EXPERIMENTAL_annotationPollingIntervalInMs: undefined,\n};\n\nconst platdevConfig: Config = {\n ...config,\n network: {\n apiHost: 'https://platform.platdev.vertexvis.io',\n renderingHost: 'wss://stream.platdev.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platdev.vertexvis.io',\n sceneViewHost: 'https://scenes.platdev.vertexvis.io',\n },\n};\n\nconst platstagingConfig: Config = {\n ...config,\n network: {\n apiHost: 'https://platform.platstaging.vertexvis.io',\n renderingHost: 'wss://stream.platstaging.vertexvis.io',\n sceneTreeHost: 'https://scene-trees.platstaging.vertexvis.io',\n sceneViewHost: 'https://scenes.platstaging.vertexvis.io',\n },\n};\n\nfunction getEnvironmentConfig(environment: Environment): Config {\n switch (environment) {\n case 'platdev':\n return platdevConfig;\n case 'platstaging':\n return platstagingConfig;\n default:\n return config;\n }\n}\n\nexport function parseAndValidateConfig(\n environment: Environment = 'platprod',\n config?: string | PartialConfig,\n): Config {\n const parsed = parseConfig(environment, config);\n\n return validateConfig(sanitizeConfig(parsed));\n}\n\nexport function parseConfig(\n environment: Environment = 'platprod',\n config?: string | PartialConfig,\n): Config {\n if (typeof config === 'string') {\n config = JSON.parse(config) as PartialConfig;\n }\n\n const envConfig = getEnvironmentConfig(environment);\n\n if (config == null) {\n return envConfig;\n } else {\n return Objects.defaults({ ...config }, envConfig);\n }\n}\n\nexport function sanitizeConfig(config: Config): Config {\n const sanitizedApiHost = config.network.apiHost.trim();\n const sanitizedRenderingHost = config.network.renderingHost.trim();\n const sanitizedSceneTreeHost = config.network.sceneTreeHost.trim();\n const sanitizedSceneViewHost = config.network.sceneViewHost.trim();\n\n return {\n ...config,\n network: {\n ...config.network,\n apiHost: sanitizedApiHost,\n renderingHost: sanitizedRenderingHost,\n sceneTreeHost: sanitizedSceneTreeHost,\n sceneViewHost: sanitizedSceneViewHost,\n },\n };\n}\n\nexport function validateConfig(config: Config): Config {\n validateUrlScheme(config.network, 'apiHost', 'https://');\n validateUrlScheme(config.network, 'renderingHost', 'wss://');\n validateUrlScheme(config.network, 'sceneTreeHost', 'https://');\n validateUrlScheme(config.network, 'sceneViewHost', 'https://');\n\n return config;\n}\n\nfunction validateUrlScheme(\n networkConfig: NetworkConfig,\n field: keyof NetworkConfig,\n expectedScheme: string,\n): void {\n if (!networkConfig[field].startsWith(expectedScheme)) {\n throw new Error(\n `Invalid ${field} \"${networkConfig[field]}\" specified. The URL must start with the ${expectedScheme} scheme.`,\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursors.js","sourceRoot":"","sources":["../../../../src/lib/cursors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAiE/D;;;;;;GAMG;AACH,MAAM,OAAO,aAAa;IAA1B;QAiBE;;;;;WAKG;QACa,cAAS,GAAG,IAAI,eAAe,EAAQ,CAAC;QAEhD,YAAO,GAAqB,EAAE,CAAC;QAE/B,WAAM,GAAG,CAAC,CAAC;IA2ErB,CAAC;IAzEC;;;;;;;;;OASG;IACI,GAAG,CACR,MAAc,EACd,QAAQ,GAAG,aAAa,CAAC,eAAe;QAExC,qEAAqE;QACrE,4DAA4D;QAC5D,0EAA0E;QAC1E,kFAAkF;QAClF,MAAM,eAAe,GAAG,IAAI,CAAC,0BAA0B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1E,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;QACzB,MAAM,QAAQ,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1E,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACK,MAAM,CAAC,QAAgB;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;QAClE,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,0BAA0B,CAChC,aAAqB,EACrB,eAAuB;QAEvB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CACtB,CAAC,MAAM,EAAE,EAAE,CACT,MAAM,CAAC,MAAM,KAAK,aAAa,IAAI,MAAM,CAAC,QAAQ,KAAK,eAAe,CACzE,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,eAAe;;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;aACxB,MAAM,EAAE;aACR,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAE3C,OAAO,MAAA,MAAM,CAAC,CAAC,CAAC,0CAAE,MAAM,CAAC;IAC3B,CAAC;;AApGD;;GAEG;AACoB,0BAAY,GAAG,CAAC,AAAJ,CAAK;AAExC;;;GAGG;AACoB,6BAAe,GAAG,EAAE,AAAL,CAAM;AAE5C;;GAEG;AACoB,2BAAa,GAAG,EAAE,AAAL,CAAM;AAyF5C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,GAAG,EAAE,irBAAirB;IACtrB,OAAO,EAAE,CAAC,EAAE;IACZ,OAAO,EAAE,CAAC,EAAE;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,GAAG,EAAE,siCAAsiC;IAC3iC,OAAO,EAAE,CAAC,EAAE;IACZ,OAAO,EAAE,CAAC,EAAE;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,GAAG,EAAE,2oCAA2oC;IAChpC,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,mvBAAmvB;IACxvB,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,+0BAA+0B;IACp1B,OAAO,EAAE,CAAC,EAAE;IACZ,OAAO,EAAE,CAAC,EAAE;CACb,CAAC","sourcesContent":["import { Disposable, EventDispatcher } from '@vertexvis/utils';\n\n/**\n * Represents a built-in [browser CSS\n * cursor](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor).\n */\nexport type CssCursor =\n | 'auto'\n | 'default'\n | 'none'\n | 'context-menu'\n | 'help'\n | 'pointer'\n | 'progress'\n | 'wait'\n | 'cell'\n | 'crosshair'\n | 'text'\n | 'vertical-text'\n | 'alias'\n | 'copy'\n | 'move'\n | 'no-drop'\n | 'not-allowed'\n | 'grab'\n | 'grabbing'\n | 'all-scroll'\n | 'col-resize'\n | 'row-resize'\n | 'n-resize'\n | 'e-resize'\n | 's-resize'\n | 'w-resize'\n | 'ne-resize'\n | 'nw-resize'\n | 'se-resize'\n | 'sw-resize'\n | 'ew-resize'\n | 'ns-resize'\n | 'nesw-resize'\n | 'nwse-resize'\n | 'zoom-in'\n | 'zoom-out'\n | string;\n\n/**\n * Represents a custom cursor that points to an image file and offset.\n */\nexport interface CustomCursor {\n url: string;\n offsetX?: number;\n offsetY?: number;\n}\n\n/**\n * Represents all possible cursor types.\n */\nexport type Cursor = CssCursor | CustomCursor;\n\ninterface CursorInstance extends Disposable {\n id: number;\n cursor: Cursor;\n priority: number;\n}\n\n/**\n * The cursor manager maintains a prioritized list of cursors for the viewer.\n *\n * Cursors with the highest priority will be considered active, where the most\n * recently added cursor will take precedence if there are multiple cursors with\n * the same priority.\n */\nexport class CursorManager {\n /**\n * A constant representing the lowest priority cursors.\n */\n public static readonly LOW_PRIORITY = 0;\n\n /**\n * A constant representing a priority between `LOW_PRIORITY` and\n * `HIGH_PRIORITY`.\n */\n public static readonly NORMAL_PRIORITY = 10;\n\n /**\n * A constant representing the high priority cursors.\n */\n public static readonly HIGH_PRIORITY = 20;\n\n /**\n * An event dispatcher that emits an event when a cursor is added or removed.\n *\n * @see {@link CursorManager.add} to add a cursor.\n * @see {@link CursorManager.getActiveCursor} to query the current cursor.\n */\n public readonly onChanged = new EventDispatcher<void>();\n\n private cursors: CursorInstance[] = [];\n\n private nextId = 0;\n\n /**\n * Adds a cursor to the cursor manager, and returns an identifier that can be\n * used to remove the cursor.\n *\n * @param cursor The cursor to add.\n * @param priority The priority of the cursor. Higher values have higher\n * \tpriority over lower values.\n * @returns An identifier for the cursor.\n * @see {@link CursorManager.getActiveCursor} to query the current cursor.\n */\n public add(\n cursor: Cursor,\n priority = CursorManager.NORMAL_PRIORITY\n ): Disposable {\n // Ensure a duplicate cursor will not be added to the cursor manager.\n // If a matching cursor exists, delete it before proceeding.\n // Note that deleting the old cursor and adding the new one results in the\n // new cursor taking precedent over other existing cursors with the same priority.\n const duplicateCursor = this.getExistingDuplicateCursor(cursor, priority);\n if (duplicateCursor != null) {\n this.remove(duplicateCursor.id);\n }\n\n const id = ++this.nextId;\n const instance = { id, cursor, priority, dispose: () => this.remove(id) };\n this.cursors.push(instance);\n this.onChanged.emit();\n return instance;\n }\n\n /**\n * Removes a cursor with the given ID, if it exists.\n *\n * @param cursorId The ID of the cursor to remove.\n */\n private remove(cursorId: number): void {\n const index = this.cursors.findIndex(({ id }) => id === cursorId);\n if (index >= 0) {\n this.cursors.splice(index, 1);\n this.onChanged.emit();\n }\n }\n\n /**\n * Checks to see if an existing cursor matches the provided cursor and priority level.\n * The matching cursor is returned if found.\n *\n * @param cursorToCheck The cursor to check for duplicates against.\n * @param priorityToCheck The priority level to check for duplicates against.\n */\n private getExistingDuplicateCursor(\n cursorToCheck: Cursor,\n priorityToCheck: number\n ): CursorInstance | undefined {\n return this.cursors.find(\n (cursor) =>\n cursor.cursor === cursorToCheck && cursor.priority === priorityToCheck\n );\n }\n\n /**\n * Returns the active cursor based on priority and insertion order.\n *\n * @see {@link CursorManager.add} to add a cursor.\n */\n public getActiveCursor(): Cursor | undefined {\n const sorted = this.cursors\n .concat()\n .reverse()\n .sort((a, b) => b.priority - a.priority);\n\n return sorted[0]?.cursor;\n }\n}\n\n// CSS SVG images need to be URL encoded: https://yoksel.github.io/url-encoder/\n\nexport const measurementCursor = {\n url: \"data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M21.5 8h-19a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h19a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5zm-.5 6H3V9h3v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2z' stroke='%23fff' stroke-width='1.25' stroke-opacity='0.5' stroke-miterlimit='10' shape-rendering='crispEdges'/%3E%3Cpath d='M21.5 8h-19a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h19a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5zm-.5 6H3V9h3v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2z' shape-rendering='crispEdges'/%3E%3C/svg%3E\",\n offsetX: -24,\n offsetY: -24,\n};\n\nexport const measurementWithArrowCursor = {\n url: \"data:image/svg+xml;utf8,%3Csvg id='icons' xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bstroke:%23fff;stroke-miterlimit:10;stroke-width:2px;%7D.cls-2%7Bfill:%23fff;%7D.cls-2,.cls-3%7Bfill-rule:evenodd;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M27.46,21h-19a.5.5,0,0,0-.5.5v6a.5.5,0,0,0,.5.5h19a.5.5,0,0,0,.5-.5v-6A.5.5,0,0,0,27.46,21ZM27,27H9V22h3v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2Z'/%3E%3Cpath d='M27.46,21h-19a.5.5,0,0,0-.5.5v6a.5.5,0,0,0,.5.5h19a.5.5,0,0,0,.5-.5v-6A.5.5,0,0,0,27.46,21ZM27,27H9V22h3v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2Z'/%3E%3Cpath class='cls-2' d='M1,17V1L12.59,12.62H5.81l-.41.12Z'/%3E%3Cpath class='cls-2' d='M10.08,17.69l-3.6,1.53L1.8,8.14,5.48,6.58Z'/%3E%3Cpath class='cls-3' d='M8.75,17l-1.84.77-3.1-7.37,1.84-.78Z'/%3E%3Cpath class='cls-3' d='M2,3.41V14.6l3-2.87.43-.14h4.76Z'/%3E%3C/svg%3E\",\n offsetX: -30,\n offsetY: -30,\n};\n\nexport const pinCursor = {\n url: \"data:image/svg+xml,%3Csvg width='36px' height='36px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath d='M12,2 C7.581722,2 4,5.581722 4,10 C4.00435812,11.7714969 4.41127263,13.5188357 5.19,15.11 C6.15517666,17.0237439 7.49502409,18.7240579 9.13,20.11 C9.86916736,20.7592093 10.6620019,21.3446357 11.5,21.86 L12,22.14 L12.5,21.86 C13.8750156,21.0120029 15.1296156,19.9827599 16.23,18.8 C17.2698142,17.7023203 18.1394508,16.4551671 18.81,15.1 C19.5872532,13.5118707 19.9941287,11.7681184 20,10 C20,5.581722 16.418278,2 12,2 Z M12,13 C10.3431458,13 9,11.6568542 9,10 C9,8.34314575 10.3431458,7 12,7 C13.6568542,7 15,8.34314575 15,10 C15,10.7956495 14.6839295,11.5587112 14.1213203,12.1213203 C13.5587112,12.6839295 12.7956495,13 12,13 Z' id='path-1'%3E%3C/path%3E%3C/defs%3E%3Cg id='icons/pin-filled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cmask id='mask-2' fill='white'%3E%3Cuse xlink:href='%23path-1'%3E%3C/use%3E%3C/mask%3E%3Cuse id='Shape' stroke='%23FAFAFA' fill='%23BDBDBD' fill-rule='nonzero' xlink:href='%23path-1'%3E%3C/use%3E%3C/g%3E%3C/svg%3E\",\n offsetX: 17,\n offsetY: 32,\n};\n\nexport const labelPinCursor = {\n url: \"data:image/svg+xml,%3Csvg width='36px' height='36px' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 16 24' %3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:none;%7D.cls-2%7Bfill:%23616161;%7D.cls-3%7Bclip-path:url(%23clip-path);%7D%3C/style%3E%3CclipPath id='clip-path'%3E%3Ccircle cx='-576.76' cy='-107.26' r='4'/%3E%3C/clipPath%3E%3C/defs%3E%3Cpath d='M8,16H8a.48.48,0,0,1-.42-.23L5.75,13H3.51A1.5,1.5,0,0,1,2,11.5v-8A1.5,1.5,0,0,1,3.51,2h9A1.51,1.51,0,0,1,14,3.5v8a1.5,1.5,0,0,1-1.5,1.5H10.22L8.39,15.81A.5.5,0,0,1,8,16ZM3.51,3a.5.5,0,0,0-.5.5v8a.5.5,0,0,0,.5.5H6a.5.5,0,0,1,.42.23L8,14.61l1.55-2.38A.5.5,0,0,1,10,12h2.56a.5.5,0,0,0,.5-.5v-8a.51.51,0,0,0-.5-.5Z'/%3E%3Ccircle cx='8.01' cy='20' r='2'/%3E%3C/svg%3E%0A\",\n offsetX: 17,\n offsetY: 29,\n};\n\nexport const boxQueryCursor = {\n url: \"data:image/svg+xml;utf8,%3Csvg id='icons' xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bstroke:%23fff;stroke-miterlimit:10;stroke-width:2px;%7D.cls-2%7Bfill:%23fff;%7D.cls-2,.cls-3%7Bfill-rule:evenodd;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-2' d='M1.25,17V1L12.59,12.62H5.81l-.41.12Z'/%3E%3Cpath class='cls-2' d='M10.33,17.69l-3.6,1.53L1.8,8.14,5.48,6.58Z'/%3E %3Cpath class='cls-3' d='M9,17l-1.84.77-3.1-7.37,1.84-.78Z'/%3E%3Cpath class='cls-3' d='M2.25,3.41V14.6l3-2.87.43-.14h4.76Z'/%3E%3Cpath class='cls-1' d='M21.36,22.5H15.5V16.64a.5.5,0,0,0-1,0V22.5H8.64a.5.5,0,0,0,0,1H14.5v5.86a.5.5,0,0,0,1,0V23.5h5.86a.5.5,0,0,0,0-1Z' /%3E %3Cpath d='M21.36,22.5H15.5V16.64a.5.5,0,0,0-1,0V22.5H8.64a.5.5,0,0,0,0,1H14.5v5.86a.5.5,0,0,0,1,0V23.5h5.86a.5.5,0,0,0,0-1Z' /%3E%3C/svg%3E\",\n offsetX: -30,\n offsetY: -30,\n};\n"]}
|
|
1
|
+
{"version":3,"file":"cursors.js","sourceRoot":"","sources":["../../../../src/lib/cursors.ts"],"names":[],"mappings":"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","sourcesContent":["import { Disposable, EventDispatcher } from '@vertexvis/utils';\n\n/**\n * Represents a built-in [browser CSS\n * cursor](https://developer.mozilla.org/en-US/docs/Web/CSS/cursor).\n */\nexport type CssCursor =\n | 'auto'\n | 'default'\n | 'none'\n | 'context-menu'\n | 'help'\n | 'pointer'\n | 'progress'\n | 'wait'\n | 'cell'\n | 'crosshair'\n | 'text'\n | 'vertical-text'\n | 'alias'\n | 'copy'\n | 'move'\n | 'no-drop'\n | 'not-allowed'\n | 'grab'\n | 'grabbing'\n | 'all-scroll'\n | 'col-resize'\n | 'row-resize'\n | 'n-resize'\n | 'e-resize'\n | 's-resize'\n | 'w-resize'\n | 'ne-resize'\n | 'nw-resize'\n | 'se-resize'\n | 'sw-resize'\n | 'ew-resize'\n | 'ns-resize'\n | 'nesw-resize'\n | 'nwse-resize'\n | 'zoom-in'\n | 'zoom-out'\n | string;\n\n/**\n * Represents a custom cursor that points to an image file and offset.\n */\nexport interface CustomCursor {\n url: string;\n offsetX?: number;\n offsetY?: number;\n}\n\n/**\n * Represents all possible cursor types.\n */\nexport type Cursor = CssCursor | CustomCursor;\n\ninterface CursorInstance extends Disposable {\n id: number;\n cursor: Cursor;\n priority: number;\n}\n\n/**\n * The cursor manager maintains a prioritized list of cursors for the viewer.\n *\n * Cursors with the highest priority will be considered active, where the most\n * recently added cursor will take precedence if there are multiple cursors with\n * the same priority.\n */\nexport class CursorManager {\n /**\n * A constant representing the lowest priority cursors.\n */\n public static readonly LOW_PRIORITY = 0;\n\n /**\n * A constant representing a priority between `LOW_PRIORITY` and\n * `HIGH_PRIORITY`.\n */\n public static readonly NORMAL_PRIORITY = 10;\n\n /**\n * A constant representing the high priority cursors.\n */\n public static readonly HIGH_PRIORITY = 20;\n\n /**\n * An event dispatcher that emits an event when a cursor is added or removed.\n *\n * @see {@link CursorManager.add} to add a cursor.\n * @see {@link CursorManager.getActiveCursor} to query the current cursor.\n */\n public readonly onChanged = new EventDispatcher<void>();\n\n private cursors: CursorInstance[] = [];\n\n private nextId = 0;\n\n /**\n * Adds a cursor to the cursor manager, and returns an identifier that can be\n * used to remove the cursor.\n *\n * @param cursor The cursor to add.\n * @param priority The priority of the cursor. Higher values have higher\n * \tpriority over lower values.\n * @returns An identifier for the cursor.\n * @see {@link CursorManager.getActiveCursor} to query the current cursor.\n */\n public add(\n cursor: Cursor,\n priority = CursorManager.NORMAL_PRIORITY,\n ): Disposable {\n // Ensure a duplicate cursor will not be added to the cursor manager.\n // If a matching cursor exists, delete it before proceeding.\n // Note that deleting the old cursor and adding the new one results in the\n // new cursor taking precedent over other existing cursors with the same priority.\n const duplicateCursor = this.getExistingDuplicateCursor(cursor, priority);\n if (duplicateCursor != null) {\n this.remove(duplicateCursor.id);\n }\n\n const id = ++this.nextId;\n const instance = { id, cursor, priority, dispose: () => this.remove(id) };\n this.cursors.push(instance);\n this.onChanged.emit();\n return instance;\n }\n\n /**\n * Removes a cursor with the given ID, if it exists.\n *\n * @param cursorId The ID of the cursor to remove.\n */\n private remove(cursorId: number): void {\n const index = this.cursors.findIndex(({ id }) => id === cursorId);\n if (index >= 0) {\n this.cursors.splice(index, 1);\n this.onChanged.emit();\n }\n }\n\n /**\n * Checks to see if an existing cursor matches the provided cursor and priority level.\n * The matching cursor is returned if found.\n *\n * @param cursorToCheck The cursor to check for duplicates against.\n * @param priorityToCheck The priority level to check for duplicates against.\n */\n private getExistingDuplicateCursor(\n cursorToCheck: Cursor,\n priorityToCheck: number,\n ): CursorInstance | undefined {\n return this.cursors.find(\n (cursor) =>\n cursor.cursor === cursorToCheck && cursor.priority === priorityToCheck,\n );\n }\n\n /**\n * Returns the active cursor based on priority and insertion order.\n *\n * @see {@link CursorManager.add} to add a cursor.\n */\n public getActiveCursor(): Cursor | undefined {\n const sorted = this.cursors\n .concat()\n .reverse()\n .sort((a, b) => b.priority - a.priority);\n\n return sorted[0]?.cursor;\n }\n}\n\n// CSS SVG images need to be URL encoded: https://yoksel.github.io/url-encoder/\n\nexport const measurementCursor = {\n url: \"data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M21.5 8h-19a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h19a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5zm-.5 6H3V9h3v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2z' stroke='%23fff' stroke-width='1.25' stroke-opacity='0.5' stroke-miterlimit='10' shape-rendering='crispEdges'/%3E%3Cpath d='M21.5 8h-19a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h19a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5zm-.5 6H3V9h3v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2z' shape-rendering='crispEdges'/%3E%3C/svg%3E\",\n offsetX: -24,\n offsetY: -24,\n};\n\nexport const measurementWithArrowCursor = {\n url: \"data:image/svg+xml;utf8,%3Csvg id='icons' xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bstroke:%23fff;stroke-miterlimit:10;stroke-width:2px;%7D.cls-2%7Bfill:%23fff;%7D.cls-2,.cls-3%7Bfill-rule:evenodd;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M27.46,21h-19a.5.5,0,0,0-.5.5v6a.5.5,0,0,0,.5.5h19a.5.5,0,0,0,.5-.5v-6A.5.5,0,0,0,27.46,21ZM27,27H9V22h3v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2Z'/%3E%3Cpath d='M27.46,21h-19a.5.5,0,0,0-.5.5v6a.5.5,0,0,0,.5.5h19a.5.5,0,0,0,.5-.5v-6A.5.5,0,0,0,27.46,21ZM27,27H9V22h3v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2Z'/%3E%3Cpath class='cls-2' d='M1,17V1L12.59,12.62H5.81l-.41.12Z'/%3E%3Cpath class='cls-2' d='M10.08,17.69l-3.6,1.53L1.8,8.14,5.48,6.58Z'/%3E%3Cpath class='cls-3' d='M8.75,17l-1.84.77-3.1-7.37,1.84-.78Z'/%3E%3Cpath class='cls-3' d='M2,3.41V14.6l3-2.87.43-.14h4.76Z'/%3E%3C/svg%3E\",\n offsetX: -30,\n offsetY: -30,\n};\n\nexport const pinCursor = {\n url: \"data:image/svg+xml,%3Csvg width='36px' height='36px' viewBox='0 0 24 24' version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cdefs%3E%3Cpath d='M12,2 C7.581722,2 4,5.581722 4,10 C4.00435812,11.7714969 4.41127263,13.5188357 5.19,15.11 C6.15517666,17.0237439 7.49502409,18.7240579 9.13,20.11 C9.86916736,20.7592093 10.6620019,21.3446357 11.5,21.86 L12,22.14 L12.5,21.86 C13.8750156,21.0120029 15.1296156,19.9827599 16.23,18.8 C17.2698142,17.7023203 18.1394508,16.4551671 18.81,15.1 C19.5872532,13.5118707 19.9941287,11.7681184 20,10 C20,5.581722 16.418278,2 12,2 Z M12,13 C10.3431458,13 9,11.6568542 9,10 C9,8.34314575 10.3431458,7 12,7 C13.6568542,7 15,8.34314575 15,10 C15,10.7956495 14.6839295,11.5587112 14.1213203,12.1213203 C13.5587112,12.6839295 12.7956495,13 12,13 Z' id='path-1'%3E%3C/path%3E%3C/defs%3E%3Cg id='icons/pin-filled' stroke='none' stroke-width='1' fill='none' fill-rule='evenodd'%3E%3Cmask id='mask-2' fill='white'%3E%3Cuse xlink:href='%23path-1'%3E%3C/use%3E%3C/mask%3E%3Cuse id='Shape' stroke='%23FAFAFA' fill='%23BDBDBD' fill-rule='nonzero' xlink:href='%23path-1'%3E%3C/use%3E%3C/g%3E%3C/svg%3E\",\n offsetX: 17,\n offsetY: 32,\n};\n\nexport const labelPinCursor = {\n url: \"data:image/svg+xml,%3Csvg width='36px' height='36px' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 16 24' %3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bfill:none;%7D.cls-2%7Bfill:%23616161;%7D.cls-3%7Bclip-path:url(%23clip-path);%7D%3C/style%3E%3CclipPath id='clip-path'%3E%3Ccircle cx='-576.76' cy='-107.26' r='4'/%3E%3C/clipPath%3E%3C/defs%3E%3Cpath d='M8,16H8a.48.48,0,0,1-.42-.23L5.75,13H3.51A1.5,1.5,0,0,1,2,11.5v-8A1.5,1.5,0,0,1,3.51,2h9A1.51,1.51,0,0,1,14,3.5v8a1.5,1.5,0,0,1-1.5,1.5H10.22L8.39,15.81A.5.5,0,0,1,8,16ZM3.51,3a.5.5,0,0,0-.5.5v8a.5.5,0,0,0,.5.5H6a.5.5,0,0,1,.42.23L8,14.61l1.55-2.38A.5.5,0,0,1,10,12h2.56a.5.5,0,0,0,.5-.5v-8a.51.51,0,0,0-.5-.5Z'/%3E%3Ccircle cx='8.01' cy='20' r='2'/%3E%3C/svg%3E%0A\",\n offsetX: 17,\n offsetY: 29,\n};\n\nexport const boxQueryCursor = {\n url: \"data:image/svg+xml;utf8,%3Csvg id='icons' xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bstroke:%23fff;stroke-miterlimit:10;stroke-width:2px;%7D.cls-2%7Bfill:%23fff;%7D.cls-2,.cls-3%7Bfill-rule:evenodd;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-2' d='M1.25,17V1L12.59,12.62H5.81l-.41.12Z'/%3E%3Cpath class='cls-2' d='M10.33,17.69l-3.6,1.53L1.8,8.14,5.48,6.58Z'/%3E %3Cpath class='cls-3' d='M9,17l-1.84.77-3.1-7.37,1.84-.78Z'/%3E%3Cpath class='cls-3' d='M2.25,3.41V14.6l3-2.87.43-.14h4.76Z'/%3E%3Cpath class='cls-1' d='M21.36,22.5H15.5V16.64a.5.5,0,0,0-1,0V22.5H8.64a.5.5,0,0,0,0,1H14.5v5.86a.5.5,0,0,0,1,0V23.5h5.86a.5.5,0,0,0,0-1Z' /%3E %3Cpath d='M21.36,22.5H15.5V16.64a.5.5,0,0,0-1,0V22.5H8.64a.5.5,0,0,0,0,1H14.5v5.86a.5.5,0,0,0,1,0V23.5h5.86a.5.5,0,0,0,0-1Z' /%3E%3C/svg%3E\",\n offsetX: -30,\n offsetY: -30,\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../../src/lib/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAI5C,MAAM,UAAU,sBAAsB,CACpC,KAAiB,EACjB,OAAiB;IAEjB,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAqB;IACxD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;IAC1B,OAAO,mCAAmC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;;IACtC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG;YACZ,QAAQ,MAAM,CAAC,GAAG,IAAI;YACtB,MAAA,MAAM,CAAC,OAAO,mCAAI,CAAC;YACnB,MAAA,MAAM,CAAC,OAAO,mCAAI,CAAC;YACnB,QAAQ;SACT,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC","sourcesContent":["import { Point } from '@vertexvis/geometry';\n\nimport { Cursor } from './cursors';\n\nexport function getMouseClientPosition(\n event: MouseEvent,\n offsets?: DOMRect
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../../../../src/lib/dom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAI5C,MAAM,UAAU,sBAAsB,CACpC,KAAiB,EACjB,OAAiB;IAEjB,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,EAAE,CAAC;IACZ,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAqB;IACxD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC;IAC1B,OAAO,mCAAmC,CAAC,OAAO,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,MAAc;;IACtC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,MAAM,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG;YACZ,QAAQ,MAAM,CAAC,GAAG,IAAI;YACtB,MAAA,MAAM,CAAC,OAAO,mCAAI,CAAC;YACnB,MAAA,MAAM,CAAC,OAAO,mCAAI,CAAC;YACnB,QAAQ;SACT,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,gBAAgB,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC","sourcesContent":["import { Point } from '@vertexvis/geometry';\n\nimport { Cursor } from './cursors';\n\nexport function getMouseClientPosition(\n event: MouseEvent,\n offsets?: DOMRect,\n): Point.Point {\n const pt = Point.create(event.clientX, event.clientY);\n if (offsets == null) {\n return pt;\n } else {\n return Point.subtract(pt, Point.create(offsets.left, offsets.top));\n }\n}\n\n/**\n * Returns a CSS transform that will center an element at the given position.\n */\nexport function cssTransformCenterAt(position: Point.Point): string {\n const { x, y } = position;\n return `translate(-50%, -50%) translate(${x}px, ${y}px)`;\n}\n\n/**\n * Returns a CSS value for a cursor.\n */\nexport function cssCursor(cursor: Cursor): string {\n if (typeof cursor === 'string') {\n return cursor;\n } else {\n const parts = [\n `url(\"${cursor.url}\")`,\n cursor.offsetX ?? 0,\n cursor.offsetY ?? 0,\n ', auto',\n ];\n return parts.join(' ');\n }\n}\n\nexport function getWindowDevicePixelRatio(): number {\n if (typeof window !== 'undefined') {\n return window.devicePixelRatio;\n }\n return 1;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../../../src/lib/grpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAahD,MAAM,UAAU,YAAY,CAC1B,MAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CACjC,KAAuD,EACvD,IAAoC;IAEpC,IAAI,MAAM,GAAG,SAAS,CAAC;IAEvB,GAAG,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,MAAM,GAAG,CAAC;QACV,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAwB,EACxB,QAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC7B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;YAC5B,GAAG;YACH,QAAQ,EAAE,EAAE,aAAa,EAAE,QAAQ,IAAI,EAAE,EAAE;SAC5C,CAAC;KACH,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { grpc } from '@improbable-eng/grpc-web';\n\nexport type GrpcCaller<R, E> = (\n handler: GrpcHandler<R, E
|
|
1
|
+
{"version":3,"file":"grpc.js","sourceRoot":"","sources":["../../../../src/lib/grpc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAahD,MAAM,UAAU,YAAY,CAC1B,MAAwB;IAExB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClB,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,YAAY,CACjC,KAAuD,EACvD,IAAoC;IAEpC,IAAI,MAAM,GAAG,SAAS,CAAC;IAEvB,GAAG,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,MAAM,GAAG,CAAC;QACV,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,QAAQ,MAAM,IAAI,IAAI,EAAE;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAwB,EACxB,QAAiB;IAEjB,MAAM,GAAG,GAAG,MAAM,WAAW,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;QAC7B,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC;YAC5B,GAAG;YACH,QAAQ,EAAE,EAAE,aAAa,EAAE,QAAQ,IAAI,EAAE,EAAE;SAC5C,CAAC;KACH,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import { grpc } from '@improbable-eng/grpc-web';\n\nexport type GrpcCaller<R, E> = (\n handler: GrpcHandler<R, E>,\n) => void | Promise<void>;\n\ntype GrpcHandler<R, E> = (err: E | null, res: R | null) => void | Promise<void>;\n\nexport type JwtProvider = () =>\n | Promise<string | undefined>\n | string\n | undefined;\n\nexport function requestUnary<R, E = unknown>(\n caller: GrpcCaller<R, E>,\n): Promise<R> {\n return new Promise((resolve, reject) => {\n caller((err, res) => {\n if (err != null) {\n reject(err);\n } else if (res != null) {\n resolve(res);\n } else {\n reject(new Error('Invalid gRPC response. Error and result are empty.'));\n }\n });\n });\n}\n\nexport async function* requestPaged<R, E = unknown>(\n fetch: (cursor: string | undefined) => GrpcCaller<R, E>,\n next: (res: R) => string | undefined,\n): AsyncGenerator<R, void, void> {\n let cursor = undefined;\n\n do {\n const res = await requestUnary(fetch(cursor));\n yield res;\n cursor = next(res);\n } while (cursor != null);\n}\n\nexport async function createMetadata(\n jwtProvider: JwtProvider,\n deviceId?: string,\n): Promise<grpc.Metadata> {\n const jwt = await jwtProvider();\n const meta = new grpc.Metadata({\n 'jwt-context': JSON.stringify({\n jwt,\n metadata: { 'x-device-id': deviceId || '' },\n }),\n });\n\n return meta;\n}\n"]}
|