@vertexvis/viewer 1.1.1-testing.3 → 1.1.1-testing.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/README.template.md +14 -8
  2. package/dist/cjs/{bundle-07I6_WqC.js → bundle-BCS0nA91.js} +28 -25
  3. package/dist/cjs/bundle-BCS0nA91.js.map +1 -0
  4. package/dist/cjs/{config-CepHuwRF.js → config-BY0v6BSK.js} +3 -3
  5. package/dist/cjs/{config-CepHuwRF.js.map → config-BY0v6BSK.js.map} +1 -1
  6. package/dist/cjs/{controller-Dklbe0Y6.js → controller-DvE3p6ta.js} +3 -3
  7. package/dist/cjs/{controller-Dklbe0Y6.js.map → controller-DvE3p6ta.js.map} +1 -1
  8. package/dist/cjs/{dom-Dlu6-7PF.js → dom-BuQSLPWr.js} +3 -3
  9. package/dist/cjs/{dom-Dlu6-7PF.js.map → dom-BuQSLPWr.js.map} +1 -1
  10. package/dist/cjs/{entities-BdWnb6KI.js → entities-CEaa12yP.js} +4 -4
  11. package/dist/cjs/{entities-BdWnb6KI.js.map → entities-CEaa12yP.js.map} +1 -1
  12. package/dist/cjs/{geometry_pb-BISQT2vx.js → geometry_pb-EVfAEuPO.js} +3 -3
  13. package/dist/cjs/{geometry_pb-BISQT2vx.js.map → geometry_pb-EVfAEuPO.js.map} +1 -1
  14. package/dist/cjs/grpc-D5Apx_zz.js.map +1 -1
  15. package/dist/cjs/index.cjs.js +13 -13
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/cjs/{markup-C-qyTwID.js → markup-Du4uVRo4.js} +3 -3
  18. package/dist/cjs/{markup-C-qyTwID.js.map → markup-Du4uVRo4.js.map} +1 -1
  19. package/dist/cjs/{model-Dy5FvjIA.js → model-BC6acIWJ.js} +3 -3
  20. package/dist/cjs/{model-Dy5FvjIA.js.map → model-BC6acIWJ.js.map} +1 -1
  21. package/dist/cjs/model-Bw4h8wNt.js.map +1 -1
  22. package/dist/cjs/{model-k5VBFN6C.js → model-DqxeakCS.js} +3 -3
  23. package/dist/cjs/{model-k5VBFN6C.js.map → model-DqxeakCS.js.map} +1 -1
  24. package/dist/cjs/{multiElementInteractionHandler-Bqpg2wVT.js → multiElementInteractionHandler-Bdeo6FYp.js} +6 -5
  25. package/dist/cjs/multiElementInteractionHandler-Bdeo6FYp.js.map +1 -0
  26. package/dist/cjs/{overlays-BujVkBnG.js → overlays-DASFbMSp.js} +3 -3
  27. package/dist/cjs/{overlays-BujVkBnG.js.map → overlays-DASFbMSp.js.map} +1 -1
  28. package/dist/cjs/{queries-GhYmoomu.js → queries-LthBzEHD.js} +5 -5
  29. package/dist/cjs/queries-LthBzEHD.js.map +1 -0
  30. package/dist/cjs/{regl-component-CB004H91.js → regl-component-B_JaaVlv.js} +6 -6
  31. package/dist/cjs/{regl-component-CB004H91.js.map → regl-component-B_JaaVlv.js.map} +1 -1
  32. package/dist/cjs/{representation_pb-CHCm5o1e.js → representation_pb-B6XR10pQ.js} +3 -3
  33. package/dist/cjs/{representation_pb-CHCm5o1e.js.map → representation_pb-B6XR10pQ.js.map} +1 -1
  34. package/dist/cjs/{results-BpfUIwa8.js → results-CU9Ctm2K.js} +3 -3
  35. package/dist/cjs/{results-BpfUIwa8.js.map → results-CU9Ctm2K.js.map} +1 -1
  36. package/dist/cjs/{streamAttributes-CJOD7AxG.js → streamAttributes-nCF7u7lv.js} +4 -4
  37. package/dist/cjs/{streamAttributes-CJOD7AxG.js.map → streamAttributes-nCF7u7lv.js.map} +1 -1
  38. package/dist/cjs/{util-smaTO4bk.js → util-gX3IGslq.js} +3 -3
  39. package/dist/cjs/{util-smaTO4bk.js.map → util-gX3IGslq.js.map} +1 -1
  40. package/dist/cjs/{utils-BsXO-wLi.js → utils-D5TGpFAV.js} +3 -3
  41. package/dist/cjs/utils-D5TGpFAV.js.map +1 -0
  42. package/dist/cjs/{utils-DY6afhh8.js → utils-opS9hsaU.js} +3 -3
  43. package/dist/cjs/{utils-DY6afhh8.js.map → utils-opS9hsaU.js.map} +1 -1
  44. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js +1 -1
  45. package/dist/cjs/vertex-scene-tree-notification-banner_4.cjs.entry.js.map +1 -1
  46. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +2 -2
  47. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js.map +1 -1
  48. package/dist/cjs/vertex-scene-tree-table-column.cjs.entry.js.map +1 -1
  49. package/dist/cjs/vertex-scene-tree.cjs.entry.js +3 -3
  50. package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
  51. package/dist/cjs/vertex-viewer-annotation-callout.cjs.entry.js.map +1 -1
  52. package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +4 -4
  53. package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js.map +1 -1
  54. package/dist/cjs/vertex-viewer-button_3.cjs.entry.js +6 -1
  55. package/dist/cjs/vertex-viewer-button_3.cjs.entry.js.map +1 -1
  56. package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js +2 -2
  57. package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js.map +1 -1
  58. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +5 -5
  59. package/dist/cjs/vertex-viewer-dom-group.cjs.entry.js +1 -1
  60. package/dist/cjs/vertex-viewer-hit-result-indicator.cjs.entry.js +5 -5
  61. package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +3 -3
  62. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +4 -4
  63. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js.map +1 -1
  64. package/dist/cjs/vertex-viewer-markup.cjs.entry.js +3 -3
  65. package/dist/cjs/vertex-viewer-markup.cjs.entry.js.map +1 -1
  66. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +3 -3
  67. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +8 -8
  68. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +5 -5
  69. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +7 -7
  70. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +7 -7
  71. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js.map +1 -1
  72. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js +7 -6
  73. package/dist/cjs/vertex-viewer-pin-label_2.cjs.entry.js.map +1 -1
  74. package/dist/cjs/vertex-viewer-pin-tool.cjs.entry.js +3 -3
  75. package/dist/cjs/vertex-viewer-spinner.cjs.entry.js.map +1 -1
  76. package/dist/cjs/vertex-viewer-teleport-tool.cjs.entry.js +2 -2
  77. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +6 -6
  78. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js.map +1 -1
  79. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +2 -2
  80. package/dist/cjs/vertex-viewer-walk-mode-tool.cjs.entry.js +1 -1
  81. package/dist/cjs/vertex-viewer.cjs.entry.js +8 -8
  82. package/dist/cjs/viewer.cjs.js +1 -1
  83. package/dist/cjs/{viewport-B70DgDZj.js → viewport-BDbB9o9T.js} +3 -3
  84. package/dist/cjs/{viewport-B70DgDZj.js.map → viewport-BDbB9o9T.js.map} +1 -1
  85. package/dist/collection/components/scene-tree/scene-tree.css +2 -3
  86. package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
  87. package/dist/collection/components/scene-tree-notification-banner/scene-tree-notification-banner.css +1 -1
  88. package/dist/collection/components/scene-tree-search/scene-tree-search.css +1 -1
  89. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.css +10 -10
  90. package/dist/collection/components/scene-tree-table-column/scene-tree-table-column.css +0 -1
  91. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.css +3 -3
  92. package/dist/collection/components/viewer-annotation-callout/viewer-annotation-callout.css +3 -4
  93. package/dist/collection/components/viewer-box-query-tool/types.js.map +1 -1
  94. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.css +9 -7
  95. package/dist/collection/components/viewer-button/viewer-button.js +32 -1
  96. package/dist/collection/components/viewer-button/viewer-button.js.map +1 -1
  97. package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.css +2 -2
  98. package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.js +1 -1
  99. package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.js.map +1 -1
  100. package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
  101. package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
  102. package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.css +2 -2
  103. package/dist/collection/components/viewer-pin-group/viewer-pin-group.css +12 -11
  104. package/dist/collection/components/viewer-pin-label/viewer-pin-label.css +21 -8
  105. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js +2 -1
  106. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
  107. package/dist/collection/components/viewer-pin-label-line/viewer-pin-label-line.css +5 -4
  108. package/dist/collection/components/viewer-spinner/viewer-spinner.css +2 -2
  109. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
  110. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.css +1 -2
  111. package/dist/collection/lib/grpc.js.map +1 -1
  112. package/dist/collection/lib/interactions/baseInteractionHandler.js +2 -1
  113. package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
  114. package/dist/collection/lib/scenes/scene.js.map +1 -1
  115. package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
  116. package/dist/collection/lib/stream/state.js.map +1 -1
  117. package/dist/collection/lib/types/loadableResource.js.map +1 -1
  118. package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
  119. package/dist/collection/lib/walk-mode/model.js.map +1 -1
  120. package/dist/components/index.js +1 -1
  121. package/dist/components/p-2UsvOTHJ.js +5 -0
  122. package/dist/components/p-2UsvOTHJ.js.map +1 -0
  123. package/dist/components/{p-garvKln8.js → p-BAuOB8M-.js} +2 -2
  124. package/dist/components/p-BAuOB8M-.js.map +1 -0
  125. package/dist/components/p-BFEV_v80.js +5 -0
  126. package/dist/components/p-BFEV_v80.js.map +1 -0
  127. package/dist/components/{p-C02XtMl4.js → p-BHyxBmg6.js} +2 -2
  128. package/dist/components/{p-CfTvpqud.js → p-BNRm88jS.js} +2 -2
  129. package/dist/components/{p-O1_Yvjd6.js → p-BT9d9jRt.js} +2 -2
  130. package/dist/components/{p-oDn1DcWj.js → p-BZDn1Vuv.js} +2 -2
  131. package/dist/components/{p-VEJB73Ei.js → p-Bdf4AcJ2.js} +2 -2
  132. package/dist/components/{p-CelQDFR0.js → p-C12jtCFb.js} +2 -2
  133. package/dist/components/{p-Dzs4u_ZY.js → p-CABws4i9.js} +2 -2
  134. package/dist/components/p-CIuxJYJL.js.map +1 -1
  135. package/dist/components/{p-CZgX-9yo.js → p-COznr3CH.js} +2 -2
  136. package/dist/components/{p-BqeEZXPn.js → p-CPROw2BU.js} +2 -2
  137. package/dist/components/{p-BKQMbekH.js → p-CWcvgy8e.js} +2 -2
  138. package/dist/components/{p-CMdP8O-G.js → p-Ca253f0h.js} +2 -2
  139. package/dist/components/{p-EG7pMA2M.js → p-CeZe0Qql.js} +2 -2
  140. package/dist/components/p-CioaIHsi.js.map +1 -1
  141. package/dist/components/{p-DH341c7b.js → p-Cku0WCYo.js} +2 -2
  142. package/dist/components/p-Cku0WCYo.js.map +1 -0
  143. package/dist/components/{p-Due5EmBt.js → p-Clyxptbp.js} +2 -2
  144. package/dist/components/{p-taOlygmc.js → p-Cs2aiMUK.js} +2 -2
  145. package/dist/components/p-Cs2aiMUK.js.map +1 -0
  146. package/dist/components/{p-DjrtwKcK.js → p-CvEK3ZK1.js} +2 -2
  147. package/dist/components/p-Cxz4L6FA.js +5 -0
  148. package/dist/components/p-Cxz4L6FA.js.map +1 -0
  149. package/dist/components/{p-MnZadXO8.js → p-D1Vdomj_.js} +2 -2
  150. package/dist/components/{p-DRGCkSEK.js → p-D3bzgaCV.js} +2 -2
  151. package/dist/components/{p-DnVcQAR9.js → p-D3in41xo.js} +2 -2
  152. package/dist/components/p-DTwJX9HL.js +5 -0
  153. package/dist/components/p-DTwJX9HL.js.map +1 -0
  154. package/dist/components/p-DUo-H-nW.js +5 -0
  155. package/dist/components/p-DUo-H-nW.js.map +1 -0
  156. package/dist/components/{p-DCTZZ5Rd.js → p-DjQ6RXWP.js} +2 -2
  157. package/dist/components/p-DxuSiXYg.js.map +1 -1
  158. package/dist/components/{p-CxzyM08j.js → p-DyL2wWm6.js} +2 -2
  159. package/dist/components/{p-avWSFTeP.js → p-JvS9LLoO.js} +2 -2
  160. package/dist/{viewer/p-7m7Vr5V7.js → components/p-Ng27jBsS.js} +2 -2
  161. package/dist/components/p-Ng27jBsS.js.map +1 -0
  162. package/dist/components/{p-BC777sCK.js → p-UJR-ixsy.js} +2 -2
  163. package/dist/components/{p-Ib4vgh2t.js → p-UrT4ZJv3.js} +2 -2
  164. package/dist/components/{p-Ib4vgh2t.js.map → p-UrT4ZJv3.js.map} +1 -1
  165. package/dist/components/p-Y8W_BXUk.js.map +1 -1
  166. package/dist/components/{p-mpsCUvSn.js → p-_qi2VkC2.js} +2 -2
  167. package/dist/components/{p-CNprIkKd.js → p-rDr0x5Z7.js} +2 -2
  168. package/dist/components/vertex-scene-tree-table-cell.js +1 -1
  169. package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
  170. package/dist/components/vertex-scene-tree-table-column.js.map +1 -1
  171. package/dist/components/vertex-scene-tree-table-layout.js +1 -1
  172. package/dist/components/vertex-scene-tree.js +1 -1
  173. package/dist/components/vertex-scene-tree.js.map +1 -1
  174. package/dist/components/vertex-viewer-annotation-callout.js.map +1 -1
  175. package/dist/components/vertex-viewer-box-query-tool.js +1 -1
  176. package/dist/components/vertex-viewer-box-query-tool.js.map +1 -1
  177. package/dist/components/vertex-viewer-button.js +1 -1
  178. package/dist/components/vertex-viewer-default-toolbar.js +1 -1
  179. package/dist/components/vertex-viewer-default-toolbar.js.map +1 -1
  180. package/dist/components/vertex-viewer-dom-element.js +1 -1
  181. package/dist/components/vertex-viewer-dom-group.js +1 -1
  182. package/dist/components/vertex-viewer-dom-renderer.js +1 -1
  183. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  184. package/dist/components/vertex-viewer-markup-arrow.js +1 -1
  185. package/dist/components/vertex-viewer-markup-circle.js +1 -1
  186. package/dist/components/vertex-viewer-markup-freeform.js +1 -1
  187. package/dist/components/vertex-viewer-markup-tool.js +1 -1
  188. package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
  189. package/dist/components/vertex-viewer-markup.js +1 -1
  190. package/dist/components/vertex-viewer-markup.js.map +1 -1
  191. package/dist/components/vertex-viewer-measurement-details.js +1 -1
  192. package/dist/components/vertex-viewer-measurement-distance.js +1 -1
  193. package/dist/components/vertex-viewer-measurement-line.js +1 -1
  194. package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
  195. package/dist/components/vertex-viewer-measurement-precise.js +1 -1
  196. package/dist/components/vertex-viewer-pin-group.js +1 -1
  197. package/dist/components/vertex-viewer-pin-label-line.js +1 -1
  198. package/dist/components/vertex-viewer-pin-label.js +1 -1
  199. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  200. package/dist/components/vertex-viewer-teleport-tool.js +1 -1
  201. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  202. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  203. package/dist/components/vertex-viewer-view-cube.js +1 -1
  204. package/dist/components/vertex-viewer-walk-mode-tool.js +1 -1
  205. package/dist/components/vertex-viewer.js +1 -1
  206. package/dist/esm/{bundle-CZZALKHT.js → bundle-2UsvOTHJ.js} +28 -25
  207. package/dist/esm/bundle-2UsvOTHJ.js.map +1 -0
  208. package/dist/esm/{config-CyaUTJEG.js → config-ss9ha12b.js} +3 -3
  209. package/dist/esm/{config-CyaUTJEG.js.map → config-ss9ha12b.js.map} +1 -1
  210. package/dist/esm/{controller-ByBd8r3O.js → controller-BPECXXfj.js} +3 -3
  211. package/dist/esm/{controller-ByBd8r3O.js.map → controller-BPECXXfj.js.map} +1 -1
  212. package/dist/esm/{dom-Bbf2HAst.js → dom-DaP9SiyY.js} +3 -3
  213. package/dist/esm/{dom-Bbf2HAst.js.map → dom-DaP9SiyY.js.map} +1 -1
  214. package/dist/esm/{entities-DriL3zBC.js → entities-DEFAhYdV.js} +4 -4
  215. package/dist/esm/{entities-DriL3zBC.js.map → entities-DEFAhYdV.js.map} +1 -1
  216. package/dist/esm/{geometry_pb-BEB8SExe.js → geometry_pb-D7fM1PYG.js} +3 -3
  217. package/dist/esm/{geometry_pb-BEB8SExe.js.map → geometry_pb-D7fM1PYG.js.map} +1 -1
  218. package/dist/esm/grpc-hWL8wFvk.js.map +1 -1
  219. package/dist/esm/index.js +13 -13
  220. package/dist/esm/index.mjs +13 -13
  221. package/dist/esm/loader.js +1 -1
  222. package/dist/esm/loader.mjs +1 -1
  223. package/dist/esm/{markup-y96-uR-l.js → markup-B58g75Hr.js} +3 -3
  224. package/dist/esm/{markup-y96-uR-l.js.map → markup-B58g75Hr.js.map} +1 -1
  225. package/dist/esm/{model-BJQo0DxL.js → model-B5KuXEsl.js} +3 -3
  226. package/dist/esm/{model-BJQo0DxL.js.map → model-B5KuXEsl.js.map} +1 -1
  227. package/dist/esm/model-BHVr1tU0.js.map +1 -1
  228. package/dist/esm/{model-CTdG73h9.js → model-Dc6T63-k.js} +3 -3
  229. package/dist/esm/{model-CTdG73h9.js.map → model-Dc6T63-k.js.map} +1 -1
  230. package/dist/esm/{multiElementInteractionHandler-C45E8VzE.js → multiElementInteractionHandler-3tE3OPpw.js} +6 -5
  231. package/dist/esm/multiElementInteractionHandler-3tE3OPpw.js.map +1 -0
  232. package/dist/esm/{overlays-DmcRtaSn.js → overlays-BwIqsqLW.js} +3 -3
  233. package/dist/esm/{overlays-DmcRtaSn.js.map → overlays-BwIqsqLW.js.map} +1 -1
  234. package/dist/esm/{queries-DWjy-LsV.js → queries-BcmE5Zbq.js} +5 -5
  235. package/dist/esm/queries-BcmE5Zbq.js.map +1 -0
  236. package/dist/esm/{regl-component-zzdsBise.js → regl-component-gIonUTBJ.js} +6 -6
  237. package/dist/esm/{regl-component-zzdsBise.js.map → regl-component-gIonUTBJ.js.map} +1 -1
  238. package/dist/esm/{representation_pb-CQdJxiGO.js → representation_pb-Bf023NuN.js} +3 -3
  239. package/dist/esm/{representation_pb-CQdJxiGO.js.map → representation_pb-Bf023NuN.js.map} +1 -1
  240. package/dist/esm/{results-ClIgKssN.js → results-De9arm7M.js} +3 -3
  241. package/dist/esm/{results-ClIgKssN.js.map → results-De9arm7M.js.map} +1 -1
  242. package/dist/esm/{streamAttributes-CTs61PCl.js → streamAttributes-Bj2xDHfI.js} +3 -3
  243. package/dist/esm/{streamAttributes-CTs61PCl.js.map → streamAttributes-Bj2xDHfI.js.map} +1 -1
  244. package/dist/esm/{util-DUjEw5Kh.js → util-CMPFqnEv.js} +3 -3
  245. package/dist/esm/{util-DUjEw5Kh.js.map → util-CMPFqnEv.js.map} +1 -1
  246. package/dist/esm/{utils-DOjHP1wA.js → utils-B1mSYmAK.js} +3 -3
  247. package/dist/esm/{utils-DOjHP1wA.js.map → utils-B1mSYmAK.js.map} +1 -1
  248. package/dist/esm/{utils-DJ5FvINs.js → utils-c-mcLgsj.js} +3 -3
  249. package/dist/esm/utils-c-mcLgsj.js.map +1 -0
  250. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +1 -1
  251. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
  252. package/dist/esm/vertex-scene-tree-table-cell.entry.js +2 -2
  253. package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
  254. package/dist/esm/vertex-scene-tree-table-column.entry.js.map +1 -1
  255. package/dist/esm/vertex-scene-tree.entry.js +3 -3
  256. package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
  257. package/dist/esm/vertex-viewer-annotation-callout.entry.js.map +1 -1
  258. package/dist/esm/vertex-viewer-box-query-tool.entry.js +4 -4
  259. package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
  260. package/dist/esm/vertex-viewer-button_3.entry.js +6 -1
  261. package/dist/esm/vertex-viewer-button_3.entry.js.map +1 -1
  262. package/dist/esm/vertex-viewer-default-toolbar.entry.js +2 -2
  263. package/dist/esm/vertex-viewer-default-toolbar.entry.js.map +1 -1
  264. package/dist/esm/vertex-viewer-dom-element_2.entry.js +5 -5
  265. package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
  266. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +5 -5
  267. package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +3 -3
  268. package/dist/esm/vertex-viewer-markup-tool.entry.js +4 -4
  269. package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
  270. package/dist/esm/vertex-viewer-markup.entry.js +3 -3
  271. package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
  272. package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
  273. package/dist/esm/vertex-viewer-measurement-distance.entry.js +8 -8
  274. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +5 -5
  275. package/dist/esm/vertex-viewer-measurement-precise.entry.js +7 -7
  276. package/dist/esm/vertex-viewer-pin-group.entry.js +7 -7
  277. package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
  278. package/dist/esm/vertex-viewer-pin-label_2.entry.js +7 -6
  279. package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
  280. package/dist/esm/vertex-viewer-pin-tool.entry.js +3 -3
  281. package/dist/esm/vertex-viewer-spinner.entry.js.map +1 -1
  282. package/dist/esm/vertex-viewer-teleport-tool.entry.js +2 -2
  283. package/dist/esm/vertex-viewer-transform-widget.entry.js +6 -6
  284. package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
  285. package/dist/esm/vertex-viewer-view-cube.entry.js +2 -2
  286. package/dist/esm/vertex-viewer-walk-mode-tool.entry.js +1 -1
  287. package/dist/esm/vertex-viewer.entry.js +8 -8
  288. package/dist/esm/viewer.js +1 -1
  289. package/dist/esm/{viewport-D90kzsD7.js → viewport-CHtidaFL.js} +3 -3
  290. package/dist/esm/{viewport-D90kzsD7.js.map → viewport-CHtidaFL.js.map} +1 -1
  291. package/dist/types/components/viewer-button/viewer-button.d.ts +5 -0
  292. package/dist/types/components.d.ts +14 -1
  293. package/dist/types/lib/walk-mode/model.d.ts +10 -10
  294. package/dist/types/regl-shape.d.ts +1 -5
  295. package/dist/viewer/index.esm.js +1 -1
  296. package/dist/viewer/{p-12a673f0.entry.js → p-00540193.entry.js} +2 -2
  297. package/dist/viewer/p-00540193.entry.js.map +1 -0
  298. package/dist/viewer/{p-78f422af.entry.js → p-287e0670.entry.js} +2 -2
  299. package/dist/viewer/{p-78f422af.entry.js.map → p-287e0670.entry.js.map} +1 -1
  300. package/dist/viewer/p-2UsvOTHJ.js +5 -0
  301. package/dist/viewer/p-2UsvOTHJ.js.map +1 -0
  302. package/dist/viewer/{p-510fd2e1.entry.js → p-2d2fa147.entry.js} +2 -2
  303. package/dist/viewer/{p-fe434552.entry.js → p-30a5748d.entry.js} +2 -2
  304. package/dist/viewer/p-32a51a21.entry.js +5 -0
  305. package/dist/viewer/p-32a51a21.entry.js.map +1 -0
  306. package/dist/viewer/{p-aa0359e0.entry.js → p-3c5dd716.entry.js} +2 -2
  307. package/dist/viewer/{p-9312a936.entry.js → p-48020de1.entry.js} +2 -2
  308. package/dist/viewer/{p-d5542b6a.entry.js → p-4dd67d16.entry.js} +2 -2
  309. package/dist/viewer/p-4dd67d16.entry.js.map +1 -0
  310. package/dist/viewer/p-504e77a7.entry.js +5 -0
  311. package/dist/viewer/{p-c2c3579f.entry.js.map → p-504e77a7.entry.js.map} +1 -1
  312. package/dist/viewer/{p-71c03352.entry.js → p-53f6cc59.entry.js} +2 -2
  313. package/dist/viewer/{p-7b4eec65.entry.js → p-5cfb3047.entry.js} +2 -2
  314. package/dist/viewer/{p-e3981cf8.entry.js → p-7cb9c9bb.entry.js} +2 -2
  315. package/dist/viewer/p-7cb9c9bb.entry.js.map +1 -0
  316. package/dist/viewer/{p-56e39cff.entry.js → p-83683307.entry.js} +2 -2
  317. package/dist/viewer/{p-a108a305.entry.js → p-9a39315d.entry.js} +2 -2
  318. package/dist/viewer/{p-O1_Yvjd6.js → p-BT9d9jRt.js} +2 -2
  319. package/dist/viewer/{p-O1_Yvjd6.js.map → p-BT9d9jRt.js.map} +1 -1
  320. package/dist/viewer/{p-VEJB73Ei.js → p-Bdf4AcJ2.js} +2 -2
  321. package/dist/viewer/{p-VEJB73Ei.js.map → p-Bdf4AcJ2.js.map} +1 -1
  322. package/dist/viewer/{p-Cr2EnhS-.js → p-BhKTTmpL.js} +2 -2
  323. package/dist/viewer/{p-Cr2EnhS-.js.map → p-BhKTTmpL.js.map} +1 -1
  324. package/dist/viewer/{p-CelQDFR0.js → p-C12jtCFb.js} +2 -2
  325. package/dist/viewer/{p-CelQDFR0.js.map → p-C12jtCFb.js.map} +1 -1
  326. package/dist/viewer/p-CEDqc5sS.js +5 -0
  327. package/dist/viewer/{p-BDy3SLKk.js.map → p-CEDqc5sS.js.map} +1 -1
  328. package/dist/viewer/{p-C6YtUG51.js → p-CS8PfgcI.js} +2 -2
  329. package/dist/viewer/{p-C6YtUG51.js.map → p-CS8PfgcI.js.map} +1 -1
  330. package/dist/viewer/{p-EG7pMA2M.js → p-CeZe0Qql.js} +2 -2
  331. package/dist/viewer/{p-EG7pMA2M.js.map → p-CeZe0Qql.js.map} +1 -1
  332. package/dist/viewer/p-CioaIHsi.js.map +1 -1
  333. package/dist/viewer/{p-EUeCUp3y.js → p-CxBXErQ8.js} +2 -2
  334. package/dist/viewer/{p-EUeCUp3y.js.map → p-CxBXErQ8.js.map} +1 -1
  335. package/dist/viewer/{p-BIR7Lfxx.js → p-CyiY_hsD.js} +2 -2
  336. package/dist/viewer/{p-BIR7Lfxx.js.map → p-CyiY_hsD.js.map} +1 -1
  337. package/dist/viewer/{p-CIBBr-p1.js → p-D0aTA_2m.js} +2 -2
  338. package/dist/viewer/{p-CIBBr-p1.js.map → p-D0aTA_2m.js.map} +1 -1
  339. package/dist/viewer/{p-C-huOg09.js → p-D2IEHEGM.js} +2 -2
  340. package/dist/viewer/{p-C-huOg09.js.map → p-D2IEHEGM.js.map} +1 -1
  341. package/dist/viewer/{p-UQXG8bCI.js → p-DBfvBC5O.js} +2 -2
  342. package/dist/viewer/p-DBfvBC5O.js.map +1 -0
  343. package/dist/viewer/{p-B-J4CqZy.js → p-DHK23fw4.js} +2 -2
  344. package/dist/viewer/{p-B-J4CqZy.js.map → p-DHK23fw4.js.map} +1 -1
  345. package/dist/{components/p-QhlhRt6X.js → viewer/p-DIbJ8Ijj.js} +2 -2
  346. package/dist/viewer/p-DIbJ8Ijj.js.map +1 -0
  347. package/dist/viewer/{p-CxzyM08j.js → p-DyL2wWm6.js} +2 -2
  348. package/dist/viewer/{p-CxzyM08j.js.map → p-DyL2wWm6.js.map} +1 -1
  349. package/dist/viewer/{p-avWSFTeP.js → p-JvS9LLoO.js} +2 -2
  350. package/dist/viewer/{p-avWSFTeP.js.map → p-JvS9LLoO.js.map} +1 -1
  351. package/dist/viewer/p-_LpaX1ga.js +5 -0
  352. package/dist/viewer/p-_LpaX1ga.js.map +1 -0
  353. package/dist/viewer/{p-mpsCUvSn.js → p-_qi2VkC2.js} +2 -2
  354. package/dist/viewer/{p-mpsCUvSn.js.map → p-_qi2VkC2.js.map} +1 -1
  355. package/dist/viewer/p-b5cc83a4.entry.js.map +1 -1
  356. package/dist/viewer/{p-82ed4346.entry.js → p-b79c295a.entry.js} +2 -2
  357. package/dist/viewer/{p-fc7d9b2b.entry.js → p-c531ca97.entry.js} +2 -2
  358. package/dist/viewer/{p-fc7d9b2b.entry.js.map → p-c531ca97.entry.js.map} +1 -1
  359. package/dist/viewer/p-c9dee5c4.entry.js +5 -0
  360. package/dist/viewer/p-c9dee5c4.entry.js.map +1 -0
  361. package/dist/viewer/{p-c2454523.entry.js → p-cc835213.entry.js} +2 -2
  362. package/dist/viewer/p-ce711ae0.entry.js +5 -0
  363. package/dist/viewer/p-ce711ae0.entry.js.map +1 -0
  364. package/dist/viewer/p-d357d235.entry.js.map +1 -1
  365. package/dist/viewer/{p-91fca24b.entry.js → p-d5a57757.entry.js} +2 -2
  366. package/dist/viewer/p-e4913b06.entry.js +5 -0
  367. package/dist/viewer/p-e4913b06.entry.js.map +1 -0
  368. package/dist/viewer/p-e98db875.entry.js.map +1 -1
  369. package/dist/viewer/{p-a893a299.entry.js → p-edc2f914.entry.js} +2 -2
  370. package/dist/viewer/{p-03a531d9.entry.js → p-ef9437ca.entry.js} +2 -2
  371. package/dist/viewer/{p-49578ec9.entry.js → p-fd3a5837.entry.js} +2 -2
  372. package/dist/viewer/p-fd3a5837.entry.js.map +1 -0
  373. package/dist/viewer/p-ipyYHvea.js.map +1 -1
  374. package/dist/viewer/{p-Ce1j43tF.js → p-kMZA0v7I.js} +2 -2
  375. package/dist/viewer/{p-Ce1j43tF.js.map → p-kMZA0v7I.js.map} +1 -1
  376. package/dist/viewer/viewer.esm.js +1 -1
  377. package/package.json +8 -8
  378. package/readme.md +14 -8
  379. package/dist/cjs/bundle-07I6_WqC.js.map +0 -1
  380. package/dist/cjs/multiElementInteractionHandler-Bqpg2wVT.js.map +0 -1
  381. package/dist/cjs/queries-GhYmoomu.js.map +0 -1
  382. package/dist/cjs/utils-BsXO-wLi.js.map +0 -1
  383. package/dist/components/p-B4sO9HdX.js +0 -5
  384. package/dist/components/p-B4sO9HdX.js.map +0 -1
  385. package/dist/components/p-C--Voxln.js +0 -5
  386. package/dist/components/p-C--Voxln.js.map +0 -1
  387. package/dist/components/p-CZZALKHT.js +0 -5
  388. package/dist/components/p-CZZALKHT.js.map +0 -1
  389. package/dist/components/p-Cn0vKqIN.js +0 -5
  390. package/dist/components/p-Cn0vKqIN.js.map +0 -1
  391. package/dist/components/p-DH341c7b.js.map +0 -1
  392. package/dist/components/p-Dmc49hX3.js +0 -5
  393. package/dist/components/p-Dmc49hX3.js.map +0 -1
  394. package/dist/components/p-QhlhRt6X.js.map +0 -1
  395. package/dist/components/p-garvKln8.js.map +0 -1
  396. package/dist/components/p-taOlygmc.js.map +0 -1
  397. package/dist/esm/bundle-CZZALKHT.js.map +0 -1
  398. package/dist/esm/multiElementInteractionHandler-C45E8VzE.js.map +0 -1
  399. package/dist/esm/queries-DWjy-LsV.js.map +0 -1
  400. package/dist/esm/utils-DJ5FvINs.js.map +0 -1
  401. package/dist/viewer/p-02384d83.entry.js +0 -5
  402. package/dist/viewer/p-02384d83.entry.js.map +0 -1
  403. package/dist/viewer/p-12a673f0.entry.js.map +0 -1
  404. package/dist/viewer/p-49578ec9.entry.js.map +0 -1
  405. package/dist/viewer/p-4c223366.entry.js +0 -5
  406. package/dist/viewer/p-4c223366.entry.js.map +0 -1
  407. package/dist/viewer/p-7m7Vr5V7.js.map +0 -1
  408. package/dist/viewer/p-8774425b.entry.js +0 -5
  409. package/dist/viewer/p-8774425b.entry.js.map +0 -1
  410. package/dist/viewer/p-9c02567d.entry.js +0 -5
  411. package/dist/viewer/p-9c02567d.entry.js.map +0 -1
  412. package/dist/viewer/p-BDy3SLKk.js +0 -5
  413. package/dist/viewer/p-CZZALKHT.js +0 -5
  414. package/dist/viewer/p-CZZALKHT.js.map +0 -1
  415. package/dist/viewer/p-Cju1inFh.js +0 -5
  416. package/dist/viewer/p-Cju1inFh.js.map +0 -1
  417. package/dist/viewer/p-UQXG8bCI.js.map +0 -1
  418. package/dist/viewer/p-c2c3579f.entry.js +0 -5
  419. package/dist/viewer/p-d5542b6a.entry.js.map +0 -1
  420. package/dist/viewer/p-e3981cf8.entry.js.map +0 -1
  421. /package/dist/components/{p-C02XtMl4.js.map → p-BHyxBmg6.js.map} +0 -0
  422. /package/dist/components/{p-CfTvpqud.js.map → p-BNRm88jS.js.map} +0 -0
  423. /package/dist/components/{p-O1_Yvjd6.js.map → p-BT9d9jRt.js.map} +0 -0
  424. /package/dist/components/{p-oDn1DcWj.js.map → p-BZDn1Vuv.js.map} +0 -0
  425. /package/dist/components/{p-VEJB73Ei.js.map → p-Bdf4AcJ2.js.map} +0 -0
  426. /package/dist/components/{p-CelQDFR0.js.map → p-C12jtCFb.js.map} +0 -0
  427. /package/dist/components/{p-Dzs4u_ZY.js.map → p-CABws4i9.js.map} +0 -0
  428. /package/dist/components/{p-CZgX-9yo.js.map → p-COznr3CH.js.map} +0 -0
  429. /package/dist/components/{p-BqeEZXPn.js.map → p-CPROw2BU.js.map} +0 -0
  430. /package/dist/components/{p-BKQMbekH.js.map → p-CWcvgy8e.js.map} +0 -0
  431. /package/dist/components/{p-CMdP8O-G.js.map → p-Ca253f0h.js.map} +0 -0
  432. /package/dist/components/{p-EG7pMA2M.js.map → p-CeZe0Qql.js.map} +0 -0
  433. /package/dist/components/{p-Due5EmBt.js.map → p-Clyxptbp.js.map} +0 -0
  434. /package/dist/components/{p-DjrtwKcK.js.map → p-CvEK3ZK1.js.map} +0 -0
  435. /package/dist/components/{p-MnZadXO8.js.map → p-D1Vdomj_.js.map} +0 -0
  436. /package/dist/components/{p-DRGCkSEK.js.map → p-D3bzgaCV.js.map} +0 -0
  437. /package/dist/components/{p-DnVcQAR9.js.map → p-D3in41xo.js.map} +0 -0
  438. /package/dist/components/{p-DCTZZ5Rd.js.map → p-DjQ6RXWP.js.map} +0 -0
  439. /package/dist/components/{p-CxzyM08j.js.map → p-DyL2wWm6.js.map} +0 -0
  440. /package/dist/components/{p-avWSFTeP.js.map → p-JvS9LLoO.js.map} +0 -0
  441. /package/dist/components/{p-BC777sCK.js.map → p-UJR-ixsy.js.map} +0 -0
  442. /package/dist/components/{p-mpsCUvSn.js.map → p-_qi2VkC2.js.map} +0 -0
  443. /package/dist/components/{p-CNprIkKd.js.map → p-rDr0x5Z7.js.map} +0 -0
  444. /package/dist/viewer/{p-510fd2e1.entry.js.map → p-2d2fa147.entry.js.map} +0 -0
  445. /package/dist/viewer/{p-fe434552.entry.js.map → p-30a5748d.entry.js.map} +0 -0
  446. /package/dist/viewer/{p-aa0359e0.entry.js.map → p-3c5dd716.entry.js.map} +0 -0
  447. /package/dist/viewer/{p-9312a936.entry.js.map → p-48020de1.entry.js.map} +0 -0
  448. /package/dist/viewer/{p-71c03352.entry.js.map → p-53f6cc59.entry.js.map} +0 -0
  449. /package/dist/viewer/{p-7b4eec65.entry.js.map → p-5cfb3047.entry.js.map} +0 -0
  450. /package/dist/viewer/{p-56e39cff.entry.js.map → p-83683307.entry.js.map} +0 -0
  451. /package/dist/viewer/{p-a108a305.entry.js.map → p-9a39315d.entry.js.map} +0 -0
  452. /package/dist/viewer/{p-82ed4346.entry.js.map → p-b79c295a.entry.js.map} +0 -0
  453. /package/dist/viewer/{p-c2454523.entry.js.map → p-cc835213.entry.js.map} +0 -0
  454. /package/dist/viewer/{p-91fca24b.entry.js.map → p-d5a57757.entry.js.map} +0 -0
  455. /package/dist/viewer/{p-a893a299.entry.js.map → p-edc2f914.entry.js.map} +0 -0
  456. /package/dist/viewer/{p-03a531d9.entry.js.map → p-ef9437ca.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["viewerMarkupCss","ViewerMarkup","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","tool","disabled","selectNew","startLineAnchorStyle","endLineAnchorStyle","centeringBehavior","scale","handleSlotChange","updatePropsOnMarkupTool","updatePropsOnMarkups","handlePointerMove","event","pointerDownPosition","Point","distance","create","clientX","clientY","toSelectMarkupId","undefined","handlePointerUp","async","el","target","markups","getMarkupElements","markup","find","m","id","selectedMarkupId","window","removeEventListener","disconnectedCallback","addMarkup","ArrowMarkup","start","end","createArrowMarkupElement","appendMarkupElement","CircleMarkup","bounds","createCircleMarkupElement","FreeformMarkup","points","createFreeformMarkupElement","Error","removeMarkup","getMarkupElement","remove","markupRemoved","emit","Array","from","hostEl","children","filter","e","isVertexViewerArrowMarkup","isVertexViewerCircleMarkup","isVertexViewerFreeformMarkup","handleSelectedMarkupIdChanged","forEach","mode","markupSelectionChanged","handlePropertyChanged","handleViewerChanged","newViewer","handleDisabledChanged","handleStartLineAnchorStyleChanged","selectedArrow","getSelectedArrowMarkup","markupChanged","handleEndLineAnchorStyleChanged","handleMarkupEnd","detail","componentOnReady","_a","getMarkupTool","reset","handleMarkupUpdated","newlyCreatedMarkup","handleMarkupPointerDown","addEventListener","componentDidLoad","render","h","Host","key","onSlotchange","updatePropsOnMarkup","appendChild","markupAdded","arrowTemplateId","element","stampTemplateWithId","document","body","console","warn","createElement","circleTemplateId","freeformTemplateId","viewer","originatingViewport","offset","classList","add","querySelector","selected"],"sources":["src/components/viewer-markup/viewer-markup.css?tag=vertex-viewer-markup&encapsulation=shadow","src/components/viewer-markup/viewer-markup.tsx"],"sourcesContent":[":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n MarkupInteraction,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\nimport { ViewerMarkupToolType } from '../viewer-markup-tool/viewer-markup-tool';\n\n@Component({\n tag: 'vertex-viewer-markup',\n styleUrl: 'viewer-markup.css',\n shadow: true,\n})\nexport class ViewerMarkup {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup to perform.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * If `true`, disables adding or editing of markup through user\n * interaction.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup. If nested within a <vertex-viewer>,\n * this property will be populated automatically.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The ID of the markup that is selected.\n */\n @Prop({ mutable: true })\n public selectedMarkupId?: string;\n\n /**\n * Indicates if new markup should be automatically selected.\n */\n @Prop()\n public selectNew = false;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * Dispatched when a new markup is added, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupAdded!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when an existing piece of markup is changed, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when a markup is removed, either through user\n * interaction or programmatically.\n */\n @Event()\n public markupRemoved!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when markup selection changes. Will either be the\n * selected element or `undefined` indicating that selection\n * was cleared.\n */\n @Event()\n public markupSelectionChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n >;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private toSelectMarkupId?: string;\n\n @State()\n private pointerDownPosition?: Point.Point;\n\n protected disconnectedCallback(): void {\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n }\n\n /**\n * Adds a new markup as a child to this component. A new markup\n * component will be created from the template specified by\n * `arrow-template-id`, `circle-template-id`, or if undefined\n * a default element will be created.\n *\n * @param markup The markup to add.\n * @returns The markup element that was created.\n * @see {@link arrowTemplateId}\n * @see {@link circleTemplateId}\n */\n @Method()\n public async addMarkup(\n markup: Markup,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n > {\n if (markup instanceof ArrowMarkup) {\n const { start, end, id } = markup;\n\n const el = this.createArrowMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.start = start;\n el.end = end;\n el.startLineAnchorStyle = this.startLineAnchorStyle;\n el.endLineAnchorStyle = this.endLineAnchorStyle;\n\n return el;\n } else if (markup instanceof CircleMarkup) {\n const { bounds, id } = markup;\n\n const el = this.createCircleMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.bounds = bounds;\n\n return el;\n } else if (markup instanceof FreeformMarkup) {\n const { bounds, points, id } = markup;\n\n const el = this.createFreeformMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.points = points;\n el.bounds = bounds;\n\n return el;\n } else {\n throw new Error(`Cannot add markup. Unknown type '${markup}'.`);\n }\n }\n\n /**\n * Removes a markup with the given ID, and returns the HTML element\n * associated to the markup. Returns `undefined` if no markup is\n * found.\n *\n * @param id The ID of the markup to remove.\n * @returns The markup element, or undefined.\n */\n @Method()\n public async removeMarkup(\n id: string,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElement(id);\n\n if (markup != null) {\n markup.remove();\n this.markupRemoved.emit(markup);\n }\n\n return markup;\n }\n\n /**\n * Returns a list of markup elements that are children of this component.\n *\n * @returns A list of all markups.\n * @see {@link getMarkupElement}\n */\n @Method()\n public async getMarkupElements(): Promise<\n Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >\n > {\n return Array.from(this.hostEl.children).filter(\n (e) =>\n isVertexViewerArrowMarkup(e) ||\n isVertexViewerCircleMarkup(e) ||\n isVertexViewerFreeformMarkup(e),\n ) as Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n }\n\n /**\n * Returns the markup element associated to the given ID.\n *\n * @param id The ID of the markup element to return.\n * @returns A markup element, or `undefined`.\n * @see {@link getMarkupElements}\n */\n @Method()\n public async getMarkupElement(\n id: string,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElements();\n return markup.find((el) => el.id === id);\n }\n\n /**\n * @ignore\n */\n @Watch('selectedMarkupId')\n protected async handleSelectedMarkupIdChanged(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => {\n if (m.id === this.selectedMarkupId) {\n m.mode = 'edit';\n this.markupSelectionChanged.emit(m);\n } else {\n m.mode = '';\n }\n });\n\n if (this.selectedMarkupId == null) {\n this.markupSelectionChanged.emit(undefined);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('freeformTemplateId')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n @Watch('offset')\n @Watch('scale')\n protected async handleViewerChanged(\n newViewer: HTMLVertexViewerElement | undefined,\n ): Promise<void> {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n }\n\n /**\n * @ignore\n */\n @Watch('disabled')\n protected handleDisabledChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('startLineAnchorStyle')\n protected async handleStartLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n if (selectedArrow != null) {\n selectedArrow.startLineAnchorStyle = this.startLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('endLineAnchorStyle')\n protected async handleEndLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n\n if (selectedArrow != null) {\n selectedArrow.endLineAnchorStyle = this.endLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('markupEnd')\n protected async handleMarkupEnd(event: CustomEvent<Markup>): Promise<void> {\n const e = event as CustomEvent<Markup>;\n const el = await this.addMarkup(e.detail);\n if (typeof el.componentOnReady === 'function') {\n await el.componentOnReady();\n }\n if (this.selectNew) {\n this.selectedMarkupId = e.detail.id;\n }\n this.getMarkupTool()?.reset();\n }\n\n /**\n * @ignore\n */\n @Listen('interactionEnd')\n protected async handleMarkupUpdated(\n event: CustomEvent<MarkupInteraction>,\n ): Promise<void> {\n const e = event as CustomEvent<MarkupInteraction>;\n\n // Do not emit the markupChanged event if the markup was just created\n if (!e.detail.newlyCreatedMarkup) {\n this.markupChanged.emit(e.detail.markup);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('pointerdown')\n protected async handleMarkupPointerDown(event: PointerEvent): Promise<void> {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (markup?.id != null && markup?.id !== '') {\n this.toSelectMarkupId = el.id;\n }\n this.pointerDownPosition = Point.create(event.clientX, event.clientY);\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <slot onSlotchange={this.handleSlotChange} />\n </Host>\n );\n }\n\n private handleSlotChange = (): void => {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY),\n ) > 2\n ) {\n this.toSelectMarkupId = undefined;\n }\n };\n\n private handlePointerUp = async (event: PointerEvent): Promise<void> => {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (\n markup?.id != null &&\n markup.id !== '' &&\n markup.id === this.toSelectMarkupId\n ) {\n this.selectedMarkupId = el.id;\n } else if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY),\n ) <= 2\n ) {\n this.selectedMarkupId = undefined;\n }\n this.toSelectMarkupId = undefined;\n this.pointerDownPosition = undefined;\n }\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n };\n\n private appendMarkupElement(\n el:\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement,\n ):\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement {\n this.updatePropsOnMarkup(el);\n this.hostEl.appendChild(el);\n this.markupAdded.emit(el);\n\n return el;\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`,\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`,\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`,\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private async updatePropsOnMarkups(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => this.updatePropsOnMarkup(m));\n }\n\n private updatePropsOnMarkup(\n element:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement,\n ): void {\n element.viewer = this.viewer;\n element.originatingViewport = this.originatingViewport;\n element.centeringBehavior = this.centeringBehavior;\n element.offset = this.offset;\n element.scale = this.scale;\n element.classList.add('viewer-markup__markup');\n }\n\n private updatePropsOnMarkupTool(): void {\n const tool = this.getMarkupTool();\n if (tool != null) {\n tool.disabled = this.disabled;\n tool.arrowTemplateId = this.arrowTemplateId;\n tool.circleTemplateId = this.circleTemplateId;\n tool.freeformTemplateId = this.freeformTemplateId;\n tool.tool = this.tool;\n tool.viewer = this.viewer;\n tool.startLineAnchorStyle = this.startLineAnchorStyle;\n tool.endLineAnchorStyle = this.endLineAnchorStyle;\n tool.originatingViewport = this.originatingViewport;\n tool.centeringBehavior = this.centeringBehavior;\n tool.offset = this.offset;\n tool.scale = this.scale;\n }\n }\n\n private getMarkupTool(): HTMLVertexViewerMarkupToolElement | undefined {\n return this.hostEl.querySelector('vertex-viewer-markup-tool') as\n | HTMLVertexViewerMarkupToolElement\n | undefined;\n }\n\n private async getSelectedArrowMarkup(): Promise<\n HTMLVertexViewerMarkupArrowElement | undefined\n > {\n if (this.selectedMarkupId != null) {\n const selected = await this.getMarkupElement(this.selectedMarkupId);\n\n return isVertexViewerArrowMarkup(selected) ? selected : undefined;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["viewerMarkupCss","ViewerMarkup","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","tool","disabled","selectNew","startLineAnchorStyle","endLineAnchorStyle","centeringBehavior","scale","handleSlotChange","updatePropsOnMarkupTool","updatePropsOnMarkups","handlePointerMove","event","pointerDownPosition","Point","distance","create","clientX","clientY","toSelectMarkupId","undefined","handlePointerUp","async","el","target","markups","getMarkupElements","markup","find","m","id","selectedMarkupId","window","removeEventListener","disconnectedCallback","addMarkup","ArrowMarkup","start","end","createArrowMarkupElement","appendMarkupElement","CircleMarkup","bounds","createCircleMarkupElement","FreeformMarkup","points","createFreeformMarkupElement","Error","removeMarkup","getMarkupElement","remove","markupRemoved","emit","Array","from","hostEl","children","filter","e","isVertexViewerArrowMarkup","isVertexViewerCircleMarkup","isVertexViewerFreeformMarkup","handleSelectedMarkupIdChanged","forEach","mode","markupSelectionChanged","handlePropertyChanged","handleViewerChanged","newViewer","handleDisabledChanged","handleStartLineAnchorStyleChanged","selectedArrow","getSelectedArrowMarkup","markupChanged","handleEndLineAnchorStyleChanged","handleMarkupEnd","detail","componentOnReady","_a","getMarkupTool","reset","handleMarkupUpdated","newlyCreatedMarkup","handleMarkupPointerDown","addEventListener","componentDidLoad","render","h","Host","key","onSlotchange","updatePropsOnMarkup","appendChild","markupAdded","arrowTemplateId","element","stampTemplateWithId","document","body","console","warn","createElement","circleTemplateId","freeformTemplateId","viewer","originatingViewport","offset","classList","add","querySelector","selected"],"sources":["src/components/viewer-markup/viewer-markup.css?tag=vertex-viewer-markup&encapsulation=shadow","src/components/viewer-markup/viewer-markup.tsx"],"sourcesContent":[":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n MarkupInteraction,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\nimport { ViewerMarkupToolType } from '../viewer-markup-tool/viewer-markup-tool';\n\n@Component({\n tag: 'vertex-viewer-markup',\n styleUrl: 'viewer-markup.css',\n shadow: true,\n})\nexport class ViewerMarkup {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup to perform.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * If `true`, disables adding or editing of markup through user\n * interaction.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup. If nested within a <vertex-viewer>,\n * this property will be populated automatically.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The ID of the markup that is selected.\n */\n @Prop({ mutable: true })\n public selectedMarkupId?: string;\n\n /**\n * Indicates if new markup should be automatically selected.\n */\n @Prop()\n public selectNew = false;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * Dispatched when a new markup is added, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupAdded!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when an existing piece of markup is changed, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when a markup is removed, either through user\n * interaction or programmatically.\n */\n @Event()\n public markupRemoved!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when markup selection changes. Will either be the\n * selected element or `undefined` indicating that selection\n * was cleared.\n */\n @Event()\n public markupSelectionChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n >;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private toSelectMarkupId?: string;\n\n @State()\n private pointerDownPosition?: Point.Point;\n\n protected disconnectedCallback(): void {\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n }\n\n /**\n * Adds a new markup as a child to this component. A new markup\n * component will be created from the template specified by\n * `arrow-template-id`, `circle-template-id`, or if undefined\n * a default element will be created.\n *\n * @param markup The markup to add.\n * @returns The markup element that was created.\n * @see {@link arrowTemplateId}\n * @see {@link circleTemplateId}\n */\n @Method()\n public async addMarkup(\n markup: Markup,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n > {\n if (markup instanceof ArrowMarkup) {\n const { start, end, id } = markup;\n\n const el = this.createArrowMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.start = start;\n el.end = end;\n el.startLineAnchorStyle = this.startLineAnchorStyle;\n el.endLineAnchorStyle = this.endLineAnchorStyle;\n\n return el;\n } else if (markup instanceof CircleMarkup) {\n const { bounds, id } = markup;\n\n const el = this.createCircleMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.bounds = bounds;\n\n return el;\n } else if (markup instanceof FreeformMarkup) {\n const { bounds, points, id } = markup;\n\n const el = this.createFreeformMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.points = points;\n el.bounds = bounds;\n\n return el;\n } else {\n throw new Error(`Cannot add markup. Unknown type '${markup}'.`);\n }\n }\n\n /**\n * Removes a markup with the given ID, and returns the HTML element\n * associated to the markup. Returns `undefined` if no markup is\n * found.\n *\n * @param id The ID of the markup to remove.\n * @returns The markup element, or undefined.\n */\n @Method()\n public async removeMarkup(\n id: string,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElement(id);\n\n if (markup != null) {\n markup.remove();\n this.markupRemoved.emit(markup);\n }\n\n return markup;\n }\n\n /**\n * Returns a list of markup elements that are children of this component.\n *\n * @returns A list of all markups.\n * @see {@link getMarkupElement}\n */\n @Method()\n public async getMarkupElements(): Promise<\n Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >\n > {\n return Array.from(this.hostEl.children).filter(\n (e) =>\n isVertexViewerArrowMarkup(e) ||\n isVertexViewerCircleMarkup(e) ||\n isVertexViewerFreeformMarkup(e),\n ) as Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n }\n\n /**\n * Returns the markup element associated to the given ID.\n *\n * @param id The ID of the markup element to return.\n * @returns A markup element, or `undefined`.\n * @see {@link getMarkupElements}\n */\n @Method()\n public async getMarkupElement(\n id: string,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElements();\n return markup.find((el) => el.id === id);\n }\n\n /**\n * @ignore\n */\n @Watch('selectedMarkupId')\n protected async handleSelectedMarkupIdChanged(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => {\n if (m.id === this.selectedMarkupId) {\n m.mode = 'edit';\n this.markupSelectionChanged.emit(m);\n } else {\n m.mode = '';\n }\n });\n\n if (this.selectedMarkupId == null) {\n this.markupSelectionChanged.emit(undefined);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('freeformTemplateId')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n @Watch('offset')\n @Watch('scale')\n protected async handleViewerChanged(\n newViewer: HTMLVertexViewerElement | undefined,\n ): Promise<void> {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n }\n\n /**\n * @ignore\n */\n @Watch('disabled')\n protected handleDisabledChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('startLineAnchorStyle')\n protected async handleStartLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n if (selectedArrow != null) {\n selectedArrow.startLineAnchorStyle = this.startLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('endLineAnchorStyle')\n protected async handleEndLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n\n if (selectedArrow != null) {\n selectedArrow.endLineAnchorStyle = this.endLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('markupEnd')\n protected async handleMarkupEnd(event: CustomEvent<Markup>): Promise<void> {\n const e = event as CustomEvent<Markup>;\n const el = await this.addMarkup(e.detail);\n if (typeof el.componentOnReady === 'function') {\n await el.componentOnReady();\n }\n if (this.selectNew) {\n this.selectedMarkupId = e.detail.id;\n }\n this.getMarkupTool()?.reset();\n }\n\n /**\n * @ignore\n */\n @Listen('interactionEnd')\n protected async handleMarkupUpdated(\n event: CustomEvent<MarkupInteraction>,\n ): Promise<void> {\n const e = event as CustomEvent<MarkupInteraction>;\n\n // Do not emit the markupChanged event if the markup was just created\n if (!e.detail.newlyCreatedMarkup) {\n this.markupChanged.emit(e.detail.markup);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('pointerdown')\n protected async handleMarkupPointerDown(event: PointerEvent): Promise<void> {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (markup?.id != null && markup?.id !== '') {\n this.toSelectMarkupId = el.id;\n }\n this.pointerDownPosition = Point.create(event.clientX, event.clientY);\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <slot onSlotchange={this.handleSlotChange} />\n </Host>\n );\n }\n\n private handleSlotChange = (): void => {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY),\n ) > 2\n ) {\n this.toSelectMarkupId = undefined;\n }\n };\n\n private handlePointerUp = async (event: PointerEvent): Promise<void> => {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (\n markup?.id != null &&\n markup.id !== '' &&\n markup.id === this.toSelectMarkupId\n ) {\n this.selectedMarkupId = el.id;\n } else if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY),\n ) <= 2\n ) {\n this.selectedMarkupId = undefined;\n }\n this.toSelectMarkupId = undefined;\n this.pointerDownPosition = undefined;\n }\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n };\n\n private appendMarkupElement(\n el:\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement,\n ):\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement {\n this.updatePropsOnMarkup(el);\n this.hostEl.appendChild(el);\n this.markupAdded.emit(el);\n\n return el;\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`,\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`,\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`,\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private async updatePropsOnMarkups(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => this.updatePropsOnMarkup(m));\n }\n\n private updatePropsOnMarkup(\n element:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement,\n ): void {\n element.viewer = this.viewer;\n element.originatingViewport = this.originatingViewport;\n element.centeringBehavior = this.centeringBehavior;\n element.offset = this.offset;\n element.scale = this.scale;\n element.classList.add('viewer-markup__markup');\n }\n\n private updatePropsOnMarkupTool(): void {\n const tool = this.getMarkupTool();\n if (tool != null) {\n tool.disabled = this.disabled;\n tool.arrowTemplateId = this.arrowTemplateId;\n tool.circleTemplateId = this.circleTemplateId;\n tool.freeformTemplateId = this.freeformTemplateId;\n tool.tool = this.tool;\n tool.viewer = this.viewer;\n tool.startLineAnchorStyle = this.startLineAnchorStyle;\n tool.endLineAnchorStyle = this.endLineAnchorStyle;\n tool.originatingViewport = this.originatingViewport;\n tool.centeringBehavior = this.centeringBehavior;\n tool.offset = this.offset;\n tool.scale = this.scale;\n }\n }\n\n private getMarkupTool(): HTMLVertexViewerMarkupToolElement | undefined {\n return this.hostEl.querySelector('vertex-viewer-markup-tool') as\n HTMLVertexViewerMarkupToolElement | undefined;\n }\n\n private async getSelectedArrowMarkup(): Promise<\n HTMLVertexViewerMarkupArrowElement | undefined\n > {\n if (this.selectedMarkupId != null) {\n const selected = await this.getMarkupElement(this.selectedMarkupId);\n\n return isVertexViewerArrowMarkup(selected) ? selected : undefined;\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{h as e,F as t,t as s,p as n,H as r,e as i}from"./p-Bb32XUUS.js";import"./p-BKQMbekH.js";import"./p-FRKLa468.js";import"./p-ux1ckSDN.js";import"./p-5kcpg4MZ.js";import{D as a,A as l,h as o}from"./p-DjrtwKcK.js";import{M as d}from"./p-BY3lpCm6.js";import{v as u}from"./p-CZZALKHT.js";import{c as h}from"./p-C6gMOKYg.js";import{_ as m}from"./p-C-NyjLsm.js";function v(e){return e.toLowerCase()}var c=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var f=/[^A-Z0-9]+/gi;function g(e,t){if(t===void 0){t={}}var s=t.splitRegexp,n=s===void 0?c:s,r=t.stripRegexp,i=r===void 0?f:r,a=t.transform,l=a===void 0?v:a,o=t.delimiter,d=o===void 0?" ":o;var u=p(p(e,n,"$1\0$2"),i,"\0");var h=0;var m=u.length;while(u.charAt(h)==="\0")h++;while(u.charAt(m-1)==="\0")m--;return u.slice(h,m).split("\0").map(l).join(d)}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 y(e,t){if(t===void 0){t={}}return g(e,m({delimiter:"."},t))}function w(e,t){if(t===void 0){t={}}return y(e,m({delimiter:"-"},t))}const M=({label:t,...s},n)=>e("div",{...s,class:"measurement-details-entry"},e("div",{class:h("measurement-details-entry-label",w(t))},t,":"),n);const b=({result:s,formatter:n,overlays:r,onShowOverlay:i,onHideOverlay:a})=>{const l=u.subtract(s.point1,s.point2);return e(t,null,e(M,{label:"Dist",onMouseEnter:()=>i(r===null||r===void 0?void 0:r.addLineFromResult(s)),onMouseLeave:a},n(s.distance)),e(M,{label:"X",onMouseEnter:()=>i(r===null||r===void 0?void 0:r.addDistanceVectorFromResult(s)),onMouseLeave:a},n(l.x)),e(M,{label:"Y",onMouseEnter:()=>i(r===null||r===void 0?void 0:r.addDistanceVectorFromResult(s)),onMouseLeave:a},n(l.y)),e(M,{label:"Z",onMouseEnter:()=>i(r===null||r===void 0?void 0:r.addDistanceVectorFromResult(s)),onMouseLeave:a},n(l.z)))};const C=({result:t,formatter:s})=>e(M,{label:"Angle"},s(t.angle));const U=({result:t,formatter:s})=>e(M,{label:"Parallel Dist"},s(t.distance));const x=({result:t,formatter:s})=>e(M,{label:"Area"},s(t.area));const A=()=>`: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 O=n(class t extends r{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.measurementModel=new d;this.distanceUnits="millimeters";this.angleUnits="degrees";this.fractionalDigits=2;this.distanceMeasurementUnits=new a(this.distanceUnits);this.angleMeasurementUnits=new l(this.angleUnits);this.areaMeasurementUnits=new o(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 a(this.distanceUnits);this.areaMeasurementUnits=new o(this.distanceUnits)}handleAngleUnitsChanged(){this.angleMeasurementUnits=new l(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 n=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 r=((s=(t=this.measurementOutcome)===null||t===void 0?void 0:t.results)!==null&&s!==void 0?s:[]).filter(n);return e(i,null,this.renderResult("planar-angle",r,(t=>e(C,{result:t,overlays:this.measurementOverlays,formatter:this.makeAngleFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("planar-distance",r,(t=>e(U,{result:t,overlays:this.measurementOverlays,formatter:this.makeDistanceFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("surface-area",r,(t=>e(x,{result:t,overlays:this.measurementOverlays,formatter:this.makeAreaFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("minimum-distance",r,(t=>e(b,{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 n=this.getResultForType(e,t);return n!=null?s(n):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 n=>{const r=e(n);if(s!=null){return s(r)}else{return this.formatValue(r,t)}}}formatValue(e,t){var s,n;const r=e.toFixed(this.fractionalDigits);const i=(n=(s=this.measurementOutcome)===null||s===void 0?void 0:s.isApproximate)!==null&&n!==void 0?n:false;return`${i?"~"+r:r} ${t.abbreviatedName}`}static get watchers(){return{distanceUnits:[{handleDistanceUnitsChanged:1}],angleUnits:[{handleAngleUnitsChanged:1}],measurementModel:[{handleMeasurementModelChanged:1}],resultTypes:[{handleResultTypesChanged:0}]}}static get style(){return A()}},[1,"vertex-viewer-measurement-details",{measurementModel:[16],measurementOverlays:[16],measurementOutcome:[1040],distanceUnits:[1,"distance-units"],angleUnits:[1,"angle-units"],fractionalDigits:[2,"fractional-digits"],distanceFormatter:[16],angleFormatter:[16],areaFormatter:[16],resultTypes:[16],overlay:[32],distanceMeasurementUnits:[32],angleMeasurementUnits:[32],areaMeasurementUnits:[32]},undefined,{distanceUnits:[{handleDistanceUnitsChanged:1}],angleUnits:[{handleAngleUnitsChanged:1}],measurementModel:[{handleMeasurementModelChanged:1}],resultTypes:[{handleResultTypesChanged:0}]}]);function j(){if(typeof customElements==="undefined"){return}const e=["vertex-viewer-measurement-details"];e.forEach((e=>{switch(e){case"vertex-viewer-measurement-details":if(!customElements.get(s(e))){customElements.define(s(e),O)}break}}))}j();const F=O;const k=j;export{F as VertexViewerMeasurementDetails,k as defineCustomElement};
4
+ import{h as e,F as t,t as s,p as n,H as r,e as i}from"./p-Bb32XUUS.js";import"./p-CWcvgy8e.js";import"./p-FRKLa468.js";import"./p-ux1ckSDN.js";import"./p-5kcpg4MZ.js";import{D as a,A as l,h as o}from"./p-CvEK3ZK1.js";import{M as d}from"./p-BY3lpCm6.js";import{v as u}from"./p-2UsvOTHJ.js";import{c as h}from"./p-C6gMOKYg.js";import{_ as m}from"./p-C-NyjLsm.js";function v(e){return e.toLowerCase()}var c=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g];var f=/[^A-Z0-9]+/gi;function g(e,t){if(t===void 0){t={}}var s=t.splitRegexp,n=s===void 0?c:s,r=t.stripRegexp,i=r===void 0?f:r,a=t.transform,l=a===void 0?v:a,o=t.delimiter,d=o===void 0?" ":o;var u=p(p(e,n,"$1\0$2"),i,"\0");var h=0;var m=u.length;while(u.charAt(h)==="\0")h++;while(u.charAt(m-1)==="\0")m--;return u.slice(h,m).split("\0").map(l).join(d)}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 y(e,t){if(t===void 0){t={}}return g(e,m({delimiter:"."},t))}function w(e,t){if(t===void 0){t={}}return y(e,m({delimiter:"-"},t))}const M=({label:t,...s},n)=>e("div",{...s,class:"measurement-details-entry"},e("div",{class:h("measurement-details-entry-label",w(t))},t,":"),n);const C=({result:s,formatter:n,overlays:r,onShowOverlay:i,onHideOverlay:a})=>{const l=u.subtract(s.point1,s.point2);return e(t,null,e(M,{label:"Dist",onMouseEnter:()=>i(r===null||r===void 0?void 0:r.addLineFromResult(s)),onMouseLeave:a},n(s.distance)),e(M,{label:"X",onMouseEnter:()=>i(r===null||r===void 0?void 0:r.addDistanceVectorFromResult(s)),onMouseLeave:a},n(l.x)),e(M,{label:"Y",onMouseEnter:()=>i(r===null||r===void 0?void 0:r.addDistanceVectorFromResult(s)),onMouseLeave:a},n(l.y)),e(M,{label:"Z",onMouseEnter:()=>i(r===null||r===void 0?void 0:r.addDistanceVectorFromResult(s)),onMouseLeave:a},n(l.z)))};const b=({result:t,formatter:s})=>e(M,{label:"Angle"},s(t.angle));const U=({result:t,formatter:s})=>e(M,{label:"Parallel Dist"},s(t.distance));const O=({result:t,formatter:s})=>e(M,{label:"Area"},s(t.area));const x=()=>`: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=n(class t extends r{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.measurementModel=new d;this.distanceUnits="millimeters";this.angleUnits="degrees";this.fractionalDigits=2;this.distanceMeasurementUnits=new a(this.distanceUnits);this.angleMeasurementUnits=new l(this.angleUnits);this.areaMeasurementUnits=new o(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 a(this.distanceUnits);this.areaMeasurementUnits=new o(this.distanceUnits)}handleAngleUnitsChanged(){this.angleMeasurementUnits=new l(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 n=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 r=((s=(t=this.measurementOutcome)===null||t===void 0?void 0:t.results)!==null&&s!==void 0?s:[]).filter(n);return e(i,null,this.renderResult("planar-angle",r,(t=>e(b,{result:t,overlays:this.measurementOverlays,formatter:this.makeAngleFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("planar-distance",r,(t=>e(U,{result:t,overlays:this.measurementOverlays,formatter:this.makeDistanceFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("surface-area",r,(t=>e(O,{result:t,overlays:this.measurementOverlays,formatter:this.makeAreaFormatter(),onShowOverlay:this.handleShowOverlay,onHideOverlay:this.handleHideOverlay}))),this.renderResult("minimum-distance",r,(t=>e(C,{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 n=this.getResultForType(e,t);return n!=null?s(n):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 n=>{const r=e(n);if(s!=null){return s(r)}else{return this.formatValue(r,t)}}}formatValue(e,t){var s,n;const r=e.toFixed(this.fractionalDigits);const i=(n=(s=this.measurementOutcome)===null||s===void 0?void 0:s.isApproximate)!==null&&n!==void 0?n:false;return`${i?"~"+r:r} ${t.abbreviatedName}`}static get watchers(){return{distanceUnits:[{handleDistanceUnitsChanged:1}],angleUnits:[{handleAngleUnitsChanged:1}],measurementModel:[{handleMeasurementModelChanged:1}],resultTypes:[{handleResultTypesChanged:0}]}}static get style(){return x()}},[1,"vertex-viewer-measurement-details",{measurementModel:[16],measurementOverlays:[16],measurementOutcome:[1040],distanceUnits:[1,"distance-units"],angleUnits:[1,"angle-units"],fractionalDigits:[2,"fractional-digits"],distanceFormatter:[16],angleFormatter:[16],areaFormatter:[16],resultTypes:[16],overlay:[32],distanceMeasurementUnits:[32],angleMeasurementUnits:[32],areaMeasurementUnits:[32]},undefined,{distanceUnits:[{handleDistanceUnitsChanged:1}],angleUnits:[{handleAngleUnitsChanged:1}],measurementModel:[{handleMeasurementModelChanged:1}],resultTypes:[{handleResultTypesChanged:0}]}]);function j(){if(typeof customElements==="undefined"){return}const e=["vertex-viewer-measurement-details"];e.forEach((e=>{switch(e){case"vertex-viewer-measurement-details":if(!customElements.get(s(e))){customElements.define(s(e),A)}break}}))}j();const F=A;const k=j;export{F as VertexViewerMeasurementDetails,k as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-measurement-details.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,t as e,p as i,H as n,d as s,e as r}from"./p-Bb32XUUS.js";import{v as a,a as o,p as h,l}from"./p-CZZALKHT.js";import{m as d}from"./p-DxMDDbmh.js";import{b as c,g as u}from"./p-BqeEZXPn.js";import"./p-BKQMbekH.js";import"./p-FRKLa468.js";import"./p-ux1ckSDN.js";import"./p-5kcpg4MZ.js";import{o as m,D as v}from"./p-DjrtwKcK.js";import{M as p}from"./p-BY3lpCm6.js";import{M as w}from"./p-CxzyM08j.js";import{m as f}from"./p-mpsCUvSn.js";import{V as g}from"./p-EG7pMA2M.js";import{E as b,m as y}from"./p-CDM7zNn0.js";import{d as C,g as E}from"./p-DnVcQAR9.js";import{c as M}from"./p-C6gMOKYg.js";import{d as P}from"./p-oDn1DcWj.js";const x=16;const D=10;function k(t){return t.getBoundingClientRect()}class j{constructor(t,e,i,n){this.stencil=t;this.depthBuffer=e;this.viewport=i;this.camera=n}hitTest(t){const e=this.viewport.transformPointToFrame(t,this.depthBuffer);if(this.stencil!=null){const i=this.viewport.transformPointToFrame(t,this.stencil);return this.stencil.hitTest(i)||this.depthBuffer.hitTest(e)}else{return this.depthBuffer.hitTest(e)}}snapToNearestPixel(t,e){if(this.stencil!=null){const i=this.viewport.transformPointToFrame(t,this.stencil);const n=this.stencil.snapToNearestPixel(i,e);return this.viewport.transformPointToViewport(n,this.stencil)}else{return t}}transformPointToWorld(t,{ignoreHitTest:e=false}={}){const i=this.pickDepthBuffer(t);if(i!=null){return this.viewport.transformPointToWorldSpace(t,i)}else if(e){return this.viewport.transformPointToWorldSpace(t,this.depthBuffer)}}pickDepthBuffer(t){if(this.stencil!=null){const e=this.viewport.transformPointToFrame(t,this.stencil);if(this.stencil.hitTest(e)){return this.stencil.depthBuffer}}const e=this.viewport.transformPointToFrame(t,this.depthBuffer);return this.depthBuffer.hitTest(e)?this.depthBuffer:undefined}}class A{constructor(t){this.model=t}newMeasurement(t,e){const i=e.hitTester().transformPointToWorld(t);return i!=null?new I(t,i,this.model):undefined}editMeasurement(t){const e=this.model.getMeasurement();if(e==null){throw new Error("Cannot edit measurement. Measurement is empty.")}return t==="start"?new B(e,this.model):new T(e,this.model)}clearIndicator(){this.model.setIndicator(undefined)}moveIndicator(t,e){const i=e.hitTester().transformPointToWorld(t);this.model.setIndicator(i);return i!=null}}class S{constructor(){this.measurementChanged=new b;this.indicatorChanged=new b}static empty(){return new S}getMeasurement(){return this.measurement}setMeasurement(t){if(this.measurement!==t){this.measurement=t;this.measurementChanged.emit(t)}}setMeasurementFromValues(t,e,i){if(t!=null&&e!=null){const n=i?V(t,e):O(t,e);this.setMeasurement(n)}else{this.setMeasurement(undefined)}}onMeasurementChanged(t){return this.measurementChanged.on(t)}getIndicator(){return this.indicator}setIndicator(t){if(this.indicator!==t){this.indicator=t;this.indicatorChanged.emit(t)}}onIndicatorChanged(t){return this.indicatorChanged.on(t)}}class I{constructor(t,e,i){this.pt=t;this.world=e;this.model=i;this.hitWorldValid=true;this.preventUpdate=false}fetchStartIfMissing(t){if(this.pendingStart==null){this.pendingStart=this.fetchStart(t)}}async fetchStart(t){const e=await t.raycaster();const i=await H(e,this.pt);if(i==null){const e=t.hitTester().transformPointToWorld(this.pt);this.hitWorld=e;this.hitWorldValid=false}else{this.hitWorld=i;this.hitWorldValid=true}}update(t,e){var i;if(!this.preventUpdate){this.fetchStartIfMissing(e);const n=e.hitTester().transformPointToWorld(t,{ignoreHitTest:true});const s=e.hitTester().hitTest(t);const r=(i=this.hitWorld)!==null&&i!==void 0?i:this.world;if(n==null){throw new Error("Cannot update new measurement interaction. End point is empty.")}else if(!this.hitWorldValid||!s){this.model.setIndicator(n);this.setMeasurement(O(r,n))}else{this.model.setIndicator(n);this.setMeasurement(V(r,n))}}}async finish(t,e){var i;this.preventUpdate=true;this.fetchStartIfMissing(e);await this.pendingStart;this.model.setIndicator(undefined);const n=await e.raycaster();const s=await H(n,t);const r=(i=this.hitWorld)!==null&&i!==void 0?i:this.world;this.preventUpdate=false;if(s==null){const i=e.hitTester().transformPointToWorld(t,{ignoreHitTest:true});if(i==null){throw new Error("Cannot complete new measurement interaction. End point is empty.")}return this.setMeasurement(O(r,i))}else if(!this.hitWorldValid){return this.setMeasurement(O(r,s))}else{return this.setMeasurement(V(r,s))}}setMeasurement(t){this.model.setMeasurement(t);return t}}class L{constructor(t,e){this.measurement=t;this.model=e}update(t,e){const i=e.hitTester().transformPointToWorld(t,{ignoreHitTest:true});const n=e.hitTester().hitTest(t);if(i==null){throw new Error("Cannot update new measurement interaction. End point is empty.")}else if(!n){this.model.setIndicator(i);this.setMeasurement(this.getInvalidMeasurement(i))}else{this.model.setIndicator(i);this.setMeasurement(this.getValidMeasurement(i))}}async finish(t,e){const i=await e.raycaster();const n=await H(i,t);this.model.setIndicator(undefined);if(n==null){const i=e.hitTester().transformPointToWorld(t,{ignoreHitTest:true});if(i==null){throw new Error("Cannot complete edit measurement interaction. End point is empty.")}return this.setMeasurement(this.getInvalidMeasurement(i))}else{return this.setMeasurement(this.getValidMeasurement(n))}}setMeasurement(t){this.model.setMeasurement(t);return t}}class B extends L{constructor(t,e){super(t,e)}getInvalidMeasurement(t){return O(t,this.measurement.end)}getValidMeasurement(t){return V(t,this.measurement.end)}}class T extends L{constructor(t,e){super(t,e)}getInvalidMeasurement(t){return O(this.measurement.start,t)}getValidMeasurement(t){return V(this.measurement.start,t)}}async function H(t,e){var i;const n=await t.hitItems(e);const[s]=(i=n===null||n===void 0?void 0:n.hits)!==null&&i!==void 0?i:[];if((s===null||s===void 0?void 0:s.hitPoint)!=null){const t=m(s.hitPoint);if(y.isInvalid(t)){throw new Error(`Invalid hit response [${t.errors.join(",")}]`)}return t}else return undefined}function V(t,e){return{start:t,end:e,distance:a.distance(t,e),valid:true}}function O(t,e){return{start:t,end:e,valid:false}}const U=({startPt:e,endPt:i,centerPt:n,indicatorPt:s,distance:r,anchorLabelOffset:a,lineCapLength:l,linePointerEvents:d,hideStartAnchor:u,hideEndAnchor:m,onStartAnchorPointerDown:v,onEndAnchorPointerDown:p})=>{const w=e!=null&&i!=null?o.fromPoints(e,i):undefined;const f=w!=null&&e!=null&&a!=null?h.add(e,h.polar(-a,w)):undefined;const g=w!=null&&i!=null&&a!=null?h.add(i,h.polar(a,w)):undefined;return t("div",null,e!=null&&i!=null&&t("vertex-viewer-measurement-line",{class:M("line",{"hide-start-line-cap":u,"hide-end-line-cap":m}),start:e,end:i,capLength:l,pointerEvents:d}),!u&&e!=null&&t("div",{id:"start-anchor",class:"anchor anchor-start",style:{transform:c(e)},onPointerDown:v},t("slot",{name:"start-anchor"},t("div",{class:"anchor-placeholder"}))),!u&&f&&t("div",{class:"anchor-label anchor-label-start",style:{transform:c(f)}},t("slot",{name:"start-label"})),!m&&i!=null&&t("div",{id:"end-anchor",class:"anchor anchor-end",style:{transform:c(i)},onPointerDown:p},t("slot",{name:"end-anchor"},t("div",{class:"anchor-placeholder"}))),!m&&g&&t("div",{class:"anchor-label anchor-label-end",style:{transform:c(g)}},t("slot",{name:"end-label"})),n!=null&&t("div",{id:"label",class:"distance-label",style:{transform:c(n)}},r),s!=null&&t("div",{class:"indicator",style:{transform:c(s)}},t("slot",{name:"indicator"},t("div",{class:"indicator-placeholder"}))))};const z=()=>`:host{--viewer-measurement-distance-accent-color:var(--neutral-900);--viewer-measurement-distance-contrast-color:var(--white);--viewer-measurement-distance-invalid-accent-color:var(--red-600);--viewer-measurement-distance-invalid-contrast-color:var(--white);--viewer-measurement-distance-line-stroke-width:1.25px;--viewer-measurement-distance-line-fill-width:2px;--viewer-measurement-distance-distance-border:1px solid var(--viewer-measurement-distance-accent-color);--viewer-measurement-distance-distance-border-radius:0.25rem;--viewer-measurement-distance-distance-padding:0.375rem 0.5rem;color:var(--viewer-measurement-distance-accent-color);font-size:0.75rem;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}:host([invalid]:not([invalid='false'])){--viewer-measurement-distance-accent-color:var( --viewer-measurement-distance-invalid-accent-color ) !important;--viewer-measurement-distance-contrast-color:var( --viewer-measurement-distance-invalid-contrast-color ) !important}.line{--viewer-measurement-line-stroke:var( --viewer-measurement-distance-contrast-color );--viewer-measurement-line-stroke-opacity:0.75;--viewer-measurement-line-stroke-width:var( --viewer-measurement-distance-line-stroke-width );--viewer-measurement-line-fill:var( --viewer-measurement-distance-accent-color );--viewer-measurement-line-fill-width:var( --viewer-measurement-distance-line-fill-width );position:absolute;width:100%;height:100%}.anchor{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;pointer-events:auto}:host([interacting-anchor='start']) .anchor-start,:host([interacting-anchor='start']) .anchor-label-start{visibility:hidden}.hide-start-line-cap,:host([interacting-anchor='start']) .line{--viewer-measurement-line-start-cap-visibility:hidden}:host([interacting-anchor='end']) .anchor-end,:host([interacting-anchor='end']) .anchor-label-end{visibility:hidden}.hide-end-line-cap,:host([interacting-anchor='end']) .line{--viewer-measurement-line-end-cap-visibility:hidden}.anchor-label{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;pointer-events:auto}:host(:not([mode=''])){cursor:inherit}:host(:not([mode=''])) .anchor{cursor:move}:host([mode='']) .anchor{visibility:hidden}.anchor-placeholder{background:var(--viewer-measurement-distance-contrast-color);width:12px;height:12px;border-radius:50%;box-sizing:border-box}:host(:not([mode=''])) .anchor-placeholder{border:2px solid var(--viewer-measurement-distance-accent-color);background:var(--viewer-measurement-distance-contrast-color)}:host([mode='']) .distance-label{color:var(--viewer-measurement-distance-contrast-color);background:var(--viewer-measurement-distance-accent-color)}.distance-label{position:absolute;background:var(--viewer-measurement-distance-contrast-color);border:var(--viewer-measurement-distance-distance-border);border-radius:var(--viewer-measurement-distance-distance-border-radius);padding:var(--viewer-measurement-distance-distance-padding);pointer-events:auto}.indicator{position:absolute}.indicator-placeholder{background:var(--viewer-measurement-distance-accent-color);border:1px solid var(--viewer-measurement-distance-contrast-color);width:6px;height:6px;border-radius:50%;box-sizing:border-box}`;const K=3;const F=i(class e extends n{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.editBegin=s(this,"editBegin");this.editEnd=s(this,"editEnd");this.showAxisReferenceLines=false;this.snapDistance=x;this.units="millimeters";this.fractionalDigits=2;this.anchorLabelOffset=20;this.lineCapLength=D;this.mode="";this.interactingAnchor="none";this.invalid=false;this.measurementModel=new p;this.viewport=new g(0,0);this.interactionCount=0;this.invalidateStateCounter=0;this.stateMap={};this.measurementUnits=new v(this.units);this.model=S.empty();this.controller=new A(this.model);this.overlays=new w;this.isUserInteractingWithModel=false;this.handleFrameDrawn=()=>{this.invalidateState()};this.clearIndicator=()=>{this.controller.clearIndicator()};this.updateStartAnchor=async t=>{await this.getStencilBuffer();if(this.interactionCount===0){const e=u(t,this.elementBounds);const i=this.snapPoint(e,t);await this.updateIndicator(i)}};this.newMeasurement=t=>{if(this.interactionCount===0&&t.button===0){const e=t=>{const e=()=>{window.removeEventListener("pointerup",i);window.removeEventListener("pointermove",n)};const i=async()=>{e();t()};const n=t=>{if(t.buttons>0){e()}};window.addEventListener("pointermove",n);window.addEventListener("pointerup",i)};const i=t=>{let e=h.create(0,0);const i=i=>{const n=h.distance(e,u(i,this.elementBounds));if(n>=K){t()}};const n=()=>{window.removeEventListener("pointermove",i);window.removeEventListener("pointerup",s)};const s=()=>n();const r=t=>{e=u(t,this.elementBounds);window.addEventListener("pointermove",i);window.addEventListener("pointerup",s)};window.addEventListener("pointerdown",r);return{dispose:()=>window.removeEventListener("pointerdown",r)}};const n=()=>{const t=i((()=>{var t;this.isUserInteractingWithModel=true;(t=this.stateMap.hoverCursor)===null||t===void 0?void 0:t.dispose()}));const e=()=>{window.removeEventListener("pointermove",n);window.removeEventListener("pointerup",s);t.dispose()};const n=this.createInteractionMoveHandler();const s=async t=>{var i;if(t.button===0){if(this.isUserInteractingWithModel){this.isUserInteractingWithModel=false}else{const n=this.getHitProvider();if(n!=null){const s=u(t,this.elementBounds);const r=this.snapPoint(s,t);await((i=this.interaction)===null||i===void 0?void 0:i.finish(r,n));e();this.updateMeasurementPropsFromModel();this.endEditing()}}}};this.beginEditing("replace","end");this.newInteractionHandler={dispose:e};window.addEventListener("pointermove",n);window.addEventListener("pointerup",s)};const s=this.getHitProvider();if(s!=null){const i=u(t,this.elementBounds);const r=this.snapPoint(i,t);this.interaction=this.controller.newMeasurement(r,s);if(this.interaction!=null){e(n)}}}}}async computeElementMetrics(){var t,e,i;const n=(t=this.hostEl.shadowRoot)===null||t===void 0?void 0:t.getElementById("start-anchor");const s=(e=this.hostEl.shadowRoot)===null||e===void 0?void 0:e.getElementById("end-anchor");const r=(i=this.hostEl.shadowRoot)===null||i===void 0?void 0:i.getElementById("label");if(n!=null&&s!=null&&r!=null){return{startAnchor:n.getBoundingClientRect(),endAnchor:s.getBoundingClientRect(),label:r.getBoundingClientRect()}}else{return undefined}}connectedCallback(){this.setDepthBuffers()}disconnectedCallback(){var t,e;(t=this.stateMap.hoverCursor)===null||t===void 0?void 0:t.dispose();(e=this.newInteractionHandler)===null||e===void 0?void 0:e.dispose();this.resetDepthBuffers()}async componentWillLoad(){this.updatePropsFromJson();this.model.setMeasurementFromValues(this.start,this.end,!this.invalid);await this.getStencilBuffer();this.updateViewport();this.setDepthBuffers();await this.handleViewerChanged(this.viewer);await this.handleModeChanged();await this.computePropsAndState();this.model.onIndicatorChanged((t=>{this.indicatorPt=t}))}componentDidLoad(){const t=new ResizeObserver((()=>this.updateViewport()));t.observe(this.hostEl)}async componentWillUpdate(){await this.computePropsAndState()}render(){return t(r,{key:"58113224139c37a54bf9329ed27e6a8983d5cccd"},this.showAxisReferenceLines&&t("vertex-viewer-measurement-overlays",{key:"d2166c4a965761f472f5b3323844d82980baa29f",measurementOverlays:this.overlays,viewer:this.viewer}),this.renderMeasurement())}renderMeasurement(){const e=this.computeElementPositions();const{startPt:i,endPt:n,labelPt:s,indicatorPt:r,hideStart:a,hideEnd:o}=e;const h=this.formatDistance(this.distance);if(this.mode==="edit"||this.mode==="replace"){return t(U,{startPt:i,endPt:n,centerPt:s,indicatorPt:r,distance:h,anchorLabelOffset:this.anchorLabelOffset,lineCapLength:this.lineCapLength,hideStartAnchor:a,hideEndAnchor:o,onStartAnchorPointerDown:this.handleEditAnchor("start"),onEndAnchorPointerDown:this.handleEditAnchor("end")})}else{return t(U,{startPt:i,endPt:n,centerPt:s,indicatorPt:this.indicatorPt,distance:h,hideStartAnchor:a,hideEndAnchor:o,anchorLabelOffset:this.anchorLabelOffset,lineCapLength:this.lineCapLength,linePointerEvents:"painted"})}}async handleViewerChanged(t,e){if(e!=null){e.removeEventListener("frameDrawn",this.handleFrameDrawn);await this.removeInteractionListeners(e)}if(t!=null){t.addEventListener("frameDrawn",this.handleFrameDrawn);await this.addInteractionListeners(t)}}handleUnitsChanged(){this.measurementUnits=new v(this.units)}handleCameraChanged(){this.updateCamera()}async handleModeChanged(){var t;if(this.mode===""){(t=this.stateMap.hoverCursor)===null||t===void 0?void 0:t.dispose()}if(this.viewer!=null){await this.removeInteractionListeners(this.viewer);await this.addInteractionListeners(this.viewer)}}handleStartChanged(){this.updateInteractionModel()}handleEndChanged(){this.updateInteractionModel()}handleInvalidChanged(){this.updateInteractionModel()}async computePropsAndState(){this.updateCamera();await this.updateDepthBuffer();this.updateMeasurementPropsFromModel();this.updateOverlays()}updateOverlays(){var t;(t=this.overlay)===null||t===void 0?void 0:t.dispose();if(this.showAxisReferenceLines&&this.interactionCount===0&&!this.invalid&&this.start!=null&&this.end!=null){this.overlay=this.overlays.addDistanceVector(this.start,this.end)}}async setCursor(t){var e,i;(e=this.stateMap.hoverCursor)===null||e===void 0?void 0:e.dispose();if(!this.isUserInteractingWithModel){this.stateMap.hoverCursor=await((i=this.viewer)===null||i===void 0?void 0:i.addCursor(t))}}computeElementPositions(){if(this.mode==="replace"){return this.computeReplaceElementPositions()}else{return this.computeEditOrViewElementPositions()}}computeEditOrViewElementPositions(){const t=this.model.getMeasurement();if(this.internalCamera!=null&&t!=null){return this.computeLineElementPositions(l.create(t))}else{return{}}}computeReplaceElementPositions(){if(this.internalCamera!=null){const t=this.model.getMeasurement();const e=t!=null?this.computeLineElementPositions(l.create(t)):{};const i=this.indicatorPt!=null?{indicatorPt:this.viewport.transformWorldToViewport(this.indicatorPt,this.internalCamera.projectionViewMatrix)}:{};return{...e,...i}}else{return{}}}computeLineElementPositions(t){if(this.internalCamera!=null){return E(t,this.interactingAnchor,{viewport:this.viewport,camera:this.internalCamera})}else{return{}}}updateCamera(){var t,e;this.internalCamera=this.camera||((e=(t=this.viewer)===null||t===void 0?void 0:t.frame)===null||e===void 0?void 0:e.scene.camera)}async updateDepthBuffer(){var t,e;this.stateMap.depthBuffer=await((e=(t=this.viewer)===null||t===void 0?void 0:t.frame)===null||e===void 0?void 0:e.depthBuffer())}updateViewport(){const t=k(this.hostEl);this.viewport=new g(t.width,t.height);this.elementBounds=t}updatePropsFromJson(){var t,e;this.start=R((t=this.startJson)!==null&&t!==void 0?t:this.start);this.end=R((e=this.endJson)!==null&&e!==void 0?e:this.end)}updateInteractionModel(){this.model.setMeasurementFromValues(this.start,this.end,!this.invalid)}invalidateState(){this.invalidateStateCounter=this.invalidateStateCounter+1}async addInteractionListeners(t){const e=await t.getInteractionTarget_DEPRECATED();if(this.mode==="replace"){e.addEventListener("pointermove",this.updateStartAnchor);e.addEventListener("pointerdown",this.newMeasurement);e.addEventListener("pointerleave",this.clearIndicator)}}async removeInteractionListeners(t){const e=await t.getInteractionTarget_DEPRECATED();e.removeEventListener("pointermove",this.updateStartAnchor);e.removeEventListener("pointerdown",this.newMeasurement);e.removeEventListener("pointerleave",this.clearIndicator)}handleEditAnchor(t){if(this.mode==="edit"||this.mode==="replace"){const e=this.createInteractionMoveHandler();const i=async t=>{var n;const s=this.getHitProvider();if(s!=null){window.removeEventListener("pointermove",e);window.removeEventListener("pointerup",i);const r=u(t,this.elementBounds);const a=this.snapPoint(r,t);await((n=this.interaction)===null||n===void 0?void 0:n.finish(a,s));this.updateMeasurementPropsFromModel();this.endEditing()}};return async n=>{await this.getStencilBuffer();if(n.button===0){this.beginEditing("edit",t);this.interaction=this.controller.editMeasurement(t);window.addEventListener("pointermove",e);window.addEventListener("pointerup",i)}}}}createInteractionMoveHandler(){return async t=>{var e;const i=this.getHitProvider();if(this.elementBounds!=null&&i!=null){t.preventDefault();await this.getStencilBuffer();const n=u(t,this.elementBounds);const s=this.snapPoint(n,t);(e=this.interaction)===null||e===void 0?void 0:e.update(s,i);this.updateMeasurementPropsFromModel()}}}async getStencilBuffer(){var t;const e=await((t=this.viewer)===null||t===void 0?void 0:t.stencilBuffer.latestAfterInteraction());this.stateMap.stencil=e}snapPoint(t,e){const i=this.getHitProvider();if(i!=null&&!e.shiftKey){const e=Math.max(0,this.snapDistance);return i.hitTester().snapToNearestPixel(t,e)}return t}formatDistance(t){const e=t!=null?this.measurementUnits.convertWorldValueToReal(t):undefined;if(this.labelFormatter!=null){return this.labelFormatter(e)}else{const t=this.measurementUnits.unit.abbreviatedName;return e==null?"---":`~${e.toFixed(this.fractionalDigits)} ${t}`}}beginEditing(t,e){if(this.interactionCount===0){this.interactingAnchor=e;this.editBegin.emit({type:t,anchor:e})}this.interactionCount=this.interactionCount+1}endEditing(){if(this.interactionCount===1){const t=this.model.getMeasurement();this.interactingAnchor="none";this.updateMeasurementModel();if(t!=null){this.editEnd.emit(t)}}this.interactionCount=this.interactionCount-1}updateMeasurementModel(){this.measurementModel.clearOutcome();if(!this.invalid&&this.start!=null&&this.end!=null){this.measurementModel.setOutcome({isApproximate:true,results:[f(this.start,this.end)]})}}getHitProvider(){if(this.hitProvider==null){const t=this.getHitTester();const e=this.viewer;if(e!=null&&t!=null){return{hitTester:()=>t,raycaster:async()=>(await e.scene()).raycaster()}}}else return this.hitProvider}getHitTester(){const{stencil:t,depthBuffer:e}=this.stateMap;if(e!=null){return new j(t,e,this.viewport,this.internalCamera)}}updateMeasurementPropsFromModel(){const t=this.model.getMeasurement();this.start=t===null||t===void 0?void 0:t.start;this.end=t===null||t===void 0?void 0:t.end;this.distance=t===null||t===void 0?void 0:t.distance;this.invalid=t!=null&&!t.valid}async updateIndicator(t){var e;const i=this.getHitProvider();const n=i==null||!this.controller.moveIndicator(t,i);if(n){(e=this.stateMap.hoverCursor)===null||e===void 0?void 0:e.dispose()}else{await this.setCursor(d)}}setDepthBuffers(){if(this.mode!=null&&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}}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],units:[{handleUnitsChanged:1}],camera:[{handleCameraChanged:0}],mode:[{handleModeChanged:0}],start:[{handleStartChanged:0}],end:[{handleEndChanged:0}],invalid:[{handleInvalidChanged:0}]}}static get style(){return z()}},[1,"vertex-viewer-measurement-distance",{start:[1040],startJson:[1,"start-json"],end:[1040],endJson:[1,"end-json"],distance:[1026],showAxisReferenceLines:[4,"show-axis-reference-lines"],snapDistance:[2,"snap-distance"],units:[1],fractionalDigits:[2,"fractional-digits"],labelFormatter:[16],anchorLabelOffset:[2,"anchor-label-offset"],lineCapLength:[2,"line-cap-length"],mode:[513],interactingAnchor:[1537,"interacting-anchor"],invalid:[1540],camera:[16],hitProvider:[16],indicatorPt:[1040],viewer:[16],measurementModel:[16],viewport:[32],elementBounds:[32],interactionCount:[32],internalCamera:[32],invalidateStateCounter:[32],stateMap:[32],measurementUnits:[32],computeElementMetrics:[64]},undefined,{viewer:[{handleViewerChanged:0}],units:[{handleUnitsChanged:1}],camera:[{handleCameraChanged:0}],mode:[{handleModeChanged:0}],start:[{handleStartChanged:0}],end:[{handleEndChanged:0}],invalid:[{handleInvalidChanged:0}]}]);function R(t){return typeof t==="string"?a.fromJson(t):t}function W(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-measurement-distance","vertex-viewer-measurement-line","vertex-viewer-measurement-overlays"];t.forEach((t=>{switch(t){case"vertex-viewer-measurement-distance":if(!customElements.get(e(t))){customElements.define(e(t),F)}break;case"vertex-viewer-measurement-line":if(!customElements.get(e(t))){P()}break;case"vertex-viewer-measurement-overlays":if(!customElements.get(e(t))){C()}break}}))}W();const Z=F;const J=W;export{Z as VertexViewerMeasurementDistance,J as defineCustomElement};
4
+ import{h as t,t as e,p as i,H as n,d as s,e as r}from"./p-Bb32XUUS.js";import{v as a,a as o,p as h,l}from"./p-2UsvOTHJ.js";import{m as d}from"./p-DxMDDbmh.js";import{b as c,g as u}from"./p-CPROw2BU.js";import"./p-CWcvgy8e.js";import"./p-FRKLa468.js";import"./p-ux1ckSDN.js";import"./p-5kcpg4MZ.js";import{o as m,D as v}from"./p-CvEK3ZK1.js";import{M as p}from"./p-BY3lpCm6.js";import{M as w}from"./p-DyL2wWm6.js";import{m as f}from"./p-_qi2VkC2.js";import{V as g}from"./p-CeZe0Qql.js";import{E as b,m as y}from"./p-CDM7zNn0.js";import{d as C,g as E}from"./p-D3in41xo.js";import{c as P}from"./p-C6gMOKYg.js";import{d as M}from"./p-BZDn1Vuv.js";const x=16;const D=10;function k(t){return t.getBoundingClientRect()}class j{constructor(t,e,i,n){this.stencil=t;this.depthBuffer=e;this.viewport=i;this.camera=n}hitTest(t){const e=this.viewport.transformPointToFrame(t,this.depthBuffer);if(this.stencil!=null){const i=this.viewport.transformPointToFrame(t,this.stencil);return this.stencil.hitTest(i)||this.depthBuffer.hitTest(e)}else{return this.depthBuffer.hitTest(e)}}snapToNearestPixel(t,e){if(this.stencil!=null){const i=this.viewport.transformPointToFrame(t,this.stencil);const n=this.stencil.snapToNearestPixel(i,e);return this.viewport.transformPointToViewport(n,this.stencil)}else{return t}}transformPointToWorld(t,{ignoreHitTest:e=false}={}){const i=this.pickDepthBuffer(t);if(i!=null){return this.viewport.transformPointToWorldSpace(t,i)}else if(e){return this.viewport.transformPointToWorldSpace(t,this.depthBuffer)}}pickDepthBuffer(t){if(this.stencil!=null){const e=this.viewport.transformPointToFrame(t,this.stencil);if(this.stencil.hitTest(e)){return this.stencil.depthBuffer}}const e=this.viewport.transformPointToFrame(t,this.depthBuffer);return this.depthBuffer.hitTest(e)?this.depthBuffer:undefined}}class A{constructor(t){this.model=t}newMeasurement(t,e){const i=e.hitTester().transformPointToWorld(t);return i!=null?new L(t,i,this.model):undefined}editMeasurement(t){const e=this.model.getMeasurement();if(e==null){throw new Error("Cannot edit measurement. Measurement is empty.")}return t==="start"?new B(e,this.model):new O(e,this.model)}clearIndicator(){this.model.setIndicator(undefined)}moveIndicator(t,e){const i=e.hitTester().transformPointToWorld(t);this.model.setIndicator(i);return i!=null}}class I{constructor(){this.measurementChanged=new b;this.indicatorChanged=new b}static empty(){return new I}getMeasurement(){return this.measurement}setMeasurement(t){if(this.measurement!==t){this.measurement=t;this.measurementChanged.emit(t)}}setMeasurementFromValues(t,e,i){if(t!=null&&e!=null){const n=i?V(t,e):H(t,e);this.setMeasurement(n)}else{this.setMeasurement(undefined)}}onMeasurementChanged(t){return this.measurementChanged.on(t)}getIndicator(){return this.indicator}setIndicator(t){if(this.indicator!==t){this.indicator=t;this.indicatorChanged.emit(t)}}onIndicatorChanged(t){return this.indicatorChanged.on(t)}}class L{constructor(t,e,i){this.pt=t;this.world=e;this.model=i;this.hitWorldValid=true;this.preventUpdate=false}fetchStartIfMissing(t){if(this.pendingStart==null){this.pendingStart=this.fetchStart(t)}}async fetchStart(t){const e=await t.raycaster();const i=await T(e,this.pt);if(i==null){const e=t.hitTester().transformPointToWorld(this.pt);this.hitWorld=e;this.hitWorldValid=false}else{this.hitWorld=i;this.hitWorldValid=true}}update(t,e){var i;if(!this.preventUpdate){this.fetchStartIfMissing(e);const n=e.hitTester().transformPointToWorld(t,{ignoreHitTest:true});const s=e.hitTester().hitTest(t);const r=(i=this.hitWorld)!==null&&i!==void 0?i:this.world;if(n==null){throw new Error("Cannot update new measurement interaction. End point is empty.")}else if(!this.hitWorldValid||!s){this.model.setIndicator(n);this.setMeasurement(H(r,n))}else{this.model.setIndicator(n);this.setMeasurement(V(r,n))}}}async finish(t,e){var i;this.preventUpdate=true;this.fetchStartIfMissing(e);await this.pendingStart;this.model.setIndicator(undefined);const n=await e.raycaster();const s=await T(n,t);const r=(i=this.hitWorld)!==null&&i!==void 0?i:this.world;this.preventUpdate=false;if(s==null){const i=e.hitTester().transformPointToWorld(t,{ignoreHitTest:true});if(i==null){throw new Error("Cannot complete new measurement interaction. End point is empty.")}return this.setMeasurement(H(r,i))}else if(!this.hitWorldValid){return this.setMeasurement(H(r,s))}else{return this.setMeasurement(V(r,s))}}setMeasurement(t){this.model.setMeasurement(t);return t}}class S{constructor(t,e){this.measurement=t;this.model=e}update(t,e){const i=e.hitTester().transformPointToWorld(t,{ignoreHitTest:true});const n=e.hitTester().hitTest(t);if(i==null){throw new Error("Cannot update new measurement interaction. End point is empty.")}else if(!n){this.model.setIndicator(i);this.setMeasurement(this.getInvalidMeasurement(i))}else{this.model.setIndicator(i);this.setMeasurement(this.getValidMeasurement(i))}}async finish(t,e){const i=await e.raycaster();const n=await T(i,t);this.model.setIndicator(undefined);if(n==null){const i=e.hitTester().transformPointToWorld(t,{ignoreHitTest:true});if(i==null){throw new Error("Cannot complete edit measurement interaction. End point is empty.")}return this.setMeasurement(this.getInvalidMeasurement(i))}else{return this.setMeasurement(this.getValidMeasurement(n))}}setMeasurement(t){this.model.setMeasurement(t);return t}}class B extends S{constructor(t,e){super(t,e)}getInvalidMeasurement(t){return H(t,this.measurement.end)}getValidMeasurement(t){return V(t,this.measurement.end)}}class O extends S{constructor(t,e){super(t,e)}getInvalidMeasurement(t){return H(this.measurement.start,t)}getValidMeasurement(t){return V(this.measurement.start,t)}}async function T(t,e){var i;const n=await t.hitItems(e);const[s]=(i=n===null||n===void 0?void 0:n.hits)!==null&&i!==void 0?i:[];if((s===null||s===void 0?void 0:s.hitPoint)!=null){const t=m(s.hitPoint);if(y.isInvalid(t)){throw new Error(`Invalid hit response [${t.errors.join(",")}]`)}return t}else return undefined}function V(t,e){return{start:t,end:e,distance:a.distance(t,e),valid:true}}function H(t,e){return{start:t,end:e,valid:false}}const U=({startPt:e,endPt:i,centerPt:n,indicatorPt:s,distance:r,anchorLabelOffset:a,lineCapLength:l,linePointerEvents:d,hideStartAnchor:u,hideEndAnchor:m,onStartAnchorPointerDown:v,onEndAnchorPointerDown:p})=>{const w=e!=null&&i!=null?o.fromPoints(e,i):undefined;const f=w!=null&&e!=null&&a!=null?h.add(e,h.polar(-a,w)):undefined;const g=w!=null&&i!=null&&a!=null?h.add(i,h.polar(a,w)):undefined;return t("div",null,e!=null&&i!=null&&t("vertex-viewer-measurement-line",{class:P("line",{"hide-start-line-cap":u,"hide-end-line-cap":m}),start:e,end:i,capLength:l,pointerEvents:d}),!u&&e!=null&&t("div",{id:"start-anchor",class:"anchor anchor-start",style:{transform:c(e)},onPointerDown:v},t("slot",{name:"start-anchor"},t("div",{class:"anchor-placeholder"}))),!u&&f&&t("div",{class:"anchor-label anchor-label-start",style:{transform:c(f)}},t("slot",{name:"start-label"})),!m&&i!=null&&t("div",{id:"end-anchor",class:"anchor anchor-end",style:{transform:c(i)},onPointerDown:p},t("slot",{name:"end-anchor"},t("div",{class:"anchor-placeholder"}))),!m&&g&&t("div",{class:"anchor-label anchor-label-end",style:{transform:c(g)}},t("slot",{name:"end-label"})),n!=null&&t("div",{id:"label",class:"distance-label",style:{transform:c(n)}},r),s!=null&&t("div",{class:"indicator",style:{transform:c(s)}},t("slot",{name:"indicator"},t("div",{class:"indicator-placeholder"}))))};const z=()=>`:host{--viewer-measurement-distance-accent-color:var(--neutral-900);--viewer-measurement-distance-contrast-color:var(--white);--viewer-measurement-distance-invalid-accent-color:var(--red-600);--viewer-measurement-distance-invalid-contrast-color:var(--white);--viewer-measurement-distance-line-stroke-width:1.25px;--viewer-measurement-distance-line-fill-width:2px;--viewer-measurement-distance-distance-border:1px solid var(--viewer-measurement-distance-accent-color);--viewer-measurement-distance-distance-border-radius:0.25rem;--viewer-measurement-distance-distance-padding:0.375rem 0.5rem;color:var(--viewer-measurement-distance-accent-color);font-size:0.75rem;position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none}:host([invalid]:not([invalid='false'])){--viewer-measurement-distance-accent-color:var( --viewer-measurement-distance-invalid-accent-color ) !important;--viewer-measurement-distance-contrast-color:var( --viewer-measurement-distance-invalid-contrast-color ) !important}.line{--viewer-measurement-line-stroke:var( --viewer-measurement-distance-contrast-color );--viewer-measurement-line-stroke-opacity:0.75;--viewer-measurement-line-stroke-width:var( --viewer-measurement-distance-line-stroke-width );--viewer-measurement-line-fill:var( --viewer-measurement-distance-accent-color );--viewer-measurement-line-fill-width:var( --viewer-measurement-distance-line-fill-width );position:absolute;width:100%;height:100%}.anchor{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;pointer-events:auto}:host([interacting-anchor='start']) .anchor-start,:host([interacting-anchor='start']) .anchor-label-start{visibility:hidden}.hide-start-line-cap,:host([interacting-anchor='start']) .line{--viewer-measurement-line-start-cap-visibility:hidden}:host([interacting-anchor='end']) .anchor-end,:host([interacting-anchor='end']) .anchor-label-end{visibility:hidden}.hide-end-line-cap,:host([interacting-anchor='end']) .line{--viewer-measurement-line-end-cap-visibility:hidden}.anchor-label{position:absolute;border-radius:50%;transform:translate(-50%, -50%);display:block;pointer-events:auto}:host(:not([mode=''])){cursor:inherit}:host(:not([mode=''])) .anchor{cursor:move}:host([mode='']) .anchor{visibility:hidden}.anchor-placeholder{background:var(--viewer-measurement-distance-contrast-color);width:12px;height:12px;border-radius:50%;box-sizing:border-box}:host(:not([mode=''])) .anchor-placeholder{border:2px solid var(--viewer-measurement-distance-accent-color);background:var(--viewer-measurement-distance-contrast-color)}:host([mode='']) .distance-label{color:var(--viewer-measurement-distance-contrast-color);background:var(--viewer-measurement-distance-accent-color)}.distance-label{position:absolute;background:var(--viewer-measurement-distance-contrast-color);border:var(--viewer-measurement-distance-distance-border);border-radius:var(--viewer-measurement-distance-distance-border-radius);padding:var(--viewer-measurement-distance-distance-padding);pointer-events:auto}.indicator{position:absolute}.indicator-placeholder{background:var(--viewer-measurement-distance-accent-color);border:1px solid var(--viewer-measurement-distance-contrast-color);width:6px;height:6px;border-radius:50%;box-sizing:border-box}`;const F=3;const R=i(class e extends n{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.editBegin=s(this,"editBegin");this.editEnd=s(this,"editEnd");this.showAxisReferenceLines=false;this.snapDistance=x;this.units="millimeters";this.fractionalDigits=2;this.anchorLabelOffset=20;this.lineCapLength=D;this.mode="";this.interactingAnchor="none";this.invalid=false;this.measurementModel=new p;this.viewport=new g(0,0);this.interactionCount=0;this.invalidateStateCounter=0;this.stateMap={};this.measurementUnits=new v(this.units);this.model=I.empty();this.controller=new A(this.model);this.overlays=new w;this.isUserInteractingWithModel=false;this.handleFrameDrawn=()=>{this.invalidateState()};this.clearIndicator=()=>{this.controller.clearIndicator()};this.updateStartAnchor=async t=>{await this.getStencilBuffer();if(this.interactionCount===0){const e=u(t,this.elementBounds);const i=this.snapPoint(e,t);await this.updateIndicator(i)}};this.newMeasurement=t=>{if(this.interactionCount===0&&t.button===0){const e=t=>{const e=()=>{window.removeEventListener("pointerup",i);window.removeEventListener("pointermove",n)};const i=async()=>{e();t()};const n=t=>{if(t.buttons>0){e()}};window.addEventListener("pointermove",n);window.addEventListener("pointerup",i)};const i=t=>{let e=h.create(0,0);const i=i=>{const n=h.distance(e,u(i,this.elementBounds));if(n>=F){t()}};const n=()=>{window.removeEventListener("pointermove",i);window.removeEventListener("pointerup",s)};const s=()=>n();const r=t=>{e=u(t,this.elementBounds);window.addEventListener("pointermove",i);window.addEventListener("pointerup",s)};window.addEventListener("pointerdown",r);return{dispose:()=>window.removeEventListener("pointerdown",r)}};const n=()=>{const t=i((()=>{var t;this.isUserInteractingWithModel=true;(t=this.stateMap.hoverCursor)===null||t===void 0?void 0:t.dispose()}));const e=()=>{window.removeEventListener("pointermove",n);window.removeEventListener("pointerup",s);t.dispose()};const n=this.createInteractionMoveHandler();const s=async t=>{var i;if(t.button===0){if(this.isUserInteractingWithModel){this.isUserInteractingWithModel=false}else{const n=this.getHitProvider();if(n!=null){const s=u(t,this.elementBounds);const r=this.snapPoint(s,t);await((i=this.interaction)===null||i===void 0?void 0:i.finish(r,n));e();this.updateMeasurementPropsFromModel();this.endEditing()}}}};this.beginEditing("replace","end");this.newInteractionHandler={dispose:e};window.addEventListener("pointermove",n);window.addEventListener("pointerup",s)};const s=this.getHitProvider();if(s!=null){const i=u(t,this.elementBounds);const r=this.snapPoint(i,t);this.interaction=this.controller.newMeasurement(r,s);if(this.interaction!=null){e(n)}}}}}async computeElementMetrics(){var t,e,i;const n=(t=this.hostEl.shadowRoot)===null||t===void 0?void 0:t.getElementById("start-anchor");const s=(e=this.hostEl.shadowRoot)===null||e===void 0?void 0:e.getElementById("end-anchor");const r=(i=this.hostEl.shadowRoot)===null||i===void 0?void 0:i.getElementById("label");if(n!=null&&s!=null&&r!=null){return{startAnchor:n.getBoundingClientRect(),endAnchor:s.getBoundingClientRect(),label:r.getBoundingClientRect()}}else{return undefined}}connectedCallback(){this.setDepthBuffers()}disconnectedCallback(){var t,e;(t=this.stateMap.hoverCursor)===null||t===void 0?void 0:t.dispose();(e=this.newInteractionHandler)===null||e===void 0?void 0:e.dispose();this.resetDepthBuffers()}async componentWillLoad(){this.updatePropsFromJson();this.model.setMeasurementFromValues(this.start,this.end,!this.invalid);await this.getStencilBuffer();this.updateViewport();this.setDepthBuffers();await this.handleViewerChanged(this.viewer);await this.handleModeChanged();await this.computePropsAndState();this.model.onIndicatorChanged((t=>{this.indicatorPt=t}))}componentDidLoad(){const t=new ResizeObserver((()=>this.updateViewport()));t.observe(this.hostEl)}async componentWillUpdate(){await this.computePropsAndState()}render(){return t(r,{key:"58113224139c37a54bf9329ed27e6a8983d5cccd"},this.showAxisReferenceLines&&t("vertex-viewer-measurement-overlays",{key:"d2166c4a965761f472f5b3323844d82980baa29f",measurementOverlays:this.overlays,viewer:this.viewer}),this.renderMeasurement())}renderMeasurement(){const e=this.computeElementPositions();const{startPt:i,endPt:n,labelPt:s,indicatorPt:r,hideStart:a,hideEnd:o}=e;const h=this.formatDistance(this.distance);if(this.mode==="edit"||this.mode==="replace"){return t(U,{startPt:i,endPt:n,centerPt:s,indicatorPt:r,distance:h,anchorLabelOffset:this.anchorLabelOffset,lineCapLength:this.lineCapLength,hideStartAnchor:a,hideEndAnchor:o,onStartAnchorPointerDown:this.handleEditAnchor("start"),onEndAnchorPointerDown:this.handleEditAnchor("end")})}else{return t(U,{startPt:i,endPt:n,centerPt:s,indicatorPt:this.indicatorPt,distance:h,hideStartAnchor:a,hideEndAnchor:o,anchorLabelOffset:this.anchorLabelOffset,lineCapLength:this.lineCapLength,linePointerEvents:"painted"})}}async handleViewerChanged(t,e){if(e!=null){e.removeEventListener("frameDrawn",this.handleFrameDrawn);await this.removeInteractionListeners(e)}if(t!=null){t.addEventListener("frameDrawn",this.handleFrameDrawn);await this.addInteractionListeners(t)}}handleUnitsChanged(){this.measurementUnits=new v(this.units)}handleCameraChanged(){this.updateCamera()}async handleModeChanged(){var t;if(this.mode===""){(t=this.stateMap.hoverCursor)===null||t===void 0?void 0:t.dispose()}if(this.viewer!=null){await this.removeInteractionListeners(this.viewer);await this.addInteractionListeners(this.viewer)}}handleStartChanged(){this.updateInteractionModel()}handleEndChanged(){this.updateInteractionModel()}handleInvalidChanged(){this.updateInteractionModel()}async computePropsAndState(){this.updateCamera();await this.updateDepthBuffer();this.updateMeasurementPropsFromModel();this.updateOverlays()}updateOverlays(){var t;(t=this.overlay)===null||t===void 0?void 0:t.dispose();if(this.showAxisReferenceLines&&this.interactionCount===0&&!this.invalid&&this.start!=null&&this.end!=null){this.overlay=this.overlays.addDistanceVector(this.start,this.end)}}async setCursor(t){var e,i;(e=this.stateMap.hoverCursor)===null||e===void 0?void 0:e.dispose();if(!this.isUserInteractingWithModel){this.stateMap.hoverCursor=await((i=this.viewer)===null||i===void 0?void 0:i.addCursor(t))}}computeElementPositions(){if(this.mode==="replace"){return this.computeReplaceElementPositions()}else{return this.computeEditOrViewElementPositions()}}computeEditOrViewElementPositions(){const t=this.model.getMeasurement();if(this.internalCamera!=null&&t!=null){return this.computeLineElementPositions(l.create(t))}else{return{}}}computeReplaceElementPositions(){if(this.internalCamera!=null){const t=this.model.getMeasurement();const e=t!=null?this.computeLineElementPositions(l.create(t)):{};const i=this.indicatorPt!=null?{indicatorPt:this.viewport.transformWorldToViewport(this.indicatorPt,this.internalCamera.projectionViewMatrix)}:{};return{...e,...i}}else{return{}}}computeLineElementPositions(t){if(this.internalCamera!=null){return E(t,this.interactingAnchor,{viewport:this.viewport,camera:this.internalCamera})}else{return{}}}updateCamera(){var t,e;this.internalCamera=this.camera||((e=(t=this.viewer)===null||t===void 0?void 0:t.frame)===null||e===void 0?void 0:e.scene.camera)}async updateDepthBuffer(){var t,e;this.stateMap.depthBuffer=await((e=(t=this.viewer)===null||t===void 0?void 0:t.frame)===null||e===void 0?void 0:e.depthBuffer())}updateViewport(){const t=k(this.hostEl);this.viewport=new g(t.width,t.height);this.elementBounds=t}updatePropsFromJson(){var t,e;this.start=W((t=this.startJson)!==null&&t!==void 0?t:this.start);this.end=W((e=this.endJson)!==null&&e!==void 0?e:this.end)}updateInteractionModel(){this.model.setMeasurementFromValues(this.start,this.end,!this.invalid)}invalidateState(){this.invalidateStateCounter=this.invalidateStateCounter+1}async addInteractionListeners(t){const e=await t.getInteractionTarget_DEPRECATED();if(this.mode==="replace"){e.addEventListener("pointermove",this.updateStartAnchor);e.addEventListener("pointerdown",this.newMeasurement);e.addEventListener("pointerleave",this.clearIndicator)}}async removeInteractionListeners(t){const e=await t.getInteractionTarget_DEPRECATED();e.removeEventListener("pointermove",this.updateStartAnchor);e.removeEventListener("pointerdown",this.newMeasurement);e.removeEventListener("pointerleave",this.clearIndicator)}handleEditAnchor(t){if(this.mode==="edit"||this.mode==="replace"){const e=this.createInteractionMoveHandler();const i=async t=>{var n;const s=this.getHitProvider();if(s!=null){window.removeEventListener("pointermove",e);window.removeEventListener("pointerup",i);const r=u(t,this.elementBounds);const a=this.snapPoint(r,t);await((n=this.interaction)===null||n===void 0?void 0:n.finish(a,s));this.updateMeasurementPropsFromModel();this.endEditing()}};return async n=>{await this.getStencilBuffer();if(n.button===0){this.beginEditing("edit",t);this.interaction=this.controller.editMeasurement(t);window.addEventListener("pointermove",e);window.addEventListener("pointerup",i)}}}}createInteractionMoveHandler(){return async t=>{var e;const i=this.getHitProvider();if(this.elementBounds!=null&&i!=null){t.preventDefault();await this.getStencilBuffer();const n=u(t,this.elementBounds);const s=this.snapPoint(n,t);(e=this.interaction)===null||e===void 0?void 0:e.update(s,i);this.updateMeasurementPropsFromModel()}}}async getStencilBuffer(){var t;const e=await((t=this.viewer)===null||t===void 0?void 0:t.stencilBuffer.latestAfterInteraction());this.stateMap.stencil=e}snapPoint(t,e){const i=this.getHitProvider();if(i!=null&&!e.shiftKey){const e=Math.max(0,this.snapDistance);return i.hitTester().snapToNearestPixel(t,e)}return t}formatDistance(t){const e=t!=null?this.measurementUnits.convertWorldValueToReal(t):undefined;if(this.labelFormatter!=null){return this.labelFormatter(e)}else{const t=this.measurementUnits.unit.abbreviatedName;return e==null?"---":`~${e.toFixed(this.fractionalDigits)} ${t}`}}beginEditing(t,e){if(this.interactionCount===0){this.interactingAnchor=e;this.editBegin.emit({type:t,anchor:e})}this.interactionCount=this.interactionCount+1}endEditing(){if(this.interactionCount===1){const t=this.model.getMeasurement();this.interactingAnchor="none";this.updateMeasurementModel();if(t!=null){this.editEnd.emit(t)}}this.interactionCount=this.interactionCount-1}updateMeasurementModel(){this.measurementModel.clearOutcome();if(!this.invalid&&this.start!=null&&this.end!=null){this.measurementModel.setOutcome({isApproximate:true,results:[f(this.start,this.end)]})}}getHitProvider(){if(this.hitProvider==null){const t=this.getHitTester();const e=this.viewer;if(e!=null&&t!=null){return{hitTester:()=>t,raycaster:async()=>(await e.scene()).raycaster()}}}else return this.hitProvider}getHitTester(){const{stencil:t,depthBuffer:e}=this.stateMap;if(e!=null){return new j(t,e,this.viewport,this.internalCamera)}}updateMeasurementPropsFromModel(){const t=this.model.getMeasurement();this.start=t===null||t===void 0?void 0:t.start;this.end=t===null||t===void 0?void 0:t.end;this.distance=t===null||t===void 0?void 0:t.distance;this.invalid=t!=null&&!t.valid}async updateIndicator(t){var e;const i=this.getHitProvider();const n=i==null||!this.controller.moveIndicator(t,i);if(n){(e=this.stateMap.hoverCursor)===null||e===void 0?void 0:e.dispose()}else{await this.setCursor(d)}}setDepthBuffers(){if(this.mode!=null&&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}}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],units:[{handleUnitsChanged:1}],camera:[{handleCameraChanged:0}],mode:[{handleModeChanged:0}],start:[{handleStartChanged:0}],end:[{handleEndChanged:0}],invalid:[{handleInvalidChanged:0}]}}static get style(){return z()}},[1,"vertex-viewer-measurement-distance",{start:[1040],startJson:[1,"start-json"],end:[1040],endJson:[1,"end-json"],distance:[1026],showAxisReferenceLines:[4,"show-axis-reference-lines"],snapDistance:[2,"snap-distance"],units:[1],fractionalDigits:[2,"fractional-digits"],labelFormatter:[16],anchorLabelOffset:[2,"anchor-label-offset"],lineCapLength:[2,"line-cap-length"],mode:[513],interactingAnchor:[1537,"interacting-anchor"],invalid:[1540],camera:[16],hitProvider:[16],indicatorPt:[1040],viewer:[16],measurementModel:[16],viewport:[32],elementBounds:[32],interactionCount:[32],internalCamera:[32],invalidateStateCounter:[32],stateMap:[32],measurementUnits:[32],computeElementMetrics:[64]},undefined,{viewer:[{handleViewerChanged:0}],units:[{handleUnitsChanged:1}],camera:[{handleCameraChanged:0}],mode:[{handleModeChanged:0}],start:[{handleStartChanged:0}],end:[{handleEndChanged:0}],invalid:[{handleInvalidChanged:0}]}]);function W(t){return typeof t==="string"?a.fromJson(t):t}function J(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-measurement-distance","vertex-viewer-measurement-line","vertex-viewer-measurement-overlays"];t.forEach((t=>{switch(t){case"vertex-viewer-measurement-distance":if(!customElements.get(e(t))){customElements.define(e(t),R)}break;case"vertex-viewer-measurement-line":if(!customElements.get(e(t))){M()}break;case"vertex-viewer-measurement-overlays":if(!customElements.get(e(t))){C()}break}}))}J();const K=R;const Z=J;export{K as VertexViewerMeasurementDistance,Z as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-measurement-distance.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{V as o,d as s}from"./p-oDn1DcWj.js";const t=o;const c=s;export{t as VertexViewerMeasurementLine,c as defineCustomElement};
4
+ import{V as o,d as s}from"./p-BZDn1Vuv.js";const t=o;const n=s;export{t as VertexViewerMeasurementLine,n as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-measurement-line.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{V as o,d as s}from"./p-DnVcQAR9.js";const t=o;const c=s;export{t as VertexViewerMeasurementOverlays,c as defineCustomElement};
4
+ import{V as o,d as s}from"./p-D3in41xo.js";const t=o;const n=s;export{t as VertexViewerMeasurementOverlays,n as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-measurement-overlays.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t as e,p as t,H as s,h as i,e as n}from"./p-Bb32XUUS.js";import{s as r}from"./p-B2_E6tqs.js";import{p as a}from"./p-CZgX-9yo.js";import{a as o,M as l}from"./p-MnZadXO8.js";import"./p-5kcpg4MZ.js";import"./p-BKQMbekH.js";import"./p-FRKLa468.js";import{E as h}from"./p-DjrtwKcK.js";import{M as d}from"./p-BY3lpCm6.js";import{M as m}from"./p-CxzyM08j.js";import{p as u}from"./p-CZZALKHT.js";import{a as p}from"./p-DxMDDbmh.js";import{g as c}from"./p-BqeEZXPn.js";import{E as v}from"./p-CFus3r7d.js";import{d as f}from"./p-oDn1DcWj.js";import{d as w}from"./p-DnVcQAR9.js";class y{get elementRect(){return this.rectObserver.rect}constructor(e,t){this.rectObserver=new v;this.handlePointerMove=async e=>{if(await this.isMeasurableEntityUnderPointer(e)){this.clearCursor();this.addCursor(p)}else{this.clearCursor()}};this.handlePointerDown=e=>{this.ifNoInteraction(e,(async()=>{if(await this.isMeasurableEntityUnderPointer(e)){this.measureEntityUnderPointer(e)}else{await this.controller.clearEntities()}}))};this.controller=e;this.measurableEntityTypes=t}initialize(e,t){this.element=e;this.api=t;this.rectObserver.observe(e);e.addEventListener("pointermove",this.handlePointerMove);e.addEventListener("pointerdown",this.handlePointerDown)}dispose(){var e,t,s;this.rectObserver.disconnect();(e=this.measurementInteraction)===null||e===void 0?void 0:e.dispose();this.clearCursor();(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointermove",this.handlePointerMove);(s=this.element)===null||s===void 0?void 0:s.removeEventListener("pointerdown",this.handlePointerDown);this.element=undefined;this.api=undefined}addCursor(e){this.cursor=this.ifInitialized((({api:t})=>t.addCursor(e)))}clearCursor(){var e;(e=this.cursor)===null||e===void 0?void 0:e.dispose();this.cursor=undefined}async isMeasurableEntityUnderPointer(e){var t;const s=c(e,this.elementRect);const i=await((t=this.api)===null||t===void 0?void 0:t.getEntityTypeAtPoint(s));return i!=null&&this.measurableEntityTypes.includes(i)}measureEntityUnderPointer(e){this.ifInitialized((async({api:t})=>{const s=c(e,this.elementRect);const[i]=await t.hitItems(s);const n=i!=null?o.fromHit(i):undefined;if(n!=null){await this.controller.addEntity(n)}else{await this.controller.clearEntities()}}))}ifInitialized(e){if(this.element!=null&&this.api!=null){return e({element:this.element,api:this.api})}else{throw new Error("Measurement interaction handler not initialized.")}}ifNoInteraction(e,t){const s=u.create(e.clientX,e.clientY);let i=false;const n=e=>{const t=u.create(e.clientX,e.clientY);const n=u.distance(s,t);i=n>2};const r=()=>{window.removeEventListener("pointermove",n);window.removeEventListener("pointerup",r);if(!i){t()}};window.addEventListener("pointermove",n);window.addEventListener("pointerup",r)}}const C=()=>`:host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}`;const M=t(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.measurementModel=new d;this.measurementOverlays=new m;this.measurableEntityTypes=[h.PRECISE_SURFACE,h.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(n,{key:"191b29e7710d24dc5462b10bf5fc947de5facf6c"},i("vertex-viewer-measurement-overlays",{key:"9da7740e1f54c300f6a76a7dc516054e40bbed05",viewer:this.viewer,measurementOverlays:this.measurementOverlays}))}setupController(){var e;const t=a(this.configEnv,this.config);const s=new r.SceneViewAPIClient(t.network.sceneViewHost);this.measurementController=new l(this.measurementModel,s,(()=>{var e;return(e=this.viewer)===null||e===void 0?void 0:e.token}),(e=this.viewer)===null||e===void 0?void 0:e.deviceId)}clearInteractionHandler(){var e;(e=this.registeredInteractionHandler)===null||e===void 0?void 0:e.then((e=>e.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var e;this.clearInteractionHandler();if(this.measurementController!=null){this.registeredInteractionHandler=(e=this.viewer)===null||e===void 0?void 0:e.registerInteractionHandler(new y(this.measurementController,this.measurableEntityTypes))}}static get watchers(){return{measurableEntityTypes:[{handleMeasurableEntityTypesChanged:0}],measurementController:[{handleMeasurementControllerChanged:0}],measurementModel:[{handleMeasurementModelChanged:1}],viewer:[{handleViewerChanged:0}]}}static get style(){return C()}},[1,"vertex-viewer-measurement-precise",{measurementModel:[16],measurementOverlays:[16],measurementController:[1040],measurableEntityTypes:[16],viewer:[16],configEnv:[1,"config-env"],config:[1]},undefined,{measurableEntityTypes:[{handleMeasurableEntityTypesChanged:0}],measurementController:[{handleMeasurementControllerChanged:0}],measurementModel:[{handleMeasurementModelChanged:1}],viewer:[{handleViewerChanged:0}]}]);function b(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-measurement-precise","vertex-viewer-measurement-line","vertex-viewer-measurement-overlays"];t.forEach((t=>{switch(t){case"vertex-viewer-measurement-precise":if(!customElements.get(e(t))){customElements.define(e(t),M)}break;case"vertex-viewer-measurement-line":if(!customElements.get(e(t))){f()}break;case"vertex-viewer-measurement-overlays":if(!customElements.get(e(t))){w()}break}}))}b();const g=M;const j=b;export{g as VertexViewerMeasurementPrecise,j as defineCustomElement};
4
+ import{t as e,p as t,H as s,h as i,e as n}from"./p-Bb32XUUS.js";import{s as r}from"./p-B2_E6tqs.js";import{p as a}from"./p-COznr3CH.js";import{a as o,M as l}from"./p-D1Vdomj_.js";import"./p-5kcpg4MZ.js";import"./p-CWcvgy8e.js";import"./p-FRKLa468.js";import{E as h}from"./p-CvEK3ZK1.js";import{M as d}from"./p-BY3lpCm6.js";import{M as m}from"./p-DyL2wWm6.js";import{p as u}from"./p-2UsvOTHJ.js";import{a as p}from"./p-DxMDDbmh.js";import{g as c}from"./p-CPROw2BU.js";import{E as v}from"./p-CFus3r7d.js";import{d as f}from"./p-BZDn1Vuv.js";import{d as w}from"./p-D3in41xo.js";class y{get elementRect(){return this.rectObserver.rect}constructor(e,t){this.rectObserver=new v;this.handlePointerMove=async e=>{if(await this.isMeasurableEntityUnderPointer(e)){this.clearCursor();this.addCursor(p)}else{this.clearCursor()}};this.handlePointerDown=e=>{this.ifNoInteraction(e,(async()=>{if(await this.isMeasurableEntityUnderPointer(e)){this.measureEntityUnderPointer(e)}else{await this.controller.clearEntities()}}))};this.controller=e;this.measurableEntityTypes=t}initialize(e,t){this.element=e;this.api=t;this.rectObserver.observe(e);e.addEventListener("pointermove",this.handlePointerMove);e.addEventListener("pointerdown",this.handlePointerDown)}dispose(){var e,t,s;this.rectObserver.disconnect();(e=this.measurementInteraction)===null||e===void 0?void 0:e.dispose();this.clearCursor();(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointermove",this.handlePointerMove);(s=this.element)===null||s===void 0?void 0:s.removeEventListener("pointerdown",this.handlePointerDown);this.element=undefined;this.api=undefined}addCursor(e){this.cursor=this.ifInitialized((({api:t})=>t.addCursor(e)))}clearCursor(){var e;(e=this.cursor)===null||e===void 0?void 0:e.dispose();this.cursor=undefined}async isMeasurableEntityUnderPointer(e){var t;const s=c(e,this.elementRect);const i=await((t=this.api)===null||t===void 0?void 0:t.getEntityTypeAtPoint(s));return i!=null&&this.measurableEntityTypes.includes(i)}measureEntityUnderPointer(e){this.ifInitialized((async({api:t})=>{const s=c(e,this.elementRect);const[i]=await t.hitItems(s);const n=i!=null?o.fromHit(i):undefined;if(n!=null){await this.controller.addEntity(n)}else{await this.controller.clearEntities()}}))}ifInitialized(e){if(this.element!=null&&this.api!=null){return e({element:this.element,api:this.api})}else{throw new Error("Measurement interaction handler not initialized.")}}ifNoInteraction(e,t){const s=u.create(e.clientX,e.clientY);let i=false;const n=e=>{const t=u.create(e.clientX,e.clientY);const n=u.distance(s,t);i=n>2};const r=()=>{window.removeEventListener("pointermove",n);window.removeEventListener("pointerup",r);if(!i){t()}};window.addEventListener("pointermove",n);window.addEventListener("pointerup",r)}}const C=()=>`:host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}`;const b=t(class e extends s{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.measurementModel=new d;this.measurementOverlays=new m;this.measurableEntityTypes=[h.PRECISE_SURFACE,h.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(n,{key:"191b29e7710d24dc5462b10bf5fc947de5facf6c"},i("vertex-viewer-measurement-overlays",{key:"9da7740e1f54c300f6a76a7dc516054e40bbed05",viewer:this.viewer,measurementOverlays:this.measurementOverlays}))}setupController(){var e;const t=a(this.configEnv,this.config);const s=new r.SceneViewAPIClient(t.network.sceneViewHost);this.measurementController=new l(this.measurementModel,s,(()=>{var e;return(e=this.viewer)===null||e===void 0?void 0:e.token}),(e=this.viewer)===null||e===void 0?void 0:e.deviceId)}clearInteractionHandler(){var e;(e=this.registeredInteractionHandler)===null||e===void 0?void 0:e.then((e=>e.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var e;this.clearInteractionHandler();if(this.measurementController!=null){this.registeredInteractionHandler=(e=this.viewer)===null||e===void 0?void 0:e.registerInteractionHandler(new y(this.measurementController,this.measurableEntityTypes))}}static get watchers(){return{measurableEntityTypes:[{handleMeasurableEntityTypesChanged:0}],measurementController:[{handleMeasurementControllerChanged:0}],measurementModel:[{handleMeasurementModelChanged:1}],viewer:[{handleViewerChanged:0}]}}static get style(){return C()}},[1,"vertex-viewer-measurement-precise",{measurementModel:[16],measurementOverlays:[16],measurementController:[1040],measurableEntityTypes:[16],viewer:[16],configEnv:[1,"config-env"],config:[1]},undefined,{measurableEntityTypes:[{handleMeasurableEntityTypesChanged:0}],measurementController:[{handleMeasurementControllerChanged:0}],measurementModel:[{handleMeasurementModelChanged:1}],viewer:[{handleViewerChanged:0}]}]);function g(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-measurement-precise","vertex-viewer-measurement-line","vertex-viewer-measurement-overlays"];t.forEach((t=>{switch(t){case"vertex-viewer-measurement-precise":if(!customElements.get(e(t))){customElements.define(e(t),b)}break;case"vertex-viewer-measurement-line":if(!customElements.get(e(t))){f()}break;case"vertex-viewer-measurement-overlays":if(!customElements.get(e(t))){w()}break}}))}g();const M=b;const E=g;export{M as VertexViewerMeasurementPrecise,E as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-measurement-precise.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{V as o,d as s}from"./p-Dmc49hX3.js";const t=o;const c=s;export{t as VertexViewerPinGroup,c as defineCustomElement};
4
+ import{V as o,d as s}from"./p-Cxz4L6FA.js";const t=o;const p=s;export{t as VertexViewerPinGroup,p as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-pin-group.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{V as o,d as s}from"./p-Cn0vKqIN.js";const t=o;const n=s;export{t as VertexViewerPinLabelLine,n as defineCustomElement};
4
+ import{V as o,d as s}from"./p-BFEV_v80.js";const t=o;const p=s;export{t as VertexViewerPinLabelLine,p as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-pin-label-line.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{V as s,d as o}from"./p-B4sO9HdX.js";const t=s;const p=o;export{t as VertexViewerPinLabel,p as defineCustomElement};
4
+ import{V as o,d as s}from"./p-DTwJX9HL.js";const t=o;const p=s;export{t as VertexViewerPinLabel,p as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-pin-label.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t as i,p as t,H as e,h as s,e as n}from"./p-Bb32XUUS.js";import{a as o,d as l,P as r}from"./p-B4sO9HdX.js";import{p as h}from"./p-CZZALKHT.js";import{b as d}from"./p-CDM7zNn0.js";import{l as a,p as u}from"./p-DxMDDbmh.js";import{g as v}from"./p-BqeEZXPn.js";import{E as c}from"./p-CFus3r7d.js";import{E as p}from"./p-DjrtwKcK.js";import{P as f}from"./p-D1akPoVm.js";import{g as m}from"./p-Bg-uS9BH.js";import{d as w}from"./p-C02XtMl4.js";import{d as C}from"./p-CMdP8O-G.js";import{d as b}from"./p-Bkm6H5uq.js";import{d as y}from"./p-Dmc49hX3.js";import{d as g}from"./p-Cn0vKqIN.js";class x{get elementRect(){return this.rectObserver.rect}constructor(i,t,e){this.rectObserver=new c;this.droppableSurfaces=[p.PRECISE_SURFACE,p.IMPRECISE_SURFACE,p.GENERIC_GEOMETRY];this.handlePointerMove=async i=>{const t=await this.isDroppableSurface(i);const e=this.controller.getDraggable();if(e!=null&&t){this.handleDrag(e,i)}if(this.controller.getDraggable()==null&&this.controller.getToolMode()==="edit"&&t){this.addCursor(this.getCursorType())}else{this.clearCursor()}};this.handleDrag=async(i,t)=>{const e=v(t,this.elementRect);const s=await this.getWorldPositionForPoint(e);if(s!=null){this.controller.updateDraggable({...i,lastPoint:e},s)}};this.handlePointerDown=async i=>{const t=t=>{const s=h.distance(h.create(i.clientX,t.clientY),h.create(t.clientX,t.clientY));if(s<=2&&i.buttons!==2){if(this.controller.getToolMode()==="edit"){const t=v(i,this.elementRect);this.handlePlacePin(t)}}e()};const e=()=>{window.removeEventListener("pointerup",t)};window.addEventListener("pointerup",t);return{dispose:e}};this.handlePointerUp=async()=>{const i=this.controller.getDraggable();const t=i===null||i===void 0?void 0:i.lastPoint;this.controller.setDraggable(undefined);if(t!=null&&i!=null){this.ifInitialized((async({api:e})=>{var s,n,o,l,r,h;const[d]=await e.hitItems(t);if((d===null||d===void 0?void 0:d.hitPoint)!=null&&((s=d===null||d===void 0?void 0:d.hitPoint)===null||s===void 0?void 0:s.x)!=null&&((n=d===null||d===void 0?void 0:d.hitPoint)===null||n===void 0?void 0:n.y)!=null&&((o=d===null||d===void 0?void 0:d.hitPoint)===null||o===void 0?void 0:o.z)!=null){this.controller.updateDraggable({...i,lastPoint:t},{x:(l=d===null||d===void 0?void 0:d.hitPoint)===null||l===void 0?void 0:l.x,y:d===null||d===void 0?void 0:d.hitPoint.y,z:d===null||d===void 0?void 0:d.hitPoint.z},(h=(r=d===null||d===void 0?void 0:d.partId)===null||r===void 0?void 0:r.hex)!==null&&h!==void 0?h:undefined)}}))}};this.controller=i;this.xOffset=t;this.yOffset=e}initialize(i,t){this.element=i;this.api=t;this.rectObserver.observe(i);i.addEventListener("pointermove",this.handlePointerMove);i.addEventListener("pointerdown",this.handlePointerDown);window.addEventListener("pointerup",this.handlePointerUp)}dispose(){var i,t;this.rectObserver.disconnect();this.clearCursor();(i=this.element)===null||i===void 0?void 0:i.removeEventListener("pointermove",this.handlePointerMove);(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointerdown",this.handlePointerDown);window.removeEventListener("pointerup",this.handlePointerUp);this.element=undefined;this.api=undefined}async getWorldPositionForPoint(i){return this.ifInitialized((async({api:t})=>{const e=await t.getWorldPointFromViewport(i);return e}))}async handlePlacePin(i,t){this.ifInitialized((async({api:e})=>{var s,n,l,r,h,a;const[u]=await e.hitItems(i);if((u===null||u===void 0?void 0:u.hitPoint)!=null&&this.elementRect!=null){if((u===null||u===void 0?void 0:u.hitPoint)!=null&&(u===null||u===void 0?void 0:u.hitPoint.x)!=null&&(u===null||u===void 0?void 0:u.hitPoint.y)!=null&&(u===null||u===void 0?void 0:u.hitPoint.z)!=null){const e=t!=null?t.id:d.create();const v=this.controller.getStyleAttributes()!=null?{style:this.controller.getStyleAttributes()}:undefined;switch(this.controller.getToolType()){case"pin-icon":this.controller.setPin({type:"icon",id:e,worldPosition:{x:(s=u===null||u===void 0?void 0:u.hitPoint)===null||s===void 0?void 0:s.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(l=(n=u===null||u===void 0?void 0:u.itemId)===null||n===void 0?void 0:n.hex)!==null&&l!==void 0?l:undefined,attributes:v});break;case"pin-text":const d=t==null;const c=o(i,this.elementRect,d,this.xOffset,this.yOffset);this.controller.setPin({type:"text",id:e,worldPosition:{x:(r=u===null||u===void 0?void 0:u.hitPoint)===null||r===void 0?void 0:r.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(a=(h=u===null||u===void 0?void 0:u.itemId)===null||h===void 0?void 0:h.hex)!==null&&a!==void 0?a:undefined,label:{point:c},attributes:v});this.controller.setSelectedPinId(e);break}}}else{this.controller.setSelectedPinId()}}))}getCursorType(){switch(this.controller.getToolType()){case"pin-icon":return u;case"pin-text":return a}}addCursor(i){this.clearCursor();this.cursor=this.ifInitialized((({api:t})=>t.addCursor(i)))}async isDroppableSurface(i){var t;const e=v(i,this.elementRect);const s=await((t=this.api)===null||t===void 0?void 0:t.getEntityTypeAtPoint(e));return s!=null&&this.droppableSurfaces.includes(s)}ifInitialized(i){if(this.element!=null&&this.api!=null){return i({element:this.element,api:this.api})}else{throw new Error("Pins interaction handler not initialized.")}}clearCursor(){var i;(i=this.cursor)===null||i===void 0?void 0:i.dispose();this.cursor=undefined}}const P=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none;--viewer-pin-tool-initial-label-offset-x:20;--viewer-pin-tool-initial-label-offset-y:20}`;const j=t(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.__attachShadow();this.pinModel=new f;this.tool="pin-icon";this.mode="view";this.pins=[];this.stateMap={};this.handleSetProjectionMatrix=()=>{var i,t;this.projectionViewMatrix=(t=(i=this.viewer)===null||i===void 0?void 0:i.frame)===null||t===void 0?void 0:t.scene.camera.projectionViewMatrix}}watchModeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolMode(this.mode);this.setupInteractionHandler();if(this.mode==="edit"){this.setFeatureMaps();this.setCameraAndKeyboardControls()}else{this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}}watchTypeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolType(this.tool);this.setupInteractionHandler()}watchAccentColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setAccentColor(this.accentColor);this.setupInteractionHandler()}watchPrimaryColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setPrimaryColor(this.primaryColor);this.setupInteractionHandler()}watchPinsChange(){if(this.pins.length>0){this.setDepthBuffers();this.setFeatureMaps()}else{this.resetDepthBuffers();this.resetFeatureMaps()}}connectedCallback(){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls()}componentWillLoad(){this.updateViewport();this.setupController();this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();this.pinModel.onEntitiesChanged((i=>{this.pins=i}));this.pinModel.onSelectionChange((i=>{this.selectedPinId=i}));this.handleViewerChanged(this.viewer,undefined)}componentDidLoad(){this.resizeObserver=new ResizeObserver((()=>this.updateViewport()));this.resizeObserver.observe(this.hostEl)}disconnectedCallback(){this.clearInteractionHandler();this.clearModelListeners();this.resetDepthBuffers();this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}handleViewerChanged(i,t){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();if(t!=null){t.removeEventListener("frameDrawn",this.handleSetProjectionMatrix)}if(i!=null){i.addEventListener("frameDrawn",this.handleSetProjectionMatrix)}this.handleSetProjectionMatrix()}render(){return s(n,{key:"ce2867d4a624dabf607b9de837e73a0a0c40eaf9"},s("vertex-viewer-dom-renderer",{key:"7d2dc3d75ca1818ba7b9b292ccbe1db7ac5c7ac8",viewer:this.viewer,drawMode:"2d"},this.pins.map((i=>s("vertex-viewer-pin-group",{id:`pin-group-${i.id}`,"data-is-dom-group-element":true,pin:i,elementBounds:this.elementBounds,pinModel:this.pinModel,pinController:this.pinController,projectionViewMatrix:this.projectionViewMatrix,selected:this.selectedPinId===i.id})))))}setupController(){const i=this.accentColor||this.primaryColor?{accentColor:this.accentColor,primaryColor:this.primaryColor}:undefined;this.pinController=new r(this.pinModel,this.mode,this.tool,i)}clearInteractionHandler(){var i;(i=this.registeredInteractionHandler)===null||i===void 0?void 0:i.then((i=>i.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var i;const t=window.getComputedStyle(this.hostEl);const e=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-x").trim();const s=Number.isFinite(Number.parseInt(e))?Number.parseInt(e):20;const n=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-y").trim();const o=Number.isFinite(Number.parseInt(n))?Number.parseInt(n):20;this.clearInteractionHandler();if(this.pinController!=null){this.registeredInteractionHandler=(i=this.viewer)===null||i===void 0?void 0:i.registerInteractionHandler(new x(this.pinController,s,o))}}clearModelListeners(){var i,t,e;(i=this.onEntitiesChangedHandler)===null||i===void 0?void 0:i.dispose();this.onEntitiesChangedHandler=undefined;(t=this.onEntityAddedHandler)===null||t===void 0?void 0:t.dispose();this.onEntityAddedHandler=undefined;(e=this.resizeObserver)===null||e===void 0?void 0:e.disconnect()}updateViewport(){this.elementBounds=m(this.hostEl)}setDepthBuffers(){if(this.pins.length>0&&this.viewer!=null&&this.viewer.depthBuffers==null){this.stateMap.shouldClearDepthBuffers=true;this.viewer.depthBuffers="final"}}resetDepthBuffers(){if(this.stateMap.shouldClearDepthBuffers&&this.viewer!=null){this.viewer.depthBuffers=undefined;this.stateMap.shouldClearDepthBuffers=undefined}}setFeatureMaps(){if((this.pins.length>0||this.mode==="edit")&&this.viewer!=null&&this.viewer.featureMaps==null){this.stateMap.shouldClearFeatureMaps=true;this.viewer.featureMaps="final"}}resetFeatureMaps(){if(this.stateMap.shouldClearFeatureMaps&&this.viewer!=null){this.viewer.featureMaps=undefined;this.stateMap.shouldClearFeatureMaps=undefined}}setCameraAndKeyboardControls(){if(this.mode==="edit"&&this.viewer!=null){if(this.viewer.cameraControls){this.stateMap.shouldClearCameraControls=true;this.viewer.cameraControls=false}if(this.viewer.keyboardControls){this.stateMap.shouldClearKeyboardControls=true;this.viewer.keyboardControls=false}}}resetCameraAndKeyboardControls(){if(this.viewer!=null){if(this.stateMap.shouldClearCameraControls){this.viewer.cameraControls=true;this.stateMap.shouldClearCameraControls=undefined}if(this.stateMap.shouldClearKeyboardControls){this.viewer.keyboardControls=true;this.stateMap.shouldClearKeyboardControls=undefined}}}get hostEl(){return this}static get watchers(){return{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}}static get style(){return P()}},[1,"vertex-viewer-pin-tool",{pinController:[1040],pinModel:[16],viewer:[16],tool:[1025],mode:[1025],primaryColor:[1025,"primary-color"],accentColor:[1025,"accent-color"],pins:[32],selectedPinId:[32],elementBounds:[32],projectionViewMatrix:[32]},undefined,{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}]);function k(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-pin-tool","vertex-viewer-dom-element","vertex-viewer-dom-renderer","vertex-viewer-icon","vertex-viewer-pin-group","vertex-viewer-pin-label","vertex-viewer-pin-label-line"];t.forEach((t=>{switch(t){case"vertex-viewer-pin-tool":if(!customElements.get(i(t))){customElements.define(i(t),j)}break;case"vertex-viewer-dom-element":if(!customElements.get(i(t))){w()}break;case"vertex-viewer-dom-renderer":if(!customElements.get(i(t))){C()}break;case"vertex-viewer-icon":if(!customElements.get(i(t))){b()}break;case"vertex-viewer-pin-group":if(!customElements.get(i(t))){y()}break;case"vertex-viewer-pin-label":if(!customElements.get(i(t))){l()}break;case"vertex-viewer-pin-label-line":if(!customElements.get(i(t))){g()}break}}))}k();const M=j;const E=k;export{M as VertexViewerPinTool,E as defineCustomElement};
4
+ import{t as i,p as t,H as e,h as s,e as n}from"./p-Bb32XUUS.js";import{a as o,d as l,P as r}from"./p-DTwJX9HL.js";import{p as h}from"./p-2UsvOTHJ.js";import{b as d}from"./p-CDM7zNn0.js";import{l as a,p as u}from"./p-DxMDDbmh.js";import{g as v}from"./p-CPROw2BU.js";import{E as c}from"./p-CFus3r7d.js";import{E as p}from"./p-CvEK3ZK1.js";import{P as f}from"./p-D1akPoVm.js";import{g as m}from"./p-Bg-uS9BH.js";import{d as w}from"./p-BHyxBmg6.js";import{d as C}from"./p-Ca253f0h.js";import{d as b}from"./p-Bkm6H5uq.js";import{d as y}from"./p-Cxz4L6FA.js";import{d as g}from"./p-BFEV_v80.js";class x{get elementRect(){return this.rectObserver.rect}constructor(i,t,e){this.rectObserver=new c;this.droppableSurfaces=[p.PRECISE_SURFACE,p.IMPRECISE_SURFACE,p.GENERIC_GEOMETRY];this.handlePointerMove=async i=>{const t=await this.isDroppableSurface(i);const e=this.controller.getDraggable();if(e!=null&&t){this.handleDrag(e,i)}if(this.controller.getDraggable()==null&&this.controller.getToolMode()==="edit"&&t){this.addCursor(this.getCursorType())}else{this.clearCursor()}};this.handleDrag=async(i,t)=>{const e=v(t,this.elementRect);const s=await this.getWorldPositionForPoint(e);if(s!=null){this.controller.updateDraggable({...i,lastPoint:e},s)}};this.handlePointerDown=async i=>{const t=t=>{const s=h.distance(h.create(i.clientX,t.clientY),h.create(t.clientX,t.clientY));if(s<=2&&i.buttons!==2){if(this.controller.getToolMode()==="edit"){const t=v(i,this.elementRect);this.handlePlacePin(t)}}e()};const e=()=>{window.removeEventListener("pointerup",t)};window.addEventListener("pointerup",t);return{dispose:e}};this.handlePointerUp=async()=>{const i=this.controller.getDraggable();const t=i===null||i===void 0?void 0:i.lastPoint;this.controller.setDraggable(undefined);if(t!=null&&i!=null){this.ifInitialized((async({api:e})=>{var s,n,o,l,r,h;const[d]=await e.hitItems(t);if((d===null||d===void 0?void 0:d.hitPoint)!=null&&((s=d===null||d===void 0?void 0:d.hitPoint)===null||s===void 0?void 0:s.x)!=null&&((n=d===null||d===void 0?void 0:d.hitPoint)===null||n===void 0?void 0:n.y)!=null&&((o=d===null||d===void 0?void 0:d.hitPoint)===null||o===void 0?void 0:o.z)!=null){this.controller.updateDraggable({...i,lastPoint:t},{x:(l=d===null||d===void 0?void 0:d.hitPoint)===null||l===void 0?void 0:l.x,y:d===null||d===void 0?void 0:d.hitPoint.y,z:d===null||d===void 0?void 0:d.hitPoint.z},(h=(r=d===null||d===void 0?void 0:d.partId)===null||r===void 0?void 0:r.hex)!==null&&h!==void 0?h:undefined)}}))}};this.controller=i;this.xOffset=t;this.yOffset=e}initialize(i,t){this.element=i;this.api=t;this.rectObserver.observe(i);i.addEventListener("pointermove",this.handlePointerMove);i.addEventListener("pointerdown",this.handlePointerDown);window.addEventListener("pointerup",this.handlePointerUp)}dispose(){var i,t;this.rectObserver.disconnect();this.clearCursor();(i=this.element)===null||i===void 0?void 0:i.removeEventListener("pointermove",this.handlePointerMove);(t=this.element)===null||t===void 0?void 0:t.removeEventListener("pointerdown",this.handlePointerDown);window.removeEventListener("pointerup",this.handlePointerUp);this.element=undefined;this.api=undefined}async getWorldPositionForPoint(i){return this.ifInitialized((async({api:t})=>{const e=await t.getWorldPointFromViewport(i);return e}))}async handlePlacePin(i,t){this.ifInitialized((async({api:e})=>{var s,n,l,r,h,a;const[u]=await e.hitItems(i);if((u===null||u===void 0?void 0:u.hitPoint)!=null&&this.elementRect!=null){if((u===null||u===void 0?void 0:u.hitPoint)!=null&&(u===null||u===void 0?void 0:u.hitPoint.x)!=null&&(u===null||u===void 0?void 0:u.hitPoint.y)!=null&&(u===null||u===void 0?void 0:u.hitPoint.z)!=null){const e=t!=null?t.id:d.create();const v=this.controller.getStyleAttributes()!=null?{style:this.controller.getStyleAttributes()}:undefined;switch(this.controller.getToolType()){case"pin-icon":this.controller.setPin({type:"icon",id:e,worldPosition:{x:(s=u===null||u===void 0?void 0:u.hitPoint)===null||s===void 0?void 0:s.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(l=(n=u===null||u===void 0?void 0:u.itemId)===null||n===void 0?void 0:n.hex)!==null&&l!==void 0?l:undefined,attributes:v});break;case"pin-text":const d=t==null;const c=o(i,this.elementRect,d,this.xOffset,this.yOffset);this.controller.setPin({type:"text",id:e,worldPosition:{x:(r=u===null||u===void 0?void 0:u.hitPoint)===null||r===void 0?void 0:r.x,y:u===null||u===void 0?void 0:u.hitPoint.y,z:u===null||u===void 0?void 0:u.hitPoint.z},partId:(a=(h=u===null||u===void 0?void 0:u.itemId)===null||h===void 0?void 0:h.hex)!==null&&a!==void 0?a:undefined,label:{point:c},attributes:v});this.controller.setSelectedPinId(e);break}}}else{this.controller.setSelectedPinId()}}))}getCursorType(){switch(this.controller.getToolType()){case"pin-icon":return u;case"pin-text":return a}}addCursor(i){this.clearCursor();this.cursor=this.ifInitialized((({api:t})=>t.addCursor(i)))}async isDroppableSurface(i){var t;const e=v(i,this.elementRect);const s=await((t=this.api)===null||t===void 0?void 0:t.getEntityTypeAtPoint(e));return s!=null&&this.droppableSurfaces.includes(s)}ifInitialized(i){if(this.element!=null&&this.api!=null){return i({element:this.element,api:this.api})}else{throw new Error("Pins interaction handler not initialized.")}}clearCursor(){var i;(i=this.cursor)===null||i===void 0?void 0:i.dispose();this.cursor=undefined}}const P=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none;--viewer-pin-tool-initial-label-offset-x:20;--viewer-pin-tool-initial-label-offset-y:20}`;const j=t(class i extends e{constructor(i){super();if(i!==false){this.__registerHost()}this.__attachShadow();this.pinModel=new f;this.tool="pin-icon";this.mode="view";this.pins=[];this.stateMap={};this.handleSetProjectionMatrix=()=>{var i,t;this.projectionViewMatrix=(t=(i=this.viewer)===null||i===void 0?void 0:i.frame)===null||t===void 0?void 0:t.scene.camera.projectionViewMatrix}}watchModeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolMode(this.mode);this.setupInteractionHandler();if(this.mode==="edit"){this.setFeatureMaps();this.setCameraAndKeyboardControls()}else{this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}}watchTypeChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setToolType(this.tool);this.setupInteractionHandler()}watchAccentColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setAccentColor(this.accentColor);this.setupInteractionHandler()}watchPrimaryColorChange(){var i;(i=this.pinController)===null||i===void 0?void 0:i.setPrimaryColor(this.primaryColor);this.setupInteractionHandler()}watchPinsChange(){if(this.pins.length>0){this.setDepthBuffers();this.setFeatureMaps()}else{this.resetDepthBuffers();this.resetFeatureMaps()}}connectedCallback(){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls()}componentWillLoad(){this.updateViewport();this.setupController();this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();this.pinModel.onEntitiesChanged((i=>{this.pins=i}));this.pinModel.onSelectionChange((i=>{this.selectedPinId=i}));this.handleViewerChanged(this.viewer,undefined)}componentDidLoad(){this.resizeObserver=new ResizeObserver((()=>this.updateViewport()));this.resizeObserver.observe(this.hostEl)}disconnectedCallback(){this.clearInteractionHandler();this.clearModelListeners();this.resetDepthBuffers();this.resetFeatureMaps();this.resetCameraAndKeyboardControls()}handleViewerChanged(i,t){this.setupInteractionHandler();this.setDepthBuffers();this.setFeatureMaps();this.setCameraAndKeyboardControls();if(t!=null){t.removeEventListener("frameDrawn",this.handleSetProjectionMatrix)}if(i!=null){i.addEventListener("frameDrawn",this.handleSetProjectionMatrix)}this.handleSetProjectionMatrix()}render(){return s(n,{key:"ce2867d4a624dabf607b9de837e73a0a0c40eaf9"},s("vertex-viewer-dom-renderer",{key:"7d2dc3d75ca1818ba7b9b292ccbe1db7ac5c7ac8",viewer:this.viewer,drawMode:"2d"},this.pins.map((i=>s("vertex-viewer-pin-group",{id:`pin-group-${i.id}`,"data-is-dom-group-element":true,pin:i,elementBounds:this.elementBounds,pinModel:this.pinModel,pinController:this.pinController,projectionViewMatrix:this.projectionViewMatrix,selected:this.selectedPinId===i.id})))))}setupController(){const i=this.accentColor||this.primaryColor?{accentColor:this.accentColor,primaryColor:this.primaryColor}:undefined;this.pinController=new r(this.pinModel,this.mode,this.tool,i)}clearInteractionHandler(){var i;(i=this.registeredInteractionHandler)===null||i===void 0?void 0:i.then((i=>i.dispose()));this.registeredInteractionHandler=undefined}setupInteractionHandler(){var i;const t=window.getComputedStyle(this.hostEl);const e=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-x").trim();const s=Number.isFinite(Number.parseInt(e))?Number.parseInt(e):20;const n=t.getPropertyValue("--viewer-pin-tool-initial-label-offset-y").trim();const o=Number.isFinite(Number.parseInt(n))?Number.parseInt(n):20;this.clearInteractionHandler();if(this.pinController!=null){this.registeredInteractionHandler=(i=this.viewer)===null||i===void 0?void 0:i.registerInteractionHandler(new x(this.pinController,s,o))}}clearModelListeners(){var i,t,e;(i=this.onEntitiesChangedHandler)===null||i===void 0?void 0:i.dispose();this.onEntitiesChangedHandler=undefined;(t=this.onEntityAddedHandler)===null||t===void 0?void 0:t.dispose();this.onEntityAddedHandler=undefined;(e=this.resizeObserver)===null||e===void 0?void 0:e.disconnect()}updateViewport(){this.elementBounds=m(this.hostEl)}setDepthBuffers(){if(this.pins.length>0&&this.viewer!=null&&this.viewer.depthBuffers==null){this.stateMap.shouldClearDepthBuffers=true;this.viewer.depthBuffers="final"}}resetDepthBuffers(){if(this.stateMap.shouldClearDepthBuffers&&this.viewer!=null){this.viewer.depthBuffers=undefined;this.stateMap.shouldClearDepthBuffers=undefined}}setFeatureMaps(){if((this.pins.length>0||this.mode==="edit")&&this.viewer!=null&&this.viewer.featureMaps==null){this.stateMap.shouldClearFeatureMaps=true;this.viewer.featureMaps="final"}}resetFeatureMaps(){if(this.stateMap.shouldClearFeatureMaps&&this.viewer!=null){this.viewer.featureMaps=undefined;this.stateMap.shouldClearFeatureMaps=undefined}}setCameraAndKeyboardControls(){if(this.mode==="edit"&&this.viewer!=null){if(this.viewer.cameraControls){this.stateMap.shouldClearCameraControls=true;this.viewer.cameraControls=false}if(this.viewer.keyboardControls){this.stateMap.shouldClearKeyboardControls=true;this.viewer.keyboardControls=false}}}resetCameraAndKeyboardControls(){if(this.viewer!=null){if(this.stateMap.shouldClearCameraControls){this.viewer.cameraControls=true;this.stateMap.shouldClearCameraControls=undefined}if(this.stateMap.shouldClearKeyboardControls){this.viewer.keyboardControls=true;this.stateMap.shouldClearKeyboardControls=undefined}}}get hostEl(){return this}static get watchers(){return{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}}static get style(){return P()}},[1,"vertex-viewer-pin-tool",{pinController:[1040],pinModel:[16],viewer:[16],tool:[1025],mode:[1025],primaryColor:[1025,"primary-color"],accentColor:[1025,"accent-color"],pins:[32],selectedPinId:[32],elementBounds:[32],projectionViewMatrix:[32]},undefined,{mode:[{watchModeChange:0}],tool:[{watchTypeChange:0}],accentColor:[{watchAccentColorChange:0}],primaryColor:[{watchPrimaryColorChange:0}],pins:[{watchPinsChange:0}],viewer:[{handleViewerChanged:0}]}]);function k(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-pin-tool","vertex-viewer-dom-element","vertex-viewer-dom-renderer","vertex-viewer-icon","vertex-viewer-pin-group","vertex-viewer-pin-label","vertex-viewer-pin-label-line"];t.forEach((t=>{switch(t){case"vertex-viewer-pin-tool":if(!customElements.get(i(t))){customElements.define(i(t),j)}break;case"vertex-viewer-dom-element":if(!customElements.get(i(t))){w()}break;case"vertex-viewer-dom-renderer":if(!customElements.get(i(t))){C()}break;case"vertex-viewer-icon":if(!customElements.get(i(t))){b()}break;case"vertex-viewer-pin-group":if(!customElements.get(i(t))){y()}break;case"vertex-viewer-pin-label":if(!customElements.get(i(t))){l()}break;case"vertex-viewer-pin-label-line":if(!customElements.get(i(t))){g()}break}}))}k();const E=j;const M=k;export{E as VertexViewerPinTool,M as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-pin-tool.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{V as o,d as s}from"./p-Ib4vgh2t.js";const t=o;const p=s;export{t as VertexViewerTeleportTool,p as defineCustomElement};
4
+ import{V as o,d as s}from"./p-UrT4ZJv3.js";const r=o;const t=s;export{r as VertexViewerTeleportTool,t as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-teleport-tool.js.map