@vertexvis/viewer 1.1.1-testing.3 → 1.1.1-testing.5
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/README.template.md +14 -8
- package/dist/cjs/{bundle-07I6_WqC.js → bundle-BCS0nA91.js} +28 -25
- package/dist/cjs/bundle-BCS0nA91.js.map +1 -0
- package/dist/cjs/{config-CepHuwRF.js → config-OELTgslY.js} +3 -3
- package/dist/cjs/{config-CepHuwRF.js.map → config-OELTgslY.js.map} +1 -1
- package/dist/cjs/{controller-Dklbe0Y6.js → controller-DvE3p6ta.js} +3 -3
- package/dist/cjs/{controller-Dklbe0Y6.js.map → controller-DvE3p6ta.js.map} +1 -1
- package/dist/cjs/{dom-Dlu6-7PF.js → dom-BuQSLPWr.js} +3 -3
- package/dist/cjs/{dom-Dlu6-7PF.js.map → dom-BuQSLPWr.js.map} +1 -1
- package/dist/cjs/{entities-BdWnb6KI.js → entities-rj-TEPKc.js} +4 -4
- package/dist/cjs/{entities-BdWnb6KI.js.map → entities-rj-TEPKc.js.map} +1 -1
- package/dist/cjs/{geometry_pb-BISQT2vx.js → geometry_pb-asn2mNvW.js} +3 -3
- package/dist/cjs/{geometry_pb-BISQT2vx.js.map → geometry_pb-asn2mNvW.js.map} +1 -1
- package/dist/cjs/grpc-D5Apx_zz.js.map +1 -1
- package/dist/cjs/index.cjs.js +13 -13
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{markup-C-qyTwID.js → markup-Du4uVRo4.js} +3 -3
- package/dist/cjs/{markup-C-qyTwID.js.map → markup-Du4uVRo4.js.map} +1 -1
- package/dist/cjs/{model-Dy5FvjIA.js → model-BC6acIWJ.js} +3 -3
- package/dist/cjs/{model-Dy5FvjIA.js.map → model-BC6acIWJ.js.map} +1 -1
- package/dist/cjs/model-Bw4h8wNt.js.map +1 -1
- package/dist/cjs/{model-k5VBFN6C.js → model-DqxeakCS.js} +3 -3
- package/dist/cjs/{model-k5VBFN6C.js.map → model-DqxeakCS.js.map} +1 -1
- package/dist/cjs/{multiElementInteractionHandler-Bqpg2wVT.js → multiElementInteractionHandler-Bdeo6FYp.js} +6 -5
- package/dist/cjs/multiElementInteractionHandler-Bdeo6FYp.js.map +1 -0
- package/dist/cjs/{overlays-BujVkBnG.js → overlays-DASFbMSp.js} +3 -3
- package/dist/cjs/{overlays-BujVkBnG.js.map → overlays-DASFbMSp.js.map} +1 -1
- package/dist/cjs/{queries-GhYmoomu.js → queries-e19TP_oF.js} +5 -5
- package/dist/cjs/queries-e19TP_oF.js.map +1 -0
- package/dist/cjs/{regl-component-CB004H91.js → regl-component-DjVaO3t3.js} +6 -6
- package/dist/cjs/{regl-component-CB004H91.js.map → regl-component-DjVaO3t3.js.map} +1 -1
- package/dist/cjs/{representation_pb-CHCm5o1e.js → representation_pb-BVBPrHLf.js} +3 -3
- package/dist/cjs/{representation_pb-CHCm5o1e.js.map → representation_pb-BVBPrHLf.js.map} +1 -1
- package/dist/cjs/{results-BpfUIwa8.js → results-CU9Ctm2K.js} +3 -3
- package/dist/cjs/{results-BpfUIwa8.js.map → results-CU9Ctm2K.js.map} +1 -1
- package/dist/cjs/{streamAttributes-CJOD7AxG.js → streamAttributes-M3UUIO3l.js} +118 -95
- package/dist/cjs/streamAttributes-M3UUIO3l.js.map +1 -0
- package/dist/cjs/{util-smaTO4bk.js → util-gX3IGslq.js} +3 -3
- package/dist/cjs/{util-smaTO4bk.js.map → util-gX3IGslq.js.map} +1 -1
- package/dist/cjs/{utils-BsXO-wLi.js → utils-D5TGpFAV.js} +3 -3
- package/dist/cjs/utils-D5TGpFAV.js.map +1 -0
- package/dist/cjs/{utils-DY6afhh8.js → utils-opS9hsaU.js} +3 -3
- package/dist/cjs/{utils-DY6afhh8.js.map → utils-opS9hsaU.js.map} +1 -1
- package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +2 -2
- 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 +3 -3
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree-table-column.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +3 -3
- package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-annotation-callout.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-button_3.cjs.entry.js +6 -1
- package/dist/cjs/vertex-viewer-button_3.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +5 -5
- package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +5 -5
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +8 -8
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +5 -5
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +7 -7
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +7 -7
- package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js +9 -8
- package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-spinner.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +7 -7
- package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-walk-mode-tool.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer.cjs.entry.js +8 -8
- package/dist/cjs/viewer.cjs.js +1 -1
- package/dist/cjs/{viewport-B70DgDZj.js → viewport-BDbB9o9T.js} +3 -3
- package/dist/cjs/{viewport-B70DgDZj.js.map → viewport-BDbB9o9T.js.map} +1 -1
- package/dist/collection/components/scene-tree/scene-tree.css +2 -3
- package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
- package/dist/collection/components/scene-tree-notification-banner/scene-tree-notification-banner.css +1 -1
- package/dist/collection/components/scene-tree-search/scene-tree-search.css +1 -1
- package/dist/collection/components/scene-tree-search/scene-tree-search.js +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.css +10 -10
- 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-column/scene-tree-table-column.css +0 -1
- package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.css +3 -3
- package/dist/collection/components/viewer-annotation-callout/viewer-annotation-callout.css +3 -4
- package/dist/collection/components/viewer-box-query-tool/types.js.map +1 -1
- package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.css +9 -7
- package/dist/collection/components/viewer-button/viewer-button.js +32 -1
- package/dist/collection/components/viewer-button/viewer-button.js.map +1 -1
- package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.css +2 -2
- package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.js +1 -1
- package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.js.map +1 -1
- package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
- package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
- package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.css +2 -2
- package/dist/collection/components/viewer-pin-group/viewer-pin-group.css +12 -11
- package/dist/collection/components/viewer-pin-label/viewer-pin-label.css +21 -8
- package/dist/collection/components/viewer-pin-label/viewer-pin-label.js +4 -3
- package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
- package/dist/collection/components/viewer-pin-label-line/viewer-pin-label-line.css +5 -4
- package/dist/collection/components/viewer-spinner/viewer-spinner.css +2 -2
- package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js +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.css +1 -2
- package/dist/collection/lib/grpc.js.map +1 -1
- package/dist/collection/lib/interactions/baseInteractionHandler.js +2 -1
- package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
- package/dist/collection/lib/scenes/scene.js.map +1 -1
- package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
- package/dist/collection/lib/stream/state.js.map +1 -1
- package/dist/collection/lib/types/loadableResource.js.map +1 -1
- package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
- package/dist/collection/lib/walk-mode/model.js.map +1 -1
- package/dist/collection/workers/png-decoder-pool.js +4 -3
- package/dist/collection/workers/png-decoder-pool.js.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/p-2UsvOTHJ.js +5 -0
- package/dist/components/p-2UsvOTHJ.js.map +1 -0
- package/dist/components/{p-CZgX-9yo.js → p-5bk1mHRt.js} +2 -2
- package/dist/components/{p-DRGCkSEK.js → p-B8530k7R.js} +2 -2
- package/dist/components/{p-garvKln8.js → p-BAuOB8M-.js} +2 -2
- package/dist/components/p-BAuOB8M-.js.map +1 -0
- package/dist/components/{p-BKQMbekH.js → p-BCuMPvZO.js} +2 -2
- package/dist/components/p-BFEV_v80.js +5 -0
- package/dist/components/p-BFEV_v80.js.map +1 -0
- package/dist/components/{p-C02XtMl4.js → p-BHyxBmg6.js} +2 -2
- package/dist/components/{p-O1_Yvjd6.js → p-BT9d9jRt.js} +2 -2
- package/dist/components/{p-oDn1DcWj.js → p-BZDn1Vuv.js} +2 -2
- package/dist/components/{p-VEJB73Ei.js → p-Bdf4AcJ2.js} +2 -2
- package/dist/components/p-BgzjmANj.js +5 -0
- package/dist/components/p-BgzjmANj.js.map +1 -0
- package/dist/components/p-BjvjKoy7.js +5 -0
- package/dist/components/p-BjvjKoy7.js.map +1 -0
- package/dist/components/p-Bwtyddca.js +5 -0
- package/dist/components/p-Bwtyddca.js.map +1 -0
- package/dist/components/{p-CMdP8O-G.js → p-Bx42CNGV.js} +2 -2
- package/dist/components/{p-CelQDFR0.js → p-C12jtCFb.js} +2 -2
- package/dist/components/p-C86HMDzi.js +5 -0
- package/dist/components/p-C86HMDzi.js.map +1 -0
- package/dist/components/{p-Dzs4u_ZY.js → p-CABws4i9.js} +2 -2
- package/dist/components/p-CIuxJYJL.js.map +1 -1
- package/dist/components/{p-BqeEZXPn.js → p-CPROw2BU.js} +2 -2
- package/dist/components/p-CSVgoQU8.js +5 -0
- package/dist/components/p-CSVgoQU8.js.map +1 -0
- package/dist/components/{p-DnVcQAR9.js → p-CTi-0-dI.js} +2 -2
- package/dist/components/{p-EG7pMA2M.js → p-CeZe0Qql.js} +2 -2
- package/dist/components/p-CioaIHsi.js.map +1 -1
- package/dist/components/{p-Due5EmBt.js → p-Clyxptbp.js} +2 -2
- package/dist/components/{p-taOlygmc.js → p-Cs2aiMUK.js} +2 -2
- package/dist/components/p-Cs2aiMUK.js.map +1 -0
- package/dist/components/p-DUo-H-nW.js +5 -0
- package/dist/components/p-DUo-H-nW.js.map +1 -0
- package/dist/components/{p-MnZadXO8.js → p-D_h07qsA.js} +2 -2
- package/dist/components/{p-DCTZZ5Rd.js → p-DjQ6RXWP.js} +2 -2
- package/dist/components/p-DxuSiXYg.js.map +1 -1
- package/dist/components/{p-CxzyM08j.js → p-DyL2wWm6.js} +2 -2
- package/dist/components/{p-avWSFTeP.js → p-JvS9LLoO.js} +2 -2
- package/dist/components/{p-CfTvpqud.js → p-KidjtXKE.js} +2 -2
- package/dist/{viewer/p-7m7Vr5V7.js → components/p-Ng27jBsS.js} +2 -2
- package/dist/components/p-Ng27jBsS.js.map +1 -0
- package/dist/components/{p-BC777sCK.js → p-UJR-ixsy.js} +2 -2
- package/dist/components/{p-Ib4vgh2t.js → p-UrT4ZJv3.js} +2 -2
- package/dist/components/{p-Ib4vgh2t.js.map → p-UrT4ZJv3.js.map} +1 -1
- package/dist/components/{p-mpsCUvSn.js → p-_qi2VkC2.js} +2 -2
- package/dist/components/{p-CNprIkKd.js → p-rDr0x5Z7.js} +2 -2
- package/dist/components/vertex-scene-tree-search.js +1 -1
- 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-column.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-annotation-callout.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-button.js +1 -1
- package/dist/components/vertex-viewer-default-toolbar.js +1 -1
- package/dist/components/vertex-viewer-default-toolbar.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-dom-renderer.js +1 -1
- package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
- package/dist/components/vertex-viewer-markup-arrow.js +1 -1
- package/dist/components/vertex-viewer-markup-circle.js +1 -1
- package/dist/components/vertex-viewer-markup-freeform.js +1 -1
- package/dist/components/vertex-viewer-markup-tool.js +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 +1 -1
- package/dist/components/vertex-viewer-measurement-distance.js +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-pin-group.js +1 -1
- package/dist/components/vertex-viewer-pin-label-line.js +1 -1
- package/dist/components/vertex-viewer-pin-label.js +1 -1
- package/dist/components/vertex-viewer-pin-tool.js +1 -1
- package/dist/components/vertex-viewer-teleport-tool.js +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-walk-mode-tool.js +1 -1
- package/dist/components/vertex-viewer.js +1 -1
- package/dist/esm/{bundle-CZZALKHT.js → bundle-2UsvOTHJ.js} +28 -25
- package/dist/esm/bundle-2UsvOTHJ.js.map +1 -0
- package/dist/esm/{config-CyaUTJEG.js → config-Cqrcty7U.js} +3 -3
- package/dist/esm/{config-CyaUTJEG.js.map → config-Cqrcty7U.js.map} +1 -1
- package/dist/esm/{controller-ByBd8r3O.js → controller-BPECXXfj.js} +3 -3
- package/dist/esm/{controller-ByBd8r3O.js.map → controller-BPECXXfj.js.map} +1 -1
- package/dist/esm/{dom-Bbf2HAst.js → dom-DaP9SiyY.js} +3 -3
- package/dist/esm/{dom-Bbf2HAst.js.map → dom-DaP9SiyY.js.map} +1 -1
- package/dist/esm/{entities-DriL3zBC.js → entities-CawBZH7i.js} +4 -4
- package/dist/esm/{entities-DriL3zBC.js.map → entities-CawBZH7i.js.map} +1 -1
- package/dist/esm/{geometry_pb-BEB8SExe.js → geometry_pb-COdZQiRi.js} +3 -3
- package/dist/esm/{geometry_pb-BEB8SExe.js.map → geometry_pb-COdZQiRi.js.map} +1 -1
- package/dist/esm/grpc-hWL8wFvk.js.map +1 -1
- package/dist/esm/index.js +13 -13
- package/dist/esm/index.mjs +13 -13
- package/dist/esm/loader.js +1 -1
- package/dist/esm/loader.mjs +1 -1
- package/dist/esm/{markup-y96-uR-l.js → markup-B58g75Hr.js} +3 -3
- package/dist/esm/{markup-y96-uR-l.js.map → markup-B58g75Hr.js.map} +1 -1
- package/dist/esm/{model-BJQo0DxL.js → model-B5KuXEsl.js} +3 -3
- package/dist/esm/{model-BJQo0DxL.js.map → model-B5KuXEsl.js.map} +1 -1
- package/dist/esm/model-BHVr1tU0.js.map +1 -1
- package/dist/esm/{model-CTdG73h9.js → model-Dc6T63-k.js} +3 -3
- package/dist/esm/{model-CTdG73h9.js.map → model-Dc6T63-k.js.map} +1 -1
- package/dist/esm/{multiElementInteractionHandler-C45E8VzE.js → multiElementInteractionHandler-3tE3OPpw.js} +6 -5
- package/dist/esm/multiElementInteractionHandler-3tE3OPpw.js.map +1 -0
- package/dist/esm/{overlays-DmcRtaSn.js → overlays-BwIqsqLW.js} +3 -3
- package/dist/esm/{overlays-DmcRtaSn.js.map → overlays-BwIqsqLW.js.map} +1 -1
- package/dist/esm/{queries-DWjy-LsV.js → queries-B4XotYyr.js} +5 -5
- package/dist/esm/queries-B4XotYyr.js.map +1 -0
- package/dist/esm/{regl-component-zzdsBise.js → regl-component-B1_h3_s8.js} +6 -6
- package/dist/esm/{regl-component-zzdsBise.js.map → regl-component-B1_h3_s8.js.map} +1 -1
- package/dist/esm/{representation_pb-CQdJxiGO.js → representation_pb-C4MJfZMo.js} +3 -3
- package/dist/esm/{representation_pb-CQdJxiGO.js.map → representation_pb-C4MJfZMo.js.map} +1 -1
- package/dist/esm/{results-ClIgKssN.js → results-De9arm7M.js} +3 -3
- package/dist/esm/{results-ClIgKssN.js.map → results-De9arm7M.js.map} +1 -1
- package/dist/esm/{streamAttributes-CTs61PCl.js → streamAttributes-BW9JzMeG.js} +117 -94
- package/dist/esm/streamAttributes-BW9JzMeG.js.map +1 -0
- package/dist/esm/{util-DUjEw5Kh.js → util-CMPFqnEv.js} +3 -3
- package/dist/esm/{util-DUjEw5Kh.js.map → util-CMPFqnEv.js.map} +1 -1
- package/dist/esm/{utils-DOjHP1wA.js → utils-B1mSYmAK.js} +3 -3
- package/dist/esm/{utils-DOjHP1wA.js.map → utils-B1mSYmAK.js.map} +1 -1
- package/dist/esm/{utils-DJ5FvINs.js → utils-c-mcLgsj.js} +3 -3
- package/dist/esm/utils-c-mcLgsj.js.map +1 -0
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +2 -2
- package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree-table-cell.entry.js +3 -3
- package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree-table-column.entry.js.map +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +3 -3
- package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-annotation-callout.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-box-query-tool.entry.js +4 -4
- package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-button_3.entry.js +6 -1
- package/dist/esm/vertex-viewer-button_3.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-default-toolbar.entry.js +2 -2
- package/dist/esm/vertex-viewer-default-toolbar.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-dom-element_2.entry.js +5 -5
- package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
- package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +5 -5
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +3 -3
- package/dist/esm/vertex-viewer-markup-tool.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-markup.entry.js +3 -3
- package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
- package/dist/esm/vertex-viewer-measurement-distance.entry.js +8 -8
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +5 -5
- package/dist/esm/vertex-viewer-measurement-precise.entry.js +7 -7
- package/dist/esm/vertex-viewer-pin-group.entry.js +7 -7
- package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-label_2.entry.js +9 -8
- package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-pin-tool.entry.js +3 -3
- package/dist/esm/vertex-viewer-spinner.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-teleport-tool.entry.js +2 -2
- package/dist/esm/vertex-viewer-transform-widget.entry.js +7 -7
- package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
- package/dist/esm/vertex-viewer-view-cube.entry.js +2 -2
- package/dist/esm/vertex-viewer-walk-mode-tool.entry.js +1 -1
- package/dist/esm/vertex-viewer.entry.js +8 -8
- package/dist/esm/viewer.js +1 -1
- package/dist/esm/{viewport-D90kzsD7.js → viewport-CHtidaFL.js} +3 -3
- package/dist/esm/{viewport-D90kzsD7.js.map → viewport-CHtidaFL.js.map} +1 -1
- package/dist/types/components/viewer-button/viewer-button.d.ts +5 -0
- package/dist/types/components.d.ts +14 -1
- package/dist/types/lib/walk-mode/model.d.ts +10 -10
- package/dist/types/regl-shape.d.ts +1 -5
- package/dist/types/workers/png-decoder-pool.d.ts +0 -1
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/{p-12a673f0.entry.js → p-1506f9a2.entry.js} +2 -2
- package/dist/viewer/p-1506f9a2.entry.js.map +1 -0
- package/dist/viewer/{p-78f422af.entry.js → p-287e0670.entry.js} +2 -2
- package/dist/viewer/{p-78f422af.entry.js.map → p-287e0670.entry.js.map} +1 -1
- package/dist/viewer/{p-7b4eec65.entry.js → p-293d8f3f.entry.js} +2 -2
- package/dist/viewer/p-2UsvOTHJ.js +5 -0
- package/dist/viewer/p-2UsvOTHJ.js.map +1 -0
- package/dist/viewer/{p-510fd2e1.entry.js → p-2d2fa147.entry.js} +2 -2
- package/dist/viewer/{p-a108a305.entry.js → p-2faddbf8.entry.js} +2 -2
- package/dist/viewer/{p-e3981cf8.entry.js → p-36349a80.entry.js} +2 -2
- package/dist/viewer/p-36349a80.entry.js.map +1 -0
- package/dist/viewer/{p-aa0359e0.entry.js → p-3c5dd716.entry.js} +2 -2
- package/dist/viewer/p-44395076.entry.js +5 -0
- package/dist/viewer/p-44395076.entry.js.map +1 -0
- package/dist/viewer/{p-fe434552.entry.js → p-45cc095e.entry.js} +2 -2
- package/dist/viewer/p-504e77a7.entry.js +5 -0
- package/dist/viewer/{p-c2c3579f.entry.js.map → p-504e77a7.entry.js.map} +1 -1
- package/dist/viewer/{p-71c03352.entry.js → p-53f6cc59.entry.js} +2 -2
- package/dist/viewer/{p-56e39cff.entry.js → p-83683307.entry.js} +2 -2
- package/dist/viewer/{p-91fca24b.entry.js → p-93311f46.entry.js} +2 -2
- package/dist/viewer/{p-BIR7Lfxx.js → p-BEOO-Ypv.js} +2 -2
- package/dist/viewer/{p-BIR7Lfxx.js.map → p-BEOO-Ypv.js.map} +1 -1
- package/dist/viewer/{p-C6YtUG51.js → p-BJGbLthH.js} +2 -2
- package/dist/viewer/{p-C6YtUG51.js.map → p-BJGbLthH.js.map} +1 -1
- package/dist/viewer/{p-O1_Yvjd6.js → p-BT9d9jRt.js} +2 -2
- package/dist/viewer/{p-O1_Yvjd6.js.map → p-BT9d9jRt.js.map} +1 -1
- package/dist/viewer/{p-VEJB73Ei.js → p-Bdf4AcJ2.js} +2 -2
- package/dist/viewer/{p-VEJB73Ei.js.map → p-Bdf4AcJ2.js.map} +1 -1
- package/dist/viewer/{p-C-huOg09.js → p-Br21pGVj.js} +2 -2
- package/dist/viewer/{p-C-huOg09.js.map → p-Br21pGVj.js.map} +1 -1
- package/dist/viewer/{p-Ce1j43tF.js → p-Bw_ryWU0.js} +2 -2
- package/dist/viewer/{p-Ce1j43tF.js.map → p-Bw_ryWU0.js.map} +1 -1
- package/dist/viewer/{p-CelQDFR0.js → p-C12jtCFb.js} +2 -2
- package/dist/viewer/{p-CelQDFR0.js.map → p-C12jtCFb.js.map} +1 -1
- package/dist/viewer/{p-B-J4CqZy.js → p-C4_1Jc7H.js} +2 -2
- package/dist/viewer/{p-B-J4CqZy.js.map → p-C4_1Jc7H.js.map} +1 -1
- package/dist/viewer/p-CEDqc5sS.js +5 -0
- package/dist/viewer/{p-BDy3SLKk.js.map → p-CEDqc5sS.js.map} +1 -1
- package/dist/viewer/p-Cc3XhAoA.js +5 -0
- package/dist/viewer/p-Cc3XhAoA.js.map +1 -0
- package/dist/viewer/{p-EG7pMA2M.js → p-CeZe0Qql.js} +2 -2
- package/dist/viewer/{p-EG7pMA2M.js.map → p-CeZe0Qql.js.map} +1 -1
- package/dist/viewer/p-CioaIHsi.js.map +1 -1
- package/dist/viewer/{p-EUeCUp3y.js → p-CxBXErQ8.js} +2 -2
- package/dist/viewer/{p-EUeCUp3y.js.map → p-CxBXErQ8.js.map} +1 -1
- package/dist/viewer/{p-CIBBr-p1.js → p-D0aTA_2m.js} +2 -2
- package/dist/viewer/{p-CIBBr-p1.js.map → p-D0aTA_2m.js.map} +1 -1
- package/dist/viewer/{p-UQXG8bCI.js → p-DBfvBC5O.js} +2 -2
- package/dist/viewer/p-DBfvBC5O.js.map +1 -0
- package/dist/{components/p-QhlhRt6X.js → viewer/p-DIbJ8Ijj.js} +2 -2
- package/dist/viewer/p-DIbJ8Ijj.js.map +1 -0
- package/dist/viewer/{p-Cju1inFh.js → p-DYDhLlLS.js} +2 -2
- package/dist/viewer/p-DYDhLlLS.js.map +1 -0
- package/dist/viewer/{p-CxzyM08j.js → p-DyL2wWm6.js} +2 -2
- package/dist/viewer/{p-CxzyM08j.js.map → p-DyL2wWm6.js.map} +1 -1
- package/dist/viewer/{p-avWSFTeP.js → p-JvS9LLoO.js} +2 -2
- package/dist/viewer/{p-avWSFTeP.js.map → p-JvS9LLoO.js.map} +1 -1
- package/dist/viewer/{p-mpsCUvSn.js → p-_qi2VkC2.js} +2 -2
- package/dist/viewer/{p-mpsCUvSn.js.map → p-_qi2VkC2.js.map} +1 -1
- package/dist/viewer/{p-9312a936.entry.js → p-a94b626c.entry.js} +2 -2
- package/dist/viewer/p-b5cc83a4.entry.js.map +1 -1
- package/dist/viewer/{p-fc7d9b2b.entry.js → p-c531ca97.entry.js} +2 -2
- package/dist/viewer/{p-fc7d9b2b.entry.js.map → p-c531ca97.entry.js.map} +1 -1
- package/dist/viewer/p-c9dee5c4.entry.js +5 -0
- package/dist/viewer/p-c9dee5c4.entry.js.map +1 -0
- package/dist/viewer/p-ce711ae0.entry.js +5 -0
- package/dist/viewer/p-ce711ae0.entry.js.map +1 -0
- package/dist/viewer/{p-82ed4346.entry.js → p-ced98004.entry.js} +2 -2
- package/dist/viewer/p-d357d235.entry.js.map +1 -1
- package/dist/viewer/p-dcb6ddfe.entry.js +5 -0
- package/dist/viewer/p-dcb6ddfe.entry.js.map +1 -0
- package/dist/viewer/p-e98db875.entry.js.map +1 -1
- package/dist/viewer/{p-c2454523.entry.js → p-ea45c3e9.entry.js} +2 -2
- package/dist/viewer/p-ebd9dd99.entry.js +5 -0
- package/dist/viewer/p-ebd9dd99.entry.js.map +1 -0
- package/dist/viewer/{p-a893a299.entry.js → p-ecd594f2.entry.js} +2 -2
- package/dist/viewer/{p-03a531d9.entry.js → p-ef9437ca.entry.js} +2 -2
- package/dist/viewer/p-fec5a15d.entry.js +5 -0
- package/dist/viewer/p-fec5a15d.entry.js.map +1 -0
- package/dist/viewer/p-ipyYHvea.js.map +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +10 -10
- package/readme.md +14 -8
- package/dist/cjs/bundle-07I6_WqC.js.map +0 -1
- package/dist/cjs/multiElementInteractionHandler-Bqpg2wVT.js.map +0 -1
- package/dist/cjs/queries-GhYmoomu.js.map +0 -1
- package/dist/cjs/streamAttributes-CJOD7AxG.js.map +0 -1
- package/dist/cjs/utils-BsXO-wLi.js.map +0 -1
- package/dist/components/p-B4sO9HdX.js +0 -5
- package/dist/components/p-B4sO9HdX.js.map +0 -1
- package/dist/components/p-C--Voxln.js +0 -5
- package/dist/components/p-C--Voxln.js.map +0 -1
- package/dist/components/p-CZZALKHT.js +0 -5
- package/dist/components/p-CZZALKHT.js.map +0 -1
- package/dist/components/p-Cn0vKqIN.js +0 -5
- package/dist/components/p-Cn0vKqIN.js.map +0 -1
- package/dist/components/p-DH341c7b.js +0 -5
- package/dist/components/p-DH341c7b.js.map +0 -1
- package/dist/components/p-DjrtwKcK.js +0 -5
- package/dist/components/p-DjrtwKcK.js.map +0 -1
- package/dist/components/p-Dmc49hX3.js +0 -5
- package/dist/components/p-Dmc49hX3.js.map +0 -1
- package/dist/components/p-QhlhRt6X.js.map +0 -1
- package/dist/components/p-Y8W_BXUk.js +0 -5
- package/dist/components/p-Y8W_BXUk.js.map +0 -1
- package/dist/components/p-garvKln8.js.map +0 -1
- package/dist/components/p-taOlygmc.js.map +0 -1
- package/dist/esm/bundle-CZZALKHT.js.map +0 -1
- package/dist/esm/multiElementInteractionHandler-C45E8VzE.js.map +0 -1
- package/dist/esm/queries-DWjy-LsV.js.map +0 -1
- package/dist/esm/streamAttributes-CTs61PCl.js.map +0 -1
- package/dist/esm/utils-DJ5FvINs.js.map +0 -1
- package/dist/viewer/p-02384d83.entry.js +0 -5
- package/dist/viewer/p-02384d83.entry.js.map +0 -1
- package/dist/viewer/p-12a673f0.entry.js.map +0 -1
- package/dist/viewer/p-49578ec9.entry.js +0 -5
- package/dist/viewer/p-49578ec9.entry.js.map +0 -1
- package/dist/viewer/p-4c223366.entry.js +0 -5
- package/dist/viewer/p-4c223366.entry.js.map +0 -1
- package/dist/viewer/p-7m7Vr5V7.js.map +0 -1
- package/dist/viewer/p-8774425b.entry.js +0 -5
- package/dist/viewer/p-8774425b.entry.js.map +0 -1
- package/dist/viewer/p-9c02567d.entry.js +0 -5
- package/dist/viewer/p-9c02567d.entry.js.map +0 -1
- package/dist/viewer/p-BDy3SLKk.js +0 -5
- package/dist/viewer/p-CZZALKHT.js +0 -5
- package/dist/viewer/p-CZZALKHT.js.map +0 -1
- package/dist/viewer/p-Cju1inFh.js.map +0 -1
- package/dist/viewer/p-Cr2EnhS-.js +0 -5
- package/dist/viewer/p-Cr2EnhS-.js.map +0 -1
- package/dist/viewer/p-UQXG8bCI.js.map +0 -1
- package/dist/viewer/p-c2c3579f.entry.js +0 -5
- package/dist/viewer/p-d5542b6a.entry.js +0 -5
- package/dist/viewer/p-d5542b6a.entry.js.map +0 -1
- package/dist/viewer/p-e3981cf8.entry.js.map +0 -1
- /package/dist/components/{p-CZgX-9yo.js.map → p-5bk1mHRt.js.map} +0 -0
- /package/dist/components/{p-DRGCkSEK.js.map → p-B8530k7R.js.map} +0 -0
- /package/dist/components/{p-BKQMbekH.js.map → p-BCuMPvZO.js.map} +0 -0
- /package/dist/components/{p-C02XtMl4.js.map → p-BHyxBmg6.js.map} +0 -0
- /package/dist/components/{p-O1_Yvjd6.js.map → p-BT9d9jRt.js.map} +0 -0
- /package/dist/components/{p-oDn1DcWj.js.map → p-BZDn1Vuv.js.map} +0 -0
- /package/dist/components/{p-VEJB73Ei.js.map → p-Bdf4AcJ2.js.map} +0 -0
- /package/dist/components/{p-CMdP8O-G.js.map → p-Bx42CNGV.js.map} +0 -0
- /package/dist/components/{p-CelQDFR0.js.map → p-C12jtCFb.js.map} +0 -0
- /package/dist/components/{p-Dzs4u_ZY.js.map → p-CABws4i9.js.map} +0 -0
- /package/dist/components/{p-BqeEZXPn.js.map → p-CPROw2BU.js.map} +0 -0
- /package/dist/components/{p-DnVcQAR9.js.map → p-CTi-0-dI.js.map} +0 -0
- /package/dist/components/{p-EG7pMA2M.js.map → p-CeZe0Qql.js.map} +0 -0
- /package/dist/components/{p-Due5EmBt.js.map → p-Clyxptbp.js.map} +0 -0
- /package/dist/components/{p-MnZadXO8.js.map → p-D_h07qsA.js.map} +0 -0
- /package/dist/components/{p-DCTZZ5Rd.js.map → p-DjQ6RXWP.js.map} +0 -0
- /package/dist/components/{p-CxzyM08j.js.map → p-DyL2wWm6.js.map} +0 -0
- /package/dist/components/{p-avWSFTeP.js.map → p-JvS9LLoO.js.map} +0 -0
- /package/dist/components/{p-CfTvpqud.js.map → p-KidjtXKE.js.map} +0 -0
- /package/dist/components/{p-BC777sCK.js.map → p-UJR-ixsy.js.map} +0 -0
- /package/dist/components/{p-mpsCUvSn.js.map → p-_qi2VkC2.js.map} +0 -0
- /package/dist/components/{p-CNprIkKd.js.map → p-rDr0x5Z7.js.map} +0 -0
- /package/dist/viewer/{p-7b4eec65.entry.js.map → p-293d8f3f.entry.js.map} +0 -0
- /package/dist/viewer/{p-510fd2e1.entry.js.map → p-2d2fa147.entry.js.map} +0 -0
- /package/dist/viewer/{p-a108a305.entry.js.map → p-2faddbf8.entry.js.map} +0 -0
- /package/dist/viewer/{p-aa0359e0.entry.js.map → p-3c5dd716.entry.js.map} +0 -0
- /package/dist/viewer/{p-fe434552.entry.js.map → p-45cc095e.entry.js.map} +0 -0
- /package/dist/viewer/{p-71c03352.entry.js.map → p-53f6cc59.entry.js.map} +0 -0
- /package/dist/viewer/{p-56e39cff.entry.js.map → p-83683307.entry.js.map} +0 -0
- /package/dist/viewer/{p-91fca24b.entry.js.map → p-93311f46.entry.js.map} +0 -0
- /package/dist/viewer/{p-9312a936.entry.js.map → p-a94b626c.entry.js.map} +0 -0
- /package/dist/viewer/{p-82ed4346.entry.js.map → p-ced98004.entry.js.map} +0 -0
- /package/dist/viewer/{p-c2454523.entry.js.map → p-ea45c3e9.entry.js.map} +0 -0
- /package/dist/viewer/{p-a893a299.entry.js.map → p-ecd594f2.entry.js.map} +0 -0
- /package/dist/viewer/{p-03a531d9.entry.js.map → p-ef9437ca.entry.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as t,c as i,h as s,H as h,a as e}from"./p-CCVkga9Q.js";import{V as o,W as n,a as l}from"./p-ipyYHvea.js";import{v as a}from"./p-
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{r as t,c as i,h as s,H as h,a as e}from"./p-CCVkga9Q.js";import{V as o,W as n,a as l}from"./p-ipyYHvea.js";import{v as a}from"./p-2UsvOTHJ.js";import"./p-CDM7zNn0.js";import"./p-CG9AChtV.js";function d(t){return t instanceof Element}class r{constructor(t){this.model=t;this.pressed={};this.handleKeyUp=async t=>{const i=t.key.toLocaleLowerCase();this.pressed=Object.keys(this.pressed).filter((t=>t!==i)).reduce(((t,i)=>({...t,[i]:true})),{});if(Object.keys(this.pressed).length===0&&this.interval!=null){this.endInteraction()}};this.endInteraction=async()=>{var t;this.clearInterval();await((t=this.api)===null||t===void 0?void 0:t.endInteraction())};this.handleKeyDown=this.handleKeyDown.bind(this);this.handleKeyUp=this.handleKeyUp.bind(this);this.handleEnabledChange=this.handleEnabledChange.bind(this);this.restartInteraction=this.restartInteraction.bind(this);this.updateCamera=this.updateCamera.bind(this);this.handlers={[o.MOVE_DOWN]:this.moveDown.bind(this),[o.MOVE_UP]:this.moveUp.bind(this),[o.PIVOT_DOWN]:this.pivotDown.bind(this),[o.PIVOT_LEFT]:this.pivotLeft.bind(this),[o.PIVOT_RIGHT]:this.pivotRight.bind(this),[o.PIVOT_UP]:this.pivotUp.bind(this),[o.WALK_BACKWARD]:this.walkBackward.bind(this),[o.WALK_FORWARD]:this.walkForward.bind(this),[o.WALK_LEFT]:this.walkLeft.bind(this),[o.WALK_RIGHT]:this.walkRight.bind(this)};this.enabledChangeDisposable=this.model.onEnabledChange(this.handleEnabledChange);this.keyBindingsChangeDisposable=this.model.onKeyBindingsChange(this.restartInteraction);this.configurationChangeDisposable=this.model.onConfigurationChange(this.restartInteraction)}dispose(){var t,i,s;this.disable();(t=this.enabledChangeDisposable)===null||t===void 0?void 0:t.dispose();(i=this.keyBindingsChangeDisposable)===null||i===void 0?void 0:i.dispose();(s=this.configurationChangeDisposable)===null||s===void 0?void 0:s.dispose();window.removeEventListener("keydown",this.handleKeyDown);window.removeEventListener("keyup",this.handleKeyUp)}initialize(t,i){this.api=i;this.handleEnabledChange(this.model.getEnabled())}enable(){this.disable();window.addEventListener("keydown",this.handleKeyDown);window.addEventListener("keyup",this.handleKeyUp)}disable(){window.removeEventListener("keydown",this.handleKeyDown);window.removeEventListener("keyup",this.handleKeyUp)}handleKeyDown(t){const i=t.key.toLowerCase();const s=d(t.target)&&this.model.isElementExcluded(t.target);if(!t.repeat&&!s){this.pressed={...this.pressed,[i]:true};this.tryBeginInteraction()}}handleEnabledChange(t){if(t){this.enable()}else{this.disable()}}restartInteraction(){this.clearInterval();this.tryBeginInteraction()}tryBeginInteraction(){if(Object.keys(this.pressed).length>0&&this.someOperationMatches()){this.beginInteraction()}}beginInteraction(){var t,i;if(!((t=this.api)===null||t===void 0?void 0:t.isInteracting())){(i=this.api)===null||i===void 0?void 0:i.beginInteraction()}if(this.interval==null){this.interval=setInterval(this.updateCamera,this.model.getKeyboardRepeatInterval())}}clearInterval(){if(this.interval!=null){clearInterval(this.interval);this.interval=undefined}}updateCamera(){Object.keys(this.handlers).forEach((t=>{const i=t;if(this.model.operationMatches(i,this.pressed)){this.handlers[i]()}}))}someOperationMatches(){return Object.keys(this.handlers).some((t=>this.model.operationMatches(t,this.pressed)))}pivotLeft(){var t;(t=this.api)===null||t===void 0?void 0:t.pivotCamera(0,this.model.getKeyboardPivotDegrees())}pivotRight(){var t;(t=this.api)===null||t===void 0?void 0:t.pivotCamera(0,-this.model.getKeyboardPivotDegrees())}pivotUp(){var t;(t=this.api)===null||t===void 0?void 0:t.pivotCamera(-this.model.getKeyboardPivotDegrees(),0)}pivotDown(){var t;(t=this.api)===null||t===void 0?void 0:t.pivotCamera(this.model.getKeyboardPivotDegrees(),0)}walkForward(){var t;(t=this.api)===null||t===void 0?void 0:t.walk(a.scale(this.relativeWalkSpeed(),a.forward()))}walkBackward(){var t;(t=this.api)===null||t===void 0?void 0:t.walk(a.scale(this.relativeWalkSpeed(),a.back()))}walkLeft(){var t;(t=this.api)===null||t===void 0?void 0:t.walk(a.scale(this.relativeWalkSpeed(),a.left()))}walkRight(){var t;(t=this.api)===null||t===void 0?void 0:t.walk(a.scale(this.relativeWalkSpeed(),a.right()))}moveUp(){var t;(t=this.api)===null||t===void 0?void 0:t.walk(a.scale(this.relativeWalkSpeed(),a.down()))}moveDown(){var t;(t=this.api)===null||t===void 0?void 0:t.walk(a.scale(this.relativeWalkSpeed(),a.up()))}relativeWalkSpeed(){return this.model.getKeyboardWalkSpeed()/500}}const v=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}`;const u=class{constructor(s){t(this,s);this.controllerChanged=i(this,"controllerChanged");this.model=new n;this.enabled=true;this.stateMap={}}componentWillLoad(){this.setupController();this.setupInteractionHandler()}async componentDidLoad(){await this.ensureTeleportToolConfigured();this.updateTeleportTool();await this.setPivotInteractionMode()}connectedCallback(){this.setupInteractionHandler();this.setPivotInteractionMode()}disconnectedCallback(){this.clearInteractionHandler();this.resetInteractionMode()}handleEnabledChanged(){var t;(t=this.controller)===null||t===void 0?void 0:t.setEnabled(this.enabled);this.toggleInteractionMode()}handleViewerChanged(){this.clearInteractionHandler();this.setupInteractionHandler();this.updateTeleportTool();this.toggleInteractionMode()}handleTeleportModeChanged(){this.updateTeleportTool()}handleControllerChanged(){this.updateTeleportTool();this.controllerChanged.emit(this.controller)}handleModelChanged(){this.setupController();this.clearInteractionHandler();this.setupInteractionHandler()}render(){return s(h,{key:"b5a66d1f87a5d1eed77092c0dc1ff295587b3d01"},s("slot",{key:"91809a5501b34953821955c791bc0a497765209f",name:"teleport-tool",onSlotchange:async()=>{await this.ensureTeleportToolConfigured();this.updateTeleportTool()}}))}setupController(){if(this.controller==null){this.controller=new l(this.model);this.controllerChanged.emit(this.controller)}else{this.controller.updateModel(this.model)}}clearInteractionHandler(){var t,i;(t=this.interactionHandlerDisposable)===null||t===void 0?void 0:t.dispose();this.interactionHandlerDisposable=undefined;(i=this.interactionHandler)===null||i===void 0?void 0:i.dispose();this.interactionHandler=undefined}async setupInteractionHandler(){var t;if(this.interactionHandler==null){this.interactionHandler=new r(this.model);this.interactionHandlerDisposable=await((t=this.viewer)===null||t===void 0?void 0:t.registerInteractionHandler(this.interactionHandler))}}async ensureTeleportToolConfigured(){var t,i,s;if(this.hostEl!=null){const h=(i=(t=this.hostEl)===null||t===void 0?void 0:t.querySelector('vertex-viewer-teleport-tool[slot="teleport-tool"]'))!==null&&i!==void 0?i:undefined;const e=(h===null||h===void 0?void 0:h.tagName)==="VERTEX-VIEWER-TELEPORT-TOOL"?h:undefined;if(e!=null){this.stateMap.teleportTool=e}else{this.stateMap.teleportTool=document.createElement("vertex-viewer-teleport-tool");this.stateMap.teleportTool.slot="teleport-tool";(s=this.hostEl)===null||s===void 0?void 0:s.appendChild(this.stateMap.teleportTool)}}}updateTeleportTool(){if(this.stateMap.teleportTool!=null){this.stateMap.teleportTool.viewer=this.viewer;this.stateMap.teleportTool.controller=this.controller;this.stateMap.teleportTool.model=this.model;this.stateMap.teleportTool.mode=this.teleportMode}}toggleInteractionMode(){if(this.enabled){this.setPivotInteractionMode()}else{this.resetInteractionMode()}}async setPivotInteractionMode(){var t;const i=await((t=this.viewer)===null||t===void 0?void 0:t.getBaseInteractionHandler());if(this.enabled&&i!=null){const t=i.getPrimaryInteractionType();this.stateMap.previousPrimaryInteractionType=t==="pivot"?this.stateMap.previousPrimaryInteractionType:t;i.setPrimaryInteractionType("pivot")}}async resetInteractionMode(){var t;const i=await((t=this.viewer)===null||t===void 0?void 0:t.getBaseInteractionHandler());if(i!=null&&i.getPrimaryInteractionType()==="pivot"&&this.stateMap.previousPrimaryInteractionType!=null){i.setPrimaryInteractionType(this.stateMap.previousPrimaryInteractionType);this.stateMap.previousPrimaryInteractionType=undefined}}get hostEl(){return e(this)}static get watchers(){return{enabled:[{handleEnabledChanged:0}],viewer:[{handleViewerChanged:0}],teleportMode:[{handleTeleportModeChanged:0}],controller:[{handleControllerChanged:0}],model:[{handleModelChanged:0}]}}};u.style=v();export{u as vertex_viewer_walk_mode_tool};
|
|
5
|
+
//# sourceMappingURL=p-3c5dd716.entry.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{h as i,F as t,r as e}from"./p-CCVkga9Q.js";import{p as n,m as o,v as s}from"./p-2UsvOTHJ.js";import"./p-DMG1CW3A.js";import"./p-DxMDDbmh.js";import"./p-Br21pGVj.js";import"./p-BNuMPeJ8.js";import"./p-ux1ckSDN.js";import"./p-5kcpg4MZ.js";import"./p-Cc3XhAoA.js";import"./p-C4_1Jc7H.js";import"./p-BAhfr1Nx.js";import{V as r}from"./p-CeZe0Qql.js";import{g as a,i as l,b as d,P as p,a as c,c as h}from"./p-CxBXErQ8.js";import{c as v}from"./p-Dw4-tG-V.js";import"./p--8q6LyIm.js";import"./p-CDM7zNn0.js";import"./p-CG9AChtV.js";import"./p-DeUGB_Ik.js";const u=({pin:e,selected:n,occluded:o,detached:s})=>{const{primaryColor:r}=a(e);return i(t,null,d(e)&&i("div",{id:"pin-anchor",class:v("pin-anchor",{selected:n,"pin-occluded":o,"pin-detached":s}),style:{background:r}}),l(e)&&i("vertex-viewer-icon",{name:"pin-fill",size:"lg",class:v("pin",{"pin-selected":n,"pin-occluded":o,"pin-detached":s}),style:{color:r}}))};function b(i,t,e){const o={x:i.x+e.width/2,y:i.y};const s={x:i.x+e.width/2,y:i.y+e.height};const r={x:i.x+e.width,y:i.y+e.height/2};const a={x:i.x,y:i.y+e.height/2};const l=[o,s,a,r];const d=l.map((i=>n.distance(i,t)));const p=d.indexOf(Math.min(...d));return l[p]}const f=()=>`:host{--viewer-annotations-pin-primary-color:var(--blue-700);--viewer-annotations-pin-accent-color:var(--blue-200);--viewer-annotations-pin-dot-color:var( --viewer-annotations-pin-primary-color );--viewer-annotations-pin-color:var(--viewer-annotations-pin-primary-color);--viewer-annotations-pin-font-size:0.75rem;--viewer-annotations-pin-selected-stroke:var(--white);--viewer-annotations-pin-selected-border:2px solid var(--white);--viewer-annotations-pin-label-border:2px solid var(--black);--viewer-annotations-pin-selected-stroke:var(--white);font-size:var(--viewer-annotations-pin-font-size);position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}.pin-anchor{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;width:9px;height:9px;box-sizing:border-box;border:var(--viewer-annotations-pin-label-border);background:var(--viewer-annotations-pin-dot-color);pointer-events:auto;cursor:pointer}.selected{width:13px;height:13px;border:var(--viewer-annotations-pin-selected-border)}.pin{color:var(--viewer-annotations-pin-color);cursor:pointer;transition:opacity 0.3s ease-in;transform:translate(0px, -12px)}.pin-selected{stroke-width:1;stroke:var(--viewer-annotations-pin-selected-stroke)}.pin-occluded{opacity:0.3;transition:opacity 0.3s ease-in}.pin-detached{visibility:hidden}`;const m=class{constructor(i){e(this,i);this.matrix=o.makeIdentity();this.projectionViewMatrix=o.makeIdentity();this.pinModel=new p;this.selected=false;this.occluded=false;this.detached=false;this.invalidateStateCounter=0;this.invalidateState=()=>{this.invalidateStateCounter=this.invalidateStateCounter+1}}componentWillLoad(){if(this.pinController==null){this.pinController=new c(this.pinModel)}}componentDidLoad(){var i;this.setLabelObserver();if(this.selected){(i=this.labelEl)===null||i===void 0?void 0:i.setFocus()}}async handleOcclusionStateChanged(i){this.occluded=i.detail}async handleDetachedStateChanged(i){this.detached=i.detail}disconnectedCallback(){var i,t;(i=this.labelEl)===null||i===void 0?void 0:i.removeEventListener("labelChanged",this.invalidateState);(t=this.resizeObserver)===null||t===void 0?void 0:t.disconnect()}render(){var e;if(this.pin==null){throw new Error("Unable to draw pin")}const{pinPoint:n,labelPoint:o}=this.computePinPoints(this.pin);return i(t,{key:"84a22b24189e46d618c7266874d6584feb4e0b93"},i("vertex-viewer-dom-element",{key:"d4b9cf5194049099b2a7a2c1ef07fc3757e91cdc","data-testid":`drawn-pin-${this.pin.id}`,position:this.pin.worldPosition,onPointerDown:async()=>{var i;await((i=this.labelEl)===null||i===void 0?void 0:i.submit());this.selectPin();this.handleAnchorPointerDown()},detachedOff:false},i(u,{key:"7312b90e959e7d61de89c80ff032c29c5d32d888",pin:this.pin,selected:this.selected,occluded:this.occluded,detached:this.detached})),d(this.pin)&&!this.occluded&&!this.detached&&i(t,{key:"975ae561cc3eb0bf6d259d99c10c48ab0bb2661a"},i("vertex-viewer-pin-label-line",{key:"cbb32a2788a89f53c5ea2e2e6abe83b0b49c0fd4",id:`pin-label-line-${(e=this.pin)===null||e===void 0?void 0:e.id}`,pinPoint:n,pin:this.pin,labelPoint:o,onPointerDown:()=>this.selectPin()}),i("vertex-viewer-pin-label",{key:"296958cff46f102cef5621c2512b71f0d4d97ff9",pin:this.pin,ref:i=>this.labelEl=i,elementBounds:this.elementBounds,pinController:this.pinController,onPointerDown:()=>this.selectPin()})))}setLabelObserver(){if(this.labelEl!=null){this.labelEl.addEventListener("labelChanged",this.invalidateState);this.resizeObserver=new ResizeObserver((()=>this.invalidateState()));this.resizeObserver.observe(this.labelEl)}}computePinPoints(i){if(this.elementBounds!=null&&this.pin!=null){return d(this.pin)&&this.pin.label.point!=null?this.computeTextPinPoints(this.pin,this.elementBounds):this.computeDefaultPinPoints(this.pin,this.elementBounds)}return{pinPoint:i.worldPosition}}computeDefaultPinPoints(i,t){return{pinPoint:this.getFromWorldPosition(i.worldPosition,this.projectionViewMatrix,t)}}computeTextPinPoints(i,t){var e,n,o,s;const{pinPoint:r}=this.computeDefaultPinPoints(i,t);const a=h(i.label.point,t);const l=((n=(e=this.labelEl)===null||e===void 0?void 0:e.firstElementChild)===null||n===void 0?void 0:n.clientWidth)||0;const d=((s=(o=this.labelEl)===null||o===void 0?void 0:o.firstElementChild)===null||s===void 0?void 0:s.clientHeight)||0;return{pinPoint:r,labelPoint:b(a,r,{width:l,height:d})}}handleAnchorPointerDown(){var i,t;if(this.elementBounds!=null&&((i=this.pinController)===null||i===void 0?void 0:i.getToolMode())==="edit"&&this.pin!=null){(t=this.pinController)===null||t===void 0?void 0:t.setDraggable({id:this.pin.id})}}selectPin(){var i,t;(i=this.pinController)===null||i===void 0?void 0:i.setSelectedPinId((t=this.pin)===null||t===void 0?void 0:t.id)}getFromWorldPosition(i,t,e){const n=s.multiplyByTransformMatrixColumnMajor(i,t);return r.fromDimensions(e).transformVectorToViewport(n)}};m.style=f();export{m as vertex_viewer_pin_group};
|
|
5
|
+
//# sourceMappingURL=p-44395076.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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","constructor","hostRef","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","multiplyByTransformMatrixColumnMajor","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 * @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(\n --viewer-annotations-pin-primary-color\n );\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: 0.3;\n transition: opacity 0.3s ease-in;\n}\n\n.pin-detached {\n visibility: hidden;\n}\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.multiplyByTransformMatrixColumnMajor(\n pt,\n projectionViewMatrix,\n );\n return Viewport.fromDimensions(dimensions).transformVectorToViewport(ndcPt);\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{h as e,F as t,r as s,H as r}from"./p-CCVkga9Q.js";import"./p-
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{h as e,F as t,r as s,H as r}from"./p-CCVkga9Q.js";import"./p-Br21pGVj.js";import"./p-BNuMPeJ8.js";import"./p-ux1ckSDN.js";import"./p-5kcpg4MZ.js";import{D as i,A as n,h as a}from"./p-Cc3XhAoA.js";import{M as l}from"./p-BY3lpCm6.js";import"./p-BAhfr1Nx.js";import{v as o}from"./p-2UsvOTHJ.js";import{c as h}from"./p-Dw4-tG-V.js";import{_ as d}from"./p-C-NyjLsm.js";import"./p-CDM7zNn0.js";import"./p-CG9AChtV.js";function u(e){return e.toLowerCase()}var v=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var m=/[^A-Z0-9]+/gi;function c(e,t){if(t===void 0){t={}}var s=t.splitRegexp,r=s===void 0?v:s,i=t.stripRegexp,n=i===void 0?m:i,a=t.transform,l=a===void 0?u:a,o=t.delimiter,h=o===void 0?" ":o;var d=p(p(e,r,"$1\0$2"),n,"\0");var c=0;var f=d.length;while(d.charAt(c)==="\0")c++;while(d.charAt(f-1)==="\0")f--;return d.slice(c,f).split("\0").map(l).join(h)}function p(e,t,s){if(t instanceof RegExp)return e.replace(t,s);return t.reduce((function(e,t){return e.replace(t,s)}),e)}function f(e,t){if(t===void 0){t={}}return c(e,d({delimiter:"."},t))}function y(e,t){if(t===void 0){t={}}return f(e,d({delimiter:"-"},t))}const g=({label:t,...s},r)=>e("div",{...s,class:"measurement-details-entry"},e("div",{class:h("measurement-details-entry-label",y(t))},t,":"),r);const w=({result:s,formatter:r,overlays:i,onShowOverlay:n,onHideOverlay:a})=>{const l=o.subtract(s.point1,s.point2);return e(t,null,e(g,{label:"Dist",onMouseEnter:()=>n(i===null||i===void 0?void 0:i.addLineFromResult(s)),onMouseLeave:a},r(s.distance)),e(g,{label:"X",onMouseEnter:()=>n(i===null||i===void 0?void 0:i.addDistanceVectorFromResult(s)),onMouseLeave:a},r(l.x)),e(g,{label:"Y",onMouseEnter:()=>n(i===null||i===void 0?void 0:i.addDistanceVectorFromResult(s)),onMouseLeave:a},r(l.y)),e(g,{label:"Z",onMouseEnter:()=>n(i===null||i===void 0?void 0:i.addDistanceVectorFromResult(s)),onMouseLeave:a},r(l.z)))};const C=({result:t,formatter:s})=>e(g,{label:"Angle"},s(t.angle));const M=({result:t,formatter:s})=>e(g,{label:"Parallel Dist"},s(t.distance));const b=({result:t,formatter:s})=>e(g,{label:"Area"},s(t.area));const j=()=>`:host{display:flex;flex-direction:column;--viewer-measurement-details-x-color:red;--viewer-measurement-details-y-color:var(--green-500);--viewer-measurement-details-z-color:blue}.measurement-details-entry{display:flex;align-items:center}.measurement-details-entry-label{user-select:none;padding-right:0.25rem}.measurement-details-entry-label.x{color:var(--viewer-measurement-details-x-color)}.measurement-details-entry-label.y{color:var(--viewer-measurement-details-y-color)}.measurement-details-entry-label.z{color:var(--viewer-measurement-details-z-color)}`;const A=class{constructor(e){s(this,e);this.measurementModel=new l;this.distanceUnits="millimeters";this.angleUnits="degrees";this.fractionalDigits=2;this.distanceMeasurementUnits=new i(this.distanceUnits);this.angleMeasurementUnits=new n(this.angleUnits);this.areaMeasurementUnits=new a(this.distanceUnits);this.handleShowOverlay=e=>{this.overlay=e};this.handleHideOverlay=()=>{var e;(e=this.overlay)===null||e===void 0?void 0:e.dispose()};this.handleOutcomeChange=()=>{this.updateStateFromModel()}}connectedCallback(){this.handleMeasurementModelChanged()}disconnectedCallback(){var e;(e=this.onOutcomeChangedHandler)===null||e===void 0?void 0:e.dispose()}handleDistanceUnitsChanged(){this.distanceMeasurementUnits=new i(this.distanceUnits);this.areaMeasurementUnits=new a(this.distanceUnits)}handleAngleUnitsChanged(){this.angleMeasurementUnits=new n(this.angleUnits)}handleMeasurementModelChanged(){var e,t;(e=this.onOutcomeChangedHandler)===null||e===void 0?void 0:e.dispose();this.onOutcomeChangedHandler=(t=this.measurementModel)===null||t===void 0?void 0:t.onOutcomeChanged(this.handleOutcomeChange);this.updateStateFromModel()}handleResultTypesChanged(){this.updateStateFromModel()}render(){var t,s;const i=e=>{var t,s;return(s=(t=this.resultTypes)===null||t===void 0?void 0:t.includes(e.type))!==null&&s!==void 0?s:true};const n=((s=(t=this.measurementOutcome)===null||t===void 0?void 0:t.results)!==null&&s!==void 0?s:[]).filter(i);return e(r,null,this.renderResult("planar-angle",n,(t=>e(C,{result:t,overlays:this.measurementOverlays,formatter:this.makeAngleFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("planar-distance",n,(t=>e(M,{result:t,overlays:this.measurementOverlays,formatter:this.makeDistanceFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("surface-area",n,(t=>e(b,{result:t,overlays:this.measurementOverlays,formatter:this.makeAreaFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("minimum-distance",n,(t=>e(w,{result:t,overlays:this.measurementOverlays,formatter:this.makeDistanceFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))))}updateStateFromModel(){var e;this.measurementOutcome=(e=this.measurementModel)===null||e===void 0?void 0:e.getOutcome()}renderResult(e,t,s){const r=this.getResultForType(e,t);return r!=null?s(r):undefined}getResultForType(e,t){return t.find((t=>t.type===e))}makeDistanceFormatter(){return this.makeFormatter((e=>this.distanceMeasurementUnits.convertWorldValueToReal(e)),this.distanceMeasurementUnits.unit,this.distanceFormatter)}makeAngleFormatter(){return this.makeFormatter((e=>this.angleMeasurementUnits.convertTo(e)),this.angleMeasurementUnits.unit,this.angleFormatter)}makeAreaFormatter(){return this.makeFormatter((e=>this.areaMeasurementUnits.convertWorldValueToReal(e)),this.areaMeasurementUnits.unit,this.areaFormatter)}makeFormatter(e,t,s){return r=>{const i=e(r);if(s!=null){return s(i)}else{return this.formatValue(i,t)}}}formatValue(e,t){var s,r;const i=e.toFixed(this.fractionalDigits);const n=(r=(s=this.measurementOutcome)===null||s===void 0?void 0:s.isApproximate)!==null&&r!==void 0?r:false;return`${n?"~"+i:i} ${t.abbreviatedName}`}static get watchers(){return{distanceUnits:[{handleDistanceUnitsChanged:1}],angleUnits:[{handleAngleUnitsChanged:1}],measurementModel:[{handleMeasurementModelChanged:1}],resultTypes:[{handleResultTypesChanged:0}]}}};A.style=j();export{A as vertex_viewer_measurement_details};
|
|
5
|
+
//# sourceMappingURL=p-45cc095e.entry.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
|
+
*/
|
|
4
|
+
import{r,h as o}from"./p-CCVkga9Q.js";const e=()=>`:host{--viewer-toolbar-group-gap:0.5rem;--viewer-toolbar-group-background:rgba(245, 245, 245, 0.95);--viewer-toolbar-group-border-radius:0.25rem;--viewer-toolbar-group-box-shadow:-1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13);--viewer-toolbar-group-padding:0.25rem;--viewer-toolbar-group-item-gap:0.25rem}.group{background:var(--viewer-toolbar-group-background);border-radius:var(--viewer-toolbar-group-border-radius);box-shadow:var(--viewer-toolbar-group-box-shadow);padding:var(--viewer-toolbar-group-padding)}.group[data-direction='horizontal']:not(:first-child){margin-left:var(--viewer-toolbar-group-gap)}.group[data-direction='horizontal'] .group-item:not(:first-child){margin-left:var(--viewer-toolbar-group-item-gap)}.group[data-direction='vertical']:not(:first-child){margin-top:var(--viewer-toolbar-group-gap)}.group[data-direction='vertical'] .group-item:not(:first-child){margin-top:var(--viewer-toolbar-group-item-gap)}.btn{color:var(--neutral-800);padding:0.125rem;border-radius:0.125rem}.btn:hover{background:var(--neutral-300)}`;const a=class{constructor(o){r(this,o);this.placement="bottom-center";this.direction="horizontal";this.animationsDisabled=false;this.animationMs=1e3}render(){return o("vertex-viewer-toolbar",{key:"349bf96991062154e2e7666bbbecd3d66310e69f",placement:this.placement,direction:this.direction},o("vertex-viewer-toolbar-group",{key:"6982b3cb19276e09484c52d8baaa825a7339f371",class:"group",direction:this.direction,"data-direction":this.direction},o("vertex-viewer-button",{key:"f7831cc2d418cd77b05493fd0e657b21f300648c","aria-label":"Fit all",class:"group-item btn","data-testid":"fit-all-btn",onClick:()=>this.viewAll()},o("vertex-viewer-icon",{key:"adaa5a960e61b8b931634c350d3b1ef233243886",class:"icon",name:"fit-all",size:"md"}))))}async viewAll(){var r;const o=await((r=this.viewer)===null||r===void 0?void 0:r.scene());const e=this.animationsDisabled?undefined:{milliseconds:this.animationMs};o===null||o===void 0?void 0:o.camera().viewAll().render({animation:e})}};a.style=e();export{a as vertex_viewer_default_toolbar};
|
|
5
|
+
//# sourceMappingURL=p-504e77a7.entry.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["viewerDefaultToolbarCss","ViewerDefaultToolbar","constructor","hostRef","this","placement","direction","animationsDisabled","animationMs","render","h","key","class","onClick","viewAll","name","size","scene","_a","viewer","animation","undefined","milliseconds","camera"],"sources":["src/components/viewer-default-toolbar/viewer-default-toolbar.css?tag=vertex-viewer-default-toolbar&encapsulation=shadow","src/components/viewer-default-toolbar/viewer-default-toolbar.tsx"],"sourcesContent":[":host {\n /**\n * @prop --viewer-toolbar-group-gap: The spacing between each toolbar group.\n * Defaults to `0.5rem`.\n */\n --viewer-toolbar-group-gap: 0.5rem;\n\n /**\n * @prop --viewer-toolbar-group-background: The background to apply to each\n * group in the toolbar. Defaults to `rgba(245, 245, 245, 0.95)`\n */\n --viewer-toolbar-group-background: rgba(245, 245, 245, 0.95);\n\n /**\n * @prop --viewer-toolbar-group-border-radius: The corner radius to apply to\n * each group in the toolbar. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-border-radius: 0.25rem;\n\n /**\n * @prop --viewer-toolbar-group-box-shadow: The shadow to apply to each group\n * in the toolbar. Defaults to `-1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13)`.\n */\n --viewer-toolbar-group-box-shadow
|
|
1
|
+
{"version":3,"names":["viewerDefaultToolbarCss","ViewerDefaultToolbar","constructor","hostRef","this","placement","direction","animationsDisabled","animationMs","render","h","key","class","onClick","viewAll","name","size","scene","_a","viewer","animation","undefined","milliseconds","camera"],"sources":["src/components/viewer-default-toolbar/viewer-default-toolbar.css?tag=vertex-viewer-default-toolbar&encapsulation=shadow","src/components/viewer-default-toolbar/viewer-default-toolbar.tsx"],"sourcesContent":[":host {\n /**\n * @prop --viewer-toolbar-group-gap: The spacing between each toolbar group.\n * Defaults to `0.5rem`.\n */\n --viewer-toolbar-group-gap: 0.5rem;\n\n /**\n * @prop --viewer-toolbar-group-background: The background to apply to each\n * group in the toolbar. Defaults to `rgba(245, 245, 245, 0.95)`\n */\n --viewer-toolbar-group-background: rgba(245, 245, 245, 0.95);\n\n /**\n * @prop --viewer-toolbar-group-border-radius: The corner radius to apply to\n * each group in the toolbar. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-border-radius: 0.25rem;\n\n /**\n * @prop --viewer-toolbar-group-box-shadow: The shadow to apply to each group\n * in the toolbar. Defaults to `-1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13)`.\n */\n --viewer-toolbar-group-box-shadow:\n -1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13);\n\n /**\n * @prop --viewer-toolbar-group-padding: The padding to apply to each group in\n * the toolbar. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-padding: 0.25rem;\n\n /**\n * @prop --viewer-toolbar-group-item-gap: The spacing between each item within\n * a toolbar group. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-item-gap: 0.25rem;\n}\n\n.group {\n background: var(--viewer-toolbar-group-background);\n border-radius: var(--viewer-toolbar-group-border-radius);\n box-shadow: var(--viewer-toolbar-group-box-shadow);\n padding: var(--viewer-toolbar-group-padding);\n}\n\n.group[data-direction='horizontal']:not(:first-child) {\n margin-left: var(--viewer-toolbar-group-gap);\n}\n\n.group[data-direction='horizontal'] .group-item:not(:first-child) {\n margin-left: var(--viewer-toolbar-group-item-gap);\n}\n\n.group[data-direction='vertical']:not(:first-child) {\n margin-top: var(--viewer-toolbar-group-gap);\n}\n\n.group[data-direction='vertical'] .group-item:not(:first-child) {\n margin-top: var(--viewer-toolbar-group-item-gap);\n}\n\n.btn {\n color: var(--neutral-800);\n padding: 0.125rem;\n border-radius: 0.125rem;\n}\n\n.btn:hover {\n background: var(--neutral-300);\n}\n","import { Component, h, Prop } from '@stencil/core';\n\nimport { ViewerToolbarPlacement } from '../viewer-toolbar/types';\nimport { ViewerToolbarGroupDirection } from '../viewer-toolbar-group/types';\n\n@Component({\n tag: 'vertex-viewer-default-toolbar',\n styleUrl: 'viewer-default-toolbar.css',\n shadow: true,\n})\nexport class ViewerDefaultToolbar {\n /**\n * An instance of the viewer that operations will be performed on. If\n * contained within a `<vertex-viewer>` element, this property will\n * automatically be wired.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * Specifies where the toolbar is positioned.\n */\n @Prop()\n public placement: ViewerToolbarPlacement = 'bottom-center';\n\n /**\n * Specifies the direction that UI elements are placed.\n */\n @Prop()\n public direction: ViewerToolbarGroupDirection = 'horizontal';\n\n /**\n * Indicates whether animations will be used when performing camera\n * operations. Defaults to `true`.\n */\n @Prop()\n public animationsDisabled = false;\n\n /**\n * The duration of animations, in milliseconds. Defaults to `1000`.\n */\n @Prop()\n public animationMs = 1000;\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <vertex-viewer-toolbar\n placement={this.placement}\n direction={this.direction}\n >\n <vertex-viewer-toolbar-group\n class=\"group\"\n direction={this.direction}\n data-direction={this.direction}\n >\n <vertex-viewer-button\n aria-label=\"Fit all\"\n class=\"group-item btn\"\n data-testid=\"fit-all-btn\"\n onClick={() => this.viewAll()}\n >\n <vertex-viewer-icon class=\"icon\" name=\"fit-all\" size=\"md\" />\n </vertex-viewer-button>\n </vertex-viewer-toolbar-group>\n </vertex-viewer-toolbar>\n );\n }\n\n private async viewAll(): Promise<void> {\n const scene = await this.viewer?.scene();\n const animation = this.animationsDisabled\n ? undefined\n : { milliseconds: this.animationMs };\n scene?.camera().viewAll().render({ animation });\n }\n}\n"],"mappings":";;;sCAAA,MAAMA,EAA0B,IAAM,qiC,MCUzBC,EAAoB,MALjC,WAAAC,CAAAC,G,UAkBSC,KAAAC,UAAoC,gBAMpCD,KAAAE,UAAyC,aAOzCF,KAAAG,mBAAqB,MAMrBH,KAAAI,YAAc,GAiCtB,CA/BQ,MAAAC,GACL,OACEC,EAAA,yBAAAC,IAAA,2CACEN,UAAWD,KAAKC,UAChBC,UAAWF,KAAKE,WAEhBI,EAAA,+BAAAC,IAAA,2CACEC,MAAM,QACNN,UAAWF,KAAKE,UAAS,iBACTF,KAAKE,WAErBI,EAAA,wBAAAC,IAAA,wDACa,UACXC,MAAM,iBAAgB,cACV,cACZC,QAAS,IAAMT,KAAKU,WAEpBJ,EAAA,sBAAAC,IAAA,2CAAoBC,MAAM,OAAOG,KAAK,UAAUC,KAAK,S,CAOvD,aAAMF,G,MACZ,MAAMG,SAAcC,EAAAd,KAAKe,UAAM,MAAAD,SAAA,SAAAA,EAAED,SACjC,MAAMG,EAAYhB,KAAKG,mBACnBc,UACA,CAAEC,aAAclB,KAAKI,aACzBS,IAAK,MAALA,SAAK,SAALA,EAAOM,SAAST,UAAUL,OAAO,CAAEW,a","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as i,h as t,H as s,a as n}from"./p-CCVkga9Q.js";import{t as e,P as o,a as l}from"./p-EUeCUp3y.js";import{p as h}from"./p-CZZALKHT.js";import{b as d}from"./p-CDM7zNn0.js";import{l as r,p as a}from"./p-DxMDDbmh.js";import{g as u}from"./p-CIBBr-p1.js";import{E as v}from"./p-CFus3r7d.js";import{E as c}from"./p-BAhfr1Nx.js";import{g as p}from"./p-Bg-uS9BH.js";import"./p-CG9AChtV.js";class f{get elementRect(){return this.rectObserver.rect}constructor(i,t,s){this.rectObserver=new v;this.droppableSurfaces=[c.PRECISE_SURFACE,c.IMPRECISE_SURFACE,c.GENERIC_GEOMETRY];this.handlePointerMove=async i=>{const t=await this.isDroppableSurface(i);const s=this.controller.getDraggable();if(s!=null&&t){this.handleDrag(s,i)}if(this.controller.getDraggable()==null&&this.controller.getToolMode()==="edit"&&t){this.addCursor(this.getCursorType())}else{this.clearCursor()}};this.handleDrag=async(i,t)=>{const s=u(t,this.elementRect);const n=await this.getWorldPositionForPoint(s);if(n!=null){this.controller.updateDraggable({...i,lastPoint:s},n)}};this.handlePointerDown=async i=>{const t=t=>{const n=h.distance(h.create(i.clientX,t.clientY),h.create(t.clientX,t.clientY));if(n<=2&&i.buttons!==2){if(this.controller.getToolMode()==="edit"){const t=u(i,this.elementRect);this.handlePlacePin(t)}}s()};const s=()=>{window.removeEventListener("pointerup",t)};window.addEventListener("pointerup",t);return{dispose:s}};this.handlePointerUp=async()=>{const i=this.controller.getDraggable();const t=i===null||i===void 0?void 0:i.lastPoint;this.controller.setDraggable(undefined);if(t!=null&&i!=null){this.ifInitialized((async({api:s})=>{var n,e,o,l,h,d;const[r]=await s.hitItems(t);if((r===null||r===void 0?void 0:r.hitPoint)!=null&&((n=r===null||r===void 0?void 0:r.hitPoint)===null||n===void 0?void 0:n.x)!=null&&((e=r===null||r===void 0?void 0:r.hitPoint)===null||e===void 0?void 0:e.y)!=null&&((o=r===null||r===void 0?void 0:r.hitPoint)===null||o===void 0?void 0:o.z)!=null){this.controller.updateDraggable({...i,lastPoint:t},{x:(l=r===null||r===void 0?void 0:r.hitPoint)===null||l===void 0?void 0:l.x,y:r===null||r===void 0?void 0:r.hitPoint.y,z:r===null||r===void 0?void 0:r.hitPoint.z},(d=(h=r===null||r===void 0?void 0:r.partId)===null||h===void 0?void 0:h.hex)!==null&&d!==void 0?d:undefined)}}))}};this.controller=i;this.xOffset=t;this.yOffset=s}initialize(i,t){this.element=i;this.api=t;this.rectObserver.observe(i);i.addEventListener("pointermove",this.handlePointerMove);i.addEventListener("pointerdown",this.handlePointerDown);window.addEventListener("pointerup",this.handlePointerUp)}dispose(){var i,t;this.rectObserver.disconnect();this.clearCursor();(i=this.element)===null||i===void 0?void 0:i.removeEventListener("pointermove",this.handlePointerMove);(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointerdown",this.handlePointerDown);window.removeEventListener("pointerup",this.handlePointerUp);this.element=undefined;this.api=undefined}async getWorldPositionForPoint(i){return this.ifInitialized((async({api:t})=>{const s=await t.getWorldPointFromViewport(i);return s}))}async handlePlacePin(i,t){this.ifInitialized((async({api:s})=>{var n,o,l,h,r,a;const[u]=await s.hitItems(i);if((u===null||u===void 0?void 0:u.hitPoint)!=null&&this.elementRect!=null){if((u===null||u===void 0?void 0:u.hitPoint)!=null&&(u===null||u===void 0?void 0:u.hitPoint.x)!=null&&(u===null||u===void 0?void 0:u.hitPoint.y)!=null&&(u===null||u===void 0?void 0:u.hitPoint.z)!=null){const s=t!=null?t.id:d.create();const v=this.controller.getStyleAttributes()!=null?{style:this.controller.getStyleAttributes()}:undefined;switch(this.controller.getToolType()){case"pin-icon":this.controller.setPin({type:"icon",id:s,worldPosition:{x:(n=u===null||u===void 0?void 0:u.hitPoint)===null||n===void 0?void 0:n.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(l=(o=u===null||u===void 0?void 0:u.itemId)===null||o===void 0?void 0:o.hex)!==null&&l!==void 0?l:undefined,attributes:v});break;case"pin-text":const d=t==null;const c=e(i,this.elementRect,d,this.xOffset,this.yOffset);this.controller.setPin({type:"text",id:s,worldPosition:{x:(h=u===null||u===void 0?void 0:u.hitPoint)===null||h===void 0?void 0:h.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(a=(r=u===null||u===void 0?void 0:u.itemId)===null||r===void 0?void 0:r.hex)!==null&&a!==void 0?a:undefined,label:{point:c},attributes:v});this.controller.setSelectedPinId(s);break}}}else{this.controller.setSelectedPinId()}}))}getCursorType(){switch(this.controller.getToolType()){case"pin-icon":return a;case"pin-text":return r}}addCursor(i){this.clearCursor();this.cursor=this.ifInitialized((({api:t})=>t.addCursor(i)))}async isDroppableSurface(i){var t;const s=u(i,this.elementRect);const n=await((t=this.api)===null||t===void 0?void 0:t.getEntityTypeAtPoint(s));return n!=null&&this.droppableSurfaces.includes(n)}ifInitialized(i){if(this.element!=null&&this.api!=null){return i({element:this.element,api:this.api})}else{throw new Error("Pins interaction handler not initialized.")}}clearCursor(){var i;(i=this.cursor)===null||i===void 0?void 0:i.dispose();this.cursor=undefined}}const w=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none;--viewer-pin-tool-initial-label-offset-x:20;--viewer-pin-tool-initial-label-offset-y:20}`;const m=class{constructor(t){i(this,t);this.pinModel=new o;this.tool="pin-icon";this.mode="view";this.pins=[];this.stateMap={};this.handleSetProjectionMatrix=()=>{var i,t;this.projectionViewMatrix=(t=(i=this.viewer)===null||i===void 0?void 0:i.frame)===null||t===void 0?void 0:t.scene.camera.projectionViewMatrix}}watchModeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolMode(this.mode);this.setupInteractionHandler();if(this.mode==="edit"){this.setFeatureMaps();this.setCameraAndKeyboardControls()}else{this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}}watchTypeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolType(this.tool);this.setupInteractionHandler()}watchAccentColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setAccentColor(this.accentColor);this.setupInteractionHandler()}watchPrimaryColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setPrimaryColor(this.primaryColor);this.setupInteractionHandler()}watchPinsChange(){if(this.pins.length>0){this.setDepthBuffers();this.setFeatureMaps()}else{this.resetDepthBuffers();this.resetFeatureMaps()}}connectedCallback(){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls()}componentWillLoad(){this.updateViewport();this.setupController();this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();this.pinModel.onEntitiesChanged((i=>{this.pins=i}));this.pinModel.onSelectionChange((i=>{this.selectedPinId=i}));this.handleViewerChanged(this.viewer,undefined)}componentDidLoad(){this.resizeObserver=new ResizeObserver((()=>this.updateViewport()));this.resizeObserver.observe(this.hostEl)}disconnectedCallback(){this.clearInteractionHandler();this.clearModelListeners();this.resetDepthBuffers();this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}handleViewerChanged(i,t){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();if(t!=null){t.removeEventListener("frameDrawn",this.handleSetProjectionMatrix)}if(i!=null){i.addEventListener("frameDrawn",this.handleSetProjectionMatrix)}this.handleSetProjectionMatrix()}render(){return t(s,{key:"ce2867d4a624dabf607b9de837e73a0a0c40eaf9"},t("vertex-viewer-dom-renderer",{key:"7d2dc3d75ca1818ba7b9b292ccbe1db7ac5c7ac8",viewer:this.viewer,drawMode:"2d"},this.pins.map((i=>t("vertex-viewer-pin-group",{id:`pin-group-${i.id}`,"data-is-dom-group-element":true,pin:i,elementBounds:this.elementBounds,pinModel:this.pinModel,pinController:this.pinController,projectionViewMatrix:this.projectionViewMatrix,selected:this.selectedPinId===i.id})))))}setupController(){const i=this.accentColor||this.primaryColor?{accentColor:this.accentColor,primaryColor:this.primaryColor}:undefined;this.pinController=new l(this.pinModel,this.mode,this.tool,i)}clearInteractionHandler(){var i;(i=this.registeredInteractionHandler)===null||i===void 0?void 0:i.then((i=>i.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var i;const t=window.getComputedStyle(this.hostEl);const s=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-x").trim();const n=Number.isFinite(Number.parseInt(s))?Number.parseInt(s):20;const e=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-y").trim();const o=Number.isFinite(Number.parseInt(e))?Number.parseInt(e):20;this.clearInteractionHandler();if(this.pinController!=null){this.registeredInteractionHandler=(i=this.viewer)===null||i===void 0?void 0:i.registerInteractionHandler(new f(this.pinController,n,o))}}clearModelListeners(){var i,t,s;(i=this.onEntitiesChangedHandler)===null||i===void 0?void 0:i.dispose();this.onEntitiesChangedHandler=undefined;(t=this.onEntityAddedHandler)===null||t===void 0?void 0:t.dispose();this.onEntityAddedHandler=undefined;(s=this.resizeObserver)===null||s===void 0?void 0:s.disconnect()}updateViewport(){this.elementBounds=p(this.hostEl)}setDepthBuffers(){if(this.pins.length>0&&this.viewer!=null&&this.viewer.depthBuffers==null){this.stateMap.shouldClearDepthBuffers=true;this.viewer.depthBuffers="final"}}resetDepthBuffers(){if(this.stateMap.shouldClearDepthBuffers&&this.viewer!=null){this.viewer.depthBuffers=undefined;this.stateMap.shouldClearDepthBuffers=undefined}}setFeatureMaps(){if((this.pins.length>0||this.mode==="edit")&&this.viewer!=null&&this.viewer.featureMaps==null){this.stateMap.shouldClearFeatureMaps=true;this.viewer.featureMaps="final"}}resetFeatureMaps(){if(this.stateMap.shouldClearFeatureMaps&&this.viewer!=null){this.viewer.featureMaps=undefined;this.stateMap.shouldClearFeatureMaps=undefined}}setCameraAndKeyboardControls(){if(this.mode==="edit"&&this.viewer!=null){if(this.viewer.cameraControls){this.stateMap.shouldClearCameraControls=true;this.viewer.cameraControls=false}if(this.viewer.keyboardControls){this.stateMap.shouldClearKeyboardControls=true;this.viewer.keyboardControls=false}}}resetCameraAndKeyboardControls(){if(this.viewer!=null){if(this.stateMap.shouldClearCameraControls){this.viewer.cameraControls=true;this.stateMap.shouldClearCameraControls=undefined}if(this.stateMap.shouldClearKeyboardControls){this.viewer.keyboardControls=true;this.stateMap.shouldClearKeyboardControls=undefined}}}get hostEl(){return n(this)}static get watchers(){return{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}}};m.style=w();export{m as vertex_viewer_pin_tool};
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{r as i,h as t,H as s,a as n}from"./p-CCVkga9Q.js";import{t as e,P as o,a as l}from"./p-CxBXErQ8.js";import{p as h}from"./p-2UsvOTHJ.js";import{b as d}from"./p-CDM7zNn0.js";import{l as r,p as a}from"./p-DxMDDbmh.js";import{g as u}from"./p-D0aTA_2m.js";import{E as v}from"./p-CFus3r7d.js";import{E as c}from"./p-BAhfr1Nx.js";import{g as p}from"./p-Bg-uS9BH.js";import"./p-CG9AChtV.js";class f{get elementRect(){return this.rectObserver.rect}constructor(i,t,s){this.rectObserver=new v;this.droppableSurfaces=[c.PRECISE_SURFACE,c.IMPRECISE_SURFACE,c.GENERIC_GEOMETRY];this.handlePointerMove=async i=>{const t=await this.isDroppableSurface(i);const s=this.controller.getDraggable();if(s!=null&&t){this.handleDrag(s,i)}if(this.controller.getDraggable()==null&&this.controller.getToolMode()==="edit"&&t){this.addCursor(this.getCursorType())}else{this.clearCursor()}};this.handleDrag=async(i,t)=>{const s=u(t,this.elementRect);const n=await this.getWorldPositionForPoint(s);if(n!=null){this.controller.updateDraggable({...i,lastPoint:s},n)}};this.handlePointerDown=async i=>{const t=t=>{const n=h.distance(h.create(i.clientX,t.clientY),h.create(t.clientX,t.clientY));if(n<=2&&i.buttons!==2){if(this.controller.getToolMode()==="edit"){const t=u(i,this.elementRect);this.handlePlacePin(t)}}s()};const s=()=>{window.removeEventListener("pointerup",t)};window.addEventListener("pointerup",t);return{dispose:s}};this.handlePointerUp=async()=>{const i=this.controller.getDraggable();const t=i===null||i===void 0?void 0:i.lastPoint;this.controller.setDraggable(undefined);if(t!=null&&i!=null){this.ifInitialized((async({api:s})=>{var n,e,o,l,h,d;const[r]=await s.hitItems(t);if((r===null||r===void 0?void 0:r.hitPoint)!=null&&((n=r===null||r===void 0?void 0:r.hitPoint)===null||n===void 0?void 0:n.x)!=null&&((e=r===null||r===void 0?void 0:r.hitPoint)===null||e===void 0?void 0:e.y)!=null&&((o=r===null||r===void 0?void 0:r.hitPoint)===null||o===void 0?void 0:o.z)!=null){this.controller.updateDraggable({...i,lastPoint:t},{x:(l=r===null||r===void 0?void 0:r.hitPoint)===null||l===void 0?void 0:l.x,y:r===null||r===void 0?void 0:r.hitPoint.y,z:r===null||r===void 0?void 0:r.hitPoint.z},(d=(h=r===null||r===void 0?void 0:r.partId)===null||h===void 0?void 0:h.hex)!==null&&d!==void 0?d:undefined)}}))}};this.controller=i;this.xOffset=t;this.yOffset=s}initialize(i,t){this.element=i;this.api=t;this.rectObserver.observe(i);i.addEventListener("pointermove",this.handlePointerMove);i.addEventListener("pointerdown",this.handlePointerDown);window.addEventListener("pointerup",this.handlePointerUp)}dispose(){var i,t;this.rectObserver.disconnect();this.clearCursor();(i=this.element)===null||i===void 0?void 0:i.removeEventListener("pointermove",this.handlePointerMove);(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointerdown",this.handlePointerDown);window.removeEventListener("pointerup",this.handlePointerUp);this.element=undefined;this.api=undefined}async getWorldPositionForPoint(i){return this.ifInitialized((async({api:t})=>{const s=await t.getWorldPointFromViewport(i);return s}))}async handlePlacePin(i,t){this.ifInitialized((async({api:s})=>{var n,o,l,h,r,a;const[u]=await s.hitItems(i);if((u===null||u===void 0?void 0:u.hitPoint)!=null&&this.elementRect!=null){if((u===null||u===void 0?void 0:u.hitPoint)!=null&&(u===null||u===void 0?void 0:u.hitPoint.x)!=null&&(u===null||u===void 0?void 0:u.hitPoint.y)!=null&&(u===null||u===void 0?void 0:u.hitPoint.z)!=null){const s=t!=null?t.id:d.create();const v=this.controller.getStyleAttributes()!=null?{style:this.controller.getStyleAttributes()}:undefined;switch(this.controller.getToolType()){case"pin-icon":this.controller.setPin({type:"icon",id:s,worldPosition:{x:(n=u===null||u===void 0?void 0:u.hitPoint)===null||n===void 0?void 0:n.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(l=(o=u===null||u===void 0?void 0:u.itemId)===null||o===void 0?void 0:o.hex)!==null&&l!==void 0?l:undefined,attributes:v});break;case"pin-text":const d=t==null;const c=e(i,this.elementRect,d,this.xOffset,this.yOffset);this.controller.setPin({type:"text",id:s,worldPosition:{x:(h=u===null||u===void 0?void 0:u.hitPoint)===null||h===void 0?void 0:h.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(a=(r=u===null||u===void 0?void 0:u.itemId)===null||r===void 0?void 0:r.hex)!==null&&a!==void 0?a:undefined,label:{point:c},attributes:v});this.controller.setSelectedPinId(s);break}}}else{this.controller.setSelectedPinId()}}))}getCursorType(){switch(this.controller.getToolType()){case"pin-icon":return a;case"pin-text":return r}}addCursor(i){this.clearCursor();this.cursor=this.ifInitialized((({api:t})=>t.addCursor(i)))}async isDroppableSurface(i){var t;const s=u(i,this.elementRect);const n=await((t=this.api)===null||t===void 0?void 0:t.getEntityTypeAtPoint(s));return n!=null&&this.droppableSurfaces.includes(n)}ifInitialized(i){if(this.element!=null&&this.api!=null){return i({element:this.element,api:this.api})}else{throw new Error("Pins interaction handler not initialized.")}}clearCursor(){var i;(i=this.cursor)===null||i===void 0?void 0:i.dispose();this.cursor=undefined}}const w=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none;--viewer-pin-tool-initial-label-offset-x:20;--viewer-pin-tool-initial-label-offset-y:20}`;const m=class{constructor(t){i(this,t);this.pinModel=new o;this.tool="pin-icon";this.mode="view";this.pins=[];this.stateMap={};this.handleSetProjectionMatrix=()=>{var i,t;this.projectionViewMatrix=(t=(i=this.viewer)===null||i===void 0?void 0:i.frame)===null||t===void 0?void 0:t.scene.camera.projectionViewMatrix}}watchModeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolMode(this.mode);this.setupInteractionHandler();if(this.mode==="edit"){this.setFeatureMaps();this.setCameraAndKeyboardControls()}else{this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}}watchTypeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolType(this.tool);this.setupInteractionHandler()}watchAccentColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setAccentColor(this.accentColor);this.setupInteractionHandler()}watchPrimaryColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setPrimaryColor(this.primaryColor);this.setupInteractionHandler()}watchPinsChange(){if(this.pins.length>0){this.setDepthBuffers();this.setFeatureMaps()}else{this.resetDepthBuffers();this.resetFeatureMaps()}}connectedCallback(){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls()}componentWillLoad(){this.updateViewport();this.setupController();this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();this.pinModel.onEntitiesChanged((i=>{this.pins=i}));this.pinModel.onSelectionChange((i=>{this.selectedPinId=i}));this.handleViewerChanged(this.viewer,undefined)}componentDidLoad(){this.resizeObserver=new ResizeObserver((()=>this.updateViewport()));this.resizeObserver.observe(this.hostEl)}disconnectedCallback(){this.clearInteractionHandler();this.clearModelListeners();this.resetDepthBuffers();this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}handleViewerChanged(i,t){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();if(t!=null){t.removeEventListener("frameDrawn",this.handleSetProjectionMatrix)}if(i!=null){i.addEventListener("frameDrawn",this.handleSetProjectionMatrix)}this.handleSetProjectionMatrix()}render(){return t(s,{key:"ce2867d4a624dabf607b9de837e73a0a0c40eaf9"},t("vertex-viewer-dom-renderer",{key:"7d2dc3d75ca1818ba7b9b292ccbe1db7ac5c7ac8",viewer:this.viewer,drawMode:"2d"},this.pins.map((i=>t("vertex-viewer-pin-group",{id:`pin-group-${i.id}`,"data-is-dom-group-element":true,pin:i,elementBounds:this.elementBounds,pinModel:this.pinModel,pinController:this.pinController,projectionViewMatrix:this.projectionViewMatrix,selected:this.selectedPinId===i.id})))))}setupController(){const i=this.accentColor||this.primaryColor?{accentColor:this.accentColor,primaryColor:this.primaryColor}:undefined;this.pinController=new l(this.pinModel,this.mode,this.tool,i)}clearInteractionHandler(){var i;(i=this.registeredInteractionHandler)===null||i===void 0?void 0:i.then((i=>i.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var i;const t=window.getComputedStyle(this.hostEl);const s=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-x").trim();const n=Number.isFinite(Number.parseInt(s))?Number.parseInt(s):20;const e=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-y").trim();const o=Number.isFinite(Number.parseInt(e))?Number.parseInt(e):20;this.clearInteractionHandler();if(this.pinController!=null){this.registeredInteractionHandler=(i=this.viewer)===null||i===void 0?void 0:i.registerInteractionHandler(new f(this.pinController,n,o))}}clearModelListeners(){var i,t,s;(i=this.onEntitiesChangedHandler)===null||i===void 0?void 0:i.dispose();this.onEntitiesChangedHandler=undefined;(t=this.onEntityAddedHandler)===null||t===void 0?void 0:t.dispose();this.onEntityAddedHandler=undefined;(s=this.resizeObserver)===null||s===void 0?void 0:s.disconnect()}updateViewport(){this.elementBounds=p(this.hostEl)}setDepthBuffers(){if(this.pins.length>0&&this.viewer!=null&&this.viewer.depthBuffers==null){this.stateMap.shouldClearDepthBuffers=true;this.viewer.depthBuffers="final"}}resetDepthBuffers(){if(this.stateMap.shouldClearDepthBuffers&&this.viewer!=null){this.viewer.depthBuffers=undefined;this.stateMap.shouldClearDepthBuffers=undefined}}setFeatureMaps(){if((this.pins.length>0||this.mode==="edit")&&this.viewer!=null&&this.viewer.featureMaps==null){this.stateMap.shouldClearFeatureMaps=true;this.viewer.featureMaps="final"}}resetFeatureMaps(){if(this.stateMap.shouldClearFeatureMaps&&this.viewer!=null){this.viewer.featureMaps=undefined;this.stateMap.shouldClearFeatureMaps=undefined}}setCameraAndKeyboardControls(){if(this.mode==="edit"&&this.viewer!=null){if(this.viewer.cameraControls){this.stateMap.shouldClearCameraControls=true;this.viewer.cameraControls=false}if(this.viewer.keyboardControls){this.stateMap.shouldClearKeyboardControls=true;this.viewer.keyboardControls=false}}}resetCameraAndKeyboardControls(){if(this.viewer!=null){if(this.stateMap.shouldClearCameraControls){this.viewer.cameraControls=true;this.stateMap.shouldClearCameraControls=undefined}if(this.stateMap.shouldClearKeyboardControls){this.viewer.keyboardControls=true;this.stateMap.shouldClearKeyboardControls=undefined}}}get hostEl(){return n(this)}static get watchers(){return{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}}};m.style=w();export{m as vertex_viewer_pin_tool};
|
|
5
|
+
//# sourceMappingURL=p-53f6cc59.entry.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{h as t,r as o,c as e,H as r,a as i}from"./p-CCVkga9Q.js";import{b as n,g as s}from"./p-CIBBr-p1.js";import{w as h}from"./p-BxtKMwBH.js";import{g as a}from"./p-Bg-uS9BH.js";import{p as c,e as d,g as l,a as u}from"./p-CZZALKHT.js";import{i as p,a as w,b as v,p as f,c as b,d as m,e as g,f as k,g as x,h as C,j as P}from"./p-UQXG8bCI.js";import{c as y}from"./p-Dw4-tG-V.js";import"./p-CG9AChtV.js";function D(t,o){switch(o){case"top-left":return c.create(t.x,t.y);case"top":return c.create(t.x+t.width/2,t.y);case"top-right":return c.create(t.x+t.width,t.y);case"right":return c.create(t.x+t.width,t.y+t.height/2);case"bottom-right":return c.create(t.x+t.width,t.y+t.height);case"bottom":return c.create(t.x+t.width/2,t.y+t.height);case"bottom-left":return c.create(t.x,t.y+t.height);case"left":return c.create(t.x,t.y+t.height/2);case"center":return l.center(t)}}function A(t,o,e=o,r="none",i=1){const n=Math.min(o.width/e.width,o.height/e.height);const s=n*i;const h=E(e);const a=c.add(c.scale(t,h,h),d.center(e));const l=e.width*s;const u=e.height*s;const p=r==="both"||r==="x-only"?Math.max(0,(o.width-l)/2):0;const w=r==="both"||r==="y-only"?Math.max(0,(o.height-u)/2):0;return c.create(a.x*s+p,a.y*s+w)}function S(t,o,e=o,r=1){const i=Math.min(o.width/e.width,o.height/e.height);const n=i*r;const s=E(e);const h=d.scale(s,s,t);return d.scale(n,n,h)}function M(t,o,e,r="none",i=1){const n=A(t,o,e,r,i);const s=S(t,o,e,i);return l.fromPointAndDimensions(n,s)}function B(t,o,e=o,r="none",i=1,s=c.create(0,0)){const h=Math.min(o.width/e.width,o.height/e.height);const a=h*i;const l=e.width*a;const u=e.height*a;const p=r==="both"||r==="x-only"?Math.max(0,(o.width-l)/2):0;const w=r==="both"||r==="y-only"?Math.max(0,(o.height-u)/2):0;const v=c.subtract(t,c.scale(s,1/n(),1/n()));const f=c.create((v.x-p)/a,(v.y-w)/a);const b=E(e);const m=c.subtract(f,d.center(e));return c.scale(m,1/b,1/b)}function $(t,o,e){return t.map((t=>c.add(c.scale(c.subtract(t,o),e.width/(o.width||1),e.height/(o.height||1)),e)))}function T(t,o,e){const r=l.fromPoints(t,o);if(e){const e=Math.max(r.width,r.height);const i=r.height>r.width;const n=o.x<=t.x;const s=o.y<=t.y;const h=n?i?t.x-e:o.x:t.x;const a=s?i?o.y:t.y-e:t.y;return l.create(h,a,e,e)}else{return r}}function V(t,o,e,r,i){const n=c.subtract(e,o);const{x:s,y:h,width:a,height:d}=t;const u=s+a;const p=h+d;const w=c.create(s,h);const v=c.create(s,p);const f=c.create(u,h);const b=c.create(u,p);switch(r){case"top-left":return T(b,e,!!i);case"top":return T(b,c.create(s,e.y),!!i);case"top-right":return T(v,e,!!i);case"right":return T(v,c.create(e.x,h),!!i);case"bottom-right":return T(w,e,!!i);case"bottom":return T(w,c.create(u,e.y),!!i);case"bottom-left":return T(f,e,!!i);case"left":return T(b,c.create(e.x,h),!!i);case"center":return l.create(t.x+n.x,t.y+n.y,t.width,t.height)}}function L(t){return p(t)||w(t)||v(t)}function R(...t){return t.every((t=>!Number.isNaN(t.x)&&!Number.isNaN(t.y)))}function I(t){const o=t.target;return L(o)&&o.mode!=="edit"}function E(t){return t.height}const j=({id:o,transform:e,rotation:r,name:i,point:n,onPointerDown:s},h)=>t("div",{id:o,class:"bounds-anchor-position",style:{top:`${n.y}px`,left:`${n.x}px`},onTouchStart:t=>t.preventDefault(),onPointerDown:s},t("div",{style:{transform:e}},t("div",{class:"bounds-anchor",style:{transform:`rotateZ(${r!==null&&r!==void 0?r:0}deg)`}},t("slot",{name:i},h))));const F=({id:o,scale:e})=>{const r=e!==null&&e!==void 0?e:1;const i=Math.max(10,10*r);const n=Math.max(10,10*r);const s=Math.max(120,110*r+i);const h=Math.max(120,110*r+n);return t("filter",{id:o,filterUnits:"userSpaceOnUse",x:`${-i}%`,y:`${-n}%`,width:`${s}%`,height:`${h}%`},t("feGaussianBlur",{in:"SourceAlpha",stdDeviation:"2"}),t("feOffset",{dx:"0",dy:"1",result:"offsetblur"}),t("feFlood",{"flood-color":"#000000","flood-opacity":"0.25"}),t("feComposite",{in2:"offsetblur",operator:"in"}),t("feMerge",null,t("feMergeNode",null),t("feMergeNode",{in:"SourceGraphic"})))};class _{constructor(t){this.handlePointerDown=t=>{this.handleInteractionAttempt(t)};this.handlePointerMove=t=>{this.handleInteractionMove(t)};this.handlePointerUp=t=>{window.removeEventListener("pointermove",this.handlePointerMove);window.removeEventListener("pointerup",this.handlePointerUp);this.handleInteractionEnd(t)};this.resizeObserver=new ResizeObserver((([t])=>{this.elementBounds=this.computeBoundingRect()}));this.scalingOptions=t!==null&&t!==void 0?t:{}}initialize(t){this.element=t;this.elementBounds=this.computeBoundingRect();this.resizeObserver.observe(this.element);this.element.addEventListener("pointerdown",this.handlePointerDown)}dispose(){var t;this.resizeObserver.disconnect();(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointerdown",this.handlePointerDown);this.element=undefined}updateScalingOptions(t){this.scalingOptions={...this.scalingOptions,...t}}getScalingOptions(){return this.scalingOptions}acceptInteraction(){window.addEventListener("pointermove",this.handlePointerMove);window.addEventListener("pointerup",this.handlePointerUp)}}class z extends _{constructor(t,o,e,r){super(r);this.markupEl=t;this.interactionBegin=o;this.interactionEnd=e;this.anchor="end"}editAnchor(t,o){if(this.markupEl.mode==="edit"){this.anchor=t;this.startInteraction(o)}}startInteraction(t){this.handleInteractionAttempt(t)}computeBoundingRect(){return a(this.markupEl)}handleInteractionAttempt(t){var o;if(this.markupEl.mode!==""&&this.pointerId==null&&this.elementBounds!=null){this.pointerId=t.pointerId;this.markupEl.start=(o=this.markupEl.start)!==null&&o!==void 0?o:B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.interactionBegin.emit();this.acceptInteraction()}}handleInteractionMove(t){if(this.elementBounds!=null&&this.pointerId===t.pointerId){const o=B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);if(this.anchor==="start"){this.markupEl.start=o}else if(this.anchor==="end"){this.markupEl.end=o}else if(this.markupEl.start!=null&&this.markupEl.end!=null){const t=c.create((this.markupEl.start.x+this.markupEl.end.x)/2,(this.markupEl.start.y+this.markupEl.end.y)/2);const e=t.x-o.x;const r=t.y-o.y;this.markupEl.start=c.create(this.markupEl.start.x-e,this.markupEl.start.y-r);this.markupEl.end=c.create(this.markupEl.end.x-e,this.markupEl.end.y-r)}}}handleInteractionEnd(t){if(this.pointerId===t.pointerId){const t=this.markupEl.start!=null&&this.elementBounds!=null?A(this.markupEl.start,this.elementBounds):undefined;const o=this.markupEl.end!=null&&this.elementBounds!=null?A(this.markupEl.end,this.elementBounds):undefined;if(this.markupEl.mode!==""&&t!=null&&o!=null&&c.distance(t,o)>=2){const t=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:t})}else{this.markupEl.start=undefined;this.markupEl.end=undefined}this.pointerId=undefined}}}const O=({start:o,end:e,offset:r,onStartAnchorPointerDown:i,onCenterAnchorPointerDown:n,onEndAnchorPointerDown:s})=>{const h=u.normalize(u.toDegrees(u.fromPoints(o,e))-270);const a=c.create((o.x+e.x)/2,(o.y+e.y)/2);const d=r!=null?`translate(${r.x}px, ${r.y}px)`:undefined;return t("div",{class:"bounds-container"},t(j,{transform:d,id:"bounding-box-1d-start-anchor",name:"start-anchor",rotation:h,point:o,onPointerDown:i},t("div",{class:y("bounds-default-anchor","bounds-cap-anchor")})),t(j,{transform:d,id:"bounding-box-1d-end-anchor",name:"end-anchor",rotation:h,point:e,onPointerDown:s},t("div",{class:y("bounds-default-anchor","bounds-cap-anchor")})),t(j,{transform:d,id:"bounding-box-1d-center-anchor",name:"center-anchor",point:a,onPointerDown:n},t("div",{class:y("bounds-default-anchor","bounds-center-anchor")})))};const J=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-arrow-line-stroke-color:var(--red-800);--viewer-markup-arrow-line-stroke-width:4px;--viewer-markup-arrow-head-stroke-color:var(--red-800);--viewer-markup-arrow-head-stroke-width:4px;--viewer-markup-arrow-head-fill-color:var(--red-800);--viewer-markup-arrow-head-fill-opacity:1;--viewer-markup-arrow-bounds-cap-border-color:var(--blue-400);--viewer-markup-arrow-bounds-cap-border-width:1px;--viewer-markup-arrow-bounds-cap-background-color:white;--viewer-markup-arrow-bounds-center-anchor-border-color:white;--viewer-markup-arrow-bounds-center-anchor-border-width:1px;--viewer-markup-arrow-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-arrow-bounds-outline-width:1px;--viewer-markup-arrow-bounds-outline-color:var(--blue-400);--viewer-markup-arrow-bounds-anchor-width:9px;--viewer-markup-arrow-bounds-anchor-height:9px;--viewer-markup-arrow-scale:1}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.line{pointer-events:auto;stroke:var(--viewer-markup-arrow-line-stroke-color);stroke-width:calc( var(--viewer-markup-arrow-line-stroke-width) * var(--viewer-markup-arrow-scale) );cursor:default}.head{pointer-events:auto;stroke:var(--viewer-markup-arrow-head-stroke-color);stroke-width:calc( var(--viewer-markup-arrow-head-stroke-width) * var(--viewer-markup-arrow-scale) );fill:var(--viewer-markup-arrow-head-fill-color);fill-opacity:var(--viewer-markup-arrow-head-fill-opacity);cursor:default}.bounds-line{pointer-events:auto;stroke:var(--viewer-markup-arrow-bounds-outline-color);stroke-width:var(--viewer-markup-arrow-bounds-outline-width)}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-arrow-bounds-anchor-width);height:var(--viewer-markup-arrow-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-arrow-bounds-center-anchor-border-width);border-color:var(--viewer-markup-arrow-bounds-center-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-arrow-bounds-center-anchor-background-color )}.bounds-cap-anchor{border-width:var(--viewer-markup-arrow-bounds-cap-border-width);border-color:var(--viewer-markup-arrow-bounds-cap-border-color);border-style:solid;background-color:var(--viewer-markup-arrow-bounds-cap-background-color)}`;const G=class{constructor(t){o(this,t);this.interactionBegin=e(this,"interactionBegin");this.interactionEnd=e(this,"interactionEnd");this.centeringBehavior="none";this.scale=1;this.startLineAnchorStyle="none";this.endLineAnchorStyle="arrow-triangle";this.mode="";this.interactionHandler=new z(this.hostEl,this.interactionBegin,this.interactionEnd,{scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior});this.handleWindowPointerDown=t=>{if(I(t)){this.interactionHandler.startInteraction(t)}};this.handleTouchStart=t=>{t.preventDefault()}}componentWillLoad(){this.updateViewport();this.handleViewerChanged(this.viewer);this.handleScaleChange();this.handleScalingConfigurationChange();this.updatePointsFromProps()}componentDidLoad(){this.updatePointsFromProps();const t=new ResizeObserver((()=>this.updateViewport()));t.observe(this.hostEl);if(this.mode==="create"){window.addEventListener("pointerdown",this.handleWindowPointerDown)}}disconnectedCallback(){this.dispose()}async dispose(){var t;(t=this.registeredInteraction)===null||t===void 0?void 0:t.dispose();this.registeredInteraction=undefined;window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async handleViewerChanged(t){var o;(o=this.registeredInteraction)===null||o===void 0?void 0:o.dispose();this.registeredInteraction=undefined;if(t!=null){this.registeredInteraction=await t.registerBasicInteractionHandler(this.interactionHandler)}}handleStartJsonChange(){this.updatePointsFromProps()}handleEndJsonChange(){this.updatePointsFromProps()}handleModeChange(){if(this.mode!=="create"){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}}handleScalingConfigurationChange(){this.interactionHandler.updateScalingOptions({scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior})}handleScaleChange(){h((()=>{var t,o;this.hostEl.style.setProperty("--viewer-markup-arrow-scale",(o=(t=this.scale)===null||t===void 0?void 0:t.toString())!==null&&o!==void 0?o:"1")}))}updateViewport(){const t=a(this.hostEl);this.elementBounds=t}updatePointsFromProps(){this.start=this.start||f(this.startJson);this.end=this.end||f(this.endJson)}renderLineAnchorStyle(o,e){if(o==="arrow-triangle"){return t("polygon",{id:"line-anchor-arrow-triangle",class:"head",points:b(e,this.scale)})}else if(o==="arrow-line"){return t("path",{id:"line-anchor-arrow-line",class:"head",d:m(e,this.scale)})}else if(o==="hash"){const o=g(e,this.scale);return t("line",{id:"line-anchor-hash",class:"head",...o})}else if(o==="dot"){const o=k(e,this.scale);return t("circle",{id:"line-anchor-circle",class:"head",...o})}else{return t("div",null)}}render(){var o,e,i,s;if(this.start!=null&&this.end!=null&&this.elementBounds!=null&&this.elementBounds.width>0&&this.elementBounds.height>0){const h=this.elementBounds;const a=((e=(o=this.offset)===null||o===void 0?void 0:o.x)!==null&&e!==void 0?e:0)/n();const c=((s=(i=this.offset)===null||i===void 0?void 0:i.y)!==null&&s!==void 0?s:0)/n();const d=A(this.start,h,this.originatingViewport,this.centeringBehavior,this.scale);const l=A(this.end,h,this.originatingViewport,this.centeringBehavior,this.scale);if(R(d,l)){const o=x(l,d);const e=x(d,l);return t(r,null,t("svg",{class:"svg",onTouchStart:this.handleTouchStart},t("defs",null,t(F,{id:"arrow-shadow",scale:this.scale})),t("g",{transform:`translate(${a} ${c})`,filter:"url(#arrow-shadow)"},this.renderLineAnchorStyle(this.startLineAnchorStyle,o),t("line",{id:"arrow-line",class:"line",x1:e.tip.x,y1:e.tip.y,x2:o.tip.x,y2:o.tip.y}),this.renderLineAnchorStyle(this.endLineAnchorStyle,e)),this.mode==="edit"&&t("g",{transform:`translate(${a} ${c})`},t("line",{id:"bounding-box-1d-line",class:"bounds-line",x1:d.x,y1:d.y,x2:l.x,y2:l.y}))),this.mode==="edit"&&t(O,{start:d,end:l,offset:{x:a,y:c},onStartAnchorPointerDown:t=>this.interactionHandler.editAnchor("start",t),onCenterAnchorPointerDown:t=>this.interactionHandler.editAnchor("center",t),onEndAnchorPointerDown:t=>this.interactionHandler.editAnchor("end",t)}),this.mode==="create"&&t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}else{return t(r,null)}}else{return t(r,null,t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}}get hostEl(){return i(this)}static get watchers(){return{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}]}}};G.style=J();class H extends _{constructor(t,o,e,r){super(r);this.markupEl=t;this.interactionBegin=o;this.interactionEnd=e;this.anchor="bottom-right"}editAnchor(t,o){if(this.markupEl.mode==="edit"){this.anchor=t;this.resizeBounds=this.markupEl.bounds;this.startInteraction(o)}}startInteraction(t){this.handleInteractionAttempt(t)}computeBoundingRect(){return a(this.markupEl)}handleInteractionAttempt(t){var o;if(this.markupEl.mode!==""&&this.pointerId==null&&this.elementBounds!=null){const e=B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.pointerId=t.pointerId;this.startPosition=e;this.markupEl.bounds=(o=this.markupEl.bounds)!==null&&o!==void 0?o:l.create(e.x,e.y,0,0);this.resizeBounds=this.markupEl.bounds;this.interactionBegin.emit();this.acceptInteraction()}}handleInteractionMove(t){var o;if(this.markupEl.bounds!=null&&this.startPosition!=null&&this.elementBounds!=null&&this.pointerId===t.pointerId){const e=B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.markupEl.bounds=V((o=this.resizeBounds)!==null&&o!==void 0?o:this.markupEl.bounds,this.startPosition,e,this.anchor,t.shiftKey)}}handleInteractionEnd(t){var o,e;if(this.pointerId===t.pointerId){if(this.markupEl.mode!==""&&this.markupEl.bounds!=null&&((o=this.markupEl.bounds)===null||o===void 0?void 0:o.width)>0&&((e=this.markupEl.bounds)===null||e===void 0?void 0:e.height)>0){this.anchor="bottom-right";const t=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:t})}else{this.markupEl.bounds=undefined}this.pointerId=undefined}}}const N=({bounds:o,offset:e,onTopLeftAnchorPointerDown:r,onLeftAnchorPointerDown:i,onTopRightAnchorPointerDown:n,onRightAnchorPointerDown:s,onBottomLeftAnchorPointerDown:h,onBottomAnchorPointerDown:a,onBottomRightAnchorPointerDown:c,onTopAnchorPointerDown:d,onCenterAnchorPointerDown:u})=>{const p=l.pad(o,6);const w=l.center(p);const v=e!=null?`translate(${e.x}px, ${e.y}px)`:undefined;return t("div",{class:"bounds-container"},t("div",{class:"bounds-outline",style:{top:`${p.y}px`,left:`${p.x}px`,width:`${p.width}px`,height:`${p.height}px`,transform:v}}),t(j,{transform:v,id:"bounding-box-2d-top-left-anchor",name:"top-left-anchor",point:D(p,"top-left"),onPointerDown:r},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-left-anchor",name:"left-anchor",point:D(p,"left"),onPointerDown:i},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-top-right-anchor",name:"top-right-anchor",point:D(p,"top-right"),onPointerDown:n},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-right-anchor",name:"right-anchor",point:D(p,"right"),onPointerDown:s},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-bottom-left-anchor",name:"bottom-left-anchor",point:D(p,"bottom-left"),onPointerDown:h},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-bottom-anchor",name:"bottom-anchor",point:D(p,"bottom"),onPointerDown:a},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-bottom-right-anchor",name:"bottom-right-anchor",point:D(p,"bottom-right"),onPointerDown:c},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-top-anchor",name:"top-anchor",point:D(p,"top"),onPointerDown:d},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-center-anchor",name:"center-anchor",point:w,onPointerDown:u},t("div",{class:y("bounds-default-anchor","bounds-center-anchor")})))};const U=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-circle-ellipse-stroke-color:var(--red-700);--viewer-markup-circle-ellipse-stroke-width:4px;--viewer-markup-circle-ellipse-fill-color:none;--viewer-markup-circle-ellipse-fill-opacity:0;--viewer-markup-circle-bounds-outline-border-color:var(--blue-400);--viewer-markup-circle-bounds-outline-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-circle-bounds-edge-anchor-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-background-color:white;--viewer-markup-circle-bounds-center-anchor-border-color:white;--viewer-markup-circle-bounds-center-anchor-border-width:1px;--viewer-markup-circle-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-circle-bounds-anchor-width:9px;--viewer-markup-circle-bounds-anchor-height:9px;--viewer-markup-circle-scale:1}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.ellipse{pointer-events:auto;stroke:var(--viewer-markup-circle-ellipse-stroke-color);stroke-width:calc( var(--viewer-markup-circle-ellipse-stroke-width) * var(--viewer-markup-circle-scale) );fill:var(--viewer-markup-circle-ellipse-fill-color);fill-opacity:var(--viewer-markup-circle-ellipse-fill-opacity);cursor:default}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-circle-bounds-outline-border-width);border-color:var(--viewer-markup-circle-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-circle-bounds-anchor-width);height:var(--viewer-markup-circle-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-circle-bounds-center-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-center-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-circle-bounds-center-anchor-background-color )}.bounds-edge-anchor{border-width:var(--viewer-markup-circle-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-edge-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-circle-bounds-edge-anchor-background-color )}`;const W=class{constructor(t){o(this,t);this.interactionBegin=e(this,"interactionBegin");this.interactionEnd=e(this,"interactionEnd");this.mode="";this.centeringBehavior="none";this.scale=1;this.interactionHandler=new H(this.hostEl,this.interactionBegin,this.interactionEnd,{scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior});this.handleWindowPointerDown=t=>{if(I(t)){this.interactionHandler.startInteraction(t)}};this.handleTouchStart=t=>{t.preventDefault()}}componentWillLoad(){this.updateViewport();this.handleViewerChanged(this.viewer);this.handleScaleChange();this.handleScalingConfigurationChange();this.updateBoundsFromProps()}componentDidLoad(){this.updateBoundsFromProps();const t=new ResizeObserver((()=>this.updateViewport()));t.observe(this.hostEl);if(this.mode==="create"){window.addEventListener("pointerdown",this.handleWindowPointerDown)}}disconnectedCallback(){this.dispose()}async dispose(){var t;(t=this.registeredHandler)===null||t===void 0?void 0:t.dispose();this.registeredHandler=undefined;window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async handleViewerChanged(t){var o;(o=this.registeredHandler)===null||o===void 0?void 0:o.dispose();this.registeredHandler=undefined;if(t!=null){this.registeredHandler=await t.registerBasicInteractionHandler(this.interactionHandler)}}handleBoundsJsonChange(){this.updateBoundsFromProps()}handleModeChange(){if(this.mode!=="create"){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}}handleScalingConfigurationChange(){this.interactionHandler.updateScalingOptions({scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior})}handleScaleChange(){h((()=>{this.hostEl.style.setProperty("--viewer-markup-circle-scale",this.scale.toString())}))}updateViewport(){const t=a(this.hostEl);this.elementBounds=t}updateBoundsFromProps(){var t;this.bounds=(t=this.bounds)!==null&&t!==void 0?t:C(this.boundsJson)}render(){var o,e,i,s;if(this.bounds!=null&&this.elementBounds!=null&&this.elementBounds.width>0&&this.elementBounds.height>0){const h=M(this.bounds,this.elementBounds,this.originatingViewport,this.centeringBehavior,this.scale);const a=l.center(h);const c=((e=(o=this.offset)===null||o===void 0?void 0:o.x)!==null&&e!==void 0?e:0)/n();const d=((s=(i=this.offset)===null||i===void 0?void 0:i.y)!==null&&s!==void 0?s:0)/n();return t(r,null,t("svg",{class:"svg",onTouchStart:this.handleTouchStart},t("defs",null,t(F,{id:"circle-shadow",scale:this.scale})),t("g",{transform:`translate(${c} ${d})`,filter:"url(#circle-shadow)"},t("ellipse",{class:"ellipse",cx:a.x,cy:a.y,rx:h.width/2,ry:h.height/2,stroke:"#000ff0","stroke-width":4,fill:"none"}))),this.mode==="edit"&&t(N,{bounds:h,offset:{x:c,y:d},onTopLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("top-left",t),onTopRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("top-right",t),onTopAnchorPointerDown:t=>this.interactionHandler.editAnchor("top",t),onBottomLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom-left",t),onBottomRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom-right",t),onBottomAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom",t),onLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("left",t),onRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("right",t),onCenterAnchorPointerDown:t=>this.interactionHandler.editAnchor("center",t)}),this.mode==="create"&&t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}else{return t(r,null,t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}}get hostEl(){return i(this)}static get watchers(){return{viewer:[{handleViewerChanged:0}],bounds:[{handleBoundsJsonChange:0}],mode:[{handleModeChange:0}],offset:[{handleScalingConfigurationChange:0}],originatingViewport:[{handleScalingConfigurationChange:0}],centeringBehavior:[{handleScalingConfigurationChange:0}],scale:[{handleScalingConfigurationChange:0},{handleScaleChange:0}]}}};W.style=U();class Z extends _{constructor(t,o,e,r){super(r);this.markupEl=t;this.interactionBegin=o;this.interactionEnd=e;this.anchor="bottom-right";this.handleResizeInteractionMove=t=>{if(this.resizeStartPosition!=null&&this.elementBounds!=null&&this.resizeBounds!=null&&this.resizePoints!=null){const o=B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);const e=V(this.resizeBounds,this.resizeStartPosition,o,this.anchor,t.shiftKey);this.markupEl.points=$(this.resizePoints,this.resizeBounds,e);this.markupEl.bounds=e}};this.handleResizeInteractionEnd=t=>{window.removeEventListener("pointermove",this.handleResizeInteractionMove);window.removeEventListener("pointerup",this.handleResizeInteractionEnd);this.resizeBounds=undefined;const o=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:o})}}editAnchor(t,o){if(this.markupEl.mode==="edit"&&this.elementBounds!=null){this.resizeBounds=this.markupEl.bounds;this.resizePoints=this.markupEl.points;this.anchor=t;this.resizeStartPosition=B(s(o,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);window.addEventListener("pointermove",this.handleResizeInteractionMove);window.addEventListener("pointerup",this.handleResizeInteractionEnd)}}startInteraction(t){this.handleInteractionAttempt(t)}computeBoundingRect(){return a(this.markupEl)}handleInteractionAttempt(t){var o;if(this.markupEl.mode!==""&&this.pointerId==null&&this.elementBounds!=null){this.pointerId=t.pointerId;const e=s(t,this.elementBounds);const r=B(e,this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.updateMinAndMax(r);this.markupEl.points=(o=this.markupEl.points)!==null&&o!==void 0?o:[r];this.interactionBegin.emit();this.acceptInteraction()}}handleInteractionMove(t){if(this.pointerId===t.pointerId&&this.markupEl.points!=null&&this.elementBounds!=null){const o=s(t,this.elementBounds);const e=B(o,this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.updateMinAndMax(e);this.markupEl.points=[...this.markupEl.points,e]}}handleInteractionEnd(t){if(this.pointerId===t.pointerId){if(this.markupEl.mode!==""&&this.markupEl.points!=null&&this.markupEl.points.length>2&&this.elementBounds!=null){const o=s(t,this.elementBounds);const e=B(o,this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.updateMinAndMax(e);this.markupEl.points=[...this.markupEl.points,e];const r=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:r})}else{this.markupEl.points=undefined}this.min=undefined;this.max=undefined;this.pointerId=undefined}}updateMinAndMax(t){this.min=this.min!=null?c.create(Math.min(this.min.x,t.x),Math.min(this.min.y,t.y)):t;this.max=this.max!=null?c.create(Math.max(this.max.x,t.x),Math.max(this.max.y,t.y)):t;this.markupEl.bounds=l.create(this.min.x,this.min.y,this.max.x-this.min.x,this.max.y-this.min.y)}}const K=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-freeform-stroke-color:var(--red-800);--viewer-markup-freeform-stroke-width:4px;--viewer-markup-freeform-line-join:round;--viewer-markup-freeform-line-cap:round;--viewer-markup-freeform-bounds-outline-border-color:var(--blue-400);--viewer-markup-freeform-bounds-outline-border-width:1px;--viewer-markup-freeform-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-freeform-bounds-edge-anchor-border-width:1px;--viewer-markup-freeform-bounds-edge-anchor-background-color:white;--viewer-markup-freeform-bounds-center-anchor-border-color:white;--viewer-markup-freeform-bounds-center-anchor-border-width:1px;--viewer-markup-freeform-bounds-center-anchor-background-color:var( --blue-400 );--viewer-markup-freeform-bounds-anchor-width:9px;--viewer-markup-freeform-bounds-anchor-height:9px;--viewer-markup-freeform-scale:1}.svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.path{pointer-events:auto;cursor:default;stroke:var(--viewer-markup-freeform-stroke-color);stroke-width:calc( var(--viewer-markup-freeform-stroke-width) * var(--viewer-markup-freeform-scale) );stroke-linejoin:var(--viewer-markup-freeform-line-join);stroke-linecap:var(--viewer-markup-freeform-line-cap)}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-freeform-bounds-outline-border-width);border-color:var(--viewer-markup-freeform-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-freeform-bounds-anchor-width);height:var(--viewer-markup-freeform-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-freeform-bounds-center-anchor-border-width);border-color:var(--viewer-markup-freeform-bounds-center-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-freeform-bounds-center-anchor-background-color )}.bounds-edge-anchor{border-width:var(--viewer-markup-freeform-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-freeform-bounds-edge-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-freeform-bounds-edge-anchor-background-color )}`;const Q=class{constructor(t){o(this,t);this.interactionBegin=e(this,"interactionBegin");this.interactionEnd=e(this,"interactionEnd");this.mode="";this.centeringBehavior="none";this.scale=1;this.screenPoints=[];this.interactionHandler=new Z(this.hostEl,this.interactionBegin,this.interactionEnd,{scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior});this.handleWindowPointerDown=t=>{if(I(t)){this.interactionHandler.startInteraction(t)}};this.handleTouchStart=t=>{t.preventDefault()}}componentWillLoad(){this.updateViewport();this.handleViewerChanged(this.viewer);this.handleScaleChange();this.handleScalingConfigurationChange();this.updatePointsFromProps()}componentDidLoad(){const t=new ResizeObserver((()=>this.updateViewport()));t.observe(this.hostEl);if(this.mode==="create"){window.addEventListener("pointerdown",this.handleWindowPointerDown)}}disconnectedCallback(){this.dispose()}async dispose(){var t;(t=this.registeredInteraction)===null||t===void 0?void 0:t.dispose();this.registeredInteraction=undefined;window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async handleViewerChanged(t){var o;(o=this.registeredInteraction)===null||o===void 0?void 0:o.dispose();this.registeredInteraction=undefined;if(t!=null){this.registeredInteraction=await t.registerBasicInteractionHandler(this.interactionHandler)}}recomputePointsFromProps(){this.updatePointsFromProps()}handleScalingConfigurationChange(){this.interactionHandler.updateScalingOptions({scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior})}handleScaleChange(){h((()=>{this.hostEl.style.setProperty("--viewer-markup-freeform-scale",this.scale.toString())}))}handleModeChange(){if(this.mode!=="create"){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}}updateViewport(){var t;const o=a(this.hostEl);this.elementBounds=o;this.screenPoints=(t=this.convertPointsToScreen())!==null&&t!==void 0?t:this.screenPoints}updatePointsFromProps(){var t,o,e;this.points=(t=this.points)!==null&&t!==void 0?t:P(this.pointsJson);this.screenPoints=(o=this.convertPointsToScreen())!==null&&o!==void 0?o:[];this.bounds=(e=this.bounds)!==null&&e!==void 0?e:C(this.boundsJson)}render(){var o,e,i,s;if(this.screenPoints.length>0&&this.elementBounds!=null&&this.elementBounds.width>0&&this.elementBounds.height>0){const h=((e=(o=this.offset)===null||o===void 0?void 0:o.x)!==null&&e!==void 0?e:0)/n();const a=((s=(i=this.offset)===null||i===void 0?void 0:i.y)!==null&&s!==void 0?s:0)/n();return t(r,null,t("svg",{class:"svg",onTouchStart:this.handleTouchStart},t("defs",null,t(F,{id:"freeform-markup-shadow",scale:this.scale})),t("g",{transform:`translate(${h} ${a})`,filter:"url(#freeform-markup-shadow)"},t("path",{class:"path",d:this.screenPoints.reduce(((t,o)=>`${t}L${o.x},${o.y}`),`M${this.screenPoints[0].x},${this.screenPoints[0].y}`),fill:"none"}))),this.mode==="edit"&&this.bounds!=null&&t(N,{bounds:M(this.bounds,this.elementBounds,this.originatingViewport,this.centeringBehavior,this.scale),offset:{x:h,y:a},onTopLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("top-left",t),onTopRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("top-right",t),onTopAnchorPointerDown:t=>this.interactionHandler.editAnchor("top",t),onBottomLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom-left",t),onBottomRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom-right",t),onBottomAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom",t),onLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("left",t),onRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("right",t),onCenterAnchorPointerDown:t=>this.interactionHandler.editAnchor("center",t)}),this.mode==="create"&&t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}else{return t(r,null,t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}}convertPointsToScreen(){var t;const o=this.elementBounds;if(o!=null){return(t=this.points)===null||t===void 0?void 0:t.map((t=>A(t,o,this.originatingViewport,this.centeringBehavior,this.scale)))}}get hostEl(){return i(this)}static get watchers(){return{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}]}}};Q.style=K();export{G as vertex_viewer_markup_arrow,W as vertex_viewer_markup_circle,Q as vertex_viewer_markup_freeform};
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{h as t,r as o,c as e,H as r,a as i}from"./p-CCVkga9Q.js";import{b as n,g as s}from"./p-D0aTA_2m.js";import{w as h}from"./p-BxtKMwBH.js";import{g as a}from"./p-Bg-uS9BH.js";import{p as c,e as d,g as l,a as u}from"./p-2UsvOTHJ.js";import{i as p,a as w,b as v,p as f,c as b,d as m,e as g,f as k,g as x,h as C,j as P}from"./p-DBfvBC5O.js";import{c as y}from"./p-Dw4-tG-V.js";import"./p-CG9AChtV.js";function D(t,o){switch(o){case"top-left":return c.create(t.x,t.y);case"top":return c.create(t.x+t.width/2,t.y);case"top-right":return c.create(t.x+t.width,t.y);case"right":return c.create(t.x+t.width,t.y+t.height/2);case"bottom-right":return c.create(t.x+t.width,t.y+t.height);case"bottom":return c.create(t.x+t.width/2,t.y+t.height);case"bottom-left":return c.create(t.x,t.y+t.height);case"left":return c.create(t.x,t.y+t.height/2);case"center":return l.center(t)}}function A(t,o,e=o,r="none",i=1){const n=Math.min(o.width/e.width,o.height/e.height);const s=n*i;const h=I(e);const a=c.add(c.scale(t,h,h),d.center(e));const l=e.width*s;const u=e.height*s;const p=r==="both"||r==="x-only"?Math.max(0,(o.width-l)/2):0;const w=r==="both"||r==="y-only"?Math.max(0,(o.height-u)/2):0;return c.create(a.x*s+p,a.y*s+w)}function S(t,o,e=o,r=1){const i=Math.min(o.width/e.width,o.height/e.height);const n=i*r;const s=I(e);const h=d.scale(s,s,t);return d.scale(n,n,h)}function M(t,o,e,r="none",i=1){const n=A(t,o,e,r,i);const s=S(t,o,e,i);return l.fromPointAndDimensions(n,s)}function B(t,o,e=o,r="none",i=1,s=c.create(0,0)){const h=Math.min(o.width/e.width,o.height/e.height);const a=h*i;const l=e.width*a;const u=e.height*a;const p=r==="both"||r==="x-only"?Math.max(0,(o.width-l)/2):0;const w=r==="both"||r==="y-only"?Math.max(0,(o.height-u)/2):0;const v=c.subtract(t,c.scale(s,1/n(),1/n()));const f=c.create((v.x-p)/a,(v.y-w)/a);const b=I(e);const m=c.subtract(f,d.center(e));return c.scale(m,1/b,1/b)}function $(t,o,e){return t.map((t=>c.add(c.scale(c.subtract(t,o),e.width/(o.width||1),e.height/(o.height||1)),e)))}function T(t,o,e){const r=l.fromPoints(t,o);if(e){const e=Math.max(r.width,r.height);const i=r.height>r.width;const n=o.x<=t.x;const s=o.y<=t.y;const h=n?i?t.x-e:o.x:t.x;const a=s?i?o.y:t.y-e:t.y;return l.create(h,a,e,e)}else{return r}}function V(t,o,e,r,i){const n=c.subtract(e,o);const{x:s,y:h,width:a,height:d}=t;const u=s+a;const p=h+d;const w=c.create(s,h);const v=c.create(s,p);const f=c.create(u,h);const b=c.create(u,p);switch(r){case"top-left":return T(b,e,!!i);case"top":return T(b,c.create(s,e.y),!!i);case"top-right":return T(v,e,!!i);case"right":return T(v,c.create(e.x,h),!!i);case"bottom-right":return T(w,e,!!i);case"bottom":return T(w,c.create(u,e.y),!!i);case"bottom-left":return T(f,e,!!i);case"left":return T(b,c.create(e.x,h),!!i);case"center":return l.create(t.x+n.x,t.y+n.y,t.width,t.height)}}function L(t){return p(t)||w(t)||v(t)}function R(...t){return t.every((t=>!Number.isNaN(t.x)&&!Number.isNaN(t.y)))}function E(t){const o=t.target;return L(o)&&o.mode!=="edit"}function I(t){return t.height}const j=({id:o,transform:e,rotation:r,name:i,point:n,onPointerDown:s},h)=>t("div",{id:o,class:"bounds-anchor-position",style:{top:`${n.y}px`,left:`${n.x}px`},onTouchStart:t=>t.preventDefault(),onPointerDown:s},t("div",{style:{transform:e}},t("div",{class:"bounds-anchor",style:{transform:`rotateZ(${r!==null&&r!==void 0?r:0}deg)`}},t("slot",{name:i},h))));const F=({id:o,scale:e})=>{const r=e!==null&&e!==void 0?e:1;const i=Math.max(10,10*r);const n=Math.max(10,10*r);const s=Math.max(120,110*r+i);const h=Math.max(120,110*r+n);return t("filter",{id:o,filterUnits:"userSpaceOnUse",x:`${-i}%`,y:`${-n}%`,width:`${s}%`,height:`${h}%`},t("feGaussianBlur",{in:"SourceAlpha",stdDeviation:"2"}),t("feOffset",{dx:"0",dy:"1",result:"offsetblur"}),t("feFlood",{"flood-color":"#000000","flood-opacity":"0.25"}),t("feComposite",{in2:"offsetblur",operator:"in"}),t("feMerge",null,t("feMergeNode",null),t("feMergeNode",{in:"SourceGraphic"})))};class O{constructor(t){this.handlePointerDown=t=>{this.handleInteractionAttempt(t)};this.handlePointerMove=t=>{this.handleInteractionMove(t)};this.handlePointerUp=t=>{window.removeEventListener("pointermove",this.handlePointerMove);window.removeEventListener("pointerup",this.handlePointerUp);this.handleInteractionEnd(t)};this.resizeObserver=new ResizeObserver((([t])=>{this.elementBounds=this.computeBoundingRect()}));this.scalingOptions=t!==null&&t!==void 0?t:{}}initialize(t){this.element=t;this.elementBounds=this.computeBoundingRect();this.resizeObserver.observe(this.element);this.element.addEventListener("pointerdown",this.handlePointerDown)}dispose(){var t;this.resizeObserver.disconnect();(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointerdown",this.handlePointerDown);this.element=undefined}updateScalingOptions(t){this.scalingOptions={...this.scalingOptions,...t}}getScalingOptions(){return this.scalingOptions}acceptInteraction(){window.addEventListener("pointermove",this.handlePointerMove);window.addEventListener("pointerup",this.handlePointerUp)}}class _ extends O{constructor(t,o,e,r){super(r);this.markupEl=t;this.interactionBegin=o;this.interactionEnd=e;this.anchor="end"}editAnchor(t,o){if(this.markupEl.mode==="edit"){this.anchor=t;this.startInteraction(o)}}startInteraction(t){this.handleInteractionAttempt(t)}computeBoundingRect(){return a(this.markupEl)}handleInteractionAttempt(t){var o;if(this.markupEl.mode!==""&&this.pointerId==null&&this.elementBounds!=null){this.pointerId=t.pointerId;this.markupEl.start=(o=this.markupEl.start)!==null&&o!==void 0?o:B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.interactionBegin.emit();this.acceptInteraction()}}handleInteractionMove(t){if(this.elementBounds!=null&&this.pointerId===t.pointerId){const o=B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);if(this.anchor==="start"){this.markupEl.start=o}else if(this.anchor==="end"){this.markupEl.end=o}else if(this.markupEl.start!=null&&this.markupEl.end!=null){const t=c.create((this.markupEl.start.x+this.markupEl.end.x)/2,(this.markupEl.start.y+this.markupEl.end.y)/2);const e=t.x-o.x;const r=t.y-o.y;this.markupEl.start=c.create(this.markupEl.start.x-e,this.markupEl.start.y-r);this.markupEl.end=c.create(this.markupEl.end.x-e,this.markupEl.end.y-r)}}}handleInteractionEnd(t){if(this.pointerId===t.pointerId){const t=this.markupEl.start!=null&&this.elementBounds!=null?A(this.markupEl.start,this.elementBounds):undefined;const o=this.markupEl.end!=null&&this.elementBounds!=null?A(this.markupEl.end,this.elementBounds):undefined;if(this.markupEl.mode!==""&&t!=null&&o!=null&&c.distance(t,o)>=2){const t=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:t})}else{this.markupEl.start=undefined;this.markupEl.end=undefined}this.pointerId=undefined}}}const z=({start:o,end:e,offset:r,onStartAnchorPointerDown:i,onCenterAnchorPointerDown:n,onEndAnchorPointerDown:s})=>{const h=u.normalize(u.toDegrees(u.fromPoints(o,e))-270);const a=c.create((o.x+e.x)/2,(o.y+e.y)/2);const d=r!=null?`translate(${r.x}px, ${r.y}px)`:undefined;return t("div",{class:"bounds-container"},t(j,{transform:d,id:"bounding-box-1d-start-anchor",name:"start-anchor",rotation:h,point:o,onPointerDown:i},t("div",{class:y("bounds-default-anchor","bounds-cap-anchor")})),t(j,{transform:d,id:"bounding-box-1d-end-anchor",name:"end-anchor",rotation:h,point:e,onPointerDown:s},t("div",{class:y("bounds-default-anchor","bounds-cap-anchor")})),t(j,{transform:d,id:"bounding-box-1d-center-anchor",name:"center-anchor",point:a,onPointerDown:n},t("div",{class:y("bounds-default-anchor","bounds-center-anchor")})))};const J=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-arrow-line-stroke-color:var(--red-800);--viewer-markup-arrow-line-stroke-width:4px;--viewer-markup-arrow-head-stroke-color:var(--red-800);--viewer-markup-arrow-head-stroke-width:4px;--viewer-markup-arrow-head-fill-color:var(--red-800);--viewer-markup-arrow-head-fill-opacity:1;--viewer-markup-arrow-bounds-cap-border-color:var(--blue-400);--viewer-markup-arrow-bounds-cap-border-width:1px;--viewer-markup-arrow-bounds-cap-background-color:white;--viewer-markup-arrow-bounds-center-anchor-border-color:white;--viewer-markup-arrow-bounds-center-anchor-border-width:1px;--viewer-markup-arrow-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-arrow-bounds-outline-width:1px;--viewer-markup-arrow-bounds-outline-color:var(--blue-400);--viewer-markup-arrow-bounds-anchor-width:9px;--viewer-markup-arrow-bounds-anchor-height:9px;--viewer-markup-arrow-scale:1}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.line{pointer-events:auto;stroke:var(--viewer-markup-arrow-line-stroke-color);stroke-width:calc( var(--viewer-markup-arrow-line-stroke-width) * var(--viewer-markup-arrow-scale) );cursor:default}.head{pointer-events:auto;stroke:var(--viewer-markup-arrow-head-stroke-color);stroke-width:calc( var(--viewer-markup-arrow-head-stroke-width) * var(--viewer-markup-arrow-scale) );fill:var(--viewer-markup-arrow-head-fill-color);fill-opacity:var(--viewer-markup-arrow-head-fill-opacity);cursor:default}.bounds-line{pointer-events:auto;stroke:var(--viewer-markup-arrow-bounds-outline-color);stroke-width:var(--viewer-markup-arrow-bounds-outline-width)}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-arrow-bounds-anchor-width);height:var(--viewer-markup-arrow-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-arrow-bounds-center-anchor-border-width);border-color:var(--viewer-markup-arrow-bounds-center-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-arrow-bounds-center-anchor-background-color )}.bounds-cap-anchor{border-width:var(--viewer-markup-arrow-bounds-cap-border-width);border-color:var(--viewer-markup-arrow-bounds-cap-border-color);border-style:solid;background-color:var(--viewer-markup-arrow-bounds-cap-background-color)}`;const G=class{constructor(t){o(this,t);this.interactionBegin=e(this,"interactionBegin");this.interactionEnd=e(this,"interactionEnd");this.centeringBehavior="none";this.scale=1;this.startLineAnchorStyle="none";this.endLineAnchorStyle="arrow-triangle";this.mode="";this.interactionHandler=new _(this.hostEl,this.interactionBegin,this.interactionEnd,{scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior});this.handleWindowPointerDown=t=>{if(E(t)){this.interactionHandler.startInteraction(t)}};this.handleTouchStart=t=>{t.preventDefault()}}componentWillLoad(){this.updateViewport();this.handleViewerChanged(this.viewer);this.handleScaleChange();this.handleScalingConfigurationChange();this.updatePointsFromProps()}componentDidLoad(){this.updatePointsFromProps();const t=new ResizeObserver((()=>this.updateViewport()));t.observe(this.hostEl);if(this.mode==="create"){window.addEventListener("pointerdown",this.handleWindowPointerDown)}}disconnectedCallback(){this.dispose()}async dispose(){var t;(t=this.registeredInteraction)===null||t===void 0?void 0:t.dispose();this.registeredInteraction=undefined;window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async handleViewerChanged(t){var o;(o=this.registeredInteraction)===null||o===void 0?void 0:o.dispose();this.registeredInteraction=undefined;if(t!=null){this.registeredInteraction=await t.registerBasicInteractionHandler(this.interactionHandler)}}handleStartJsonChange(){this.updatePointsFromProps()}handleEndJsonChange(){this.updatePointsFromProps()}handleModeChange(){if(this.mode!=="create"){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}}handleScalingConfigurationChange(){this.interactionHandler.updateScalingOptions({scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior})}handleScaleChange(){h((()=>{var t,o;this.hostEl.style.setProperty("--viewer-markup-arrow-scale",(o=(t=this.scale)===null||t===void 0?void 0:t.toString())!==null&&o!==void 0?o:"1")}))}updateViewport(){const t=a(this.hostEl);this.elementBounds=t}updatePointsFromProps(){this.start=this.start||f(this.startJson);this.end=this.end||f(this.endJson)}renderLineAnchorStyle(o,e){if(o==="arrow-triangle"){return t("polygon",{id:"line-anchor-arrow-triangle",class:"head",points:b(e,this.scale)})}else if(o==="arrow-line"){return t("path",{id:"line-anchor-arrow-line",class:"head",d:m(e,this.scale)})}else if(o==="hash"){const o=g(e,this.scale);return t("line",{id:"line-anchor-hash",class:"head",...o})}else if(o==="dot"){const o=k(e,this.scale);return t("circle",{id:"line-anchor-circle",class:"head",...o})}else{return t("div",null)}}render(){var o,e,i,s;if(this.start!=null&&this.end!=null&&this.elementBounds!=null&&this.elementBounds.width>0&&this.elementBounds.height>0){const h=this.elementBounds;const a=((e=(o=this.offset)===null||o===void 0?void 0:o.x)!==null&&e!==void 0?e:0)/n();const c=((s=(i=this.offset)===null||i===void 0?void 0:i.y)!==null&&s!==void 0?s:0)/n();const d=A(this.start,h,this.originatingViewport,this.centeringBehavior,this.scale);const l=A(this.end,h,this.originatingViewport,this.centeringBehavior,this.scale);if(R(d,l)){const o=x(l,d);const e=x(d,l);return t(r,null,t("svg",{class:"svg",onTouchStart:this.handleTouchStart},t("defs",null,t(F,{id:"arrow-shadow",scale:this.scale})),t("g",{transform:`translate(${a} ${c})`,filter:"url(#arrow-shadow)"},this.renderLineAnchorStyle(this.startLineAnchorStyle,o),t("line",{id:"arrow-line",class:"line",x1:e.tip.x,y1:e.tip.y,x2:o.tip.x,y2:o.tip.y}),this.renderLineAnchorStyle(this.endLineAnchorStyle,e)),this.mode==="edit"&&t("g",{transform:`translate(${a} ${c})`},t("line",{id:"bounding-box-1d-line",class:"bounds-line",x1:d.x,y1:d.y,x2:l.x,y2:l.y}))),this.mode==="edit"&&t(z,{start:d,end:l,offset:{x:a,y:c},onStartAnchorPointerDown:t=>this.interactionHandler.editAnchor("start",t),onCenterAnchorPointerDown:t=>this.interactionHandler.editAnchor("center",t),onEndAnchorPointerDown:t=>this.interactionHandler.editAnchor("end",t)}),this.mode==="create"&&t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}else{return t(r,null)}}else{return t(r,null,t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}}get hostEl(){return i(this)}static get watchers(){return{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}]}}};G.style=J();class H extends O{constructor(t,o,e,r){super(r);this.markupEl=t;this.interactionBegin=o;this.interactionEnd=e;this.anchor="bottom-right"}editAnchor(t,o){if(this.markupEl.mode==="edit"){this.anchor=t;this.resizeBounds=this.markupEl.bounds;this.startInteraction(o)}}startInteraction(t){this.handleInteractionAttempt(t)}computeBoundingRect(){return a(this.markupEl)}handleInteractionAttempt(t){var o;if(this.markupEl.mode!==""&&this.pointerId==null&&this.elementBounds!=null){const e=B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.pointerId=t.pointerId;this.startPosition=e;this.markupEl.bounds=(o=this.markupEl.bounds)!==null&&o!==void 0?o:l.create(e.x,e.y,0,0);this.resizeBounds=this.markupEl.bounds;this.interactionBegin.emit();this.acceptInteraction()}}handleInteractionMove(t){var o;if(this.markupEl.bounds!=null&&this.startPosition!=null&&this.elementBounds!=null&&this.pointerId===t.pointerId){const e=B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.markupEl.bounds=V((o=this.resizeBounds)!==null&&o!==void 0?o:this.markupEl.bounds,this.startPosition,e,this.anchor,t.shiftKey)}}handleInteractionEnd(t){var o,e;if(this.pointerId===t.pointerId){if(this.markupEl.mode!==""&&this.markupEl.bounds!=null&&((o=this.markupEl.bounds)===null||o===void 0?void 0:o.width)>0&&((e=this.markupEl.bounds)===null||e===void 0?void 0:e.height)>0){this.anchor="bottom-right";const t=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:t})}else{this.markupEl.bounds=undefined}this.pointerId=undefined}}}const N=({bounds:o,offset:e,onTopLeftAnchorPointerDown:r,onLeftAnchorPointerDown:i,onTopRightAnchorPointerDown:n,onRightAnchorPointerDown:s,onBottomLeftAnchorPointerDown:h,onBottomAnchorPointerDown:a,onBottomRightAnchorPointerDown:c,onTopAnchorPointerDown:d,onCenterAnchorPointerDown:u})=>{const p=l.pad(o,6);const w=l.center(p);const v=e!=null?`translate(${e.x}px, ${e.y}px)`:undefined;return t("div",{class:"bounds-container"},t("div",{class:"bounds-outline",style:{top:`${p.y}px`,left:`${p.x}px`,width:`${p.width}px`,height:`${p.height}px`,transform:v}}),t(j,{transform:v,id:"bounding-box-2d-top-left-anchor",name:"top-left-anchor",point:D(p,"top-left"),onPointerDown:r},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-left-anchor",name:"left-anchor",point:D(p,"left"),onPointerDown:i},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-top-right-anchor",name:"top-right-anchor",point:D(p,"top-right"),onPointerDown:n},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-right-anchor",name:"right-anchor",point:D(p,"right"),onPointerDown:s},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-bottom-left-anchor",name:"bottom-left-anchor",point:D(p,"bottom-left"),onPointerDown:h},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-bottom-anchor",name:"bottom-anchor",point:D(p,"bottom"),onPointerDown:a},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-bottom-right-anchor",name:"bottom-right-anchor",point:D(p,"bottom-right"),onPointerDown:c},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-top-anchor",name:"top-anchor",point:D(p,"top"),onPointerDown:d},t("div",{class:y("bounds-default-anchor","bounds-edge-anchor")})),t(j,{transform:v,id:"bounding-box-2d-center-anchor",name:"center-anchor",point:w,onPointerDown:u},t("div",{class:y("bounds-default-anchor","bounds-center-anchor")})))};const U=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-circle-ellipse-stroke-color:var(--red-700);--viewer-markup-circle-ellipse-stroke-width:4px;--viewer-markup-circle-ellipse-fill-color:none;--viewer-markup-circle-ellipse-fill-opacity:0;--viewer-markup-circle-bounds-outline-border-color:var(--blue-400);--viewer-markup-circle-bounds-outline-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-circle-bounds-edge-anchor-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-background-color:white;--viewer-markup-circle-bounds-center-anchor-border-color:white;--viewer-markup-circle-bounds-center-anchor-border-width:1px;--viewer-markup-circle-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-circle-bounds-anchor-width:9px;--viewer-markup-circle-bounds-anchor-height:9px;--viewer-markup-circle-scale:1}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.ellipse{pointer-events:auto;stroke:var(--viewer-markup-circle-ellipse-stroke-color);stroke-width:calc( var(--viewer-markup-circle-ellipse-stroke-width) * var(--viewer-markup-circle-scale) );fill:var(--viewer-markup-circle-ellipse-fill-color);fill-opacity:var(--viewer-markup-circle-ellipse-fill-opacity);cursor:default}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-circle-bounds-outline-border-width);border-color:var(--viewer-markup-circle-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-circle-bounds-anchor-width);height:var(--viewer-markup-circle-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-circle-bounds-center-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-center-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-circle-bounds-center-anchor-background-color )}.bounds-edge-anchor{border-width:var(--viewer-markup-circle-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-edge-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-circle-bounds-edge-anchor-background-color )}`;const W=class{constructor(t){o(this,t);this.interactionBegin=e(this,"interactionBegin");this.interactionEnd=e(this,"interactionEnd");this.mode="";this.centeringBehavior="none";this.scale=1;this.interactionHandler=new H(this.hostEl,this.interactionBegin,this.interactionEnd,{scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior});this.handleWindowPointerDown=t=>{if(E(t)){this.interactionHandler.startInteraction(t)}};this.handleTouchStart=t=>{t.preventDefault()}}componentWillLoad(){this.updateViewport();this.handleViewerChanged(this.viewer);this.handleScaleChange();this.handleScalingConfigurationChange();this.updateBoundsFromProps()}componentDidLoad(){this.updateBoundsFromProps();const t=new ResizeObserver((()=>this.updateViewport()));t.observe(this.hostEl);if(this.mode==="create"){window.addEventListener("pointerdown",this.handleWindowPointerDown)}}disconnectedCallback(){this.dispose()}async dispose(){var t;(t=this.registeredHandler)===null||t===void 0?void 0:t.dispose();this.registeredHandler=undefined;window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async handleViewerChanged(t){var o;(o=this.registeredHandler)===null||o===void 0?void 0:o.dispose();this.registeredHandler=undefined;if(t!=null){this.registeredHandler=await t.registerBasicInteractionHandler(this.interactionHandler)}}handleBoundsJsonChange(){this.updateBoundsFromProps()}handleModeChange(){if(this.mode!=="create"){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}}handleScalingConfigurationChange(){this.interactionHandler.updateScalingOptions({scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior})}handleScaleChange(){h((()=>{this.hostEl.style.setProperty("--viewer-markup-circle-scale",this.scale.toString())}))}updateViewport(){const t=a(this.hostEl);this.elementBounds=t}updateBoundsFromProps(){var t;this.bounds=(t=this.bounds)!==null&&t!==void 0?t:C(this.boundsJson)}render(){var o,e,i,s;if(this.bounds!=null&&this.elementBounds!=null&&this.elementBounds.width>0&&this.elementBounds.height>0){const h=M(this.bounds,this.elementBounds,this.originatingViewport,this.centeringBehavior,this.scale);const a=l.center(h);const c=((e=(o=this.offset)===null||o===void 0?void 0:o.x)!==null&&e!==void 0?e:0)/n();const d=((s=(i=this.offset)===null||i===void 0?void 0:i.y)!==null&&s!==void 0?s:0)/n();return t(r,null,t("svg",{class:"svg",onTouchStart:this.handleTouchStart},t("defs",null,t(F,{id:"circle-shadow",scale:this.scale})),t("g",{transform:`translate(${c} ${d})`,filter:"url(#circle-shadow)"},t("ellipse",{class:"ellipse",cx:a.x,cy:a.y,rx:h.width/2,ry:h.height/2,stroke:"#000ff0","stroke-width":4,fill:"none"}))),this.mode==="edit"&&t(N,{bounds:h,offset:{x:c,y:d},onTopLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("top-left",t),onTopRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("top-right",t),onTopAnchorPointerDown:t=>this.interactionHandler.editAnchor("top",t),onBottomLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom-left",t),onBottomRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom-right",t),onBottomAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom",t),onLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("left",t),onRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("right",t),onCenterAnchorPointerDown:t=>this.interactionHandler.editAnchor("center",t)}),this.mode==="create"&&t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}else{return t(r,null,t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}}get hostEl(){return i(this)}static get watchers(){return{viewer:[{handleViewerChanged:0}],bounds:[{handleBoundsJsonChange:0}],mode:[{handleModeChange:0}],offset:[{handleScalingConfigurationChange:0}],originatingViewport:[{handleScalingConfigurationChange:0}],centeringBehavior:[{handleScalingConfigurationChange:0}],scale:[{handleScalingConfigurationChange:0},{handleScaleChange:0}]}}};W.style=U();class K extends O{constructor(t,o,e,r){super(r);this.markupEl=t;this.interactionBegin=o;this.interactionEnd=e;this.anchor="bottom-right";this.handleResizeInteractionMove=t=>{if(this.resizeStartPosition!=null&&this.elementBounds!=null&&this.resizeBounds!=null&&this.resizePoints!=null){const o=B(s(t,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);const e=V(this.resizeBounds,this.resizeStartPosition,o,this.anchor,t.shiftKey);this.markupEl.points=$(this.resizePoints,this.resizeBounds,e);this.markupEl.bounds=e}};this.handleResizeInteractionEnd=t=>{window.removeEventListener("pointermove",this.handleResizeInteractionMove);window.removeEventListener("pointerup",this.handleResizeInteractionEnd);this.resizeBounds=undefined;const o=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:o})}}editAnchor(t,o){if(this.markupEl.mode==="edit"&&this.elementBounds!=null){this.resizeBounds=this.markupEl.bounds;this.resizePoints=this.markupEl.points;this.anchor=t;this.resizeStartPosition=B(s(o,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);window.addEventListener("pointermove",this.handleResizeInteractionMove);window.addEventListener("pointerup",this.handleResizeInteractionEnd)}}startInteraction(t){this.handleInteractionAttempt(t)}computeBoundingRect(){return a(this.markupEl)}handleInteractionAttempt(t){var o;if(this.markupEl.mode!==""&&this.pointerId==null&&this.elementBounds!=null){this.pointerId=t.pointerId;const e=s(t,this.elementBounds);const r=B(e,this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.updateMinAndMax(r);this.markupEl.points=(o=this.markupEl.points)!==null&&o!==void 0?o:[r];this.interactionBegin.emit();this.acceptInteraction()}}handleInteractionMove(t){if(this.pointerId===t.pointerId&&this.markupEl.points!=null&&this.elementBounds!=null){const o=s(t,this.elementBounds);const e=B(o,this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.updateMinAndMax(e);this.markupEl.points=[...this.markupEl.points,e]}}handleInteractionEnd(t){if(this.pointerId===t.pointerId){if(this.markupEl.mode!==""&&this.markupEl.points!=null&&this.markupEl.points.length>2&&this.elementBounds!=null){const o=s(t,this.elementBounds);const e=B(o,this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.updateMinAndMax(e);this.markupEl.points=[...this.markupEl.points,e];const r=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:r})}else{this.markupEl.points=undefined}this.min=undefined;this.max=undefined;this.pointerId=undefined}}updateMinAndMax(t){this.min=this.min!=null?c.create(Math.min(this.min.x,t.x),Math.min(this.min.y,t.y)):t;this.max=this.max!=null?c.create(Math.max(this.max.x,t.x),Math.max(this.max.y,t.y)):t;this.markupEl.bounds=l.create(this.min.x,this.min.y,this.max.x-this.min.x,this.max.y-this.min.y)}}const Q=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-freeform-stroke-color:var(--red-800);--viewer-markup-freeform-stroke-width:4px;--viewer-markup-freeform-line-join:round;--viewer-markup-freeform-line-cap:round;--viewer-markup-freeform-bounds-outline-border-color:var(--blue-400);--viewer-markup-freeform-bounds-outline-border-width:1px;--viewer-markup-freeform-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-freeform-bounds-edge-anchor-border-width:1px;--viewer-markup-freeform-bounds-edge-anchor-background-color:white;--viewer-markup-freeform-bounds-center-anchor-border-color:white;--viewer-markup-freeform-bounds-center-anchor-border-width:1px;--viewer-markup-freeform-bounds-center-anchor-background-color:var( --blue-400 );--viewer-markup-freeform-bounds-anchor-width:9px;--viewer-markup-freeform-bounds-anchor-height:9px;--viewer-markup-freeform-scale:1}.svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.path{pointer-events:auto;cursor:default;stroke:var(--viewer-markup-freeform-stroke-color);stroke-width:calc( var(--viewer-markup-freeform-stroke-width) * var(--viewer-markup-freeform-scale) );stroke-linejoin:var(--viewer-markup-freeform-line-join);stroke-linecap:var(--viewer-markup-freeform-line-cap)}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-freeform-bounds-outline-border-width);border-color:var(--viewer-markup-freeform-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-freeform-bounds-anchor-width);height:var(--viewer-markup-freeform-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-freeform-bounds-center-anchor-border-width);border-color:var(--viewer-markup-freeform-bounds-center-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-freeform-bounds-center-anchor-background-color )}.bounds-edge-anchor{border-width:var(--viewer-markup-freeform-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-freeform-bounds-edge-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-freeform-bounds-edge-anchor-background-color )}`;const Z=class{constructor(t){o(this,t);this.interactionBegin=e(this,"interactionBegin");this.interactionEnd=e(this,"interactionEnd");this.mode="";this.centeringBehavior="none";this.scale=1;this.screenPoints=[];this.interactionHandler=new K(this.hostEl,this.interactionBegin,this.interactionEnd,{scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior});this.handleWindowPointerDown=t=>{if(E(t)){this.interactionHandler.startInteraction(t)}};this.handleTouchStart=t=>{t.preventDefault()}}componentWillLoad(){this.updateViewport();this.handleViewerChanged(this.viewer);this.handleScaleChange();this.handleScalingConfigurationChange();this.updatePointsFromProps()}componentDidLoad(){const t=new ResizeObserver((()=>this.updateViewport()));t.observe(this.hostEl);if(this.mode==="create"){window.addEventListener("pointerdown",this.handleWindowPointerDown)}}disconnectedCallback(){this.dispose()}async dispose(){var t;(t=this.registeredInteraction)===null||t===void 0?void 0:t.dispose();this.registeredInteraction=undefined;window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async handleViewerChanged(t){var o;(o=this.registeredInteraction)===null||o===void 0?void 0:o.dispose();this.registeredInteraction=undefined;if(t!=null){this.registeredInteraction=await t.registerBasicInteractionHandler(this.interactionHandler)}}recomputePointsFromProps(){this.updatePointsFromProps()}handleScalingConfigurationChange(){this.interactionHandler.updateScalingOptions({scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior})}handleScaleChange(){h((()=>{this.hostEl.style.setProperty("--viewer-markup-freeform-scale",this.scale.toString())}))}handleModeChange(){if(this.mode!=="create"){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}}updateViewport(){var t;const o=a(this.hostEl);this.elementBounds=o;this.screenPoints=(t=this.convertPointsToScreen())!==null&&t!==void 0?t:this.screenPoints}updatePointsFromProps(){var t,o,e;this.points=(t=this.points)!==null&&t!==void 0?t:P(this.pointsJson);this.screenPoints=(o=this.convertPointsToScreen())!==null&&o!==void 0?o:[];this.bounds=(e=this.bounds)!==null&&e!==void 0?e:C(this.boundsJson)}render(){var o,e,i,s;if(this.screenPoints.length>0&&this.elementBounds!=null&&this.elementBounds.width>0&&this.elementBounds.height>0){const h=((e=(o=this.offset)===null||o===void 0?void 0:o.x)!==null&&e!==void 0?e:0)/n();const a=((s=(i=this.offset)===null||i===void 0?void 0:i.y)!==null&&s!==void 0?s:0)/n();return t(r,null,t("svg",{class:"svg",onTouchStart:this.handleTouchStart},t("defs",null,t(F,{id:"freeform-markup-shadow",scale:this.scale})),t("g",{transform:`translate(${h} ${a})`,filter:"url(#freeform-markup-shadow)"},t("path",{class:"path",d:this.screenPoints.reduce(((t,o)=>`${t}L${o.x},${o.y}`),`M${this.screenPoints[0].x},${this.screenPoints[0].y}`),fill:"none"}))),this.mode==="edit"&&this.bounds!=null&&t(N,{bounds:M(this.bounds,this.elementBounds,this.originatingViewport,this.centeringBehavior,this.scale),offset:{x:h,y:a},onTopLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("top-left",t),onTopRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("top-right",t),onTopAnchorPointerDown:t=>this.interactionHandler.editAnchor("top",t),onBottomLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom-left",t),onBottomRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom-right",t),onBottomAnchorPointerDown:t=>this.interactionHandler.editAnchor("bottom",t),onLeftAnchorPointerDown:t=>this.interactionHandler.editAnchor("left",t),onRightAnchorPointerDown:t=>this.interactionHandler.editAnchor("right",t),onCenterAnchorPointerDown:t=>this.interactionHandler.editAnchor("center",t)}),this.mode==="create"&&t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}else{return t(r,null,t("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}}convertPointsToScreen(){var t;const o=this.elementBounds;if(o!=null){return(t=this.points)===null||t===void 0?void 0:t.map((t=>A(t,o,this.originatingViewport,this.centeringBehavior,this.scale)))}}get hostEl(){return i(this)}static get watchers(){return{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}]}}};Z.style=Q();export{G as vertex_viewer_markup_arrow,W as vertex_viewer_markup_circle,Z as vertex_viewer_markup_freeform};
|
|
5
|
+
//# sourceMappingURL=p-83683307.entry.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{r as t,h as i,H as e}from"./p-CCVkga9Q.js";import{s}from"./p-BU0JYf18.js";import{p as n}from"./p-
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{r as t,h as i,H as e}from"./p-CCVkga9Q.js";import{s}from"./p-BU0JYf18.js";import{p as n}from"./p-Bw_ryWU0.js";import{a as o,M as r}from"./p-BEOO-Ypv.js";import"./p-5kcpg4MZ.js";import"./p-Br21pGVj.js";import"./p-BNuMPeJ8.js";import"./p-Cc3XhAoA.js";import{M as a}from"./p-BY3lpCm6.js";import{M as h}from"./p-DyL2wWm6.js";import{p as l}from"./p-2UsvOTHJ.js";import{a as d}from"./p-DxMDDbmh.js";import{g as p}from"./p-D0aTA_2m.js";import{E as m}from"./p-CFus3r7d.js";import{E as u}from"./p-BAhfr1Nx.js";import"./p-ux1ckSDN.js";import"./p-CG9AChtV.js";import"./p-CDM7zNn0.js";import"./p-CPk-nchx.js";import"./p-CioaIHsi.js";class c{get elementRect(){return this.rectObserver.rect}constructor(t,i){this.rectObserver=new m;this.handlePointerMove=async t=>{if(await this.isMeasurableEntityUnderPointer(t)){this.clearCursor();this.addCursor(d)}else{this.clearCursor()}};this.handlePointerDown=t=>{this.ifNoInteraction(t,(async()=>{if(await this.isMeasurableEntityUnderPointer(t)){this.measureEntityUnderPointer(t)}else{await this.controller.clearEntities()}}))};this.controller=t;this.measurableEntityTypes=i}initialize(t,i){this.element=t;this.api=i;this.rectObserver.observe(t);t.addEventListener("pointermove",this.handlePointerMove);t.addEventListener("pointerdown",this.handlePointerDown)}dispose(){var t,i,e;this.rectObserver.disconnect();(t=this.measurementInteraction)===null||t===void 0?void 0:t.dispose();this.clearCursor();(i=this.element)===null||i===void 0?void 0:i.removeEventListener("pointermove",this.handlePointerMove);(e=this.element)===null||e===void 0?void 0:e.removeEventListener("pointerdown",this.handlePointerDown);this.element=undefined;this.api=undefined}addCursor(t){this.cursor=this.ifInitialized((({api:i})=>i.addCursor(t)))}clearCursor(){var t;(t=this.cursor)===null||t===void 0?void 0:t.dispose();this.cursor=undefined}async isMeasurableEntityUnderPointer(t){var i;const e=p(t,this.elementRect);const s=await((i=this.api)===null||i===void 0?void 0:i.getEntityTypeAtPoint(e));return s!=null&&this.measurableEntityTypes.includes(s)}measureEntityUnderPointer(t){this.ifInitialized((async({api:i})=>{const e=p(t,this.elementRect);const[s]=await i.hitItems(e);const n=s!=null?o.fromHit(s):undefined;if(n!=null){await this.controller.addEntity(n)}else{await this.controller.clearEntities()}}))}ifInitialized(t){if(this.element!=null&&this.api!=null){return t({element:this.element,api:this.api})}else{throw new Error("Measurement interaction handler not initialized.")}}ifNoInteraction(t,i){const e=l.create(t.clientX,t.clientY);let s=false;const n=t=>{const i=l.create(t.clientX,t.clientY);const n=l.distance(e,i);s=n>2};const o=()=>{window.removeEventListener("pointermove",n);window.removeEventListener("pointerup",o);if(!s){i()}};window.addEventListener("pointermove",n);window.addEventListener("pointerup",o)}}const v=()=>`:host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}`;const f=class{constructor(i){t(this,i);this.measurementModel=new a;this.measurementOverlays=new h;this.measurableEntityTypes=[u.PRECISE_SURFACE,u.IMPRECISE_SURFACE];this.configEnv="platprod"}connectedCallback(){this.setupInteractionHandler()}componentWillLoad(){this.setupController();this.setupInteractionHandler()}disconnectedCallback(){this.clearInteractionHandler()}handleMeasurableEntityTypesChanged(){this.setupInteractionHandler()}handleMeasurementControllerChanged(){this.setupInteractionHandler()}handleMeasurementModelChanged(){this.setupController()}handleViewerChanged(){this.setupInteractionHandler()}render(){return i(e,{key:"191b29e7710d24dc5462b10bf5fc947de5facf6c"},i("vertex-viewer-measurement-overlays",{key:"9da7740e1f54c300f6a76a7dc516054e40bbed05",viewer:this.viewer,measurementOverlays:this.measurementOverlays}))}setupController(){var t;const i=n(this.configEnv,this.config);const e=new s.SceneViewAPIClient(i.network.sceneViewHost);this.measurementController=new r(this.measurementModel,e,(()=>{var t;return(t=this.viewer)===null||t===void 0?void 0:t.token}),(t=this.viewer)===null||t===void 0?void 0:t.deviceId)}clearInteractionHandler(){var t;(t=this.registeredInteractionHandler)===null||t===void 0?void 0:t.then((t=>t.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var t;this.clearInteractionHandler();if(this.measurementController!=null){this.registeredInteractionHandler=(t=this.viewer)===null||t===void 0?void 0:t.registerInteractionHandler(new c(this.measurementController,this.measurableEntityTypes))}}static get watchers(){return{measurableEntityTypes:[{handleMeasurableEntityTypesChanged:0}],measurementController:[{handleMeasurementControllerChanged:0}],measurementModel:[{handleMeasurementModelChanged:1}],viewer:[{handleViewerChanged:0}]}}};f.style=v();export{f as vertex_viewer_measurement_precise};
|
|
5
|
+
//# sourceMappingURL=p-93311f46.entry.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* Copyright (c) 2026 Vertex Software LLC. All rights reserved.
|
|
3
3
|
*/
|
|
4
|
-
import{m as t,a as s,g as i}from"./p-
|
|
5
|
-
//# sourceMappingURL=p-
|
|
4
|
+
import{m as t,a as s,g as i}from"./p-Br21pGVj.js";import{s as e,w as n}from"./p-BNuMPeJ8.js";import{r,c as o}from"./p-CioaIHsi.js";import{v as h}from"./p-5kcpg4MZ.js";import{m as a}from"./p-CDM7zNn0.js";import{o as c}from"./p-Cc3XhAoA.js";class m{constructor(t,s,i,e){this.model=t;this.client=s;this.jwtProvider=i;this.deviceId=e;this.outcome=Promise.resolve(undefined);this.debugLogs=false}addEntity(s){if(this.debugLogs){const i=t.ModelEntity.deserializeBinary(s.modelEntity);this.log(`Adding ModelEntity. [entityId={${i.getEntityId()}}, sceneItemId={${i.getSceneItemId()}}]`)}return this.performMeasurement((()=>this.model.addEntity(s)))}clearEntities(){this.log("Clearing all ModelEntities.");return this.performMeasurement((()=>{this.model.clearEntities();this.model.clearOutcome();return true}))}removeEntity(s){if(this.debugLogs){const i=t.ModelEntity.deserializeBinary(s.modelEntity);this.log(`Removing ModelEntity. [entityId={${i.getEntityId()}}, sceneItemId={${i.getSceneItemId()}}]`)}return this.performMeasurement((()=>this.model.removeEntity(s)))}setEntities(s){if(this.debugLogs){const i=Array.from(s).map((s=>t.ModelEntity.deserializeBinary(s.modelEntity)));this.log(`Setting ${i.length} ModelEntities. [entityIds=[${i.map((t=>t.getEntityId())).join(", ")}], sceneItemIds=[${i.map((t=>t.getSceneItemId())).join(", ")}]]`)}return this.performMeasurement((()=>this.model.setEntities(s)))}setDebugLogs(t){this.debugLogs=t}performMeasurement(t){const s=this.model.getEntities();const i=t();const e=this.model.getEntities();if(i){this.measureAndUpdateModel(e);this.highlightEntities(s,e)}return this.outcome}measureAndUpdateModel(t){if(t.length>0){this.outcome=this.measureEntities(t).then((t=>{this.model.setOutcome(t);return this.model.getOutcome()}))}else{this.outcome=Promise.resolve(undefined)}}async measureEntities(t){if(t.length>0){const i=await r((async s=>{const i=await o(this.jwtProvider,this.deviceId);const n=new e.MeasureRequest;n.setEntitiesList(t.map((t=>t.toProto())));this.client.measure(n,i,s)}));return s(i.toObject())}else{return undefined}}async highlightEntities(s,i){await r((async r=>{const h=await o(this.jwtProvider,this.deviceId);const a=new Set(i);const c=s.filter((t=>!a.has(t)));const m=c.map((s=>{const i=new e.ModelEntityUpdate;i.setModelEntity(t.ModelEntity.deserializeBinary(s.modelEntity));i.setHighlight((new n.BoolValue).setValue(false));return i}));const u=i.map((s=>{const i=new e.ModelEntityUpdate;i.setModelEntity(t.ModelEntity.deserializeBinary(s.modelEntity));i.setHighlight((new n.BoolValue).setValue(true));return i}));const d=new e.UpdateModelEntitiesRequest;d.setUpdatesList([...m,...u]);this.client.updateModelEntities(d,h,r)}))}log(t,...s){if(this.debugLogs){console.debug(t,s)}}}class u{constructor(t,s){this.point=t;this.modelEntity=s}static fromHit(t){if(t.hitPoint!=null&&t.modelEntity!=null){const s=a.ifInvalidThrow(c)(t.hitPoint);const i=h.protobuf.core.ModelEntity.encode(t.modelEntity).finish();return new u(s,i)}else{throw new Error("Cannot create MeasurementEntity from Hit. Hit is missing hit point and model entity")}}toProto(){const s=new e.MeasureEntity;const n=new i.Vector3f;n.setX(this.point.x);n.setY(this.point.y);n.setZ(this.point.z);s.setPoint(n);const r=t.ModelEntity.deserializeBinary(this.modelEntity);s.setModelEntity(r);return s}}export{m as M,u as a};
|
|
5
|
+
//# sourceMappingURL=p-BEOO-Ypv.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p-BIR7Lfxx.js","sources":["src/lib/measurement/controller.ts","src/lib/measurement/entities.ts"],"sourcesContent":["import { ModelEntity } from '@vertexvis/scene-view-protos/core/protos/model_entity_pb';\nimport {\n MeasureRequest,\n MeasureResponse,\n ModelEntityUpdate,\n UpdateModelEntitiesRequest,\n} from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { BoolValue } from 'google-protobuf/google/protobuf/wrappers_pb';\n\nimport { createMetadata, JwtProvider, requestUnary } from '../grpc';\nimport { MeasurementEntity } from './entities';\nimport { mapMeasureResponseOrThrow } from './mapper';\nimport { MeasurementModel } from './model';\nimport { MeasurementOutcome } from './outcomes';\n\n/**\n * The `MeasurementController` is responsible for performing measurements of\n * registered entities, and updating the model with their measurement results.\n */\nexport class MeasurementController {\n private outcome = Promise.resolve<MeasurementOutcome | undefined>(undefined);\n private debugLogs = false;\n\n public constructor(\n private model: MeasurementModel,\n private client: SceneViewAPIClient,\n private jwtProvider: JwtProvider,\n private deviceId: string | undefined,\n ) {}\n\n /**\n * Registers an entity to measure and performs a measurement if this entity\n * has not been previously registered.\n *\n * @param entity The entity to measure.\n * @returns A promise that resolves with the results after registering this\n * entity.\n */\n public addEntity(\n entity: MeasurementEntity,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntity = ModelEntity.deserializeBinary(\n entity.modelEntity,\n );\n\n this.log(\n `Adding ModelEntity. [entityId={${deserializedEntity.getEntityId()}}, sceneItemId={${deserializedEntity.getSceneItemId()}}]`,\n );\n }\n\n return this.performMeasurement(() => this.model.addEntity(entity));\n }\n\n /**\n * Clears all entities and returns a promise that resolves with an empty list\n * of measurement results.\n */\n public clearEntities(): Promise<MeasurementOutcome | undefined> {\n this.log('Clearing all ModelEntities.');\n\n return this.performMeasurement(() => {\n this.model.clearEntities();\n this.model.clearOutcome();\n return true;\n });\n }\n\n /**\n * Deregisters an entity and performs a measurement if this entity was\n * removed.\n *\n * @param entity The entity to remove.\n * @returns A promise that resolves with the results after removing this\n * entity.\n */\n public removeEntity(\n entity: MeasurementEntity,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntity = ModelEntity.deserializeBinary(\n entity.modelEntity,\n );\n\n this.log(\n `Removing ModelEntity. [entityId={${deserializedEntity.getEntityId()}}, sceneItemId={${deserializedEntity.getSceneItemId()}}]`,\n );\n }\n\n return this.performMeasurement(() => this.model.removeEntity(entity));\n }\n\n /**\n * Registers a set of entities and performs a measurement\n *\n * @param entities The entities to measure.\n * @returns A promise that resolves with the results after registering these\n * entities.\n */\n public setEntities(\n entities: Set<MeasurementEntity>,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntities = Array.from(entities).map((e) =>\n ModelEntity.deserializeBinary(e.modelEntity),\n );\n\n this.log(\n `Setting ${deserializedEntities.length} ModelEntities. [entityIds=[${deserializedEntities.map((e) => e.getEntityId()).join(', ')}], sceneItemIds=[${deserializedEntities.map((e) => e.getSceneItemId()).join(', ')}]]`,\n );\n }\n\n return this.performMeasurement(() => this.model.setEntities(entities));\n }\n\n public setDebugLogs(debugLogs: boolean): void {\n this.debugLogs = debugLogs;\n }\n\n private performMeasurement(\n effect: () => boolean,\n ): Promise<MeasurementOutcome | undefined> {\n const previous = this.model.getEntities();\n const changed = effect();\n const entities = this.model.getEntities();\n if (changed) {\n this.measureAndUpdateModel(entities);\n this.highlightEntities(previous, entities);\n }\n return this.outcome;\n }\n\n private measureAndUpdateModel(entities: MeasurementEntity[]): void {\n if (entities.length > 0) {\n this.outcome = this.measureEntities(entities).then((outcome) => {\n this.model.setOutcome(outcome);\n return this.model.getOutcome();\n });\n } else {\n this.outcome = Promise.resolve(undefined);\n }\n }\n\n private async measureEntities(\n entities: MeasurementEntity[],\n ): Promise<MeasurementOutcome | undefined> {\n if (entities.length > 0) {\n const res = await requestUnary<MeasureResponse>(async (handler) => {\n const meta = await createMetadata(this.jwtProvider, this.deviceId);\n const req = new MeasureRequest();\n req.setEntitiesList(entities.map((e) => e.toProto()));\n\n this.client.measure(req, meta, handler);\n });\n\n return mapMeasureResponseOrThrow(res.toObject());\n } else {\n return undefined;\n }\n }\n\n private async highlightEntities(\n previous: MeasurementEntity[],\n entities: MeasurementEntity[],\n ): Promise<void> {\n await requestUnary(async (handler) => {\n const meta = await createMetadata(this.jwtProvider, this.deviceId);\n\n const entitySet = new Set(entities);\n const newPrevious = previous.filter((e) => !entitySet.has(e));\n\n const clearEntities = newPrevious.map((e) => {\n const update = new ModelEntityUpdate();\n update.setModelEntity(ModelEntity.deserializeBinary(e.modelEntity));\n update.setHighlight(new BoolValue().setValue(false));\n return update;\n });\n const highlightEntities = entities.map((e) => {\n const update = new ModelEntityUpdate();\n update.setModelEntity(ModelEntity.deserializeBinary(e.modelEntity));\n update.setHighlight(new BoolValue().setValue(true));\n return update;\n });\n\n const req = new UpdateModelEntitiesRequest();\n req.setUpdatesList([...clearEntities, ...highlightEntities]);\n this.client.updateModelEntities(req, meta, handler);\n });\n }\n\n private log(message?: string, ...optionalParams: unknown[]): void {\n if (this.debugLogs) {\n console.debug(message, optionalParams);\n }\n }\n}\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Vector3 } from '@vertexvis/geometry';\nimport { Vector3f } from '@vertexvis/scene-view-protos/core/protos/geometry_pb';\nimport { ModelEntity } from '@vertexvis/scene-view-protos/core/protos/model_entity_pb';\nimport { MeasureEntity } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper } from '@vertexvis/utils';\n\nimport { fromPbVector3f } from '../mappers';\n\nexport class MeasurementEntity {\n public constructor(\n public readonly point: Vector3.Vector3,\n public readonly modelEntity: Uint8Array,\n ) {}\n\n public static fromHit(\n hit: vertexvis.protobuf.stream.IHit,\n ): MeasurementEntity {\n if (hit.hitPoint != null && hit.modelEntity != null) {\n const hitPoint = Mapper.ifInvalidThrow(fromPbVector3f)(hit.hitPoint);\n const modelEntity = vertexvis.protobuf.core.ModelEntity.encode(\n hit.modelEntity,\n ).finish();\n return new MeasurementEntity(hitPoint, modelEntity);\n } else {\n throw new Error(\n 'Cannot create MeasurementEntity from Hit. Hit is missing hit point and model entity',\n );\n }\n }\n\n public toProto(): MeasureEntity {\n const entity = new MeasureEntity();\n\n const point = new Vector3f();\n point.setX(this.point.x);\n point.setY(this.point.y);\n point.setZ(this.point.z);\n entity.setPoint(point);\n\n const modelEntity = ModelEntity.deserializeBinary(this.modelEntity);\n entity.setModelEntity(modelEntity);\n\n return entity;\n }\n}\n"],"names":["ModelEntity","MeasureRequest","ModelEntityUpdate","BoolValue","UpdateModelEntitiesRequest","Mapper","MeasureEntity","Vector3f"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"p-BEOO-Ypv.js","sources":["src/lib/measurement/controller.ts","src/lib/measurement/entities.ts"],"sourcesContent":["import { ModelEntity } from '@vertexvis/scene-view-protos/core/protos/model_entity_pb';\nimport {\n MeasureRequest,\n MeasureResponse,\n ModelEntityUpdate,\n UpdateModelEntitiesRequest,\n} from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { SceneViewAPIClient } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb_service';\nimport { BoolValue } from 'google-protobuf/google/protobuf/wrappers_pb';\n\nimport { createMetadata, JwtProvider, requestUnary } from '../grpc';\nimport { MeasurementEntity } from './entities';\nimport { mapMeasureResponseOrThrow } from './mapper';\nimport { MeasurementModel } from './model';\nimport { MeasurementOutcome } from './outcomes';\n\n/**\n * The `MeasurementController` is responsible for performing measurements of\n * registered entities, and updating the model with their measurement results.\n */\nexport class MeasurementController {\n private outcome = Promise.resolve<MeasurementOutcome | undefined>(undefined);\n private debugLogs = false;\n\n public constructor(\n private model: MeasurementModel,\n private client: SceneViewAPIClient,\n private jwtProvider: JwtProvider,\n private deviceId: string | undefined,\n ) {}\n\n /**\n * Registers an entity to measure and performs a measurement if this entity\n * has not been previously registered.\n *\n * @param entity The entity to measure.\n * @returns A promise that resolves with the results after registering this\n * entity.\n */\n public addEntity(\n entity: MeasurementEntity,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntity = ModelEntity.deserializeBinary(\n entity.modelEntity,\n );\n\n this.log(\n `Adding ModelEntity. [entityId={${deserializedEntity.getEntityId()}}, sceneItemId={${deserializedEntity.getSceneItemId()}}]`,\n );\n }\n\n return this.performMeasurement(() => this.model.addEntity(entity));\n }\n\n /**\n * Clears all entities and returns a promise that resolves with an empty list\n * of measurement results.\n */\n public clearEntities(): Promise<MeasurementOutcome | undefined> {\n this.log('Clearing all ModelEntities.');\n\n return this.performMeasurement(() => {\n this.model.clearEntities();\n this.model.clearOutcome();\n return true;\n });\n }\n\n /**\n * Deregisters an entity and performs a measurement if this entity was\n * removed.\n *\n * @param entity The entity to remove.\n * @returns A promise that resolves with the results after removing this\n * entity.\n */\n public removeEntity(\n entity: MeasurementEntity,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntity = ModelEntity.deserializeBinary(\n entity.modelEntity,\n );\n\n this.log(\n `Removing ModelEntity. [entityId={${deserializedEntity.getEntityId()}}, sceneItemId={${deserializedEntity.getSceneItemId()}}]`,\n );\n }\n\n return this.performMeasurement(() => this.model.removeEntity(entity));\n }\n\n /**\n * Registers a set of entities and performs a measurement\n *\n * @param entities The entities to measure.\n * @returns A promise that resolves with the results after registering these\n * entities.\n */\n public setEntities(\n entities: Set<MeasurementEntity>,\n ): Promise<MeasurementOutcome | undefined> {\n if (this.debugLogs) {\n const deserializedEntities = Array.from(entities).map((e) =>\n ModelEntity.deserializeBinary(e.modelEntity),\n );\n\n this.log(\n `Setting ${deserializedEntities.length} ModelEntities. [entityIds=[${deserializedEntities.map((e) => e.getEntityId()).join(', ')}], sceneItemIds=[${deserializedEntities.map((e) => e.getSceneItemId()).join(', ')}]]`,\n );\n }\n\n return this.performMeasurement(() => this.model.setEntities(entities));\n }\n\n public setDebugLogs(debugLogs: boolean): void {\n this.debugLogs = debugLogs;\n }\n\n private performMeasurement(\n effect: () => boolean,\n ): Promise<MeasurementOutcome | undefined> {\n const previous = this.model.getEntities();\n const changed = effect();\n const entities = this.model.getEntities();\n if (changed) {\n this.measureAndUpdateModel(entities);\n this.highlightEntities(previous, entities);\n }\n return this.outcome;\n }\n\n private measureAndUpdateModel(entities: MeasurementEntity[]): void {\n if (entities.length > 0) {\n this.outcome = this.measureEntities(entities).then((outcome) => {\n this.model.setOutcome(outcome);\n return this.model.getOutcome();\n });\n } else {\n this.outcome = Promise.resolve(undefined);\n }\n }\n\n private async measureEntities(\n entities: MeasurementEntity[],\n ): Promise<MeasurementOutcome | undefined> {\n if (entities.length > 0) {\n const res = await requestUnary<MeasureResponse>(async (handler) => {\n const meta = await createMetadata(this.jwtProvider, this.deviceId);\n const req = new MeasureRequest();\n req.setEntitiesList(entities.map((e) => e.toProto()));\n\n this.client.measure(req, meta, handler);\n });\n\n return mapMeasureResponseOrThrow(res.toObject());\n } else {\n return undefined;\n }\n }\n\n private async highlightEntities(\n previous: MeasurementEntity[],\n entities: MeasurementEntity[],\n ): Promise<void> {\n await requestUnary(async (handler) => {\n const meta = await createMetadata(this.jwtProvider, this.deviceId);\n\n const entitySet = new Set(entities);\n const newPrevious = previous.filter((e) => !entitySet.has(e));\n\n const clearEntities = newPrevious.map((e) => {\n const update = new ModelEntityUpdate();\n update.setModelEntity(ModelEntity.deserializeBinary(e.modelEntity));\n update.setHighlight(new BoolValue().setValue(false));\n return update;\n });\n const highlightEntities = entities.map((e) => {\n const update = new ModelEntityUpdate();\n update.setModelEntity(ModelEntity.deserializeBinary(e.modelEntity));\n update.setHighlight(new BoolValue().setValue(true));\n return update;\n });\n\n const req = new UpdateModelEntitiesRequest();\n req.setUpdatesList([...clearEntities, ...highlightEntities]);\n this.client.updateModelEntities(req, meta, handler);\n });\n }\n\n private log(message?: string, ...optionalParams: unknown[]): void {\n if (this.debugLogs) {\n console.debug(message, optionalParams);\n }\n }\n}\n","import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Vector3 } from '@vertexvis/geometry';\nimport { Vector3f } from '@vertexvis/scene-view-protos/core/protos/geometry_pb';\nimport { ModelEntity } from '@vertexvis/scene-view-protos/core/protos/model_entity_pb';\nimport { MeasureEntity } from '@vertexvis/scene-view-protos/sceneview/protos/scene_view_api_pb';\nimport { Mapper } from '@vertexvis/utils';\n\nimport { fromPbVector3f } from '../mappers';\n\nexport class MeasurementEntity {\n public constructor(\n public readonly point: Vector3.Vector3,\n public readonly modelEntity: Uint8Array,\n ) {}\n\n public static fromHit(\n hit: vertexvis.protobuf.stream.IHit,\n ): MeasurementEntity {\n if (hit.hitPoint != null && hit.modelEntity != null) {\n const hitPoint = Mapper.ifInvalidThrow(fromPbVector3f)(hit.hitPoint);\n const modelEntity = vertexvis.protobuf.core.ModelEntity.encode(\n hit.modelEntity,\n ).finish();\n return new MeasurementEntity(hitPoint, modelEntity);\n } else {\n throw new Error(\n 'Cannot create MeasurementEntity from Hit. Hit is missing hit point and model entity',\n );\n }\n }\n\n public toProto(): MeasureEntity {\n const entity = new MeasureEntity();\n\n const point = new Vector3f();\n point.setX(this.point.x);\n point.setY(this.point.y);\n point.setZ(this.point.z);\n entity.setPoint(point);\n\n const modelEntity = ModelEntity.deserializeBinary(this.modelEntity);\n entity.setModelEntity(modelEntity);\n\n return entity;\n }\n}\n"],"names":["ModelEntity","MeasureRequest","ModelEntityUpdate","BoolValue","UpdateModelEntitiesRequest","Mapper","MeasureEntity","Vector3f"],"mappings":"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"}
|