@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":["VolumeIntersectionQueryInteractionHandler","constructor","controller","this","handleDragBegin","bind","handleDrag","handleDragEnd","enabled","initialize","element","api","addEventListener","addCrosshairCursor","dispose","_a","removeEventListener","window","_b","crosshairCursorDisposable","_c","waitCursorDisposable","undefined","disable","enable","event","isPrimaryMouseButtonClick","isInteracting","elementBounds","getBoundingClientRect","setStartPoint","getMouseClientPosition","setEndPoint","addWaitCursor","execute","buttons","addCursor","boxQueryCursor","viewerBoxQueryToolCss","ViewerBoxQueryTool","__stencil_proxyCustomElement","HTMLElement","registerHost","operationType","handleScreenBoundsChanged","handleExecuteStarted","handleExecuteComplete","componentWillLoad","model","VolumeIntersectionQueryModel","mode","screenBoundsChangedDisposable","onScreenBoundsChanged","handleViewerChanged","viewer","handleControllerChange","handleDefaultOperationChange","disconnectedCallback","reset","operationStartedDisposable","_d","operationCompleteDisposable","deregisterInteractionHandler","newViewer","VolumeIntersectionQueryController","registerInteractionHandler","updatedOperationType","setDefaultClearAndSelectOperation","setDefaultSelectOperation","setDefaultDeselectOperation","handleModeChange","updatedMode","setMode","onExecuteStarted","onExecuteComplete","controllerChanged","emit","render","h","Host","key","details","class","style","left","screenBounds","x","top","y","width","height","name","updateTypeAttribute","type","interactionHandler","interactionHandlerDisposable","hostEl","setAttribute","setOperationTransform","builder","select","setAdditionalTransforms","op","items","where","q","withSelected","deselect"],"sources":["src/lib/volume-intersection/interactions.ts","src/components/viewer-box-query-tool/viewer-box-query-tool.css?tag=vertex-viewer-box-query-tool&encapsulation=shadow","src/components/viewer-box-query-tool/viewer-box-query-tool.tsx"],"sourcesContent":["import { Disposable } from '@vertexvis/utils';\n\nimport { boxQueryCursor } from '../cursors';\nimport { getMouseClientPosition } from '../dom';\nimport { InteractionApi } from '../interactions';\nimport { InteractionHandler } from '../interactions/interactionHandler';\nimport { VolumeIntersectionQueryController } from './controller';\n\nexport class VolumeIntersectionQueryInteractionHandler implements InteractionHandler {\n private element?: HTMLElement;\n private api?: InteractionApi;\n private isInteracting?: boolean;\n private enabled?: boolean;\n private elementBounds?: DOMRect;\n private crosshairCursorDisposable?: Disposable;\n private waitCursorDisposable?: Disposable;\n\n public constructor(private controller: VolumeIntersectionQueryController) {\n this.handleDragBegin = this.handleDragBegin.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n\n this.enabled = true;\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.element.addEventListener('pointerdown', this.handleDragBegin);\n this.addCrosshairCursor();\n }\n\n public dispose(): void {\n this.element?.removeEventListener('pointerdown', this.handleDragBegin);\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleDragEnd);\n this.crosshairCursorDisposable?.dispose();\n this.waitCursorDisposable?.dispose();\n\n this.element = undefined;\n this.api = undefined;\n this.enabled = true;\n }\n\n public disable(): void {\n this.enabled = false;\n }\n\n public enable(): void {\n this.enabled = true;\n }\n\n private handleDragBegin(event: PointerEvent): void {\n if (\n this.enabled &&\n this.isPrimaryMouseButtonClick(event) &&\n !this.isInteracting\n ) {\n this.elementBounds = this.element?.getBoundingClientRect();\n this.isInteracting = true;\n this.controller.setStartPoint(\n getMouseClientPosition(event, this.elementBounds),\n );\n\n window.addEventListener('pointermove', this.handleDrag);\n window.addEventListener('pointerup', this.handleDragEnd);\n }\n }\n\n private handleDrag(event: PointerEvent): void {\n if (this.enabled) {\n this.controller.setEndPoint(\n getMouseClientPosition(event, this.elementBounds),\n );\n }\n }\n\n private async handleDragEnd(): Promise<void> {\n this.isInteracting = false;\n\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleDragEnd);\n\n this.crosshairCursorDisposable?.dispose();\n if (this.enabled) {\n this.addWaitCursor();\n try {\n await this.controller.execute();\n } finally {\n this.waitCursorDisposable?.dispose();\n this.addCrosshairCursor();\n }\n }\n }\n\n private isPrimaryMouseButtonClick(event: PointerEvent): boolean {\n return event.buttons === 1;\n }\n\n private addCrosshairCursor(): void {\n this.crosshairCursorDisposable?.dispose();\n this.crosshairCursorDisposable = this.api?.addCursor(boxQueryCursor);\n }\n\n private addWaitCursor(): void {\n this.waitCursorDisposable?.dispose();\n this.waitCursorDisposable = this.api?.addCursor('wait');\n }\n}\n",":host {\n /**\n * @prop --viewer-box-query-outline-exclusive-color: A CSS color that\n * specifies the color of box for an exclusive query. This will\n * be used in combination with `--viewer-box-query-outline-fill-opacity`\n * for the background color of the box. Defaults to `#0099cc`.\n */\n --viewer-box-query-outline-exclusive-color: #0099cc;\n /**\n * @prop --viewer-box-query-outline-exclusive-border-style: A border\n * style that specifies the type of border to display around the box for an\n * exclusive query. Defaults to `solid`.\n */\n --viewer-box-query-outline-exclusive-border-style: solid;\n /**\n * @prop --viewer-box-query-outline-inclusive-color: A CSS color that\n * specifies the color of box for an inclusive query. This will\n * be used in combination with `--viewer-box-query-outline-fill-opacity`\n * for the background color of the box. Defaults to `#00cc00`.\n */\n --viewer-box-query-outline-inclusive-color: #00cc00;\n /**\n * @prop --viewer-box-query-outline-inclusive-border-style: A border\n * style that specifies the type of border to display around the box for an\n * inclusive query. Defaults to `dashed`.\n */\n --viewer-box-query-outline-inclusive-border-style: dashed;\n /**\n * @prop --viewer-box-query-outline-border-radius: A CSS length that\n * specifies the border radius of the drawn box. Defaults to `0.25rem`.\n */\n --viewer-box-query-outline-border-radius: 0.25rem;\n /**\n * @prop--viewer-box-query-outline-fill-opacity: A number between \n * 0 and 1 that specifies the opacity of the background of the drawn box.\n * Defaults to `0.25`.\n */\n --viewer-box-query-outline-fill-opacity: 0.25;\n}\n\n.bounds {\n position: absolute;\n}\n\n.outline {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n border-radius: var(--viewer-box-query-outline-border-radius);\n}\n\n:host([exclusive=\"true\"]) .outline {\n border: 3px var(--viewer-box-query-outline-exclusive-border-style) var(--viewer-box-query-outline-exclusive-color);\n}\n\n:host([inclusive=\"true\"]) .outline {\n border: 3px var(--viewer-box-query-outline-inclusive-border-style) var(--viewer-box-query-outline-inclusive-color);\n}\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: var(--viewer-box-query-outline-fill-opacity);\n border-radius: var(--viewer-box-query-outline-border-radius);\n}\n\n:host([exclusive=\"true\"]) .fill {\n background-color: var(--viewer-box-query-outline-exclusive-color);\n}\n\n:host([inclusive=\"true\"]) .fill {\n background-color: var(--viewer-box-query-outline-inclusive-color);\n}","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { VolumeIntersectionQueryController } from '../../lib/volume-intersection/controller';\nimport { VolumeIntersectionQueryInteractionHandler } from '../../lib/volume-intersection/interactions';\nimport {\n QueryType,\n VolumeIntersectionQueryDetails,\n VolumeIntersectionQueryModel,\n} from '../../lib/volume-intersection/model';\nimport {\n VolumeIntersectionQueryMode,\n VolumeIntersectionQueryType,\n} from './types';\n\n/**\n * The `ViewerBoxQueryTool` allows for the drawing of a \"box\" on screen to represent\n * a query for items in a specific area of the viewer. This tool then allows for an\n * operation to be performed on the items contained (exclusive) by the box or both\n * contained by and intersecting with (inclusive) the box.\n */\n@Component({\n tag: 'vertex-viewer-box-query-tool',\n styleUrl: 'viewer-box-query-tool.css',\n shadow: true,\n})\nexport class ViewerBoxQueryTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The controller that is responsible for performing operations using the\n * volume intersection query defined by the drawn box and updating the model.\n */\n @Prop({ mutable: true })\n public controller?: VolumeIntersectionQueryController;\n\n /**\n * The model that contains the points representing the corners of the box\n * displayed on screen, the type of the query to be performed, and methods\n * for setting these values.\n */\n @Prop({ mutable: true })\n public model?: VolumeIntersectionQueryModel;\n\n /**\n * The default operation to perform when a drag has completed and the intersection\n * query will be run. Defaults to `clearAndSelect`, and can be changed to `select` or `deselect`.\n *\n * `clearAndSelect` will clear all existing selection, and select the results of the query.\n * `select` will maintain existing selection, and select the results of the query.\n * `deselect` will maintain existing selection, and deselect the results of the query.\n *\n * The operation behavior for this intersection query tool can also be changed by\n * providing a custom implementation of the `VolumeIntersectionQueryController`, or\n * by using the `setOperationTransform` method of the default controller.\n */\n @Prop()\n public operationType: VolumeIntersectionQueryType = 'clearAndSelect';\n\n /**\n * An optional value to specify a singular mode of intersection query. This value\n * defaults to `undefined`, which will indicate that both `exclusive` and `inclusive`\n * queries should be made, with `inclusive` being represented by a left to right\n * drag behavior and `exclusive` being represented by a right to left drag.\n *\n * Setting this value to `inclusive` will cause dragging left to right and left to right\n * to result in an `inclusive` query, and the box will only be styled for `inclusive` queries.\n *\n * Setting this value to `exclusive` will cause dragging left to right and left to right\n * to result in an `exclusive` query, and the box will only be styled for `exclusive` queries.\n */\n @Prop()\n public mode?: VolumeIntersectionQueryMode;\n\n @State()\n private details?: VolumeIntersectionQueryDetails;\n\n /**\n * Event emitted when the `VolumeIntersectionQueryController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<VolumeIntersectionQueryController>;\n\n @Element()\n private hostEl!: HTMLVertexViewerBoxQueryToolElement;\n\n private interactionHandler?: VolumeIntersectionQueryInteractionHandler;\n private interactionHandlerDisposable?: Disposable;\n\n private operationStartedDisposable?: Disposable;\n private operationCompleteDisposable?: Disposable;\n private screenBoundsChangedDisposable?: Disposable;\n\n public constructor() {\n this.handleScreenBoundsChanged = this.handleScreenBoundsChanged.bind(this);\n this.handleExecuteStarted = this.handleExecuteStarted.bind(this);\n this.handleExecuteComplete = this.handleExecuteComplete.bind(this);\n }\n\n public componentWillLoad(): void {\n this.model = this.model ?? new VolumeIntersectionQueryModel(this.mode);\n\n this.screenBoundsChangedDisposable = this.model.onScreenBoundsChanged(\n this.handleScreenBoundsChanged,\n );\n\n this.handleViewerChanged(this.viewer);\n this.handleControllerChange(this.controller);\n this.handleDefaultOperationChange(this.operationType);\n }\n\n public disconnectedCallback(): void {\n this.model?.reset();\n this.screenBoundsChangedDisposable?.dispose();\n this.operationStartedDisposable?.dispose();\n this.operationCompleteDisposable?.dispose();\n this.deregisterInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(newViewer?: HTMLVertexViewerElement): void {\n this.deregisterInteractionHandler();\n\n if (this.model != null && newViewer != null) {\n this.controller = new VolumeIntersectionQueryController(\n this.model,\n newViewer,\n );\n this.handleDefaultOperationChange(this.operationType);\n this.registerInteractionHandler(this.controller, newViewer);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('operationType')\n protected handleDefaultOperationChange(\n updatedOperationType: VolumeIntersectionQueryType,\n ): void {\n switch (updatedOperationType) {\n case 'clearAndSelect':\n this.setDefaultClearAndSelectOperation();\n break;\n case 'select':\n this.setDefaultSelectOperation();\n break;\n case 'deselect':\n this.setDefaultDeselectOperation();\n break;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected handleModeChange(updatedMode?: VolumeIntersectionQueryMode): void {\n this.model?.setMode(updatedMode);\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChange(\n controller?: VolumeIntersectionQueryController,\n ): void {\n this.operationStartedDisposable?.dispose();\n this.operationCompleteDisposable?.dispose();\n\n this.operationStartedDisposable = controller?.onExecuteStarted(\n this.handleExecuteStarted,\n );\n this.operationStartedDisposable = controller?.onExecuteComplete(\n this.handleExecuteComplete,\n );\n\n this.controllerChanged.emit(this.controller);\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-layer>\n {this.details != null && (\n <div\n class=\"bounds\"\n style={{\n left: `${this.details.screenBounds.x}px`,\n top: `${this.details.screenBounds.y}px`,\n width: `${this.details.screenBounds.width}px`,\n height: `${this.details.screenBounds.height}px`,\n }}\n >\n <slot name=\"bounds\">\n <div class=\"outline\"></div>\n <div class=\"fill\"></div>\n </slot>\n </div>\n )}\n </vertex-viewer-layer>\n </Host>\n );\n }\n\n private handleScreenBoundsChanged(\n details?: VolumeIntersectionQueryDetails,\n ): void {\n this.details = details;\n\n this.updateTypeAttribute(details?.type);\n }\n\n private handleExecuteStarted(): void {\n this.interactionHandler?.disable();\n }\n\n private handleExecuteComplete(): void {\n this.interactionHandler?.enable();\n }\n\n private async registerInteractionHandler(\n controller: VolumeIntersectionQueryController,\n viewer: HTMLVertexViewerElement,\n ): Promise<void> {\n this.interactionHandler = new VolumeIntersectionQueryInteractionHandler(\n controller,\n );\n this.interactionHandlerDisposable = await viewer.registerInteractionHandler(\n this.interactionHandler,\n );\n }\n\n private deregisterInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private updateTypeAttribute(type?: QueryType): void {\n this.hostEl.setAttribute('inclusive', `${type === 'inclusive'}`);\n this.hostEl.setAttribute('exclusive', `${type === 'exclusive'}`);\n }\n\n private setDefaultClearAndSelectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.select());\n this.controller?.setAdditionalTransforms([\n (op) => op.items.where((q) => q.withSelected()).deselect(),\n ]);\n }\n\n private setDefaultSelectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.select());\n this.controller?.setAdditionalTransforms([]);\n }\n\n private setDefaultDeselectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.deselect());\n this.controller?.setAdditionalTransforms([]);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["VolumeIntersectionQueryInteractionHandler","constructor","controller","this","handleDragBegin","bind","handleDrag","handleDragEnd","enabled","initialize","element","api","addEventListener","addCrosshairCursor","dispose","_a","removeEventListener","window","_b","crosshairCursorDisposable","_c","waitCursorDisposable","undefined","disable","enable","event","isPrimaryMouseButtonClick","isInteracting","elementBounds","getBoundingClientRect","setStartPoint","getMouseClientPosition","setEndPoint","addWaitCursor","execute","buttons","addCursor","boxQueryCursor","viewerBoxQueryToolCss","ViewerBoxQueryTool","__stencil_proxyCustomElement","HTMLElement","registerHost","operationType","handleScreenBoundsChanged","handleExecuteStarted","handleExecuteComplete","componentWillLoad","model","VolumeIntersectionQueryModel","mode","screenBoundsChangedDisposable","onScreenBoundsChanged","handleViewerChanged","viewer","handleControllerChange","handleDefaultOperationChange","disconnectedCallback","reset","operationStartedDisposable","_d","operationCompleteDisposable","deregisterInteractionHandler","newViewer","VolumeIntersectionQueryController","registerInteractionHandler","updatedOperationType","setDefaultClearAndSelectOperation","setDefaultSelectOperation","setDefaultDeselectOperation","handleModeChange","updatedMode","setMode","onExecuteStarted","onExecuteComplete","controllerChanged","emit","render","h","Host","key","details","class","style","left","screenBounds","x","top","y","width","height","name","updateTypeAttribute","type","interactionHandler","interactionHandlerDisposable","hostEl","setAttribute","setOperationTransform","builder","select","setAdditionalTransforms","op","items","where","q","withSelected","deselect"],"sources":["src/lib/volume-intersection/interactions.ts","src/components/viewer-box-query-tool/viewer-box-query-tool.css?tag=vertex-viewer-box-query-tool&encapsulation=shadow","src/components/viewer-box-query-tool/viewer-box-query-tool.tsx"],"sourcesContent":["import { Disposable } from '@vertexvis/utils';\n\nimport { boxQueryCursor } from '../cursors';\nimport { getMouseClientPosition } from '../dom';\nimport { InteractionApi } from '../interactions';\nimport { InteractionHandler } from '../interactions/interactionHandler';\nimport { VolumeIntersectionQueryController } from './controller';\n\nexport class VolumeIntersectionQueryInteractionHandler implements InteractionHandler {\n private element?: HTMLElement;\n private api?: InteractionApi;\n private isInteracting?: boolean;\n private enabled?: boolean;\n private elementBounds?: DOMRect;\n private crosshairCursorDisposable?: Disposable;\n private waitCursorDisposable?: Disposable;\n\n public constructor(private controller: VolumeIntersectionQueryController) {\n this.handleDragBegin = this.handleDragBegin.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n\n this.enabled = true;\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.element.addEventListener('pointerdown', this.handleDragBegin);\n this.addCrosshairCursor();\n }\n\n public dispose(): void {\n this.element?.removeEventListener('pointerdown', this.handleDragBegin);\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleDragEnd);\n this.crosshairCursorDisposable?.dispose();\n this.waitCursorDisposable?.dispose();\n\n this.element = undefined;\n this.api = undefined;\n this.enabled = true;\n }\n\n public disable(): void {\n this.enabled = false;\n }\n\n public enable(): void {\n this.enabled = true;\n }\n\n private handleDragBegin(event: PointerEvent): void {\n if (\n this.enabled &&\n this.isPrimaryMouseButtonClick(event) &&\n !this.isInteracting\n ) {\n this.elementBounds = this.element?.getBoundingClientRect();\n this.isInteracting = true;\n this.controller.setStartPoint(\n getMouseClientPosition(event, this.elementBounds),\n );\n\n window.addEventListener('pointermove', this.handleDrag);\n window.addEventListener('pointerup', this.handleDragEnd);\n }\n }\n\n private handleDrag(event: PointerEvent): void {\n if (this.enabled) {\n this.controller.setEndPoint(\n getMouseClientPosition(event, this.elementBounds),\n );\n }\n }\n\n private async handleDragEnd(): Promise<void> {\n this.isInteracting = false;\n\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleDragEnd);\n\n this.crosshairCursorDisposable?.dispose();\n if (this.enabled) {\n this.addWaitCursor();\n try {\n await this.controller.execute();\n } finally {\n this.waitCursorDisposable?.dispose();\n this.addCrosshairCursor();\n }\n }\n }\n\n private isPrimaryMouseButtonClick(event: PointerEvent): boolean {\n return event.buttons === 1;\n }\n\n private addCrosshairCursor(): void {\n this.crosshairCursorDisposable?.dispose();\n this.crosshairCursorDisposable = this.api?.addCursor(boxQueryCursor);\n }\n\n private addWaitCursor(): void {\n this.waitCursorDisposable?.dispose();\n this.waitCursorDisposable = this.api?.addCursor('wait');\n }\n}\n",":host {\n /**\n * @prop --viewer-box-query-outline-exclusive-color: A CSS color that\n * specifies the color of box for an exclusive query. This will\n * be used in combination with `--viewer-box-query-outline-fill-opacity`\n * for the background color of the box. Defaults to `#0099cc`.\n */\n --viewer-box-query-outline-exclusive-color: #0099cc;\n /**\n * @prop --viewer-box-query-outline-exclusive-border-style: A border\n * style that specifies the type of border to display around the box for an\n * exclusive query. Defaults to `solid`.\n */\n --viewer-box-query-outline-exclusive-border-style: solid;\n /**\n * @prop --viewer-box-query-outline-inclusive-color: A CSS color that\n * specifies the color of box for an inclusive query. This will\n * be used in combination with `--viewer-box-query-outline-fill-opacity`\n * for the background color of the box. Defaults to `#00cc00`.\n */\n --viewer-box-query-outline-inclusive-color: #00cc00;\n /**\n * @prop --viewer-box-query-outline-inclusive-border-style: A border\n * style that specifies the type of border to display around the box for an\n * inclusive query. Defaults to `dashed`.\n */\n --viewer-box-query-outline-inclusive-border-style: dashed;\n /**\n * @prop --viewer-box-query-outline-border-radius: A CSS length that\n * specifies the border radius of the drawn box. Defaults to `0.25rem`.\n */\n --viewer-box-query-outline-border-radius: 0.25rem;\n /**\n * @prop--viewer-box-query-outline-fill-opacity: A number between \n * 0 and 1 that specifies the opacity of the background of the drawn box.\n * Defaults to `0.25`.\n */\n --viewer-box-query-outline-fill-opacity: 0.25;\n}\n\n.bounds {\n position: absolute;\n}\n\n.outline {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n border-radius: var(--viewer-box-query-outline-border-radius);\n}\n\n:host([exclusive='true']) .outline {\n border: 3px var(--viewer-box-query-outline-exclusive-border-style)\n var(--viewer-box-query-outline-exclusive-color);\n}\n\n:host([inclusive='true']) .outline {\n border: 3px var(--viewer-box-query-outline-inclusive-border-style)\n var(--viewer-box-query-outline-inclusive-color);\n}\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: var(--viewer-box-query-outline-fill-opacity);\n border-radius: var(--viewer-box-query-outline-border-radius);\n}\n\n:host([exclusive='true']) .fill {\n background-color: var(--viewer-box-query-outline-exclusive-color);\n}\n\n:host([inclusive='true']) .fill {\n background-color: var(--viewer-box-query-outline-inclusive-color);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { VolumeIntersectionQueryController } from '../../lib/volume-intersection/controller';\nimport { VolumeIntersectionQueryInteractionHandler } from '../../lib/volume-intersection/interactions';\nimport {\n QueryType,\n VolumeIntersectionQueryDetails,\n VolumeIntersectionQueryModel,\n} from '../../lib/volume-intersection/model';\nimport {\n VolumeIntersectionQueryMode,\n VolumeIntersectionQueryType,\n} from './types';\n\n/**\n * The `ViewerBoxQueryTool` allows for the drawing of a \"box\" on screen to represent\n * a query for items in a specific area of the viewer. This tool then allows for an\n * operation to be performed on the items contained (exclusive) by the box or both\n * contained by and intersecting with (inclusive) the box.\n */\n@Component({\n tag: 'vertex-viewer-box-query-tool',\n styleUrl: 'viewer-box-query-tool.css',\n shadow: true,\n})\nexport class ViewerBoxQueryTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The controller that is responsible for performing operations using the\n * volume intersection query defined by the drawn box and updating the model.\n */\n @Prop({ mutable: true })\n public controller?: VolumeIntersectionQueryController;\n\n /**\n * The model that contains the points representing the corners of the box\n * displayed on screen, the type of the query to be performed, and methods\n * for setting these values.\n */\n @Prop({ mutable: true })\n public model?: VolumeIntersectionQueryModel;\n\n /**\n * The default operation to perform when a drag has completed and the intersection\n * query will be run. Defaults to `clearAndSelect`, and can be changed to `select` or `deselect`.\n *\n * `clearAndSelect` will clear all existing selection, and select the results of the query.\n * `select` will maintain existing selection, and select the results of the query.\n * `deselect` will maintain existing selection, and deselect the results of the query.\n *\n * The operation behavior for this intersection query tool can also be changed by\n * providing a custom implementation of the `VolumeIntersectionQueryController`, or\n * by using the `setOperationTransform` method of the default controller.\n */\n @Prop()\n public operationType: VolumeIntersectionQueryType = 'clearAndSelect';\n\n /**\n * An optional value to specify a singular mode of intersection query. This value\n * defaults to `undefined`, which will indicate that both `exclusive` and `inclusive`\n * queries should be made, with `inclusive` being represented by a left to right\n * drag behavior and `exclusive` being represented by a right to left drag.\n *\n * Setting this value to `inclusive` will cause dragging left to right and left to right\n * to result in an `inclusive` query, and the box will only be styled for `inclusive` queries.\n *\n * Setting this value to `exclusive` will cause dragging left to right and left to right\n * to result in an `exclusive` query, and the box will only be styled for `exclusive` queries.\n */\n @Prop()\n public mode?: VolumeIntersectionQueryMode;\n\n @State()\n private details?: VolumeIntersectionQueryDetails;\n\n /**\n * Event emitted when the `VolumeIntersectionQueryController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<VolumeIntersectionQueryController>;\n\n @Element()\n private hostEl!: HTMLVertexViewerBoxQueryToolElement;\n\n private interactionHandler?: VolumeIntersectionQueryInteractionHandler;\n private interactionHandlerDisposable?: Disposable;\n\n private operationStartedDisposable?: Disposable;\n private operationCompleteDisposable?: Disposable;\n private screenBoundsChangedDisposable?: Disposable;\n\n public constructor() {\n this.handleScreenBoundsChanged = this.handleScreenBoundsChanged.bind(this);\n this.handleExecuteStarted = this.handleExecuteStarted.bind(this);\n this.handleExecuteComplete = this.handleExecuteComplete.bind(this);\n }\n\n public componentWillLoad(): void {\n this.model = this.model ?? new VolumeIntersectionQueryModel(this.mode);\n\n this.screenBoundsChangedDisposable = this.model.onScreenBoundsChanged(\n this.handleScreenBoundsChanged,\n );\n\n this.handleViewerChanged(this.viewer);\n this.handleControllerChange(this.controller);\n this.handleDefaultOperationChange(this.operationType);\n }\n\n public disconnectedCallback(): void {\n this.model?.reset();\n this.screenBoundsChangedDisposable?.dispose();\n this.operationStartedDisposable?.dispose();\n this.operationCompleteDisposable?.dispose();\n this.deregisterInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(newViewer?: HTMLVertexViewerElement): void {\n this.deregisterInteractionHandler();\n\n if (this.model != null && newViewer != null) {\n this.controller = new VolumeIntersectionQueryController(\n this.model,\n newViewer,\n );\n this.handleDefaultOperationChange(this.operationType);\n this.registerInteractionHandler(this.controller, newViewer);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('operationType')\n protected handleDefaultOperationChange(\n updatedOperationType: VolumeIntersectionQueryType,\n ): void {\n switch (updatedOperationType) {\n case 'clearAndSelect':\n this.setDefaultClearAndSelectOperation();\n break;\n case 'select':\n this.setDefaultSelectOperation();\n break;\n case 'deselect':\n this.setDefaultDeselectOperation();\n break;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected handleModeChange(updatedMode?: VolumeIntersectionQueryMode): void {\n this.model?.setMode(updatedMode);\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChange(\n controller?: VolumeIntersectionQueryController,\n ): void {\n this.operationStartedDisposable?.dispose();\n this.operationCompleteDisposable?.dispose();\n\n this.operationStartedDisposable = controller?.onExecuteStarted(\n this.handleExecuteStarted,\n );\n this.operationStartedDisposable = controller?.onExecuteComplete(\n this.handleExecuteComplete,\n );\n\n this.controllerChanged.emit(this.controller);\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-layer>\n {this.details != null && (\n <div\n class=\"bounds\"\n style={{\n left: `${this.details.screenBounds.x}px`,\n top: `${this.details.screenBounds.y}px`,\n width: `${this.details.screenBounds.width}px`,\n height: `${this.details.screenBounds.height}px`,\n }}\n >\n <slot name=\"bounds\">\n <div class=\"outline\"></div>\n <div class=\"fill\"></div>\n </slot>\n </div>\n )}\n </vertex-viewer-layer>\n </Host>\n );\n }\n\n private handleScreenBoundsChanged(\n details?: VolumeIntersectionQueryDetails,\n ): void {\n this.details = details;\n\n this.updateTypeAttribute(details?.type);\n }\n\n private handleExecuteStarted(): void {\n this.interactionHandler?.disable();\n }\n\n private handleExecuteComplete(): void {\n this.interactionHandler?.enable();\n }\n\n private async registerInteractionHandler(\n controller: VolumeIntersectionQueryController,\n viewer: HTMLVertexViewerElement,\n ): Promise<void> {\n this.interactionHandler = new VolumeIntersectionQueryInteractionHandler(\n controller,\n );\n this.interactionHandlerDisposable = await viewer.registerInteractionHandler(\n this.interactionHandler,\n );\n }\n\n private deregisterInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private updateTypeAttribute(type?: QueryType): void {\n this.hostEl.setAttribute('inclusive', `${type === 'inclusive'}`);\n this.hostEl.setAttribute('exclusive', `${type === 'exclusive'}`);\n }\n\n private setDefaultClearAndSelectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.select());\n this.controller?.setAdditionalTransforms([\n (op) => op.items.where((q) => q.withSelected()).deselect(),\n ]);\n }\n\n private setDefaultSelectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.select());\n this.controller?.setAdditionalTransforms([]);\n }\n\n private setDefaultDeselectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.deselect());\n this.controller?.setAdditionalTransforms([]);\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{V as o,d as s}from"./p-C--Voxln.js";const t=o;const n=s;export{t as VertexViewerButton,n as defineCustomElement};
4
+ import{V as o,d as s}from"./p-DUo-H-nW.js";const t=o;const n=s;export{t as VertexViewerButton,n as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-button.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 r,H as t,h as o}from"./p-Bb32XUUS.js";import{d as a}from"./p-C--Voxln.js";import{d as i}from"./p-Bkm6H5uq.js";import{d as s}from"./p-BAsg2_dY.js";import{d as n}from"./p-Dva0y9cX.js";import{d as l}from"./p-dGLnP5K-.js";const d=()=>`:host{--viewer-toolbar-group-gap:0.5rem;--viewer-toolbar-group-background:rgba(245, 245, 245, 0.95);--viewer-toolbar-group-border-radius:0.25rem;--viewer-toolbar-group-box-shadow:-1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13);--viewer-toolbar-group-padding:0.25rem;--viewer-toolbar-group-item-gap:0.25rem}.group{background:var(--viewer-toolbar-group-background);border-radius:var(--viewer-toolbar-group-border-radius);box-shadow:var(--viewer-toolbar-group-box-shadow);padding:var(--viewer-toolbar-group-padding)}.group[data-direction='horizontal']:not(:first-child){margin-left:var(--viewer-toolbar-group-gap)}.group[data-direction='horizontal'] .group-item:not(:first-child){margin-left:var(--viewer-toolbar-group-item-gap)}.group[data-direction='vertical']:not(:first-child){margin-top:var(--viewer-toolbar-group-gap)}.group[data-direction='vertical'] .group-item:not(:first-child){margin-top:var(--viewer-toolbar-group-item-gap)}.btn{color:var(--neutral-800);padding:0.125rem;border-radius:0.125rem}.btn:hover{background:var(--neutral-300)}`;const v=r(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.placement="bottom-center";this.direction="horizontal";this.animationsDisabled=false;this.animationMs=1e3}render(){return o("vertex-viewer-toolbar",{key:"349bf96991062154e2e7666bbbecd3d66310e69f",placement:this.placement,direction:this.direction},o("vertex-viewer-toolbar-group",{key:"6982b3cb19276e09484c52d8baaa825a7339f371",class:"group",direction:this.direction,"data-direction":this.direction},o("vertex-viewer-button",{key:"77e0f4332b4997c433d2f28b5b9917cc9bea9a12",class:"group-item btn","data-testid":"fit-all-btn",onClick:()=>this.viewAll()},o("vertex-viewer-icon",{key:"75f085b6c0443ba658e795f74a579cf70e1af2da",class:"icon",name:"fit-all",size:"md"}))))}async viewAll(){var e;const r=await((e=this.viewer)===null||e===void 0?void 0:e.scene());const t=this.animationsDisabled?undefined:{milliseconds:this.animationMs};r===null||r===void 0?void 0:r.camera().viewAll().render({animation:t})}static get style(){return d()}},[1,"vertex-viewer-default-toolbar",{viewer:[16],placement:[1],direction:[1],animationsDisabled:[4,"animations-disabled"],animationMs:[2,"animation-ms"]}]);function c(){if(typeof customElements==="undefined"){return}const r=["vertex-viewer-default-toolbar","vertex-viewer-button","vertex-viewer-icon","vertex-viewer-layer","vertex-viewer-toolbar","vertex-viewer-toolbar-group"];r.forEach((r=>{switch(r){case"vertex-viewer-default-toolbar":if(!customElements.get(e(r))){customElements.define(e(r),v)}break;case"vertex-viewer-button":if(!customElements.get(e(r))){a()}break;case"vertex-viewer-icon":if(!customElements.get(e(r))){i()}break;case"vertex-viewer-layer":if(!customElements.get(e(r))){s()}break;case"vertex-viewer-toolbar":if(!customElements.get(e(r))){n()}break;case"vertex-viewer-toolbar-group":if(!customElements.get(e(r))){l()}break}}))}c();const b=v;const u=c;export{b as VertexViewerDefaultToolbar,u as defineCustomElement};
4
+ import{t as e,p as r,H as t,h as o}from"./p-Bb32XUUS.js";import{d as a}from"./p-DUo-H-nW.js";import{d as i}from"./p-Bkm6H5uq.js";import{d as s}from"./p-BAsg2_dY.js";import{d as n}from"./p-Dva0y9cX.js";import{d as l}from"./p-dGLnP5K-.js";const d=()=>`:host{--viewer-toolbar-group-gap:0.5rem;--viewer-toolbar-group-background:rgba(245, 245, 245, 0.95);--viewer-toolbar-group-border-radius:0.25rem;--viewer-toolbar-group-box-shadow:-1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13);--viewer-toolbar-group-padding:0.25rem;--viewer-toolbar-group-item-gap:0.25rem}.group{background:var(--viewer-toolbar-group-background);border-radius:var(--viewer-toolbar-group-border-radius);box-shadow:var(--viewer-toolbar-group-box-shadow);padding:var(--viewer-toolbar-group-padding)}.group[data-direction='horizontal']:not(:first-child){margin-left:var(--viewer-toolbar-group-gap)}.group[data-direction='horizontal'] .group-item:not(:first-child){margin-left:var(--viewer-toolbar-group-item-gap)}.group[data-direction='vertical']:not(:first-child){margin-top:var(--viewer-toolbar-group-gap)}.group[data-direction='vertical'] .group-item:not(:first-child){margin-top:var(--viewer-toolbar-group-item-gap)}.btn{color:var(--neutral-800);padding:0.125rem;border-radius:0.125rem}.btn:hover{background:var(--neutral-300)}`;const v=r(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.placement="bottom-center";this.direction="horizontal";this.animationsDisabled=false;this.animationMs=1e3}render(){return o("vertex-viewer-toolbar",{key:"349bf96991062154e2e7666bbbecd3d66310e69f",placement:this.placement,direction:this.direction},o("vertex-viewer-toolbar-group",{key:"6982b3cb19276e09484c52d8baaa825a7339f371",class:"group",direction:this.direction,"data-direction":this.direction},o("vertex-viewer-button",{key:"f7831cc2d418cd77b05493fd0e657b21f300648c","aria-label":"Fit all",class:"group-item btn","data-testid":"fit-all-btn",onClick:()=>this.viewAll()},o("vertex-viewer-icon",{key:"adaa5a960e61b8b931634c350d3b1ef233243886",class:"icon",name:"fit-all",size:"md"}))))}async viewAll(){var e;const r=await((e=this.viewer)===null||e===void 0?void 0:e.scene());const t=this.animationsDisabled?undefined:{milliseconds:this.animationMs};r===null||r===void 0?void 0:r.camera().viewAll().render({animation:t})}static get style(){return d()}},[1,"vertex-viewer-default-toolbar",{viewer:[16],placement:[1],direction:[1],animationsDisabled:[4,"animations-disabled"],animationMs:[2,"animation-ms"]}]);function c(){if(typeof customElements==="undefined"){return}const r=["vertex-viewer-default-toolbar","vertex-viewer-button","vertex-viewer-icon","vertex-viewer-layer","vertex-viewer-toolbar","vertex-viewer-toolbar-group"];r.forEach((r=>{switch(r){case"vertex-viewer-default-toolbar":if(!customElements.get(e(r))){customElements.define(e(r),v)}break;case"vertex-viewer-button":if(!customElements.get(e(r))){a()}break;case"vertex-viewer-icon":if(!customElements.get(e(r))){i()}break;case"vertex-viewer-layer":if(!customElements.get(e(r))){s()}break;case"vertex-viewer-toolbar":if(!customElements.get(e(r))){n()}break;case"vertex-viewer-toolbar-group":if(!customElements.get(e(r))){l()}break}}))}c();const b=v;const u=c;export{b as VertexViewerDefaultToolbar,u as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-default-toolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["viewerDefaultToolbarCss","ViewerDefaultToolbar","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","placement","direction","animationsDisabled","animationMs","render","h","key","class","onClick","viewAll","name","size","scene","_a","viewer","animation","undefined","milliseconds","camera"],"sources":["src/components/viewer-default-toolbar/viewer-default-toolbar.css?tag=vertex-viewer-default-toolbar&encapsulation=shadow","src/components/viewer-default-toolbar/viewer-default-toolbar.tsx"],"sourcesContent":[":host {\n /**\n * @prop --viewer-toolbar-group-gap: The spacing between each toolbar group.\n * Defaults to `0.5rem`.\n */\n --viewer-toolbar-group-gap: 0.5rem;\n\n /**\n * @prop --viewer-toolbar-group-background: The background to apply to each\n * group in the toolbar. Defaults to `rgba(245, 245, 245, 0.95)`\n */\n --viewer-toolbar-group-background: rgba(245, 245, 245, 0.95);\n\n /**\n * @prop --viewer-toolbar-group-border-radius: The corner radius to apply to\n * each group in the toolbar. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-border-radius: 0.25rem;\n\n /**\n * @prop --viewer-toolbar-group-box-shadow: The shadow to apply to each group\n * in the toolbar. Defaults to `-1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13)`.\n */\n --viewer-toolbar-group-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.12),\n 1px 0 2px rgba(0, 0, 0, 0.13);\n\n /**\n * @prop --viewer-toolbar-group-padding: The padding to apply to each group in\n * the toolbar. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-padding: 0.25rem;\n\n /**\n * @prop --viewer-toolbar-group-item-gap: The spacing between each item within\n * a toolbar group. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-item-gap: 0.25rem;\n}\n\n.group {\n background: var(--viewer-toolbar-group-background);\n border-radius: var(--viewer-toolbar-group-border-radius);\n box-shadow: var(--viewer-toolbar-group-box-shadow);\n padding: var(--viewer-toolbar-group-padding);\n}\n\n.group[data-direction='horizontal']:not(:first-child) {\n margin-left: var(--viewer-toolbar-group-gap);\n}\n\n.group[data-direction='horizontal'] .group-item:not(:first-child) {\n margin-left: var(--viewer-toolbar-group-item-gap);\n}\n\n.group[data-direction='vertical']:not(:first-child) {\n margin-top: var(--viewer-toolbar-group-gap);\n}\n\n.group[data-direction='vertical'] .group-item:not(:first-child) {\n margin-top: var(--viewer-toolbar-group-item-gap);\n}\n\n.btn {\n color: var(--neutral-800);\n padding: 0.125rem;\n border-radius: 0.125rem;\n}\n\n.btn:hover {\n background: var(--neutral-300);\n}\n","import { Component, h, Prop } from '@stencil/core';\n\nimport { ViewerToolbarPlacement } from '../viewer-toolbar/types';\nimport { ViewerToolbarGroupDirection } from '../viewer-toolbar-group/types';\n\n@Component({\n tag: 'vertex-viewer-default-toolbar',\n styleUrl: 'viewer-default-toolbar.css',\n shadow: true,\n})\nexport class ViewerDefaultToolbar {\n /**\n * An instance of the viewer that operations will be performed on. If\n * contained within a `<vertex-viewer>` element, this property will\n * automatically be wired.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * Specifies where the toolbar is positioned.\n */\n @Prop()\n public placement: ViewerToolbarPlacement = 'bottom-center';\n\n /**\n * Specifies the direction that UI elements are placed.\n */\n @Prop()\n public direction: ViewerToolbarGroupDirection = 'horizontal';\n\n /**\n * Indicates whether animations will be used when performing camera\n * operations. Defaults to `true`.\n */\n @Prop()\n public animationsDisabled = false;\n\n /**\n * The duration of animations, in milliseconds. Defaults to `1000`.\n */\n @Prop()\n public animationMs = 1000;\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <vertex-viewer-toolbar\n placement={this.placement}\n direction={this.direction}\n >\n <vertex-viewer-toolbar-group\n class=\"group\"\n direction={this.direction}\n data-direction={this.direction}\n >\n <vertex-viewer-button\n class=\"group-item btn\"\n data-testid=\"fit-all-btn\"\n onClick={() => this.viewAll()}\n >\n <vertex-viewer-icon class=\"icon\" name=\"fit-all\" size=\"md\" />\n </vertex-viewer-button>\n </vertex-viewer-toolbar-group>\n </vertex-viewer-toolbar>\n );\n }\n\n private async viewAll(): Promise<void> {\n const scene = await this.viewer?.scene();\n const animation = this.animationsDisabled\n ? undefined\n : { milliseconds: this.animationMs };\n scene?.camera().viewAll().render({ animation });\n }\n}\n"],"mappings":";;;6OAAA,MAAMA,EAA0B,IAAM,yiC,MCUzBC,EAAoBC,EAAA,MAAAD,UAAAE,EALjC,WAAAC,CAAAC,G,kEAkBSC,KAAAC,UAAoC,gBAMpCD,KAAAE,UAAyC,aAOzCF,KAAAG,mBAAqB,MAMrBH,KAAAI,YAAc,GAgCtB,CA9BQ,MAAAC,GACL,OACEC,EAAA,yBAAAC,IAAA,2CACEN,UAAWD,KAAKC,UAChBC,UAAWF,KAAKE,WAEhBI,EAAA,+BAAAC,IAAA,2CACEC,MAAM,QACNN,UAAWF,KAAKE,UAAS,iBACTF,KAAKE,WAErBI,EAAA,wBAAAC,IAAA,2CACEC,MAAM,iBAAgB,cACV,cACZC,QAAS,IAAMT,KAAKU,WAEpBJ,EAAA,sBAAAC,IAAA,2CAAoBC,MAAM,OAAOG,KAAK,UAAUC,KAAK,S,CAOvD,aAAMF,G,MACZ,MAAMG,SAAcC,EAAAd,KAAKe,UAAM,MAAAD,SAAA,SAAAA,EAAED,SACjC,MAAMG,EAAYhB,KAAKG,mBACnBc,UACA,CAAEC,aAAclB,KAAKI,aACzBS,IAAK,MAALA,SAAK,SAALA,EAAOM,SAAST,UAAUL,OAAO,CAAEW,a","ignoreList":[]}
1
+ {"version":3,"names":["viewerDefaultToolbarCss","ViewerDefaultToolbar","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","placement","direction","animationsDisabled","animationMs","render","h","key","class","onClick","viewAll","name","size","scene","_a","viewer","animation","undefined","milliseconds","camera"],"sources":["src/components/viewer-default-toolbar/viewer-default-toolbar.css?tag=vertex-viewer-default-toolbar&encapsulation=shadow","src/components/viewer-default-toolbar/viewer-default-toolbar.tsx"],"sourcesContent":[":host {\n /**\n * @prop --viewer-toolbar-group-gap: The spacing between each toolbar group.\n * Defaults to `0.5rem`.\n */\n --viewer-toolbar-group-gap: 0.5rem;\n\n /**\n * @prop --viewer-toolbar-group-background: The background to apply to each\n * group in the toolbar. Defaults to `rgba(245, 245, 245, 0.95)`\n */\n --viewer-toolbar-group-background: rgba(245, 245, 245, 0.95);\n\n /**\n * @prop --viewer-toolbar-group-border-radius: The corner radius to apply to\n * each group in the toolbar. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-border-radius: 0.25rem;\n\n /**\n * @prop --viewer-toolbar-group-box-shadow: The shadow to apply to each group\n * in the toolbar. Defaults to `-1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13)`.\n */\n --viewer-toolbar-group-box-shadow:\n -1px 0 2px rgba(0, 0, 0, 0.12), 1px 0 2px rgba(0, 0, 0, 0.13);\n\n /**\n * @prop --viewer-toolbar-group-padding: The padding to apply to each group in\n * the toolbar. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-padding: 0.25rem;\n\n /**\n * @prop --viewer-toolbar-group-item-gap: The spacing between each item within\n * a toolbar group. Defaults to `0.25rem`.\n */\n --viewer-toolbar-group-item-gap: 0.25rem;\n}\n\n.group {\n background: var(--viewer-toolbar-group-background);\n border-radius: var(--viewer-toolbar-group-border-radius);\n box-shadow: var(--viewer-toolbar-group-box-shadow);\n padding: var(--viewer-toolbar-group-padding);\n}\n\n.group[data-direction='horizontal']:not(:first-child) {\n margin-left: var(--viewer-toolbar-group-gap);\n}\n\n.group[data-direction='horizontal'] .group-item:not(:first-child) {\n margin-left: var(--viewer-toolbar-group-item-gap);\n}\n\n.group[data-direction='vertical']:not(:first-child) {\n margin-top: var(--viewer-toolbar-group-gap);\n}\n\n.group[data-direction='vertical'] .group-item:not(:first-child) {\n margin-top: var(--viewer-toolbar-group-item-gap);\n}\n\n.btn {\n color: var(--neutral-800);\n padding: 0.125rem;\n border-radius: 0.125rem;\n}\n\n.btn:hover {\n background: var(--neutral-300);\n}\n","import { Component, h, Prop } from '@stencil/core';\n\nimport { ViewerToolbarPlacement } from '../viewer-toolbar/types';\nimport { ViewerToolbarGroupDirection } from '../viewer-toolbar-group/types';\n\n@Component({\n tag: 'vertex-viewer-default-toolbar',\n styleUrl: 'viewer-default-toolbar.css',\n shadow: true,\n})\nexport class ViewerDefaultToolbar {\n /**\n * An instance of the viewer that operations will be performed on. If\n * contained within a `<vertex-viewer>` element, this property will\n * automatically be wired.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * Specifies where the toolbar is positioned.\n */\n @Prop()\n public placement: ViewerToolbarPlacement = 'bottom-center';\n\n /**\n * Specifies the direction that UI elements are placed.\n */\n @Prop()\n public direction: ViewerToolbarGroupDirection = 'horizontal';\n\n /**\n * Indicates whether animations will be used when performing camera\n * operations. Defaults to `true`.\n */\n @Prop()\n public animationsDisabled = false;\n\n /**\n * The duration of animations, in milliseconds. Defaults to `1000`.\n */\n @Prop()\n public animationMs = 1000;\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <vertex-viewer-toolbar\n placement={this.placement}\n direction={this.direction}\n >\n <vertex-viewer-toolbar-group\n class=\"group\"\n direction={this.direction}\n data-direction={this.direction}\n >\n <vertex-viewer-button\n aria-label=\"Fit all\"\n class=\"group-item btn\"\n data-testid=\"fit-all-btn\"\n onClick={() => this.viewAll()}\n >\n <vertex-viewer-icon class=\"icon\" name=\"fit-all\" size=\"md\" />\n </vertex-viewer-button>\n </vertex-viewer-toolbar-group>\n </vertex-viewer-toolbar>\n );\n }\n\n private async viewAll(): Promise<void> {\n const scene = await this.viewer?.scene();\n const animation = this.animationsDisabled\n ? undefined\n : { milliseconds: this.animationMs };\n scene?.camera().viewAll().render({ animation });\n }\n}\n"],"mappings":";;;6OAAA,MAAMA,EAA0B,IAAM,qiC,MCUzBC,EAAoBC,EAAA,MAAAD,UAAAE,EALjC,WAAAC,CAAAC,G,kEAkBSC,KAAAC,UAAoC,gBAMpCD,KAAAE,UAAyC,aAOzCF,KAAAG,mBAAqB,MAMrBH,KAAAI,YAAc,GAiCtB,CA/BQ,MAAAC,GACL,OACEC,EAAA,yBAAAC,IAAA,2CACEN,UAAWD,KAAKC,UAChBC,UAAWF,KAAKE,WAEhBI,EAAA,+BAAAC,IAAA,2CACEC,MAAM,QACNN,UAAWF,KAAKE,UAAS,iBACTF,KAAKE,WAErBI,EAAA,wBAAAC,IAAA,wDACa,UACXC,MAAM,iBAAgB,cACV,cACZC,QAAS,IAAMT,KAAKU,WAEpBJ,EAAA,sBAAAC,IAAA,2CAAoBC,MAAM,OAAOG,KAAK,UAAUC,KAAK,S,CAOvD,aAAMF,G,MACZ,MAAMG,SAAcC,EAAAd,KAAKe,UAAM,MAAAD,SAAA,SAAAA,EAAED,SACjC,MAAMG,EAAYhB,KAAKG,mBACnBc,UACA,CAAEC,aAAclB,KAAKI,aACzBS,IAAK,MAALA,SAAK,SAALA,EAAOM,SAAST,UAAUL,OAAO,CAAEW,a","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{V as o,d as s}from"./p-C02XtMl4.js";const t=o;const p=s;export{t as VertexViewerDomElement,p as defineCustomElement};
4
+ import{V as o,d as s}from"./p-BHyxBmg6.js";const t=o;const m=s;export{t as VertexViewerDomElement,m as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-dom-element.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-CNprIkKd.js";const p=o;const r=s;export{p as VertexViewerDomGroup,r as defineCustomElement};
4
+ import{V as o,d as r}from"./p-rDr0x5Z7.js";const s=o;const t=r;export{s as VertexViewerDomGroup,t as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-dom-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-CMdP8O-G.js";const t=o;const p=s;export{t as VertexViewerDomRenderer,p as defineCustomElement};
4
+ import{V as o,d as s}from"./p-Ca253f0h.js";const t=o;const a=s;export{t as VertexViewerDomRenderer,a as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-dom-renderer.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 s,h as n,e}from"./p-Bb32XUUS.js";import{v as h,m as o,q as l,r,a}from"./p-CZZALKHT.js";import{w as c,r as d}from"./p-Cd7kap5W.js";import{M as u,R as v,r as p,s as f,T as m,c as w,a as g,A as b,b as C}from"./p-CfTvpqud.js";function N(i,t){return i.getPropertyValue(t).trim().replace(/["']*/g,"")}function y(i,t,s,n){const e=h.multiplyByTransformMatrixRowMajor(s,o.makeRotation(l.fromMatrixRotation(i)));const c=h.fromMatrixPosition(i);const d=Math.abs(h.dot(e,h.up()))===1?h.left():h.normalize(h.cross(e,h.up()));const v=h.normalize(h.cross(d,e));const p=r.create({origin:c,direction:d});const f=r.create({origin:c,direction:v});const m=h.rotateAboutAxis(a.toRadians(45),r.at(p,-n),e,c);const w=h.rotateAboutAxis(a.toRadians(45),r.at(f,-n),e,c);const g=h.rotateAboutAxis(a.toRadians(45),r.at(f,n),e,c);const b=h.rotateAboutAxis(a.toRadians(45),r.at(p,n),e,c);const C=[m,w,b,g];return new u(!Number.isNaN(d.x),[m,w,b,g],C.map((i=>h.multiplyByTransformMatrixColumnMajor(i,t.projectionViewMatrix))),(i=>h.distance(c,i)))}function O(i,t,s,n){const e=h.multiplyByTransformMatrixRowMajor(s,o.makeRotation(l.fromMatrixRotation(i)));const c=h.fromMatrixPosition(i);const d=h.normalize(h.cross(e,h.normalize(t.viewVector)));const v=h.normalize(h.cross(e,d));const p=r.create({origin:c,direction:d});const f=r.create({origin:c,direction:v});const m=r.at(p,-n);const w=r.at(f,-n);const g=r.at(f,n);const b=r.at(p,n);const C=h.rotateAboutAxis(a.toRadians(45),m,e,c);const N=h.rotateAboutAxis(a.toRadians(45),w,e,c);const y=h.rotateAboutAxis(a.toRadians(45),g,e,c);const O=h.rotateAboutAxis(a.toRadians(45),b,e,c);const x=[m,C,w,N,b,O,g,y];return new u(!Number.isNaN(d.x),x,x.map((i=>h.multiplyByTransformMatrixColumnMajor(i,t.projectionViewMatrix))),(i=>h.distance(c,i)))}const x=.4;const E=5;const S=.75;class $ extends v{constructor(i,t={},s={}){super(i);this.arrowFillColor=t.arrow;this.planeFillColor=t.plane;this.outlineColor=t.outline;this.planeOpacity=s.plane}updateTransformAndNormal(i,t){var s;this.transform=i;this.normal=t;if(i!=null&&t!=null&&this.frame!=null){this.updateAndDraw()}else{this.clear();(s=this.reglFrameDisposable)===null||s===void 0?void 0:s.cancel();this.reglFrameDisposable=undefined}}updateColors(i){var t,s,n,e,h,o,l,r,a;this.arrowFillColor=(t=i.arrow)!==null&&t!==void 0?t:this.arrowFillColor;this.planeFillColor=(s=i.plane)!==null&&s!==void 0?s:this.planeFillColor;this.outlineColor=(n=i.outline)!==null&&n!==void 0?n:this.outlineColor;(e=this.arrow)===null||e===void 0?void 0:e.updateFillColor(this.arrowFillColor);(h=this.plane)===null||h===void 0?void 0:h.updateFillColor(this.planeFillColor);(o=this.arrow)===null||o===void 0?void 0:o.updateOutlineColor(this.outlineColor);(l=this.plane)===null||l===void 0?void 0:l.updateOutlineColor(this.outlineColor);(r=this.point)===null||r===void 0?void 0:r.updateOutlineColor(this.outlineColor);(a=this.axis)===null||a===void 0?void 0:a.updateOutlineColor(this.outlineColor)}updateOpacities(i){this.planeOpacity=i.plane}hasData(){return this.transform!=null&&this.normal!=null}createOrUpdateElements(){if(this.transform!=null&&this.normal!=null&&this.frame!=null){if(this.arrow==null){this.createElements(this.transform,this.normal,this.frame)}else{this.updateElements(this.transform,this.normal,this.frame)}}}createElements(i,t,s){this.reglCommand=p({canvas:this.canvasElement,extensions:"angle_instanced_arrays"});const{createShape:n}=f(this.reglCommand);const e=this.computeTriangleSize(h.fromMatrixPosition(i),s);this.arrow=new m(n,"hit-normal-arrow",w(i,s.scene.camera,t,e),this.outlineColor,this.arrowFillColor);this.plane=new g(n,"hit-plane",y(i,s.scene.camera,t,e*E),this.outlineColor,this.planeFillColor,{opacity:this.getPlaneOpacity(),depth:.5});this.point=new g(n,"hit-position",O(i,s.scene.camera,t,e*x),this.outlineColor,this.outlineColor,{join:"round",depth:1});this.axis=new b(n,"hit-normal-axis",C(i,s.scene.camera,this.arrow),this.outlineColor,this.arrowFillColor);this.availableElements=[this.arrow,this.point,this.plane,this.axis]}updateElements(i,t,s){var n;const e=this.computeTriangleSize(h.fromMatrixPosition(i),s);if(this.arrow!=null){this.arrow.updatePoints(w(i,s.scene.camera,t,e));(n=this.axis)===null||n===void 0?void 0:n.updatePoints(C(i,s.scene.camera,this.arrow))}if(this.plane!=null){this.plane.updatePoints(y(i,s.scene.camera,t,e*E))}if(this.point!=null){this.point.updatePoints(O(i,s.scene.camera,t,e*x))}}getPlaneOpacity(){if(this.planeOpacity!=null){return typeof this.planeOpacity==="string"?Number.parseFloat(this.planeOpacity):this.planeOpacity}return S}}const J=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-hit-result-indicator-arrow-color:#0099cc;--viewer-hit-result-indicator-plane-color:#0099cc;--viewer-hit-result-indicator-outline-color:#000000;--viewer-hit-result-indicator-plane-opacity:0.75}.indicator{position:absolute;top:0;left:0}`;const j=t(class i extends s{constructor(i){super();if(i!==false){this.__registerHost()}this.__attachShadow();this.arrowColor="#0099cc";this.planeColor="#0099cc";this.outlineColor="#000000";this.planeOpacity=S;this.handleViewerFrameDrawn=()=>{this.updatePropsFromViewer()};this.handleViewerDimensionsChange=()=>{c((()=>{if(this.viewer!=null&&this.canvasRef!=null){this.canvasRef.width=this.viewer.viewport.width;this.canvasRef.height=this.viewer.viewport.height;this.updateAndRedrawIndicator()}}))};this.handleResize=()=>{if(this.canvasRef!=null){this.updateAndRedrawIndicator()}};this.updatePropsFromViewer=()=>{const{frame:i}=this.viewer||{};if(i!=null){const t=this.getIndicator();t.updateFrame(i)}};this.setupIndicator=i=>{var t,s;console.debug(`Initializing hit indicator. [initial-position=${JSON.stringify(this.position)}, initial-normal=${JSON.stringify(this.normal)} has-initial-frame=${((t=this.viewer)===null||t===void 0?void 0:t.frame)!=null}]`);this.indicator=new $(i,{arrow:this.arrowColor,plane:this.planeColor},{plane:this.planeOpacity});this.transform=this.createTransform();this.indicator.updateTransformAndNormal(this.transform,this.normal);if(((s=this.viewer)===null||s===void 0?void 0:s.frame)!=null){this.indicator.updateFrame(this.viewer.frame)}return this.indicator};this.updateAndRedrawIndicator=()=>{d((()=>{this.getIndicator().updateAndDraw()}))};this.createTransform=()=>{if(this.position!=null){return o.makeTranslation(this.position)}};this.getIndicator=()=>{if(this.indicator==null&&this.canvasRef!=null){return this.setupIndicator(this.canvasRef)}else if(this.indicator!=null){return this.indicator}else{throw new Error("Hit indicator was not initialized. The canvas element may not have been initialized.")}}}componentDidLoad(){this.handleViewerChanged(this.viewer,undefined);this.canvasResizeObserver=new ResizeObserver(this.handleResize);if(this.canvasRef!=null){this.canvasResizeObserver.observe(this.canvasRef);this.setupIndicator(this.canvasRef)}d((()=>{var i,t;const s=window.getComputedStyle(this.hostEl);this.arrowColor=N(s,"--viewer-hit-result-indicator-arrow-color");this.planeColor=N(s,"--viewer-hit-result-indicator-plane-color");this.outlineColor=N(s,"--viewer-hit-result-indicator-outline-color");this.planeOpacity=s.getPropertyValue("--viewer-hit-result-indicator-plane-opacity").trim();(i=this.indicator)===null||i===void 0?void 0:i.updateColors({arrow:this.arrowColor,plane:this.planeColor,outline:this.outlineColor});(t=this.indicator)===null||t===void 0?void 0:t.updateOpacities({plane:this.planeOpacity})}))}disconnectedCallback(){var i,t;(i=this.canvasResizeObserver)===null||i===void 0?void 0:i.disconnect();(t=this.indicator)===null||t===void 0?void 0:t.dispose()}handleViewerChanged(i,t){t===null||t===void 0?void 0:t.removeEventListener("frameDrawn",this.handleViewerFrameDrawn);t===null||t===void 0?void 0:t.removeEventListener("dimensionschange",this.handleViewerDimensionsChange);i===null||i===void 0?void 0:i.addEventListener("frameDrawn",this.handleViewerFrameDrawn);i===null||i===void 0?void 0:i.addEventListener("dimensionschange",this.handleViewerDimensionsChange)}handlePositionChanged(i,t){var s;this.transform=this.createTransform();console.debug(`Updating indicator position [previous=${JSON.stringify(t)}, current=${JSON.stringify(i)}]`);(s=this.indicator)===null||s===void 0?void 0:s.updateTransformAndNormal(this.transform,this.normal)}handleNormalChanged(i,t){var s;console.debug(`Updating indicator normal [previous=${JSON.stringify(t)}, current=${JSON.stringify(i)}]`);if(i){(s=this.indicator)===null||s===void 0?void 0:s.updateTransformAndNormal(this.transform,this.normal)}}render(){var i,t;return n(e,{key:"7553f25f76e20a766789b42fceb2d0c6024f48c3"},n("canvas",{key:"e9415c4ae604cdf3799f81e1eccfa5feab1210de",ref:i=>{this.canvasRef=i},class:"indicator",width:(i=this.viewer)===null||i===void 0?void 0:i.viewport.width,height:(t=this.viewer)===null||t===void 0?void 0:t.viewport.height}))}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],position:[{handlePositionChanged:0}],normal:[{handleNormalChanged:0}]}}static get style(){return J()}},[1,"vertex-viewer-hit-result-indicator",{viewer:[16],position:[1040],normal:[1040]},undefined,{viewer:[{handleViewerChanged:0}],position:[{handlePositionChanged:0}],normal:[{handleNormalChanged:0}]}]);function k(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-hit-result-indicator"];t.forEach((t=>{switch(t){case"vertex-viewer-hit-result-indicator":if(!customElements.get(i(t))){customElements.define(i(t),j)}break}}))}k();const T=j;const U=k;export{T as VertexViewerHitResultIndicator,U as defineCustomElement};
4
+ import{t as i,p as t,H as s,h as n,e}from"./p-Bb32XUUS.js";import{v as h,m as o,q as l,r,a}from"./p-2UsvOTHJ.js";import{w as c,r as d}from"./p-Cd7kap5W.js";import{M as u,R as v,r as p,s as f,T as m,c as w,a as g,A as b,b as N}from"./p-BNRm88jS.js";function C(i,t){return i.getPropertyValue(t).trim().replace(/["']*/g,"")}function y(i,t,s,n){const e=h.multiplyByTransformMatrixRowMajor(s,o.makeRotation(l.fromMatrixRotation(i)));const c=h.fromMatrixPosition(i);const d=Math.abs(h.dot(e,h.up()))===1?h.left():h.normalize(h.cross(e,h.up()));const v=h.normalize(h.cross(d,e));const p=r.create({origin:c,direction:d});const f=r.create({origin:c,direction:v});const m=h.rotateAboutAxis(a.toRadians(45),r.at(p,-n),e,c);const w=h.rotateAboutAxis(a.toRadians(45),r.at(f,-n),e,c);const g=h.rotateAboutAxis(a.toRadians(45),r.at(f,n),e,c);const b=h.rotateAboutAxis(a.toRadians(45),r.at(p,n),e,c);const N=[m,w,b,g];return new u(!Number.isNaN(d.x),[m,w,b,g],N.map((i=>h.multiplyByTransformMatrixColumnMajor(i,t.projectionViewMatrix))),(i=>h.distance(c,i)))}function O(i,t,s,n){const e=h.multiplyByTransformMatrixRowMajor(s,o.makeRotation(l.fromMatrixRotation(i)));const c=h.fromMatrixPosition(i);const d=h.normalize(h.cross(e,h.normalize(t.viewVector)));const v=h.normalize(h.cross(e,d));const p=r.create({origin:c,direction:d});const f=r.create({origin:c,direction:v});const m=r.at(p,-n);const w=r.at(f,-n);const g=r.at(f,n);const b=r.at(p,n);const N=h.rotateAboutAxis(a.toRadians(45),m,e,c);const C=h.rotateAboutAxis(a.toRadians(45),w,e,c);const y=h.rotateAboutAxis(a.toRadians(45),g,e,c);const O=h.rotateAboutAxis(a.toRadians(45),b,e,c);const S=[m,N,w,C,b,O,g,y];return new u(!Number.isNaN(d.x),S,S.map((i=>h.multiplyByTransformMatrixColumnMajor(i,t.projectionViewMatrix))),(i=>h.distance(c,i)))}const S=.4;const x=5;const E=.75;class J extends v{constructor(i,t={},s={}){super(i);this.arrowFillColor=t.arrow;this.planeFillColor=t.plane;this.outlineColor=t.outline;this.planeOpacity=s.plane}updateTransformAndNormal(i,t){var s;this.transform=i;this.normal=t;if(i!=null&&t!=null&&this.frame!=null){this.updateAndDraw()}else{this.clear();(s=this.reglFrameDisposable)===null||s===void 0?void 0:s.cancel();this.reglFrameDisposable=undefined}}updateColors(i){var t,s,n,e,h,o,l,r,a;this.arrowFillColor=(t=i.arrow)!==null&&t!==void 0?t:this.arrowFillColor;this.planeFillColor=(s=i.plane)!==null&&s!==void 0?s:this.planeFillColor;this.outlineColor=(n=i.outline)!==null&&n!==void 0?n:this.outlineColor;(e=this.arrow)===null||e===void 0?void 0:e.updateFillColor(this.arrowFillColor);(h=this.plane)===null||h===void 0?void 0:h.updateFillColor(this.planeFillColor);(o=this.arrow)===null||o===void 0?void 0:o.updateOutlineColor(this.outlineColor);(l=this.plane)===null||l===void 0?void 0:l.updateOutlineColor(this.outlineColor);(r=this.point)===null||r===void 0?void 0:r.updateOutlineColor(this.outlineColor);(a=this.axis)===null||a===void 0?void 0:a.updateOutlineColor(this.outlineColor)}updateOpacities(i){this.planeOpacity=i.plane}hasData(){return this.transform!=null&&this.normal!=null}createOrUpdateElements(){if(this.transform!=null&&this.normal!=null&&this.frame!=null){if(this.arrow==null){this.createElements(this.transform,this.normal,this.frame)}else{this.updateElements(this.transform,this.normal,this.frame)}}}createElements(i,t,s){this.reglCommand=p({canvas:this.canvasElement,extensions:"angle_instanced_arrays"});const{createShape:n}=f(this.reglCommand);const e=this.computeTriangleSize(h.fromMatrixPosition(i),s);this.arrow=new m(n,"hit-normal-arrow",w(i,s.scene.camera,t,e),this.outlineColor,this.arrowFillColor);this.plane=new g(n,"hit-plane",y(i,s.scene.camera,t,e*x),this.outlineColor,this.planeFillColor,{opacity:this.getPlaneOpacity(),depth:.5});this.point=new g(n,"hit-position",O(i,s.scene.camera,t,e*S),this.outlineColor,this.outlineColor,{join:"round",depth:1});this.axis=new b(n,"hit-normal-axis",N(i,s.scene.camera,this.arrow),this.outlineColor,this.arrowFillColor);this.availableElements=[this.arrow,this.point,this.plane,this.axis]}updateElements(i,t,s){var n;const e=this.computeTriangleSize(h.fromMatrixPosition(i),s);if(this.arrow!=null){this.arrow.updatePoints(w(i,s.scene.camera,t,e));(n=this.axis)===null||n===void 0?void 0:n.updatePoints(N(i,s.scene.camera,this.arrow))}if(this.plane!=null){this.plane.updatePoints(y(i,s.scene.camera,t,e*x))}if(this.point!=null){this.point.updatePoints(O(i,s.scene.camera,t,e*S))}}getPlaneOpacity(){if(this.planeOpacity!=null){return typeof this.planeOpacity==="string"?Number.parseFloat(this.planeOpacity):this.planeOpacity}return E}}const $=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-hit-result-indicator-arrow-color:#0099cc;--viewer-hit-result-indicator-plane-color:#0099cc;--viewer-hit-result-indicator-outline-color:#000000;--viewer-hit-result-indicator-plane-opacity:0.75}.indicator{position:absolute;top:0;left:0}`;const j=t(class i extends s{constructor(i){super();if(i!==false){this.__registerHost()}this.__attachShadow();this.arrowColor="#0099cc";this.planeColor="#0099cc";this.outlineColor="#000000";this.planeOpacity=E;this.handleViewerFrameDrawn=()=>{this.updatePropsFromViewer()};this.handleViewerDimensionsChange=()=>{c((()=>{if(this.viewer!=null&&this.canvasRef!=null){this.canvasRef.width=this.viewer.viewport.width;this.canvasRef.height=this.viewer.viewport.height;this.updateAndRedrawIndicator()}}))};this.handleResize=()=>{if(this.canvasRef!=null){this.updateAndRedrawIndicator()}};this.updatePropsFromViewer=()=>{const{frame:i}=this.viewer||{};if(i!=null){const t=this.getIndicator();t.updateFrame(i)}};this.setupIndicator=i=>{var t,s;console.debug(`Initializing hit indicator. [initial-position=${JSON.stringify(this.position)}, initial-normal=${JSON.stringify(this.normal)} has-initial-frame=${((t=this.viewer)===null||t===void 0?void 0:t.frame)!=null}]`);this.indicator=new J(i,{arrow:this.arrowColor,plane:this.planeColor},{plane:this.planeOpacity});this.transform=this.createTransform();this.indicator.updateTransformAndNormal(this.transform,this.normal);if(((s=this.viewer)===null||s===void 0?void 0:s.frame)!=null){this.indicator.updateFrame(this.viewer.frame)}return this.indicator};this.updateAndRedrawIndicator=()=>{d((()=>{this.getIndicator().updateAndDraw()}))};this.createTransform=()=>{if(this.position!=null){return o.makeTranslation(this.position)}};this.getIndicator=()=>{if(this.indicator==null&&this.canvasRef!=null){return this.setupIndicator(this.canvasRef)}else if(this.indicator!=null){return this.indicator}else{throw new Error("Hit indicator was not initialized. The canvas element may not have been initialized.")}}}componentDidLoad(){this.handleViewerChanged(this.viewer,undefined);this.canvasResizeObserver=new ResizeObserver(this.handleResize);if(this.canvasRef!=null){this.canvasResizeObserver.observe(this.canvasRef);this.setupIndicator(this.canvasRef)}d((()=>{var i,t;const s=window.getComputedStyle(this.hostEl);this.arrowColor=C(s,"--viewer-hit-result-indicator-arrow-color");this.planeColor=C(s,"--viewer-hit-result-indicator-plane-color");this.outlineColor=C(s,"--viewer-hit-result-indicator-outline-color");this.planeOpacity=s.getPropertyValue("--viewer-hit-result-indicator-plane-opacity").trim();(i=this.indicator)===null||i===void 0?void 0:i.updateColors({arrow:this.arrowColor,plane:this.planeColor,outline:this.outlineColor});(t=this.indicator)===null||t===void 0?void 0:t.updateOpacities({plane:this.planeOpacity})}))}disconnectedCallback(){var i,t;(i=this.canvasResizeObserver)===null||i===void 0?void 0:i.disconnect();(t=this.indicator)===null||t===void 0?void 0:t.dispose()}handleViewerChanged(i,t){t===null||t===void 0?void 0:t.removeEventListener("frameDrawn",this.handleViewerFrameDrawn);t===null||t===void 0?void 0:t.removeEventListener("dimensionschange",this.handleViewerDimensionsChange);i===null||i===void 0?void 0:i.addEventListener("frameDrawn",this.handleViewerFrameDrawn);i===null||i===void 0?void 0:i.addEventListener("dimensionschange",this.handleViewerDimensionsChange)}handlePositionChanged(i,t){var s;this.transform=this.createTransform();console.debug(`Updating indicator position [previous=${JSON.stringify(t)}, current=${JSON.stringify(i)}]`);(s=this.indicator)===null||s===void 0?void 0:s.updateTransformAndNormal(this.transform,this.normal)}handleNormalChanged(i,t){var s;console.debug(`Updating indicator normal [previous=${JSON.stringify(t)}, current=${JSON.stringify(i)}]`);if(i){(s=this.indicator)===null||s===void 0?void 0:s.updateTransformAndNormal(this.transform,this.normal)}}render(){var i,t;return n(e,{key:"7553f25f76e20a766789b42fceb2d0c6024f48c3"},n("canvas",{key:"e9415c4ae604cdf3799f81e1eccfa5feab1210de",ref:i=>{this.canvasRef=i},class:"indicator",width:(i=this.viewer)===null||i===void 0?void 0:i.viewport.width,height:(t=this.viewer)===null||t===void 0?void 0:t.viewport.height}))}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],position:[{handlePositionChanged:0}],normal:[{handleNormalChanged:0}]}}static get style(){return $()}},[1,"vertex-viewer-hit-result-indicator",{viewer:[16],position:[1040],normal:[1040]},undefined,{viewer:[{handleViewerChanged:0}],position:[{handlePositionChanged:0}],normal:[{handleNormalChanged:0}]}]);function U(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-hit-result-indicator"];t.forEach((t=>{switch(t){case"vertex-viewer-hit-result-indicator":if(!customElements.get(i(t))){customElements.define(i(t),j)}break}}))}U();const k=j;const z=U;export{k as VertexViewerHitResultIndicator,z as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-hit-result-indicator.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-DCTZZ5Rd.js";const t=o;const p=s;export{t as VertexViewerMarkupArrow,p as defineCustomElement};
4
+ import{V as o,d as s}from"./p-DjQ6RXWP.js";const t=o;const p=s;export{t as VertexViewerMarkupArrow,p as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-markup-arrow.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-BC777sCK.js";const t=s;const p=o;export{t as VertexViewerMarkupCircle,p as defineCustomElement};
4
+ import{V as s,d as o}from"./p-UJR-ixsy.js";const t=s;const p=o;export{t as VertexViewerMarkupCircle,p as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-markup-circle.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-Dzs4u_ZY.js";const t=s;const p=o;export{t as VertexViewerMarkupFreeform,p as defineCustomElement};
4
+ import{V as s,d as o}from"./p-CABws4i9.js";const t=s;const p=o;export{t as VertexViewerMarkupFreeform,p as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-markup-freeform.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 r,d as n,h as i,e as a}from"./p-Bb32XUUS.js";import{s as o}from"./p-DRh4_Z-g.js";import{F as s,C as l,A as h}from"./p-avWSFTeP.js";import{b as d,a as c,i as u}from"./p-taOlygmc.js";import{d as m}from"./p-DCTZZ5Rd.js";import{d as f}from"./p-BC777sCK.js";import{d as p}from"./p-Dzs4u_ZY.js";const g=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}:host([elevated=""]){z-index:100}`;const w=t(class e extends r{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.markupBegin=n(this,"markupBegin");this.markupEnd=n(this,"markupEnd");this.tool="arrow";this.disabled=false;this.startLineAnchorStyle="none";this.endLineAnchorStyle="arrow-triangle";this.centeringBehavior="none";this.scale=1;this.stateMap={};this.handleMarkupInteractionBegin=()=>{this.markupBegin.emit()};this.handleMarkupInteractionEnd=()=>{const{markupElement:e}=this.stateMap;if(d(e)){const{points:t,bounds:r}=e;if(t!=null&&t.length>0&&r!=null){this.markupEnd.emit(new s({points:t,bounds:r}))}}else if(c(e)){const{bounds:t}=e;if(t!=null){this.markupEnd.emit(new l({bounds:t}))}}else if(u(e)){const{start:t,end:r}=e;if(t!=null&&r!=null){this.markupEnd.emit(new h({start:t,end:r}))}}}}async handleViewerChanged(){if(this.stateMap.markupElement!=null){this.stateMap.markupElement.viewer=this.viewer}}handlePropertyChanged(){this.updateMarkupElement()}handleScalingConfigurationChanged(){this.updateMarkupElement()}componentDidLoad(){this.updateMarkupElement()}async reset(){const{markupElement:e}=this.stateMap;if(d(e)){e.points=undefined;e.bounds=undefined;e.mode="create"}else if(c(e)){e.bounds=undefined;e.mode="create"}else if(u(e)){e.start=undefined;e.end=undefined;e.mode="create"}}render(){if(!this.disabled){if(this.tool==="arrow"||this.tool==="circle"||this.tool==="freeform"){return i(a,null,i("slot",null))}else{return i(a,null,`Unsupported tool type '${this.tool}'.`)}}else{return i(a,null)}}createArrowMarkupElement(){if(this.arrowTemplateId!=null){const e=o(window.document.body,this.arrowTemplateId,u,(()=>console.warn(`Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`)),(()=>console.warn(`Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-arrow")}createCircleMarkupElement(){if(this.circleTemplateId!=null){const e=o(window.document.body,this.circleTemplateId,c,(()=>console.warn(`Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`)),(()=>console.warn(`Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-circle")}createFreeformMarkupElement(){if(this.freeformTemplateId!=null){const e=o(window.document.body,this.freeformTemplateId,d,(()=>console.warn(`Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`)),(()=>console.warn(`Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-freeform")}createNewMarkupElement(){switch(this.tool){case"arrow":return this.createArrowMarkupElement();case"circle":return this.createCircleMarkupElement();case"freeform":return this.createFreeformMarkupElement()}}updateMarkupElement(){const{markupElement:e}=this.stateMap;if(e!=null){e.remove();e.dispose();e.viewer=undefined;e.removeEventListener("interactionBegin",this.handleMarkupInteractionBegin);e.removeEventListener("interactionEnd",this.handleMarkupInteractionEnd)}if(!this.disabled){const e=this.createNewMarkupElement();this.hostEl.append(e);if(this.tool==="arrow"){e.startLineAnchorStyle=this.startLineAnchorStyle;e.endLineAnchorStyle=this.endLineAnchorStyle}e.mode="create";e.viewer=this.viewer;e.originatingViewport=this.originatingViewport;e.centeringBehavior=this.centeringBehavior;e.offset=this.offset;e.scale=this.scale;e.addEventListener("interactionBegin",this.handleMarkupInteractionBegin);e.addEventListener("interactionEnd",this.handleMarkupInteractionEnd);this.stateMap.markupElement=e}}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],disabled:[{handlePropertyChanged:0}],endLineAnchorStyle:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],startLineAnchorStyle:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],scale:[{handleScalingConfigurationChanged:0}],offset:[{handleScalingConfigurationChanged:0}],originatingViewport:[{handleScalingConfigurationChanged:0}],centeringBehavior:[{handleScalingConfigurationChanged:0}]}}static get style(){return g()}},[257,"vertex-viewer-markup-tool",{arrowTemplateId:[1,"arrow-template-id"],circleTemplateId:[1,"circle-template-id"],freeformTemplateId:[1,"freeform-template-id"],tool:[1],disabled:[4],viewer:[16],startLineAnchorStyle:[1025,"start-line-anchor-style"],endLineAnchorStyle:[1025,"end-line-anchor-style"],originatingViewport:[16],centeringBehavior:[1,"centering-behavior"],offset:[16],scale:[2],stateMap:[32],reset:[64]},undefined,{viewer:[{handleViewerChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],disabled:[{handlePropertyChanged:0}],endLineAnchorStyle:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],startLineAnchorStyle:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],scale:[{handleScalingConfigurationChanged:0}],offset:[{handleScalingConfigurationChanged:0}],originatingViewport:[{handleScalingConfigurationChanged:0}],centeringBehavior:[{handleScalingConfigurationChanged:0}]}]);function C(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-markup-tool","vertex-viewer-markup-arrow","vertex-viewer-markup-circle","vertex-viewer-markup-freeform"];t.forEach((t=>{switch(t){case"vertex-viewer-markup-tool":if(!customElements.get(e(t))){customElements.define(e(t),w)}break;case"vertex-viewer-markup-arrow":if(!customElements.get(e(t))){m()}break;case"vertex-viewer-markup-circle":if(!customElements.get(e(t))){f()}break;case"vertex-viewer-markup-freeform":if(!customElements.get(e(t))){p()}break}}))}C();const v=w;const k=C;export{v as VertexViewerMarkupTool,k as defineCustomElement};
4
+ import{t as e,p as t,H as r,d as n,h as i,e as a}from"./p-Bb32XUUS.js";import{s as o}from"./p-DRh4_Z-g.js";import{F as s,C as l,A as h}from"./p-JvS9LLoO.js";import{b as d,a as c,i as u}from"./p-Cs2aiMUK.js";import{d as f}from"./p-DjQ6RXWP.js";import{d as m}from"./p-UJR-ixsy.js";import{d as p}from"./p-CABws4i9.js";const g=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}:host([elevated='']){z-index:100}`;const w=t(class e extends r{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.markupBegin=n(this,"markupBegin");this.markupEnd=n(this,"markupEnd");this.tool="arrow";this.disabled=false;this.startLineAnchorStyle="none";this.endLineAnchorStyle="arrow-triangle";this.centeringBehavior="none";this.scale=1;this.stateMap={};this.handleMarkupInteractionBegin=()=>{this.markupBegin.emit()};this.handleMarkupInteractionEnd=()=>{const{markupElement:e}=this.stateMap;if(d(e)){const{points:t,bounds:r}=e;if(t!=null&&t.length>0&&r!=null){this.markupEnd.emit(new s({points:t,bounds:r}))}}else if(c(e)){const{bounds:t}=e;if(t!=null){this.markupEnd.emit(new l({bounds:t}))}}else if(u(e)){const{start:t,end:r}=e;if(t!=null&&r!=null){this.markupEnd.emit(new h({start:t,end:r}))}}}}async handleViewerChanged(){if(this.stateMap.markupElement!=null){this.stateMap.markupElement.viewer=this.viewer}}handlePropertyChanged(){this.updateMarkupElement()}handleScalingConfigurationChanged(){this.updateMarkupElement()}componentDidLoad(){this.updateMarkupElement()}async reset(){const{markupElement:e}=this.stateMap;if(d(e)){e.points=undefined;e.bounds=undefined;e.mode="create"}else if(c(e)){e.bounds=undefined;e.mode="create"}else if(u(e)){e.start=undefined;e.end=undefined;e.mode="create"}}render(){if(!this.disabled){if(this.tool==="arrow"||this.tool==="circle"||this.tool==="freeform"){return i(a,null,i("slot",null))}else{return i(a,null,`Unsupported tool type '${this.tool}'.`)}}else{return i(a,null)}}createArrowMarkupElement(){if(this.arrowTemplateId!=null){const e=o(window.document.body,this.arrowTemplateId,u,(()=>console.warn(`Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`)),(()=>console.warn(`Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-arrow")}createCircleMarkupElement(){if(this.circleTemplateId!=null){const e=o(window.document.body,this.circleTemplateId,c,(()=>console.warn(`Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`)),(()=>console.warn(`Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-circle")}createFreeformMarkupElement(){if(this.freeformTemplateId!=null){const e=o(window.document.body,this.freeformTemplateId,d,(()=>console.warn(`Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`)),(()=>console.warn(`Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-freeform")}createNewMarkupElement(){switch(this.tool){case"arrow":return this.createArrowMarkupElement();case"circle":return this.createCircleMarkupElement();case"freeform":return this.createFreeformMarkupElement()}}updateMarkupElement(){const{markupElement:e}=this.stateMap;if(e!=null){e.remove();e.dispose();e.viewer=undefined;e.removeEventListener("interactionBegin",this.handleMarkupInteractionBegin);e.removeEventListener("interactionEnd",this.handleMarkupInteractionEnd)}if(!this.disabled){const e=this.createNewMarkupElement();this.hostEl.append(e);if(this.tool==="arrow"){e.startLineAnchorStyle=this.startLineAnchorStyle;e.endLineAnchorStyle=this.endLineAnchorStyle}e.mode="create";e.viewer=this.viewer;e.originatingViewport=this.originatingViewport;e.centeringBehavior=this.centeringBehavior;e.offset=this.offset;e.scale=this.scale;e.addEventListener("interactionBegin",this.handleMarkupInteractionBegin);e.addEventListener("interactionEnd",this.handleMarkupInteractionEnd);this.stateMap.markupElement=e}}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],disabled:[{handlePropertyChanged:0}],endLineAnchorStyle:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],startLineAnchorStyle:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],scale:[{handleScalingConfigurationChanged:0}],offset:[{handleScalingConfigurationChanged:0}],originatingViewport:[{handleScalingConfigurationChanged:0}],centeringBehavior:[{handleScalingConfigurationChanged:0}]}}static get style(){return g()}},[257,"vertex-viewer-markup-tool",{arrowTemplateId:[1,"arrow-template-id"],circleTemplateId:[1,"circle-template-id"],freeformTemplateId:[1,"freeform-template-id"],tool:[1],disabled:[4],viewer:[16],startLineAnchorStyle:[1025,"start-line-anchor-style"],endLineAnchorStyle:[1025,"end-line-anchor-style"],originatingViewport:[16],centeringBehavior:[1,"centering-behavior"],offset:[16],scale:[2],stateMap:[32],reset:[64]},undefined,{viewer:[{handleViewerChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],disabled:[{handlePropertyChanged:0}],endLineAnchorStyle:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],startLineAnchorStyle:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],scale:[{handleScalingConfigurationChanged:0}],offset:[{handleScalingConfigurationChanged:0}],originatingViewport:[{handleScalingConfigurationChanged:0}],centeringBehavior:[{handleScalingConfigurationChanged:0}]}]);function C(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-markup-tool","vertex-viewer-markup-arrow","vertex-viewer-markup-circle","vertex-viewer-markup-freeform"];t.forEach((t=>{switch(t){case"vertex-viewer-markup-tool":if(!customElements.get(e(t))){customElements.define(e(t),w)}break;case"vertex-viewer-markup-arrow":if(!customElements.get(e(t))){f()}break;case"vertex-viewer-markup-circle":if(!customElements.get(e(t))){m()}break;case"vertex-viewer-markup-freeform":if(!customElements.get(e(t))){p()}break}}))}C();const v=w;const k=C;export{v as VertexViewerMarkupTool,k as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-markup-tool.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["viewerMarkupToolCss","ViewerMarkupTool","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","tool","disabled","startLineAnchorStyle","endLineAnchorStyle","centeringBehavior","scale","stateMap","handleMarkupInteractionBegin","markupBegin","emit","handleMarkupInteractionEnd","markupElement","isVertexViewerFreeformMarkup","points","bounds","length","markupEnd","FreeformMarkup","isVertexViewerCircleMarkup","CircleMarkup","isVertexViewerArrowMarkup","start","end","ArrowMarkup","handleViewerChanged","viewer","handlePropertyChanged","updateMarkupElement","handleScalingConfigurationChanged","componentDidLoad","reset","undefined","mode","render","h","Host","createArrowMarkupElement","arrowTemplateId","element","stampTemplateWithId","window","document","body","console","warn","createElement","createCircleMarkupElement","circleTemplateId","createFreeformMarkupElement","freeformTemplateId","createNewMarkupElement","remove","dispose","removeEventListener","newMarkupElement","hostEl","append","originatingViewport","offset","addEventListener"],"sources":["src/components/viewer-markup-tool/viewer-markup-tool.css?tag=vertex-viewer-markup-tool&encapsulation=shadow","src/components/viewer-markup-tool/viewer-markup-tool.tsx"],"sourcesContent":[":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n\n:host([elevated=\"\"]) {\n z-index: 100;\n}","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\nimport { BasicViewer } from '@vertexvis/utils';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\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';\n\n/**\n * The types of markup that can be performed by this tool.\n */\nexport type ViewerMarkupToolType = 'arrow' | 'circle' | 'freeform';\n\ninterface StateMap {\n markupElement?:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement;\n}\n\n@Component({\n tag: 'vertex-viewer-markup-tool',\n styleUrl: 'viewer-markup-tool.css',\n shadow: true,\n})\nexport class ViewerMarkupTool {\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.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * Disables markups.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` or `<vertex-viewer>` element.\n */\n @Prop()\n public viewer?: BasicViewer;\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 * An event that is dispatched when a user begins a new markup.\n */\n @Event({ bubbles: true })\n public markupBegin!: EventEmitter<void>;\n\n /**\n * An event that is dispatched when a user has finished their markup.\n */\n @Event({ bubbles: true })\n public markupEnd!: EventEmitter<Markup>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n /**\n * Captures internal state that you want to preserve across dev refreshes, but\n * don't want to trigger a render when the state changes.\n */\n @State()\n private stateMap: StateMap = {};\n\n @Watch('viewer')\n protected async handleViewerChanged(): Promise<void> {\n if (this.stateMap.markupElement != null) {\n this.stateMap.markupElement.viewer = this.viewer;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('disabled')\n @Watch('endLineAnchorStyle')\n @Watch('freeformTemplateId')\n @Watch('startLineAnchorStyle')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updateMarkupElement();\n }\n\n @Watch('scale')\n @Watch('offset')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n protected handleScalingConfigurationChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updateMarkupElement();\n }\n\n /**\n * Resets the state of the internally managed markup element\n * to allow for creating a new markup. This state is automatically\n * managed when this element is placed as a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Method()\n public async reset(): Promise<void> {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n markupElement.points = undefined;\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n markupElement.start = undefined;\n markupElement.end = undefined;\n markupElement.mode = 'create';\n }\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n if (!this.disabled) {\n if (\n this.tool === 'arrow' ||\n this.tool === 'circle' ||\n this.tool === 'freeform'\n ) {\n return (\n <Host>\n <slot />\n </Host>\n );\n } else {\n return <Host>{`Unsupported tool type '${this.tool}'.`}</Host>;\n }\n } else {\n return <Host></Host>;\n }\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 createNewMarkupElement():\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement {\n switch (this.tool) {\n case 'arrow':\n return this.createArrowMarkupElement();\n case 'circle':\n return this.createCircleMarkupElement();\n case 'freeform':\n return this.createFreeformMarkupElement();\n }\n }\n\n private updateMarkupElement(): void {\n const { markupElement } = this.stateMap;\n if (markupElement != null) {\n markupElement.remove();\n markupElement.dispose();\n markupElement.viewer = undefined;\n markupElement.removeEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin,\n );\n markupElement.removeEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd,\n );\n }\n\n if (!this.disabled) {\n const newMarkupElement = this.createNewMarkupElement();\n this.hostEl.append(newMarkupElement);\n\n if (this.tool === 'arrow') {\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).startLineAnchorStyle = this.startLineAnchorStyle;\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).endLineAnchorStyle = this.endLineAnchorStyle;\n }\n\n newMarkupElement.mode = 'create';\n newMarkupElement.viewer = this.viewer;\n newMarkupElement.originatingViewport = this.originatingViewport;\n newMarkupElement.centeringBehavior = this.centeringBehavior;\n newMarkupElement.offset = this.offset;\n newMarkupElement.scale = this.scale;\n newMarkupElement.addEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin,\n );\n newMarkupElement.addEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd,\n );\n this.stateMap.markupElement = newMarkupElement;\n }\n }\n\n private handleMarkupInteractionBegin = (): void => {\n this.markupBegin.emit();\n };\n\n private handleMarkupInteractionEnd = (): void => {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n const { points, bounds } = markupElement;\n\n if (points != null && points.length > 0 && bounds != null) {\n this.markupEnd.emit(new FreeformMarkup({ points, bounds }));\n }\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n const { bounds } = markupElement;\n\n if (bounds != null) {\n this.markupEnd.emit(new CircleMarkup({ bounds }));\n }\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n const { start, end } = markupElement;\n\n if (start != null && end != null) {\n this.markupEnd.emit(new ArrowMarkup({ start, end }));\n }\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["viewerMarkupToolCss","ViewerMarkupTool","__stencil_proxyCustomElement","HTMLElement","constructor","registerHost","this","tool","disabled","startLineAnchorStyle","endLineAnchorStyle","centeringBehavior","scale","stateMap","handleMarkupInteractionBegin","markupBegin","emit","handleMarkupInteractionEnd","markupElement","isVertexViewerFreeformMarkup","points","bounds","length","markupEnd","FreeformMarkup","isVertexViewerCircleMarkup","CircleMarkup","isVertexViewerArrowMarkup","start","end","ArrowMarkup","handleViewerChanged","viewer","handlePropertyChanged","updateMarkupElement","handleScalingConfigurationChanged","componentDidLoad","reset","undefined","mode","render","h","Host","createArrowMarkupElement","arrowTemplateId","element","stampTemplateWithId","window","document","body","console","warn","createElement","createCircleMarkupElement","circleTemplateId","createFreeformMarkupElement","freeformTemplateId","createNewMarkupElement","remove","dispose","removeEventListener","newMarkupElement","hostEl","append","originatingViewport","offset","addEventListener"],"sources":["src/components/viewer-markup-tool/viewer-markup-tool.css?tag=vertex-viewer-markup-tool&encapsulation=shadow","src/components/viewer-markup-tool/viewer-markup-tool.tsx"],"sourcesContent":[":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n\n:host([elevated='']) {\n z-index: 100;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\nimport { BasicViewer } from '@vertexvis/utils';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\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';\n\n/**\n * The types of markup that can be performed by this tool.\n */\nexport type ViewerMarkupToolType = 'arrow' | 'circle' | 'freeform';\n\ninterface StateMap {\n markupElement?:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement;\n}\n\n@Component({\n tag: 'vertex-viewer-markup-tool',\n styleUrl: 'viewer-markup-tool.css',\n shadow: true,\n})\nexport class ViewerMarkupTool {\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.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * Disables markups.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` or `<vertex-viewer>` element.\n */\n @Prop()\n public viewer?: BasicViewer;\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 * An event that is dispatched when a user begins a new markup.\n */\n @Event({ bubbles: true })\n public markupBegin!: EventEmitter<void>;\n\n /**\n * An event that is dispatched when a user has finished their markup.\n */\n @Event({ bubbles: true })\n public markupEnd!: EventEmitter<Markup>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n /**\n * Captures internal state that you want to preserve across dev refreshes, but\n * don't want to trigger a render when the state changes.\n */\n @State()\n private stateMap: StateMap = {};\n\n @Watch('viewer')\n protected async handleViewerChanged(): Promise<void> {\n if (this.stateMap.markupElement != null) {\n this.stateMap.markupElement.viewer = this.viewer;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('disabled')\n @Watch('endLineAnchorStyle')\n @Watch('freeformTemplateId')\n @Watch('startLineAnchorStyle')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updateMarkupElement();\n }\n\n @Watch('scale')\n @Watch('offset')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n protected handleScalingConfigurationChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updateMarkupElement();\n }\n\n /**\n * Resets the state of the internally managed markup element\n * to allow for creating a new markup. This state is automatically\n * managed when this element is placed as a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Method()\n public async reset(): Promise<void> {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n markupElement.points = undefined;\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n markupElement.start = undefined;\n markupElement.end = undefined;\n markupElement.mode = 'create';\n }\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n if (!this.disabled) {\n if (\n this.tool === 'arrow' ||\n this.tool === 'circle' ||\n this.tool === 'freeform'\n ) {\n return (\n <Host>\n <slot />\n </Host>\n );\n } else {\n return <Host>{`Unsupported tool type '${this.tool}'.`}</Host>;\n }\n } else {\n return <Host></Host>;\n }\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 createNewMarkupElement():\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement {\n switch (this.tool) {\n case 'arrow':\n return this.createArrowMarkupElement();\n case 'circle':\n return this.createCircleMarkupElement();\n case 'freeform':\n return this.createFreeformMarkupElement();\n }\n }\n\n private updateMarkupElement(): void {\n const { markupElement } = this.stateMap;\n if (markupElement != null) {\n markupElement.remove();\n markupElement.dispose();\n markupElement.viewer = undefined;\n markupElement.removeEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin,\n );\n markupElement.removeEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd,\n );\n }\n\n if (!this.disabled) {\n const newMarkupElement = this.createNewMarkupElement();\n this.hostEl.append(newMarkupElement);\n\n if (this.tool === 'arrow') {\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).startLineAnchorStyle = this.startLineAnchorStyle;\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).endLineAnchorStyle = this.endLineAnchorStyle;\n }\n\n newMarkupElement.mode = 'create';\n newMarkupElement.viewer = this.viewer;\n newMarkupElement.originatingViewport = this.originatingViewport;\n newMarkupElement.centeringBehavior = this.centeringBehavior;\n newMarkupElement.offset = this.offset;\n newMarkupElement.scale = this.scale;\n newMarkupElement.addEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin,\n );\n newMarkupElement.addEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd,\n );\n this.stateMap.markupElement = newMarkupElement;\n }\n }\n\n private handleMarkupInteractionBegin = (): void => {\n this.markupBegin.emit();\n };\n\n private handleMarkupInteractionEnd = (): void => {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n const { points, bounds } = markupElement;\n\n if (points != null && points.length > 0 && bounds != null) {\n this.markupEnd.emit(new FreeformMarkup({ points, bounds }));\n }\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n const { bounds } = markupElement;\n\n if (bounds != null) {\n this.markupEnd.emit(new CircleMarkup({ bounds }));\n }\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n const { start, end } = markupElement;\n\n if (start != null && end != null) {\n this.markupEnd.emit(new ArrowMarkup({ start, end }));\n }\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{t as e,p as t,H as n,d as i,h as r,e as a}from"./p-Bb32XUUS.js";import{p as s}from"./p-CZZALKHT.js";import{s as o}from"./p-DRh4_Z-g.js";import{A as h,C as d,F as l}from"./p-avWSFTeP.js";import{i as c,a as p,b as u}from"./p-taOlygmc.js";import{d as m}from"./p-DCTZZ5Rd.js";import{d as f}from"./p-BC777sCK.js";import{d as w}from"./p-Dzs4u_ZY.js";const g=()=>`:host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}`;const k=t(class e extends n{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.markupAdded=i(this,"markupAdded");this.markupChanged=i(this,"markupChanged");this.markupRemoved=i(this,"markupRemoved");this.markupSelectionChanged=i(this,"markupSelectionChanged");this.tool="arrow";this.disabled=false;this.selectNew=false;this.startLineAnchorStyle="none";this.endLineAnchorStyle="arrow-triangle";this.centeringBehavior="none";this.scale=1;this.handleSlotChange=()=>{this.updatePropsOnMarkupTool();this.updatePropsOnMarkups()};this.handlePointerMove=e=>{if(this.pointerDownPosition!=null&&s.distance(this.pointerDownPosition,s.create(e.clientX,e.clientY))>2){this.toSelectMarkupId=undefined}};this.handlePointerUp=async e=>{if(!this.disabled){const t=e.target;const n=await this.getMarkupElements();const i=n.find((e=>e===t));if((i===null||i===void 0?void 0:i.id)!=null&&i.id!==""&&i.id===this.toSelectMarkupId){this.selectedMarkupId=t.id}else if(this.pointerDownPosition!=null&&s.distance(this.pointerDownPosition,s.create(e.clientX,e.clientY))<=2){this.selectedMarkupId=undefined}this.toSelectMarkupId=undefined;this.pointerDownPosition=undefined}window.removeEventListener("pointerup",this.handlePointerUp);window.removeEventListener("pointermove",this.handlePointerMove)}}disconnectedCallback(){window.removeEventListener("pointerup",this.handlePointerUp);window.removeEventListener("pointermove",this.handlePointerMove)}async addMarkup(e){if(e instanceof h){const{start:t,end:n,id:i}=e;const r=this.createArrowMarkupElement();this.appendMarkupElement(r);r.id=i;r.start=t;r.end=n;r.startLineAnchorStyle=this.startLineAnchorStyle;r.endLineAnchorStyle=this.endLineAnchorStyle;return r}else if(e instanceof d){const{bounds:t,id:n}=e;const i=this.createCircleMarkupElement();this.appendMarkupElement(i);i.id=n;i.bounds=t;return i}else if(e instanceof l){const{bounds:t,points:n,id:i}=e;const r=this.createFreeformMarkupElement();this.appendMarkupElement(r);r.id=i;r.points=n;r.bounds=t;return r}else{throw new Error(`Cannot add markup. Unknown type '${e}'.`)}}async removeMarkup(e){const t=await this.getMarkupElement(e);if(t!=null){t.remove();this.markupRemoved.emit(t)}return t}async getMarkupElements(){return Array.from(this.hostEl.children).filter((e=>c(e)||p(e)||u(e)))}async getMarkupElement(e){const t=await this.getMarkupElements();return t.find((t=>t.id===e))}async handleSelectedMarkupIdChanged(){const e=await this.getMarkupElements();e.forEach((e=>{if(e.id===this.selectedMarkupId){e.mode="edit";this.markupSelectionChanged.emit(e)}else{e.mode=""}}));if(this.selectedMarkupId==null){this.markupSelectionChanged.emit(undefined)}}handlePropertyChanged(){this.updatePropsOnMarkupTool()}async handleViewerChanged(e){this.updatePropsOnMarkupTool();this.updatePropsOnMarkups()}handleDisabledChanged(){this.updatePropsOnMarkupTool()}async handleStartLineAnchorStyleChanged(){this.updatePropsOnMarkupTool();const e=await this.getSelectedArrowMarkup();if(e!=null){e.startLineAnchorStyle=this.startLineAnchorStyle;this.markupChanged.emit(e)}}async handleEndLineAnchorStyleChanged(){this.updatePropsOnMarkupTool();const e=await this.getSelectedArrowMarkup();if(e!=null){e.endLineAnchorStyle=this.endLineAnchorStyle;this.markupChanged.emit(e)}}async handleMarkupEnd(e){var t;const n=e;const i=await this.addMarkup(n.detail);if(typeof i.componentOnReady==="function"){await i.componentOnReady()}if(this.selectNew){this.selectedMarkupId=n.detail.id}(t=this.getMarkupTool())===null||t===void 0?void 0:t.reset()}async handleMarkupUpdated(e){const t=e;if(!t.detail.newlyCreatedMarkup){this.markupChanged.emit(t.detail.markup)}}async handleMarkupPointerDown(e){if(!this.disabled){const t=e.target;const n=await this.getMarkupElements();const i=n.find((e=>e===t));if((i===null||i===void 0?void 0:i.id)!=null&&(i===null||i===void 0?void 0:i.id)!==""){this.toSelectMarkupId=t.id}this.pointerDownPosition=s.create(e.clientX,e.clientY);window.addEventListener("pointermove",this.handlePointerMove);window.addEventListener("pointerup",this.handlePointerUp)}}componentDidLoad(){this.updatePropsOnMarkupTool()}render(){return r(a,{key:"6e5d1d248b208a23b131f097692cf0cf1ca6ad29"},r("slot",{key:"b1318c9faea745daf6eab83b4715923b529ffe72",onSlotchange:this.handleSlotChange}))}appendMarkupElement(e){this.updatePropsOnMarkup(e);this.hostEl.appendChild(e);this.markupAdded.emit(e);return e}createArrowMarkupElement(){if(this.arrowTemplateId!=null){const e=o(window.document.body,this.arrowTemplateId,c,(()=>console.warn(`Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`)),(()=>console.warn(`Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-arrow")}createCircleMarkupElement(){if(this.circleTemplateId!=null){const e=o(window.document.body,this.circleTemplateId,p,(()=>console.warn(`Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`)),(()=>console.warn(`Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-circle")}createFreeformMarkupElement(){if(this.freeformTemplateId!=null){const e=o(window.document.body,this.freeformTemplateId,u,(()=>console.warn(`Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`)),(()=>console.warn(`Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-freeform")}async updatePropsOnMarkups(){const e=await this.getMarkupElements();e.forEach((e=>this.updatePropsOnMarkup(e)))}updatePropsOnMarkup(e){e.viewer=this.viewer;e.originatingViewport=this.originatingViewport;e.centeringBehavior=this.centeringBehavior;e.offset=this.offset;e.scale=this.scale;e.classList.add("viewer-markup__markup")}updatePropsOnMarkupTool(){const e=this.getMarkupTool();if(e!=null){e.disabled=this.disabled;e.arrowTemplateId=this.arrowTemplateId;e.circleTemplateId=this.circleTemplateId;e.freeformTemplateId=this.freeformTemplateId;e.tool=this.tool;e.viewer=this.viewer;e.startLineAnchorStyle=this.startLineAnchorStyle;e.endLineAnchorStyle=this.endLineAnchorStyle;e.originatingViewport=this.originatingViewport;e.centeringBehavior=this.centeringBehavior;e.offset=this.offset;e.scale=this.scale}}getMarkupTool(){return this.hostEl.querySelector("vertex-viewer-markup-tool")}async getSelectedArrowMarkup(){if(this.selectedMarkupId!=null){const e=await this.getMarkupElement(this.selectedMarkupId);return c(e)?e:undefined}}get hostEl(){return this}static get watchers(){return{selectedMarkupId:[{handleSelectedMarkupIdChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],viewer:[{handleViewerChanged:0}],originatingViewport:[{handleViewerChanged:0}],centeringBehavior:[{handleViewerChanged:0}],offset:[{handleViewerChanged:0}],scale:[{handleViewerChanged:0}],disabled:[{handleDisabledChanged:0}],startLineAnchorStyle:[{handleStartLineAnchorStyleChanged:0}],endLineAnchorStyle:[{handleEndLineAnchorStyleChanged:0}]}}static get style(){return g()}},[257,"vertex-viewer-markup",{arrowTemplateId:[1,"arrow-template-id"],circleTemplateId:[1,"circle-template-id"],freeformTemplateId:[1,"freeform-template-id"],tool:[1],disabled:[4],viewer:[16],selectedMarkupId:[1025,"selected-markup-id"],selectNew:[4,"select-new"],startLineAnchorStyle:[1025,"start-line-anchor-style"],endLineAnchorStyle:[1025,"end-line-anchor-style"],originatingViewport:[16],centeringBehavior:[1,"centering-behavior"],offset:[16],scale:[2],toSelectMarkupId:[32],pointerDownPosition:[32],addMarkup:[64],removeMarkup:[64],getMarkupElements:[64],getMarkupElement:[64]},[[0,"markupEnd","handleMarkupEnd"],[0,"interactionEnd","handleMarkupUpdated"],[1,"pointerdown","handleMarkupPointerDown"]],{selectedMarkupId:[{handleSelectedMarkupIdChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],viewer:[{handleViewerChanged:0}],originatingViewport:[{handleViewerChanged:0}],centeringBehavior:[{handleViewerChanged:0}],offset:[{handleViewerChanged:0}],scale:[{handleViewerChanged:0}],disabled:[{handleDisabledChanged:0}],startLineAnchorStyle:[{handleStartLineAnchorStyleChanged:0}],endLineAnchorStyle:[{handleEndLineAnchorStyleChanged:0}]}]);function v(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-markup","vertex-viewer-markup-arrow","vertex-viewer-markup-circle","vertex-viewer-markup-freeform"];t.forEach((t=>{switch(t){case"vertex-viewer-markup":if(!customElements.get(e(t))){customElements.define(e(t),k)}break;case"vertex-viewer-markup-arrow":if(!customElements.get(e(t))){m()}break;case"vertex-viewer-markup-circle":if(!customElements.get(e(t))){f()}break;case"vertex-viewer-markup-freeform":if(!customElements.get(e(t))){w()}break}}))}v();const y=k;const C=v;export{y as VertexViewerMarkup,C as defineCustomElement};
4
+ import{t as e,p as t,H as n,d as i,h as r,e as a}from"./p-Bb32XUUS.js";import{p as s}from"./p-2UsvOTHJ.js";import{s as o}from"./p-DRh4_Z-g.js";import{A as h,C as d,F as l}from"./p-JvS9LLoO.js";import{i as c,a as p,b as u}from"./p-Cs2aiMUK.js";import{d as m}from"./p-DjQ6RXWP.js";import{d as f}from"./p-UJR-ixsy.js";import{d as w}from"./p-CABws4i9.js";const k=()=>`:host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}`;const g=t(class e extends n{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.markupAdded=i(this,"markupAdded");this.markupChanged=i(this,"markupChanged");this.markupRemoved=i(this,"markupRemoved");this.markupSelectionChanged=i(this,"markupSelectionChanged");this.tool="arrow";this.disabled=false;this.selectNew=false;this.startLineAnchorStyle="none";this.endLineAnchorStyle="arrow-triangle";this.centeringBehavior="none";this.scale=1;this.handleSlotChange=()=>{this.updatePropsOnMarkupTool();this.updatePropsOnMarkups()};this.handlePointerMove=e=>{if(this.pointerDownPosition!=null&&s.distance(this.pointerDownPosition,s.create(e.clientX,e.clientY))>2){this.toSelectMarkupId=undefined}};this.handlePointerUp=async e=>{if(!this.disabled){const t=e.target;const n=await this.getMarkupElements();const i=n.find((e=>e===t));if((i===null||i===void 0?void 0:i.id)!=null&&i.id!==""&&i.id===this.toSelectMarkupId){this.selectedMarkupId=t.id}else if(this.pointerDownPosition!=null&&s.distance(this.pointerDownPosition,s.create(e.clientX,e.clientY))<=2){this.selectedMarkupId=undefined}this.toSelectMarkupId=undefined;this.pointerDownPosition=undefined}window.removeEventListener("pointerup",this.handlePointerUp);window.removeEventListener("pointermove",this.handlePointerMove)}}disconnectedCallback(){window.removeEventListener("pointerup",this.handlePointerUp);window.removeEventListener("pointermove",this.handlePointerMove)}async addMarkup(e){if(e instanceof h){const{start:t,end:n,id:i}=e;const r=this.createArrowMarkupElement();this.appendMarkupElement(r);r.id=i;r.start=t;r.end=n;r.startLineAnchorStyle=this.startLineAnchorStyle;r.endLineAnchorStyle=this.endLineAnchorStyle;return r}else if(e instanceof d){const{bounds:t,id:n}=e;const i=this.createCircleMarkupElement();this.appendMarkupElement(i);i.id=n;i.bounds=t;return i}else if(e instanceof l){const{bounds:t,points:n,id:i}=e;const r=this.createFreeformMarkupElement();this.appendMarkupElement(r);r.id=i;r.points=n;r.bounds=t;return r}else{throw new Error(`Cannot add markup. Unknown type '${e}'.`)}}async removeMarkup(e){const t=await this.getMarkupElement(e);if(t!=null){t.remove();this.markupRemoved.emit(t)}return t}async getMarkupElements(){return Array.from(this.hostEl.children).filter((e=>c(e)||p(e)||u(e)))}async getMarkupElement(e){const t=await this.getMarkupElements();return t.find((t=>t.id===e))}async handleSelectedMarkupIdChanged(){const e=await this.getMarkupElements();e.forEach((e=>{if(e.id===this.selectedMarkupId){e.mode="edit";this.markupSelectionChanged.emit(e)}else{e.mode=""}}));if(this.selectedMarkupId==null){this.markupSelectionChanged.emit(undefined)}}handlePropertyChanged(){this.updatePropsOnMarkupTool()}async handleViewerChanged(e){this.updatePropsOnMarkupTool();this.updatePropsOnMarkups()}handleDisabledChanged(){this.updatePropsOnMarkupTool()}async handleStartLineAnchorStyleChanged(){this.updatePropsOnMarkupTool();const e=await this.getSelectedArrowMarkup();if(e!=null){e.startLineAnchorStyle=this.startLineAnchorStyle;this.markupChanged.emit(e)}}async handleEndLineAnchorStyleChanged(){this.updatePropsOnMarkupTool();const e=await this.getSelectedArrowMarkup();if(e!=null){e.endLineAnchorStyle=this.endLineAnchorStyle;this.markupChanged.emit(e)}}async handleMarkupEnd(e){var t;const n=e;const i=await this.addMarkup(n.detail);if(typeof i.componentOnReady==="function"){await i.componentOnReady()}if(this.selectNew){this.selectedMarkupId=n.detail.id}(t=this.getMarkupTool())===null||t===void 0?void 0:t.reset()}async handleMarkupUpdated(e){const t=e;if(!t.detail.newlyCreatedMarkup){this.markupChanged.emit(t.detail.markup)}}async handleMarkupPointerDown(e){if(!this.disabled){const t=e.target;const n=await this.getMarkupElements();const i=n.find((e=>e===t));if((i===null||i===void 0?void 0:i.id)!=null&&(i===null||i===void 0?void 0:i.id)!==""){this.toSelectMarkupId=t.id}this.pointerDownPosition=s.create(e.clientX,e.clientY);window.addEventListener("pointermove",this.handlePointerMove);window.addEventListener("pointerup",this.handlePointerUp)}}componentDidLoad(){this.updatePropsOnMarkupTool()}render(){return r(a,{key:"6e5d1d248b208a23b131f097692cf0cf1ca6ad29"},r("slot",{key:"b1318c9faea745daf6eab83b4715923b529ffe72",onSlotchange:this.handleSlotChange}))}appendMarkupElement(e){this.updatePropsOnMarkup(e);this.hostEl.appendChild(e);this.markupAdded.emit(e);return e}createArrowMarkupElement(){if(this.arrowTemplateId!=null){const e=o(window.document.body,this.arrowTemplateId,c,(()=>console.warn(`Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`)),(()=>console.warn(`Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-arrow")}createCircleMarkupElement(){if(this.circleTemplateId!=null){const e=o(window.document.body,this.circleTemplateId,p,(()=>console.warn(`Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`)),(()=>console.warn(`Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-circle")}createFreeformMarkupElement(){if(this.freeformTemplateId!=null){const e=o(window.document.body,this.freeformTemplateId,u,(()=>console.warn(`Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`)),(()=>console.warn(`Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-freeform")}async updatePropsOnMarkups(){const e=await this.getMarkupElements();e.forEach((e=>this.updatePropsOnMarkup(e)))}updatePropsOnMarkup(e){e.viewer=this.viewer;e.originatingViewport=this.originatingViewport;e.centeringBehavior=this.centeringBehavior;e.offset=this.offset;e.scale=this.scale;e.classList.add("viewer-markup__markup")}updatePropsOnMarkupTool(){const e=this.getMarkupTool();if(e!=null){e.disabled=this.disabled;e.arrowTemplateId=this.arrowTemplateId;e.circleTemplateId=this.circleTemplateId;e.freeformTemplateId=this.freeformTemplateId;e.tool=this.tool;e.viewer=this.viewer;e.startLineAnchorStyle=this.startLineAnchorStyle;e.endLineAnchorStyle=this.endLineAnchorStyle;e.originatingViewport=this.originatingViewport;e.centeringBehavior=this.centeringBehavior;e.offset=this.offset;e.scale=this.scale}}getMarkupTool(){return this.hostEl.querySelector("vertex-viewer-markup-tool")}async getSelectedArrowMarkup(){if(this.selectedMarkupId!=null){const e=await this.getMarkupElement(this.selectedMarkupId);return c(e)?e:undefined}}get hostEl(){return this}static get watchers(){return{selectedMarkupId:[{handleSelectedMarkupIdChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],viewer:[{handleViewerChanged:0}],originatingViewport:[{handleViewerChanged:0}],centeringBehavior:[{handleViewerChanged:0}],offset:[{handleViewerChanged:0}],scale:[{handleViewerChanged:0}],disabled:[{handleDisabledChanged:0}],startLineAnchorStyle:[{handleStartLineAnchorStyleChanged:0}],endLineAnchorStyle:[{handleEndLineAnchorStyleChanged:0}]}}static get style(){return k()}},[257,"vertex-viewer-markup",{arrowTemplateId:[1,"arrow-template-id"],circleTemplateId:[1,"circle-template-id"],freeformTemplateId:[1,"freeform-template-id"],tool:[1],disabled:[4],viewer:[16],selectedMarkupId:[1025,"selected-markup-id"],selectNew:[4,"select-new"],startLineAnchorStyle:[1025,"start-line-anchor-style"],endLineAnchorStyle:[1025,"end-line-anchor-style"],originatingViewport:[16],centeringBehavior:[1,"centering-behavior"],offset:[16],scale:[2],toSelectMarkupId:[32],pointerDownPosition:[32],addMarkup:[64],removeMarkup:[64],getMarkupElements:[64],getMarkupElement:[64]},[[0,"markupEnd","handleMarkupEnd"],[0,"interactionEnd","handleMarkupUpdated"],[1,"pointerdown","handleMarkupPointerDown"]],{selectedMarkupId:[{handleSelectedMarkupIdChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],viewer:[{handleViewerChanged:0}],originatingViewport:[{handleViewerChanged:0}],centeringBehavior:[{handleViewerChanged:0}],offset:[{handleViewerChanged:0}],scale:[{handleViewerChanged:0}],disabled:[{handleDisabledChanged:0}],startLineAnchorStyle:[{handleStartLineAnchorStyleChanged:0}],endLineAnchorStyle:[{handleEndLineAnchorStyleChanged:0}]}]);function v(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-markup","vertex-viewer-markup-arrow","vertex-viewer-markup-circle","vertex-viewer-markup-freeform"];t.forEach((t=>{switch(t){case"vertex-viewer-markup":if(!customElements.get(e(t))){customElements.define(e(t),g)}break;case"vertex-viewer-markup-arrow":if(!customElements.get(e(t))){m()}break;case"vertex-viewer-markup-circle":if(!customElements.get(e(t))){f()}break;case"vertex-viewer-markup-freeform":if(!customElements.get(e(t))){w()}break}}))}v();const y=g;const C=v;export{y as VertexViewerMarkup,C as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-viewer-markup.js.map