@vertexvis/viewer 1.0.2-canary.2 → 1.0.2-canary.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/config-20ozv4y8.js.map +1 -1
- package/dist/cjs/controller-BhcNbaX_.js.map +1 -1
- package/dist/cjs/controller-CSwG6gbQ.js.map +1 -1
- package/dist/cjs/cursors-BZmDRtaZ.js.map +1 -1
- package/dist/cjs/dom-BBil4aN3.js.map +1 -1
- package/dist/cjs/dom-CvGkFQon.js.map +1 -1
- package/dist/cjs/entities-D6kgGria.js.map +1 -1
- package/dist/cjs/geometry_pb-BTko2Wi0.js.map +1 -1
- package/dist/cjs/grpc-BsWFEUrc.js.map +1 -1
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/model-C9WvOKYT.js.map +1 -1
- package/dist/cjs/model-D17EQTIh.js.map +1 -1
- package/dist/cjs/model-DAB4oD5n.js.map +1 -1
- package/dist/cjs/model-DkXCzhs_.js.map +1 -1
- package/dist/cjs/multiElementInteractionHandler-BHvRKVIp.js.map +1 -1
- package/dist/cjs/overlays-B-06bUbI.js.map +1 -1
- package/dist/cjs/queries-Da9I-xMf.js.map +1 -1
- package/dist/cjs/regl-component-HhKCyGQ3.js.map +1 -1
- package/dist/cjs/representation_pb-CrCGjlyP.js.map +1 -1
- package/dist/cjs/results-1wRRZiYG.js.map +1 -1
- package/dist/cjs/row-Cet6xXup.js.map +1 -1
- package/dist/cjs/stencil-Hsr_8Chs.js.map +1 -1
- package/dist/cjs/streamAttributes-D_J-W8-2.js.map +1 -1
- package/dist/cjs/templates-DvjgjnlO.js.map +1 -1
- package/dist/cjs/util-DIJSIQXH.js.map +1 -1
- package/dist/cjs/utils-CibrnHQ4.js.map +1 -1
- package/dist/cjs/utils-D8MbXbwO.js.map +1 -1
- package/dist/cjs/utils-qErVs2Vt.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +6 -8
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
- package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +4 -5
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-walk-mode-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer.cjs.entry.js +9 -5
- package/dist/cjs/vertex-viewer.cjs.entry.js.map +1 -1
- package/dist/cjs/viewport-CG1VYkIU.js.map +1 -1
- package/dist/collection/components/scene-tree/errors.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/dom.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/errors.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/grpc.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/handlers.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/row.js.map +1 -1
- package/dist/collection/components/scene-tree/lib/viewer-ops.js.map +1 -1
- package/dist/collection/components/scene-tree/scene-tree.js +2 -2
- package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
- package/dist/collection/components/scene-tree-search/scene-tree-search.js.map +1 -1
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +1 -1
- package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js.map +1 -1
- package/dist/collection/components/scene-tree-table-cell/utils.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/lib/dom.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/lib/window.js.map +1 -1
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js +5 -5
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.js.map +1 -1
- package/dist/collection/components/viewer/utils.js.map +1 -1
- package/dist/collection/components/viewer/viewer.js +9 -5
- package/dist/collection/components/viewer/viewer.js.map +1 -1
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js +2 -2
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js.map +1 -1
- package/dist/collection/components/viewer-dom-element/utils.js.map +1 -1
- package/dist/collection/components/viewer-dom-element/viewer-dom-element.js +1 -1
- package/dist/collection/components/viewer-dom-element/viewer-dom-element.js.map +1 -1
- package/dist/collection/components/viewer-dom-group/utils.js.map +1 -1
- package/dist/collection/components/viewer-dom-group/viewer-dom-group.js +1 -1
- package/dist/collection/components/viewer-dom-group/viewer-dom-group.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer2d.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/renderer3d.js.map +1 -1
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/dom.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/indicator.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/plane.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/lib/point.js.map +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js +1 -1
- package/dist/collection/components/viewer-hit-result-indicator/viewer-hit-result-indicator.js.map +1 -1
- package/dist/collection/components/viewer-icon/viewer-icon.js.map +1 -1
- package/dist/collection/components/viewer-markup/markup-utils.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup-components.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow-components.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/viewer-markup-arrow.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-circle/viewer-markup-circle.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/interactions.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-freeform/viewer-markup-freeform.js.map +1 -1
- package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.js.map +1 -1
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/hitTest.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/interactions.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/utils.js.map +1 -1
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js.map +1 -1
- package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js +1 -1
- package/dist/collection/components/viewer-measurement-line/viewer-measurement-line.js.map +1 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +1 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js.map +1 -1
- package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js.map +1 -1
- package/dist/collection/components/viewer-pin-group/utils.js.map +1 -1
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.js +2 -2
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.js.map +1 -1
- package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
- package/dist/collection/components/viewer-pin-tool/utils.js.map +1 -1
- package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js +1 -1
- package/dist/collection/components/viewer-pin-tool/viewer-pin-tool.js.map +1 -1
- package/dist/collection/components/viewer-teleport-tool/viewer-teleport-tool.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/util.js +1 -2
- package/dist/collection/components/viewer-transform-widget/util.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js +3 -3
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.js.map +1 -1
- package/dist/collection/components/viewer-transform-widget/widget.js.map +1 -1
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.js +1 -1
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.js.map +1 -1
- package/dist/collection/components/viewer-walk-mode-tool/viewer-walk-mode-tool.js.map +1 -1
- package/dist/collection/lib/annotations/controller.js.map +1 -1
- package/dist/collection/lib/canvases/controller.js.map +1 -1
- package/dist/collection/lib/canvases/mapper.js.map +1 -1
- package/dist/collection/lib/config.js.map +1 -1
- package/dist/collection/lib/cursors.js.map +1 -1
- package/dist/collection/lib/dom.js.map +1 -1
- package/dist/collection/lib/grpc.js.map +1 -1
- package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/flyToPartKeyInteraction.js.map +1 -1
- package/dist/collection/lib/interactions/flyToPositionKeyInteraction.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApi.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiOrthographic.js.map +1 -1
- package/dist/collection/lib/interactions/interactionApiPerspective.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/mouseInteractions.js.map +1 -1
- package/dist/collection/lib/interactions/multiElementInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/multiPointerInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/multiTouchInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/pointerInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/tapInteractionHandler.js.map +1 -1
- package/dist/collection/lib/interactions/touchInteractionHandler.js.map +1 -1
- package/dist/collection/lib/keyBinding.js.map +1 -1
- package/dist/collection/lib/mappers/annotation.js.map +1 -1
- package/dist/collection/lib/mappers/camera.js.map +1 -1
- package/dist/collection/lib/mappers/color.js.map +1 -1
- package/dist/collection/lib/mappers/colorMaterial.js.map +1 -1
- package/dist/collection/lib/mappers/corePb.js.map +1 -1
- package/dist/collection/lib/mappers/corePbJs.js.map +1 -1
- package/dist/collection/lib/mappers/frameStreaming.js.map +1 -1
- package/dist/collection/lib/mappers/geometry.js.map +1 -1
- package/dist/collection/lib/mappers/material.js.map +1 -1
- package/dist/collection/lib/mappers/pagination.js.map +1 -1
- package/dist/collection/lib/mappers/scalar.js.map +1 -1
- package/dist/collection/lib/mappers/streamAttributes.js.map +1 -1
- package/dist/collection/lib/markup/interactions.js.map +1 -1
- package/dist/collection/lib/measurement/controller.js.map +1 -1
- package/dist/collection/lib/measurement/entities.js.map +1 -1
- package/dist/collection/lib/measurement/interactions.js.map +1 -1
- package/dist/collection/lib/measurement/mapper.js.map +1 -1
- package/dist/collection/lib/measurement/model.js.map +1 -1
- package/dist/collection/lib/measurement/overlays.js.map +1 -1
- package/dist/collection/lib/measurement/results.js.map +1 -1
- package/dist/collection/lib/meters.js.map +1 -1
- package/dist/collection/lib/model-views/controller.js.map +1 -1
- package/dist/collection/lib/model-views/mapper.js.map +1 -1
- package/dist/collection/lib/pins/controller.js.map +1 -1
- package/dist/collection/lib/pins/interactions.js.map +1 -1
- package/dist/collection/lib/pmi/controller.js.map +1 -1
- package/dist/collection/lib/pmi/mapper.js.map +1 -1
- package/dist/collection/lib/rendering/canvas.js.map +1 -1
- package/dist/collection/lib/rendering/imageLoaders.js.map +1 -1
- package/dist/collection/lib/rendering/matrices.js.map +1 -1
- package/dist/collection/lib/rendering/timing.js.map +1 -1
- package/dist/collection/lib/rendering/utils.js.map +1 -1
- package/dist/collection/lib/rendering/vectors.js.map +1 -1
- package/dist/collection/lib/scene-items/controller.js.map +1 -1
- package/dist/collection/lib/scene-items/mapper.js.map +1 -1
- package/dist/collection/lib/scenes/camera.js.map +1 -1
- package/dist/collection/lib/scenes/cameraRenderResult.js.map +1 -1
- package/dist/collection/lib/scenes/colorMaterial.js.map +1 -1
- package/dist/collection/lib/scenes/crossSectioner.js.map +1 -1
- package/dist/collection/lib/scenes/mapper.js.map +1 -1
- package/dist/collection/lib/scenes/operations.js.map +1 -1
- package/dist/collection/lib/scenes/queries.js.map +1 -1
- package/dist/collection/lib/scenes/raycaster.js.map +1 -1
- package/dist/collection/lib/scenes/scene.js.map +1 -1
- package/dist/collection/lib/scenes/sceneOperationExecuteResult.js.map +1 -1
- package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
- package/dist/collection/lib/stencil.js.map +1 -1
- package/dist/collection/lib/storage.js.map +1 -1
- package/dist/collection/lib/stream/dispatcher.js.map +1 -1
- package/dist/collection/lib/stream/stream.js.map +1 -1
- package/dist/collection/lib/stream/utils.js.map +1 -1
- package/dist/collection/lib/teleportation/interactions.js.map +1 -1
- package/dist/collection/lib/templates.js.map +1 -1
- package/dist/collection/lib/token.js.map +1 -1
- package/dist/collection/lib/transforms/axis-lines.js.map +1 -1
- package/dist/collection/lib/transforms/axis-rotation.js.map +1 -1
- package/dist/collection/lib/transforms/axis-translation.js.map +1 -1
- package/dist/collection/lib/transforms/controller.js.map +1 -1
- package/dist/collection/lib/transforms/drawable.js.map +1 -1
- package/dist/collection/lib/transforms/hits.js.map +1 -1
- package/dist/collection/lib/transforms/line.js.map +1 -1
- package/dist/collection/lib/transforms/mesh.js.map +1 -1
- package/dist/collection/lib/transforms/shape.js.map +1 -1
- package/dist/collection/lib/transforms/transformation-delta.js.map +1 -1
- package/dist/collection/lib/transforms/util.js.map +1 -1
- package/dist/collection/lib/types/clippingPlanes.js.map +1 -1
- package/dist/collection/lib/types/depthBuffer.js.map +1 -1
- package/dist/collection/lib/types/featureMap.js.map +1 -1
- package/dist/collection/lib/types/flags.js.map +1 -1
- package/dist/collection/lib/types/frame.js.map +1 -1
- package/dist/collection/lib/types/frameCamera.js.map +1 -1
- package/dist/collection/lib/types/loadableResource.js.map +1 -1
- package/dist/collection/lib/types/orientation.js.map +1 -1
- package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
- package/dist/collection/lib/types/standardView.js.map +1 -1
- package/dist/collection/lib/types/stencilBuffer.js.map +1 -1
- package/dist/collection/lib/types/synchronizedClock.js.map +1 -1
- package/dist/collection/lib/types/viewport.js.map +1 -1
- package/dist/collection/lib/visibilityObserver.js.map +1 -1
- package/dist/collection/lib/volume-intersection/controller.js.map +1 -1
- package/dist/collection/lib/volume-intersection/interactions.js.map +1 -1
- package/dist/collection/lib/volume-intersection/model.js.map +1 -1
- package/dist/collection/lib/walk-mode/controller.js.map +1 -1
- package/dist/collection/lib/walk-mode/interactions.js.map +1 -1
- package/dist/collection/lib/walk-mode/model.js.map +1 -1
- package/dist/collection/lib/webgl/regl-component.js.map +1 -1
- package/dist/collection/testing/annotations.js.map +1 -1
- package/dist/collection/testing/canvases.js.map +1 -1
- package/dist/collection/testing/colors.js.map +1 -1
- package/dist/collection/testing/eventually.js.map +1 -1
- package/dist/collection/testing/fixtures.js.map +1 -1
- package/dist/collection/testing/grpc.js +3 -9
- package/dist/collection/testing/grpc.js.map +1 -1
- package/dist/collection/testing/modelViews.js.map +1 -1
- package/dist/collection/testing/pmi.js.map +1 -1
- package/dist/collection/testing/random.js.map +1 -1
- package/dist/collection/testing/resizeObserver.js.map +1 -1
- package/dist/collection/testing/scene-items-helper.js.map +1 -1
- package/dist/collection/testing/sceneTree.js.map +1 -1
- package/dist/collection/testing/viewer.js.map +1 -1
- package/dist/collection/testing/webgl.js.map +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/{p-St4ctu2K.js → p-3-bKfpqr.js} +2 -2
- package/dist/components/{p-St4ctu2K.js.map → p-3-bKfpqr.js.map} +1 -1
- package/dist/components/p-3DqRAYgO.js.map +1 -1
- package/dist/components/p-B-ToCp8-.js.map +1 -1
- package/dist/components/p-B156bTbY.js +5 -0
- package/dist/components/p-B156bTbY.js.map +1 -0
- package/dist/components/p-B9R0QWr4.js.map +1 -1
- package/dist/components/p-BCOD9yfw.js.map +1 -1
- package/dist/components/p-BHAaIoH5.js.map +1 -1
- package/dist/components/{p-Doltf1wO.js → p-BOJJZ1cN.js} +2 -2
- package/dist/components/p-BOJJZ1cN.js.map +1 -0
- package/dist/components/p-BkHp-aAR.js.map +1 -1
- package/dist/components/p-Bkm6H5uq.js.map +1 -1
- package/dist/components/p-C-VWDW9n.js.map +1 -1
- package/dist/components/p-C79PxobX.js.map +1 -1
- package/dist/components/p-CAugdB_8.js.map +1 -1
- package/dist/components/p-CEzVEgdQ.js.map +1 -1
- package/dist/components/p-CGCJ5hbJ.js.map +1 -1
- package/dist/components/p-COlcifvm.js.map +1 -1
- package/dist/components/p-CXTH3zrN.js.map +1 -1
- package/dist/components/p-CZCXdo3t.js.map +1 -1
- package/dist/components/p-Cd7kap5W.js.map +1 -1
- package/dist/components/p-CiSHWNC4.js.map +1 -1
- package/dist/components/p-CjG1fMh1.js.map +1 -1
- package/dist/components/p-CkjXRDNL.js.map +1 -1
- package/dist/components/p-D0KZu516.js.map +1 -1
- package/dist/components/p-D12q-fpW.js.map +1 -1
- package/dist/components/p-D33gVA2W.js.map +1 -1
- package/dist/components/p-DC86ZXai.js.map +1 -1
- package/dist/components/{p-B80hfIq6.js → p-DF4kEsJU.js} +2 -2
- package/dist/components/p-DF4kEsJU.js.map +1 -0
- package/dist/components/p-DRh4_Z-g.js.map +1 -1
- package/dist/components/p-DRnMrHWY.js.map +1 -1
- package/dist/components/{p-b0ZzPHz8.js → p-DUC59SSO.js} +2 -2
- package/dist/components/p-DUC59SSO.js.map +1 -0
- package/dist/components/p-DVW2WZTq.js.map +1 -1
- package/dist/components/p-DZI8pnGz.js.map +1 -1
- package/dist/components/p-Dbz9yUqC.js.map +1 -1
- package/dist/components/p-Yfi0i5Kj.js.map +1 -1
- package/dist/components/p-abSJ29r7.js.map +1 -1
- package/dist/components/p-ahjMltGJ.js.map +1 -1
- package/dist/components/p-bal2RLiw.js.map +1 -1
- package/dist/components/{p-BopQW1sA.js → p-oK38ynrd.js} +2 -2
- package/dist/components/p-oK38ynrd.js.map +1 -0
- package/dist/components/vertex-scene-tree-table-cell.js +1 -1
- package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
- package/dist/components/vertex-scene-tree-table-layout.js +1 -1
- package/dist/components/vertex-scene-tree.js +1 -1
- package/dist/components/vertex-scene-tree.js.map +1 -1
- package/dist/components/vertex-viewer-box-query-tool.js +1 -1
- package/dist/components/vertex-viewer-box-query-tool.js.map +1 -1
- package/dist/components/vertex-viewer-dom-element.js +1 -1
- package/dist/components/vertex-viewer-dom-group.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js.map +1 -1
- package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
- package/dist/components/vertex-viewer-markup.js +1 -1
- package/dist/components/vertex-viewer-markup.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-details.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js.map +1 -1
- package/dist/components/vertex-viewer-measurement-line.js +1 -1
- package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
- package/dist/components/vertex-viewer-measurement-precise.js +1 -1
- package/dist/components/vertex-viewer-measurement-precise.js.map +1 -1
- package/dist/components/vertex-viewer-pin-group.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js.map +1 -1
- package/dist/components/vertex-viewer-transform-widget.js +1 -1
- package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
- package/dist/components/vertex-viewer-view-cube.js +1 -1
- package/dist/components/vertex-viewer-view-cube.js.map +1 -1
- package/dist/components/vertex-viewer-walk-mode-tool.js.map +1 -1
- package/dist/components/vertex-viewer.js +1 -1
- package/dist/components/vertex-viewer.js.map +1 -1
- package/dist/esm/config-lglER3mU.js.map +1 -1
- package/dist/esm/controller-BMWGs-I6.js.map +1 -1
- package/dist/esm/controller-Iymb_J2R.js.map +1 -1
- package/dist/esm/cursors-BbBDEutb.js.map +1 -1
- package/dist/esm/dom-B3m2VjbN.js.map +1 -1
- package/dist/esm/dom-DX6pEG54.js.map +1 -1
- package/dist/esm/entities-zRken6VS.js.map +1 -1
- package/dist/esm/geometry_pb-BiZRfctN.js.map +1 -1
- package/dist/esm/grpc-CZAYqbTu.js.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/model-BYW5YIye.js.map +1 -1
- package/dist/esm/model-CLtwOS0o.js.map +1 -1
- package/dist/esm/model-D0EJdHmW.js.map +1 -1
- package/dist/esm/model-DHJ5aE4y.js.map +1 -1
- package/dist/esm/multiElementInteractionHandler-DwjL-r55.js.map +1 -1
- package/dist/esm/overlays-BE1oqniA.js.map +1 -1
- package/dist/esm/queries-DEzCmbTD.js.map +1 -1
- package/dist/esm/regl-component-DmkowWhg.js.map +1 -1
- package/dist/esm/representation_pb-g4f0WC4k.js.map +1 -1
- package/dist/esm/results-CFB6nKu8.js.map +1 -1
- package/dist/esm/row-CiSHWNC4.js.map +1 -1
- package/dist/esm/stencil-BV-7pO4q.js.map +1 -1
- package/dist/esm/streamAttributes-Cp8PEH9A.js.map +1 -1
- package/dist/esm/templates-DRh4_Z-g.js.map +1 -1
- package/dist/esm/util-BCZZYmp4.js.map +1 -1
- package/dist/esm/utils-BvZ9-fs0.js.map +1 -1
- package/dist/esm/utils-DC86ZXai.js.map +1 -1
- package/dist/esm/utils-D_pIldrS.js.map +1 -1
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +6 -8
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +2 -2
- package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-box-query-tool.entry.js +2 -2
- package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-icon.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-details.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-distance.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-precise.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-group.entry.js +2 -2
- package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-teleport-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-transform-widget.entry.js +4 -5
- package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-walk-mode-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer.entry.js +9 -5
- package/dist/esm/vertex-viewer.entry.js.map +1 -1
- package/dist/esm/viewport-C8WQZxvx.js.map +1 -1
- package/dist/types/regl-shape.d.ts +1 -1
- package/dist/viewer/index.esm.js.map +1 -1
- package/dist/viewer/{p-eac63070.entry.js → p-051b5154.entry.js} +2 -2
- package/dist/viewer/p-051b5154.entry.js.map +1 -0
- package/dist/viewer/{p-3d3a7eeb.entry.js → p-0984c51f.entry.js} +2 -2
- package/dist/viewer/{p-3d3a7eeb.entry.js.map → p-0984c51f.entry.js.map} +1 -1
- package/dist/viewer/{p-864f40c7.entry.js → p-11cf755a.entry.js} +2 -2
- package/dist/viewer/p-11cf755a.entry.js.map +1 -0
- package/dist/viewer/{p-29d14611.entry.js → p-16775f7d.entry.js} +2 -2
- package/dist/viewer/p-16775f7d.entry.js.map +1 -0
- package/dist/viewer/{p-5a85cae5.entry.js → p-1eb636f8.entry.js} +2 -2
- package/dist/viewer/p-1eb636f8.entry.js.map +1 -0
- package/dist/viewer/{p-e993f300.entry.js → p-228d1d43.entry.js} +2 -2
- package/dist/viewer/p-228d1d43.entry.js.map +1 -0
- package/dist/viewer/p-33f44cc1.entry.js.map +1 -1
- package/dist/viewer/{p-3300d3dc.entry.js → p-35601c85.entry.js} +2 -2
- package/dist/viewer/p-35601c85.entry.js.map +1 -0
- package/dist/viewer/p-47766566.entry.js.map +1 -1
- package/dist/viewer/p-6e3a6bbd.entry.js.map +1 -1
- package/dist/viewer/p-7f388b45.entry.js.map +1 -1
- package/dist/viewer/p-89544066.entry.js.map +1 -1
- package/dist/viewer/{p-07b99ac9.entry.js → p-8c369777.entry.js} +2 -2
- package/dist/viewer/p-8c369777.entry.js.map +1 -0
- package/dist/viewer/{p-e59983dc.entry.js → p-9835c5e2.entry.js} +2 -2
- package/dist/viewer/p-9835c5e2.entry.js.map +1 -0
- package/dist/viewer/{p-aa95e21a.entry.js → p-9d8ff406.entry.js} +2 -2
- package/dist/viewer/p-9d8ff406.entry.js.map +1 -0
- package/dist/viewer/p-BDvACHun.js.map +1 -1
- package/dist/viewer/p-BIkuvTVH.js.map +1 -1
- package/dist/viewer/p-BRPkbTVP.js.map +1 -1
- package/dist/viewer/p-BsBIynwj.js.map +1 -1
- package/dist/viewer/p-BxtKMwBH.js.map +1 -1
- package/dist/viewer/p-C4y4Noe-.js.map +1 -1
- package/dist/viewer/p-C6KrfydC.js.map +1 -1
- package/dist/viewer/p-C7dYsPFU.js.map +1 -1
- package/dist/viewer/p-C9Cqbq6H.js.map +1 -1
- package/dist/viewer/p-CVWO4w6b.js.map +1 -1
- package/dist/viewer/p-ChqXy0cG.js.map +1 -1
- package/dist/viewer/p-CiSHWNC4.js.map +1 -1
- package/dist/viewer/p-CjG1fMh1.js.map +1 -1
- package/dist/viewer/p-Cs5KOvOQ.js.map +1 -1
- package/dist/viewer/p-CyGlYje2.js.map +1 -1
- package/dist/viewer/p-D6eJC1q4.js.map +1 -1
- package/dist/viewer/p-DC86ZXai.js.map +1 -1
- package/dist/viewer/p-DRh4_Z-g.js.map +1 -1
- package/dist/viewer/p-DUX5FvBC.js.map +1 -1
- package/dist/viewer/p-DX6pEG54.js.map +1 -1
- package/dist/viewer/p-D_ixWHO7.js.map +1 -1
- package/dist/viewer/p-DacE-wPp.js.map +1 -1
- package/dist/viewer/p-Dp56p_jX.js.map +1 -1
- package/dist/viewer/p-EsKoKfmx.js.map +1 -1
- package/dist/viewer/p-F8e15or2.js.map +1 -1
- package/dist/viewer/p-Jfxh0jq9.js.map +1 -1
- package/dist/viewer/p-WPRMWirY.js.map +1 -1
- package/dist/viewer/p-_93RRNxT.js.map +1 -1
- package/dist/viewer/p-a8a81cba.entry.js +5 -0
- package/dist/viewer/p-a8a81cba.entry.js.map +1 -0
- package/dist/viewer/p-a9282481.entry.js.map +1 -1
- package/dist/viewer/{p-63f4f702.entry.js → p-c7e62d66.entry.js} +2 -2
- package/dist/viewer/p-c7e62d66.entry.js.map +1 -0
- package/dist/viewer/p-d37e647b.entry.js.map +1 -1
- package/dist/viewer/{p-302f2078.entry.js → p-d9fe788f.entry.js} +2 -2
- package/dist/viewer/p-d9fe788f.entry.js.map +1 -0
- package/dist/viewer/p-e9b83dae.entry.js.map +1 -1
- package/dist/viewer/{p-70f3629d.entry.js → p-f271dc4a.entry.js} +2 -2
- package/dist/viewer/p-f271dc4a.entry.js.map +1 -0
- package/dist/viewer/p-f65c0769.entry.js.map +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +7 -7
- package/dist/components/p-B80hfIq6.js.map +0 -1
- package/dist/components/p-BopQW1sA.js.map +0 -1
- package/dist/components/p-DNtS2F8J.js +0 -5
- package/dist/components/p-DNtS2F8J.js.map +0 -1
- package/dist/components/p-Doltf1wO.js.map +0 -1
- package/dist/components/p-b0ZzPHz8.js.map +0 -1
- package/dist/viewer/p-07b99ac9.entry.js.map +0 -1
- package/dist/viewer/p-29d14611.entry.js.map +0 -1
- package/dist/viewer/p-302f2078.entry.js.map +0 -1
- package/dist/viewer/p-3300d3dc.entry.js.map +0 -1
- package/dist/viewer/p-5a85cae5.entry.js.map +0 -1
- package/dist/viewer/p-60c915e3.entry.js +0 -5
- package/dist/viewer/p-60c915e3.entry.js.map +0 -1
- package/dist/viewer/p-63f4f702.entry.js.map +0 -1
- package/dist/viewer/p-70f3629d.entry.js.map +0 -1
- package/dist/viewer/p-864f40c7.entry.js.map +0 -1
- package/dist/viewer/p-aa95e21a.entry.js.map +0 -1
- package/dist/viewer/p-e59983dc.entry.js.map +0 -1
- package/dist/viewer/p-e993f300.entry.js.map +0 -1
- package/dist/viewer/p-eac63070.entry.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{p as e,g as n,b as a}from"./p-CCVkga9Q.js";export{s as setNonce}from"./p-CCVkga9Q.js";var t=()=>{const n=import.meta.url;const a={};if(n!==""){a.resourcesUrl=new URL(".",n).href}return e(a)};t().then((async e=>{await n();return a(JSON.parse('[["p-864f40c7",[[257,"vertex-scene-tree",{"overScanCount":[2,"over-scan-count"],"viewerSelector":[1,"viewer-selector"],"viewer":[1040],"rowData":[16],"config":[1],"configEnv":[1,"config-env"],"controller":[1040],"searchOptions":[1040],"metadataSearchExactMatch":[1028,"metadata-search-exact-match"],"metadataSearchKeys":[1040],"metadataKeys":[16],"operationAnimationDuration":[2,"operation-animation-duration"],"rows":[32],"totalRows":[32],"showLoader":[32],"showEmptyResults":[32],"stateMap":[32],"errorDetails":[32],"hasPartialFilterResults":[32],"refreshingResults":[32],"attemptingRetry":[32],"invalidateRows":[64],"scrollToIndex":[64],"scrollToItem":[64],"expandAll":[64],"collapseAll":[64],"expandItem":[64],"collapseItem":[64],"toggleExpandItem":[64],"toggleItemVisibility":[64],"hideItem":[64],"showItem":[64],"selectItem":[64],"deselectItem":[64],"isolateItem":[64],"getRowAtIndex":[64],"getRowForItemId":[64],"getRowForEvent":[64],"getRowAtClientY":[64],"filterItems":[64],"selectFilteredItems":[64],"fetchMetadataKeys":[64]},[[0,"search","handleSearch"],[0,"cellLoaded","handleCellLoaded"]],{"viewer":[{"handleViewerChanged":0}],"controller":[{"handleControllerChanged":0}],"metadataKeys":[{"handleMetadataKeysChanged":0}]}]]],["p-e59983dc",[[1,"vertex-viewer-pin-tool",{"pinController":[1040],"pinModel":[16],"viewer":[16],"tool":[1025],"mode":[1025],"primaryColor":[1025,"primary-color"],"accentColor":[1025,"accent-color"],"pins":[32],"selectedPinId":[32],"elementBounds":[32],"projectionViewMatrix":[32]},null,{"mode":[{"watchModeChange":0}],"tool":[{"watchTypeChange":0}],"accentColor":[{"watchAccentColorChange":0}],"primaryColor":[{"watchPrimaryColorChange":0}],"pins":[{"watchPinsChange":0}],"viewer":[{"handleViewerChanged":0}]}]]],["p-5963afa1",[[1,"vertex-viewer-default-toolbar",{"viewer":[16],"placement":[1],"direction":[1],"animationsDisabled":[4,"animations-disabled"],"animationMs":[2,"animation-ms"]}]]],["p-e993f300",[[257,"vertex-viewer-markup",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"selectedMarkupId":[1025,"selected-markup-id"],"selectNew":[4,"select-new"],"startLineAnchorStyle":[1025,"start-line-anchor-style"],"endLineAnchorStyle":[1025,"end-line-anchor-style"],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"toSelectMarkupId":[32],"pointerDownPosition":[32],"addMarkup":[64],"removeMarkup":[64],"getMarkupElements":[64],"getMarkupElement":[64]},[[0,"markupEnd","handleMarkupEnd"],[0,"interactionEnd","handleMarkupUpdated"],[1,"pointerdown","handleMarkupPointerDown"]],{"selectedMarkupId":[{"handleSelectedMarkupIdChanged":0}],"arrowTemplateId":[{"handlePropertyChanged":0}],"circleTemplateId":[{"handlePropertyChanged":0}],"freeformTemplateId":[{"handlePropertyChanged":0}],"tool":[{"handlePropertyChanged":0}],"viewer":[{"handleViewerChanged":0}],"originatingViewport":[{"handleViewerChanged":0}],"centeringBehavior":[{"handleViewerChanged":0}],"offset":[{"handleViewerChanged":0}],"scale":[{"handleViewerChanged":0}],"disabled":[{"handleDisabledChanged":0}],"startLineAnchorStyle":[{"handleStartLineAnchorStyleChanged":0}],"endLineAnchorStyle":[{"handleEndLineAnchorStyleChanged":0}]}]]],["p-7f388b45",[[257,"vertex-viewer-markup-tool",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"startLineAnchorStyle":[1025,"start-line-anchor-style"],"endLineAnchorStyle":[1025,"end-line-anchor-style"],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"stateMap":[32],"reset":[64]},null,{"viewer":[{"handleViewerChanged":0}],"arrowTemplateId":[{"handlePropertyChanged":0}],"circleTemplateId":[{"handlePropertyChanged":0}],"disabled":[{"handlePropertyChanged":0}],"endLineAnchorStyle":[{"handlePropertyChanged":0}],"freeformTemplateId":[{"handlePropertyChanged":0}],"startLineAnchorStyle":[{"handlePropertyChanged":0}],"tool":[{"handlePropertyChanged":0}],"scale":[{"handleScalingConfigurationChanged":0}],"offset":[{"handleScalingConfigurationChanged":0}],"originatingViewport":[{"handleScalingConfigurationChanged":0}],"centeringBehavior":[{"handleScalingConfigurationChanged":0}]}]]],["p-3300d3dc",[[1,"vertex-viewer-view-cube",{"xPositiveLabel":[1,"x-positive-label"],"xNegativeLabel":[1,"x-negative-label"],"yPositiveLabel":[1,"y-positive-label"],"yNegativeLabel":[1,"y-negative-label"],"zPositiveLabel":[1,"z-positive-label"],"zNegativeLabel":[1,"z-negative-label"],"standardViewsOff":[4,"standard-views-off"],"viewAll":[4,"view-all"],"animationDuration":[2,"animation-duration"],"triadOff":[4,"triad-off"],"worldOrientation":[1040],"camera":[1040],"viewer":[16],"boxLength":[32],"triadPosition":[32]},null,{"viewer":[{"handleViewerChanged":0}]}]]],["p-e9b83dae",[[1,"vertex-viewer-measurement-distance",{"start":[1040],"startJson":[1,"start-json"],"end":[1040],"endJson":[1,"end-json"],"distance":[1026],"showAxisReferenceLines":[4,"show-axis-reference-lines"],"snapDistance":[2,"snap-distance"],"units":[1],"fractionalDigits":[2,"fractional-digits"],"labelFormatter":[16],"anchorLabelOffset":[2,"anchor-label-offset"],"lineCapLength":[2,"line-cap-length"],"mode":[513],"interactingAnchor":[1537,"interacting-anchor"],"invalid":[1540],"camera":[16],"hitProvider":[16],"indicatorPt":[1040],"viewer":[16],"measurementModel":[16],"viewport":[32],"elementBounds":[32],"interactionCount":[32],"internalCamera":[32],"invalidateStateCounter":[32],"stateMap":[32],"measurementUnits":[32],"computeElementMetrics":[64]},null,{"viewer":[{"handleViewerChanged":0}],"units":[{"handleUnitsChanged":1}],"camera":[{"handleCameraChanged":0}],"mode":[{"handleModeChanged":0}],"start":[{"handleStartChanged":0}],"end":[{"handleEndChanged":0}],"invalid":[{"handleInvalidChanged":0}]}]]],["p-f65c0769",[[1,"vertex-viewer-measurement-precise",{"measurementModel":[16],"measurementOverlays":[16],"measurementController":[1040],"measurableEntityTypes":[16],"viewer":[16],"configEnv":[1,"config-env"],"config":[1]},null,{"measurableEntityTypes":[{"handleMeasurableEntityTypesChanged":0}],"measurementController":[{"handleMeasurementControllerChanged":0}],"measurementModel":[{"handleMeasurementModelChanged":1}],"viewer":[{"handleViewerChanged":0}]}]]],["p-63f4f702",[[257,"vertex-scene-tree-table-cell",{"node":[16],"tree":[16],"value":[1],"placeholder":[1],"alwaysShowIcons":[4,"always-show-icons"],"hovered":[1028],"isScrolling":[4,"is-scrolling"],"expandToggle":[4,"expand-toggle"],"endItemIndicator":[4,"end-item-indicator"],"visibilityToggle":[4,"visibility-toggle"],"isolateButton":[4,"isolate-button"],"selectionHandler":[16],"visibilityHandler":[16],"expansionHandler":[16],"isolateHandler":[16],"hoverController":[16]}]]],["p-b5cc83a4",[[1,"vertex-viewer-annotation-callout",{"data":[16],"iconSize":[1,"icon-size"]}]]],["p-aa95e21a",[[257,"vertex-viewer-box-query-tool",{"viewer":[16],"controller":[1040],"model":[1040],"operationType":[1,"operation-type"],"mode":[1],"details":[32]},null,{"viewer":[{"handleViewerChanged":0}],"operationType":[{"handleDefaultOperationChange":0}],"mode":[{"handleModeChange":0}],"controller":[{"handleControllerChange":0}]}]]],["p-47766566",[[257,"vertex-viewer-walk-mode-tool",{"viewer":[16],"controller":[1040],"model":[1040],"teleportMode":[1,"teleport-mode"],"enabled":[4]},null,{"enabled":[{"handleEnabledChanged":0}],"viewer":[{"handleViewerChanged":0}],"teleportMode":[{"handleTeleportModeChanged":0}],"controller":[{"handleControllerChanged":0}],"model":[{"handleModelChanged":0}]}]]],["p-686eef80",[[257,"vertex-scene-tree-table-column",{"initialWidth":[2,"initial-width"],"minWidth":[2,"min-width"],"maxWidth":[2,"max-width"]}]]],["p-c7bd9aea",[[257,"vertex-scene-tree-table-header"]]],["p-dad8f3cf",[[257,"vertex-scene-tree-table-resize-divider",{"hovering":[32],"dragging":[32]}]]],["p-cf2ea8e9",[[257,"vertex-scene-tree-toolbar-group"]]],["p-07b99ac9",[[257,"vertex-viewer",{"src":[1],"clientId":[1,"client-id"],"deviceId":[1025,"device-id"],"config":[1],"configEnv":[1,"config-env"],"resolvedConfig":[1040],"cameraControls":[4,"camera-controls"],"cameraType":[1537,"camera-type"],"keyboardControls":[4,"keyboard-controls"],"rotateAroundTapPoint":[4,"rotate-around-tap-point"],"token":[1025],"depthBuffers":[1,"depth-buffers"],"phantom":[16],"noDefaultLights":[4,"no-default-lights"],"enableTemporalRefinement":[4,"enable-temporal-refinement"],"experimentalRenderingOptions":[1,"experimental-rendering-options"],"featureLines":[16],"selectionHighlighting":[16],"featureHighlighting":[16],"sceneComparison":[16],"crossSectioning":[16],"featureMaps":[1,"feature-maps"],"resizeDebounce":[2,"resize-debounce"],"frame":[1040],"stream":[1040],"stencilBuffer":[1040],"viewport":[1040],"annotations":[1040],"modelViews":[1040],"pmi":[1040],"sceneItems":[1040],"canvases":[1040],"experimentalSkipVisibilityCheck":[4,"experimental-skip-visibility-check"],"dimensions":[32],"hostDimensions":[32],"errorMessage":[32],"cursor":[32],"stateMap":[32],"dispatchFrameDrawn":[64],"registerInteractionHandler":[64],"registerBasicInteractionHandler":[64],"registerTapKeyInteraction":[64],"getInteractionTarget_DEPRECATED":[64],"addCursor":[64],"getInteractionHandlers":[64],"getKeyInteractions":[64],"getBaseInteractionHandler":[64],"getJwt":[64],"load":[64],"unload":[64],"reload":[64],"scene":[64],"isSceneReady":[64]},[[0,"tap","handleTapEvent"]],{"src":[{"handleSrcChanged":0}],"cameraControls":[{"handleCameraControlsChanged":0}],"keyboardControls":[{"handleKeyboardControlsChanged":0}],"rotateAroundTapPoint":[{"handleRotateAboutTapPointChanged":0}],"cameraType":[{"handleCameraTypeChanged":0}],"crossSectioning":[{"handleStreamAttributesChanged":0}],"depthBuffers":[{"handleStreamAttributesChanged":0}],"experimentalRenderingOptions":[{"handleStreamAttributesChanged":0}],"featureHighlighting":[{"handleStreamAttributesChanged":0}],"featureLines":[{"handleStreamAttributesChanged":0}],"featureMaps":[{"handleStreamAttributesChanged":0}],"noDefaultLights":[{"handleStreamAttributesChanged":0}],"phantom":[{"handleStreamAttributesChanged":0}],"sceneComparison":[{"handleStreamAttributesChanged":0}],"selectionHighlighting":[{"handleStreamAttributesChanged":0}],"enableTemporalRefinement":[{"handleEnableTemporalRefinementChanged":0}],"config":[{"handleConfigChanged":0}],"configEnv":[{"handleConfigEnvChanged":0}]}]]],["p-60c915e3",[[1,"vertex-viewer-hit-result-indicator",{"viewer":[16],"position":[1040],"normal":[1040]},null,{"viewer":[{"handleViewerChanged":0}],"position":[{"handlePositionChanged":0}],"normal":[{"handleNormalChanged":0}]}]]],["p-33f44cc1",[[1,"vertex-viewer-measurement-details",{"measurementModel":[16],"measurementOverlays":[16],"measurementOutcome":[1040],"distanceUnits":[1,"distance-units"],"angleUnits":[1,"angle-units"],"fractionalDigits":[2,"fractional-digits"],"distanceFormatter":[16],"angleFormatter":[16],"areaFormatter":[16],"resultTypes":[16],"overlay":[32],"distanceMeasurementUnits":[32],"angleMeasurementUnits":[32],"areaMeasurementUnits":[32]},null,{"distanceUnits":[{"handleDistanceUnitsChanged":1}],"angleUnits":[{"handleAngleUnitsChanged":1}],"measurementModel":[{"handleMeasurementModelChanged":1}],"resultTypes":[{"handleResultTypesChanged":0}]}]]],["p-eac63070",[[1,"vertex-viewer-transform-widget",{"viewer":[16],"position":[1040],"rotation":[1040],"controller":[1040],"xRotationDisabled":[1028,"x-rotation-disabled"],"yRotationDisabled":[1028,"y-rotation-disabled"],"zRotationDisabled":[1028,"z-rotation-disabled"],"xTranslationDisabled":[1028,"x-translation-disabled"],"yTranslationDisabled":[1028,"y-translation-disabled"],"zTranslationDisabled":[1028,"z-translation-disabled"],"xyTranslationDisabled":[1028,"xy-translation-disabled"],"xzTranslationDisabled":[1028,"xz-translation-disabled"],"yzTranslationDisabled":[1028,"yz-translation-disabled"],"showInputs":[4,"show-inputs"],"distanceUnit":[1,"distance-unit"],"angleUnit":[1,"angle-unit"],"decimalPlaces":[2,"decimal-places"],"rotationSnapDegrees":[2,"rotation-snap-degrees"],"rotationSnapKey":[1,"rotation-snap-key"],"translationHandleScalar":[2,"translation-handle-scalar"],"rotationHandleScalar":[2,"rotation-handle-scalar"],"interactionThrottle":[2,"interaction-throttle"],"EXPERIMENTAL_undoKeybindings":[4,"e-x-p-e-r-i-m-e-n-t-a-l_undo-keybindings"],"hovered":[1040],"inputPosition":[32],"inputValue":[32],"isEndingTransform":[32],"EXPERIMENTAL_undo":[64]},null,{"viewer":[{"handleViewerChanged":0}],"xTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"yTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"zTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"xyTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"xzTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"yzTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"xRotationDisabled":[{"handleDisabledPropertyChanged":0}],"yRotationDisabled":[{"handleDisabledPropertyChanged":0}],"zRotationDisabled":[{"handleDisabledPropertyChanged":0}],"translationHandleScalar":[{"handleTransformHandleScalarChanged":0}],"rotationHandleScalar":[{"handleTransformHandleScalarChanged":0}],"rotation":[{"handleRotationChanged":0}],"position":[{"handlePositionChanged":0}],"distanceUnit":[{"handleInputFormattingChanged":0}],"angleUnit":[{"handleInputFormattingChanged":0}],"decimalPlaces":[{"handleInputFormattingChanged":0}]}]]],["p-5a85cae5",[[0,"vertex-viewer-pin-group",{"pin":[16],"matrix":[1040],"projectionViewMatrix":[16],"elementBounds":[1040],"pinModel":[16],"pinController":[1040],"selected":[4],"occluded":[1540],"detached":[1540],"invalidateStateCounter":[32]},[[0,"occlusionStateChanged","handleOcclusionStateChanged"],[0,"detachedStateChanged","handleDetachedStateChanged"]]]]],["p-3d3a7eeb",[[262,"vertex-viewer-dom-group",{"position":[1040],"positionJson":[1,"position"],"rotation":[1040],"rotationJson":[1,"rotation"],"quaternion":[1040],"quaternionJson":[1,"quaternion"],"scale":[1040],"scaleJson":[1,"scale"],"matrix":[1040]},null,{"position":[{"handlePositionChange":0}],"positionJson":[{"handlePositionJsonChanged":0}],"rotation":[{"handleRotationChanged":0}],"rotationJson":[{"handleRotationJsonChanged":0}],"quaternion":[{"handleQuaternionChange":0}],"quaternionJson":[{"handleQuaternionJsonChanged":0}],"scale":[{"handleScaleChange":0}],"scaleJson":[{"handleScaleJsonChanged":0}],"matrix":[{"handleMatrixChanged":0}]}]]],["p-89544066",[[1,"vertex-viewer-teleport-tool",{"viewer":[16],"mode":[1025],"animationsDisabled":[4,"animations-disabled"],"animationMs":[2,"animation-ms"],"controller":[1040],"model":[1040]},null,{"mode":[{"handleModeChange":0}],"viewer":[{"handleViewerChanged":0}],"animationMs":[{"handleAnimationMsChanged":0}],"animationsDisabled":[{"handleAnimationsDisabledChanged":0}],"controller":[{"handleControllerChanged":0}],"model":[{"handleModelChanged":0}]}]]],["p-e98db875",[[1,"vertex-viewer-spinner",{"size":[1]}]]],["p-ba57a018",[[257,"vertex-viewer-layer",{"stretchOff":[516,"stretch-off"]}]]],["p-dd5d4304",[[257,"vertex-viewer-toolbar",{"placement":[1],"direction":[1]}],[257,"vertex-viewer-button"],[257,"vertex-viewer-toolbar-group",{"direction":[1]}]]],["p-302f2078",[[257,"vertex-scene-tree-search",{"debounce":[2],"disabled":[4],"placeholder":[1],"controller":[16],"value":[1025],"focused":[32],"isSearching":[32],"setFocus":[64],"clear":[64]},null,{"controller":[{"controllerChanged":0}]}],[1,"vertex-scene-tree-notification-banner",{"message":[1],"actionLabel":[1,"action-label"]}],[257,"vertex-scene-tree-table-layout",{"tree":[16],"controller":[16],"rows":[16],"totalRows":[2,"total-rows"],"rowHeight":[1026,"row-height"],"overScanCount":[2,"over-scan-count"],"rowData":[16],"layoutOffset":[1026,"layout-offset"],"scrollOffset":[1026,"scroll-offset"],"layoutHeight":[1026,"layout-height"],"layoutWidth":[1026,"layout-width"],"viewportStartIndex":[1026,"viewport-start-index"],"viewportEndIndex":[1026,"viewport-end-index"],"columnGridLayout":[32],"columnGridFixedLayout":[32],"isComputingCellHeight":[32],"lastDividerPointerPosition":[32],"resizingColumnIndex":[32],"isScrolling":[32],"scrollTimer":[32],"stateMap":[32],"scrollToPosition":[64],"attemptComputeCellHeight":[64]},null,{"rows":[{"handleViewportRowsPropsChanged":0}],"totalRows":[{"handleViewportRowsPropsChanged":0}],"rowHeight":[{"handleViewportRowsPropsChanged":0}]}],[257,"vertex-scene-tree-toolbar"]]],["p-6e3a6bbd",[[0,"vertex-viewer-pin-label",{"pin":[16],"elementBounds":[16],"value":[1025],"pinController":[1040],"focused":[32],"computedScreenPosition":[32],"textareaRows":[32],"contentElBounds":[32],"setFocus":[64],"submit":[64]},null,{"focused":[{"watchFocusChange":0}],"pin":[{"watchPinChange":0}],"elementBounds":[{"watchElementBoundsChange":0}]}],[0,"vertex-viewer-pin-label-line",{"pinPoint":[16],"labelPoint":[16],"pin":[16]}]]],["p-70f3629d",[[1,"vertex-viewer-measurement-overlays",{"measurementOverlays":[16],"camera":[1040],"viewer":[16],"overlays":[32]},null,{"measurementOverlays":[{"handleMeasurementOverlaysChanged":0}],"viewer":[{"handleViewerChanged":0}]}],[1,"vertex-viewer-measurement-line",{"start":[16],"end":[16],"capLength":[2,"cap-length"],"pointerEvents":[1,"pointer-events"]}]]],["p-29d14611",[[262,"vertex-viewer-dom-renderer",{"drawMode":[1,"draw-mode"],"propagateEventsToViewer":[4,"propagate-events-to-viewer"],"viewer":[16],"camera":[1040],"depthBuffer":[1040],"viewport":[32],"invalidateFrameCounter":[32],"interactionDisposables":[32]},[[0,"propertyChange","handlePropertyChange"]],{"viewer":[{"handleViewerChange":0}]}],[257,"vertex-viewer-dom-element",{"position":[1040],"positionJson":[1,"position"],"rotation":[1040],"rotationJson":[1,"rotation"],"quaternion":[1040],"quaternionJson":[1,"quaternion"],"scale":[1040],"scaleJson":[1,"scale"],"matrix":[1040],"occlusionOff":[4,"occlusion-off"],"occluded":[516],"detachedOff":[4,"detached-off"],"detached":[516],"billboardOff":[4,"billboard-off"],"interactionsOff":[516,"interactions-off"]},null,{"position":[{"handlePositionChange":1}],"positionJson":[{"handlePositionJsonChanged":1}],"rotation":[{"handleRotationChanged":1}],"rotationJson":[{"handleRotationJsonChanged":1}],"quaternion":[{"handleQuaternionChange":1}],"quaternionJson":[{"handleQuaternionJsonChanged":1}],"scale":[{"handleScaleChange":1}],"scaleJson":[{"handleScaleJsonChanged":1}],"matrix":[{"handleMatrixChanged":0}],"occluded":[{"handleOcclusionStateChanged":0}],"detached":[{"handleDetachedStateChanged":0}]}]]],["p-d37e647b",[[1,"vertex-viewer-markup-arrow",{"start":[1040],"startJson":[1,"start"],"end":[1040],"endJson":[1,"end"],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"startLineAnchorStyle":[1025,"start-line-anchor-style"],"endLineAnchorStyle":[1025,"end-line-anchor-style"],"mode":[513],"viewer":[16],"elementBounds":[32],"dispose":[64]},null,{"viewer":[{"handleViewerChanged":0}],"start":[{"handleStartJsonChange":0}],"end":[{"handleEndJsonChange":0}],"mode":[{"handleModeChange":0}],"offset":[{"handleScalingConfigurationChange":0}],"originatingViewport":[{"handleScalingConfigurationChange":0}],"centeringBehavior":[{"handleScalingConfigurationChange":0}],"scale":[{"handleScalingConfigurationChange":0},{"handleScaleChange":0}]}],[1,"vertex-viewer-markup-circle",{"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"elementBounds":[32],"dispose":[64]},null,{"viewer":[{"handleViewerChanged":0}],"bounds":[{"handleBoundsJsonChange":0}],"mode":[{"handleModeChange":0}],"offset":[{"handleScalingConfigurationChange":0}],"originatingViewport":[{"handleScalingConfigurationChange":0}],"centeringBehavior":[{"handleScalingConfigurationChange":0}],"scale":[{"handleScalingConfigurationChange":0},{"handleScaleChange":0}]}],[1,"vertex-viewer-markup-freeform",{"points":[1040],"pointsJson":[1,"points"],"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"elementBounds":[32],"screenPoints":[32],"dispose":[64]},null,{"viewer":[{"handleViewerChanged":0}],"originatingViewport":[{"recomputePointsFromProps":0},{"handleScalingConfigurationChange":0}],"offset":[{"recomputePointsFromProps":0},{"handleScalingConfigurationChange":0}],"scale":[{"recomputePointsFromProps":0},{"handleScalingConfigurationChange":0},{"handleScaleChange":0}],"bounds":[{"recomputePointsFromProps":0}],"points":[{"recomputePointsFromProps":0}],"centeringBehavior":[{"handleScalingConfigurationChange":0}],"mode":[{"handleModeChange":0}]}]]],["p-a9282481",[[1,"vertex-viewer-icon",{"name":[1],"size":[1]}]]]]'),e)}));
|
|
4
|
+
import{p as e,g as n,b as a}from"./p-CCVkga9Q.js";export{s as setNonce}from"./p-CCVkga9Q.js";var t=()=>{const n=import.meta.url;const a={};if(n!==""){a.resourcesUrl=new URL(".",n).href}return e(a)};t().then((async e=>{await n();return a(JSON.parse('[["p-11cf755a",[[257,"vertex-scene-tree",{"overScanCount":[2,"over-scan-count"],"viewerSelector":[1,"viewer-selector"],"viewer":[1040],"rowData":[16],"config":[1],"configEnv":[1,"config-env"],"controller":[1040],"searchOptions":[1040],"metadataSearchExactMatch":[1028,"metadata-search-exact-match"],"metadataSearchKeys":[1040],"metadataKeys":[16],"operationAnimationDuration":[2,"operation-animation-duration"],"rows":[32],"totalRows":[32],"showLoader":[32],"showEmptyResults":[32],"stateMap":[32],"errorDetails":[32],"hasPartialFilterResults":[32],"refreshingResults":[32],"attemptingRetry":[32],"invalidateRows":[64],"scrollToIndex":[64],"scrollToItem":[64],"expandAll":[64],"collapseAll":[64],"expandItem":[64],"collapseItem":[64],"toggleExpandItem":[64],"toggleItemVisibility":[64],"hideItem":[64],"showItem":[64],"selectItem":[64],"deselectItem":[64],"isolateItem":[64],"getRowAtIndex":[64],"getRowForItemId":[64],"getRowForEvent":[64],"getRowAtClientY":[64],"filterItems":[64],"selectFilteredItems":[64],"fetchMetadataKeys":[64]},[[0,"search","handleSearch"],[0,"cellLoaded","handleCellLoaded"]],{"viewer":[{"handleViewerChanged":0}],"controller":[{"handleControllerChanged":0}],"metadataKeys":[{"handleMetadataKeysChanged":0}]}]]],["p-9835c5e2",[[1,"vertex-viewer-pin-tool",{"pinController":[1040],"pinModel":[16],"viewer":[16],"tool":[1025],"mode":[1025],"primaryColor":[1025,"primary-color"],"accentColor":[1025,"accent-color"],"pins":[32],"selectedPinId":[32],"elementBounds":[32],"projectionViewMatrix":[32]},null,{"mode":[{"watchModeChange":0}],"tool":[{"watchTypeChange":0}],"accentColor":[{"watchAccentColorChange":0}],"primaryColor":[{"watchPrimaryColorChange":0}],"pins":[{"watchPinsChange":0}],"viewer":[{"handleViewerChanged":0}]}]]],["p-5963afa1",[[1,"vertex-viewer-default-toolbar",{"viewer":[16],"placement":[1],"direction":[1],"animationsDisabled":[4,"animations-disabled"],"animationMs":[2,"animation-ms"]}]]],["p-228d1d43",[[257,"vertex-viewer-markup",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"selectedMarkupId":[1025,"selected-markup-id"],"selectNew":[4,"select-new"],"startLineAnchorStyle":[1025,"start-line-anchor-style"],"endLineAnchorStyle":[1025,"end-line-anchor-style"],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"toSelectMarkupId":[32],"pointerDownPosition":[32],"addMarkup":[64],"removeMarkup":[64],"getMarkupElements":[64],"getMarkupElement":[64]},[[0,"markupEnd","handleMarkupEnd"],[0,"interactionEnd","handleMarkupUpdated"],[1,"pointerdown","handleMarkupPointerDown"]],{"selectedMarkupId":[{"handleSelectedMarkupIdChanged":0}],"arrowTemplateId":[{"handlePropertyChanged":0}],"circleTemplateId":[{"handlePropertyChanged":0}],"freeformTemplateId":[{"handlePropertyChanged":0}],"tool":[{"handlePropertyChanged":0}],"viewer":[{"handleViewerChanged":0}],"originatingViewport":[{"handleViewerChanged":0}],"centeringBehavior":[{"handleViewerChanged":0}],"offset":[{"handleViewerChanged":0}],"scale":[{"handleViewerChanged":0}],"disabled":[{"handleDisabledChanged":0}],"startLineAnchorStyle":[{"handleStartLineAnchorStyleChanged":0}],"endLineAnchorStyle":[{"handleEndLineAnchorStyleChanged":0}]}]]],["p-7f388b45",[[257,"vertex-viewer-markup-tool",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"startLineAnchorStyle":[1025,"start-line-anchor-style"],"endLineAnchorStyle":[1025,"end-line-anchor-style"],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"stateMap":[32],"reset":[64]},null,{"viewer":[{"handleViewerChanged":0}],"arrowTemplateId":[{"handlePropertyChanged":0}],"circleTemplateId":[{"handlePropertyChanged":0}],"disabled":[{"handlePropertyChanged":0}],"endLineAnchorStyle":[{"handlePropertyChanged":0}],"freeformTemplateId":[{"handlePropertyChanged":0}],"startLineAnchorStyle":[{"handlePropertyChanged":0}],"tool":[{"handlePropertyChanged":0}],"scale":[{"handleScalingConfigurationChanged":0}],"offset":[{"handleScalingConfigurationChanged":0}],"originatingViewport":[{"handleScalingConfigurationChanged":0}],"centeringBehavior":[{"handleScalingConfigurationChanged":0}]}]]],["p-35601c85",[[1,"vertex-viewer-view-cube",{"xPositiveLabel":[1,"x-positive-label"],"xNegativeLabel":[1,"x-negative-label"],"yPositiveLabel":[1,"y-positive-label"],"yNegativeLabel":[1,"y-negative-label"],"zPositiveLabel":[1,"z-positive-label"],"zNegativeLabel":[1,"z-negative-label"],"standardViewsOff":[4,"standard-views-off"],"viewAll":[4,"view-all"],"animationDuration":[2,"animation-duration"],"triadOff":[4,"triad-off"],"worldOrientation":[1040],"camera":[1040],"viewer":[16],"boxLength":[32],"triadPosition":[32]},null,{"viewer":[{"handleViewerChanged":0}]}]]],["p-e9b83dae",[[1,"vertex-viewer-measurement-distance",{"start":[1040],"startJson":[1,"start-json"],"end":[1040],"endJson":[1,"end-json"],"distance":[1026],"showAxisReferenceLines":[4,"show-axis-reference-lines"],"snapDistance":[2,"snap-distance"],"units":[1],"fractionalDigits":[2,"fractional-digits"],"labelFormatter":[16],"anchorLabelOffset":[2,"anchor-label-offset"],"lineCapLength":[2,"line-cap-length"],"mode":[513],"interactingAnchor":[1537,"interacting-anchor"],"invalid":[1540],"camera":[16],"hitProvider":[16],"indicatorPt":[1040],"viewer":[16],"measurementModel":[16],"viewport":[32],"elementBounds":[32],"interactionCount":[32],"internalCamera":[32],"invalidateStateCounter":[32],"stateMap":[32],"measurementUnits":[32],"computeElementMetrics":[64]},null,{"viewer":[{"handleViewerChanged":0}],"units":[{"handleUnitsChanged":1}],"camera":[{"handleCameraChanged":0}],"mode":[{"handleModeChanged":0}],"start":[{"handleStartChanged":0}],"end":[{"handleEndChanged":0}],"invalid":[{"handleInvalidChanged":0}]}]]],["p-f65c0769",[[1,"vertex-viewer-measurement-precise",{"measurementModel":[16],"measurementOverlays":[16],"measurementController":[1040],"measurableEntityTypes":[16],"viewer":[16],"configEnv":[1,"config-env"],"config":[1]},null,{"measurableEntityTypes":[{"handleMeasurableEntityTypesChanged":0}],"measurementController":[{"handleMeasurementControllerChanged":0}],"measurementModel":[{"handleMeasurementModelChanged":1}],"viewer":[{"handleViewerChanged":0}]}]]],["p-c7e62d66",[[257,"vertex-scene-tree-table-cell",{"node":[16],"tree":[16],"value":[1],"placeholder":[1],"alwaysShowIcons":[4,"always-show-icons"],"hovered":[1028],"isScrolling":[4,"is-scrolling"],"expandToggle":[4,"expand-toggle"],"endItemIndicator":[4,"end-item-indicator"],"visibilityToggle":[4,"visibility-toggle"],"isolateButton":[4,"isolate-button"],"selectionHandler":[16],"visibilityHandler":[16],"expansionHandler":[16],"isolateHandler":[16],"hoverController":[16]}]]],["p-b5cc83a4",[[1,"vertex-viewer-annotation-callout",{"data":[16],"iconSize":[1,"icon-size"]}]]],["p-9d8ff406",[[257,"vertex-viewer-box-query-tool",{"viewer":[16],"controller":[1040],"model":[1040],"operationType":[1,"operation-type"],"mode":[1],"details":[32]},null,{"viewer":[{"handleViewerChanged":0}],"operationType":[{"handleDefaultOperationChange":0}],"mode":[{"handleModeChange":0}],"controller":[{"handleControllerChange":0}]}]]],["p-47766566",[[257,"vertex-viewer-walk-mode-tool",{"viewer":[16],"controller":[1040],"model":[1040],"teleportMode":[1,"teleport-mode"],"enabled":[4]},null,{"enabled":[{"handleEnabledChanged":0}],"viewer":[{"handleViewerChanged":0}],"teleportMode":[{"handleTeleportModeChanged":0}],"controller":[{"handleControllerChanged":0}],"model":[{"handleModelChanged":0}]}]]],["p-686eef80",[[257,"vertex-scene-tree-table-column",{"initialWidth":[2,"initial-width"],"minWidth":[2,"min-width"],"maxWidth":[2,"max-width"]}]]],["p-c7bd9aea",[[257,"vertex-scene-tree-table-header"]]],["p-dad8f3cf",[[257,"vertex-scene-tree-table-resize-divider",{"hovering":[32],"dragging":[32]}]]],["p-cf2ea8e9",[[257,"vertex-scene-tree-toolbar-group"]]],["p-8c369777",[[257,"vertex-viewer",{"src":[1],"clientId":[1,"client-id"],"deviceId":[1025,"device-id"],"config":[1],"configEnv":[1,"config-env"],"resolvedConfig":[1040],"cameraControls":[4,"camera-controls"],"cameraType":[1537,"camera-type"],"keyboardControls":[4,"keyboard-controls"],"rotateAroundTapPoint":[4,"rotate-around-tap-point"],"token":[1025],"depthBuffers":[1,"depth-buffers"],"phantom":[16],"noDefaultLights":[4,"no-default-lights"],"enableTemporalRefinement":[4,"enable-temporal-refinement"],"experimentalRenderingOptions":[1,"experimental-rendering-options"],"featureLines":[16],"selectionHighlighting":[16],"featureHighlighting":[16],"sceneComparison":[16],"crossSectioning":[16],"featureMaps":[1,"feature-maps"],"resizeDebounce":[2,"resize-debounce"],"frame":[1040],"stream":[1040],"stencilBuffer":[1040],"viewport":[1040],"annotations":[1040],"modelViews":[1040],"pmi":[1040],"sceneItems":[1040],"canvases":[1040],"experimentalSkipVisibilityCheck":[4,"experimental-skip-visibility-check"],"dimensions":[32],"hostDimensions":[32],"errorMessage":[32],"cursor":[32],"stateMap":[32],"dispatchFrameDrawn":[64],"registerInteractionHandler":[64],"registerBasicInteractionHandler":[64],"registerTapKeyInteraction":[64],"getInteractionTarget_DEPRECATED":[64],"addCursor":[64],"getInteractionHandlers":[64],"getKeyInteractions":[64],"getBaseInteractionHandler":[64],"getJwt":[64],"load":[64],"unload":[64],"reload":[64],"scene":[64],"isSceneReady":[64]},[[0,"tap","handleTapEvent"]],{"src":[{"handleSrcChanged":0}],"cameraControls":[{"handleCameraControlsChanged":0}],"keyboardControls":[{"handleKeyboardControlsChanged":0}],"rotateAroundTapPoint":[{"handleRotateAboutTapPointChanged":0}],"cameraType":[{"handleCameraTypeChanged":0}],"crossSectioning":[{"handleStreamAttributesChanged":0}],"depthBuffers":[{"handleStreamAttributesChanged":0}],"experimentalRenderingOptions":[{"handleStreamAttributesChanged":0}],"featureHighlighting":[{"handleStreamAttributesChanged":0}],"featureLines":[{"handleStreamAttributesChanged":0}],"featureMaps":[{"handleStreamAttributesChanged":0}],"noDefaultLights":[{"handleStreamAttributesChanged":0}],"phantom":[{"handleStreamAttributesChanged":0}],"sceneComparison":[{"handleStreamAttributesChanged":0}],"selectionHighlighting":[{"handleStreamAttributesChanged":0}],"enableTemporalRefinement":[{"handleEnableTemporalRefinementChanged":0}],"config":[{"handleConfigChanged":0}],"configEnv":[{"handleConfigEnvChanged":0}]}]]],["p-a8a81cba",[[1,"vertex-viewer-hit-result-indicator",{"viewer":[16],"position":[1040],"normal":[1040]},null,{"viewer":[{"handleViewerChanged":0}],"position":[{"handlePositionChanged":0}],"normal":[{"handleNormalChanged":0}]}]]],["p-33f44cc1",[[1,"vertex-viewer-measurement-details",{"measurementModel":[16],"measurementOverlays":[16],"measurementOutcome":[1040],"distanceUnits":[1,"distance-units"],"angleUnits":[1,"angle-units"],"fractionalDigits":[2,"fractional-digits"],"distanceFormatter":[16],"angleFormatter":[16],"areaFormatter":[16],"resultTypes":[16],"overlay":[32],"distanceMeasurementUnits":[32],"angleMeasurementUnits":[32],"areaMeasurementUnits":[32]},null,{"distanceUnits":[{"handleDistanceUnitsChanged":1}],"angleUnits":[{"handleAngleUnitsChanged":1}],"measurementModel":[{"handleMeasurementModelChanged":1}],"resultTypes":[{"handleResultTypesChanged":0}]}]]],["p-051b5154",[[1,"vertex-viewer-transform-widget",{"viewer":[16],"position":[1040],"rotation":[1040],"controller":[1040],"xRotationDisabled":[1028,"x-rotation-disabled"],"yRotationDisabled":[1028,"y-rotation-disabled"],"zRotationDisabled":[1028,"z-rotation-disabled"],"xTranslationDisabled":[1028,"x-translation-disabled"],"yTranslationDisabled":[1028,"y-translation-disabled"],"zTranslationDisabled":[1028,"z-translation-disabled"],"xyTranslationDisabled":[1028,"xy-translation-disabled"],"xzTranslationDisabled":[1028,"xz-translation-disabled"],"yzTranslationDisabled":[1028,"yz-translation-disabled"],"showInputs":[4,"show-inputs"],"distanceUnit":[1,"distance-unit"],"angleUnit":[1,"angle-unit"],"decimalPlaces":[2,"decimal-places"],"rotationSnapDegrees":[2,"rotation-snap-degrees"],"rotationSnapKey":[1,"rotation-snap-key"],"translationHandleScalar":[2,"translation-handle-scalar"],"rotationHandleScalar":[2,"rotation-handle-scalar"],"interactionThrottle":[2,"interaction-throttle"],"EXPERIMENTAL_undoKeybindings":[4,"e-x-p-e-r-i-m-e-n-t-a-l_undo-keybindings"],"hovered":[1040],"inputPosition":[32],"inputValue":[32],"isEndingTransform":[32],"EXPERIMENTAL_undo":[64]},null,{"viewer":[{"handleViewerChanged":0}],"xTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"yTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"zTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"xyTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"xzTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"yzTranslationDisabled":[{"handleDisabledPropertyChanged":0}],"xRotationDisabled":[{"handleDisabledPropertyChanged":0}],"yRotationDisabled":[{"handleDisabledPropertyChanged":0}],"zRotationDisabled":[{"handleDisabledPropertyChanged":0}],"translationHandleScalar":[{"handleTransformHandleScalarChanged":0}],"rotationHandleScalar":[{"handleTransformHandleScalarChanged":0}],"rotation":[{"handleRotationChanged":0}],"position":[{"handlePositionChanged":0}],"distanceUnit":[{"handleInputFormattingChanged":0}],"angleUnit":[{"handleInputFormattingChanged":0}],"decimalPlaces":[{"handleInputFormattingChanged":0}]}]]],["p-1eb636f8",[[0,"vertex-viewer-pin-group",{"pin":[16],"matrix":[1040],"projectionViewMatrix":[16],"elementBounds":[1040],"pinModel":[16],"pinController":[1040],"selected":[4],"occluded":[1540],"detached":[1540],"invalidateStateCounter":[32]},[[0,"occlusionStateChanged","handleOcclusionStateChanged"],[0,"detachedStateChanged","handleDetachedStateChanged"]]]]],["p-0984c51f",[[262,"vertex-viewer-dom-group",{"position":[1040],"positionJson":[1,"position"],"rotation":[1040],"rotationJson":[1,"rotation"],"quaternion":[1040],"quaternionJson":[1,"quaternion"],"scale":[1040],"scaleJson":[1,"scale"],"matrix":[1040]},null,{"position":[{"handlePositionChange":0}],"positionJson":[{"handlePositionJsonChanged":0}],"rotation":[{"handleRotationChanged":0}],"rotationJson":[{"handleRotationJsonChanged":0}],"quaternion":[{"handleQuaternionChange":0}],"quaternionJson":[{"handleQuaternionJsonChanged":0}],"scale":[{"handleScaleChange":0}],"scaleJson":[{"handleScaleJsonChanged":0}],"matrix":[{"handleMatrixChanged":0}]}]]],["p-89544066",[[1,"vertex-viewer-teleport-tool",{"viewer":[16],"mode":[1025],"animationsDisabled":[4,"animations-disabled"],"animationMs":[2,"animation-ms"],"controller":[1040],"model":[1040]},null,{"mode":[{"handleModeChange":0}],"viewer":[{"handleViewerChanged":0}],"animationMs":[{"handleAnimationMsChanged":0}],"animationsDisabled":[{"handleAnimationsDisabledChanged":0}],"controller":[{"handleControllerChanged":0}],"model":[{"handleModelChanged":0}]}]]],["p-e98db875",[[1,"vertex-viewer-spinner",{"size":[1]}]]],["p-ba57a018",[[257,"vertex-viewer-layer",{"stretchOff":[516,"stretch-off"]}]]],["p-dd5d4304",[[257,"vertex-viewer-toolbar",{"placement":[1],"direction":[1]}],[257,"vertex-viewer-button"],[257,"vertex-viewer-toolbar-group",{"direction":[1]}]]],["p-d9fe788f",[[257,"vertex-scene-tree-search",{"debounce":[2],"disabled":[4],"placeholder":[1],"controller":[16],"value":[1025],"focused":[32],"isSearching":[32],"setFocus":[64],"clear":[64]},null,{"controller":[{"controllerChanged":0}]}],[1,"vertex-scene-tree-notification-banner",{"message":[1],"actionLabel":[1,"action-label"]}],[257,"vertex-scene-tree-table-layout",{"tree":[16],"controller":[16],"rows":[16],"totalRows":[2,"total-rows"],"rowHeight":[1026,"row-height"],"overScanCount":[2,"over-scan-count"],"rowData":[16],"layoutOffset":[1026,"layout-offset"],"scrollOffset":[1026,"scroll-offset"],"layoutHeight":[1026,"layout-height"],"layoutWidth":[1026,"layout-width"],"viewportStartIndex":[1026,"viewport-start-index"],"viewportEndIndex":[1026,"viewport-end-index"],"columnGridLayout":[32],"columnGridFixedLayout":[32],"isComputingCellHeight":[32],"lastDividerPointerPosition":[32],"resizingColumnIndex":[32],"isScrolling":[32],"scrollTimer":[32],"stateMap":[32],"scrollToPosition":[64],"attemptComputeCellHeight":[64]},null,{"rows":[{"handleViewportRowsPropsChanged":0}],"totalRows":[{"handleViewportRowsPropsChanged":0}],"rowHeight":[{"handleViewportRowsPropsChanged":0}]}],[257,"vertex-scene-tree-toolbar"]]],["p-6e3a6bbd",[[0,"vertex-viewer-pin-label",{"pin":[16],"elementBounds":[16],"value":[1025],"pinController":[1040],"focused":[32],"computedScreenPosition":[32],"textareaRows":[32],"contentElBounds":[32],"setFocus":[64],"submit":[64]},null,{"focused":[{"watchFocusChange":0}],"pin":[{"watchPinChange":0}],"elementBounds":[{"watchElementBoundsChange":0}]}],[0,"vertex-viewer-pin-label-line",{"pinPoint":[16],"labelPoint":[16],"pin":[16]}]]],["p-f271dc4a",[[1,"vertex-viewer-measurement-overlays",{"measurementOverlays":[16],"camera":[1040],"viewer":[16],"overlays":[32]},null,{"measurementOverlays":[{"handleMeasurementOverlaysChanged":0}],"viewer":[{"handleViewerChanged":0}]}],[1,"vertex-viewer-measurement-line",{"start":[16],"end":[16],"capLength":[2,"cap-length"],"pointerEvents":[1,"pointer-events"]}]]],["p-16775f7d",[[262,"vertex-viewer-dom-renderer",{"drawMode":[1,"draw-mode"],"propagateEventsToViewer":[4,"propagate-events-to-viewer"],"viewer":[16],"camera":[1040],"depthBuffer":[1040],"viewport":[32],"invalidateFrameCounter":[32],"interactionDisposables":[32]},[[0,"propertyChange","handlePropertyChange"]],{"viewer":[{"handleViewerChange":0}]}],[257,"vertex-viewer-dom-element",{"position":[1040],"positionJson":[1,"position"],"rotation":[1040],"rotationJson":[1,"rotation"],"quaternion":[1040],"quaternionJson":[1,"quaternion"],"scale":[1040],"scaleJson":[1,"scale"],"matrix":[1040],"occlusionOff":[4,"occlusion-off"],"occluded":[516],"detachedOff":[4,"detached-off"],"detached":[516],"billboardOff":[4,"billboard-off"],"interactionsOff":[516,"interactions-off"]},null,{"position":[{"handlePositionChange":1}],"positionJson":[{"handlePositionJsonChanged":1}],"rotation":[{"handleRotationChanged":1}],"rotationJson":[{"handleRotationJsonChanged":1}],"quaternion":[{"handleQuaternionChange":1}],"quaternionJson":[{"handleQuaternionJsonChanged":1}],"scale":[{"handleScaleChange":1}],"scaleJson":[{"handleScaleJsonChanged":1}],"matrix":[{"handleMatrixChanged":0}],"occluded":[{"handleOcclusionStateChanged":0}],"detached":[{"handleDetachedStateChanged":0}]}]]],["p-d37e647b",[[1,"vertex-viewer-markup-arrow",{"start":[1040],"startJson":[1,"start"],"end":[1040],"endJson":[1,"end"],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"startLineAnchorStyle":[1025,"start-line-anchor-style"],"endLineAnchorStyle":[1025,"end-line-anchor-style"],"mode":[513],"viewer":[16],"elementBounds":[32],"dispose":[64]},null,{"viewer":[{"handleViewerChanged":0}],"start":[{"handleStartJsonChange":0}],"end":[{"handleEndJsonChange":0}],"mode":[{"handleModeChange":0}],"offset":[{"handleScalingConfigurationChange":0}],"originatingViewport":[{"handleScalingConfigurationChange":0}],"centeringBehavior":[{"handleScalingConfigurationChange":0}],"scale":[{"handleScalingConfigurationChange":0},{"handleScaleChange":0}]}],[1,"vertex-viewer-markup-circle",{"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"elementBounds":[32],"dispose":[64]},null,{"viewer":[{"handleViewerChanged":0}],"bounds":[{"handleBoundsJsonChange":0}],"mode":[{"handleModeChange":0}],"offset":[{"handleScalingConfigurationChange":0}],"originatingViewport":[{"handleScalingConfigurationChange":0}],"centeringBehavior":[{"handleScalingConfigurationChange":0}],"scale":[{"handleScalingConfigurationChange":0},{"handleScaleChange":0}]}],[1,"vertex-viewer-markup-freeform",{"points":[1040],"pointsJson":[1,"points"],"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"originatingViewport":[16],"centeringBehavior":[1,"centering-behavior"],"offset":[16],"scale":[2],"elementBounds":[32],"screenPoints":[32],"dispose":[64]},null,{"viewer":[{"handleViewerChanged":0}],"originatingViewport":[{"recomputePointsFromProps":0},{"handleScalingConfigurationChange":0}],"offset":[{"recomputePointsFromProps":0},{"handleScalingConfigurationChange":0}],"scale":[{"recomputePointsFromProps":0},{"handleScalingConfigurationChange":0},{"handleScaleChange":0}],"bounds":[{"recomputePointsFromProps":0}],"points":[{"recomputePointsFromProps":0}],"centeringBehavior":[{"handleScalingConfigurationChange":0}],"mode":[{"handleModeChange":0}]}]]],["p-a9282481",[[1,"vertex-viewer-icon",{"name":[1],"size":[1]}]]]]'),e)}));
|
|
5
5
|
//# sourceMappingURL=viewer.esm.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vertexvis/viewer",
|
|
3
|
-
"version": "1.0.2-canary.
|
|
3
|
+
"version": "1.0.2-canary.4",
|
|
4
4
|
"description": "The Vertex SDK for viewing models.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Vertex Developers <support@vertex3d.com> (https://developer.vertex3d.com)",
|
|
@@ -76,12 +76,12 @@
|
|
|
76
76
|
"@improbable-eng/grpc-web": "^0.15.0",
|
|
77
77
|
"@stencil/core": "^4.43.5",
|
|
78
78
|
"@vertexvis/frame-streaming-protos": "^0.18.4",
|
|
79
|
-
"@vertexvis/geometry": "1.0.2-canary.
|
|
80
|
-
"@vertexvis/html-templates": "1.0.2-canary.
|
|
79
|
+
"@vertexvis/geometry": "1.0.2-canary.4",
|
|
80
|
+
"@vertexvis/html-templates": "1.0.2-canary.4",
|
|
81
81
|
"@vertexvis/scene-tree-protos": "^0.1.29",
|
|
82
82
|
"@vertexvis/scene-view-protos": "^0.8.2",
|
|
83
|
-
"@vertexvis/stream-api": "1.0.2-canary.
|
|
84
|
-
"@vertexvis/utils": "1.0.2-canary.
|
|
83
|
+
"@vertexvis/stream-api": "1.0.2-canary.4",
|
|
84
|
+
"@vertexvis/utils": "1.0.2-canary.4",
|
|
85
85
|
"@vertexvis/web-workers": "^0.1.0",
|
|
86
86
|
"camel-case": "^4.1.2",
|
|
87
87
|
"classnames": "^2.3.1",
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
"@vertexvis/eslint-config-vertexvis-typescript": "^0.5.0",
|
|
113
113
|
"@vertexvis/rollup-plugin-web-workers": "^0.1.0",
|
|
114
114
|
"@vertexvis/typescript-config-vertexvis": "1.1.0",
|
|
115
|
-
"@vertexwebsdk/build": "1.0.2-canary.
|
|
115
|
+
"@vertexwebsdk/build": "1.0.2-canary.4",
|
|
116
116
|
"abortcontroller-polyfill": "^1.7.3",
|
|
117
117
|
"chance": "^1.1.8",
|
|
118
118
|
"eslint": "^8.57.1",
|
|
@@ -126,5 +126,5 @@
|
|
|
126
126
|
"typedoc": "^0.28.14",
|
|
127
127
|
"typescript": "^5.2.0"
|
|
128
128
|
},
|
|
129
|
-
"gitHead": "
|
|
129
|
+
"gitHead": "55d94a74044076047e5f73fe90e6518278682276"
|
|
130
130
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["PinRenderer","pin","selected","occluded","detached","primaryColor","getPinColors","h","Fragment","isTextPin","id","class","classNames","style","background","isIconPin","name","size","color","getClosestCenterToPoint","boxPoint","pointToMeasure","dimensions","topPoint","x","width","y","bottomPoint","height","rightPoint","leftPoint","candidates","distances","map","candidate","Point","distance","candidateIndex","indexOf","Math","min","viewerPinGroupCss","ViewerPinGroup","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","matrix","Matrix4","makeIdentity","projectionViewMatrix","pinModel","PinModel","invalidateStateCounter","invalidateState","componentWillLoad","pinController","PinController","componentDidLoad","setLabelObserver","_a","labelEl","setFocus","handleOcclusionStateChanged","event","detail","handleDetachedStateChanged","disconnectedCallback","removeEventListener","_b","resizeObserver","disconnect","render","Error","pinPoint","labelPoint","computePinPoints","key","position","worldPosition","onPointerDown","async","submit","selectPin","handleAnchorPointerDown","detachedOff","ref","el","elementBounds","addEventListener","ResizeObserver","observe","label","point","computeTextPinPoints","computeDefaultPinPoints","getFromWorldPosition","screenPosition","translatePointToScreen","labelWidth","firstElementChild","clientWidth","labelHeight","_d","_c","clientHeight","getToolMode","setDraggable","setSelectedPinId","pt","ndcPt","Vector3","transformMatrix","Viewport","fromDimensions","transformVectorToViewport"],"sources":["src/components/viewer-pin-group/pin-renderer.tsx","src/components/viewer-pin-group/utils.ts","src/components/viewer-pin-group/viewer-pin-group.css?tag=vertex-viewer-pin-group","src/components/viewer-pin-group/viewer-pin-group.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\nimport classNames from 'classnames';\n\nimport { getPinColors, isIconPin, isTextPin, Pin } from '../../lib/pins/model';\n\ninterface PinRendererProps {\n pin?: Pin;\n selected: boolean;\n occluded: boolean;\n detached: boolean;\n}\n\nexport const PinRenderer: FunctionalComponent<PinRendererProps> = ({\n pin,\n selected,\n occluded,\n detached,\n}) => {\n const { primaryColor } = getPinColors(pin);\n\n return (\n <Fragment>\n {isTextPin(pin) && (\n <div\n id=\"pin-anchor\"\n class={classNames('pin-anchor', {\n selected: selected,\n 'pin-occluded': occluded,\n 'pin-detached': detached,\n })}\n style={{\n background: primaryColor,\n }}\n ></div>\n )}\n\n {isIconPin(pin) && (\n <vertex-viewer-icon\n name=\"pin-fill\"\n size=\"lg\"\n class={classNames('pin', {\n 'pin-selected': selected,\n 'pin-occluded': occluded,\n 'pin-detached': detached,\n })}\n style={{\n color: primaryColor,\n }}\n />\n )}\n </Fragment>\n );\n};\n","import { Dimensions, Point } from '@vertexvis/geometry';\n\nexport function getClosestCenterToPoint(\n boxPoint: Point.Point,\n pointToMeasure: Point.Point,\n dimensions: Dimensions.Dimensions\n): Point.Point {\n const topPoint = {\n x: boxPoint.x + dimensions.width / 2,\n y: boxPoint.y,\n };\n\n const bottomPoint = {\n x: boxPoint.x + dimensions.width / 2,\n y: boxPoint.y + dimensions.height,\n };\n\n const rightPoint = {\n x: boxPoint.x + dimensions.width,\n y: boxPoint.y + dimensions.height / 2,\n };\n\n const leftPoint = {\n x: boxPoint.x,\n y: boxPoint.y + dimensions.height / 2,\n };\n\n const candidates = [topPoint, bottomPoint, leftPoint, rightPoint];\n\n const distances = candidates.map((candidate) =>\n Point.distance(candidate, pointToMeasure)\n );\n\n const candidateIndex = distances.indexOf(Math.min(...distances));\n return candidates[candidateIndex];\n}\n",":host {\n\n /**\n * @prop --viewer-annotations-pin-primary-color: A CSS color that\n * specifies the primary color for the pins. This value gets used for the dot color \n * and borders\n */\n --viewer-annotations-pin-primary-color: var(--blue-700);\n\n /**\n * @prop --viewer-annotations-pin-accent-color: A CSS color that\n * specifies the accent color for the pins. This value gets used for background colors\n * \n */\n\n --viewer-annotations-pin-accent-color: var(--blue-200);\n /**\n * @prop viewer-annotations-pin-dot-color: A CSS color that\n * specifies the color of the anchor dot\n */\n --viewer-annotations-pin-dot-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-color: A CSS color that\n * specifies the color of the pin\n */\n --viewer-annotations-pin-color: var(--viewer-annotations-pin-primary-color);\n\n /**\n * @prop --viewer-annotations-pin-font-size: A CSS property to specify\n the font size of the pin\n */\n --viewer-annotations-pin-font-size: 0.75rem;\n\n /**\n * @prop --viewer-annotations-pin-selected-stroke: A CSS color that\n * specifies the stroke color of a selected pin\n */\n --viewer-annotations-pin-selected-stroke: var(--white);\n\n /**\n * @prop --viewer-annotations-pin-selected-border: A CSS color that\n * specifies the border of a selected pin\n */\n --viewer-annotations-pin-selected-border: 2px solid var(--white);\n\n /**\n * @prop --viewer-annotations-pin-label-border: A CSS color that\n * specifies the border of a text pin anchor\n */\n --viewer-annotations-pin-label-border: 2px solid var(--black);\n\n /**\n * @prop --viewer-annotations-pin-selected-border: A CSS color that\n * specifies the stroke of a selected default pin\n */\n --viewer-annotations-pin-selected-stroke: var(--white);\n\n font-size: var(--viewer-annotations-pin-font-size);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n pointer-events: none;\n}\n\n.pin-anchor {\n position: absolute;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 9px;\n height: 9px;\n box-sizing: border-box;\n border: var(--viewer-annotations-pin-label-border);\n background: var(--viewer-annotations-pin-dot-color);\n pointer-events: auto;\n cursor: pointer;\n}\n\n.selected {\n width: 13px;\n height: 13px;\n border: var(--viewer-annotations-pin-selected-border)\n}\n\n.pin {\n color: var(--viewer-annotations-pin-color);\n cursor: pointer;\n transition: opacity 0.3s ease-in;\n\n /**\n * Place bottom point of the pin at the location instead of the middle of the pin\n */\n transform: translate(0px, -12px);\n}\n\n.pin-selected {\n stroke-width: 1;\n stroke: var(--viewer-annotations-pin-selected-stroke);\n}\n\n.pin-occluded {\n opacity: .3;\n transition: opacity 0.3s ease-in;\n}\n\n.pin-detached {\n visibility: hidden;\n}","import {\n Component,\n Fragment,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n JSX,\n Listen,\n Prop,\n State,\n} from '@stencil/core';\nimport { Dimensions, Matrix4, Point, Vector3 } from '@vertexvis/geometry';\n\nimport { Viewport } from '../..';\nimport { PinController } from '../../lib/pins/controller';\nimport { isTextPin, Pin, TextPin } from '../../lib/pins/model';\nimport { PinModel } from '../../lib/pins/model';\nimport { translatePointToScreen } from '../viewer-pin-tool/utils';\nimport { PinRenderer } from './pin-renderer';\nimport { getClosestCenterToPoint } from './utils';\n\ninterface ComputedPoints {\n pinPoint: Point.Point;\n labelPoint?: Point.Point;\n}\n\n@Component({\n tag: 'vertex-viewer-pin-group',\n styleUrl: 'viewer-pin-group.css',\n shadow: false,\n})\nexport class ViewerPinGroup {\n /**\n * The pin to draw for the group\n */\n @Prop()\n public pin?: Pin;\n\n /**\n * The local matrix of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public matrix: Matrix4.Matrix4 = Matrix4.makeIdentity();\n\n /**\n * Projection view matrix used for computing the position of the pin line\n */\n @Prop()\n public projectionViewMatrix: Matrix4.Matrix4 = Matrix4.makeIdentity();\n\n /**\n * The dimensions of the canvas for the pins\n */\n @Prop({ mutable: true })\n public elementBounds?: DOMRect;\n\n /**\n * The model that contains the entities and outcomes from performing pin operations\n */\n @Prop()\n public pinModel: PinModel = new PinModel();\n\n /**\n * The controller that drives behavior for pin operations\n */\n @Prop({ mutable: true })\n public pinController?: PinController;\n\n /**\n * Whether the pin is \"selected\"\n */\n @Prop()\n public selected = false;\n\n /**\n * @internal\n * Whether the pin is occluded\n */\n @Prop({ mutable: true, reflect: true })\n public occluded = false;\n\n /**\n * @internal\n * Whether the pin is detached\n */\n @Prop({ mutable: true, reflect: true })\n public detached = false;\n\n @State()\n private invalidateStateCounter = 0;\n\n private labelEl: HTMLVertexViewerPinLabelElement | undefined;\n\n private resizeObserver?: ResizeObserver;\n\n protected componentWillLoad(): void {\n if (this.pinController == null) {\n this.pinController = new PinController(this.pinModel);\n }\n }\n\n protected componentDidLoad(): void {\n this.setLabelObserver();\n\n if (this.selected) {\n this.labelEl?.setFocus();\n }\n }\n\n /**\n * @ignore\n */\n @Listen('occlusionStateChanged')\n protected async handleOcclusionStateChanged(\n event: CustomEvent<boolean>\n ): Promise<void> {\n this.occluded = event.detail;\n }\n\n /**\n * @ignore\n */\n @Listen('detachedStateChanged')\n protected async handleDetachedStateChanged(\n event: CustomEvent<boolean>\n ): Promise<void> {\n this.detached = event.detail;\n }\n\n protected disconnectedCallback(): void {\n this.labelEl?.removeEventListener('labelChanged', this.invalidateState);\n this.resizeObserver?.disconnect();\n }\n\n protected render(): JSX.Element {\n if (this.pin == null) {\n throw new Error('Unable to draw pin');\n }\n\n const { pinPoint, labelPoint } = this.computePinPoints(this.pin);\n\n return (\n <Fragment>\n <vertex-viewer-dom-element\n data-testid={`drawn-pin-${this.pin.id}`}\n position={this.pin.worldPosition}\n onPointerDown={async () => {\n await this.labelEl?.submit();\n this.selectPin();\n this.handleAnchorPointerDown();\n }}\n detachedOff={false}\n >\n <PinRenderer\n pin={this.pin}\n selected={this.selected}\n occluded={this.occluded}\n detached={this.detached}\n />\n </vertex-viewer-dom-element>\n\n {isTextPin(this.pin) && !this.occluded && !this.detached && (\n <Fragment>\n <vertex-viewer-pin-label-line\n id={`pin-label-line-${this.pin?.id}`}\n pinPoint={pinPoint}\n pin={this.pin}\n labelPoint={labelPoint}\n onPointerDown={() => this.selectPin()}\n ></vertex-viewer-pin-label-line>\n\n <vertex-viewer-pin-label\n pin={this.pin}\n ref={(el) => (this.labelEl = el)}\n elementBounds={this.elementBounds}\n pinController={this.pinController}\n onPointerDown={() => this.selectPin()}\n ></vertex-viewer-pin-label>\n </Fragment>\n )}\n </Fragment>\n );\n }\n\n private invalidateState = (): void => {\n this.invalidateStateCounter = this.invalidateStateCounter + 1;\n };\n\n private setLabelObserver(): void {\n if (this.labelEl != null) {\n this.labelEl.addEventListener('labelChanged', this.invalidateState);\n\n this.resizeObserver = new ResizeObserver(() => this.invalidateState());\n this.resizeObserver.observe(this.labelEl);\n }\n }\n\n private computePinPoints(pin: Pin): ComputedPoints {\n if (this.elementBounds != null && this.pin != null) {\n return isTextPin(this.pin) && this.pin.label.point != null\n ? this.computeTextPinPoints(this.pin, this.elementBounds)\n : this.computeDefaultPinPoints(this.pin, this.elementBounds);\n }\n\n return { pinPoint: pin.worldPosition };\n }\n\n private computeDefaultPinPoints(\n pin: Pin,\n elementBounds: DOMRect\n ): ComputedPoints {\n return {\n pinPoint: this.getFromWorldPosition(\n pin.worldPosition,\n this.projectionViewMatrix,\n elementBounds\n ),\n };\n }\n\n private computeTextPinPoints(\n pin: TextPin,\n elementBounds: DOMRect\n ): ComputedPoints {\n const { pinPoint } = this.computeDefaultPinPoints(pin, elementBounds);\n\n const screenPosition = translatePointToScreen(\n pin.label.point,\n elementBounds\n );\n\n const labelWidth = this.labelEl?.firstElementChild?.clientWidth || 0;\n const labelHeight = this.labelEl?.firstElementChild?.clientHeight || 0;\n\n return {\n pinPoint,\n labelPoint: getClosestCenterToPoint(screenPosition, pinPoint, {\n width: labelWidth,\n height: labelHeight,\n }),\n };\n }\n\n private handleAnchorPointerDown(): void {\n if (\n this.elementBounds != null &&\n this.pinController?.getToolMode() === 'edit' &&\n this.pin != null\n ) {\n this.pinController?.setDraggable({ id: this.pin.id });\n }\n }\n\n private selectPin(): void {\n this.pinController?.setSelectedPinId(this.pin?.id);\n }\n\n private getFromWorldPosition(\n pt: Vector3.Vector3,\n projectionViewMatrix: Matrix4.Matrix4,\n dimensions: Dimensions.Dimensions\n ): Point.Point {\n const ndcPt = Vector3.transformMatrix(pt, projectionViewMatrix);\n return Viewport.fromDimensions(dimensions).transformVectorToViewport(ndcPt);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["viewerDomElementCss","ViewerDomElement","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","position","Vector3","origin","positionJson","quaternion","Quaternion","create","quaternionJson","scale","scaleJson","matrix","Matrix4","makeIdentity","occlusionOff","occluded","detachedOff","detached","billboardOff","interactionsOff","handlePositionChange","syncMatrix","handlePositionJsonChanged","syncPosition","handleRotationChanged","syncQuaternionWithRotation","handleRotationJsonChanged","syncRotation","handleQuaternionChange","handleQuaternionJsonChanged","syncQuaternion","handleScaleChange","handleScaleJsonChanged","syncScale","handleMatrixChanged","newMatrix","oldMatrix","Objects","isEqual","propertyChange","emit","connectedCallback","syncProperties","componentShouldUpdate","newValue","oldValue","prop","handleOcclusionStateChanged","occlusionStateChanged","handleDetachedStateChanged","detachedStateChanged","length","parseJson","fromJson","rotation","rotationJson","Euler","fromEuler","makeTRS","propName","value","parse","e","console","warn","render","h","Host","key"],"sources":["src/components/viewer-dom-element/viewer-dom-element.css?tag=vertex-viewer-dom-element&encapsulation=shadow","src/components/viewer-dom-element/viewer-dom-element.tsx"],"sourcesContent":[":host {\n position: absolute;\n pointer-events: none;\n visibility: hidden;\n}\n\n/* Ignore Stencil's hydrated prop in favor of a custom `ready` selector. This\n * prevents flashing of elements before Stencil has a time to position the\n * element in 3D space.\n */\n:host([hydrated]) {\n visibility: hidden;\n}\n\n:host(.ready) {\n visibility: inherit;\n}\n\n:host(:not([interactions-off])) > * {\n pointer-events: auto;\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\n\nimport {\n Component,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Euler, Matrix4, Quaternion, Vector3 } from '@vertexvis/geometry';\nimport { Objects } from '@vertexvis/utils';\n\nimport { HTMLDomRendererPositionableElement } from '../../interfaces';\n\n/**\n * The `ViewerDomElement` is responsible for managing a\n * `<vertex-viewer-dom-element>` element. These elements are intended to be\n * added as children to a `<vertex-viewer-dom-renderer>` and represent an\n * individual DOM element within a local 3D scene.\n */\n@Component({\n tag: 'vertex-viewer-dom-element',\n styleUrl: 'viewer-dom-element.css',\n shadow: true,\n})\nexport class ViewerDomElement implements HTMLDomRendererPositionableElement {\n /**\n * The local 3D position of where this element is located.\n */\n @Prop({ mutable: true, attribute: null })\n public position: Vector3.Vector3 = Vector3.origin();\n\n /**\n * @ignore\n */\n @Watch('position', { immediate: true })\n protected handlePositionChange(): void {\n this.syncMatrix();\n }\n\n /**\n * The local 3D position of where this element is located, as a JSON string.\n * JSON representation can either be in the format of `[x, y, z]` or `{\"x\": 0,\n * \"y\": 0, \"z\": 0}`.\n */\n @Prop({ attribute: 'position' })\n public positionJson = '';\n\n /**\n * @ignore\n */\n @Watch('positionJson', { immediate: true })\n protected handlePositionJsonChanged(): void {\n this.syncPosition();\n }\n\n /**\n * The local rotation of this element in Euler angles.\n */\n @Prop({ mutable: true, attribute: null })\n public rotation?: Euler.Euler;\n\n /**\n * @ignore\n */\n @Watch('rotation', { immediate: true })\n protected handleRotationChanged(): void {\n this.syncQuaternionWithRotation();\n }\n\n /**\n * The local rotation of this element in Euler angles, as a JSON string. JSON\n * representation can either be `[x, y, z, order]` or `{\"x\": 0, \"y\": 0, \"z\":\n * 0, \"order\": \"xyz\"}`.\n */\n @Prop({ attribute: 'rotation' })\n public rotationJson?: string;\n\n /**\n * @ignore\n */\n @Watch('rotationJson', { immediate: true })\n protected handleRotationJsonChanged(): void {\n this.syncRotation();\n }\n\n /**\n * The local rotation of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public quaternion: Quaternion.Quaternion = Quaternion.create();\n\n /**\n * @ignore\n */\n @Watch('quaternion', { immediate: true })\n protected handleQuaternionChange(): void {\n this.syncMatrix();\n }\n\n /**\n * The local quaternion rotation of this element, as a JSON string. JSON\n * representation can either be `[x, y, z, w]` or `{\"x\": 0, \"y\": 0, \"z\":\n * 0, \"w\": 1}`.\n */\n @Prop({ attribute: 'quaternion' })\n public quaternionJson = '';\n\n /**\n * @ignore\n */\n @Watch('quaternionJson', { immediate: true })\n protected handleQuaternionJsonChanged(): void {\n this.syncQuaternion();\n }\n\n /**\n * The local scale of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public scale: Vector3.Vector3 = Vector3.create(1, 1, 1);\n\n /**\n * @ignore\n */\n @Watch('scale', { immediate: true })\n protected handleScaleChange(): void {\n this.syncMatrix();\n }\n\n /**\n * The local scale of this element, as a JSON string. JSON string\n * representation can either be in the format of `[x, y, z]` or `{\"x\": 0, \"y\":\n * 0, \"z\": 0}`.\n */\n @Prop({ attribute: 'scale' })\n public scaleJson = '';\n\n /**\n * @ignore\n */\n @Watch('scaleJson', { immediate: true })\n protected handleScaleJsonChanged(): void {\n this.syncScale();\n }\n\n /**\n * @ignore\n */\n @Watch('matrix')\n protected handleMatrixChanged(\n newMatrix: Matrix4.Matrix4,\n oldMatrix: Matrix4.Matrix4\n ): void {\n if (!Objects.isEqual(newMatrix, oldMatrix)) {\n this.propertyChange.emit();\n }\n }\n\n /**\n * The local matrix of this element.\n */\n @Prop({ mutable: true, attribute: null })\n public matrix: Matrix4.Matrix4 = Matrix4.makeIdentity();\n\n /**\n * Disables occlusion testing for this element. Defaults to enabled. When\n * enabled, the elements position will be tested against the current depth\n * buffer. If the position is occluded, then the `occluded` attribute will be\n * set.\n */\n @Prop()\n public occlusionOff = false;\n\n /**\n * Indicates if the element is hidden by geometry. This property can be used\n * with a CSS selector to modify the appearance of the element when its\n * occluded.\n *\n * @example\n *\n * ```html\n * <style>\n * vertex-viewer-dom-element[occluded] {\n * opacity: 0;\n * }\n * </style>\n * ```\n */\n @Prop({ reflect: true })\n public occluded = false;\n\n /**\n * Dispatched when the occlusion state is changed.\n */\n @Event({ bubbles: true })\n public occlusionStateChanged!: EventEmitter<boolean>;\n\n /**\n * **EXPERIMENTAL**\n * Disables detached testing for this element. Defaults to disabled. When\n * enabled, the elements position will be tested against the current depth\n * buffer. If the position is detached, then the `detached` attribute will be\n * set.\n */\n @Prop()\n public detachedOff = true;\n\n /**\n * **EXPERIMENTAL**\n * Indicates if the element is detached from geometry. This property can be used\n * with a CSS selector to modify the appearance of the element when its\n * detached.\n *\n * @example\n *\n * ```html\n * <style>\n * vertex-viewer-dom-element[detached] {\n * opacity: 0;\n * }\n * </style>\n * ```\n */\n @Prop({ reflect: true })\n public detached = false;\n\n /**\n * **EXPERIMENTAL**\n * Dispatched when the detached state is changed.\n */\n @Event({ bubbles: true })\n public detachedStateChanged!: EventEmitter<boolean>;\n\n /**\n * Disables the billboarding behavior of the element. When billboarding is\n * enabled, the element will always be oriented towards the screen.\n */\n @Prop()\n public billboardOff = false;\n\n /**\n * Disables interaction events from children.\n */\n @Prop({ reflect: true })\n public interactionsOff = false;\n\n /**\n * An event that is emitted when any property on the dom group changes\n */\n @Event({ bubbles: true })\n public propertyChange!: EventEmitter<void>;\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.syncProperties();\n }\n\n /**\n * @ignore\n */\n protected componentShouldUpdate(\n newValue: unknown,\n oldValue: unknown,\n prop: string\n ): boolean {\n return prop === 'occluded';\n }\n\n /**\n * @ignore\n */\n @Watch('occluded')\n protected handleOcclusionStateChanged(): void {\n this.occlusionStateChanged.emit(this.occluded);\n }\n\n /**\n * @ignore\n */\n @Watch('detached')\n protected handleDetachedStateChanged(): void {\n this.detachedStateChanged.emit(this.detached);\n }\n\n private syncProperties(): void {\n this.syncPosition();\n this.syncRotation();\n this.syncQuaternion();\n this.syncScale();\n this.syncMatrix();\n }\n\n private syncPosition(): void {\n this.position =\n this.positionJson.length > 0\n ? this.parseJson('positionJson', this.positionJson, Vector3.fromJson)\n : this.position;\n }\n\n private syncRotation(): void {\n this.rotation =\n this.rotationJson != null && this.rotationJson.length > 0\n ? this.parseJson('rotationJson', this.rotationJson, Euler.fromJson)\n : this.rotation;\n this.syncQuaternionWithRotation();\n }\n\n private syncQuaternionWithRotation(): void {\n this.quaternion =\n this.rotation != null\n ? Quaternion.fromEuler(this.rotation)\n : this.quaternion;\n }\n\n private syncQuaternion(): void {\n this.quaternion =\n this.quaternionJson.length > 0\n ? this.parseJson(\n 'quaternionJson',\n this.quaternionJson,\n Quaternion.fromJson\n )\n : this.quaternion;\n }\n\n private syncScale(): void {\n this.scale =\n this.scaleJson.length > 0\n ? this.parseJson('scaleJson', this.scaleJson, Vector3.fromJson)\n : this.scale;\n }\n\n private syncMatrix(): void {\n if (\n this.position != null &&\n this.quaternion != null &&\n this.scale != null\n ) {\n this.matrix = Matrix4.makeTRS(this.position, this.quaternion, this.scale);\n }\n }\n\n private parseJson<T>(\n propName: string,\n value: string,\n parse: (str: string) => T\n ): T {\n try {\n return parse(value);\n } catch (e) {\n console.warn(`Could not parse \\`${propName}\\`. Invalid JSON.`);\n throw e;\n }\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":";;;+JAAA,MAAMA,EAAsB,IAAM,4L,MC2BrBC,EAAgBC,EAAA,MAAAD,UAAAE,EAL7B,WAAAC,CAAAC,G,mOAUSC,KAAAC,SAA4BC,EAAQC,SAgBpCH,KAAAI,aAAe,GA4CfJ,KAAAK,WAAoCC,EAAWC,SAgB/CP,KAAAQ,eAAiB,GAcjBR,KAAAS,MAAyBP,EAAQK,OAAO,EAAG,EAAG,GAgB9CP,KAAAU,UAAY,GA2BZV,KAAAW,OAA0BC,EAAQC,eASlCb,KAAAc,aAAe,MAkBfd,KAAAe,SAAW,MAgBXf,KAAAgB,YAAc,KAmBdhB,KAAAiB,SAAW,MAcXjB,KAAAkB,aAAe,MAMflB,KAAAmB,gBAAkB,KA2H1B,CA5UW,oBAAAC,GACRpB,KAAKqB,Y,CAeG,yBAAAC,GACRtB,KAAKuB,c,CAaG,qBAAAC,GACRxB,KAAKyB,4B,CAeG,yBAAAC,GACR1B,KAAK2B,c,CAaG,sBAAAC,GACR5B,KAAKqB,Y,CAeG,2BAAAQ,GACR7B,KAAK8B,gB,CAaG,iBAAAC,GACR/B,KAAKqB,Y,CAeG,sBAAAW,GACRhC,KAAKiC,W,CAOG,mBAAAC,CACRC,EACAC,GAEA,IAAKC,EAAQC,QAAQH,EAAWC,GAAY,CAC1CpC,KAAKuC,eAAeC,M,EAqGd,iBAAAC,GACRzC,KAAK0C,gB,CAMG,qBAAAC,CACRC,EACAC,EACAC,GAEA,OAAOA,IAAS,U,CAOR,2BAAAC,GACR/C,KAAKgD,sBAAsBR,KAAKxC,KAAKe,S,CAO7B,0BAAAkC,GACRjD,KAAKkD,qBAAqBV,KAAKxC,KAAKiB,S,CAG9B,cAAAyB,GACN1C,KAAKuB,eACLvB,KAAK2B,eACL3B,KAAK8B,iBACL9B,KAAKiC,YACLjC,KAAKqB,Y,CAGC,YAAAE,GACNvB,KAAKC,SACHD,KAAKI,aAAa+C,OAAS,EACvBnD,KAAKoD,UAAU,eAAgBpD,KAAKI,aAAcF,EAAQmD,UAC1DrD,KAAKC,Q,CAGL,YAAA0B,GACN3B,KAAKsD,SACHtD,KAAKuD,cAAgB,MAAQvD,KAAKuD,aAAaJ,OAAS,EACpDnD,KAAKoD,UAAU,eAAgBpD,KAAKuD,aAAcC,EAAMH,UACxDrD,KAAKsD,SACXtD,KAAKyB,4B,CAGC,0BAAAA,GACNzB,KAAKK,WACHL,KAAKsD,UAAY,KACbhD,EAAWmD,UAAUzD,KAAKsD,UAC1BtD,KAAKK,U,CAGL,cAAAyB,GACN9B,KAAKK,WACHL,KAAKQ,eAAe2C,OAAS,EACzBnD,KAAKoD,UACH,iBACApD,KAAKQ,eACLF,EAAW+C,UAEbrD,KAAKK,U,CAGL,SAAA4B,GACNjC,KAAKS,MACHT,KAAKU,UAAUyC,OAAS,EACpBnD,KAAKoD,UAAU,YAAapD,KAAKU,UAAWR,EAAQmD,UACpDrD,KAAKS,K,CAGL,UAAAY,GACN,GACErB,KAAKC,UAAY,MACjBD,KAAKK,YAAc,MACnBL,KAAKS,OAAS,KACd,CACAT,KAAKW,OAASC,EAAQ8C,QAAQ1D,KAAKC,SAAUD,KAAKK,WAAYL,KAAKS,M,EAI/D,SAAA2C,CACNO,EACAC,EACAC,GAEA,IACE,OAAOA,EAAMD,E,CACb,MAAOE,GACPC,QAAQC,KAAK,qBAAqBL,sBAClC,MAAMG,C,EAOA,MAAAG,GACR,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
|
-
*/
|
|
4
|
-
import{t as e,p as t,H as i,h as s}from"./p-Bb32XUUS.js";import{p as a,a as n}from"./p-DDQcM-So.js";const r=()=>`:host{display:block;--viewer-measurement-line-stroke:var(--white);--viewer-measurement-line-stroke-opacity:0.75;--viewer-measurement-line-stroke-width:1.25px;--viewer-measurement-line-fill:var(--neutral-900);--viewer-measurement-line-fill-width:2px;--viewer-measurement-line-start-cap-visibility:initial;--viewer-measurement-line-end-cap-visibility:initial}svg{width:100%;height:100%}.line-stroke{stroke-width:calc( var(--viewer-measurement-line-fill-width) + var(--viewer-measurement-line-stroke-width) );stroke:var(--viewer-measurement-line-stroke);opacity:var(--viewer-measurement-line-stroke-opacity)}.line-fill{stroke-width:var(--viewer-measurement-line-fill-width);stroke:var(--viewer-measurement-line-fill)}.start-cap{visibility:var(--viewer-measurement-line-start-cap-visibility)}.end-cap{visibility:var(--viewer-measurement-line-end-cap-visibility)}`;const l=t(class e extends i{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.start=a.create();this.end=a.create();this.capLength=0;this.pointerEvents="none"}render(){const e=n.fromPoints(this.start,this.end);const t=c(this.start,this.end,e,this.capLength);const i=c(this.start,this.end,e,this.capLength+1);return s("svg",{key:"96c8e5b4ddb2e0bfb86e622ba7414c5061000ea9"},s("g",{key:"6b1673f801e3776db396e5912541d51ca54d23bf",class:"line-stroke","pointer-events":this.pointerEvents},s("line",{key:"1ae3892507d0a63701950c12abfa67cd2f02e46f",class:"line",x1:this.start.x,y1:this.start.y,x2:this.end.x,y2:this.end.y}),s("line",{key:"ab3111d1d00653f1d68d12e0e89ad2e0fe609049",class:"start-cap",x1:i.startEndCap.start.x,y1:i.startEndCap.start.y,x2:i.startEndCap.end.x,y2:i.startEndCap.end.y}),s("line",{key:"5c3e899afe9a95af73fcd80aa670c3849dbe1f70",class:"end-cap",x1:i.endEndCap.start.x,y1:i.endEndCap.start.y,x2:i.endEndCap.end.x,y2:i.endEndCap.end.y})),s("g",{key:"cfef2398d0c8445e3f9223c52b446c2cb187c5e9",class:"line-fill","pointer-events":this.pointerEvents},s("line",{key:"90653a7c0fadd495949f85a246d3b640086fbbef",class:"line",x1:this.start.x,y1:this.start.y,x2:this.end.x,y2:this.end.y}),s("line",{key:"c92da23e39cf9248e12875136b68aa5de42b2e09",class:"start-cap",x1:t.startEndCap.start.x,y1:t.startEndCap.start.y,x2:t.startEndCap.end.x,y2:t.startEndCap.end.y}),s("line",{key:"5dbfeff2784da10f6e1a442fcf706edf91e9e4ef",class:"end-cap",x1:t.endEndCap.start.x,y1:t.endEndCap.start.y,x2:t.endEndCap.end.x,y2:t.endEndCap.end.y})))}static get style(){return r()}},[1,"vertex-viewer-measurement-line",{start:[16],end:[16],capLength:[2,"cap-length"],pointerEvents:[1,"pointer-events"]}]);function c(e,t,i,s){return{startEndCap:d(e,i,s),endEndCap:d(t,i,s)}}function d(e,t,i){const s=t+Math.PI/2;const n=a.add(e,a.polar(i/2,s));const r=a.add(e,a.polar(i/2,s+Math.PI));return{start:n,end:r}}function f(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-measurement-line"];t.forEach((t=>{switch(t){case"vertex-viewer-measurement-line":if(!customElements.get(e(t))){customElements.define(e(t),l)}break}}))}f();export{l as V,f as d};
|
|
5
|
-
//# sourceMappingURL=p-DNtS2F8J.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["viewerMeasurementLineCss","ViewerMeasurementLine","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","start","Point","create","end","capLength","pointerEvents","render","angle","Angle","fromPoints","lineFillEndCaps","getEndCapPoints","lineStrokeEndCaps","h","key","class","x1","x","y1","y","x2","y2","startEndCap","endEndCap","length","getPerpendicularLine","pt","perpAngle","Math","PI","add","polar"],"sources":["src/components/viewer-measurement-line/viewer-measurement-line.css?tag=vertex-viewer-measurement-line&encapsulation=shadow","src/components/viewer-measurement-line/viewer-measurement-line.tsx"],"sourcesContent":[":host {\n display: block;\n\n /**\n * @prop --viewer-measurement-line-stroke: An SVG stroke that specifies the\n * color stroke of the line.\n */\n --viewer-measurement-line-stroke: var(--white);\n\n /**\n * @prop --viewer-measurement-line-stroke-opacity: An SVG stroke that\n * specifies the stroke opacity of the line.\n */\n --viewer-measurement-line-stroke-opacity: 0.75;\n\n /**\n * @prop --viewer-measurement-line-stroke-width: A CSS length that specifies\n * the width of the stroke.\n */\n --viewer-measurement-line-stroke-width: 1.25px;\n\n /**\n * @prop --viewer-measurement-line-fill: An SVG stroke that specifies the\n * color fill of the line.\n */\n --viewer-measurement-line-fill: var(--neutral-900);\n\n /**\n * @prop --viewer-measurement-line-fill-width: A CSS length that specifies\n * the width of the fill.\n */\n --viewer-measurement-line-fill-width: 2px;\n\n /**\n * @prop --viewer-measurement-line-start-cap-visibility: An CSS visibility\n * value for the cap at the start of the line.\n */\n --viewer-measurement-line-start-cap-visibility: initial;\n\n /**\n * @prop --viewer-measurement-line-end-cap-visibility: An CSS visibility value\n * for the cap at the end of the line.\n */\n --viewer-measurement-line-end-cap-visibility: initial;\n}\n\nsvg {\n width: 100%;\n height: 100%;\n}\n\n.line-stroke {\n stroke-width: calc(\n var(--viewer-measurement-line-fill-width) +\n var(--viewer-measurement-line-stroke-width)\n );\n stroke: var(--viewer-measurement-line-stroke);\n opacity: var(--viewer-measurement-line-stroke-opacity);\n}\n\n.line-fill {\n stroke-width: var(--viewer-measurement-line-fill-width);\n stroke: var(--viewer-measurement-line-fill);\n}\n\n.start-cap {\n visibility: var(--viewer-measurement-line-start-cap-visibility);\n}\n\n.end-cap {\n visibility: var(--viewer-measurement-line-end-cap-visibility);\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport { Angle, Point } from '@vertexvis/geometry';\n\n@Component({\n tag: 'vertex-viewer-measurement-line',\n styleUrl: 'viewer-measurement-line.css',\n shadow: true,\n})\nexport class ViewerMeasurementLine {\n /**\n * A point that specifies the starting point of the line.\n */\n @Prop()\n public start: Point.Point = Point.create();\n\n /**\n * A point that specifies the ending point of the line.\n */\n @Prop()\n public end: Point.Point = Point.create();\n\n /**\n * A length of the line cap. The line cap is a line at each end of a line.\n */\n @Prop()\n public capLength = 0;\n\n /**\n * The type of [SVG pointer\n * events](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/pointer-events)\n * that the line should respond to.\n */\n @Prop()\n public pointerEvents = 'none';\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n const angle = Angle.fromPoints(this.start, this.end);\n const lineFillEndCaps = getEndCapPoints(\n this.start,\n this.end,\n angle,\n this.capLength\n );\n const lineStrokeEndCaps = getEndCapPoints(\n this.start,\n this.end,\n angle,\n this.capLength + 1\n );\n\n return (\n <svg>\n <g class=\"line-stroke\" pointer-events={this.pointerEvents}>\n <line\n class=\"line\"\n x1={this.start.x}\n y1={this.start.y}\n x2={this.end.x}\n y2={this.end.y}\n />\n\n <line\n class=\"start-cap\"\n x1={lineStrokeEndCaps.startEndCap.start.x}\n y1={lineStrokeEndCaps.startEndCap.start.y}\n x2={lineStrokeEndCaps.startEndCap.end.x}\n y2={lineStrokeEndCaps.startEndCap.end.y}\n />\n\n <line\n class=\"end-cap\"\n x1={lineStrokeEndCaps.endEndCap.start.x}\n y1={lineStrokeEndCaps.endEndCap.start.y}\n x2={lineStrokeEndCaps.endEndCap.end.x}\n y2={lineStrokeEndCaps.endEndCap.end.y}\n />\n </g>\n\n <g class=\"line-fill\" pointer-events={this.pointerEvents}>\n <line\n class=\"line\"\n x1={this.start.x}\n y1={this.start.y}\n x2={this.end.x}\n y2={this.end.y}\n />\n\n <line\n class=\"start-cap\"\n x1={lineFillEndCaps.startEndCap.start.x}\n y1={lineFillEndCaps.startEndCap.start.y}\n x2={lineFillEndCaps.startEndCap.end.x}\n y2={lineFillEndCaps.startEndCap.end.y}\n />\n\n <line\n class=\"end-cap\"\n x1={lineFillEndCaps.endEndCap.start.x}\n y1={lineFillEndCaps.endEndCap.start.y}\n x2={lineFillEndCaps.endEndCap.end.x}\n y2={lineFillEndCaps.endEndCap.end.y}\n />\n </g>\n </svg>\n );\n }\n}\n\ninterface EndCapPoints {\n start: Point.Point;\n end: Point.Point;\n}\n\ninterface LinePoints {\n startEndCap: EndCapPoints;\n endEndCap: EndCapPoints;\n}\n\nfunction getEndCapPoints(\n start: Point.Point,\n end: Point.Point,\n angle: number,\n length: number\n): LinePoints {\n return {\n startEndCap: getPerpendicularLine(start, angle, length),\n endEndCap: getPerpendicularLine(end, angle, length),\n };\n}\n\nfunction getPerpendicularLine(\n pt: Point.Point,\n angle: number,\n length: number\n): { start: Point.Point; end: Point.Point } {\n const perpAngle = angle + Math.PI / 2;\n const start = Point.add(pt, Point.polar(length / 2, perpAngle));\n const end = Point.add(pt, Point.polar(length / 2, perpAngle + Math.PI));\n return { start, end };\n}\n"],"mappings":";;;oGAAA,MAAMA,EAA2B,IAAM,y2B,MCQ1BC,EAAqBC,EAAA,MAAAD,UAAAE,EALlC,WAAAC,CAAAC,G,kEAUSC,KAAAC,MAAqBC,EAAMC,SAM3BH,KAAAI,IAAmBF,EAAMC,SAMzBH,KAAAK,UAAY,EAQZL,KAAAM,cAAgB,MA4ExB,CAvEW,MAAAC,GACR,MAAMC,EAAQC,EAAMC,WAAWV,KAAKC,MAAOD,KAAKI,KAChD,MAAMO,EAAkBC,EACtBZ,KAAKC,MACLD,KAAKI,IACLI,EACAR,KAAKK,WAEP,MAAMQ,EAAoBD,EACxBZ,KAAKC,MACLD,KAAKI,IACLI,EACAR,KAAKK,UAAY,GAGnB,OACES,EAAA,OAAAC,IAAA,4CACED,EAAA,KAAAC,IAAA,2CAAGC,MAAM,cAAa,iBAAiBhB,KAAKM,eAC1CQ,EAAA,QAAAC,IAAA,2CACEC,MAAM,OACNC,GAAIjB,KAAKC,MAAMiB,EACfC,GAAInB,KAAKC,MAAMmB,EACfC,GAAIrB,KAAKI,IAAIc,EACbI,GAAItB,KAAKI,IAAIgB,IAGfN,EAAA,QAAAC,IAAA,2CACEC,MAAM,YACNC,GAAIJ,EAAkBU,YAAYtB,MAAMiB,EACxCC,GAAIN,EAAkBU,YAAYtB,MAAMmB,EACxCC,GAAIR,EAAkBU,YAAYnB,IAAIc,EACtCI,GAAIT,EAAkBU,YAAYnB,IAAIgB,IAGxCN,EAAA,QAAAC,IAAA,2CACEC,MAAM,UACNC,GAAIJ,EAAkBW,UAAUvB,MAAMiB,EACtCC,GAAIN,EAAkBW,UAAUvB,MAAMmB,EACtCC,GAAIR,EAAkBW,UAAUpB,IAAIc,EACpCI,GAAIT,EAAkBW,UAAUpB,IAAIgB,KAIxCN,EAAA,KAAAC,IAAA,2CAAGC,MAAM,YAAW,iBAAiBhB,KAAKM,eACxCQ,EAAA,QAAAC,IAAA,2CACEC,MAAM,OACNC,GAAIjB,KAAKC,MAAMiB,EACfC,GAAInB,KAAKC,MAAMmB,EACfC,GAAIrB,KAAKI,IAAIc,EACbI,GAAItB,KAAKI,IAAIgB,IAGfN,EAAA,QAAAC,IAAA,2CACEC,MAAM,YACNC,GAAIN,EAAgBY,YAAYtB,MAAMiB,EACtCC,GAAIR,EAAgBY,YAAYtB,MAAMmB,EACtCC,GAAIV,EAAgBY,YAAYnB,IAAIc,EACpCI,GAAIX,EAAgBY,YAAYnB,IAAIgB,IAGtCN,EAAA,QAAAC,IAAA,2CACEC,MAAM,UACNC,GAAIN,EAAgBa,UAAUvB,MAAMiB,EACpCC,GAAIR,EAAgBa,UAAUvB,MAAMmB,EACpCC,GAAIV,EAAgBa,UAAUpB,IAAIc,EAClCI,GAAIX,EAAgBa,UAAUpB,IAAIgB,K,2JAkB9C,SAASR,EACPX,EACAG,EACAI,EACAiB,GAEA,MAAO,CACLF,YAAaG,EAAqBzB,EAAOO,EAAOiB,GAChDD,UAAWE,EAAqBtB,EAAKI,EAAOiB,GAEhD,CAEA,SAASC,EACPC,EACAnB,EACAiB,GAEA,MAAMG,EAAYpB,EAAQqB,KAAKC,GAAK,EACpC,MAAM7B,EAAQC,EAAM6B,IAAIJ,EAAIzB,EAAM8B,MAAMP,EAAS,EAAGG,IACpD,MAAMxB,EAAMF,EAAM6B,IAAIJ,EAAIzB,EAAM8B,MAAMP,EAAS,EAAGG,EAAYC,KAAKC,KACnE,MAAO,CAAE7B,QAAOG,MAClB,C","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["translateWorldLineToViewport","line","params","camera","viewport","isStartBehindCamera","isPointBehindNear","start","isEndBehindCamera","end","pt","intersectLineWithNear","newLine","Line3","create","ndc","transformMatrix","projectionViewMatrix","transformVectorToViewport","hideStart","hideEnd","getViewingElementPositions","interactingAnchor","startPt","endPt","labelPt","Point","lerp","indicatorPt","getIndicatorPtForAnchor","undefined","anchor","transformWorldToViewport","MeasurementOverlayView","overlay","type","h","LineOverlayView","DistanceVectorOverlayView","class","x","y","z","xs","xe","ys","ye","zs","ze","Fragment","viewerMeasurementOverlaysCss","ViewerMeasurementOverlays","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","measurementOverlays","MeasurementOverlayManager","overlays","updateCamera","_b","_a","viewer","frame","scene","handleMeasurementOverlaysChanged","removeModelListeners","addModelListeners","updateOverlays","handleViewerChanged","newViewer","oldViewer","removeViewerListeners","addViewerListeners","componentWillLoad","onOverlaysChangedListener","onOverlaysChanged","dispose","addEventListener","removeEventListener","getOverlays","render","Host","key","map"],"sources":["src/components/viewer-measurement-distance/utils.ts","src/components/viewer-measurement-overlays/viewer-measurement-overlays-components.tsx","src/components/viewer-measurement-overlays/viewer-measurement-overlays.css?tag=vertex-viewer-measurement-overlays&encapsulation=shadow","src/components/viewer-measurement-overlays/viewer-measurement-overlays.tsx"],"sourcesContent":["import { Line3, Point } from '@vertexvis/geometry';\n\nimport { FrameCameraBase, Viewport } from '../../lib/types';\n\nexport type Anchor = 'start' | 'end';\n\nexport interface MeasurementElementPositions {\n startPt?: Point.Point;\n endPt?: Point.Point;\n labelPt?: Point.Point;\n indicatorPt?: Point.Point;\n hideStart?: boolean;\n hideEnd?: boolean;\n}\n\nexport interface RenderParams {\n viewport: Viewport;\n camera: FrameCameraBase;\n}\n\nexport function translateWorldLineToViewport(\n line: Line3.Line3,\n params: RenderParams\n): {\n start: Point.Point;\n end: Point.Point;\n hideStart: boolean;\n hideEnd: boolean;\n} {\n const { camera, viewport } = params;\n\n const isStartBehindCamera = camera.isPointBehindNear(line.start);\n const isEndBehindCamera = camera.isPointBehindNear(line.end);\n\n // If either the start or end of the line is behind the camera, then we need\n // to truncate the line so it can be presented correctly. You cannot use a\n // projection matrix to compute a point behind the near plane.\n if (isStartBehindCamera || isEndBehindCamera) {\n const pt = camera.intersectLineWithNear(line);\n const newLine = Line3.create({\n start: isStartBehindCamera && pt != null ? pt : line.start,\n end: isEndBehindCamera && pt != null ? pt : line.end,\n });\n\n const ndc = Line3.transformMatrix(newLine, camera.projectionViewMatrix);\n return {\n start: viewport.transformVectorToViewport(ndc.start),\n end: viewport.transformVectorToViewport(ndc.end),\n hideStart: isStartBehindCamera,\n hideEnd: isEndBehindCamera,\n };\n } else {\n const ndc = Line3.transformMatrix(line, camera.projectionViewMatrix);\n return {\n start: viewport.transformVectorToViewport(ndc.start),\n end: viewport.transformVectorToViewport(ndc.end),\n hideStart: false,\n hideEnd: false,\n };\n }\n}\n\nexport function getViewingElementPositions(\n line: Line3.Line3,\n interactingAnchor: Anchor | 'none',\n params: RenderParams\n): MeasurementElementPositions {\n const {\n start: startPt,\n end: endPt,\n hideStart,\n hideEnd,\n } = translateWorldLineToViewport(line, params);\n const labelPt = Point.lerp(startPt, endPt, 0.5);\n const indicatorPt =\n interactingAnchor !== 'none'\n ? getIndicatorPtForAnchor(line, interactingAnchor, params)\n : undefined;\n\n return { startPt, endPt, labelPt, indicatorPt, hideStart, hideEnd };\n}\n\nexport function isVertexViewerDistanceMeasurement(\n el: unknown\n): el is HTMLVertexViewerMeasurementDistanceElement {\n return (\n el instanceof HTMLElement &&\n el.nodeName === 'VERTEX-VIEWER-MEASUREMENT-DISTANCE'\n );\n}\n\nfunction getIndicatorPtForAnchor(\n line: Line3.Line3,\n anchor: Anchor,\n params: RenderParams\n): Point.Point {\n return params.viewport.transformWorldToViewport(\n anchor === 'start' ? line.start : line.end,\n params.camera.projectionViewMatrix\n );\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Fragment, FunctionalComponent, h } from '@stencil/core';\n\nimport {\n DistanceVectorOverlay,\n LineOverlay,\n MeasurementOverlay,\n} from '../../lib/measurement';\nimport { FrameCameraBase, Viewport } from '../../lib/types';\nimport {\n RenderParams,\n translateWorldLineToViewport,\n} from '../viewer-measurement-distance/utils';\n\ninterface MeasurementOverlayViewProps<O extends MeasurementOverlay> {\n overlay: O;\n viewport: Viewport;\n camera: FrameCameraBase;\n}\n\nexport const MeasurementOverlayView: FunctionalComponent<\n MeasurementOverlayViewProps<MeasurementOverlay>\n> = ({ overlay, viewport, camera }) => {\n if (overlay.type === 'line') {\n return (\n <LineOverlayView overlay={overlay} viewport={viewport} camera={camera} />\n );\n } else {\n return (\n <DistanceVectorOverlayView\n overlay={overlay}\n viewport={viewport}\n camera={camera}\n />\n );\n }\n};\n\nconst LineOverlayView: FunctionalComponent<\n MeasurementOverlayViewProps<LineOverlay>\n> = ({ overlay, camera, viewport }) => {\n const { start, end } = translateWorldLineToViewport(overlay, {\n camera,\n viewport,\n });\n\n return (\n <vertex-viewer-measurement-line\n class=\"measurement-line\"\n start={start}\n end={end}\n />\n );\n};\n\nconst DistanceVectorOverlayView: FunctionalComponent<\n MeasurementOverlayViewProps<DistanceVectorOverlay>\n> = ({ overlay: { x, y, z }, camera, viewport }) => {\n const params: RenderParams = { camera, viewport };\n\n const { start: xs, end: xe } = translateWorldLineToViewport(x, params);\n const { start: ys, end: ye } = translateWorldLineToViewport(y, params);\n const { start: zs, end: ze } = translateWorldLineToViewport(z, params);\n\n return (\n <Fragment>\n <vertex-viewer-measurement-line\n class=\"measurement-line distance-vector-x\"\n start={xs}\n end={xe}\n />\n <vertex-viewer-measurement-line\n class=\"measurement-line distance-vector-y\"\n start={ys}\n end={ye}\n />\n <vertex-viewer-measurement-line\n class=\"measurement-line distance-vector-z\"\n start={zs}\n end={ze}\n />\n </Fragment>\n );\n};\n",":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n\n /**\n * @prop --viewer-measurement-overlays-x-axis-color: A CSS color for overlays\n * representing the X axis.\n */\n --viewer-measurement-overlays-x-axis-color: var(--x-axis-color);\n\n /**\n * @prop --viewer-measurement-overlays-y-axis-color: A CSS color for overlays\n * representing the Y axis.\n */\n --viewer-measurement-overlays-y-axis-color: var(--y-axis-color);\n\n /**\n * @prop --viewer-measurement-overlays-z-axis-color: A CSS color for overlays\n * representing the Z axis.\n */\n --viewer-measurement-overlays-z-axis-color: var(--z-axis-color);\n}\n\n.measurement-line {\n position: absolute;\n width: 100%;\n height: 100%;\n}\n\n.measurement-line.distance-vector-x {\n --viewer-measurement-line-fill: var(\n --viewer-measurement-overlays-x-axis-color\n );\n}\n\n.measurement-line.distance-vector-y {\n --viewer-measurement-line-fill: var(\n --viewer-measurement-overlays-y-axis-color\n );\n}\n\n.measurement-line.distance-vector-z {\n --viewer-measurement-line-fill: var(\n --viewer-measurement-overlays-z-axis-color\n );\n}\n","/* eslint-disable @typescript-eslint/member-ordering */\nimport { Component, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport {\n MeasurementOverlay,\n MeasurementOverlayManager,\n} from '../../lib/measurement';\nimport { FrameCameraBase } from '../../lib/types';\nimport { MeasurementOverlayView } from './viewer-measurement-overlays-components';\n\n@Component({\n tag: 'vertex-viewer-measurement-overlays',\n styleUrl: 'viewer-measurement-overlays.css',\n shadow: true,\n})\nexport class ViewerMeasurementOverlays {\n /**\n * The model that contains the overlays to present.\n */\n @Prop()\n public measurementOverlays = new MeasurementOverlayManager();\n\n private onOverlaysChangedListener?: Disposable;\n\n /**\n * @ignore\n */\n @Watch('measurementOverlays')\n protected handleMeasurementOverlaysChanged(): void {\n this.removeModelListeners();\n this.addModelListeners();\n\n this.updateOverlays();\n }\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public camera?: FrameCameraBase;\n\n /**\n * The viewer that this component is bound to.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(\n newViewer?: HTMLVertexViewerElement,\n oldViewer?: HTMLVertexViewerElement\n ): void {\n this.removeViewerListeners(oldViewer);\n this.addViewerListeners();\n\n this.updateCamera();\n }\n\n @State()\n private overlays: MeasurementOverlay[] = [];\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.addModelListeners();\n this.addViewerListeners();\n\n this.updateOverlays();\n this.updateCamera();\n }\n\n private addModelListeners(): void {\n this.onOverlaysChangedListener = this.measurementOverlays.onOverlaysChanged(\n () => this.updateOverlays()\n );\n }\n\n private removeModelListeners(): void {\n this.onOverlaysChangedListener?.dispose();\n this.onOverlaysChangedListener = undefined;\n }\n\n private addViewerListeners(): void {\n this.viewer?.addEventListener('frameReceived', this.updateCamera);\n }\n\n private removeViewerListeners(viewer?: HTMLVertexViewerElement): void {\n viewer?.removeEventListener('frameReceived', this.updateCamera);\n }\n\n private updateCamera = (): void => {\n this.camera = this.viewer?.frame?.scene.camera;\n };\n\n private updateOverlays(): void {\n this.overlays = this.measurementOverlays.getOverlays();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n {this.overlays.map((overlay) => {\n if (this.camera != null && this.viewer != null) {\n return (\n <MeasurementOverlayView\n overlay={overlay}\n viewport={this.viewer.viewport}\n camera={this.camera}\n />\n );\n }\n })}\n </Host>\n );\n }\n}\n"],"mappings":";;;kTAoBM,SAAUA,EACdC,EACAC,GAOA,MAAMC,OAAEA,EAAMC,SAAEA,GAAaF,EAE7B,MAAMG,EAAsBF,EAAOG,kBAAkBL,EAAKM,OAC1D,MAAMC,EAAoBL,EAAOG,kBAAkBL,EAAKQ,KAKxD,GAAIJ,GAAuBG,EAAmB,CAC5C,MAAME,EAAKP,EAAOQ,sBAAsBV,GACxC,MAAMW,EAAUC,EAAMC,OAAO,CAC3BP,MAAOF,GAAuBK,GAAM,KAAOA,EAAKT,EAAKM,MACrDE,IAAKD,GAAqBE,GAAM,KAAOA,EAAKT,EAAKQ,MAGnD,MAAMM,EAAMF,EAAMG,gBAAgBJ,EAAST,EAAOc,sBAClD,MAAO,CACLV,MAAOH,EAASc,0BAA0BH,EAAIR,OAC9CE,IAAKL,EAASc,0BAA0BH,EAAIN,KAC5CU,UAAWd,EACXe,QAASZ,E,KAEN,CACL,MAAMO,EAAMF,EAAMG,gBAAgBf,EAAME,EAAOc,sBAC/C,MAAO,CACLV,MAAOH,EAASc,0BAA0BH,EAAIR,OAC9CE,IAAKL,EAASc,0BAA0BH,EAAIN,KAC5CU,UAAW,MACXC,QAAS,M,CAGf,C,SAEgBC,EACdpB,EACAqB,EACApB,GAEA,MACEK,MAAOgB,EACPd,IAAKe,EAAKL,UACVA,EAASC,QACTA,GACEpB,EAA6BC,EAAMC,GACvC,MAAMuB,EAAUC,EAAMC,KAAKJ,EAASC,EAAO,IAC3C,MAAMI,EACJN,IAAsB,OAClBO,EAAwB5B,EAAMqB,EAAmBpB,GACjD4B,UAEN,MAAO,CAAEP,UAASC,QAAOC,UAASG,cAAaT,YAAWC,UAC5D,CAWA,SAASS,EACP5B,EACA8B,EACA7B,GAEA,OAAOA,EAAOE,SAAS4B,yBACrBD,IAAW,QAAU9B,EAAKM,MAAQN,EAAKQ,IACvCP,EAAOC,OAAOc,qBAElB,CChFO,MAAMgB,EAET,EAAGC,UAAS9B,WAAUD,aACxB,GAAI+B,EAAQC,OAAS,OAAQ,CAC3B,OACEC,EAACC,EAAe,CAACH,QAASA,EAAS9B,SAAUA,EAAUD,OAAQA,G,KAE5D,CACL,OACEiC,EAACE,EAAyB,CACxBJ,QAASA,EACT9B,SAAUA,EACVD,OAAQA,G,GAMhB,MAAMkC,EAEF,EAAGH,UAAS/B,SAAQC,eACtB,MAAMG,MAAEA,EAAKE,IAAEA,GAAQT,EAA6BkC,EAAS,CAC3D/B,SACAC,aAGF,OACEgC,EAAA,kCACEG,MAAM,mBACNhC,MAAOA,EACPE,IAAKA,GACL,EAIN,MAAM6B,EAEF,EAAGJ,SAAWM,IAAGC,IAAGC,KAAKvC,SAAQC,eACnC,MAAMF,EAAuB,CAAEC,SAAQC,YAEvC,MAAQG,MAAOoC,EAAIlC,IAAKmC,GAAO5C,EAA6BwC,EAAGtC,GAC/D,MAAQK,MAAOsC,EAAIpC,IAAKqC,GAAO9C,EAA6ByC,EAAGvC,GAC/D,MAAQK,MAAOwC,EAAItC,IAAKuC,GAAOhD,EAA6B0C,EAAGxC,GAE/D,OACEkC,EAACa,EAAQ,KACPb,EAAA,kCACEG,MAAM,qCACNhC,MAAOoC,EACPlC,IAAKmC,IAEPR,EAAA,kCACEG,MAAM,qCACNhC,MAAOsC,EACPpC,IAAKqC,IAEPV,EAAA,kCACEG,MAAM,qCACNhC,MAAOwC,EACPtC,IAAKuC,IAEE,ECjFf,MAAME,EAA+B,IAAM,osB,MCgB9BC,EAAyBC,EAAA,MAAAD,UAAAE,EALtC,WAAAC,CAAAC,G,kEAUSC,KAAAC,oBAAsB,IAAIC,EA0CzBF,KAAAG,SAAiC,GAgCjCH,KAAAI,aAAe,K,QACrBJ,KAAKrD,QAAS0D,GAAAC,EAAAN,KAAKO,UAAM,MAAAD,SAAA,SAAAA,EAAEE,SAAK,MAAAH,SAAA,SAAAA,EAAEI,MAAM9D,MAAM,CA2BjD,CA9FW,gCAAA+D,GACRV,KAAKW,uBACLX,KAAKY,oBAELZ,KAAKa,gB,CAmBG,mBAAAC,CACRC,EACAC,GAEAhB,KAAKiB,sBAAsBD,GAC3BhB,KAAKkB,qBAELlB,KAAKI,c,CASG,iBAAAe,GACRnB,KAAKY,oBACLZ,KAAKkB,qBAELlB,KAAKa,iBACLb,KAAKI,c,CAGC,iBAAAQ,GACNZ,KAAKoB,0BAA4BpB,KAAKC,oBAAoBoB,mBACxD,IAAMrB,KAAKa,kB,CAIP,oBAAAF,G,OACNL,EAAAN,KAAKoB,6BAAyB,MAAAd,SAAA,SAAAA,EAAEgB,UAChCtB,KAAKoB,0BAA4B9C,S,CAG3B,kBAAA4C,G,OACNZ,EAAAN,KAAKO,UAAM,MAAAD,SAAA,SAAAA,EAAEiB,iBAAiB,gBAAiBvB,KAAKI,a,CAG9C,qBAAAa,CAAsBV,GAC5BA,IAAM,MAANA,SAAM,SAANA,EAAQiB,oBAAoB,gBAAiBxB,KAAKI,a,CAO5C,cAAAS,GACNb,KAAKG,SAAWH,KAAKC,oBAAoBwB,a,CAMjC,MAAAC,GACR,OACE9C,EAAC+C,EAAI,CAAAC,IAAA,4CACF5B,KAAKG,SAAS0B,KAAKnD,IAClB,GAAIsB,KAAKrD,QAAU,MAAQqD,KAAKO,QAAU,KAAM,CAC9C,OACE3B,EAACH,EAAsB,CACrBC,QAASA,EACT9B,SAAUoD,KAAKO,OAAO3D,SACtBD,OAAQqD,KAAKrD,Q","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["getSceneTreeViewportHeight","el","clientHeight","getSceneTreeContainsElement","other","contains","lowerCase","str","toLowerCase","DEFAULT_SPLIT_REGEXP","DEFAULT_STRIP_REGEXP","noCase","input","options","_a","splitRegexp","_b","stripRegexp","_c","transform","_d","delimiter","result","replace","start","end","length","charAt","slice","split","map","join","re","value","RegExp","reduce","pascalCaseTransform","index","firstChar","lowerChars","substr","toUpperCase","pascalCase","__assign","camelCaseTransform","camelCase","bindingRegEx","CollectionBinding","constructor","bindings","this","bind","data","forEach","binding","NodeBinding","node","expr","TextNodeBinding","super","newContent","replaceBindingString","textContent","AttributeBinding","attr","newValue","oldValue","getAttribute","setAttribute","PropertyBinding","prop","replaceBinding","EventHandlerBinding","eventName","path","extractBindingPath","disposable","dispose","listener","getBindableValue","addEventListener","removeEventListener","generateBindings","nodeType","Node","ELEMENT_NODE","bindableAttributes","getBindableAttributes","name","startsWith","push","propName","TEXT_NODE","test","i","childNodes","element","Array","from","attributes","filter","exec","undefined","toString","isHead","head","tail","ElementPool","container","elementFactory","instanceMap","Map","elements","swapHeadToTail","count","sliced","splice","concat","swapTailToHead","updateElements","diff","createElement","deleteElement","updateData","f","instance","get","updateElementFactory","iterateElements","set","append","pop","delete","remove","generateInstanceFromTemplate","template","fragment","content","cloneNode","firstElementChild","getSceneTreeTableOffsetTop","getBoundingClientRect","top","getSceneTreeTableViewportWidth","clientWidth","scrollToTop","scrollTo","SceneTreeCellHoverController","onStateChange","EventDispatcher","setHovered","id","emit","stateChanged","on","restartTimeout","fn","existingTimeout","delay","window","clearTimeout","setTimeout","sceneTreeTableLayoutCss","SceneTreeTableLayout","__stencil_proxyCustomElement","HTMLElement","registerHost","rows","totalRows","rowHeight","overScanCount","layoutOffset","scrollOffset","viewportStartIndex","viewportEndIndex","columnGridLayout","columnGridFixedLayout","isComputingCellHeight","isScrolling","stateMap","viewportRows","columnWidths","columnWidthPercentages","lastStartIndex","columnElements","cellHoverController","layoutColumns","visibleRowCount","iterateColumns","col","pool","colIndex","style","minHeight","cellPaddingLeft","depth","rowIndex","row","isLoadedRow","updateCell","cell","position","boxSizing","height","width","paddingLeft","tree","hoverController","updateLayoutPosition","readDOM","tableElement","recomputeColumnWidths","layoutWidth","getLayoutWidth","w","columnsResized","recomputeColumnPercentages","computeInitialColumnWidths","c","initialWidth","columnWidthSum","scaledColumnWidths","updateColumnElements","hostEl","querySelectorAll","computeCellHeight","async","dummyData","hex","expanded","selected","visible","partiallyVisible","isLeaf","columnsList","filterHit","hasGeometry","phantom","endItem","metadata","createColumnCellInstance","visibility","appendChild","componentOnReady","Promise","resolve","computeHeaderHeight","headerHeight","headerElement","setProperty","computeColumnGridLayout","res","bindHeaderData","headerInstances","createHeaderInstance","paddingRight","slot","gridColumnStart","gridColumnEnd","headerDividerInstances","_","createDividerInstance","right","pointerEvents","rebindHeaderData","removeDividerDragListeners","addDividerDragListeners","createDividerPointerDownHandler","event","preventDefault","stopPropagation","lastDividerPointerPosition","Point","create","Math","floor","clientX","clientY","resizingColumnIndex","classList","add","handleDividerPointerMove","handleDividerPointerUp","current","resizingIndex","subtract","abs","x","isValidResize","currentColumn","nextColumn","currentWidth","nextWidth","currentMinWidth","minWidth","currentMaxWidth","maxWidth","Number","MAX_SAFE_INTEGER","nextMinWidth","nextMaxWidth","currentIsValid","nextIsValid","handleScrollChanged","scrollTimer","target","scrollTop","computeAndUpdateViewportRows","componentWillLoad","createPools","initializeColumnLayout","headerResizeObserver","ResizeObserver","resizeObserver","clearLayoutHeight","clearLayoutWidth","componentDidLoad","passive","observe","initializeMeasuredLayout","componentWillRender","componentDidRender","layoutRendered","componentDidUpdate","disconnectedCallback","disconnect","handleViewportRowsPropsChanged","scrollToPosition","attemptComputeCellHeight","render","h","Host","key","class","ref","gridTemplateColumns","display","onSlotchange","ensureDividerTemplateDefined","recreateColumnPools","computeViewportRows","viewportHeight","getLayoutHeight","canComputeIndices","viewportCount","ceil","startIndex","max","endIndex","min","getViewportRows","controller","isConnected","updateActiveRowRange","columnElementPools","WeakMap","column","Error","querySelector","defaultDividerTemplate","document","innerHTML","headerDividerListeners","d","listeners","populateRowData","rowData","call","layoutHeight","computedWidth"],"sources":["src/components/scene-tree/lib/dom.ts","../html-templates/dist/bundle.js","src/components/scene-tree-table-layout/lib/dom.ts","src/components/scene-tree-table-layout/lib/hover-controller.ts","src/components/scene-tree-table-layout/lib/window.ts","src/components/scene-tree-table-layout/scene-tree-table-layout.css?tag=vertex-scene-tree-table-layout&encapsulation=shadow","src/components/scene-tree-table-layout/scene-tree-table-layout.tsx"],"sourcesContent":["export function getSceneTreeViewportHeight(el: HTMLElement): number {\n return el.clientHeight;\n}\n\nexport function getSceneTreeOffsetTop(el: HTMLElement): number {\n return el.offsetTop;\n}\n\nexport function getSceneTreeContainsElement(\n el: Element,\n other: Element\n): boolean {\n return el.contains(other);\n}\n","import { __assign } from 'tslib';\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\n/**\n * Lower case as a function.\n */\nfunction lowerCase(str) {\n return str.toLowerCase();\n}\n\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nfunction noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n\nfunction pascalCaseTransform(input, index) {\n var firstChar = input.charAt(0);\n var lowerChars = input.substr(1).toLowerCase();\n if (index > 0 && firstChar >= \"0\" && firstChar <= \"9\") {\n return \"_\" + firstChar + lowerChars;\n }\n return \"\" + firstChar.toUpperCase() + lowerChars;\n}\nfunction pascalCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \"\", transform: pascalCaseTransform }, options));\n}\n\nfunction camelCaseTransform(input, index) {\n if (index === 0)\n return input.toLowerCase();\n return pascalCaseTransform(input, index);\n}\nfunction camelCase(input, options) {\n if (options === void 0) { options = {}; }\n return pascalCase(input, __assign({ transform: camelCaseTransform }, options));\n}\n\nconst bindingRegEx = /{{(.+)}}/;\nclass CollectionBinding {\n constructor(bindings) {\n this.bindings = bindings;\n }\n bind(data) {\n this.bindings.forEach((binding) => binding.bind(data));\n }\n}\nclass NodeBinding {\n constructor(node, expr) {\n this.node = node;\n this.expr = expr;\n }\n}\nclass TextNodeBinding extends NodeBinding {\n constructor(node, expr) {\n super(node, expr);\n }\n bind(data) {\n const newContent = replaceBindingString(data, this.expr);\n if (newContent !== this.node.textContent) {\n this.node.textContent = newContent;\n }\n }\n}\nclass AttributeBinding extends NodeBinding {\n constructor(node, expr, attr) {\n super(node, expr);\n this.attr = attr;\n }\n bind(data) {\n const newValue = replaceBindingString(data, this.expr);\n const oldValue = this.node.getAttribute(this.attr);\n if (oldValue !== newValue) {\n this.node.setAttribute(this.attr, newValue);\n }\n }\n}\nclass PropertyBinding extends NodeBinding {\n constructor(node, expr, prop) {\n super(node, expr);\n this.prop = prop;\n }\n bind(data) {\n const newValue = replaceBinding(data, this.expr);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const oldValue = this.node[this.prop];\n if (oldValue !== newValue) {\n this.node[this.prop] = newValue;\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n }\n}\nclass EventHandlerBinding extends NodeBinding {\n constructor(node, expr, eventName) {\n super(node, expr);\n this.eventName = eventName;\n }\n bind(data) {\n var _a;\n const path = extractBindingPath(this.expr);\n if (path != null) {\n (_a = this.disposable) === null || _a === void 0 ? void 0 : _a.dispose();\n const listener = getBindableValue(data, path, true);\n this.node.addEventListener(this.eventName, listener);\n this.disposable = {\n dispose: () => {\n this.node.removeEventListener(this.eventName, listener);\n },\n };\n }\n }\n}\nfunction generateBindings(node) {\n const bindings = [];\n if (node.nodeType === Node.ELEMENT_NODE) {\n const el = node;\n const bindableAttributes = getBindableAttributes(el);\n bindableAttributes.forEach((attr) => {\n if (attr.name.startsWith('event:')) {\n const eventName = camelCase(attr.name.replace('event:', ''));\n bindings.push(new EventHandlerBinding(el, attr.value, eventName));\n }\n else if (attr.name.startsWith('attr:')) {\n bindings.push(new AttributeBinding(el, attr.value, attr.name.replace('attr:', '')));\n }\n else if (attr.name.startsWith('prop:')) {\n const propName = camelCase(attr.name.replace('prop:', ''));\n bindings.push(new PropertyBinding(el, attr.value, propName));\n }\n });\n }\n else if (node.nodeType === Node.TEXT_NODE &&\n node.textContent != null &&\n bindingRegEx.test(node.textContent)) {\n bindings.push(new TextNodeBinding(node, node.textContent));\n }\n for (let i = 0; i < node.childNodes.length; i++) {\n bindings.push(...generateBindings(node.childNodes[i]));\n }\n return bindings;\n}\nfunction getBindableAttributes(element) {\n return Array.from(element.attributes).filter((attr) => bindingRegEx.test(attr.value));\n}\nfunction extractBindingPath(expr) {\n const result = bindingRegEx.exec(expr);\n return result != null ? result[1] : undefined;\n}\nfunction replaceBindingString(data, expr) {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return expr.replace(`{{${path}}}`, value === null || value === void 0 ? void 0 : value.toString());\n }\n else {\n return expr;\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction replaceBinding(data, expr) {\n const path = extractBindingPath(expr);\n if (path != null) {\n const value = getBindableValue(data, path, true);\n return value;\n }\n else {\n return expr;\n }\n}\nfunction getBindableValue(data, path, isHead = false\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n const [head, ...tail] = path.split('.');\n if (isHead && tail.length === 0) {\n return data;\n }\n else if (isHead && tail.length > 0) {\n return getBindableValue(data, tail.join('.'), false);\n }\n else {\n const value = data[head];\n if (tail.length > 0) {\n return getBindableValue(value, tail.join('.'), false);\n }\n else {\n return value;\n }\n }\n}\n\nclass ElementPool {\n constructor(container, elementFactory) {\n this.container = container;\n this.elementFactory = elementFactory;\n this.instanceMap = new Map();\n this.elements = [];\n }\n swapHeadToTail(count) {\n const sliced = this.elements.splice(0, count);\n this.elements.splice(this.elements.length, 0, ...sliced);\n return this.elements.concat();\n }\n swapTailToHead(count) {\n const sliced = this.elements.splice(-count, count);\n this.elements.splice(0, 0, ...sliced);\n return this.elements.concat();\n }\n updateElements(count) {\n const diff = count - this.elements.length;\n if (diff > 0) {\n for (let i = 0; i < diff; i++) {\n this.createElement();\n }\n }\n else {\n for (let i = 0; i < -diff; i++) {\n this.deleteElement();\n }\n }\n return this.elements.concat();\n }\n updateData(f) {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n const data = f(i);\n instance === null || instance === void 0 ? void 0 : instance.bindings.bind(data);\n });\n }\n updateElementFactory(elementFactory) {\n this.elementFactory = elementFactory;\n this.updateElements(0);\n }\n iterateElements(f) {\n this.elements.forEach((el, i) => {\n const instance = this.instanceMap.get(el);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n f(el, instance.bindings, i);\n });\n }\n createElement() {\n const instance = this.elementFactory();\n this.elements.push(instance.element);\n this.instanceMap.set(instance.element, instance);\n this.container.append(instance.element);\n return instance;\n }\n deleteElement() {\n const element = this.elements.pop();\n if (element != null) {\n this.instanceMap.delete(element);\n element.remove();\n }\n }\n}\n\nfunction append(container, element, data) {\n const bindings = new CollectionBinding(generateBindings(element));\n bindings.bind(data);\n container.appendChild(element);\n const created = container.lastElementChild;\n if (created != null) {\n return { element: created, bindings };\n }\n else {\n throw new Error('Failed to append element');\n }\n}\nfunction generateInstanceFromTemplate(template) {\n const fragment = template.content.cloneNode(true);\n const element = fragment.firstElementChild;\n const bindings = new CollectionBinding(generateBindings(fragment));\n return { element, bindings };\n}\n\nexport { AttributeBinding, CollectionBinding, ElementPool, EventHandlerBinding, NodeBinding, PropertyBinding, TextNodeBinding, append, generateBindings, generateInstanceFromTemplate };\n//# sourceMappingURL=bundle.js.map\n","export type DomScrollToOptions = ScrollToOptions;\n\nexport function getSceneTreeTableOffsetTop(el: HTMLElement): number {\n return el.getBoundingClientRect().top ?? 0;\n}\n\nexport function getSceneTreeTableViewportWidth(el: HTMLElement): number {\n return el.clientWidth;\n}\n\nexport function scrollToTop(\n el: HTMLElement,\n top: number,\n options: Pick<DomScrollToOptions, 'behavior'>\n): void {\n el.scrollTo({ top, ...options });\n}\n","import { Disposable, EventDispatcher, Listener } from '@vertexvis/utils';\n\nexport class SceneTreeCellHoverController {\n public onStateChange = new EventDispatcher<string | undefined>();\n\n public setHovered(id?: string): void {\n this.onStateChange.emit(id);\n }\n\n public stateChanged(listener: Listener<string | undefined>): Disposable {\n return this.onStateChange.on(listener);\n }\n}\n","export function restartTimeout(\n fn: VoidFunction,\n existingTimeout?: number,\n delay = 200\n): number {\n window.clearTimeout(existingTimeout);\n return window.setTimeout(fn, delay);\n}\n",":host {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n overflow: hidden;\n font-size: 0.825rem;\n\n /**\n * @prop --scene-tree-table-row-padding: CSS lengths that specifies the amount of\n * padding between the row's border and content.\n */\n --scene-tree-table-row-padding: 2px 0px;\n\n /**\n * @prop --scene-tree-table-column-gap: CSS length that specifies the amount of\n * padding between columns in the table.\n */\n --scene-tree-table-column-gap: 0.5rem;\n\n /**\n * @prop --scene-tree-table-column-resize-cursor: A CSS cursor value that will\n * be displayed when resizing a column. Defaults to `col-resize`.\n */\n --scene-tree-table-column-resize-cursor: col-resize;\n}\n\n.header {\n position: relative;\n display: grid;\n width: 100%;\n border-bottom: var(--scene-tree-toolbar-separator);\n}\n\n.table {\n position: relative;\n display: grid;\n width: 100%;\n height: 100%;\n overflow: auto;\n}\n\n.resize-overlay {\n position: absolute;\n top: 0;\n cursor: var(--scene-tree-table-column-resize-cursor);\n z-index: 1000;\n width: 100%;\n height: 100%;\n}\n\n.divider-overlay {\n position: absolute;\n top: 0;\n display: grid;\n pointer-events: none;\n z-index: 2000;\n width: 100%;\n height: 100%;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\nimport {\n Binding,\n ElementPool,\n generateInstanceFromTemplate,\n InstancedTemplate,\n} from '@vertexvis/html-templates';\n\nimport { readDOM } from '../../lib/stencil';\nimport { SceneTreeController } from '../scene-tree/lib/controller';\nimport { getSceneTreeViewportHeight } from '../scene-tree/lib/dom';\nimport { isLoadedRow, LoadedRow, Row } from '../scene-tree/lib/row';\nimport { RowDataProvider } from '../scene-tree/types';\nimport {\n DomScrollToOptions,\n getSceneTreeTableOffsetTop,\n getSceneTreeTableViewportWidth,\n scrollToTop,\n} from './lib/dom';\nimport { SceneTreeCellHoverController } from './lib/hover-controller';\nimport { restartTimeout } from './lib/window';\n\ninterface StateMap {\n columnElementPools?: WeakMap<\n HTMLVertexSceneTreeTableColumnElement,\n ElementPool\n >;\n headerInstances?: Array<InstancedTemplate<HTMLElement>>;\n headerDividerInstances?: Array<InstancedTemplate<HTMLElement>>;\n headerDividerListeners?: Array<(event: PointerEvent) => void>;\n\n viewportRows: Row[];\n\n headerHeight?: number;\n columnWidths: number[];\n columnWidthPercentages: number[];\n}\n\n@Component({\n tag: 'vertex-scene-tree-table-layout',\n styleUrl: 'scene-tree-table-layout.css',\n shadow: true,\n})\nexport class SceneTreeTableLayout {\n /**\n * A reference to the scene tree to perform operations for interactions. Such\n * as expansion, visibility and selection.\n */\n @Prop()\n public tree?: HTMLVertexSceneTreeElement;\n\n /**\n * @internal\n */\n @Prop()\n public controller?: SceneTreeController;\n\n /**\n * @internal\n */\n @Prop()\n public rows: Row[] = [];\n\n /**\n * @internal\n */\n @Prop()\n public totalRows = 0;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public rowHeight = 24;\n\n /**\n * The number of offscreen rows above and below the viewport to render. Having\n * a higher number reduces the chance of the browser not displaying a row\n * while scrolling.\n *\n * This prop will be automatically populated based on the `overScanCount` prop\n * specified in the parent `<vertex-scene-tree />` element.\n */\n @Prop()\n public overScanCount = 25;\n\n /**\n * A callback that is invoked immediately before a row is about to be rendered.\n * This callback can return additional data that can be bound to in a\n * template.\n *\n * This prop will be automatically populated based on the `rowData` prop\n * specified in the parent `<vertex-scene-tree />` element.\n *\n * @example\n *\n * ```html\n * <script>\n * const table = document.querySelector('vertex-scene-tree-table');\n * table.rowData = (row) => {\n * return { func: () => console.log('row', row.node.name) };\n * }\n * </script>\n *\n * <vertex-scene-tree>\n * <vertex-scene-tree-table>\n * <vertex-scene-tree-table-column>\n * <template>\n * <button event:click=\"{{row.data.func}}\">Hi</button>\n * </template>\n * </vertex-scene-tree-table-column>\n * </vertex-scene-tree-table>\n * </vertex-scene-tree>\n * ```\n */\n @Prop()\n public rowData?: RowDataProvider;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public layoutOffset = 0;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public scrollOffset = 0;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public layoutHeight?: number;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public layoutWidth?: number;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public viewportStartIndex = 0;\n\n /**\n * @internal\n */\n @Prop({ mutable: true })\n public viewportEndIndex = 0;\n\n /**\n * @internal\n */\n @Event()\n public layoutRendered!: EventEmitter<void>;\n\n /**\n * An event that is emitted when the columns of this `<vertex-scene-tree-table-layout>`\n * are resized with an array containing the widths of the columns in pixels.\n */\n @Event({ bubbles: true })\n public columnsResized!: EventEmitter<number[]>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private columnGridLayout = '1fr';\n\n @State()\n private columnGridFixedLayout = '';\n\n @State()\n private isComputingCellHeight = true;\n\n @State()\n private lastDividerPointerPosition?: Point.Point;\n\n @State()\n private resizingColumnIndex?: number;\n\n @State()\n private isScrolling = false;\n\n @State()\n private scrollTimer: number | undefined;\n\n /**\n * This stores internal state that you want to preserve across live-reloads,\n * but shouldn't trigger a refresh if the data changes. Marking this with\n * @State to allow to preserve state across live-reloads.\n */\n @State()\n private stateMap: StateMap = {\n viewportRows: [],\n columnWidths: [],\n columnWidthPercentages: [],\n };\n\n private lastStartIndex = 0;\n private resizeObserver?: ResizeObserver;\n private headerResizeObserver?: ResizeObserver;\n\n private tableElement?: HTMLDivElement;\n private headerElement?: HTMLDivElement;\n private columnElements: HTMLVertexSceneTreeTableColumnElement[] = [];\n\n private cellHoverController = new SceneTreeCellHoverController();\n\n public componentWillLoad(): void {\n this.updateColumnElements();\n this.createPools();\n this.initializeColumnLayout();\n\n this.headerResizeObserver = new ResizeObserver(() => {\n this.stateMap.headerHeight = undefined;\n this.computeHeaderHeight();\n this.updateLayoutPosition();\n });\n\n this.resizeObserver = new ResizeObserver(() => {\n this.updateLayoutPosition();\n this.clearLayoutHeight();\n this.clearLayoutWidth();\n this.recomputeColumnWidths();\n this.computeColumnGridLayout();\n });\n }\n\n public async componentDidLoad(): Promise<void> {\n this.tableElement?.addEventListener('scroll', this.handleScrollChanged, {\n passive: true,\n });\n\n if (this.headerElement != null) {\n this.headerResizeObserver?.observe(this.headerElement);\n }\n\n this.resizeObserver?.observe(this.hostEl);\n\n // These measurements require rendered DOM, but mutating tracked values\n // directly in componentDidLoad triggers Stencil dev warnings.\n await Promise.resolve();\n await this.initializeMeasuredLayout();\n }\n\n public async componentWillRender(): Promise<void> {\n await this.computeAndUpdateViewportRows();\n }\n\n public componentDidRender(): void {\n this.layoutColumns();\n\n this.layoutRendered.emit();\n }\n\n public async componentDidUpdate(): Promise<void> {\n if (this.isComputingCellHeight) {\n await this.computeCellHeight();\n }\n }\n\n public disconnectedCallback(): void {\n this.tableElement?.removeEventListener('scroll', this.handleScrollChanged);\n this.removeDividerDragListeners();\n this.headerResizeObserver?.disconnect();\n this.resizeObserver?.disconnect();\n this.stateMap.columnWidths = [];\n this.stateMap.columnWidthPercentages = [];\n }\n\n @Watch('rows')\n @Watch('totalRows')\n @Watch('rowHeight')\n protected async handleViewportRowsPropsChanged(): Promise<void> {\n await this.computeAndUpdateViewportRows();\n }\n\n /**\n * Scrolls the table to the provided top value.\n *\n * @param top The position to scroll to.\n * @param options A set of options to configure the scrolling behavior.\n */\n @Method()\n public async scrollToPosition(\n top: number,\n options: Pick<DomScrollToOptions, 'behavior'>\n ): Promise<void> {\n if (this.tableElement != null) {\n scrollToTop(this.tableElement, top, options);\n }\n }\n\n /**\n * Attempts to compute the height of templated cells. Used for internals\n * or testing.\n *\n * @internal\n * @ignore\n */\n @Method()\n public async attemptComputeCellHeight(): Promise<void> {\n this.computeCellHeight();\n }\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div\n class=\"header\"\n ref={(ref) => (this.headerElement = ref)}\n style={{\n gridTemplateColumns: this.columnGridFixedLayout,\n display: this.columnElements.length <= 1 ? 'none' : 'grid',\n }}\n >\n <slot name=\"header\" />\n </div>\n <div\n class=\"table\"\n ref={(ref) => (this.tableElement = ref)}\n style={{\n gridTemplateColumns: this.columnGridLayout,\n }}\n >\n <slot\n onSlotchange={() => {\n this.ensureDividerTemplateDefined();\n this.updateColumnElements();\n this.recreateColumnPools();\n this.computeInitialColumnWidths();\n this.rebindHeaderData();\n this.computeColumnGridLayout();\n }}\n />\n </div>\n <div\n class=\"divider-overlay\"\n style={{\n gridTemplateColumns: this.columnGridFixedLayout,\n }}\n >\n <slot name=\"divider\" />\n </div>\n {this.resizingColumnIndex != null && <div class=\"resize-overlay\" />}\n </Host>\n );\n }\n\n private computeViewportRows(): void {\n const viewportHeight = this.getLayoutHeight();\n const canComputeIndices =\n viewportHeight != null &&\n viewportHeight > 0 &&\n !this.isComputingCellHeight;\n\n if (canComputeIndices) {\n const viewportCount = Math.ceil(viewportHeight / this.rowHeight);\n\n const viewportStartIndex = Math.floor(this.scrollOffset / this.rowHeight);\n const viewportEndIndex = viewportStartIndex + viewportCount;\n\n const startIndex = Math.max(0, viewportStartIndex - this.overScanCount);\n const endIndex = Math.min(\n this.totalRows - 1,\n viewportEndIndex + this.overScanCount\n );\n\n const rows = this.getViewportRows(startIndex, endIndex);\n\n this.viewportStartIndex = startIndex;\n this.viewportEndIndex = endIndex;\n this.stateMap.viewportRows = rows;\n }\n }\n\n private initializeColumnLayout(): void {\n this.computeInitialColumnWidths();\n this.computeColumnGridLayout();\n this.ensureDividerTemplateDefined();\n this.rebindHeaderData();\n }\n\n private async initializeMeasuredLayout(): Promise<void> {\n await this.computeCellHeight();\n this.computeHeaderHeight();\n }\n\n private async computeAndUpdateViewportRows(): Promise<void> {\n this.computeViewportRows();\n\n if (this.controller?.isConnected && this.totalRows > 0) {\n await this.controller.updateActiveRowRange(\n this.viewportStartIndex,\n this.viewportEndIndex\n );\n }\n }\n\n private layoutColumns = (): void => {\n const visibleRowCount = this.viewportEndIndex - this.viewportStartIndex + 1;\n const diff = this.viewportStartIndex - this.lastStartIndex;\n this.lastStartIndex = this.viewportStartIndex;\n\n this.iterateColumns((col, pool, colIndex) => {\n pool.updateElements(visibleRowCount);\n\n if (diff > 0) {\n pool.swapHeadToTail(diff);\n } else {\n pool.swapTailToHead(-diff);\n }\n\n col.style.minHeight = `${this.rowHeight * this.totalRows}px`;\n\n const cellPaddingLeft =\n colIndex === 0\n ? (depth: number) => `calc(${depth} * 0.5rem)`\n : () => `0`;\n\n pool.iterateElements((el, binding, rowIndex) => {\n const row = this.stateMap.viewportRows[rowIndex];\n\n if (isLoadedRow(row)) {\n this.updateCell(row, el, binding, rowIndex, cellPaddingLeft);\n }\n });\n });\n };\n\n private updateCell = (\n row: LoadedRow,\n cell: HTMLElement,\n binding: Binding,\n rowIndex: number,\n cellPaddingLeft: (depth: number) => string\n ): void => {\n cell.style.position = 'absolute';\n cell.style.top = `${\n (this.viewportStartIndex + rowIndex) * this.rowHeight\n }px`;\n cell.style.boxSizing = 'border-box';\n cell.style.height = `${this.rowHeight}px`;\n cell.style.width = '100%';\n cell.style.paddingLeft = cellPaddingLeft(row.node.depth);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n (cell as any).tree = this.tree;\n (cell as any).node = row.node;\n (cell as any).hoverController = this.cellHoverController;\n (cell as any).isScrolling = this.isScrolling;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n binding.bind(row);\n };\n\n private updateLayoutPosition = (): void => {\n readDOM(() => {\n if (this.tableElement != null) {\n this.layoutOffset = getSceneTreeTableOffsetTop(this.tableElement);\n }\n });\n };\n\n private recomputeColumnWidths = (): void => {\n const layoutWidth = this.getLayoutWidth();\n if (\n layoutWidth != null &&\n this.stateMap.columnWidths.length ===\n this.stateMap.columnWidthPercentages.length\n ) {\n this.stateMap.columnWidths = this.stateMap.columnWidthPercentages.map(\n (w) => w * layoutWidth\n );\n\n this.columnsResized.emit(this.stateMap.columnWidths);\n }\n };\n\n private recomputeColumnPercentages = (): void => {\n const layoutWidth = this.getLayoutWidth();\n if (\n layoutWidth != null &&\n this.stateMap.columnWidths.length ===\n this.stateMap.columnWidthPercentages.length\n ) {\n this.stateMap.columnWidthPercentages = this.stateMap.columnWidths.map(\n (w) => w / layoutWidth\n );\n }\n };\n\n private computeInitialColumnWidths = (): void => {\n this.stateMap.columnWidths = this.columnElements.map(\n (c) => c.initialWidth ?? 100\n );\n\n const layoutWidth = this.getLayoutWidth();\n if (layoutWidth != null) {\n const columnWidthSum = this.stateMap.columnWidths.reduce(\n (result, w) => result + w,\n 0\n );\n const scaledColumnWidths = this.stateMap.columnWidths.map(\n (w) => w * (layoutWidth / columnWidthSum)\n );\n\n this.stateMap.columnWidthPercentages = scaledColumnWidths.map(\n (w) => w / layoutWidth\n );\n this.stateMap.columnWidths = scaledColumnWidths;\n }\n };\n\n private updateColumnElements = (): void => {\n this.columnElements = Array.from(\n this.hostEl.querySelectorAll('vertex-scene-tree-table-column')\n ) as Array<HTMLVertexSceneTreeTableColumnElement>;\n };\n\n private createPools(): void {\n if (this.stateMap.columnElementPools == null) {\n this.stateMap.columnElementPools = this.columnElements.reduce(\n (map, c) =>\n map.set(\n c,\n new ElementPool(c, () => this.createColumnCellInstance(c))\n ),\n new WeakMap()\n );\n }\n }\n\n private recreateColumnPools(): void {\n this.columnElements.forEach((c) => {\n if (this.stateMap.columnElementPools?.get(c) == null) {\n this.stateMap.columnElementPools?.set(\n c,\n new ElementPool(c, () => this.createColumnCellInstance(c))\n );\n } else {\n this.stateMap.columnElementPools\n .get(c)\n ?.updateElementFactory(() => this.createColumnCellInstance(c));\n }\n });\n }\n\n private iterateColumns(\n f: (\n column: HTMLVertexSceneTreeTableColumnElement,\n pool: ElementPool,\n index: number\n ) => void\n ): void {\n this.columnElements.forEach((column, i) => {\n const pool = this.stateMap.columnElementPools?.get(column);\n if (pool != null) {\n f(column, pool, i);\n } else {\n throw new Error('Cannot find pool for column');\n }\n });\n }\n\n private ensureDividerTemplateDefined(): void {\n const template = this.hostEl.querySelector(\n 'template[slot=\"divider\"]'\n ) as HTMLTemplateElement;\n if (template == null) {\n const defaultDividerTemplate = document.createElement('template');\n defaultDividerTemplate.slot = 'divider';\n defaultDividerTemplate.innerHTML = `\n <vertex-scene-tree-table-resize-divider slot=\"divider\">\n </vertex-scene-tree-table-resize-divider>\n `;\n this.hostEl.appendChild(defaultDividerTemplate);\n }\n }\n\n private createHeaderInstance(\n column: HTMLVertexSceneTreeTableColumnElement\n ): InstancedTemplate<HTMLElement> | undefined {\n const template = column.querySelector(\n 'template[slot=\"header\"]'\n ) as HTMLTemplateElement;\n if (template != null) {\n return generateInstanceFromTemplate(template);\n }\n }\n\n private createDividerInstance(): InstancedTemplate<HTMLElement> {\n const template = this.hostEl.querySelector(\n 'template[slot=\"divider\"]'\n ) as HTMLTemplateElement;\n if (template != null) {\n return generateInstanceFromTemplate(template);\n } else {\n throw new Error('Table is missing divider template element');\n }\n }\n\n private createColumnCellInstance(\n column: HTMLVertexSceneTreeTableColumnElement\n ): InstancedTemplate<HTMLElement> {\n const template = column.querySelector(\n 'template:not([slot=\"header\"])'\n ) as HTMLTemplateElement;\n if (template != null) {\n return generateInstanceFromTemplate(template);\n } else {\n throw new Error('Column is missing cell template element');\n }\n }\n\n private computeCellHeight = async (): Promise<void> => {\n if (this.isComputingCellHeight && this.columnElements.length > 0) {\n const dummyData: LoadedRow = {\n index: 0,\n node: {\n id: { hex: '' },\n name: 'Dummy row',\n expanded: false,\n selected: false,\n visible: false,\n partiallyVisible: false,\n isLeaf: false,\n depth: 0,\n columnsList: [],\n filterHit: false,\n hasGeometry: false,\n phantom: false,\n endItem: false,\n },\n metadata: {},\n data: {},\n };\n const { bindings, element } = this.createColumnCellInstance(\n this.columnElements[0]\n );\n bindings.bind(dummyData);\n element.style.visibility = 'hidden';\n\n this.columnElements[0]?.appendChild(element);\n\n /* eslint-disable @typescript-eslint/no-explicit-any */\n if (typeof (element as any).componentOnReady === 'function') {\n await (element as any).componentOnReady();\n }\n /* eslint-enable @typescript-eslint/no-explicit-any */\n\n let height = element.clientHeight;\n if (height === 0) {\n height = await new Promise((resolve) => {\n setTimeout(() => resolve(element.getBoundingClientRect().height), 5);\n });\n }\n\n this.rowHeight = height ?? this.rowHeight;\n element.remove();\n this.isComputingCellHeight = this.rowHeight === 0;\n }\n };\n\n private computeHeaderHeight = (): void => {\n if (this.stateMap.headerHeight == null) {\n this.stateMap.headerHeight =\n this.headerElement?.getBoundingClientRect().height;\n this.hostEl.style.setProperty(\n '--header-height',\n `${this.stateMap.headerHeight}px`\n );\n }\n };\n\n private computeColumnGridLayout = (): void => {\n if (this.stateMap.columnWidths.length === 0) {\n this.stateMap.columnWidths = this.columnElements.map(\n (c) => c.initialWidth ?? 100\n );\n }\n\n const layoutWidth = this.getLayoutWidth();\n if (layoutWidth != null) {\n if (this.stateMap.columnWidthPercentages.length === 0) {\n this.stateMap.columnWidthPercentages = this.columnElements.map(\n (c) => (c.initialWidth ?? 100) / layoutWidth\n );\n }\n }\n\n /**\n * This layout uses `1fr` instead of the final column width to\n * allow the final column to shrink when a scrollbar appears.\n *\n * This flex behavior is not desired for the header and divider\n * elements since they are not scrollable, and `columnGridFixedLayout`\n * should be used instead.\n */\n this.columnGridLayout = `${this.stateMap.columnWidths\n .slice(0, -1)\n .reduce((res, w) => `${res} ${w}px`, '')} 1fr`;\n\n this.columnGridFixedLayout = `${this.stateMap.columnWidths.reduce(\n (res, w) => `${res} ${w}px`,\n ''\n )}`;\n };\n\n private bindHeaderData = (): void => {\n if (this.stateMap.headerInstances == null) {\n this.stateMap.headerInstances = this.columnElements\n .map((c, i) => {\n const instance = this.createHeaderInstance(c);\n\n if (instance != null) {\n instance.element.style.paddingRight =\n i === this.columnElements.length - 1\n ? `0`\n : `var(--scene-tree-table-column-gap)`;\n instance.element.slot = 'header';\n instance.element.style.gridColumnStart = `${i + 1}`;\n instance.element.style.gridColumnEnd = `${i + 2}`;\n this.hostEl?.appendChild(instance.element);\n }\n\n return instance;\n })\n .filter((i) => i != null) as Array<InstancedTemplate<HTMLElement>>;\n }\n\n if (this.stateMap.headerDividerInstances == null) {\n this.stateMap.headerDividerInstances = this.columnElements\n .slice(0, -1)\n .map((_, i) => {\n const instance = this.createDividerInstance();\n\n instance.element.slot = 'divider';\n instance.element.style.position = 'absolute';\n instance.element.style.right = '0';\n instance.element.style.pointerEvents = 'auto';\n instance.element.style.gridColumnStart = `${i + 1}`;\n instance.element.style.gridColumnEnd = `${i + 2}`;\n this.hostEl?.appendChild(instance.element);\n\n return instance;\n });\n }\n };\n\n private rebindHeaderData = (): void => {\n this.removeDividerDragListeners();\n\n this.stateMap.headerInstances?.forEach((i) => i.element.remove());\n this.stateMap.headerDividerInstances?.forEach((i) => i.element.remove());\n this.stateMap.headerInstances = undefined;\n this.stateMap.headerDividerInstances = undefined;\n\n this.bindHeaderData();\n this.addDividerDragListeners();\n };\n\n private addDividerDragListeners(): void {\n this.stateMap.headerDividerListeners =\n this.stateMap.headerDividerInstances?.map((d, i) => {\n const listener = this.createDividerPointerDownHandler(i);\n\n d.element.addEventListener('pointerdown', listener);\n\n return listener;\n });\n }\n\n private removeDividerDragListeners(): void {\n if (this.stateMap.headerDividerListeners != null) {\n const listeners = this.stateMap.headerDividerListeners;\n\n this.stateMap.headerDividerInstances?.forEach((d, i) => {\n const listener = listeners[i];\n if (listener != null) {\n d.element.removeEventListener('pointerdown', listener);\n }\n });\n this.stateMap.headerDividerListeners = undefined;\n }\n }\n\n private createDividerPointerDownHandler = (\n index: number\n ): ((event: PointerEvent) => void) => {\n return (event: PointerEvent): void => {\n event.preventDefault();\n event.stopPropagation();\n\n this.lastDividerPointerPosition = Point.create(\n Math.floor(event.clientX),\n Math.floor(event.clientY)\n );\n this.resizingColumnIndex = index;\n this.stateMap.headerDividerInstances?.[index]?.element.classList.add(\n 'dragging'\n );\n\n window.addEventListener('pointermove', this.handleDividerPointerMove);\n window.addEventListener('pointerup', this.handleDividerPointerUp);\n };\n };\n\n private handleDividerPointerMove = (event: PointerEvent): void => {\n const current = Point.create(\n Math.floor(event.clientX),\n Math.floor(event.clientY)\n );\n\n if (\n this.lastDividerPointerPosition != null &&\n this.resizingColumnIndex != null\n ) {\n const resizingIndex = this.resizingColumnIndex;\n const diff = Point.subtract(this.lastDividerPointerPosition, current);\n\n if (Math.abs(diff.x) >= 1 && this.isValidResize(diff, resizingIndex)) {\n this.stateMap.columnWidths = this.stateMap.columnWidths.map((w, i) =>\n i === resizingIndex ? w - diff.x : w\n );\n\n if (resizingIndex + 1 < this.stateMap.columnWidths.length) {\n this.stateMap.columnWidths = this.stateMap.columnWidths.map((w, i) =>\n i === resizingIndex + 1 ? w + diff.x : w\n );\n }\n\n this.lastDividerPointerPosition = current;\n this.computeColumnGridLayout();\n }\n }\n };\n\n private handleDividerPointerUp = (): void => {\n if (this.resizingColumnIndex != null) {\n this.stateMap.headerDividerInstances?.[\n this.resizingColumnIndex\n ]?.element.classList.remove('dragging');\n }\n this.lastDividerPointerPosition = undefined;\n this.resizingColumnIndex = undefined;\n\n this.recomputeColumnPercentages();\n this.recomputeColumnWidths();\n\n window.removeEventListener('pointermove', this.handleDividerPointerMove);\n window.removeEventListener('pointerup', this.handleDividerPointerUp);\n };\n\n private isValidResize = (diff: Point.Point, index: number): boolean => {\n const currentColumn = this.columnElements[index];\n const nextColumn = this.columnElements[index + 1];\n const currentWidth = this.stateMap.columnWidths[index];\n const nextWidth = this.stateMap.columnWidths[index + 1];\n const currentMinWidth = currentColumn.minWidth ?? 0;\n const currentMaxWidth = currentColumn.maxWidth ?? Number.MAX_SAFE_INTEGER;\n const nextMinWidth = nextColumn.minWidth ?? 0;\n const nextMaxWidth = nextColumn.maxWidth ?? Number.MAX_SAFE_INTEGER;\n\n const currentIsValid =\n currentWidth - diff.x > currentMinWidth &&\n currentWidth - diff.x < currentMaxWidth;\n const nextIsValid =\n nextColumn != null\n ? nextWidth + diff.x > nextMinWidth && nextWidth + diff.x < nextMaxWidth\n : true;\n\n return currentIsValid && nextIsValid;\n };\n\n private handleScrollChanged = async (event: Event): Promise<void> => {\n this.isScrolling = true;\n\n this.scrollTimer = restartTimeout(() => {\n this.isScrolling = false;\n }, this.scrollTimer);\n\n this.scrollOffset = (event.target as HTMLElement).scrollTop;\n await this.computeAndUpdateViewportRows();\n };\n\n private getViewportRows(startIndex: number, endIndex: number): Row[] {\n const rows = this.rows.slice(startIndex, endIndex + 1);\n return rows.map((row) => (row != null ? this.populateRowData(row) : row));\n }\n\n private populateRowData(row: Row): Row {\n if (this.rowData != null && row != null) {\n const data = this.rowData?.(row) || {};\n return { ...row, data };\n } else {\n return row;\n }\n }\n\n private getLayoutHeight(): number | undefined {\n if (this.layoutHeight == null && this.tableElement != null) {\n this.layoutHeight = getSceneTreeViewportHeight(this.tableElement);\n }\n return this.layoutHeight;\n }\n\n private getLayoutWidth(): number | undefined {\n if (this.layoutWidth == null) {\n const computedWidth = getSceneTreeTableViewportWidth(this.hostEl);\n if (computedWidth > 0) {\n this.layoutWidth = computedWidth;\n }\n }\n return this.layoutWidth;\n }\n\n private clearLayoutHeight(): void {\n this.layoutHeight = undefined;\n }\n\n private clearLayoutWidth(): void {\n this.layoutWidth = undefined;\n }\n}\n"],"mappings":";;;sPAAM,SAAUA,EAA2BC,GACzC,OAAOA,EAAGC,YACZ,CAMM,SAAUC,EACdF,EACAG,GAEA,OAAOH,EAAGI,SAASD,EACrB,CCLA,SAASE,EAAUC,GACf,OAAOA,EAAIC,aACf,CAGA,IAAIC,EAAuB,CAAC,qBAAsB,wBAElD,IAAIC,EAAuB,eAI3B,SAASC,EAAOC,EAAOC,GACnB,GAAIA,SAAY,EAAQ,CAAEA,EAAU,EAAG,CACvC,IAAIC,EAAKD,EAAQE,YAAaA,EAAcD,SAAO,EAASL,EAAuBK,EAAIE,EAAKH,EAAQI,YAAaA,EAAcD,SAAO,EAASN,EAAuBM,EAAIE,EAAKL,EAAQM,UAAWA,EAAYD,SAAO,EAASZ,EAAYY,EAAIE,EAAKP,EAAQQ,UAAWA,EAAYD,SAAO,EAAS,IAAMA,EACxS,IAAIE,EAASC,EAAQA,EAAQX,EAAOG,EAAa,UAAWE,EAAa,MACzE,IAAIO,EAAQ,EACZ,IAAIC,EAAMH,EAAOI,OAEjB,MAAOJ,EAAOK,OAAOH,KAAW,KAC5BA,IACJ,MAAOF,EAAOK,OAAOF,EAAM,KAAO,KAC9BA,IAEJ,OAAOH,EAAOM,MAAMJ,EAAOC,GAAKI,MAAM,MAAMC,IAAIX,GAAWY,KAAKV,EACpE,CAIA,SAASE,EAAQX,EAAOoB,EAAIC,GACxB,GAAID,aAAcE,OACd,OAAOtB,EAAMW,QAAQS,EAAIC,GAC7B,OAAOD,EAAGG,QAAO,SAAUvB,EAAOoB,GAAM,OAAOpB,EAAMW,QAAQS,EAAIC,EAAO,GAAIrB,EAChF,CAEA,SAASwB,EAAoBxB,EAAOyB,GAChC,IAAIC,EAAY1B,EAAMe,OAAO,GAC7B,IAAIY,EAAa3B,EAAM4B,OAAO,GAAGhC,cACjC,GAAI6B,EAAQ,GAAKC,GAAa,KAAOA,GAAa,IAAK,CACnD,MAAO,IAAMA,EAAYC,CACjC,CACI,MAAO,GAAKD,EAAUG,cAAgBF,CAC1C,CACA,SAASG,EAAW9B,EAAOC,GACvB,GAAIA,SAAY,EAAQ,CAAEA,EAAU,EAAG,CACvC,OAAOF,EAAOC,EAAO+B,EAAS,CAAEtB,UAAW,GAAIF,UAAWiB,GAAuBvB,GACrF,CAEA,SAAS+B,EAAmBhC,EAAOyB,GAC/B,GAAIA,IAAU,EACV,OAAOzB,EAAMJ,cACjB,OAAO4B,EAAoBxB,EAAOyB,EACtC,CACA,SAASQ,EAAUjC,EAAOC,GACtB,GAAIA,SAAY,EAAQ,CAAEA,EAAU,EAAG,CACvC,OAAO6B,EAAW9B,EAAO+B,EAAS,CAAExB,UAAWyB,GAAsB/B,GACzE,CAEA,MAAMiC,EAAe,WACrB,MAAMC,EACF,WAAAC,CAAYC,GACRC,KAAKD,SAAWA,CACxB,CACI,IAAAE,CAAKC,GACDF,KAAKD,SAASI,SAASC,GAAYA,EAAQH,KAAKC,IACxD,EAEA,MAAMG,EACF,WAAAP,CAAYQ,EAAMC,GACdP,KAAKM,KAAOA,EACZN,KAAKO,KAAOA,CACpB,EAEA,MAAMC,UAAwBH,EAC1B,WAAAP,CAAYQ,EAAMC,GACdE,MAAMH,EAAMC,EACpB,CACI,IAAAN,CAAKC,GACD,MAAMQ,EAAaC,EAAqBT,EAAMF,KAAKO,MACnD,GAAIG,IAAeV,KAAKM,KAAKM,YAAa,CACtCZ,KAAKM,KAAKM,YAAcF,CACpC,CACA,EAEA,MAAMG,UAAyBR,EAC3B,WAAAP,CAAYQ,EAAMC,EAAMO,GACpBL,MAAMH,EAAMC,GACZP,KAAKc,KAAOA,CACpB,CACI,IAAAb,CAAKC,GACD,MAAMa,EAAWJ,EAAqBT,EAAMF,KAAKO,MACjD,MAAMS,EAAWhB,KAAKM,KAAKW,aAAajB,KAAKc,MAC7C,GAAIE,IAAaD,EAAU,CACvBf,KAAKM,KAAKY,aAAalB,KAAKc,KAAMC,EAC9C,CACA,EAEA,MAAMI,UAAwBd,EAC1B,WAAAP,CAAYQ,EAAMC,EAAMa,GACpBX,MAAMH,EAAMC,GACZP,KAAKoB,KAAOA,CACpB,CACI,IAAAnB,CAAKC,GACD,MAAMa,EAAWM,EAAenB,EAAMF,KAAKO,MAE3C,MAAMS,EAAWhB,KAAKM,KAAKN,KAAKoB,MAChC,GAAIJ,IAAaD,EAAU,CACvBf,KAAKM,KAAKN,KAAKoB,MAAQL,CACnC,CAEA,EAEA,MAAMO,UAA4BjB,EAC9B,WAAAP,CAAYQ,EAAMC,EAAMgB,GACpBd,MAAMH,EAAMC,GACZP,KAAKuB,UAAYA,CACzB,CACI,IAAAtB,CAAKC,GACD,IAAItC,EACJ,MAAM4D,EAAOC,EAAmBzB,KAAKO,MACrC,GAAIiB,GAAQ,KAAM,EACb5D,EAAKoC,KAAK0B,cAAgB,MAAQ9D,SAAO,OAAS,EAASA,EAAG+D,UAC/D,MAAMC,EAAWC,EAAiB3B,EAAMsB,EAAM,MAC9CxB,KAAKM,KAAKwB,iBAAiB9B,KAAKuB,UAAWK,GAC3C5B,KAAK0B,WAAa,CACdC,QAAS,KACL3B,KAAKM,KAAKyB,oBAAoB/B,KAAKuB,UAAWK,EAAS,EAG3E,CACA,EAEA,SAASI,EAAiB1B,GACtB,MAAMP,EAAW,GACjB,GAAIO,EAAK2B,WAAaC,KAAKC,aAAc,CACrC,MAAMpF,EAAKuD,EACX,MAAM8B,EAAqBC,EAAsBtF,GACjDqF,EAAmBjC,SAASW,IACxB,GAAIA,EAAKwB,KAAKC,WAAW,UAAW,CAChC,MAAMhB,EAAY5B,EAAUmB,EAAKwB,KAAKjE,QAAQ,SAAU,KACxD0B,EAASyC,KAAK,IAAIlB,EAAoBvE,EAAI+D,EAAK/B,MAAOwC,GACtE,MACiB,GAAIT,EAAKwB,KAAKC,WAAW,SAAU,CACpCxC,EAASyC,KAAK,IAAI3B,EAAiB9D,EAAI+D,EAAK/B,MAAO+B,EAAKwB,KAAKjE,QAAQ,QAAS,KAC9F,MACiB,GAAIyC,EAAKwB,KAAKC,WAAW,SAAU,CACpC,MAAME,EAAW9C,EAAUmB,EAAKwB,KAAKjE,QAAQ,QAAS,KACtD0B,EAASyC,KAAK,IAAIrB,EAAgBpE,EAAI+D,EAAK/B,MAAO0D,GAClE,IAEA,MACS,GAAInC,EAAK2B,WAAaC,KAAKQ,WAC5BpC,EAAKM,aAAe,MACpBhB,EAAa+C,KAAKrC,EAAKM,aAAc,CACrCb,EAASyC,KAAK,IAAIhC,EAAgBF,EAAMA,EAAKM,aACrD,CACI,IAAK,IAAIgC,EAAI,EAAGA,EAAItC,EAAKuC,WAAWrE,OAAQoE,IAAK,CAC7C7C,EAASyC,QAAQR,EAAiB1B,EAAKuC,WAAWD,IAC1D,CACI,OAAO7C,CACX,CACA,SAASsC,EAAsBS,GAC3B,OAAOC,MAAMC,KAAKF,EAAQG,YAAYC,QAAQpC,GAASlB,EAAa+C,KAAK7B,EAAK/B,QAClF,CACA,SAAS0C,EAAmBlB,GACxB,MAAMnC,EAASwB,EAAauD,KAAK5C,GACjC,OAAOnC,GAAU,KAAOA,EAAO,GAAKgF,SACxC,CACA,SAASzC,EAAqBT,EAAMK,GAChC,MAAMiB,EAAOC,EAAmBlB,GAChC,GAAIiB,GAAQ,KAAM,CACd,MAAMzC,EAAQ8C,EAAiB3B,EAAMsB,EAAM,MAC3C,OAAOjB,EAAKlC,QAAQ,KAAKmD,MAAUzC,IAAU,MAAQA,SAAU,OAAS,EAASA,EAAMsE,WAC/F,KACS,CACD,OAAO9C,CACf,CACA,CAEA,SAASc,EAAenB,EAAMK,GAC1B,MAAMiB,EAAOC,EAAmBlB,GAChC,GAAIiB,GAAQ,KAAM,CACd,MAAMzC,EAAQ8C,EAAiB3B,EAAMsB,EAAM,MAC3C,OAAOzC,CACf,KACS,CACD,OAAOwB,CACf,CACA,CACA,SAASsB,EAAiB3B,EAAMsB,EAAM8B,EAAS,OAG3C,MAAOC,KAASC,GAAQhC,EAAK7C,MAAM,KACnC,GAAI2E,GAAUE,EAAKhF,SAAW,EAAG,CAC7B,OAAO0B,CACf,MACS,GAAIoD,GAAUE,EAAKhF,OAAS,EAAG,CAChC,OAAOqD,EAAiB3B,EAAMsD,EAAK3E,KAAK,KAAM,MACtD,KACS,CACD,MAAME,EAAQmB,EAAKqD,GACnB,GAAIC,EAAKhF,OAAS,EAAG,CACjB,OAAOqD,EAAiB9C,EAAOyE,EAAK3E,KAAK,KAAM,MAC3D,KACa,CACD,OAAOE,CACnB,CACA,CACA,CAEA,MAAM0E,EACF,WAAA3D,CAAY4D,EAAWC,GACnB3D,KAAK0D,UAAYA,EACjB1D,KAAK2D,eAAiBA,EACtB3D,KAAK4D,YAAc,IAAIC,IACvB7D,KAAK8D,SAAW,EACxB,CACI,cAAAC,CAAeC,GACX,MAAMC,EAASjE,KAAK8D,SAASI,OAAO,EAAGF,GACvChE,KAAK8D,SAASI,OAAOlE,KAAK8D,SAAStF,OAAQ,KAAMyF,GACjD,OAAOjE,KAAK8D,SAASK,QAC7B,CACI,cAAAC,CAAeJ,GACX,MAAMC,EAASjE,KAAK8D,SAASI,QAAQF,EAAOA,GAC5ChE,KAAK8D,SAASI,OAAO,EAAG,KAAMD,GAC9B,OAAOjE,KAAK8D,SAASK,QAC7B,CACI,cAAAE,CAAeL,GACX,MAAMM,EAAON,EAAQhE,KAAK8D,SAAStF,OACnC,GAAI8F,EAAO,EAAG,CACV,IAAK,IAAI1B,EAAI,EAAGA,EAAI0B,EAAM1B,IAAK,CAC3B5C,KAAKuE,eACrB,CACA,KACa,CACD,IAAK,IAAI3B,EAAI,EAAGA,GAAK0B,EAAM1B,IAAK,CAC5B5C,KAAKwE,eACrB,CACA,CACQ,OAAOxE,KAAK8D,SAASK,QAC7B,CACI,UAAAM,CAAWC,GACP1E,KAAK8D,SAAS3D,SAAQ,CAACpD,EAAI6F,KACvB,MAAM+B,EAAW3E,KAAK4D,YAAYgB,IAAI7H,GACtC,MAAMmD,EAAOwE,EAAE9B,GACf+B,IAAa,MAAQA,SAAa,OAAS,EAASA,EAAS5E,SAASE,KAAKC,EAAK,GAE5F,CACI,oBAAA2E,CAAqBlB,GACjB3D,KAAK2D,eAAiBA,EACtB3D,KAAKqE,eAAe,EAC5B,CACI,eAAAS,CAAgBJ,GACZ1E,KAAK8D,SAAS3D,SAAQ,CAACpD,EAAI6F,KACvB,MAAM+B,EAAW3E,KAAK4D,YAAYgB,IAAI7H,GAEtC2H,EAAE3H,EAAI4H,EAAS5E,SAAU6C,EAAE,GAEvC,CACI,aAAA2B,GACI,MAAMI,EAAW3E,KAAK2D,iBACtB3D,KAAK8D,SAAStB,KAAKmC,EAAS7B,SAC5B9C,KAAK4D,YAAYmB,IAAIJ,EAAS7B,QAAS6B,GACvC3E,KAAK0D,UAAUsB,OAAOL,EAAS7B,SAC/B,OAAO6B,CACf,CACI,aAAAH,GACI,MAAM1B,EAAU9C,KAAK8D,SAASmB,MAC9B,GAAInC,GAAW,KAAM,CACjB9C,KAAK4D,YAAYsB,OAAOpC,GACxBA,EAAQqC,QACpB,CACA,EAeA,SAASC,EAA6BC,GAClC,MAAMC,EAAWD,EAASE,QAAQC,UAAU,MAC5C,MAAM1C,EAAUwC,EAASG,kBACzB,MAAM1F,EAAW,IAAIF,EAAkBmC,EAAiBsD,IACxD,MAAO,CAAExC,UAAS/C,WACtB,CCzSM,SAAU2F,EAA2B3I,G,MACzC,OAAOa,EAAAb,EAAG4I,wBAAwBC,OAAG,MAAAhI,SAAA,EAAAA,EAAI,CAC3C,CAEM,SAAUiI,EAA+B9I,GAC7C,OAAOA,EAAG+I,WACZ,C,SAEgBC,EACdhJ,EACA6I,EACAjI,GAEAZ,EAAGiJ,SAAS,CAAEJ,SAAQjI,GACxB,C,MCdasI,EAAb,WAAAnG,GACSE,KAAAkG,cAAgB,IAAIC,C,CAEpB,UAAAC,CAAWC,GAChBrG,KAAKkG,cAAcI,KAAKD,E,CAGnB,YAAAE,CAAa3E,GAClB,OAAO5B,KAAKkG,cAAcM,GAAG5E,E,ECV3B,SAAU6E,EACdC,EACAC,EACAC,EAAQ,KAERC,OAAOC,aAAaH,GACpB,OAAOE,OAAOE,WAAWL,EAAIE,EAC/B,CCPA,MAAMI,EAA0B,IAAM,opB,MCuDzBC,EAAoBC,EAAA,MAAAD,UAAAE,EALjC,WAAArH,CAAAsH,G,4JAuBSpH,KAAAqH,KAAc,GAMdrH,KAAAsH,UAAY,EAMZtH,KAAAuH,UAAY,GAWZvH,KAAAwH,cAAgB,GAsChBxH,KAAAyH,aAAe,EAMfzH,KAAA0H,aAAe,EAkBf1H,KAAA2H,mBAAqB,EAMrB3H,KAAA4H,iBAAmB,EAmBlB5H,KAAA6H,iBAAmB,MAGnB7H,KAAA8H,sBAAwB,GAGxB9H,KAAA+H,sBAAwB,KASxB/H,KAAAgI,YAAc,MAWdhI,KAAAiI,SAAqB,CAC3BC,aAAc,GACdC,aAAc,GACdC,uBAAwB,IAGlBpI,KAAAqI,eAAiB,EAMjBrI,KAAAsI,eAA0D,GAE1DtI,KAAAuI,oBAAsB,IAAItC,EAiM1BjG,KAAAwI,cAAgB,KACtB,MAAMC,EAAkBzI,KAAK4H,iBAAmB5H,KAAK2H,mBAAqB,EAC1E,MAAMrD,EAAOtE,KAAK2H,mBAAqB3H,KAAKqI,eAC5CrI,KAAKqI,eAAiBrI,KAAK2H,mBAE3B3H,KAAK0I,gBAAe,CAACC,EAAKC,EAAMC,KAC9BD,EAAKvE,eAAeoE,GAEpB,GAAInE,EAAO,EAAG,CACZsE,EAAK7E,eAAeO,E,KACf,CACLsE,EAAKxE,gBAAgBE,E,CAGvBqE,EAAIG,MAAMC,UAAY,GAAG/I,KAAKuH,UAAYvH,KAAKsH,cAE/C,MAAM0B,EACJH,IAAa,EACRI,GAAkB,QAAQA,cAC3B,IAAM,IAEZL,EAAK9D,iBAAgB,CAAC/H,EAAIqD,EAAS8I,KACjC,MAAMC,EAAMnJ,KAAKiI,SAASC,aAAagB,GAEvC,GAAIE,EAAYD,GAAM,CACpBnJ,KAAKqJ,WAAWF,EAAKpM,EAAIqD,EAAS8I,EAAUF,E,IAE9C,GACF,EAGIhJ,KAAAqJ,WAAa,CACnBF,EACAG,EACAlJ,EACA8I,EACAF,KAEAM,EAAKR,MAAMS,SAAW,WACtBD,EAAKR,MAAMlD,IAAM,IACd5F,KAAK2H,mBAAqBuB,GAAYlJ,KAAKuH,cAE9C+B,EAAKR,MAAMU,UAAY,aACvBF,EAAKR,MAAMW,OAAS,GAAGzJ,KAAKuH,cAC5B+B,EAAKR,MAAMY,MAAQ,OACnBJ,EAAKR,MAAMa,YAAcX,EAAgBG,EAAI7I,KAAK2I,OAGjDK,EAAaM,KAAO5J,KAAK4J,KACzBN,EAAahJ,KAAO6I,EAAI7I,KACxBgJ,EAAaO,gBAAkB7J,KAAKuI,oBACpCe,EAAatB,YAAchI,KAAKgI,YAGjC5H,EAAQH,KAAKkJ,EAAI,EAGXnJ,KAAA8J,qBAAuB,KAC7BC,GAAQ,KACN,GAAI/J,KAAKgK,cAAgB,KAAM,CAC7BhK,KAAKyH,aAAe/B,EAA2B1F,KAAKgK,a,IAEtD,EAGIhK,KAAAiK,sBAAwB,KAC9B,MAAMC,EAAclK,KAAKmK,iBACzB,GACED,GAAe,MACflK,KAAKiI,SAASE,aAAa3J,SACzBwB,KAAKiI,SAASG,uBAAuB5J,OACvC,CACAwB,KAAKiI,SAASE,aAAenI,KAAKiI,SAASG,uBAAuBxJ,KAC/DwL,GAAMA,EAAIF,IAGblK,KAAKqK,eAAe/D,KAAKtG,KAAKiI,SAASE,a,GAInCnI,KAAAsK,2BAA6B,KACnC,MAAMJ,EAAclK,KAAKmK,iBACzB,GACED,GAAe,MACflK,KAAKiI,SAASE,aAAa3J,SACzBwB,KAAKiI,SAASG,uBAAuB5J,OACvC,CACAwB,KAAKiI,SAASG,uBAAyBpI,KAAKiI,SAASE,aAAavJ,KAC/DwL,GAAMA,EAAIF,G,GAKTlK,KAAAuK,2BAA6B,KACnCvK,KAAKiI,SAASE,aAAenI,KAAKsI,eAAe1J,KAC9C4L,IAAK,IAAA5M,EAAC,OAAAA,EAAA4M,EAAEC,gBAAY,MAAA7M,SAAA,EAAAA,EAAI,GAAG,IAG9B,MAAMsM,EAAclK,KAAKmK,iBACzB,GAAID,GAAe,KAAM,CACvB,MAAMQ,EAAiB1K,KAAKiI,SAASE,aAAalJ,QAChD,CAACb,EAAQgM,IAAMhM,EAASgM,GACxB,GAEF,MAAMO,EAAqB3K,KAAKiI,SAASE,aAAavJ,KACnDwL,GAAMA,GAAKF,EAAcQ,KAG5B1K,KAAKiI,SAASG,uBAAyBuC,EAAmB/L,KACvDwL,GAAMA,EAAIF,IAEblK,KAAKiI,SAASE,aAAewC,C,GAIzB3K,KAAA4K,qBAAuB,KAC7B5K,KAAKsI,eAAiBvF,MAAMC,KAC1BhD,KAAK6K,OAAOC,iBAAiB,kCACkB,EAkG3C9K,KAAA+K,kBAAoBC,U,MAC1B,GAAIhL,KAAK+H,uBAAyB/H,KAAKsI,eAAe9J,OAAS,EAAG,CAChE,MAAMyM,EAAuB,CAC3B9L,MAAO,EACPmB,KAAM,CACJ+F,GAAI,CAAE6E,IAAK,IACX5I,KAAM,YACN6I,SAAU,MACVC,SAAU,MACVC,QAAS,MACTC,iBAAkB,MAClBC,OAAQ,MACRtC,MAAO,EACPuC,YAAa,GACbC,UAAW,MACXC,YAAa,MACbC,QAAS,MACTC,QAAS,OAEXC,SAAU,GACV3L,KAAM,IAER,MAAMH,SAAEA,EAAQ+C,QAAEA,GAAY9C,KAAK8L,yBACjC9L,KAAKsI,eAAe,IAEtBvI,EAASE,KAAKgL,GACdnI,EAAQgG,MAAMiD,WAAa,UAE3BnO,EAAAoC,KAAKsI,eAAe,MAAE,MAAA1K,SAAA,SAAAA,EAAEoO,YAAYlJ,GAGpC,UAAYA,EAAgBmJ,mBAAqB,WAAY,OACpDnJ,EAAgBmJ,kB,CAIzB,IAAIxC,EAAS3G,EAAQ9F,aACrB,GAAIyM,IAAW,EAAG,CAChBA,QAAe,IAAIyC,SAASC,IAC1BpF,YAAW,IAAMoF,EAAQrJ,EAAQ6C,wBAAwB8D,SAAS,EAAE,G,CAIxEzJ,KAAKuH,UAAYkC,IAAM,MAANA,SAAM,EAANA,EAAUzJ,KAAKuH,UAChCzE,EAAQqC,SACRnF,KAAK+H,sBAAwB/H,KAAKuH,YAAc,C,GAI5CvH,KAAAoM,oBAAsB,K,MAC5B,GAAIpM,KAAKiI,SAASoE,cAAgB,KAAM,CACtCrM,KAAKiI,SAASoE,cACZzO,EAAAoC,KAAKsM,iBAAa,MAAA1O,SAAA,SAAAA,EAAE+H,wBAAwB8D,OAC9CzJ,KAAK6K,OAAO/B,MAAMyD,YAChB,kBACA,GAAGvM,KAAKiI,SAASoE,iB,GAKfrM,KAAAwM,wBAA0B,KAChC,GAAIxM,KAAKiI,SAASE,aAAa3J,SAAW,EAAG,CAC3CwB,KAAKiI,SAASE,aAAenI,KAAKsI,eAAe1J,KAC9C4L,IAAK,IAAA5M,EAAC,OAAAA,EAAA4M,EAAEC,gBAAY,MAAA7M,SAAA,EAAAA,EAAI,GAAG,G,CAIhC,MAAMsM,EAAclK,KAAKmK,iBACzB,GAAID,GAAe,KAAM,CACvB,GAAIlK,KAAKiI,SAASG,uBAAuB5J,SAAW,EAAG,CACrDwB,KAAKiI,SAASG,uBAAyBpI,KAAKsI,eAAe1J,KACxD4L,IAAK,IAAA5M,EAAC,QAACA,EAAA4M,EAAEC,gBAAY,MAAA7M,SAAA,EAAAA,EAAI,KAAOsM,CAAW,G,EAalDlK,KAAK6H,iBAAmB,GAAG7H,KAAKiI,SAASE,aACtCzJ,MAAM,GAAG,GACTO,QAAO,CAACwN,EAAKrC,IAAM,GAAGqC,KAAOrC,OAAO,UAEvCpK,KAAK8H,sBAAwB,GAAG9H,KAAKiI,SAASE,aAAalJ,QACzD,CAACwN,EAAKrC,IAAM,GAAGqC,KAAOrC,OACtB,KACC,EAGGpK,KAAA0M,eAAiB,KACvB,GAAI1M,KAAKiI,SAAS0E,iBAAmB,KAAM,CACzC3M,KAAKiI,SAAS0E,gBAAkB3M,KAAKsI,eAClC1J,KAAI,CAAC4L,EAAG5H,K,MACP,MAAM+B,EAAW3E,KAAK4M,qBAAqBpC,GAE3C,GAAI7F,GAAY,KAAM,CACpBA,EAAS7B,QAAQgG,MAAM+D,aACrBjK,IAAM5C,KAAKsI,eAAe9J,OAAS,EAC/B,IACA,qCACNmG,EAAS7B,QAAQgK,KAAO,SACxBnI,EAAS7B,QAAQgG,MAAMiE,gBAAkB,GAAGnK,EAAI,IAChD+B,EAAS7B,QAAQgG,MAAMkE,cAAgB,GAAGpK,EAAI,KAC9ChF,EAAAoC,KAAK6K,UAAM,MAAAjN,SAAA,SAAAA,EAAEoO,YAAYrH,EAAS7B,Q,CAGpC,OAAO6B,CAAQ,IAEhBzB,QAAQN,GAAMA,GAAK,M,CAGxB,GAAI5C,KAAKiI,SAASgF,wBAA0B,KAAM,CAChDjN,KAAKiI,SAASgF,uBAAyBjN,KAAKsI,eACzC5J,MAAM,GAAG,GACTE,KAAI,CAACsO,EAAGtK,K,MACP,MAAM+B,EAAW3E,KAAKmN,wBAEtBxI,EAAS7B,QAAQgK,KAAO,UACxBnI,EAAS7B,QAAQgG,MAAMS,SAAW,WAClC5E,EAAS7B,QAAQgG,MAAMsE,MAAQ,IAC/BzI,EAAS7B,QAAQgG,MAAMuE,cAAgB,OACvC1I,EAAS7B,QAAQgG,MAAMiE,gBAAkB,GAAGnK,EAAI,IAChD+B,EAAS7B,QAAQgG,MAAMkE,cAAgB,GAAGpK,EAAI,KAC9ChF,EAAAoC,KAAK6K,UAAM,MAAAjN,SAAA,SAAAA,EAAEoO,YAAYrH,EAAS7B,SAElC,OAAO6B,CAAQ,G,GAKf3E,KAAAsN,iBAAmB,K,QACzBtN,KAAKuN,8BAEL3P,EAAAoC,KAAKiI,SAAS0E,mBAAe,MAAA/O,SAAA,SAAAA,EAAEuC,SAASyC,GAAMA,EAAEE,QAAQqC,YACxDrH,EAAAkC,KAAKiI,SAASgF,0BAAsB,MAAAnP,SAAA,SAAAA,EAAEqC,SAASyC,GAAMA,EAAEE,QAAQqC,WAC/DnF,KAAKiI,SAAS0E,gBAAkBvJ,UAChCpD,KAAKiI,SAASgF,uBAAyB7J,UAEvCpD,KAAK0M,iBACL1M,KAAKwN,yBAAyB,EA4BxBxN,KAAAyN,gCACNtO,GAEQuO,I,QACNA,EAAMC,iBACND,EAAME,kBAEN5N,KAAK6N,2BAA6BC,EAAMC,OACtCC,KAAKC,MAAMP,EAAMQ,SACjBF,KAAKC,MAAMP,EAAMS,UAEnBnO,KAAKoO,oBAAsBjP,GAC3BrB,GAAAF,EAAAoC,KAAKiI,SAASgF,0BAAsB,MAAArP,SAAA,SAAAA,EAAGuB,MAAM,MAAArB,SAAA,SAAAA,EAAEgF,QAAQuL,UAAUC,IAC/D,YAGFzH,OAAO/E,iBAAiB,cAAe9B,KAAKuO,0BAC5C1H,OAAO/E,iBAAiB,YAAa9B,KAAKwO,uBAAuB,EAI7DxO,KAAAuO,yBAA4Bb,IAClC,MAAMe,EAAUX,EAAMC,OACpBC,KAAKC,MAAMP,EAAMQ,SACjBF,KAAKC,MAAMP,EAAMS,UAGnB,GACEnO,KAAK6N,4BAA8B,MACnC7N,KAAKoO,qBAAuB,KAC5B,CACA,MAAMM,EAAgB1O,KAAKoO,oBAC3B,MAAM9J,EAAOwJ,EAAMa,SAAS3O,KAAK6N,2BAA4BY,GAE7D,GAAIT,KAAKY,IAAItK,EAAKuK,IAAM,GAAK7O,KAAK8O,cAAcxK,EAAMoK,GAAgB,CACpE1O,KAAKiI,SAASE,aAAenI,KAAKiI,SAASE,aAAavJ,KAAI,CAACwL,EAAGxH,IAC9DA,IAAM8L,EAAgBtE,EAAI9F,EAAKuK,EAAIzE,IAGrC,GAAIsE,EAAgB,EAAI1O,KAAKiI,SAASE,aAAa3J,OAAQ,CACzDwB,KAAKiI,SAASE,aAAenI,KAAKiI,SAASE,aAAavJ,KAAI,CAACwL,EAAGxH,IAC9DA,IAAM8L,EAAgB,EAAItE,EAAI9F,EAAKuK,EAAIzE,G,CAI3CpK,KAAK6N,2BAA6BY,EAClCzO,KAAKwM,yB,IAKHxM,KAAAwO,uBAAyB,K,QAC/B,GAAIxO,KAAKoO,qBAAuB,KAAM,EACpCtQ,GAAAF,EAAAoC,KAAKiI,SAASgF,0BAAsB,MAAArP,SAAA,SAAAA,EAClCoC,KAAKoO,wBACN,MAAAtQ,SAAA,SAAAA,EAAEgF,QAAQuL,UAAUlJ,OAAO,W,CAE9BnF,KAAK6N,2BAA6BzK,UAClCpD,KAAKoO,oBAAsBhL,UAE3BpD,KAAKsK,6BACLtK,KAAKiK,wBAELpD,OAAO9E,oBAAoB,cAAe/B,KAAKuO,0BAC/C1H,OAAO9E,oBAAoB,YAAa/B,KAAKwO,uBAAuB,EAG9DxO,KAAA8O,cAAgB,CAACxK,EAAmBnF,K,YAC1C,MAAM4P,EAAgB/O,KAAKsI,eAAenJ,GAC1C,MAAM6P,EAAahP,KAAKsI,eAAenJ,EAAQ,GAC/C,MAAM8P,EAAejP,KAAKiI,SAASE,aAAahJ,GAChD,MAAM+P,EAAYlP,KAAKiI,SAASE,aAAahJ,EAAQ,GACrD,MAAMgQ,GAAkBvR,EAAAmR,EAAcK,YAAQ,MAAAxR,SAAA,EAAAA,EAAI,EAClD,MAAMyR,GAAkBvR,EAAAiR,EAAcO,YAAQ,MAAAxR,SAAA,EAAAA,EAAIyR,OAAOC,iBACzD,MAAMC,GAAezR,EAAAgR,EAAWI,YAAQ,MAAApR,SAAA,EAAAA,EAAI,EAC5C,MAAM0R,GAAexR,EAAA8Q,EAAWM,YAAQ,MAAApR,SAAA,EAAAA,EAAIqR,OAAOC,iBAEnD,MAAMG,EACJV,EAAe3K,EAAKuK,EAAIM,GACxBF,EAAe3K,EAAKuK,EAAIQ,EAC1B,MAAMO,EACJZ,GAAc,KACVE,EAAY5K,EAAKuK,EAAIY,GAAgBP,EAAY5K,EAAKuK,EAAIa,EAC1D,KAEN,OAAOC,GAAkBC,CAAW,EAG9B5P,KAAA6P,oBAAsB7E,MAAO0C,IACnC1N,KAAKgI,YAAc,KAEnBhI,KAAK8P,YAAcrJ,GAAe,KAChCzG,KAAKgI,YAAc,KAAK,GACvBhI,KAAK8P,aAER9P,KAAK0H,aAAgBgG,EAAMqC,OAAuBC,gBAC5ChQ,KAAKiQ,8BAA8B,CAyC5C,CA5sBQ,iBAAAC,GACLlQ,KAAK4K,uBACL5K,KAAKmQ,cACLnQ,KAAKoQ,yBAELpQ,KAAKqQ,qBAAuB,IAAIC,gBAAe,KAC7CtQ,KAAKiI,SAASoE,aAAejJ,UAC7BpD,KAAKoM,sBACLpM,KAAK8J,sBAAsB,IAG7B9J,KAAKuQ,eAAiB,IAAID,gBAAe,KACvCtQ,KAAK8J,uBACL9J,KAAKwQ,oBACLxQ,KAAKyQ,mBACLzQ,KAAKiK,wBACLjK,KAAKwM,yBAAyB,G,CAI3B,sBAAMkE,G,WACX9S,EAAAoC,KAAKgK,gBAAY,MAAApM,SAAA,SAAAA,EAAEkE,iBAAiB,SAAU9B,KAAK6P,oBAAqB,CACtEc,QAAS,OAGX,GAAI3Q,KAAKsM,eAAiB,KAAM,EAC9BxO,EAAAkC,KAAKqQ,wBAAoB,MAAAvS,SAAA,SAAAA,EAAE8S,QAAQ5Q,KAAKsM,c,EAG1CtO,EAAAgC,KAAKuQ,kBAAc,MAAAvS,SAAA,SAAAA,EAAE4S,QAAQ5Q,KAAK6K,cAI5BqB,QAAQC,gBACRnM,KAAK6Q,0B,CAGN,yBAAMC,SACL9Q,KAAKiQ,8B,CAGN,kBAAAc,GACL/Q,KAAKwI,gBAELxI,KAAKgR,eAAe1K,M,CAGf,wBAAM2K,GACX,GAAIjR,KAAK+H,sBAAuB,OACxB/H,KAAK+K,mB,EAIR,oBAAAmG,G,WACLtT,EAAAoC,KAAKgK,gBAAY,MAAApM,SAAA,SAAAA,EAAEmE,oBAAoB,SAAU/B,KAAK6P,qBACtD7P,KAAKuN,8BACLzP,EAAAkC,KAAKqQ,wBAAoB,MAAAvS,SAAA,SAAAA,EAAEqT,cAC3BnT,EAAAgC,KAAKuQ,kBAAc,MAAAvS,SAAA,SAAAA,EAAEmT,aACrBnR,KAAKiI,SAASE,aAAe,GAC7BnI,KAAKiI,SAASG,uBAAyB,E,CAM/B,oCAAMgJ,SACRpR,KAAKiQ,8B,CAUN,sBAAMoB,CACXzL,EACAjI,GAEA,GAAIqC,KAAKgK,cAAgB,KAAM,CAC7BjE,EAAY/F,KAAKgK,aAAcpE,EAAKjI,E,EAYjC,8BAAM2T,GACXtR,KAAK+K,mB,CAGA,MAAAwG,GACL,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CACEC,MAAM,SACNC,IAAMA,GAAS5R,KAAKsM,cAAgBsF,EACpC9I,MAAO,CACL+I,oBAAqB7R,KAAK8H,sBAC1BgK,QAAS9R,KAAKsI,eAAe9J,QAAU,EAAI,OAAS,SAGtDgT,EAAA,QAAAE,IAAA,2CAAMpP,KAAK,YAEbkP,EAAA,OAAAE,IAAA,2CACEC,MAAM,QACNC,IAAMA,GAAS5R,KAAKgK,aAAe4H,EACnC9I,MAAO,CACL+I,oBAAqB7R,KAAK6H,mBAG5B2J,EAAA,QAAAE,IAAA,2CACEK,aAAc,KACZ/R,KAAKgS,+BACLhS,KAAK4K,uBACL5K,KAAKiS,sBACLjS,KAAKuK,6BACLvK,KAAKsN,mBACLtN,KAAKwM,yBAAyB,KAIpCgF,EAAA,OAAAE,IAAA,2CACEC,MAAM,kBACN7I,MAAO,CACL+I,oBAAqB7R,KAAK8H,wBAG5B0J,EAAA,QAAAE,IAAA,2CAAMpP,KAAK,aAEZtC,KAAKoO,qBAAuB,MAAQoD,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mB,CAK9C,mBAAAO,GACN,MAAMC,EAAiBnS,KAAKoS,kBAC5B,MAAMC,EACJF,GAAkB,MAClBA,EAAiB,IAChBnS,KAAK+H,sBAER,GAAIsK,EAAmB,CACrB,MAAMC,EAAgBtE,KAAKuE,KAAKJ,EAAiBnS,KAAKuH,WAEtD,MAAMI,EAAqBqG,KAAKC,MAAMjO,KAAK0H,aAAe1H,KAAKuH,WAC/D,MAAMK,EAAmBD,EAAqB2K,EAE9C,MAAME,EAAaxE,KAAKyE,IAAI,EAAG9K,EAAqB3H,KAAKwH,eACzD,MAAMkL,EAAW1E,KAAK2E,IACpB3S,KAAKsH,UAAY,EACjBM,EAAmB5H,KAAKwH,eAG1B,MAAMH,EAAOrH,KAAK4S,gBAAgBJ,EAAYE,GAE9C1S,KAAK2H,mBAAqB6K,EAC1BxS,KAAK4H,iBAAmB8K,EACxB1S,KAAKiI,SAASC,aAAeb,C,EAIzB,sBAAA+I,GACNpQ,KAAKuK,6BACLvK,KAAKwM,0BACLxM,KAAKgS,+BACLhS,KAAKsN,kB,CAGC,8BAAMuD,SACN7Q,KAAK+K,oBACX/K,KAAKoM,qB,CAGC,kCAAM6D,G,MACZjQ,KAAKkS,sBAEL,KAAItU,EAAAoC,KAAK6S,cAAU,MAAAjV,SAAA,SAAAA,EAAEkV,cAAe9S,KAAKsH,UAAY,EAAG,OAChDtH,KAAK6S,WAAWE,qBACpB/S,KAAK2H,mBACL3H,KAAK4H,iB,EA8HH,WAAAuI,GACN,GAAInQ,KAAKiI,SAAS+K,oBAAsB,KAAM,CAC5ChT,KAAKiI,SAAS+K,mBAAqBhT,KAAKsI,eAAerJ,QACrD,CAACL,EAAK4L,IACJ5L,EAAImG,IACFyF,EACA,IAAI/G,EAAY+G,GAAG,IAAMxK,KAAK8L,yBAAyBtB,OAE3D,IAAIyI,Q,EAKF,mBAAAhB,GACNjS,KAAKsI,eAAenI,SAASqK,I,UAC3B,KAAI5M,EAAAoC,KAAKiI,SAAS+K,sBAAkB,MAAApV,SAAA,SAAAA,EAAEgH,IAAI4F,KAAM,KAAM,EACpD1M,EAAAkC,KAAKiI,SAAS+K,sBAAkB,MAAAlV,SAAA,SAAAA,EAAEiH,IAChCyF,EACA,IAAI/G,EAAY+G,GAAG,IAAMxK,KAAK8L,yBAAyBtB,K,KAEpD,EACLxM,EAAAgC,KAAKiI,SAAS+K,mBACXpO,IAAI4F,MAAE,MAAAxM,SAAA,SAAAA,EACL6G,sBAAqB,IAAM7E,KAAK8L,yBAAyBtB,I,KAK3D,cAAA9B,CACNhE,GAMA1E,KAAKsI,eAAenI,SAAQ,CAAC+S,EAAQtQ,K,MACnC,MAAMgG,GAAOhL,EAAAoC,KAAKiI,SAAS+K,sBAAkB,MAAApV,SAAA,SAAAA,EAAEgH,IAAIsO,GACnD,GAAItK,GAAQ,KAAM,CAChBlE,EAAEwO,EAAQtK,EAAMhG,E,KACX,CACL,MAAM,IAAIuQ,MAAM,8B,KAKd,4BAAAnB,GACN,MAAM3M,EAAWrF,KAAK6K,OAAOuI,cAC3B,4BAEF,GAAI/N,GAAY,KAAM,CACpB,MAAMgO,EAAyBC,SAAS/O,cAAc,YACtD8O,EAAuBvG,KAAO,UAC9BuG,EAAuBE,UAAY,+HAInCvT,KAAK6K,OAAOmB,YAAYqH,E,EAIpB,oBAAAzG,CACNsG,GAEA,MAAM7N,EAAW6N,EAAOE,cACtB,2BAEF,GAAI/N,GAAY,KAAM,CACpB,OAAOD,EAA6BC,E,EAIhC,qBAAA8H,GACN,MAAM9H,EAAWrF,KAAK6K,OAAOuI,cAC3B,4BAEF,GAAI/N,GAAY,KAAM,CACpB,OAAOD,EAA6BC,E,KAC/B,CACL,MAAM,IAAI8N,MAAM,4C,EAIZ,wBAAArH,CACNoH,GAEA,MAAM7N,EAAW6N,EAAOE,cACtB,iCAEF,GAAI/N,GAAY,KAAM,CACpB,OAAOD,EAA6BC,E,KAC/B,CACL,MAAM,IAAI8N,MAAM,0C,EAuJZ,uBAAA3F,G,MACNxN,KAAKiI,SAASuL,wBACZ5V,EAAAoC,KAAKiI,SAASgF,0BAAsB,MAAArP,SAAA,SAAAA,EAAEgB,KAAI,CAAC6U,EAAG7Q,KAC5C,MAAMhB,EAAW5B,KAAKyN,gCAAgC7K,GAEtD6Q,EAAE3Q,QAAQhB,iBAAiB,cAAeF,GAE1C,OAAOA,CAAQ,G,CAIb,0BAAA2L,G,MACN,GAAIvN,KAAKiI,SAASuL,wBAA0B,KAAM,CAChD,MAAME,EAAY1T,KAAKiI,SAASuL,wBAEhC5V,EAAAoC,KAAKiI,SAASgF,0BAAsB,MAAArP,SAAA,SAAAA,EAAEuC,SAAQ,CAACsT,EAAG7Q,KAChD,MAAMhB,EAAW8R,EAAU9Q,GAC3B,GAAIhB,GAAY,KAAM,CACpB6R,EAAE3Q,QAAQf,oBAAoB,cAAeH,E,KAGjD5B,KAAKiI,SAASuL,uBAAyBpQ,S,EAuGnC,eAAAwP,CAAgBJ,EAAoBE,GAC1C,MAAMrL,EAAOrH,KAAKqH,KAAK3I,MAAM8T,EAAYE,EAAW,GACpD,OAAOrL,EAAKzI,KAAKuK,GAASA,GAAO,KAAOnJ,KAAK2T,gBAAgBxK,GAAOA,G,CAG9D,eAAAwK,CAAgBxK,G,MACtB,GAAInJ,KAAK4T,SAAW,MAAQzK,GAAO,KAAM,CACvC,MAAMjJ,IAAOtC,EAAAoC,KAAK4T,WAAO,MAAAhW,SAAA,SAAAA,EAAAiW,KAAA7T,KAAGmJ,KAAQ,GACpC,MAAO,IAAKA,EAAKjJ,O,KACZ,CACL,OAAOiJ,C,EAIH,eAAAiJ,GACN,GAAIpS,KAAK8T,cAAgB,MAAQ9T,KAAKgK,cAAgB,KAAM,CAC1DhK,KAAK8T,aAAehX,EAA2BkD,KAAKgK,a,CAEtD,OAAOhK,KAAK8T,Y,CAGN,cAAA3J,GACN,GAAInK,KAAKkK,aAAe,KAAM,CAC5B,MAAM6J,EAAgBlO,EAA+B7F,KAAK6K,QAC1D,GAAIkJ,EAAgB,EAAG,CACrB/T,KAAKkK,YAAc6J,C,EAGvB,OAAO/T,KAAKkK,W,CAGN,iBAAAsG,GACNxQ,KAAK8T,aAAe1Q,S,CAGd,gBAAAqN,GACNzQ,KAAKkK,YAAc9G,S","ignoreList":[]}
|