@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":"mapper.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Dimensions } from '@vertexvis/geometry';\nimport { RepresentationPredefinedId } from '@vertexvis/scene-view-protos/core/protos/representation_pb';\nimport { toProtoDuration } from '@vertexvis/stream-api';\nimport { UUID } from '@vertexvis/utils';\nimport Long from 'long';\n\nimport {\n Animation,\n FlyTo,\n FrameCamera,\n SceneViewStateIdentifier,\n} from '../types';\nimport { isValidFrameCamera } from '../types/frameCamera';\nimport { ItemOperation, PmiAnnotationOperation } from './operations';\nimport { AnnotationQueryExpression, QueryExpression } from './queries';\nimport { SceneViewStateFeature } from './scene';\n\nexport interface BuildSceneOperationContext {\n dimensions: Dimensions.Dimensions;\n}\n\nexport function buildSceneViewStateIdentifier(\n identifier: UUID.UUID | SceneViewStateIdentifier.SceneViewStateIdentifier\n):\n | Pick<\n vertexvis.protobuf.stream.ILoadSceneViewStatePayload,\n 'sceneViewStateId'\n >\n | Pick<\n vertexvis.protobuf.stream.ILoadSceneViewStatePayload,\n 'sceneViewStateSuppliedId'\n > {\n if (typeof identifier === 'string') {\n return { sceneViewStateId: { hex: identifier } };\n } else if (SceneViewStateIdentifier.isSceneViewStateId(identifier)) {\n return { sceneViewStateId: { hex: identifier.id } };\n } else if (SceneViewStateIdentifier.isSceneViewStateSuppliedId(identifier)) {\n return { sceneViewStateSuppliedId: { value: identifier.suppliedId } };\n } else {\n throw new Error(\n 'Unable to build scene view state identifier, input must be a string or `SceneViewStateIdentifier`.'\n );\n }\n}\n\nexport function buildQueryExpression(\n query: QueryExpression,\n context: BuildSceneOperationContext\n): vertexvis.protobuf.stream.IQueryExpression {\n switch (query.type) {\n case 'and':\n case 'or':\n return {\n operand: {\n itemCollection: {\n queries: query.expressions.map((exp) => ({\n sceneItemQuery: buildSceneItemQuery(exp),\n })),\n },\n },\n };\n case 'not':\n return {\n not: {\n expression: buildQueryExpression(query.query, context),\n },\n };\n case 'item-id':\n case 'supplied-id':\n return {\n operand: {\n item: {\n sceneItemQuery: buildSceneItemQuery(query),\n },\n },\n };\n case 'all':\n return {\n operand: {\n root: {},\n },\n };\n case 'scene-tree-range':\n return {\n operand: {\n sceneTreeRange: {\n start: query.range.start,\n end: query.range.end,\n },\n },\n };\n case 'metadata':\n if (query.removeHiddenItems) {\n return {\n and: {\n first: {\n operand: {\n metadata: {\n valueFilter: query.filter,\n keys: query.keys,\n exactMatch: query.exactMatch,\n },\n },\n },\n second: {\n operand: {\n override: {\n visibility: {\n visibilityState: true,\n },\n },\n },\n },\n },\n };\n } else {\n return {\n operand: {\n metadata: {\n valueFilter: query.filter,\n keys: query.keys,\n exactMatch: query.exactMatch,\n },\n },\n };\n }\n case 'all-selected':\n return {\n operand: {\n override: {\n selection: {},\n },\n },\n };\n case 'all-visible':\n return {\n operand: {\n override: {\n visibility: {\n visibilityState: true,\n },\n },\n },\n };\n case 'point':\n return {\n operand: {\n point: {\n point: query.point,\n viewport: context.dimensions,\n },\n },\n };\n case 'volume-intersection':\n return {\n operand: {\n volume: {\n frustumByRectangle: {\n rectangle: query.rectangle,\n },\n exclusive: query.exclusive,\n viewport: context.dimensions,\n },\n },\n };\n default:\n return {};\n }\n}\n\nexport function buildAnnotationQueryExpression(\n query: QueryExpression,\n context: BuildSceneOperationContext\n): vertexvis.protobuf.stream.IPmiAnnotationQueryExpression {\n switch (query.type) {\n case 'and':\n const numberOfExpressionsAnd = query.expressions.length;\n\n // Exactly one or two expressions should have been provided in the query.\n // If only one expression is given, query only on that expression.\n if (numberOfExpressionsAnd === 1) {\n return buildAnnotationQueryExpression(\n {\n type: 'annotation-id',\n value: (query.expressions[0] as AnnotationQueryExpression).value,\n },\n context\n );\n } else if (numberOfExpressionsAnd !== 2) {\n throw new Error('Incorrect number of query expressions provided.');\n }\n\n return {\n and: {\n first: buildAnnotationQueryExpression(query.expressions[0], context),\n second: buildAnnotationQueryExpression(query.expressions[1], context),\n },\n };\n\n case 'or':\n const numberOfExpressionsOr = query.expressions.length;\n\n // Exactly one or two expressions should have been provided in the query.\n // If only one expression is given, query only on that expression.\n if (numberOfExpressionsOr === 1) {\n return buildAnnotationQueryExpression(\n {\n type: 'annotation-id',\n value: (query.expressions[0] as AnnotationQueryExpression).value,\n },\n context\n );\n } else if (numberOfExpressionsOr !== 2) {\n throw new Error('Incorrect number of query expressions provided.');\n }\n\n return {\n or: {\n first: buildAnnotationQueryExpression(query.expressions[0], context),\n second: buildAnnotationQueryExpression(query.expressions[1], context),\n },\n };\n case 'not':\n return {\n not: {\n expression: buildAnnotationQueryExpression(query.query, context),\n },\n };\n case 'annotation-id':\n const { msb, lsb } = UUID.toMsbLsb(query.value);\n\n return {\n operand: {\n annotation: {\n id: new vertexvis.protobuf.core.Uuid2l({\n msb: Long.fromString(msb),\n lsb: Long.fromString(lsb),\n }),\n },\n },\n };\n case 'all':\n return {\n operand: {\n all: {},\n },\n };\n default:\n return {};\n }\n}\n\nexport function buildSceneElementOperationOnItem(\n query: QueryExpression,\n operations: ItemOperation[],\n context: BuildSceneOperationContext\n): vertexvis.protobuf.stream.ISceneElementOperation {\n const operationTypes = buildOperationTypes(operations);\n const queryExpression = buildQueryExpression(query, context);\n\n return { sceneItemOperation: { queryExpression, operationTypes } };\n}\n\nexport function buildSceneElementOperationOnAnnotation(\n query: QueryExpression,\n operations: PmiAnnotationOperation[],\n context: BuildSceneOperationContext\n): vertexvis.protobuf.stream.ISceneElementOperation {\n const operationTypes = buildAnnotationOperationTypes(operations);\n const queryExpression = buildAnnotationQueryExpression(query, context);\n\n return { pmiAnnotationOperation: { queryExpression, operationTypes } };\n}\n\nfunction buildSceneItemQuery(\n item: QueryExpression\n): vertexvis.protobuf.stream.ISceneItemQuery {\n switch (item.type) {\n case 'item-id':\n return {\n id: new vertexvis.protobuf.core.Uuid({\n hex: item.value,\n }),\n };\n case 'supplied-id':\n return {\n suppliedId: item.value,\n };\n default:\n return {};\n }\n}\n\nexport function buildFlyToOperation(\n frameCorrelationId: UUID.UUID,\n options: FlyTo.FlyToOptions,\n animation?: Animation.Animation,\n baseCamera?: FrameCamera.FrameCamera\n): vertexvis.protobuf.stream.IFlyToPayload {\n const payload = {\n frameCorrelationId: {\n value: frameCorrelationId,\n },\n animation: animation\n ? {\n duration: toProtoDuration(animation.milliseconds),\n }\n : undefined,\n baseCamera:\n baseCamera != null && isValidFrameCamera(baseCamera)\n ? FrameCamera.toProtobuf(baseCamera)\n : undefined,\n };\n\n switch (options.flyTo.type) {\n case 'supplied': {\n return {\n ...payload,\n itemSuppliedId: options.flyTo.data,\n };\n }\n case 'internal': {\n return {\n ...payload,\n itemId: new vertexvis.protobuf.core.Uuid({\n hex: options.flyTo.data,\n }),\n };\n }\n case 'camera': {\n return {\n ...payload,\n camera: FrameCamera.toProtobuf(options.flyTo.data),\n };\n }\n\n case 'scene-item-query':\n return {\n ...payload,\n sceneItemQueryExpression: options.flyTo.data,\n };\n\n case 'bounding-box': {\n return {\n ...payload,\n boundingBox: {\n xmin: options.flyTo.data.min.x,\n xmax: options.flyTo.data.max.x,\n ymin: options.flyTo.data.min.y,\n ymax: options.flyTo.data.max.y,\n zmin: options.flyTo.data.min.z,\n zmax: options.flyTo.data.max.z,\n },\n };\n }\n default:\n return {};\n }\n}\n\nfunction buildOperationTypes(\n operations: ItemOperation[]\n): vertexvis.protobuf.stream.IOperationType[] {\n return operations.map((op) => {\n switch (op.type) {\n case 'change-material':\n return {\n changeMaterial: {\n materialOverride: {\n colorMaterial: {\n d: op.material.opacity,\n ns: op.material.glossiness,\n ka: op.material.ambient,\n kd: op.material.diffuse,\n ks: op.material.specular,\n ke: op.material.emissive,\n },\n },\n },\n };\n case 'clear-override':\n return { clearMaterial: {} };\n case 'change-transform':\n return { changeTransform: { transform: { ...op.transform } } };\n case 'clear-transform':\n return { clearTransform: { cascade: op.cascade } };\n case 'hide':\n return { changeVisibility: { visible: false } };\n case 'show':\n return { changeVisibility: { visible: true } };\n case 'select':\n return { changeSelection: { selected: true } };\n case 'deselect':\n return { changeSelection: { selected: false } };\n case 'change-phantom':\n return { changePhantom: { phantom: op.phantomState ?? true } };\n case 'clear-phantom':\n return { changePhantom: { phantom: false } };\n case 'change-end-item':\n return { changeEndItem: { endItem: op.endItemState ?? true } };\n case 'clear-end-item':\n return { changeEndItem: { endItem: false } };\n case 'view-rendition-by-id':\n return {\n viewRendition: {\n id: new vertexvis.protobuf.core.Uuid({ hex: op.id }),\n },\n };\n case 'view-rendition-by-supplied-id':\n return { viewRendition: { suppliedId: op.suppliedId } };\n case 'view-default-rendition':\n return { viewDefaultRendition: {} };\n case 'clear-rendition':\n return { clearRendition: {} };\n case 'view-representation':\n if (op.id === 'empty') {\n return {\n viewRepresentation: {\n predefinedId:\n RepresentationPredefinedId.REPRESENTATION_PREDEFINED_ID_EMPTY,\n },\n };\n } else if (op.id === 'entire-part') {\n return {\n viewRepresentation: {\n predefinedId:\n RepresentationPredefinedId.REPRESENTATION_PREDEFINED_ID_ENTIRE_PART,\n },\n };\n } else {\n return {\n viewRepresentation: {\n id: new vertexvis.protobuf.core.Uuid({ hex: op.id }),\n },\n };\n }\n case 'clear-representation':\n return { clearRepresentation: {} };\n default:\n return {};\n }\n });\n}\n\nfunction buildAnnotationOperationTypes(\n operations: PmiAnnotationOperation[]\n): vertexvis.protobuf.stream.IOperationType[] {\n return operations.map((op) => {\n switch (op.type) {\n case 'show':\n return { changeVisibility: { visible: true } };\n case 'hide':\n return { changeVisibility: { visible: false } };\n case 'select':\n return { changeSelection: { selected: true } };\n case 'deselect':\n return { changeSelection: { selected: false } };\n default:\n return {};\n }\n });\n}\n\nexport function toPbSceneViewStateFeatures(\n features: SceneViewStateFeature[]\n): vertexvis.protobuf.stream.SceneViewStateFeature[] {\n return features.map((feature) => {\n switch (feature) {\n case 'camera':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_CAMERA;\n case 'material_overrides':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_MATERIAL_OVERRIDE;\n case 'selection':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_SELECTION;\n case 'visibility':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_VISIBILITY;\n case 'transforms':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_TRANSFORM;\n case 'cross_section':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_CROSS_SECTION;\n case 'phantom':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_PHANTOM;\n case 'shading':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_SHADING;\n default:\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_INVALID;\n }\n });\n}\n"]}
|
|
1
|
+
{"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Dimensions } from '@vertexvis/geometry';\nimport { RepresentationPredefinedId } from '@vertexvis/scene-view-protos/core/protos/representation_pb';\nimport { toProtoDuration } from '@vertexvis/stream-api';\nimport { UUID } from '@vertexvis/utils';\nimport Long from 'long';\n\nimport {\n Animation,\n FlyTo,\n FrameCamera,\n SceneViewStateIdentifier,\n} from '../types';\nimport { isValidFrameCamera } from '../types/frameCamera';\nimport { ItemOperation, PmiAnnotationOperation } from './operations';\nimport { AnnotationQueryExpression, QueryExpression } from './queries';\nimport { SceneViewStateFeature } from './scene';\n\nexport interface BuildSceneOperationContext {\n dimensions: Dimensions.Dimensions;\n}\n\nexport function buildSceneViewStateIdentifier(\n identifier: UUID.UUID | SceneViewStateIdentifier.SceneViewStateIdentifier,\n):\n | Pick<\n vertexvis.protobuf.stream.ILoadSceneViewStatePayload,\n 'sceneViewStateId'\n >\n | Pick<\n vertexvis.protobuf.stream.ILoadSceneViewStatePayload,\n 'sceneViewStateSuppliedId'\n > {\n if (typeof identifier === 'string') {\n return { sceneViewStateId: { hex: identifier } };\n } else if (SceneViewStateIdentifier.isSceneViewStateId(identifier)) {\n return { sceneViewStateId: { hex: identifier.id } };\n } else if (SceneViewStateIdentifier.isSceneViewStateSuppliedId(identifier)) {\n return { sceneViewStateSuppliedId: { value: identifier.suppliedId } };\n } else {\n throw new Error(\n 'Unable to build scene view state identifier, input must be a string or `SceneViewStateIdentifier`.',\n );\n }\n}\n\nexport function buildQueryExpression(\n query: QueryExpression,\n context: BuildSceneOperationContext,\n): vertexvis.protobuf.stream.IQueryExpression {\n switch (query.type) {\n case 'and':\n case 'or':\n return {\n operand: {\n itemCollection: {\n queries: query.expressions.map((exp) => ({\n sceneItemQuery: buildSceneItemQuery(exp),\n })),\n },\n },\n };\n case 'not':\n return {\n not: {\n expression: buildQueryExpression(query.query, context),\n },\n };\n case 'item-id':\n case 'supplied-id':\n return {\n operand: {\n item: {\n sceneItemQuery: buildSceneItemQuery(query),\n },\n },\n };\n case 'all':\n return {\n operand: {\n root: {},\n },\n };\n case 'scene-tree-range':\n return {\n operand: {\n sceneTreeRange: {\n start: query.range.start,\n end: query.range.end,\n },\n },\n };\n case 'metadata':\n if (query.removeHiddenItems) {\n return {\n and: {\n first: {\n operand: {\n metadata: {\n valueFilter: query.filter,\n keys: query.keys,\n exactMatch: query.exactMatch,\n },\n },\n },\n second: {\n operand: {\n override: {\n visibility: {\n visibilityState: true,\n },\n },\n },\n },\n },\n };\n } else {\n return {\n operand: {\n metadata: {\n valueFilter: query.filter,\n keys: query.keys,\n exactMatch: query.exactMatch,\n },\n },\n };\n }\n case 'all-selected':\n return {\n operand: {\n override: {\n selection: {},\n },\n },\n };\n case 'all-visible':\n return {\n operand: {\n override: {\n visibility: {\n visibilityState: true,\n },\n },\n },\n };\n case 'point':\n return {\n operand: {\n point: {\n point: query.point,\n viewport: context.dimensions,\n },\n },\n };\n case 'volume-intersection':\n return {\n operand: {\n volume: {\n frustumByRectangle: {\n rectangle: query.rectangle,\n },\n exclusive: query.exclusive,\n viewport: context.dimensions,\n },\n },\n };\n default:\n return {};\n }\n}\n\nexport function buildAnnotationQueryExpression(\n query: QueryExpression,\n context: BuildSceneOperationContext,\n): vertexvis.protobuf.stream.IPmiAnnotationQueryExpression {\n switch (query.type) {\n case 'and':\n const numberOfExpressionsAnd = query.expressions.length;\n\n // Exactly one or two expressions should have been provided in the query.\n // If only one expression is given, query only on that expression.\n if (numberOfExpressionsAnd === 1) {\n return buildAnnotationQueryExpression(\n {\n type: 'annotation-id',\n value: (query.expressions[0] as AnnotationQueryExpression).value,\n },\n context,\n );\n } else if (numberOfExpressionsAnd !== 2) {\n throw new Error('Incorrect number of query expressions provided.');\n }\n\n return {\n and: {\n first: buildAnnotationQueryExpression(query.expressions[0], context),\n second: buildAnnotationQueryExpression(query.expressions[1], context),\n },\n };\n\n case 'or':\n const numberOfExpressionsOr = query.expressions.length;\n\n // Exactly one or two expressions should have been provided in the query.\n // If only one expression is given, query only on that expression.\n if (numberOfExpressionsOr === 1) {\n return buildAnnotationQueryExpression(\n {\n type: 'annotation-id',\n value: (query.expressions[0] as AnnotationQueryExpression).value,\n },\n context,\n );\n } else if (numberOfExpressionsOr !== 2) {\n throw new Error('Incorrect number of query expressions provided.');\n }\n\n return {\n or: {\n first: buildAnnotationQueryExpression(query.expressions[0], context),\n second: buildAnnotationQueryExpression(query.expressions[1], context),\n },\n };\n case 'not':\n return {\n not: {\n expression: buildAnnotationQueryExpression(query.query, context),\n },\n };\n case 'annotation-id':\n const { msb, lsb } = UUID.toMsbLsb(query.value);\n\n return {\n operand: {\n annotation: {\n id: new vertexvis.protobuf.core.Uuid2l({\n msb: Long.fromString(msb),\n lsb: Long.fromString(lsb),\n }),\n },\n },\n };\n case 'all':\n return {\n operand: {\n all: {},\n },\n };\n default:\n return {};\n }\n}\n\nexport function buildSceneElementOperationOnItem(\n query: QueryExpression,\n operations: ItemOperation[],\n context: BuildSceneOperationContext,\n): vertexvis.protobuf.stream.ISceneElementOperation {\n const operationTypes = buildOperationTypes(operations);\n const queryExpression = buildQueryExpression(query, context);\n\n return { sceneItemOperation: { queryExpression, operationTypes } };\n}\n\nexport function buildSceneElementOperationOnAnnotation(\n query: QueryExpression,\n operations: PmiAnnotationOperation[],\n context: BuildSceneOperationContext,\n): vertexvis.protobuf.stream.ISceneElementOperation {\n const operationTypes = buildAnnotationOperationTypes(operations);\n const queryExpression = buildAnnotationQueryExpression(query, context);\n\n return { pmiAnnotationOperation: { queryExpression, operationTypes } };\n}\n\nfunction buildSceneItemQuery(\n item: QueryExpression,\n): vertexvis.protobuf.stream.ISceneItemQuery {\n switch (item.type) {\n case 'item-id':\n return {\n id: new vertexvis.protobuf.core.Uuid({\n hex: item.value,\n }),\n };\n case 'supplied-id':\n return {\n suppliedId: item.value,\n };\n default:\n return {};\n }\n}\n\nexport function buildFlyToOperation(\n frameCorrelationId: UUID.UUID,\n options: FlyTo.FlyToOptions,\n animation?: Animation.Animation,\n baseCamera?: FrameCamera.FrameCamera,\n): vertexvis.protobuf.stream.IFlyToPayload {\n const payload = {\n frameCorrelationId: {\n value: frameCorrelationId,\n },\n animation: animation\n ? {\n duration: toProtoDuration(animation.milliseconds),\n }\n : undefined,\n baseCamera:\n baseCamera != null && isValidFrameCamera(baseCamera)\n ? FrameCamera.toProtobuf(baseCamera)\n : undefined,\n };\n\n switch (options.flyTo.type) {\n case 'supplied': {\n return {\n ...payload,\n itemSuppliedId: options.flyTo.data,\n };\n }\n case 'internal': {\n return {\n ...payload,\n itemId: new vertexvis.protobuf.core.Uuid({\n hex: options.flyTo.data,\n }),\n };\n }\n case 'camera': {\n return {\n ...payload,\n camera: FrameCamera.toProtobuf(options.flyTo.data),\n };\n }\n\n case 'scene-item-query':\n return {\n ...payload,\n sceneItemQueryExpression: options.flyTo.data,\n };\n\n case 'bounding-box': {\n return {\n ...payload,\n boundingBox: {\n xmin: options.flyTo.data.min.x,\n xmax: options.flyTo.data.max.x,\n ymin: options.flyTo.data.min.y,\n ymax: options.flyTo.data.max.y,\n zmin: options.flyTo.data.min.z,\n zmax: options.flyTo.data.max.z,\n },\n };\n }\n default:\n return {};\n }\n}\n\nfunction buildOperationTypes(\n operations: ItemOperation[],\n): vertexvis.protobuf.stream.IOperationType[] {\n return operations.map((op) => {\n switch (op.type) {\n case 'change-material':\n return {\n changeMaterial: {\n materialOverride: {\n colorMaterial: {\n d: op.material.opacity,\n ns: op.material.glossiness,\n ka: op.material.ambient,\n kd: op.material.diffuse,\n ks: op.material.specular,\n ke: op.material.emissive,\n },\n },\n },\n };\n case 'clear-override':\n return { clearMaterial: {} };\n case 'change-transform':\n return { changeTransform: { transform: { ...op.transform } } };\n case 'clear-transform':\n return { clearTransform: { cascade: op.cascade } };\n case 'hide':\n return { changeVisibility: { visible: false } };\n case 'show':\n return { changeVisibility: { visible: true } };\n case 'select':\n return { changeSelection: { selected: true } };\n case 'deselect':\n return { changeSelection: { selected: false } };\n case 'change-phantom':\n return { changePhantom: { phantom: op.phantomState ?? true } };\n case 'clear-phantom':\n return { changePhantom: { phantom: false } };\n case 'change-end-item':\n return { changeEndItem: { endItem: op.endItemState ?? true } };\n case 'clear-end-item':\n return { changeEndItem: { endItem: false } };\n case 'view-rendition-by-id':\n return {\n viewRendition: {\n id: new vertexvis.protobuf.core.Uuid({ hex: op.id }),\n },\n };\n case 'view-rendition-by-supplied-id':\n return { viewRendition: { suppliedId: op.suppliedId } };\n case 'view-default-rendition':\n return { viewDefaultRendition: {} };\n case 'clear-rendition':\n return { clearRendition: {} };\n case 'view-representation':\n if (op.id === 'empty') {\n return {\n viewRepresentation: {\n predefinedId:\n RepresentationPredefinedId.REPRESENTATION_PREDEFINED_ID_EMPTY,\n },\n };\n } else if (op.id === 'entire-part') {\n return {\n viewRepresentation: {\n predefinedId:\n RepresentationPredefinedId.REPRESENTATION_PREDEFINED_ID_ENTIRE_PART,\n },\n };\n } else {\n return {\n viewRepresentation: {\n id: new vertexvis.protobuf.core.Uuid({ hex: op.id }),\n },\n };\n }\n case 'clear-representation':\n return { clearRepresentation: {} };\n default:\n return {};\n }\n });\n}\n\nfunction buildAnnotationOperationTypes(\n operations: PmiAnnotationOperation[],\n): vertexvis.protobuf.stream.IOperationType[] {\n return operations.map((op) => {\n switch (op.type) {\n case 'show':\n return { changeVisibility: { visible: true } };\n case 'hide':\n return { changeVisibility: { visible: false } };\n case 'select':\n return { changeSelection: { selected: true } };\n case 'deselect':\n return { changeSelection: { selected: false } };\n default:\n return {};\n }\n });\n}\n\nexport function toPbSceneViewStateFeatures(\n features: SceneViewStateFeature[],\n): vertexvis.protobuf.stream.SceneViewStateFeature[] {\n return features.map((feature) => {\n switch (feature) {\n case 'camera':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_CAMERA;\n case 'material_overrides':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_MATERIAL_OVERRIDE;\n case 'selection':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_SELECTION;\n case 'visibility':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_VISIBILITY;\n case 'transforms':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_TRANSFORM;\n case 'cross_section':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_CROSS_SECTION;\n case 'phantom':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_PHANTOM;\n case 'shading':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_SHADING;\n default:\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_INVALID;\n }\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { UUID } from '@vertexvis/utils';\n\nimport { ColorMaterial } from './colorMaterial';\n\nexport type RepresentationId = UUID.UUID | 'empty' | 'entire-part';\n\ninterface ShowItemOperation {\n type: 'show';\n}\n\ninterface HideItemOperation {\n type: 'hide';\n}\n\ninterface SelectItemOperation {\n type: 'select';\n}\n\ninterface DeselectItemOperation {\n type: 'deselect';\n}\n\ninterface ClearItemOperation {\n type: 'clear-override';\n}\n\nexport interface ChangeMaterialOperation {\n type: 'change-material';\n material: ColorMaterial;\n}\n\nexport interface TransformOperation {\n type: 'change-transform';\n transform: vertexvis.protobuf.core.IMatrix4x4f;\n}\n\nexport interface ClearTransformOperation {\n type: 'clear-transform';\n cascade?: boolean;\n}\n\nexport interface ChangePhantomOperation {\n type: 'change-phantom';\n phantomState?: boolean;\n}\n\ninterface ClearPhantomOperation {\n type: 'clear-phantom';\n}\n\nexport interface ChangeEndItemOperation {\n type: 'change-end-item';\n endItemState?: boolean;\n}\n\ninterface ClearEndItemOperation {\n type: 'clear-end-item';\n}\n\ninterface ViewRenditionById {\n type: 'view-rendition-by-id';\n id: UUID.UUID;\n}\n\ninterface ViewRenditionBySuppliedId {\n type: 'view-rendition-by-supplied-id';\n suppliedId: string;\n}\n\ninterface ViewDefaultRendition {\n type: 'view-default-rendition';\n}\n\ninterface ClearRendition {\n type: 'clear-rendition';\n}\n\ninterface ViewRepresentation {\n type: 'view-representation';\n id: RepresentationId;\n}\n\ninterface ClearRepresentation {\n type: 'clear-representation';\n}\n\nexport type ItemOperation =\n | ShowItemOperation\n | HideItemOperation\n | SelectItemOperation\n | DeselectItemOperation\n | ChangeMaterialOperation\n | ClearItemOperation\n | TransformOperation\n | ClearTransformOperation\n | ChangePhantomOperation\n | ClearPhantomOperation\n | ChangeEndItemOperation\n | ClearEndItemOperation\n | ViewRenditionById\n | ViewRenditionBySuppliedId\n | ViewDefaultRendition\n | ClearRendition\n | ViewRepresentation\n | ClearRepresentation;\n\nexport interface SceneItemOperations<T> {\n materialOverride(color: ColorMaterial): T;\n show(): T;\n hide(): T;\n select(color: ColorMaterial): T;\n deselect(): T;\n clearMaterialOverrides(): T;\n clearTransforms(): T;\n setPhantom(phantomState?: boolean): T;\n clearPhantom(): T;\n setEndItem(endItemState?: boolean): T;\n clearEndItem(): T;\n viewRenditionById(id: UUID.UUID): T;\n viewRenditionBySuppliedId(id: string): T;\n viewDefaultRendition(): T;\n clearRendition(): T;\n viewRepresentation(id: RepresentationId): T;\n clearRepresentation(): T;\n}\n\n/**\n * A class to handle the building of operations on scene items for a scene.\n */\nexport class ItemOperationBuilder implements SceneItemOperations<ItemOperationBuilder> {\n public constructor(private operations: ItemOperation[] = []) {}\n\n /**\n * Constructs the scene operations and returns a definition describing each\n * operation.\n */\n public build(): ItemOperation[] {\n return this.operations.concat();\n }\n\n public materialOverride(material: ColorMaterial): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'change-material', material }])\n );\n }\n\n public show(): ItemOperationBuilder {\n return new ItemOperationBuilder(this.operations.concat([{ type: 'show' }]));\n }\n\n public hide(): ItemOperationBuilder {\n return new ItemOperationBuilder(this.operations.concat([{ type: 'hide' }]));\n }\n\n public select(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'select' }])\n );\n }\n\n public deselect(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'deselect' }])\n );\n }\n\n public clearMaterialOverrides(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-override' }])\n );\n }\n\n public transform(\n matrix: vertexvis.protobuf.core.IMatrix4x4f\n ): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'change-transform', transform: matrix }])\n );\n }\n\n public clearTransforms(cascade = true): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-transform', cascade }])\n );\n }\n\n public setPhantom(phantomState?: boolean): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'change-phantom', phantomState }])\n );\n }\n\n public clearPhantom(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-phantom' }])\n );\n }\n\n public setEndItem(endItemState?: boolean): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'change-end-item', endItemState }])\n );\n }\n\n public clearEndItem(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-end-item' }])\n );\n }\n\n public viewRenditionById(id: UUID.UUID): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'view-rendition-by-id', id }])\n );\n }\n\n public viewRenditionBySuppliedId(suppliedId: string): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([\n { type: 'view-rendition-by-supplied-id', suppliedId },\n ])\n );\n }\n\n public viewDefaultRendition(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'view-default-rendition' }])\n );\n }\n\n public clearRendition(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-rendition' }])\n );\n }\n\n public viewRepresentation(id: RepresentationId): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat({ type: 'view-representation', id })\n );\n }\n\n public clearRepresentation(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat({ type: 'clear-representation' })\n );\n }\n}\n\nexport type PmiAnnotationOperation =\n | ShowItemOperation\n | HideItemOperation\n | SelectItemOperation\n | DeselectItemOperation;\n\nexport interface PmiAnnotationOperations<T> {\n show(): T;\n hide(): T;\n select(color: ColorMaterial): T;\n deselect(): T;\n}\n\n/**\n * A class to handle the building of operations on PMI annotations for a scene.\n */\nexport class PmiAnnotationOperationBuilder implements PmiAnnotationOperations<PmiAnnotationOperationBuilder> {\n public constructor(private operations: PmiAnnotationOperation[] = []) {}\n /**\n * Constructs the scene PMI annotation operations and returns a definition describing each\n * operation.\n */\n public build(): PmiAnnotationOperation[] {\n return this.operations.concat();\n }\n\n public show(): PmiAnnotationOperationBuilder {\n return new PmiAnnotationOperationBuilder(\n this.operations.concat([{ type: 'show' }])\n );\n }\n\n public hide(): PmiAnnotationOperationBuilder {\n return new PmiAnnotationOperationBuilder(\n this.operations.concat([{ type: 'hide' }])\n );\n }\n\n public select(): PmiAnnotationOperationBuilder {\n return new PmiAnnotationOperationBuilder(\n this.operations.concat([{ type: 'select' }])\n );\n }\n\n public deselect(): PmiAnnotationOperationBuilder {\n return new PmiAnnotationOperationBuilder(\n this.operations.concat([{ type: 'deselect' }])\n );\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"operations.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/operations.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { UUID } from '@vertexvis/utils';\n\nimport { ColorMaterial } from './colorMaterial';\n\nexport type RepresentationId = UUID.UUID | 'empty' | 'entire-part';\n\ninterface ShowItemOperation {\n type: 'show';\n}\n\ninterface HideItemOperation {\n type: 'hide';\n}\n\ninterface SelectItemOperation {\n type: 'select';\n}\n\ninterface DeselectItemOperation {\n type: 'deselect';\n}\n\ninterface ClearItemOperation {\n type: 'clear-override';\n}\n\nexport interface ChangeMaterialOperation {\n type: 'change-material';\n material: ColorMaterial;\n}\n\nexport interface TransformOperation {\n type: 'change-transform';\n transform: vertexvis.protobuf.core.IMatrix4x4f;\n}\n\nexport interface ClearTransformOperation {\n type: 'clear-transform';\n cascade?: boolean;\n}\n\nexport interface ChangePhantomOperation {\n type: 'change-phantom';\n phantomState?: boolean;\n}\n\ninterface ClearPhantomOperation {\n type: 'clear-phantom';\n}\n\nexport interface ChangeEndItemOperation {\n type: 'change-end-item';\n endItemState?: boolean;\n}\n\ninterface ClearEndItemOperation {\n type: 'clear-end-item';\n}\n\ninterface ViewRenditionById {\n type: 'view-rendition-by-id';\n id: UUID.UUID;\n}\n\ninterface ViewRenditionBySuppliedId {\n type: 'view-rendition-by-supplied-id';\n suppliedId: string;\n}\n\ninterface ViewDefaultRendition {\n type: 'view-default-rendition';\n}\n\ninterface ClearRendition {\n type: 'clear-rendition';\n}\n\ninterface ViewRepresentation {\n type: 'view-representation';\n id: RepresentationId;\n}\n\ninterface ClearRepresentation {\n type: 'clear-representation';\n}\n\nexport type ItemOperation =\n | ShowItemOperation\n | HideItemOperation\n | SelectItemOperation\n | DeselectItemOperation\n | ChangeMaterialOperation\n | ClearItemOperation\n | TransformOperation\n | ClearTransformOperation\n | ChangePhantomOperation\n | ClearPhantomOperation\n | ChangeEndItemOperation\n | ClearEndItemOperation\n | ViewRenditionById\n | ViewRenditionBySuppliedId\n | ViewDefaultRendition\n | ClearRendition\n | ViewRepresentation\n | ClearRepresentation;\n\nexport interface SceneItemOperations<T> {\n materialOverride(color: ColorMaterial): T;\n show(): T;\n hide(): T;\n select(color: ColorMaterial): T;\n deselect(): T;\n clearMaterialOverrides(): T;\n clearTransforms(): T;\n setPhantom(phantomState?: boolean): T;\n clearPhantom(): T;\n setEndItem(endItemState?: boolean): T;\n clearEndItem(): T;\n viewRenditionById(id: UUID.UUID): T;\n viewRenditionBySuppliedId(id: string): T;\n viewDefaultRendition(): T;\n clearRendition(): T;\n viewRepresentation(id: RepresentationId): T;\n clearRepresentation(): T;\n}\n\n/**\n * A class to handle the building of operations on scene items for a scene.\n */\nexport class ItemOperationBuilder implements SceneItemOperations<ItemOperationBuilder> {\n public constructor(private operations: ItemOperation[] = []) {}\n\n /**\n * Constructs the scene operations and returns a definition describing each\n * operation.\n */\n public build(): ItemOperation[] {\n return this.operations.concat();\n }\n\n public materialOverride(material: ColorMaterial): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'change-material', material }]),\n );\n }\n\n public show(): ItemOperationBuilder {\n return new ItemOperationBuilder(this.operations.concat([{ type: 'show' }]));\n }\n\n public hide(): ItemOperationBuilder {\n return new ItemOperationBuilder(this.operations.concat([{ type: 'hide' }]));\n }\n\n public select(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'select' }]),\n );\n }\n\n public deselect(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'deselect' }]),\n );\n }\n\n public clearMaterialOverrides(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-override' }]),\n );\n }\n\n public transform(\n matrix: vertexvis.protobuf.core.IMatrix4x4f,\n ): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'change-transform', transform: matrix }]),\n );\n }\n\n public clearTransforms(cascade = true): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-transform', cascade }]),\n );\n }\n\n public setPhantom(phantomState?: boolean): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'change-phantom', phantomState }]),\n );\n }\n\n public clearPhantom(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-phantom' }]),\n );\n }\n\n public setEndItem(endItemState?: boolean): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'change-end-item', endItemState }]),\n );\n }\n\n public clearEndItem(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-end-item' }]),\n );\n }\n\n public viewRenditionById(id: UUID.UUID): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'view-rendition-by-id', id }]),\n );\n }\n\n public viewRenditionBySuppliedId(suppliedId: string): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([\n { type: 'view-rendition-by-supplied-id', suppliedId },\n ]),\n );\n }\n\n public viewDefaultRendition(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'view-default-rendition' }]),\n );\n }\n\n public clearRendition(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat([{ type: 'clear-rendition' }]),\n );\n }\n\n public viewRepresentation(id: RepresentationId): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat({ type: 'view-representation', id }),\n );\n }\n\n public clearRepresentation(): ItemOperationBuilder {\n return new ItemOperationBuilder(\n this.operations.concat({ type: 'clear-representation' }),\n );\n }\n}\n\nexport type PmiAnnotationOperation =\n | ShowItemOperation\n | HideItemOperation\n | SelectItemOperation\n | DeselectItemOperation;\n\nexport interface PmiAnnotationOperations<T> {\n show(): T;\n hide(): T;\n select(color: ColorMaterial): T;\n deselect(): T;\n}\n\n/**\n * A class to handle the building of operations on PMI annotations for a scene.\n */\nexport class PmiAnnotationOperationBuilder implements PmiAnnotationOperations<PmiAnnotationOperationBuilder> {\n public constructor(private operations: PmiAnnotationOperation[] = []) {}\n /**\n * Constructs the scene PMI annotation operations and returns a definition describing each\n * operation.\n */\n public build(): PmiAnnotationOperation[] {\n return this.operations.concat();\n }\n\n public show(): PmiAnnotationOperationBuilder {\n return new PmiAnnotationOperationBuilder(\n this.operations.concat([{ type: 'show' }]),\n );\n }\n\n public hide(): PmiAnnotationOperationBuilder {\n return new PmiAnnotationOperationBuilder(\n this.operations.concat([{ type: 'hide' }]),\n );\n }\n\n public select(): PmiAnnotationOperationBuilder {\n return new PmiAnnotationOperationBuilder(\n this.operations.concat([{ type: 'select' }]),\n );\n }\n\n public deselect(): PmiAnnotationOperationBuilder {\n return new PmiAnnotationOperationBuilder(\n this.operations.concat([{ type: 'deselect' }]),\n );\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/queries.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Rectangle } from '@vertexvis/geometry';\n\nimport {\n PmiAnnotationOperationsBuilder,\n SceneItemOperationsBuilder,\n} from './scene';\n\ninterface AllQueryExpression {\n type: 'all';\n}\n\nexport interface SceneTreeRange {\n start: number;\n end: number;\n}\n\nexport interface AnnotationQueryExpression {\n type: 'annotation-id';\n value: string;\n}\n\ninterface ItemQueryExpression {\n type: 'item-id' | 'supplied-id';\n value: string;\n}\n\nexport interface AndExpression {\n type: 'and';\n expressions: QueryExpression[];\n}\n\nexport interface OrExpression {\n type: 'or';\n expressions: QueryExpression[];\n}\n\ninterface SceneTreeRangeQueryExpression {\n type: 'scene-tree-range';\n range: SceneTreeRange;\n}\n\ninterface NotQueryExpression {\n type: 'not';\n query: QueryExpression;\n}\n\ninterface MetadataQueryExpression {\n type: 'metadata';\n filter: string;\n keys: string[];\n exactMatch: boolean;\n removeHiddenItems?: boolean;\n}\n\ninterface AllSelectedQueryExpression {\n type: 'all-selected';\n}\n\ninterface AllVisibleQueryExpression {\n type: 'all-visible';\n}\n\ninterface PointQueryExpression {\n type: 'point';\n point: Point.Point;\n}\n\ninterface VolumeIntersectionQueryExpression {\n type: 'volume-intersection';\n rectangle: Rectangle.Rectangle;\n exclusive: boolean;\n}\n\n/**\n * Represents the sum of all possible types of expressions.\n */\nexport type QueryExpression =\n | AllQueryExpression\n | AnnotationQueryExpression\n | ItemQueryExpression\n | AndExpression\n | OrExpression\n | SceneTreeRangeQueryExpression\n | PointQueryExpression\n | VolumeIntersectionQueryExpression\n | MetadataQueryExpression\n | AllSelectedQueryExpression\n | AllVisibleQueryExpression\n | NotQueryExpression;\n\n/**\n * An interface that represents a query is \"complete\" and can be turned into an\n * expression.\n */\nabstract class TerminalQuery {\n protected inverted: boolean;\n public constructor(inverted: boolean) {\n this.inverted = inverted;\n }\n\n public build(): QueryExpression {\n if (this.inverted) {\n return {\n type: 'not',\n query: this.queryExpressionBuilder(),\n };\n } else {\n return this.queryExpressionBuilder();\n }\n }\n\n public abstract queryExpressionBuilder(): QueryExpression;\n}\n\ninterface ItemQuery<N> {\n withItemId(id: string): N;\n\n withSuppliedId(id: string): N;\n}\n\ninterface AnnotationQuery<N> {\n withAnnotationId(id: string): N;\n}\n\ninterface BooleanQuery {\n and(): AndSceneItemQuery;\n or(): OrSceneItemQuery;\n}\n\ninterface BooleanAnnotationQuery {\n and(): AndAnnotationQuery;\n or(): OrAnnotationQuery;\n}\n\nexport class RootQuery implements ItemQuery<SingleSceneItemQuery> {\n public constructor(private inverted: boolean = false) {}\n\n /**\n * Specifies that the operation should be performed on all items in the scene.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect all items in the scene\n * await scene.elements((op) => [op.items.where((q) => q.all()).deselect()]).execute();\n * ```\n */\n public all(): AllQuery {\n return new AllQuery();\n }\n\n /**\n * Specifies that the operation should be performed on all items that do not match any following queries.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items that are not selected\n * await scene.elements((op) => [op.items.where((q) => q.not().withSelected()).hide()]).execute();\n * ```\n */\n public not(): RootQuery {\n return new NotSceneItemQuery(!this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching any one of the provided IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid-1` ID and the `item-uuid-2` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemIds(['item-uuid-1', 'item-uuid-2'])).hide(),\n * ]).execute();\n * ```\n */\n public withItemIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'item-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching any one of the provided custom supplied IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-supplied-id-1` supplied ID\n * // and the `item-supplied-id-2` supplied ID\n * await scene.elements((op) => [\n * op\n * .items.where((q) => q.withItemIds(['item-supplied-id-1', 'item-supplied-id-2']))\n * .hide(),\n * ]).execute();\n * ```\n */\n public withSuppliedIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'supplied-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching the provided ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public withItemId(id: string): SingleSceneItemQuery {\n return new SingleSceneItemQuery(\n { type: 'item-id', value: id },\n this.inverted\n );\n }\n\n /**\n * Specifies that the operation should be performed on any item matching the provided custom supplied ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-supplied-id` supplied ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withSuppliedId('item-supplied-id')).hide(),\n * ]).execute();\n * ```\n */\n public withSuppliedId(id: string): SingleSceneItemQuery {\n return new SingleSceneItemQuery(\n { type: 'supplied-id', value: id },\n this.inverted\n );\n }\n\n /**\n * Specifies that the operation should be performed on a range within the `<vertex-scene-tree>` component.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items from the 2nd row to the 5th row of the scene-tree\n * await scene.elements((op) => [\n * op\n * .items.where((q) =>\n * q.withSceneTreeRange({\n * start: 2,\n * end: 5,\n * })\n * )\n * .hide(),\n * ]).execute();\n * ```\n */\n public withSceneTreeRange(range: SceneTreeRange): SceneTreeRangeQuery {\n return new SceneTreeRangeQuery(range, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that has a metadata value matching the\n * filter provided for any of the keys specified. Can optionally be set to perform an exactMatch,\n * which will require that the filter matches the value exactly.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items where the `PART_NAME_KEY` includes a value of `PartName`\n * await scene.elements((op) => [\n * op.items.where((q) => q.withMetadata('PartName', ['PART_NAME_KEY'])).hide(),\n * ]).execute();\n *\n * // Hide all items where the `PART_NAME_KEY` has exactly a value of `PartName`\n * await scene.elements((op) => [\n * op.items.where((q) => q.withMetadata('PartName', ['PART_NAME_KEY'], true)).hide(),\n * ]).execute();\n * ```\n */\n public withMetadata(\n filter: string,\n keys: string[],\n exactMatch: boolean,\n removeHiddenItems?: boolean\n ): MetadataQuery {\n return new MetadataQuery(\n filter,\n keys,\n exactMatch,\n this.inverted,\n removeHiddenItems\n );\n }\n\n /**\n * Specifies that the operation should be performed on any item that has been selected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items that are selected\n * await scene.elements((op) => [op.items.where((q) => q.withSelected()).hide()]).execute();\n * ```\n */\n public withSelected(): AllSelectedQuery {\n return new AllSelectedQuery(this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that is visible.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select all items that are visible\n * await scene.elements((op) => [op.items.where((q) => q.withVisible()).select()]).execute();\n * ```\n */\n public withVisible(): AllVisibleQuery {\n return new AllVisibleQuery(this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item present at the provided `point` in the image.\n * This query operates on the item found at that `point` similar to using `withItemId` in combination with\n * `raycaster.hitItems`, which can be useful if the additional metadata from the `raycaster.hitItems`\n * method is not needed to eliminate a network request.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select the item present at the [100, 100] coordinate of the image\n * await scene.elements((op) => [\n * op.items.where((q) => q.withPoint(Point.create(100, 100))).select(),\n * ]).execute();\n * ```\n */\n public withPoint(point: Point.Point): PointQuery {\n return new PointQuery(point, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on items within the specified `rectangle` boundary\n * within the Viewer. The `exclusive` flag here determines whether items that intersect with the `rectangle`,\n * but are not contained should be included in the result.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n\n * // Select all items within the specified 100x100 region of the image\n * // excluding any elements that are not fully contained by the region\n * await scene.elements((op) => [\n * op\n * .items.where((q) =>\n * q.withVolumeIntersection(\n * Rectangle.create(100, 100, 100, 100),\n * true\n * )\n * )\n * .hide(),\n * ]).execute();\n\n * // Select all items within the specified 100x100 region of the image\n * // including any elements that intersect with the region\n * await scene.elements((op) => [\n * op\n * .items.where((q) =>\n * q.withVolumeIntersection(\n * Rectangle.create(100, 100, 100, 100),\n * false\n * )\n * )\n * .hide(),\n * ]).execute();\n * ```\n */\n public withVolumeIntersection(\n rectangle: Rectangle.Rectangle,\n exclusive?: boolean\n ): VolumeIntersectionQuery {\n return new VolumeIntersectionQuery(rectangle, this.inverted, exclusive);\n }\n}\n\nexport class NotSceneItemQuery extends RootQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n}\n\nexport class PmiAnnotationRootQuery implements AnnotationQuery<SingleAnnotationQuery> {\n public constructor(private inverted: boolean = false) {}\n\n /**\n * Specifies that the operation should be performed on all PMI annotations in the scene.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect all PMI annotations in the scene\n * await scene.elements((op) => [op.annotations.where((q) => q.all()).deselect()]).execute();\n * ```\n */\n public all(): AllQuery {\n return new AllQuery();\n }\n\n /**\n * Specifies that the operation should be performed on all annotations that do not match any following queries.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all PMI annotations that are not selected\n * await scene.elements((op) => [op.annotations.where((q) => q.not().withSelected()).hide()]).execute();\n * ```\n */\n public not(): PmiAnnotationRootQuery {\n return new NotAnnotationQuery(!this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any annotation matching any one of the provided IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the annotation with the `item-uuid-1` ID and the `item-uuid-2` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationIds(['item-uuid-1', 'item-uuid-2'])).hide(),\n * ]).execute();\n * ```\n */\n public withAnnotationIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'annotation-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any annotation matching the provided ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('item-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public withAnnotationId(id: string): SingleAnnotationQuery {\n return new SingleAnnotationQuery(\n { type: 'annotation-id', value: id },\n this.inverted\n );\n }\n}\n\nexport class NotAnnotationQuery extends PmiAnnotationRootQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n}\n\nexport class AllQuery extends TerminalQuery {\n public constructor(inverted = false) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'all' };\n }\n}\n\nexport class SceneTreeRangeQuery extends TerminalQuery {\n public constructor(\n private readonly range: SceneTreeRange,\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): SceneTreeRangeQueryExpression {\n return {\n type: 'scene-tree-range',\n range: this.range,\n };\n }\n}\n\nexport class MetadataQuery extends TerminalQuery {\n public constructor(\n private filter: string,\n private keys: string[],\n private exactMatch: boolean,\n inverted: boolean,\n private removeHiddenItems?: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): MetadataQueryExpression {\n return {\n type: 'metadata',\n filter: this.filter,\n keys: this.keys,\n exactMatch: this.exactMatch,\n removeHiddenItems: this.removeHiddenItems,\n };\n }\n}\n\nexport class AllSelectedQuery extends TerminalQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): AllSelectedQueryExpression {\n return {\n type: 'all-selected',\n };\n }\n}\n\nexport class AllVisibleQuery extends TerminalQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): AllVisibleQueryExpression {\n return {\n type: 'all-visible',\n };\n }\n}\n\nexport class PointQuery extends TerminalQuery {\n public constructor(\n private point: Point.Point,\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): PointQueryExpression {\n return {\n type: 'point',\n point: this.point,\n };\n }\n}\n\nexport class VolumeIntersectionQuery extends TerminalQuery {\n public constructor(\n private rectangle: Rectangle.Rectangle,\n inverted: boolean,\n private exclusive?: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): VolumeIntersectionQueryExpression {\n return {\n type: 'volume-intersection',\n rectangle: this.rectangle,\n exclusive: !!this.exclusive,\n };\n }\n}\n\nexport class BulkQuery extends TerminalQuery {\n public constructor(\n private ids: string[],\n private type: 'item-id' | 'supplied-id' | 'annotation-id',\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return {\n type: 'or',\n expressions: this.ids.map((id) => {\n return {\n type: this.type,\n value: id,\n };\n }),\n };\n }\n}\n\nclass SingleSceneItemQuery extends TerminalQuery implements BooleanQuery {\n public constructor(\n private query: QueryExpression,\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { ...this.query };\n }\n\n public and(): AndSceneItemQuery {\n return new AndSceneItemQuery([this.query], this.inverted);\n }\n\n public or(): OrSceneItemQuery {\n return new OrSceneItemQuery([this.query], this.inverted);\n }\n}\n\nexport class OrSceneItemQuery\n extends TerminalQuery\n implements ItemQuery<OrSceneItemQuery>\n{\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'or', expressions: [...this.expressions] };\n }\n\n public withItemId(id: string): OrSceneItemQuery {\n return new OrSceneItemQuery(\n [...this.expressions, { type: 'item-id', value: id }],\n this.inverted\n );\n }\n\n public withSuppliedId(id: string): OrSceneItemQuery {\n return new OrSceneItemQuery(\n [...this.expressions, { type: 'supplied-id', value: id }],\n this.inverted\n );\n }\n\n public or(): this {\n return this;\n }\n}\n\nexport class AndSceneItemQuery\n extends TerminalQuery\n implements ItemQuery<AndSceneItemQuery>\n{\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'and', expressions: [...this.expressions] };\n }\n\n public withItemId(id: string): AndSceneItemQuery {\n return new AndSceneItemQuery(\n [...this.expressions, { type: 'item-id', value: id }],\n this.inverted\n );\n }\n\n public withSuppliedId(id: string): AndSceneItemQuery {\n return new AndSceneItemQuery(\n [...this.expressions, { type: 'supplied-id', value: id }],\n this.inverted\n );\n }\n\n public and(): this {\n return this;\n }\n}\n\nclass SingleAnnotationQuery\n extends TerminalQuery\n implements BooleanAnnotationQuery\n{\n public constructor(\n private query: QueryExpression,\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { ...this.query };\n }\n\n public and(): AndAnnotationQuery {\n return new AndAnnotationQuery([this.query], this.inverted);\n }\n\n public or(): OrAnnotationQuery {\n return new OrAnnotationQuery([this.query], this.inverted);\n }\n}\n\nexport class OrAnnotationQuery\n extends TerminalQuery\n implements AnnotationQuery<OrAnnotationQuery>\n{\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'or', expressions: [...this.expressions] };\n }\n\n public withAnnotationId(id: string): OrAnnotationQuery {\n return new OrAnnotationQuery(\n [...this.expressions, { type: 'annotation-id', value: id }],\n this.inverted\n );\n }\n\n public or(): this {\n return this;\n }\n}\n\nexport class AndAnnotationQuery\n extends TerminalQuery\n implements AnnotationQuery<AndAnnotationQuery>\n{\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'and', expressions: [...this.expressions] };\n }\n\n public withAnnotationId(id: string): AndAnnotationQuery {\n return new AndAnnotationQuery(\n [...this.expressions, { type: 'annotation-id', value: id }],\n this.inverted\n );\n }\n\n public and(): this {\n return this;\n }\n}\n\nexport class SceneElementQueryExecutor {\n public get items(): SceneItemQueryExecutor {\n return new SceneItemQueryExecutor();\n }\n\n public get annotations(): PmiAnnotationsQueryExecutor {\n return new PmiAnnotationsQueryExecutor();\n }\n}\n\nexport class PmiAnnotationsQueryExecutor {\n public where(\n query: (q: PmiAnnotationRootQuery) => TerminalQuery\n ): PmiAnnotationOperationsBuilder {\n const expression: QueryExpression = query(\n new PmiAnnotationRootQuery()\n ).build();\n return new PmiAnnotationOperationsBuilder(expression);\n }\n}\n\nexport class SceneItemQueryExecutor {\n public where(\n query: (q: RootQuery) => TerminalQuery\n ): SceneItemOperationsBuilder {\n const expression: QueryExpression = query(new RootQuery()).build();\n\n return new SceneItemOperationsBuilder(expression);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/queries.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,SAAS,CAAC;AAqFjB;;;GAGG;AACH,MAAe,aAAa;IAE1B,YAAmB,QAAiB;QAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEM,KAAK;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAAE;aACrC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACvC,CAAC;IACH,CAAC;CAGF;AAsBD,MAAM,OAAO,SAAS;IACpB,YAA2B,WAAoB,KAAK;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAExD;;;;;;;;;;;OAWG;IACI,GAAG;QACR,OAAO,IAAI,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;OAWG;IACI,GAAG;QACR,OAAO,IAAI,iBAAiB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,WAAW,CAAC,GAAa;QAC9B,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,eAAe,CAAC,GAAa;QAClC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,UAAU,CAAC,EAAU;QAC1B,OAAO,IAAI,oBAAoB,CAC7B,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,EAC9B,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,cAAc,CAAC,EAAU;QAC9B,OAAO,IAAI,oBAAoB,CAC7B,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,EAClC,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,kBAAkB,CAAC,KAAqB;QAC7C,OAAO,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACI,YAAY,CACjB,MAAc,EACd,IAAc,EACd,UAAmB,EACnB,iBAA2B;QAE3B,OAAO,IAAI,aAAa,CACtB,MAAM,EACN,IAAI,EACJ,UAAU,EACV,IAAI,CAAC,QAAQ,EACb,iBAAiB,CAClB,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACI,YAAY;QACjB,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;OAWG;IACI,WAAW;QAChB,OAAO,IAAI,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACI,SAAS,CAAC,KAAkB;QACjC,OAAO,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACI,sBAAsB,CAC3B,SAA8B,EAC9B,SAAmB;QAEnB,OAAO,IAAI,uBAAuB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1E,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C,YAAmB,QAAiB;QAClC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IACjC,YAA2B,WAAoB,KAAK;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAExD;;;;;;;;;;;OAWG;IACI,GAAG;QACR,OAAO,IAAI,QAAQ,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;OAWG;IACI,GAAG;QACR,OAAO,IAAI,kBAAkB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,iBAAiB,CAAC,GAAa;QACpC,OAAO,IAAI,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,gBAAgB,CAAC,EAAU;QAChC,OAAO,IAAI,qBAAqB,CAC9B,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,EACpC,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,kBAAmB,SAAQ,sBAAsB;IAC5D,YAAmB,QAAiB;QAClC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;CACF;AAED,MAAM,OAAO,QAAS,SAAQ,aAAa;IACzC,YAAmB,QAAQ,GAAG,KAAK;QACjC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;IAEM,sBAAsB;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IACpD,YACmB,KAAqB,EACtC,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHC,UAAK,GAAL,KAAK,CAAgB;IAIxC,CAAC;IAEM,sBAAsB;QAC3B,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9C,YACU,MAAc,EACd,IAAc,EACd,UAAmB,EAC3B,QAAiB,EACT,iBAA2B;QAEnC,KAAK,CAAC,QAAQ,CAAC,CAAC;QANR,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAU;QACd,eAAU,GAAV,UAAU,CAAS;QAEnB,sBAAiB,GAAjB,iBAAiB,CAAU;IAGrC,CAAC;IAEM,sBAAsB;QAC3B,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;SAC1C,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,aAAa;IACjD,YAAmB,QAAiB;QAClC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;IAEM,sBAAsB;QAC3B,OAAO;YACL,IAAI,EAAE,cAAc;SACrB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAChD,YAAmB,QAAiB;QAClC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClB,CAAC;IAEM,sBAAsB;QAC3B,OAAO;YACL,IAAI,EAAE,aAAa;SACpB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,UAAW,SAAQ,aAAa;IAC3C,YACU,KAAkB,EAC1B,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,UAAK,GAAL,KAAK,CAAa;IAI5B,CAAC;IAEM,sBAAsB;QAC3B,OAAO;YACL,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,aAAa;IACxD,YACU,SAA8B,EACtC,QAAiB,EACT,SAAmB;QAE3B,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJR,cAAS,GAAT,SAAS,CAAqB;QAE9B,cAAS,GAAT,SAAS,CAAU;IAG7B,CAAC;IAEM,sBAAsB;QAC3B,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS;SAC5B,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,aAAa;IAC1C,YACU,GAAa,EACb,IAAiD,EACzD,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAJR,QAAG,GAAH,GAAG,CAAU;QACb,SAAI,GAAJ,IAAI,CAA6C;IAI3D,CAAC;IAEM,sBAAsB;QAC3B,OAAO;YACL,IAAI,EAAE,IAAI;YACV,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC/B,OAAO;oBACL,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,EAAE;iBACV,CAAC;YACJ,CAAC,CAAC;SACH,CAAC;IACJ,CAAC;CACF;AAED,MAAM,oBAAqB,SAAQ,aAAa;IAC9C,YACU,KAAsB,EAC9B,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,UAAK,GAAL,KAAK,CAAiB;IAIhC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;CACF;AAED,MAAM,OAAO,gBACX,SAAQ,aAAa;IAGrB,YACU,WAA8B,EACtC,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,gBAAW,GAAX,WAAW,CAAmB;IAIxC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5D,CAAC;IAEM,UAAU,CAAC,EAAU;QAC1B,OAAO,IAAI,gBAAgB,CACzB,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EACrD,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAEM,cAAc,CAAC,EAAU;QAC9B,OAAO,IAAI,gBAAgB,CACzB,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EACzD,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAO,iBACX,SAAQ,aAAa;IAGrB,YACU,WAA8B,EACtC,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,gBAAW,GAAX,WAAW,CAAmB;IAIxC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IAC7D,CAAC;IAEM,UAAU,CAAC,EAAU;QAC1B,OAAO,IAAI,iBAAiB,CAC1B,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EACrD,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAEM,cAAc,CAAC,EAAU;QAC9B,OAAO,IAAI,iBAAiB,CAC1B,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EACzD,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,qBACJ,SAAQ,aAAa;IAGrB,YACU,KAAsB,EAC9B,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,UAAK,GAAL,KAAK,CAAiB;IAIhC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,iBAAiB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5D,CAAC;CACF;AAED,MAAM,OAAO,iBACX,SAAQ,aAAa;IAGrB,YACU,WAA8B,EACtC,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,gBAAW,GAAX,WAAW,CAAmB;IAIxC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5D,CAAC;IAEM,gBAAgB,CAAC,EAAU;QAChC,OAAO,IAAI,iBAAiB,CAC1B,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAC3D,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAEM,EAAE;QACP,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAO,kBACX,SAAQ,aAAa;IAGrB,YACU,WAA8B,EACtC,QAAiB;QAEjB,KAAK,CAAC,QAAQ,CAAC,CAAC;QAHR,gBAAW,GAAX,WAAW,CAAmB;IAIxC,CAAC;IAEM,sBAAsB;QAC3B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;IAC7D,CAAC;IAEM,gBAAgB,CAAC,EAAU;QAChC,OAAO,IAAI,kBAAkB,CAC3B,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAC3D,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IAEM,GAAG;QACR,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAED,MAAM,OAAO,yBAAyB;IACpC,IAAW,KAAK;QACd,OAAO,IAAI,sBAAsB,EAAE,CAAC;IACtC,CAAC;IAED,IAAW,WAAW;QACpB,OAAO,IAAI,2BAA2B,EAAE,CAAC;IAC3C,CAAC;CACF;AAED,MAAM,OAAO,2BAA2B;IAC/B,KAAK,CACV,KAAmD;QAEnD,MAAM,UAAU,GAAoB,KAAK,CACvC,IAAI,sBAAsB,EAAE,CAC7B,CAAC,KAAK,EAAE,CAAC;QACV,OAAO,IAAI,8BAA8B,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,OAAO,sBAAsB;IAC1B,KAAK,CACV,KAAsC;QAEtC,MAAM,UAAU,GAAoB,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QAEnE,OAAO,IAAI,0BAA0B,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;CACF","sourcesContent":["import { Point, Rectangle } from '@vertexvis/geometry';\n\nimport {\n PmiAnnotationOperationsBuilder,\n SceneItemOperationsBuilder,\n} from './scene';\n\ninterface AllQueryExpression {\n type: 'all';\n}\n\nexport interface SceneTreeRange {\n start: number;\n end: number;\n}\n\nexport interface AnnotationQueryExpression {\n type: 'annotation-id';\n value: string;\n}\n\ninterface ItemQueryExpression {\n type: 'item-id' | 'supplied-id';\n value: string;\n}\n\nexport interface AndExpression {\n type: 'and';\n expressions: QueryExpression[];\n}\n\nexport interface OrExpression {\n type: 'or';\n expressions: QueryExpression[];\n}\n\ninterface SceneTreeRangeQueryExpression {\n type: 'scene-tree-range';\n range: SceneTreeRange;\n}\n\ninterface NotQueryExpression {\n type: 'not';\n query: QueryExpression;\n}\n\ninterface MetadataQueryExpression {\n type: 'metadata';\n filter: string;\n keys: string[];\n exactMatch: boolean;\n removeHiddenItems?: boolean;\n}\n\ninterface AllSelectedQueryExpression {\n type: 'all-selected';\n}\n\ninterface AllVisibleQueryExpression {\n type: 'all-visible';\n}\n\ninterface PointQueryExpression {\n type: 'point';\n point: Point.Point;\n}\n\ninterface VolumeIntersectionQueryExpression {\n type: 'volume-intersection';\n rectangle: Rectangle.Rectangle;\n exclusive: boolean;\n}\n\n/**\n * Represents the sum of all possible types of expressions.\n */\nexport type QueryExpression =\n | AllQueryExpression\n | AnnotationQueryExpression\n | ItemQueryExpression\n | AndExpression\n | OrExpression\n | SceneTreeRangeQueryExpression\n | PointQueryExpression\n | VolumeIntersectionQueryExpression\n | MetadataQueryExpression\n | AllSelectedQueryExpression\n | AllVisibleQueryExpression\n | NotQueryExpression;\n\n/**\n * An interface that represents a query is \"complete\" and can be turned into an\n * expression.\n */\nabstract class TerminalQuery {\n protected inverted: boolean;\n public constructor(inverted: boolean) {\n this.inverted = inverted;\n }\n\n public build(): QueryExpression {\n if (this.inverted) {\n return {\n type: 'not',\n query: this.queryExpressionBuilder(),\n };\n } else {\n return this.queryExpressionBuilder();\n }\n }\n\n public abstract queryExpressionBuilder(): QueryExpression;\n}\n\ninterface ItemQuery<N> {\n withItemId(id: string): N;\n\n withSuppliedId(id: string): N;\n}\n\ninterface AnnotationQuery<N> {\n withAnnotationId(id: string): N;\n}\n\ninterface BooleanQuery {\n and(): AndSceneItemQuery;\n or(): OrSceneItemQuery;\n}\n\ninterface BooleanAnnotationQuery {\n and(): AndAnnotationQuery;\n or(): OrAnnotationQuery;\n}\n\nexport class RootQuery implements ItemQuery<SingleSceneItemQuery> {\n public constructor(private inverted: boolean = false) {}\n\n /**\n * Specifies that the operation should be performed on all items in the scene.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect all items in the scene\n * await scene.elements((op) => [op.items.where((q) => q.all()).deselect()]).execute();\n * ```\n */\n public all(): AllQuery {\n return new AllQuery();\n }\n\n /**\n * Specifies that the operation should be performed on all items that do not match any following queries.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items that are not selected\n * await scene.elements((op) => [op.items.where((q) => q.not().withSelected()).hide()]).execute();\n * ```\n */\n public not(): RootQuery {\n return new NotSceneItemQuery(!this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching any one of the provided IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid-1` ID and the `item-uuid-2` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemIds(['item-uuid-1', 'item-uuid-2'])).hide(),\n * ]).execute();\n * ```\n */\n public withItemIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'item-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching any one of the provided custom supplied IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-supplied-id-1` supplied ID\n * // and the `item-supplied-id-2` supplied ID\n * await scene.elements((op) => [\n * op\n * .items.where((q) => q.withItemIds(['item-supplied-id-1', 'item-supplied-id-2']))\n * .hide(),\n * ]).execute();\n * ```\n */\n public withSuppliedIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'supplied-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching the provided ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public withItemId(id: string): SingleSceneItemQuery {\n return new SingleSceneItemQuery(\n { type: 'item-id', value: id },\n this.inverted,\n );\n }\n\n /**\n * Specifies that the operation should be performed on any item matching the provided custom supplied ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-supplied-id` supplied ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withSuppliedId('item-supplied-id')).hide(),\n * ]).execute();\n * ```\n */\n public withSuppliedId(id: string): SingleSceneItemQuery {\n return new SingleSceneItemQuery(\n { type: 'supplied-id', value: id },\n this.inverted,\n );\n }\n\n /**\n * Specifies that the operation should be performed on a range within the `<vertex-scene-tree>` component.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items from the 2nd row to the 5th row of the scene-tree\n * await scene.elements((op) => [\n * op\n * .items.where((q) =>\n * q.withSceneTreeRange({\n * start: 2,\n * end: 5,\n * })\n * )\n * .hide(),\n * ]).execute();\n * ```\n */\n public withSceneTreeRange(range: SceneTreeRange): SceneTreeRangeQuery {\n return new SceneTreeRangeQuery(range, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that has a metadata value matching the\n * filter provided for any of the keys specified. Can optionally be set to perform an exactMatch,\n * which will require that the filter matches the value exactly.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items where the `PART_NAME_KEY` includes a value of `PartName`\n * await scene.elements((op) => [\n * op.items.where((q) => q.withMetadata('PartName', ['PART_NAME_KEY'])).hide(),\n * ]).execute();\n *\n * // Hide all items where the `PART_NAME_KEY` has exactly a value of `PartName`\n * await scene.elements((op) => [\n * op.items.where((q) => q.withMetadata('PartName', ['PART_NAME_KEY'], true)).hide(),\n * ]).execute();\n * ```\n */\n public withMetadata(\n filter: string,\n keys: string[],\n exactMatch: boolean,\n removeHiddenItems?: boolean,\n ): MetadataQuery {\n return new MetadataQuery(\n filter,\n keys,\n exactMatch,\n this.inverted,\n removeHiddenItems,\n );\n }\n\n /**\n * Specifies that the operation should be performed on any item that has been selected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items that are selected\n * await scene.elements((op) => [op.items.where((q) => q.withSelected()).hide()]).execute();\n * ```\n */\n public withSelected(): AllSelectedQuery {\n return new AllSelectedQuery(this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that is visible.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select all items that are visible\n * await scene.elements((op) => [op.items.where((q) => q.withVisible()).select()]).execute();\n * ```\n */\n public withVisible(): AllVisibleQuery {\n return new AllVisibleQuery(this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item present at the provided `point` in the image.\n * This query operates on the item found at that `point` similar to using `withItemId` in combination with\n * `raycaster.hitItems`, which can be useful if the additional metadata from the `raycaster.hitItems`\n * method is not needed to eliminate a network request.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select the item present at the [100, 100] coordinate of the image\n * await scene.elements((op) => [\n * op.items.where((q) => q.withPoint(Point.create(100, 100))).select(),\n * ]).execute();\n * ```\n */\n public withPoint(point: Point.Point): PointQuery {\n return new PointQuery(point, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on items within the specified `rectangle` boundary\n * within the Viewer. The `exclusive` flag here determines whether items that intersect with the `rectangle`,\n * but are not contained should be included in the result.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n\n * // Select all items within the specified 100x100 region of the image\n * // excluding any elements that are not fully contained by the region\n * await scene.elements((op) => [\n * op\n * .items.where((q) =>\n * q.withVolumeIntersection(\n * Rectangle.create(100, 100, 100, 100),\n * true\n * )\n * )\n * .hide(),\n * ]).execute();\n\n * // Select all items within the specified 100x100 region of the image\n * // including any elements that intersect with the region\n * await scene.elements((op) => [\n * op\n * .items.where((q) =>\n * q.withVolumeIntersection(\n * Rectangle.create(100, 100, 100, 100),\n * false\n * )\n * )\n * .hide(),\n * ]).execute();\n * ```\n */\n public withVolumeIntersection(\n rectangle: Rectangle.Rectangle,\n exclusive?: boolean,\n ): VolumeIntersectionQuery {\n return new VolumeIntersectionQuery(rectangle, this.inverted, exclusive);\n }\n}\n\nexport class NotSceneItemQuery extends RootQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n}\n\nexport class PmiAnnotationRootQuery implements AnnotationQuery<SingleAnnotationQuery> {\n public constructor(private inverted: boolean = false) {}\n\n /**\n * Specifies that the operation should be performed on all PMI annotations in the scene.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect all PMI annotations in the scene\n * await scene.elements((op) => [op.annotations.where((q) => q.all()).deselect()]).execute();\n * ```\n */\n public all(): AllQuery {\n return new AllQuery();\n }\n\n /**\n * Specifies that the operation should be performed on all annotations that do not match any following queries.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all PMI annotations that are not selected\n * await scene.elements((op) => [op.annotations.where((q) => q.not().withSelected()).hide()]).execute();\n * ```\n */\n public not(): PmiAnnotationRootQuery {\n return new NotAnnotationQuery(!this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any annotation matching any one of the provided IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the annotation with the `item-uuid-1` ID and the `item-uuid-2` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationIds(['item-uuid-1', 'item-uuid-2'])).hide(),\n * ]).execute();\n * ```\n */\n public withAnnotationIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'annotation-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any annotation matching the provided ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('item-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public withAnnotationId(id: string): SingleAnnotationQuery {\n return new SingleAnnotationQuery(\n { type: 'annotation-id', value: id },\n this.inverted,\n );\n }\n}\n\nexport class NotAnnotationQuery extends PmiAnnotationRootQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n}\n\nexport class AllQuery extends TerminalQuery {\n public constructor(inverted = false) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'all' };\n }\n}\n\nexport class SceneTreeRangeQuery extends TerminalQuery {\n public constructor(\n private readonly range: SceneTreeRange,\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): SceneTreeRangeQueryExpression {\n return {\n type: 'scene-tree-range',\n range: this.range,\n };\n }\n}\n\nexport class MetadataQuery extends TerminalQuery {\n public constructor(\n private filter: string,\n private keys: string[],\n private exactMatch: boolean,\n inverted: boolean,\n private removeHiddenItems?: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): MetadataQueryExpression {\n return {\n type: 'metadata',\n filter: this.filter,\n keys: this.keys,\n exactMatch: this.exactMatch,\n removeHiddenItems: this.removeHiddenItems,\n };\n }\n}\n\nexport class AllSelectedQuery extends TerminalQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): AllSelectedQueryExpression {\n return {\n type: 'all-selected',\n };\n }\n}\n\nexport class AllVisibleQuery extends TerminalQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): AllVisibleQueryExpression {\n return {\n type: 'all-visible',\n };\n }\n}\n\nexport class PointQuery extends TerminalQuery {\n public constructor(\n private point: Point.Point,\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): PointQueryExpression {\n return {\n type: 'point',\n point: this.point,\n };\n }\n}\n\nexport class VolumeIntersectionQuery extends TerminalQuery {\n public constructor(\n private rectangle: Rectangle.Rectangle,\n inverted: boolean,\n private exclusive?: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): VolumeIntersectionQueryExpression {\n return {\n type: 'volume-intersection',\n rectangle: this.rectangle,\n exclusive: !!this.exclusive,\n };\n }\n}\n\nexport class BulkQuery extends TerminalQuery {\n public constructor(\n private ids: string[],\n private type: 'item-id' | 'supplied-id' | 'annotation-id',\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return {\n type: 'or',\n expressions: this.ids.map((id) => {\n return {\n type: this.type,\n value: id,\n };\n }),\n };\n }\n}\n\nclass SingleSceneItemQuery extends TerminalQuery implements BooleanQuery {\n public constructor(\n private query: QueryExpression,\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { ...this.query };\n }\n\n public and(): AndSceneItemQuery {\n return new AndSceneItemQuery([this.query], this.inverted);\n }\n\n public or(): OrSceneItemQuery {\n return new OrSceneItemQuery([this.query], this.inverted);\n }\n}\n\nexport class OrSceneItemQuery\n extends TerminalQuery\n implements ItemQuery<OrSceneItemQuery>\n{\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'or', expressions: [...this.expressions] };\n }\n\n public withItemId(id: string): OrSceneItemQuery {\n return new OrSceneItemQuery(\n [...this.expressions, { type: 'item-id', value: id }],\n this.inverted,\n );\n }\n\n public withSuppliedId(id: string): OrSceneItemQuery {\n return new OrSceneItemQuery(\n [...this.expressions, { type: 'supplied-id', value: id }],\n this.inverted,\n );\n }\n\n public or(): this {\n return this;\n }\n}\n\nexport class AndSceneItemQuery\n extends TerminalQuery\n implements ItemQuery<AndSceneItemQuery>\n{\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'and', expressions: [...this.expressions] };\n }\n\n public withItemId(id: string): AndSceneItemQuery {\n return new AndSceneItemQuery(\n [...this.expressions, { type: 'item-id', value: id }],\n this.inverted,\n );\n }\n\n public withSuppliedId(id: string): AndSceneItemQuery {\n return new AndSceneItemQuery(\n [...this.expressions, { type: 'supplied-id', value: id }],\n this.inverted,\n );\n }\n\n public and(): this {\n return this;\n }\n}\n\nclass SingleAnnotationQuery\n extends TerminalQuery\n implements BooleanAnnotationQuery\n{\n public constructor(\n private query: QueryExpression,\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { ...this.query };\n }\n\n public and(): AndAnnotationQuery {\n return new AndAnnotationQuery([this.query], this.inverted);\n }\n\n public or(): OrAnnotationQuery {\n return new OrAnnotationQuery([this.query], this.inverted);\n }\n}\n\nexport class OrAnnotationQuery\n extends TerminalQuery\n implements AnnotationQuery<OrAnnotationQuery>\n{\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'or', expressions: [...this.expressions] };\n }\n\n public withAnnotationId(id: string): OrAnnotationQuery {\n return new OrAnnotationQuery(\n [...this.expressions, { type: 'annotation-id', value: id }],\n this.inverted,\n );\n }\n\n public or(): this {\n return this;\n }\n}\n\nexport class AndAnnotationQuery\n extends TerminalQuery\n implements AnnotationQuery<AndAnnotationQuery>\n{\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean,\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'and', expressions: [...this.expressions] };\n }\n\n public withAnnotationId(id: string): AndAnnotationQuery {\n return new AndAnnotationQuery(\n [...this.expressions, { type: 'annotation-id', value: id }],\n this.inverted,\n );\n }\n\n public and(): this {\n return this;\n }\n}\n\nexport class SceneElementQueryExecutor {\n public get items(): SceneItemQueryExecutor {\n return new SceneItemQueryExecutor();\n }\n\n public get annotations(): PmiAnnotationsQueryExecutor {\n return new PmiAnnotationsQueryExecutor();\n }\n}\n\nexport class PmiAnnotationsQueryExecutor {\n public where(\n query: (q: PmiAnnotationRootQuery) => TerminalQuery,\n ): PmiAnnotationOperationsBuilder {\n const expression: QueryExpression = query(\n new PmiAnnotationRootQuery(),\n ).build();\n return new PmiAnnotationOperationsBuilder(expression);\n }\n}\n\nexport class SceneItemQueryExecutor {\n public where(\n query: (q: RootQuery) => TerminalQuery,\n ): SceneItemOperationsBuilder {\n const expression: QueryExpression = query(new RootQuery()).build();\n\n return new SceneItemOperationsBuilder(expression);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"raycaster.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/raycaster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAmB5C;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,YACU,MAAiB,EACjB,kBAAsC;QADtC,WAAM,GAAN,MAAM,CAAW;QACjB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAC7C,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACI,KAAK,CAAC,QAAQ,CACnB,KAAkB,EAClB,OAA0B;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CACpC;YACE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,KAAI,CAAC,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,KAAI,CAAC,CAAC;YACvD,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe;SAC1C,EACD,IAAI,CACL,CAAC;QACF,OAAO,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;IACnC,CAAC;CACF","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Point } from '@vertexvis/geometry';\nimport { StreamApi } from '@vertexvis/stream-api';\n\nimport { ImageScaleProvider } from './scene';\n\n/**\n * Optional raycaster options available on a hit request.\n */\nexport interface RaycasterOptions {\n includeMetadata: boolean;\n}\n\nexport interface RaycasterLike {\n hitItems(\n point: Point.Point,\n options?: RaycasterOptions
|
|
1
|
+
{"version":3,"file":"raycaster.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/raycaster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAmB5C;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,YACU,MAAiB,EACjB,kBAAsC;QADtC,WAAM,GAAN,MAAM,CAAW;QACjB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAC7C,CAAC;IAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACI,KAAK,CAAC,QAAQ,CACnB,KAAkB,EAClB,OAA0B;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CACpC;YACE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,KAAI,CAAC,EAAE,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,CAAC,KAAI,CAAC,CAAC;YACvD,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,eAAe;SAC1C,EACD,IAAI,CACL,CAAC;QACF,OAAO,GAAG,CAAC,QAAQ,IAAI,SAAS,CAAC;IACnC,CAAC;CACF","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Point } from '@vertexvis/geometry';\nimport { StreamApi } from '@vertexvis/stream-api';\n\nimport { ImageScaleProvider } from './scene';\n\n/**\n * Optional raycaster options available on a hit request.\n */\nexport interface RaycasterOptions {\n includeMetadata: boolean;\n}\n\nexport interface RaycasterLike {\n hitItems(\n point: Point.Point,\n options?: RaycasterOptions,\n ): Promise<vertexvis.protobuf.stream.IHitItemsResult | undefined>;\n}\n\n/**\n * The `Raycaster` class is here.\n */\nexport class Raycaster implements RaycasterLike {\n public constructor(\n private stream: StreamApi,\n private imageScaleProvider: ImageScaleProvider,\n ) {}\n\n /**\n * Performs request on the stream to find items that intersect\n * the given point.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector(\"vertex-viewer\");\n *\n * viewer.addEventListener(\"tap\", async (event) => {\n * const scene = await viewer.scene();\n * const raycaster = scene.raycaster();\n *\n * // Query the scene for the item at the position of the `tap` event\n * const [hit] = await raycaster.hitItems(event.detail.position);\n *\n * if (hit != null) {\n * // If there was an item present at the position, select it\n * await scene.elements((op) =>\n * op.items.where((q) => q.withItemId(hit.itemId.hex)).select()\n * );\n * }\n * });\n * ```\n *\n * @see {@link Scene.items} for more information on the operations that\n * can be performed on a hit result.\n *\n * @param point The point to cast from looking for intersections.\n * @param options Optional set of options for the request @see {@link RaycasterOptions}\n * for available options.\n */\n public async hitItems(\n point: Point.Point,\n options?: RaycasterOptions,\n ): Promise<vertexvis.protobuf.stream.IHitItemsResult | undefined> {\n const scale = this.imageScaleProvider();\n const res = await this.stream.hitItems(\n {\n point: Point.scale(point, scale?.x || 1, scale?.y || 1),\n includeMetadata: options?.includeMetadata,\n },\n true,\n );\n return res.hitItems || undefined;\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/scene.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { BoundingBox, Dimensions, Point } from '@vertexvis/geometry';\nimport { StreamApi } from '@vertexvis/stream-api';\nimport { UUID } from '@vertexvis/utils';\n\nimport { CameraType } from '../../interfaces';\nimport { InvalidArgumentError, InvalidCameraError } from '../errors';\nimport { CameraTypeEncoder, FrameDecoder } from '../mappers';\nimport { SceneViewStateIdentifier } from '../types';\nimport { Frame } from '../types/frame';\nimport {\n Camera,\n CameraRenderOptions,\n OrthographicCamera,\n PerspectiveCamera,\n} from '.';\nimport { ColorMaterial, fromHex } from './colorMaterial';\nimport { CrossSectioner } from './crossSectioner';\nimport {\n buildSceneElementOperationOnAnnotation,\n buildSceneElementOperationOnItem,\n} from './mapper';\nimport {\n ItemOperation,\n ItemOperationBuilder,\n PmiAnnotationOperation,\n PmiAnnotationOperationBuilder,\n PmiAnnotationOperations,\n RepresentationId,\n SceneItemOperations,\n} from './operations';\nimport {\n QueryExpression,\n SceneElementQueryExecutor,\n SceneItemQueryExecutor,\n} from './queries';\nimport { Raycaster } from './raycaster';\nimport { SceneOperationExecuteResult } from './sceneOperationExecuteResult';\nimport { SceneViewStateLoader } from './sceneViewStateLoader';\n\nexport interface SceneExecutionOptions {\n suppliedCorrelationId?: string;\n}\n\nexport interface SceneElementsExecutionOptions extends SceneExecutionOptions {\n /**\n * Skips the wait for a frame correlated to this alteration before\n * completing the Promise returned by the `execute()` method.\n */\n skipAwaitCorrelatedFrame?: boolean;\n}\n\nexport interface SceneItemsExecutionOptions extends SceneExecutionOptions {\n /**\n * Waits for the frame correlated to this alteration before\n * completing the Promise returned by the `execute()` method.\n */\n awaitCorrelatedFrame?: boolean;\n}\n\nexport interface ApplySceneViewStateOptions\n extends SceneElementsExecutionOptions, CameraRenderOptions {\n waitForAnimation?: boolean;\n cameraTypeOverride?: CameraType;\n}\n\nexport interface ResetViewOptions {\n includeCamera?: boolean;\n cameraTypeOverride?: CameraType;\n suppliedCorrelationId?: string;\n}\n\nexport interface SceneElementOperationsBuilder {\n isItemBuilder(): this is SceneItemOperationsBuilder;\n isAnnotationBuilder(): this is PmiAnnotationOperationsBuilder;\n}\n\n/**\n * A class that is responsible for building operations on scene items for a specific scene.\n * This executor requires a query, and expects `execute()` to be invoked in\n * order for the changes to take effect.\n */\nexport class SceneItemOperationsBuilder\n implements\n SceneItemOperations<SceneItemOperationsBuilder>,\n SceneElementOperationsBuilder\n{\n private builder: ItemOperationBuilder;\n\n public constructor(\n private query: QueryExpression,\n givenBuilder?: ItemOperationBuilder\n ) {\n this.builder = givenBuilder ?? new ItemOperationBuilder();\n }\n\n public isItemBuilder(): this is SceneItemOperationsBuilder {\n return true;\n }\n\n public isAnnotationBuilder(): this is PmiAnnotationOperationsBuilder {\n return false;\n }\n\n /**\n * Specifies that the scene items matching the query should have their default\n * material overridden to match the specified material.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Override the material for the item with the `item-uuid` ID to\n * // be red with an opacity of 0.5.\n * await scene.elements((op) => [\n * op\n * .items.where((q) => q.withItemId('item-uuid'))\n * .materialOverride(ColorMaterial.create(255, 0, 0, 0.5)),\n * ]);\n *\n * // Override the material for the item with the `item-uuid` ID to\n * // be red with an opacity of 1.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).materialOverride('#ff0000'),\n * ]).execute();\n * ```\n */\n public materialOverride(\n color: ColorMaterial | string\n ): SceneItemOperationsBuilder {\n if (typeof color === 'string') {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.materialOverride(fromHex(color))\n );\n } else {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.materialOverride(color)\n );\n }\n }\n\n /**\n * Specifies that the scene items matching the query should be hidden.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public hide(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(this.query, this.builder.hide());\n }\n\n /**\n * Specifies that the scene items matching the query should be shown.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Show the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).show(),\n * ]).execute();\n * ```\n */\n public show(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(this.query, this.builder.show());\n }\n\n /**\n * Specifies that the scene items matching the query should be selected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).select(),\n * ]).execute();\n * ```\n */\n public select(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(this.query, this.builder.select());\n }\n\n /**\n * Specifies that the scene items matching the query should be deselected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).deselect(),\n * ]).execute();\n * ```\n */\n public deselect(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(this.query, this.builder.deselect());\n }\n\n /**\n * Specifies that the scene items matching the query should have any overridden\n * material removed.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Clear the overridden material on the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearMaterialOverrides(),\n * ]);\n * ```\n */\n public clearMaterialOverrides(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearMaterialOverrides()\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their\n * transformation matrix overridden to match the specified transformation\n * matrix.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Override the transformation matrix for the item with the `item-uuid` ID to\n * // move the element along the x-axis\n * await scene.elements((op) => [\n * op\n * .items.where((q) => q.withItemId('item-uuid'))\n * .transform(Matrix4.makeTranslation(Vector3.create(100, 0, 0))),\n * ]);\n * ```\n */\n public transform(\n matrix: vertexvis.protobuf.core.IMatrix4x4f | number[]\n ): SceneItemOperationsBuilder {\n if (Array.isArray(matrix)) {\n if (matrix.length !== 16) {\n throw new InvalidArgumentError(\n 'Matrix provided must contain exactly 16 values (4x4).'\n );\n }\n\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.transform({\n r0: {\n x: matrix[0],\n y: matrix[1],\n z: matrix[2],\n w: matrix[3],\n },\n r1: {\n x: matrix[4],\n y: matrix[5],\n z: matrix[6],\n w: matrix[7],\n },\n r2: {\n x: matrix[8],\n y: matrix[9],\n z: matrix[10],\n w: matrix[11],\n },\n r3: {\n x: matrix[12],\n y: matrix[13],\n z: matrix[14],\n w: matrix[15],\n },\n })\n );\n } else {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.transform(matrix)\n );\n }\n }\n\n /**\n * Specifies that the scene items matching the query should have their overridden\n * transformation matrix removed. The `cascade` flag determines whether\n * children of the scene items matching the query should also have their overridden\n * transformation matrix removed, and defaults to `true`.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Clear the overridden the transformation matrix for the item with the `item-uuid` ID\n * // and do not cascade to preserve transformations on children\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearTransforms(false),\n * ]);\n *\n * // Clear the overridden the transformation matrix for the item with the `item-uuid` ID\n * // and cascade to clear overridden transformations on children\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearTransforms(true),\n * ]);\n * ```\n */\n public clearTransforms(cascade = true): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearTransforms(cascade)\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their phantom state\n * overridden to match the specified `phantomState` flag. If the\n * `phantomState` flag is not provided, it will default to `true`.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Mark the item with the `item-uuid` ID as phantom\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).setPhantom(true),\n * ]);\n *\n * // Unmark the item with the `item-uuid` ID as phantom\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).setPhantom(false),\n * ]);\n * ```\n */\n public setPhantom(phantomState?: boolean): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.setPhantom(phantomState)\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their overridden\n * phantom state removed.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Clear the overridden phantom state of the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearPhantom(),\n * ]);\n * ```\n */\n public clearPhantom(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearPhantom()\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their end item\n * state overridden to match the specified `endItemState` flag. If the\n * `endItemState` flag is not provided, it will default to `true`.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Mark the item with the `item-uuid` ID as an end item\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).setEndItem(true),\n * ]);\n *\n * // Unmark the item with the `item-uuid` ID as an end item\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).setEndItem(false),\n * ]);\n * ```\n *\n * @remarks\n * End item states do not propagate to children similar to other states like\n * other operations. I.e. calling setEndItem(false) on an item will cause it\n * to be unmarked as an end item, but any children where setEndItem(true) was\n * called previously will remain as end items.\n */\n public setEndItem(endItemState?: boolean): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.setEndItem(endItemState)\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their overridden\n * end item state removed.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Clear the overridden end item state of the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearEndItem(),\n * ]);\n * ```\n */\n public clearEndItem(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearEndItem()\n );\n }\n\n /**\n * Changes the rendition of a scene item matching the query. This operation only\n * applies to scene items that reference a revision that contains the given\n * rendition.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the matching item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).viewRenditionById('rendition-uuid'),\n * ]);\n * ```\n */\n public viewRenditionById(id: UUID.UUID): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.viewRenditionById(id)\n );\n }\n\n /**\n * Changes the rendition of any scene item matching the query that contains a\n * rendition with the given supplied ID. This operation only applies to scene items\n * that reference a revision that contain a rendition with a matching supplied\n * ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).viewRenditionBySuppliedId('rendition-supplied-id'),\n * ]);\n * ```\n */\n public viewRenditionBySuppliedId(\n suppliedId: string\n ): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.viewRenditionBySuppliedId(suppliedId)\n );\n }\n\n /**\n * Changes the rendition of scene items matching the query back to their revision's\n * default rendition. This operation only applies to scene items that reference a\n * revision.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).viewDefaultRendition(),\n * ]);\n * ```\n */\n public viewDefaultRendition(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.viewDefaultRendition()\n );\n }\n\n /**\n * Clears the rendition of scene items matching the query, which will revert the\n * scene item back to the rendition used when creating the item.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearRendition(),\n * ]);\n * ```\n */\n public clearRendition(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearRendition()\n );\n }\n\n /**\n * Changes the representation of scene items matching a query. This operation only\n * applies to scene items that reference a rendition with the given representation\n * ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).viewRepresentation('rep-id'),\n * ]);\n * ```\n */\n public viewRepresentation(id: RepresentationId): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.viewRepresentation(id)\n );\n }\n\n /**\n * Clears the representation for scene items matching the query.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearRepresentation(),\n * ]);\n * ```\n */\n public clearRepresentation(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearRepresentation()\n );\n }\n\n /**\n * @internal\n */\n public build(): QueryOperation {\n return {\n query: this.query,\n operations: this.builder.build(),\n };\n }\n}\n\n/**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * A class that is responsible for building operations on pmi annotations for a specific scene.\n * This executor requires a query, and expects `execute()` to be invoked in\n * order for the changes to take effect.\n */\nexport class PmiAnnotationOperationsBuilder\n implements\n PmiAnnotationOperations<PmiAnnotationOperationsBuilder>,\n SceneElementOperationsBuilder\n{\n private builder: PmiAnnotationOperationBuilder;\n\n public constructor(\n private query: QueryExpression,\n givenBuilder?: PmiAnnotationOperationBuilder\n ) {\n this.builder = givenBuilder ?? new PmiAnnotationOperationBuilder();\n }\n\n public isItemBuilder(): this is SceneItemOperationsBuilder {\n return false;\n }\n\n public isAnnotationBuilder(): this is PmiAnnotationOperationsBuilder {\n return true;\n }\n\n /**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * Specifies that the PMI annotations matching the query should be hidden.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the annotation with the `annotation-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('annotation-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public hide(): PmiAnnotationOperationsBuilder {\n return new PmiAnnotationOperationsBuilder(this.query, this.builder.hide());\n }\n\n /**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * Specifies that the PMI annotations matching the query should be shown.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Show the annotation with the `annotation-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('annotation-uuid')).show(),\n * ]).execute();\n * ```\n */\n public show(): PmiAnnotationOperationsBuilder {\n return new PmiAnnotationOperationsBuilder(this.query, this.builder.show());\n }\n\n /**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * Specifies that the PMI annotations matching the query should be selected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select the annotation with the `annotation-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('annotation-uuid')).select(),\n * ]).execute();\n * ```\n */\n public select(): PmiAnnotationOperationsBuilder {\n return new PmiAnnotationOperationsBuilder(\n this.query,\n this.builder.select()\n );\n }\n\n /**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * Specifies that the PMI annotations matching the query should be deselected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect the annotation with the `annotation-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('annotation-uuid')).deselect(),\n * ]).execute();\n * ```\n */\n public deselect(): PmiAnnotationOperationsBuilder {\n return new PmiAnnotationOperationsBuilder(\n this.query,\n this.builder.deselect()\n );\n }\n\n /**\n * @internal\n */\n public build(): QueryAnnotationOperation {\n return {\n query: this.query,\n operations: this.builder.build(),\n };\n }\n}\n\nexport interface QueryOperation {\n query: QueryExpression;\n operations: ItemOperation[];\n}\n\nexport interface QueryAnnotationOperation {\n query: QueryExpression;\n operations: PmiAnnotationOperation[];\n}\n\nexport class OperationExecutor<T extends SceneExecutionOptions> {\n public constructor(\n protected sceneViewId: UUID.UUID,\n protected stream: StreamApi,\n protected decodeFrame: FrameDecoder,\n protected dimensions: Dimensions.Dimensions,\n protected sceneItemQueryOperations: QueryOperation[],\n protected pmiAnnotationQueryOperations: QueryAnnotationOperation[]\n ) {}\n\n public async execute(executionOptions?: T): Promise<void> {\n const pbItemOperations = this.sceneItemQueryOperations.map((op) =>\n buildSceneElementOperationOnItem(op.query, op.operations, {\n dimensions: this.dimensions,\n })\n );\n const pbPmiAnnotationOperations = this.pmiAnnotationQueryOperations.map(\n (op) =>\n buildSceneElementOperationOnAnnotation(op.query, op.operations, {\n dimensions: this.dimensions,\n })\n );\n\n const requestCorrelationId =\n executionOptions?.suppliedCorrelationId ?? UUID.create();\n\n const request = {\n sceneViewId: {\n hex: this.sceneViewId,\n },\n elementOperations: [...pbItemOperations, ...pbPmiAnnotationOperations],\n suppliedCorrelationId: {\n value: requestCorrelationId,\n },\n };\n\n await this.stream.createSceneAlteration(request);\n }\n}\n\nexport class SceneItemsOperationExecutor extends OperationExecutor<SceneItemsExecutionOptions> {\n public async execute(\n executionOptions?: SceneItemsExecutionOptions\n ): Promise<void> {\n if (executionOptions?.awaitCorrelatedFrame) {\n const correlationId =\n executionOptions.suppliedCorrelationId ?? UUID.create();\n const executeResult = new SceneOperationExecuteResult(\n this.stream,\n this.decodeFrame,\n correlationId\n );\n\n await super.execute({\n ...executionOptions,\n suppliedCorrelationId: correlationId,\n });\n await executeResult.onFrameDrawn.once();\n } else {\n await super.execute(executionOptions);\n }\n }\n}\n\nexport class SceneElementsOperationExecutor extends OperationExecutor<SceneElementsExecutionOptions> {\n public async execute(\n executionOptions?: SceneElementsExecutionOptions\n ): Promise<void> {\n if (executionOptions?.skipAwaitCorrelatedFrame) {\n await super.execute(executionOptions);\n } else {\n const correlationId =\n executionOptions?.suppliedCorrelationId ?? UUID.create();\n const executeResult = new SceneOperationExecuteResult(\n this.stream,\n this.decodeFrame,\n correlationId\n );\n\n await super.execute({\n ...executionOptions,\n suppliedCorrelationId: correlationId,\n });\n await executeResult.onFrameDrawn.once();\n }\n }\n}\n\nexport type TerminalItemOperationBuilder =\n | PmiAnnotationOperationsBuilder\n | SceneItemOperationsBuilder\n | Array<SceneItemOperationsBuilder | PmiAnnotationOperationsBuilder>;\n\nexport type ImageScaleProvider = () => Point.Point | undefined;\n\n/**\n * The features of a scene view state that can be applied to the current scene\n */\nexport type SceneViewStateFeature =\n | 'camera'\n | 'cross_section'\n | 'material_overrides'\n | 'selection'\n | 'transforms'\n | 'visibility'\n | 'phantom'\n | 'shading';\n\n/**\n * A class that represents the `Scene` that has been loaded into the viewer. On\n * it, you can retrieve attributes of the scene, such as the camera. It also\n * contains methods for updating the scene and performing requests to rerender\n * the scene.\n */\nexport class Scene {\n private sceneViewStateLoader: SceneViewStateLoader;\n\n public constructor(\n private stream: StreamApi,\n private frame: Frame,\n private decodeFrame: FrameDecoder,\n private encodeCameraType: CameraTypeEncoder,\n private imageScaleProvider: ImageScaleProvider,\n private dimensions: Dimensions.Dimensions,\n public readonly sceneId: UUID.UUID,\n public readonly sceneViewId: UUID.UUID\n ) {\n this.sceneViewStateLoader = new SceneViewStateLoader(\n stream,\n decodeFrame,\n encodeCameraType,\n sceneId,\n sceneViewId\n );\n }\n\n /**\n * Applies the provided scene view state to the scene.\n */\n public async applySceneViewState(\n sceneViewStateId:\n | UUID.UUID\n | SceneViewStateIdentifier.SceneViewStateIdentifier,\n opts: ApplySceneViewStateOptions = {}\n ): Promise<vertexvis.protobuf.stream.ILoadSceneViewStateResult | undefined> {\n return await this.sceneViewStateLoader.applySceneViewState(\n sceneViewStateId,\n opts\n );\n }\n\n /**\n * Applies the specified features of the provided scene view state to the scene.\n */\n public async applyPartialSceneViewState(\n sceneViewStateId:\n | UUID.UUID\n | SceneViewStateIdentifier.SceneViewStateIdentifier,\n featuresToApply: SceneViewStateFeature[],\n opts: ApplySceneViewStateOptions = {}\n ): Promise<vertexvis.protobuf.stream.ILoadSceneViewStateResult | undefined> {\n return await this.sceneViewStateLoader.applyPartialSceneViewState(\n sceneViewStateId,\n featuresToApply,\n opts\n );\n }\n\n /**\n * Resets the view to its default state, with the ability to reset the camera to that of the base scene.\n */\n public async reset(\n opts: ResetViewOptions = {}\n ): Promise<vertexvis.protobuf.stream.IResetViewResult | undefined> {\n return await this.stream.resetSceneView(\n {\n includeCamera: opts.includeCamera,\n frameCorrelationId: opts.suppliedCorrelationId\n ? { value: opts.suppliedCorrelationId }\n : undefined,\n cameraType: opts.cameraTypeOverride\n ? this.encodeCameraType(opts.cameraTypeOverride)\n : undefined,\n },\n true\n );\n }\n\n /**\n * Returns an executor that accepts a function as a parameter that contains one or more operations to apply\n * to the scene view. The operations will be applied transactionally.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect everything, then select a specific item by ID\n * await scene.items(op => [\n * op.items.where(q => q.all()).deselect(),\n * op.items.where(q => q.withItemId('item-id')).select(),\n * ]).execute();\n * ```\n *\n * @see {@link RootQuery} for more information on available queries.\n *\n * @see {@link SceneItemOperationsBuilder} for more information on available operations.\n *\n * @param operations\n */\n public items(\n operations: (q: SceneItemQueryExecutor) => TerminalItemOperationBuilder\n ): SceneItemsOperationExecutor {\n const sceneOperations = operations(new SceneItemQueryExecutor());\n\n const ops: Array<\n SceneItemOperationsBuilder | PmiAnnotationOperationsBuilder\n > = Array.isArray(sceneOperations) ? sceneOperations : [sceneOperations];\n const itemOps = ops.filter((op) =>\n op.isItemBuilder()\n ) as Array<SceneItemOperationsBuilder>;\n\n const operationList = itemOps.reduce(\n (acc, builder: SceneItemOperationsBuilder) => acc.concat(builder.build()),\n [] as QueryOperation[]\n );\n\n return new SceneItemsOperationExecutor(\n this.sceneViewId,\n this.stream,\n this.decodeFrame,\n this.dimensions,\n operationList,\n []\n );\n }\n\n /**\n * Returns an executor that accepts a function as a parameter that contains one or more operations to apply\n * to items or annotations in the scene view. The operations will be applied transactionally.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect everything, then select a specific scene item by ID\n * await scene.elements(op => [\n * op.items.where(q => q.all()).deselect(),\n * op.annotations.where(q => q.all()).deselect(),\n * op.items.where(q => q.withItemId('item-id')).select(),\n * ]).execute();\n * ```\n *\n * @see {@link RootQuery} for more information on available queries on scene items.\n *\n * @see {@link SceneItemOperationsBuilder} for more information on available operations to the scene items.\n *\n * @see {@link PmiAnnotationRootQuery} for more information on available queries on PMI annotations.\n *\n * @see {@link PmiAnnotationOperationsBuilder} for more information on available operations to the PMI annotations.\n *\n * @param operations\n */\n public elements(\n operations: (q: SceneElementQueryExecutor) => TerminalItemOperationBuilder\n ): SceneElementsOperationExecutor {\n const ops = operations(new SceneElementQueryExecutor());\n const opsAsArray = Array.isArray(ops) ? ops : [ops];\n\n // Operations on scene items\n const sceneItemOps = opsAsArray.filter((op) =>\n op.isItemBuilder()\n ) as Array<SceneItemOperationsBuilder>;\n const sceneItemsOperationList = sceneItemOps.reduce(\n (acc, builder: SceneItemOperationsBuilder) => acc.concat(builder.build()),\n [] as QueryOperation[]\n );\n\n // Operations on PMI annotations\n const pmiAnnotationOps = opsAsArray.filter((op) =>\n op.isAnnotationBuilder()\n ) as Array<PmiAnnotationOperationsBuilder>;\n const pmiAnnotationOperationList = pmiAnnotationOps.reduce(\n (acc, builder: PmiAnnotationOperationsBuilder) =>\n acc.concat(builder.build()),\n [] as QueryAnnotationOperation[]\n );\n\n return new SceneElementsOperationExecutor(\n this.sceneViewId,\n this.stream,\n this.decodeFrame,\n this.dimensions,\n sceneItemsOperationList,\n pmiAnnotationOperationList\n );\n }\n\n /**\n * An instance of the current camera of the scene. The camera provides a number of\n * methods that can be used in combination with the `render` method to make programmatic\n * updates to the scene's camera.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n * const camera = scene.camera();\n *\n * // Fit the camera to the visible bounding box of the scene with a 1 second animation\n * await camera.viewAll().render({ animation: { milliseconds: 1000 } });\n * ```\n *\n * @see {@link Camera} for more information on available camera operations.\n */\n public camera(): Camera {\n const { scene } = this.frame;\n\n if (scene.camera.isOrthographic()) {\n return new OrthographicCamera(\n this.stream,\n Dimensions.aspectRatio(this.viewport()),\n {\n viewVector: scene.camera.viewVector,\n lookAt: scene.camera.lookAt,\n up: scene.camera.up,\n fovHeight: scene.camera.fovHeight,\n rotationPoint: scene.camera.lookAt,\n },\n this.frame.scene.boundingBox,\n this.decodeFrame\n );\n } else if (scene.camera.isPerspective()) {\n return new PerspectiveCamera(\n this.stream,\n Dimensions.aspectRatio(this.viewport()),\n {\n position: scene.camera.position,\n lookAt: scene.camera.lookAt,\n up: scene.camera.up,\n fovY: scene.camera.fovY,\n },\n this.frame.scene.boundingBox,\n this.decodeFrame\n );\n } else {\n throw new InvalidCameraError(\n 'Cannot retrieve camera. Scene has an unknown or invalid camera type.'\n );\n }\n }\n\n public isOrthographic(): boolean {\n const { scene } = this.frame;\n\n return scene.camera.isOrthographic();\n }\n\n /**\n * Returns the current visible BoundingBox for the scene.\n */\n public boundingBox(): BoundingBox.BoundingBox {\n return this.frame.scene.boundingBox;\n }\n\n /**\n * CrossSectioner to update cross sectioning planes and get current configuration.\n */\n public crossSectioning(): CrossSectioner {\n return new CrossSectioner(this.stream, this.frame.scene.crossSection);\n }\n\n /**\n * Raycaster to request items that intersect a point.\n */\n public raycaster(): Raycaster {\n return new Raycaster(this.stream, this.imageScaleProvider);\n }\n\n /**\n * The current viewport of the scene, in pixels.\n */\n public viewport(): Dimensions.Dimensions {\n return this.frame.dimensions;\n }\n\n /**\n * The current x and y scale of the rendered image.\n */\n public scale(): Point.Point {\n return this.imageScaleProvider() || Point.create(1, 1);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"scene.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/scene.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { BoundingBox, Dimensions, Point } from '@vertexvis/geometry';\nimport { StreamApi } from '@vertexvis/stream-api';\nimport { UUID } from '@vertexvis/utils';\n\nimport { CameraType } from '../../interfaces';\nimport { InvalidArgumentError, InvalidCameraError } from '../errors';\nimport { CameraTypeEncoder, FrameDecoder } from '../mappers';\nimport { SceneViewStateIdentifier } from '../types';\nimport { Frame } from '../types/frame';\nimport {\n Camera,\n CameraRenderOptions,\n OrthographicCamera,\n PerspectiveCamera,\n} from '.';\nimport { ColorMaterial, fromHex } from './colorMaterial';\nimport { CrossSectioner } from './crossSectioner';\nimport {\n buildSceneElementOperationOnAnnotation,\n buildSceneElementOperationOnItem,\n} from './mapper';\nimport {\n ItemOperation,\n ItemOperationBuilder,\n PmiAnnotationOperation,\n PmiAnnotationOperationBuilder,\n PmiAnnotationOperations,\n RepresentationId,\n SceneItemOperations,\n} from './operations';\nimport {\n QueryExpression,\n SceneElementQueryExecutor,\n SceneItemQueryExecutor,\n} from './queries';\nimport { Raycaster } from './raycaster';\nimport { SceneOperationExecuteResult } from './sceneOperationExecuteResult';\nimport { SceneViewStateLoader } from './sceneViewStateLoader';\n\nexport interface SceneExecutionOptions {\n suppliedCorrelationId?: string;\n}\n\nexport interface SceneElementsExecutionOptions extends SceneExecutionOptions {\n /**\n * Skips the wait for a frame correlated to this alteration before\n * completing the Promise returned by the `execute()` method.\n */\n skipAwaitCorrelatedFrame?: boolean;\n}\n\nexport interface SceneItemsExecutionOptions extends SceneExecutionOptions {\n /**\n * Waits for the frame correlated to this alteration before\n * completing the Promise returned by the `execute()` method.\n */\n awaitCorrelatedFrame?: boolean;\n}\n\nexport interface ApplySceneViewStateOptions\n extends SceneElementsExecutionOptions, CameraRenderOptions {\n waitForAnimation?: boolean;\n cameraTypeOverride?: CameraType;\n}\n\nexport interface ResetViewOptions {\n includeCamera?: boolean;\n cameraTypeOverride?: CameraType;\n suppliedCorrelationId?: string;\n}\n\nexport interface SceneElementOperationsBuilder {\n isItemBuilder(): this is SceneItemOperationsBuilder;\n isAnnotationBuilder(): this is PmiAnnotationOperationsBuilder;\n}\n\n/**\n * A class that is responsible for building operations on scene items for a specific scene.\n * This executor requires a query, and expects `execute()` to be invoked in\n * order for the changes to take effect.\n */\nexport class SceneItemOperationsBuilder\n implements\n SceneItemOperations<SceneItemOperationsBuilder>,\n SceneElementOperationsBuilder\n{\n private builder: ItemOperationBuilder;\n\n public constructor(\n private query: QueryExpression,\n givenBuilder?: ItemOperationBuilder,\n ) {\n this.builder = givenBuilder ?? new ItemOperationBuilder();\n }\n\n public isItemBuilder(): this is SceneItemOperationsBuilder {\n return true;\n }\n\n public isAnnotationBuilder(): this is PmiAnnotationOperationsBuilder {\n return false;\n }\n\n /**\n * Specifies that the scene items matching the query should have their default\n * material overridden to match the specified material.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Override the material for the item with the `item-uuid` ID to\n * // be red with an opacity of 0.5.\n * await scene.elements((op) => [\n * op\n * .items.where((q) => q.withItemId('item-uuid'))\n * .materialOverride(ColorMaterial.create(255, 0, 0, 0.5)),\n * ]);\n *\n * // Override the material for the item with the `item-uuid` ID to\n * // be red with an opacity of 1.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).materialOverride('#ff0000'),\n * ]).execute();\n * ```\n */\n public materialOverride(\n color: ColorMaterial | string,\n ): SceneItemOperationsBuilder {\n if (typeof color === 'string') {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.materialOverride(fromHex(color)),\n );\n } else {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.materialOverride(color),\n );\n }\n }\n\n /**\n * Specifies that the scene items matching the query should be hidden.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public hide(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(this.query, this.builder.hide());\n }\n\n /**\n * Specifies that the scene items matching the query should be shown.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Show the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).show(),\n * ]).execute();\n * ```\n */\n public show(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(this.query, this.builder.show());\n }\n\n /**\n * Specifies that the scene items matching the query should be selected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).select(),\n * ]).execute();\n * ```\n */\n public select(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(this.query, this.builder.select());\n }\n\n /**\n * Specifies that the scene items matching the query should be deselected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).deselect(),\n * ]).execute();\n * ```\n */\n public deselect(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(this.query, this.builder.deselect());\n }\n\n /**\n * Specifies that the scene items matching the query should have any overridden\n * material removed.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Clear the overridden material on the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearMaterialOverrides(),\n * ]);\n * ```\n */\n public clearMaterialOverrides(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearMaterialOverrides(),\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their\n * transformation matrix overridden to match the specified transformation\n * matrix.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Override the transformation matrix for the item with the `item-uuid` ID to\n * // move the element along the x-axis\n * await scene.elements((op) => [\n * op\n * .items.where((q) => q.withItemId('item-uuid'))\n * .transform(Matrix4.makeTranslation(Vector3.create(100, 0, 0))),\n * ]);\n * ```\n */\n public transform(\n matrix: vertexvis.protobuf.core.IMatrix4x4f | number[],\n ): SceneItemOperationsBuilder {\n if (Array.isArray(matrix)) {\n if (matrix.length !== 16) {\n throw new InvalidArgumentError(\n 'Matrix provided must contain exactly 16 values (4x4).',\n );\n }\n\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.transform({\n r0: {\n x: matrix[0],\n y: matrix[1],\n z: matrix[2],\n w: matrix[3],\n },\n r1: {\n x: matrix[4],\n y: matrix[5],\n z: matrix[6],\n w: matrix[7],\n },\n r2: {\n x: matrix[8],\n y: matrix[9],\n z: matrix[10],\n w: matrix[11],\n },\n r3: {\n x: matrix[12],\n y: matrix[13],\n z: matrix[14],\n w: matrix[15],\n },\n }),\n );\n } else {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.transform(matrix),\n );\n }\n }\n\n /**\n * Specifies that the scene items matching the query should have their overridden\n * transformation matrix removed. The `cascade` flag determines whether\n * children of the scene items matching the query should also have their overridden\n * transformation matrix removed, and defaults to `true`.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Clear the overridden the transformation matrix for the item with the `item-uuid` ID\n * // and do not cascade to preserve transformations on children\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearTransforms(false),\n * ]);\n *\n * // Clear the overridden the transformation matrix for the item with the `item-uuid` ID\n * // and cascade to clear overridden transformations on children\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearTransforms(true),\n * ]);\n * ```\n */\n public clearTransforms(cascade = true): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearTransforms(cascade),\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their phantom state\n * overridden to match the specified `phantomState` flag. If the\n * `phantomState` flag is not provided, it will default to `true`.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Mark the item with the `item-uuid` ID as phantom\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).setPhantom(true),\n * ]);\n *\n * // Unmark the item with the `item-uuid` ID as phantom\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).setPhantom(false),\n * ]);\n * ```\n */\n public setPhantom(phantomState?: boolean): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.setPhantom(phantomState),\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their overridden\n * phantom state removed.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Clear the overridden phantom state of the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearPhantom(),\n * ]);\n * ```\n */\n public clearPhantom(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearPhantom(),\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their end item\n * state overridden to match the specified `endItemState` flag. If the\n * `endItemState` flag is not provided, it will default to `true`.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Mark the item with the `item-uuid` ID as an end item\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).setEndItem(true),\n * ]);\n *\n * // Unmark the item with the `item-uuid` ID as an end item\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).setEndItem(false),\n * ]);\n * ```\n *\n * @remarks\n * End item states do not propagate to children similar to other states like\n * other operations. I.e. calling setEndItem(false) on an item will cause it\n * to be unmarked as an end item, but any children where setEndItem(true) was\n * called previously will remain as end items.\n */\n public setEndItem(endItemState?: boolean): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.setEndItem(endItemState),\n );\n }\n\n /**\n * Specifies that the scene items matching the query should have their overridden\n * end item state removed.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Clear the overridden end item state of the item with the `item-uuid` ID\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearEndItem(),\n * ]);\n * ```\n */\n public clearEndItem(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearEndItem(),\n );\n }\n\n /**\n * Changes the rendition of a scene item matching the query. This operation only\n * applies to scene items that reference a revision that contains the given\n * rendition.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the matching item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).viewRenditionById('rendition-uuid'),\n * ]);\n * ```\n */\n public viewRenditionById(id: UUID.UUID): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.viewRenditionById(id),\n );\n }\n\n /**\n * Changes the rendition of any scene item matching the query that contains a\n * rendition with the given supplied ID. This operation only applies to scene items\n * that reference a revision that contain a rendition with a matching supplied\n * ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).viewRenditionBySuppliedId('rendition-supplied-id'),\n * ]);\n * ```\n */\n public viewRenditionBySuppliedId(\n suppliedId: string,\n ): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.viewRenditionBySuppliedId(suppliedId),\n );\n }\n\n /**\n * Changes the rendition of scene items matching the query back to their revision's\n * default rendition. This operation only applies to scene items that reference a\n * revision.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).viewDefaultRendition(),\n * ]);\n * ```\n */\n public viewDefaultRendition(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.viewDefaultRendition(),\n );\n }\n\n /**\n * Clears the rendition of scene items matching the query, which will revert the\n * scene item back to the rendition used when creating the item.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearRendition(),\n * ]);\n * ```\n */\n public clearRendition(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearRendition(),\n );\n }\n\n /**\n * Changes the representation of scene items matching a query. This operation only\n * applies to scene items that reference a rendition with the given representation\n * ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).viewRepresentation('rep-id'),\n * ]);\n * ```\n */\n public viewRepresentation(id: RepresentationId): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.viewRepresentation(id),\n );\n }\n\n /**\n * Clears the representation for scene items matching the query.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Switch the rendition of the given item.\n * await scene.elements((op) => [\n * op.items.where((q) => q.withItemId('item-uuid')).clearRepresentation(),\n * ]);\n * ```\n */\n public clearRepresentation(): SceneItemOperationsBuilder {\n return new SceneItemOperationsBuilder(\n this.query,\n this.builder.clearRepresentation(),\n );\n }\n\n /**\n * @internal\n */\n public build(): QueryOperation {\n return {\n query: this.query,\n operations: this.builder.build(),\n };\n }\n}\n\n/**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * A class that is responsible for building operations on pmi annotations for a specific scene.\n * This executor requires a query, and expects `execute()` to be invoked in\n * order for the changes to take effect.\n */\nexport class PmiAnnotationOperationsBuilder\n implements\n PmiAnnotationOperations<PmiAnnotationOperationsBuilder>,\n SceneElementOperationsBuilder\n{\n private builder: PmiAnnotationOperationBuilder;\n\n public constructor(\n private query: QueryExpression,\n givenBuilder?: PmiAnnotationOperationBuilder,\n ) {\n this.builder = givenBuilder ?? new PmiAnnotationOperationBuilder();\n }\n\n public isItemBuilder(): this is SceneItemOperationsBuilder {\n return false;\n }\n\n public isAnnotationBuilder(): this is PmiAnnotationOperationsBuilder {\n return true;\n }\n\n /**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * Specifies that the PMI annotations matching the query should be hidden.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the annotation with the `annotation-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('annotation-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public hide(): PmiAnnotationOperationsBuilder {\n return new PmiAnnotationOperationsBuilder(this.query, this.builder.hide());\n }\n\n /**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * Specifies that the PMI annotations matching the query should be shown.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Show the annotation with the `annotation-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('annotation-uuid')).show(),\n * ]).execute();\n * ```\n */\n public show(): PmiAnnotationOperationsBuilder {\n return new PmiAnnotationOperationsBuilder(this.query, this.builder.show());\n }\n\n /**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * Specifies that the PMI annotations matching the query should be selected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select the annotation with the `annotation-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('annotation-uuid')).select(),\n * ]).execute();\n * ```\n */\n public select(): PmiAnnotationOperationsBuilder {\n return new PmiAnnotationOperationsBuilder(\n this.query,\n this.builder.select(),\n );\n }\n\n /**\n * @ignore\n * @beta PMI Annotation operations are being actively developed. These APIs\n * should be considered unstable, and will potentially change with following\n * releases.\n *\n * Specifies that the PMI annotations matching the query should be deselected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect the annotation with the `annotation-uuid` ID\n * await scene.elements((op) => [\n * op.annotations.where((q) => q.withAnnotationId('annotation-uuid')).deselect(),\n * ]).execute();\n * ```\n */\n public deselect(): PmiAnnotationOperationsBuilder {\n return new PmiAnnotationOperationsBuilder(\n this.query,\n this.builder.deselect(),\n );\n }\n\n /**\n * @internal\n */\n public build(): QueryAnnotationOperation {\n return {\n query: this.query,\n operations: this.builder.build(),\n };\n }\n}\n\nexport interface QueryOperation {\n query: QueryExpression;\n operations: ItemOperation[];\n}\n\nexport interface QueryAnnotationOperation {\n query: QueryExpression;\n operations: PmiAnnotationOperation[];\n}\n\nexport class OperationExecutor<T extends SceneExecutionOptions> {\n public constructor(\n protected sceneViewId: UUID.UUID,\n protected stream: StreamApi,\n protected decodeFrame: FrameDecoder,\n protected dimensions: Dimensions.Dimensions,\n protected sceneItemQueryOperations: QueryOperation[],\n protected pmiAnnotationQueryOperations: QueryAnnotationOperation[],\n ) {}\n\n public async execute(executionOptions?: T): Promise<void> {\n const pbItemOperations = this.sceneItemQueryOperations.map((op) =>\n buildSceneElementOperationOnItem(op.query, op.operations, {\n dimensions: this.dimensions,\n }),\n );\n const pbPmiAnnotationOperations = this.pmiAnnotationQueryOperations.map(\n (op) =>\n buildSceneElementOperationOnAnnotation(op.query, op.operations, {\n dimensions: this.dimensions,\n }),\n );\n\n const requestCorrelationId =\n executionOptions?.suppliedCorrelationId ?? UUID.create();\n\n const request = {\n sceneViewId: {\n hex: this.sceneViewId,\n },\n elementOperations: [...pbItemOperations, ...pbPmiAnnotationOperations],\n suppliedCorrelationId: {\n value: requestCorrelationId,\n },\n };\n\n await this.stream.createSceneAlteration(request);\n }\n}\n\nexport class SceneItemsOperationExecutor extends OperationExecutor<SceneItemsExecutionOptions> {\n public async execute(\n executionOptions?: SceneItemsExecutionOptions,\n ): Promise<void> {\n if (executionOptions?.awaitCorrelatedFrame) {\n const correlationId =\n executionOptions.suppliedCorrelationId ?? UUID.create();\n const executeResult = new SceneOperationExecuteResult(\n this.stream,\n this.decodeFrame,\n correlationId,\n );\n\n await super.execute({\n ...executionOptions,\n suppliedCorrelationId: correlationId,\n });\n await executeResult.onFrameDrawn.once();\n } else {\n await super.execute(executionOptions);\n }\n }\n}\n\nexport class SceneElementsOperationExecutor extends OperationExecutor<SceneElementsExecutionOptions> {\n public async execute(\n executionOptions?: SceneElementsExecutionOptions,\n ): Promise<void> {\n if (executionOptions?.skipAwaitCorrelatedFrame) {\n await super.execute(executionOptions);\n } else {\n const correlationId =\n executionOptions?.suppliedCorrelationId ?? UUID.create();\n const executeResult = new SceneOperationExecuteResult(\n this.stream,\n this.decodeFrame,\n correlationId,\n );\n\n await super.execute({\n ...executionOptions,\n suppliedCorrelationId: correlationId,\n });\n await executeResult.onFrameDrawn.once();\n }\n }\n}\n\nexport type TerminalItemOperationBuilder =\n | PmiAnnotationOperationsBuilder\n | SceneItemOperationsBuilder\n | Array<SceneItemOperationsBuilder | PmiAnnotationOperationsBuilder>;\n\nexport type ImageScaleProvider = () => Point.Point | undefined;\n\n/**\n * The features of a scene view state that can be applied to the current scene\n */\nexport type SceneViewStateFeature =\n | 'camera'\n | 'cross_section'\n | 'material_overrides'\n | 'selection'\n | 'transforms'\n | 'visibility'\n | 'phantom'\n | 'shading';\n\n/**\n * A class that represents the `Scene` that has been loaded into the viewer. On\n * it, you can retrieve attributes of the scene, such as the camera. It also\n * contains methods for updating the scene and performing requests to rerender\n * the scene.\n */\nexport class Scene {\n private sceneViewStateLoader: SceneViewStateLoader;\n\n public constructor(\n private stream: StreamApi,\n private frame: Frame,\n private decodeFrame: FrameDecoder,\n private encodeCameraType: CameraTypeEncoder,\n private imageScaleProvider: ImageScaleProvider,\n private dimensions: Dimensions.Dimensions,\n public readonly sceneId: UUID.UUID,\n public readonly sceneViewId: UUID.UUID,\n ) {\n this.sceneViewStateLoader = new SceneViewStateLoader(\n stream,\n decodeFrame,\n encodeCameraType,\n sceneId,\n sceneViewId,\n );\n }\n\n /**\n * Applies the provided scene view state to the scene.\n */\n public async applySceneViewState(\n sceneViewStateId:\n | UUID.UUID\n | SceneViewStateIdentifier.SceneViewStateIdentifier,\n opts: ApplySceneViewStateOptions = {},\n ): Promise<vertexvis.protobuf.stream.ILoadSceneViewStateResult | undefined> {\n return await this.sceneViewStateLoader.applySceneViewState(\n sceneViewStateId,\n opts,\n );\n }\n\n /**\n * Applies the specified features of the provided scene view state to the scene.\n */\n public async applyPartialSceneViewState(\n sceneViewStateId:\n | UUID.UUID\n | SceneViewStateIdentifier.SceneViewStateIdentifier,\n featuresToApply: SceneViewStateFeature[],\n opts: ApplySceneViewStateOptions = {},\n ): Promise<vertexvis.protobuf.stream.ILoadSceneViewStateResult | undefined> {\n return await this.sceneViewStateLoader.applyPartialSceneViewState(\n sceneViewStateId,\n featuresToApply,\n opts,\n );\n }\n\n /**\n * Resets the view to its default state, with the ability to reset the camera to that of the base scene.\n */\n public async reset(\n opts: ResetViewOptions = {},\n ): Promise<vertexvis.protobuf.stream.IResetViewResult | undefined> {\n return await this.stream.resetSceneView(\n {\n includeCamera: opts.includeCamera,\n frameCorrelationId: opts.suppliedCorrelationId\n ? { value: opts.suppliedCorrelationId }\n : undefined,\n cameraType: opts.cameraTypeOverride\n ? this.encodeCameraType(opts.cameraTypeOverride)\n : undefined,\n },\n true,\n );\n }\n\n /**\n * Returns an executor that accepts a function as a parameter that contains one or more operations to apply\n * to the scene view. The operations will be applied transactionally.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect everything, then select a specific item by ID\n * await scene.items(op => [\n * op.items.where(q => q.all()).deselect(),\n * op.items.where(q => q.withItemId('item-id')).select(),\n * ]).execute();\n * ```\n *\n * @see {@link RootQuery} for more information on available queries.\n *\n * @see {@link SceneItemOperationsBuilder} for more information on available operations.\n *\n * @param operations\n */\n public items(\n operations: (q: SceneItemQueryExecutor) => TerminalItemOperationBuilder,\n ): SceneItemsOperationExecutor {\n const sceneOperations = operations(new SceneItemQueryExecutor());\n\n const ops: Array<\n SceneItemOperationsBuilder | PmiAnnotationOperationsBuilder\n > = Array.isArray(sceneOperations) ? sceneOperations : [sceneOperations];\n const itemOps = ops.filter((op) =>\n op.isItemBuilder(),\n ) as Array<SceneItemOperationsBuilder>;\n\n const operationList = itemOps.reduce(\n (acc, builder: SceneItemOperationsBuilder) => acc.concat(builder.build()),\n [] as QueryOperation[],\n );\n\n return new SceneItemsOperationExecutor(\n this.sceneViewId,\n this.stream,\n this.decodeFrame,\n this.dimensions,\n operationList,\n [],\n );\n }\n\n /**\n * Returns an executor that accepts a function as a parameter that contains one or more operations to apply\n * to items or annotations in the scene view. The operations will be applied transactionally.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect everything, then select a specific scene item by ID\n * await scene.elements(op => [\n * op.items.where(q => q.all()).deselect(),\n * op.annotations.where(q => q.all()).deselect(),\n * op.items.where(q => q.withItemId('item-id')).select(),\n * ]).execute();\n * ```\n *\n * @see {@link RootQuery} for more information on available queries on scene items.\n *\n * @see {@link SceneItemOperationsBuilder} for more information on available operations to the scene items.\n *\n * @see {@link PmiAnnotationRootQuery} for more information on available queries on PMI annotations.\n *\n * @see {@link PmiAnnotationOperationsBuilder} for more information on available operations to the PMI annotations.\n *\n * @param operations\n */\n public elements(\n operations: (q: SceneElementQueryExecutor) => TerminalItemOperationBuilder,\n ): SceneElementsOperationExecutor {\n const ops = operations(new SceneElementQueryExecutor());\n const opsAsArray = Array.isArray(ops) ? ops : [ops];\n\n // Operations on scene items\n const sceneItemOps = opsAsArray.filter((op) =>\n op.isItemBuilder(),\n ) as Array<SceneItemOperationsBuilder>;\n const sceneItemsOperationList = sceneItemOps.reduce(\n (acc, builder: SceneItemOperationsBuilder) => acc.concat(builder.build()),\n [] as QueryOperation[],\n );\n\n // Operations on PMI annotations\n const pmiAnnotationOps = opsAsArray.filter((op) =>\n op.isAnnotationBuilder(),\n ) as Array<PmiAnnotationOperationsBuilder>;\n const pmiAnnotationOperationList = pmiAnnotationOps.reduce(\n (acc, builder: PmiAnnotationOperationsBuilder) =>\n acc.concat(builder.build()),\n [] as QueryAnnotationOperation[],\n );\n\n return new SceneElementsOperationExecutor(\n this.sceneViewId,\n this.stream,\n this.decodeFrame,\n this.dimensions,\n sceneItemsOperationList,\n pmiAnnotationOperationList,\n );\n }\n\n /**\n * An instance of the current camera of the scene. The camera provides a number of\n * methods that can be used in combination with the `render` method to make programmatic\n * updates to the scene's camera.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n * const camera = scene.camera();\n *\n * // Fit the camera to the visible bounding box of the scene with a 1 second animation\n * await camera.viewAll().render({ animation: { milliseconds: 1000 } });\n * ```\n *\n * @see {@link Camera} for more information on available camera operations.\n */\n public camera(): Camera {\n const { scene } = this.frame;\n\n if (scene.camera.isOrthographic()) {\n return new OrthographicCamera(\n this.stream,\n Dimensions.aspectRatio(this.viewport()),\n {\n viewVector: scene.camera.viewVector,\n lookAt: scene.camera.lookAt,\n up: scene.camera.up,\n fovHeight: scene.camera.fovHeight,\n rotationPoint: scene.camera.lookAt,\n },\n this.frame.scene.boundingBox,\n this.decodeFrame,\n );\n } else if (scene.camera.isPerspective()) {\n return new PerspectiveCamera(\n this.stream,\n Dimensions.aspectRatio(this.viewport()),\n {\n position: scene.camera.position,\n lookAt: scene.camera.lookAt,\n up: scene.camera.up,\n fovY: scene.camera.fovY,\n },\n this.frame.scene.boundingBox,\n this.decodeFrame,\n );\n } else {\n throw new InvalidCameraError(\n 'Cannot retrieve camera. Scene has an unknown or invalid camera type.',\n );\n }\n }\n\n public isOrthographic(): boolean {\n const { scene } = this.frame;\n\n return scene.camera.isOrthographic();\n }\n\n /**\n * Returns the current visible BoundingBox for the scene.\n */\n public boundingBox(): BoundingBox.BoundingBox {\n return this.frame.scene.boundingBox;\n }\n\n /**\n * CrossSectioner to update cross sectioning planes and get current configuration.\n */\n public crossSectioning(): CrossSectioner {\n return new CrossSectioner(this.stream, this.frame.scene.crossSection);\n }\n\n /**\n * Raycaster to request items that intersect a point.\n */\n public raycaster(): Raycaster {\n return new Raycaster(this.stream, this.imageScaleProvider);\n }\n\n /**\n * The current viewport of the scene, in pixels.\n */\n public viewport(): Dimensions.Dimensions {\n return this.frame.dimensions;\n }\n\n /**\n * The current x and y scale of the rendered image.\n */\n public scale(): Point.Point {\n return this.imageScaleProvider() || Point.create(1, 1);\n }\n}\n"]}
|