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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (476) 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-OELTgslY.js} +3 -3
  5. package/dist/cjs/{config-CepHuwRF.js.map → config-OELTgslY.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-rj-TEPKc.js} +4 -4
  11. package/dist/cjs/{entities-BdWnb6KI.js.map → entities-rj-TEPKc.js.map} +1 -1
  12. package/dist/cjs/{geometry_pb-BISQT2vx.js → geometry_pb-asn2mNvW.js} +3 -3
  13. package/dist/cjs/{geometry_pb-BISQT2vx.js.map → geometry_pb-asn2mNvW.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-e19TP_oF.js} +5 -5
  29. package/dist/cjs/queries-e19TP_oF.js.map +1 -0
  30. package/dist/cjs/{regl-component-CB004H91.js → regl-component-DjVaO3t3.js} +6 -6
  31. package/dist/cjs/{regl-component-CB004H91.js.map → regl-component-DjVaO3t3.js.map} +1 -1
  32. package/dist/cjs/{representation_pb-CHCm5o1e.js → representation_pb-BVBPrHLf.js} +3 -3
  33. package/dist/cjs/{representation_pb-CHCm5o1e.js.map → representation_pb-BVBPrHLf.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-M3UUIO3l.js} +118 -95
  37. package/dist/cjs/streamAttributes-M3UUIO3l.js.map +1 -0
  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 +2 -2
  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 +3 -3
  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 +9 -8
  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 +7 -7
  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-search/scene-tree-search.js +1 -1
  90. package/dist/collection/components/scene-tree-search/scene-tree-search.js.map +1 -1
  91. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.css +10 -10
  92. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js +1 -1
  93. package/dist/collection/components/scene-tree-table-cell/scene-tree-table-cell.js.map +1 -1
  94. package/dist/collection/components/scene-tree-table-column/scene-tree-table-column.css +0 -1
  95. package/dist/collection/components/scene-tree-table-layout/scene-tree-table-layout.css +3 -3
  96. package/dist/collection/components/viewer-annotation-callout/viewer-annotation-callout.css +3 -4
  97. package/dist/collection/components/viewer-box-query-tool/types.js.map +1 -1
  98. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.css +9 -7
  99. package/dist/collection/components/viewer-button/viewer-button.js +32 -1
  100. package/dist/collection/components/viewer-button/viewer-button.js.map +1 -1
  101. package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.css +2 -2
  102. package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.js +1 -1
  103. package/dist/collection/components/viewer-default-toolbar/viewer-default-toolbar.js.map +1 -1
  104. package/dist/collection/components/viewer-markup/viewer-markup.js.map +1 -1
  105. package/dist/collection/components/viewer-markup-arrow/utils.js.map +1 -1
  106. package/dist/collection/components/viewer-markup-tool/viewer-markup-tool.css +2 -2
  107. package/dist/collection/components/viewer-pin-group/viewer-pin-group.css +12 -11
  108. package/dist/collection/components/viewer-pin-label/viewer-pin-label.css +21 -8
  109. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js +4 -3
  110. package/dist/collection/components/viewer-pin-label/viewer-pin-label.js.map +1 -1
  111. package/dist/collection/components/viewer-pin-label-line/viewer-pin-label-line.css +5 -4
  112. package/dist/collection/components/viewer-spinner/viewer-spinner.css +2 -2
  113. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js +1 -1
  114. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget-components.js.map +1 -1
  115. package/dist/collection/components/viewer-transform-widget/viewer-transform-widget.css +1 -2
  116. package/dist/collection/lib/grpc.js.map +1 -1
  117. package/dist/collection/lib/interactions/baseInteractionHandler.js +2 -1
  118. package/dist/collection/lib/interactions/baseInteractionHandler.js.map +1 -1
  119. package/dist/collection/lib/scenes/scene.js.map +1 -1
  120. package/dist/collection/lib/scenes/sceneViewStateLoader.js.map +1 -1
  121. package/dist/collection/lib/stream/state.js.map +1 -1
  122. package/dist/collection/lib/types/loadableResource.js.map +1 -1
  123. package/dist/collection/lib/types/sceneViewStateIdentifier.js.map +1 -1
  124. package/dist/collection/lib/walk-mode/model.js.map +1 -1
  125. package/dist/collection/workers/png-decoder-pool.js +4 -3
  126. package/dist/collection/workers/png-decoder-pool.js.map +1 -1
  127. package/dist/components/index.js +1 -1
  128. package/dist/components/p-2UsvOTHJ.js +5 -0
  129. package/dist/components/p-2UsvOTHJ.js.map +1 -0
  130. package/dist/components/{p-CZgX-9yo.js → p-5bk1mHRt.js} +2 -2
  131. package/dist/components/{p-DRGCkSEK.js → p-B8530k7R.js} +2 -2
  132. package/dist/components/{p-garvKln8.js → p-BAuOB8M-.js} +2 -2
  133. package/dist/components/p-BAuOB8M-.js.map +1 -0
  134. package/dist/components/{p-BKQMbekH.js → p-BCuMPvZO.js} +2 -2
  135. package/dist/components/p-BFEV_v80.js +5 -0
  136. package/dist/components/p-BFEV_v80.js.map +1 -0
  137. package/dist/components/{p-C02XtMl4.js → p-BHyxBmg6.js} +2 -2
  138. package/dist/components/{p-O1_Yvjd6.js → p-BT9d9jRt.js} +2 -2
  139. package/dist/components/{p-oDn1DcWj.js → p-BZDn1Vuv.js} +2 -2
  140. package/dist/components/{p-VEJB73Ei.js → p-Bdf4AcJ2.js} +2 -2
  141. package/dist/components/p-BgzjmANj.js +5 -0
  142. package/dist/components/p-BgzjmANj.js.map +1 -0
  143. package/dist/components/p-BjvjKoy7.js +5 -0
  144. package/dist/components/p-BjvjKoy7.js.map +1 -0
  145. package/dist/components/p-Bwtyddca.js +5 -0
  146. package/dist/components/p-Bwtyddca.js.map +1 -0
  147. package/dist/components/{p-CMdP8O-G.js → p-Bx42CNGV.js} +2 -2
  148. package/dist/components/{p-CelQDFR0.js → p-C12jtCFb.js} +2 -2
  149. package/dist/components/p-C86HMDzi.js +5 -0
  150. package/dist/components/p-C86HMDzi.js.map +1 -0
  151. package/dist/components/{p-Dzs4u_ZY.js → p-CABws4i9.js} +2 -2
  152. package/dist/components/p-CIuxJYJL.js.map +1 -1
  153. package/dist/components/{p-BqeEZXPn.js → p-CPROw2BU.js} +2 -2
  154. package/dist/components/p-CSVgoQU8.js +5 -0
  155. package/dist/components/p-CSVgoQU8.js.map +1 -0
  156. package/dist/components/{p-DnVcQAR9.js → p-CTi-0-dI.js} +2 -2
  157. package/dist/components/{p-EG7pMA2M.js → p-CeZe0Qql.js} +2 -2
  158. package/dist/components/p-CioaIHsi.js.map +1 -1
  159. package/dist/components/{p-Due5EmBt.js → p-Clyxptbp.js} +2 -2
  160. package/dist/components/{p-taOlygmc.js → p-Cs2aiMUK.js} +2 -2
  161. package/dist/components/p-Cs2aiMUK.js.map +1 -0
  162. package/dist/components/p-DUo-H-nW.js +5 -0
  163. package/dist/components/p-DUo-H-nW.js.map +1 -0
  164. package/dist/components/{p-MnZadXO8.js → p-D_h07qsA.js} +2 -2
  165. package/dist/components/{p-DCTZZ5Rd.js → p-DjQ6RXWP.js} +2 -2
  166. package/dist/components/p-DxuSiXYg.js.map +1 -1
  167. package/dist/components/{p-CxzyM08j.js → p-DyL2wWm6.js} +2 -2
  168. package/dist/components/{p-avWSFTeP.js → p-JvS9LLoO.js} +2 -2
  169. package/dist/components/{p-CfTvpqud.js → p-KidjtXKE.js} +2 -2
  170. package/dist/{viewer/p-7m7Vr5V7.js → components/p-Ng27jBsS.js} +2 -2
  171. package/dist/components/p-Ng27jBsS.js.map +1 -0
  172. package/dist/components/{p-BC777sCK.js → p-UJR-ixsy.js} +2 -2
  173. package/dist/components/{p-Ib4vgh2t.js → p-UrT4ZJv3.js} +2 -2
  174. package/dist/components/{p-Ib4vgh2t.js.map → p-UrT4ZJv3.js.map} +1 -1
  175. package/dist/components/{p-mpsCUvSn.js → p-_qi2VkC2.js} +2 -2
  176. package/dist/components/{p-CNprIkKd.js → p-rDr0x5Z7.js} +2 -2
  177. package/dist/components/vertex-scene-tree-search.js +1 -1
  178. package/dist/components/vertex-scene-tree-table-cell.js +1 -1
  179. package/dist/components/vertex-scene-tree-table-cell.js.map +1 -1
  180. package/dist/components/vertex-scene-tree-table-column.js.map +1 -1
  181. package/dist/components/vertex-scene-tree-table-layout.js +1 -1
  182. package/dist/components/vertex-scene-tree.js +1 -1
  183. package/dist/components/vertex-scene-tree.js.map +1 -1
  184. package/dist/components/vertex-viewer-annotation-callout.js.map +1 -1
  185. package/dist/components/vertex-viewer-box-query-tool.js +1 -1
  186. package/dist/components/vertex-viewer-box-query-tool.js.map +1 -1
  187. package/dist/components/vertex-viewer-button.js +1 -1
  188. package/dist/components/vertex-viewer-default-toolbar.js +1 -1
  189. package/dist/components/vertex-viewer-default-toolbar.js.map +1 -1
  190. package/dist/components/vertex-viewer-dom-element.js +1 -1
  191. package/dist/components/vertex-viewer-dom-group.js +1 -1
  192. package/dist/components/vertex-viewer-dom-renderer.js +1 -1
  193. package/dist/components/vertex-viewer-hit-result-indicator.js +1 -1
  194. package/dist/components/vertex-viewer-markup-arrow.js +1 -1
  195. package/dist/components/vertex-viewer-markup-circle.js +1 -1
  196. package/dist/components/vertex-viewer-markup-freeform.js +1 -1
  197. package/dist/components/vertex-viewer-markup-tool.js +1 -1
  198. package/dist/components/vertex-viewer-markup-tool.js.map +1 -1
  199. package/dist/components/vertex-viewer-markup.js +1 -1
  200. package/dist/components/vertex-viewer-markup.js.map +1 -1
  201. package/dist/components/vertex-viewer-measurement-details.js +1 -1
  202. package/dist/components/vertex-viewer-measurement-distance.js +1 -1
  203. package/dist/components/vertex-viewer-measurement-line.js +1 -1
  204. package/dist/components/vertex-viewer-measurement-overlays.js +1 -1
  205. package/dist/components/vertex-viewer-measurement-precise.js +1 -1
  206. package/dist/components/vertex-viewer-pin-group.js +1 -1
  207. package/dist/components/vertex-viewer-pin-label-line.js +1 -1
  208. package/dist/components/vertex-viewer-pin-label.js +1 -1
  209. package/dist/components/vertex-viewer-pin-tool.js +1 -1
  210. package/dist/components/vertex-viewer-teleport-tool.js +1 -1
  211. package/dist/components/vertex-viewer-transform-widget.js +1 -1
  212. package/dist/components/vertex-viewer-transform-widget.js.map +1 -1
  213. package/dist/components/vertex-viewer-view-cube.js +1 -1
  214. package/dist/components/vertex-viewer-walk-mode-tool.js +1 -1
  215. package/dist/components/vertex-viewer.js +1 -1
  216. package/dist/esm/{bundle-CZZALKHT.js → bundle-2UsvOTHJ.js} +28 -25
  217. package/dist/esm/bundle-2UsvOTHJ.js.map +1 -0
  218. package/dist/esm/{config-CyaUTJEG.js → config-Cqrcty7U.js} +3 -3
  219. package/dist/esm/{config-CyaUTJEG.js.map → config-Cqrcty7U.js.map} +1 -1
  220. package/dist/esm/{controller-ByBd8r3O.js → controller-BPECXXfj.js} +3 -3
  221. package/dist/esm/{controller-ByBd8r3O.js.map → controller-BPECXXfj.js.map} +1 -1
  222. package/dist/esm/{dom-Bbf2HAst.js → dom-DaP9SiyY.js} +3 -3
  223. package/dist/esm/{dom-Bbf2HAst.js.map → dom-DaP9SiyY.js.map} +1 -1
  224. package/dist/esm/{entities-DriL3zBC.js → entities-CawBZH7i.js} +4 -4
  225. package/dist/esm/{entities-DriL3zBC.js.map → entities-CawBZH7i.js.map} +1 -1
  226. package/dist/esm/{geometry_pb-BEB8SExe.js → geometry_pb-COdZQiRi.js} +3 -3
  227. package/dist/esm/{geometry_pb-BEB8SExe.js.map → geometry_pb-COdZQiRi.js.map} +1 -1
  228. package/dist/esm/grpc-hWL8wFvk.js.map +1 -1
  229. package/dist/esm/index.js +13 -13
  230. package/dist/esm/index.mjs +13 -13
  231. package/dist/esm/loader.js +1 -1
  232. package/dist/esm/loader.mjs +1 -1
  233. package/dist/esm/{markup-y96-uR-l.js → markup-B58g75Hr.js} +3 -3
  234. package/dist/esm/{markup-y96-uR-l.js.map → markup-B58g75Hr.js.map} +1 -1
  235. package/dist/esm/{model-BJQo0DxL.js → model-B5KuXEsl.js} +3 -3
  236. package/dist/esm/{model-BJQo0DxL.js.map → model-B5KuXEsl.js.map} +1 -1
  237. package/dist/esm/model-BHVr1tU0.js.map +1 -1
  238. package/dist/esm/{model-CTdG73h9.js → model-Dc6T63-k.js} +3 -3
  239. package/dist/esm/{model-CTdG73h9.js.map → model-Dc6T63-k.js.map} +1 -1
  240. package/dist/esm/{multiElementInteractionHandler-C45E8VzE.js → multiElementInteractionHandler-3tE3OPpw.js} +6 -5
  241. package/dist/esm/multiElementInteractionHandler-3tE3OPpw.js.map +1 -0
  242. package/dist/esm/{overlays-DmcRtaSn.js → overlays-BwIqsqLW.js} +3 -3
  243. package/dist/esm/{overlays-DmcRtaSn.js.map → overlays-BwIqsqLW.js.map} +1 -1
  244. package/dist/esm/{queries-DWjy-LsV.js → queries-B4XotYyr.js} +5 -5
  245. package/dist/esm/queries-B4XotYyr.js.map +1 -0
  246. package/dist/esm/{regl-component-zzdsBise.js → regl-component-B1_h3_s8.js} +6 -6
  247. package/dist/esm/{regl-component-zzdsBise.js.map → regl-component-B1_h3_s8.js.map} +1 -1
  248. package/dist/esm/{representation_pb-CQdJxiGO.js → representation_pb-C4MJfZMo.js} +3 -3
  249. package/dist/esm/{representation_pb-CQdJxiGO.js.map → representation_pb-C4MJfZMo.js.map} +1 -1
  250. package/dist/esm/{results-ClIgKssN.js → results-De9arm7M.js} +3 -3
  251. package/dist/esm/{results-ClIgKssN.js.map → results-De9arm7M.js.map} +1 -1
  252. package/dist/esm/{streamAttributes-CTs61PCl.js → streamAttributes-BW9JzMeG.js} +117 -94
  253. package/dist/esm/streamAttributes-BW9JzMeG.js.map +1 -0
  254. package/dist/esm/{util-DUjEw5Kh.js → util-CMPFqnEv.js} +3 -3
  255. package/dist/esm/{util-DUjEw5Kh.js.map → util-CMPFqnEv.js.map} +1 -1
  256. package/dist/esm/{utils-DOjHP1wA.js → utils-B1mSYmAK.js} +3 -3
  257. package/dist/esm/{utils-DOjHP1wA.js.map → utils-B1mSYmAK.js.map} +1 -1
  258. package/dist/esm/{utils-DJ5FvINs.js → utils-c-mcLgsj.js} +3 -3
  259. package/dist/esm/utils-c-mcLgsj.js.map +1 -0
  260. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js +2 -2
  261. package/dist/esm/vertex-scene-tree-notification-banner_4.entry.js.map +1 -1
  262. package/dist/esm/vertex-scene-tree-table-cell.entry.js +3 -3
  263. package/dist/esm/vertex-scene-tree-table-cell.entry.js.map +1 -1
  264. package/dist/esm/vertex-scene-tree-table-column.entry.js.map +1 -1
  265. package/dist/esm/vertex-scene-tree.entry.js +3 -3
  266. package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
  267. package/dist/esm/vertex-viewer-annotation-callout.entry.js.map +1 -1
  268. package/dist/esm/vertex-viewer-box-query-tool.entry.js +4 -4
  269. package/dist/esm/vertex-viewer-box-query-tool.entry.js.map +1 -1
  270. package/dist/esm/vertex-viewer-button_3.entry.js +6 -1
  271. package/dist/esm/vertex-viewer-button_3.entry.js.map +1 -1
  272. package/dist/esm/vertex-viewer-default-toolbar.entry.js +2 -2
  273. package/dist/esm/vertex-viewer-default-toolbar.entry.js.map +1 -1
  274. package/dist/esm/vertex-viewer-dom-element_2.entry.js +5 -5
  275. package/dist/esm/vertex-viewer-dom-group.entry.js +1 -1
  276. package/dist/esm/vertex-viewer-hit-result-indicator.entry.js +5 -5
  277. package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +3 -3
  278. package/dist/esm/vertex-viewer-markup-tool.entry.js +4 -4
  279. package/dist/esm/vertex-viewer-markup-tool.entry.js.map +1 -1
  280. package/dist/esm/vertex-viewer-markup.entry.js +3 -3
  281. package/dist/esm/vertex-viewer-markup.entry.js.map +1 -1
  282. package/dist/esm/vertex-viewer-measurement-details.entry.js +3 -3
  283. package/dist/esm/vertex-viewer-measurement-distance.entry.js +8 -8
  284. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +5 -5
  285. package/dist/esm/vertex-viewer-measurement-precise.entry.js +7 -7
  286. package/dist/esm/vertex-viewer-pin-group.entry.js +7 -7
  287. package/dist/esm/vertex-viewer-pin-group.entry.js.map +1 -1
  288. package/dist/esm/vertex-viewer-pin-label_2.entry.js +9 -8
  289. package/dist/esm/vertex-viewer-pin-label_2.entry.js.map +1 -1
  290. package/dist/esm/vertex-viewer-pin-tool.entry.js +3 -3
  291. package/dist/esm/vertex-viewer-spinner.entry.js.map +1 -1
  292. package/dist/esm/vertex-viewer-teleport-tool.entry.js +2 -2
  293. package/dist/esm/vertex-viewer-transform-widget.entry.js +7 -7
  294. package/dist/esm/vertex-viewer-transform-widget.entry.js.map +1 -1
  295. package/dist/esm/vertex-viewer-view-cube.entry.js +2 -2
  296. package/dist/esm/vertex-viewer-walk-mode-tool.entry.js +1 -1
  297. package/dist/esm/vertex-viewer.entry.js +8 -8
  298. package/dist/esm/viewer.js +1 -1
  299. package/dist/esm/{viewport-D90kzsD7.js → viewport-CHtidaFL.js} +3 -3
  300. package/dist/esm/{viewport-D90kzsD7.js.map → viewport-CHtidaFL.js.map} +1 -1
  301. package/dist/types/components/viewer-button/viewer-button.d.ts +5 -0
  302. package/dist/types/components.d.ts +14 -1
  303. package/dist/types/lib/walk-mode/model.d.ts +10 -10
  304. package/dist/types/regl-shape.d.ts +1 -5
  305. package/dist/types/workers/png-decoder-pool.d.ts +0 -1
  306. package/dist/viewer/index.esm.js +1 -1
  307. package/dist/viewer/{p-12a673f0.entry.js → p-1506f9a2.entry.js} +2 -2
  308. package/dist/viewer/p-1506f9a2.entry.js.map +1 -0
  309. package/dist/viewer/{p-78f422af.entry.js → p-287e0670.entry.js} +2 -2
  310. package/dist/viewer/{p-78f422af.entry.js.map → p-287e0670.entry.js.map} +1 -1
  311. package/dist/viewer/{p-7b4eec65.entry.js → p-293d8f3f.entry.js} +2 -2
  312. package/dist/viewer/p-2UsvOTHJ.js +5 -0
  313. package/dist/viewer/p-2UsvOTHJ.js.map +1 -0
  314. package/dist/viewer/{p-510fd2e1.entry.js → p-2d2fa147.entry.js} +2 -2
  315. package/dist/viewer/{p-a108a305.entry.js → p-2faddbf8.entry.js} +2 -2
  316. package/dist/viewer/{p-e3981cf8.entry.js → p-36349a80.entry.js} +2 -2
  317. package/dist/viewer/p-36349a80.entry.js.map +1 -0
  318. package/dist/viewer/{p-aa0359e0.entry.js → p-3c5dd716.entry.js} +2 -2
  319. package/dist/viewer/p-44395076.entry.js +5 -0
  320. package/dist/viewer/p-44395076.entry.js.map +1 -0
  321. package/dist/viewer/{p-fe434552.entry.js → p-45cc095e.entry.js} +2 -2
  322. package/dist/viewer/p-504e77a7.entry.js +5 -0
  323. package/dist/viewer/{p-c2c3579f.entry.js.map → p-504e77a7.entry.js.map} +1 -1
  324. package/dist/viewer/{p-71c03352.entry.js → p-53f6cc59.entry.js} +2 -2
  325. package/dist/viewer/{p-56e39cff.entry.js → p-83683307.entry.js} +2 -2
  326. package/dist/viewer/{p-91fca24b.entry.js → p-93311f46.entry.js} +2 -2
  327. package/dist/viewer/{p-BIR7Lfxx.js → p-BEOO-Ypv.js} +2 -2
  328. package/dist/viewer/{p-BIR7Lfxx.js.map → p-BEOO-Ypv.js.map} +1 -1
  329. package/dist/viewer/{p-C6YtUG51.js → p-BJGbLthH.js} +2 -2
  330. package/dist/viewer/{p-C6YtUG51.js.map → p-BJGbLthH.js.map} +1 -1
  331. package/dist/viewer/{p-O1_Yvjd6.js → p-BT9d9jRt.js} +2 -2
  332. package/dist/viewer/{p-O1_Yvjd6.js.map → p-BT9d9jRt.js.map} +1 -1
  333. package/dist/viewer/{p-VEJB73Ei.js → p-Bdf4AcJ2.js} +2 -2
  334. package/dist/viewer/{p-VEJB73Ei.js.map → p-Bdf4AcJ2.js.map} +1 -1
  335. package/dist/viewer/{p-C-huOg09.js → p-Br21pGVj.js} +2 -2
  336. package/dist/viewer/{p-C-huOg09.js.map → p-Br21pGVj.js.map} +1 -1
  337. package/dist/viewer/{p-Ce1j43tF.js → p-Bw_ryWU0.js} +2 -2
  338. package/dist/viewer/{p-Ce1j43tF.js.map → p-Bw_ryWU0.js.map} +1 -1
  339. package/dist/viewer/{p-CelQDFR0.js → p-C12jtCFb.js} +2 -2
  340. package/dist/viewer/{p-CelQDFR0.js.map → p-C12jtCFb.js.map} +1 -1
  341. package/dist/viewer/{p-B-J4CqZy.js → p-C4_1Jc7H.js} +2 -2
  342. package/dist/viewer/{p-B-J4CqZy.js.map → p-C4_1Jc7H.js.map} +1 -1
  343. package/dist/viewer/p-CEDqc5sS.js +5 -0
  344. package/dist/viewer/{p-BDy3SLKk.js.map → p-CEDqc5sS.js.map} +1 -1
  345. package/dist/viewer/p-Cc3XhAoA.js +5 -0
  346. package/dist/viewer/p-Cc3XhAoA.js.map +1 -0
  347. package/dist/viewer/{p-EG7pMA2M.js → p-CeZe0Qql.js} +2 -2
  348. package/dist/viewer/{p-EG7pMA2M.js.map → p-CeZe0Qql.js.map} +1 -1
  349. package/dist/viewer/p-CioaIHsi.js.map +1 -1
  350. package/dist/viewer/{p-EUeCUp3y.js → p-CxBXErQ8.js} +2 -2
  351. package/dist/viewer/{p-EUeCUp3y.js.map → p-CxBXErQ8.js.map} +1 -1
  352. package/dist/viewer/{p-CIBBr-p1.js → p-D0aTA_2m.js} +2 -2
  353. package/dist/viewer/{p-CIBBr-p1.js.map → p-D0aTA_2m.js.map} +1 -1
  354. package/dist/viewer/{p-UQXG8bCI.js → p-DBfvBC5O.js} +2 -2
  355. package/dist/viewer/p-DBfvBC5O.js.map +1 -0
  356. package/dist/{components/p-QhlhRt6X.js → viewer/p-DIbJ8Ijj.js} +2 -2
  357. package/dist/viewer/p-DIbJ8Ijj.js.map +1 -0
  358. package/dist/viewer/{p-Cju1inFh.js → p-DYDhLlLS.js} +2 -2
  359. package/dist/viewer/p-DYDhLlLS.js.map +1 -0
  360. package/dist/viewer/{p-CxzyM08j.js → p-DyL2wWm6.js} +2 -2
  361. package/dist/viewer/{p-CxzyM08j.js.map → p-DyL2wWm6.js.map} +1 -1
  362. package/dist/viewer/{p-avWSFTeP.js → p-JvS9LLoO.js} +2 -2
  363. package/dist/viewer/{p-avWSFTeP.js.map → p-JvS9LLoO.js.map} +1 -1
  364. package/dist/viewer/{p-mpsCUvSn.js → p-_qi2VkC2.js} +2 -2
  365. package/dist/viewer/{p-mpsCUvSn.js.map → p-_qi2VkC2.js.map} +1 -1
  366. package/dist/viewer/{p-9312a936.entry.js → p-a94b626c.entry.js} +2 -2
  367. package/dist/viewer/p-b5cc83a4.entry.js.map +1 -1
  368. package/dist/viewer/{p-fc7d9b2b.entry.js → p-c531ca97.entry.js} +2 -2
  369. package/dist/viewer/{p-fc7d9b2b.entry.js.map → p-c531ca97.entry.js.map} +1 -1
  370. package/dist/viewer/p-c9dee5c4.entry.js +5 -0
  371. package/dist/viewer/p-c9dee5c4.entry.js.map +1 -0
  372. package/dist/viewer/p-ce711ae0.entry.js +5 -0
  373. package/dist/viewer/p-ce711ae0.entry.js.map +1 -0
  374. package/dist/viewer/{p-82ed4346.entry.js → p-ced98004.entry.js} +2 -2
  375. package/dist/viewer/p-d357d235.entry.js.map +1 -1
  376. package/dist/viewer/p-dcb6ddfe.entry.js +5 -0
  377. package/dist/viewer/p-dcb6ddfe.entry.js.map +1 -0
  378. package/dist/viewer/p-e98db875.entry.js.map +1 -1
  379. package/dist/viewer/{p-c2454523.entry.js → p-ea45c3e9.entry.js} +2 -2
  380. package/dist/viewer/p-ebd9dd99.entry.js +5 -0
  381. package/dist/viewer/p-ebd9dd99.entry.js.map +1 -0
  382. package/dist/viewer/{p-a893a299.entry.js → p-ecd594f2.entry.js} +2 -2
  383. package/dist/viewer/{p-03a531d9.entry.js → p-ef9437ca.entry.js} +2 -2
  384. package/dist/viewer/p-fec5a15d.entry.js +5 -0
  385. package/dist/viewer/p-fec5a15d.entry.js.map +1 -0
  386. package/dist/viewer/p-ipyYHvea.js.map +1 -1
  387. package/dist/viewer/viewer.esm.js +1 -1
  388. package/package.json +10 -10
  389. package/readme.md +14 -8
  390. package/dist/cjs/bundle-07I6_WqC.js.map +0 -1
  391. package/dist/cjs/multiElementInteractionHandler-Bqpg2wVT.js.map +0 -1
  392. package/dist/cjs/queries-GhYmoomu.js.map +0 -1
  393. package/dist/cjs/streamAttributes-CJOD7AxG.js.map +0 -1
  394. package/dist/cjs/utils-BsXO-wLi.js.map +0 -1
  395. package/dist/components/p-B4sO9HdX.js +0 -5
  396. package/dist/components/p-B4sO9HdX.js.map +0 -1
  397. package/dist/components/p-C--Voxln.js +0 -5
  398. package/dist/components/p-C--Voxln.js.map +0 -1
  399. package/dist/components/p-CZZALKHT.js +0 -5
  400. package/dist/components/p-CZZALKHT.js.map +0 -1
  401. package/dist/components/p-Cn0vKqIN.js +0 -5
  402. package/dist/components/p-Cn0vKqIN.js.map +0 -1
  403. package/dist/components/p-DH341c7b.js +0 -5
  404. package/dist/components/p-DH341c7b.js.map +0 -1
  405. package/dist/components/p-DjrtwKcK.js +0 -5
  406. package/dist/components/p-DjrtwKcK.js.map +0 -1
  407. package/dist/components/p-Dmc49hX3.js +0 -5
  408. package/dist/components/p-Dmc49hX3.js.map +0 -1
  409. package/dist/components/p-QhlhRt6X.js.map +0 -1
  410. package/dist/components/p-Y8W_BXUk.js +0 -5
  411. package/dist/components/p-Y8W_BXUk.js.map +0 -1
  412. package/dist/components/p-garvKln8.js.map +0 -1
  413. package/dist/components/p-taOlygmc.js.map +0 -1
  414. package/dist/esm/bundle-CZZALKHT.js.map +0 -1
  415. package/dist/esm/multiElementInteractionHandler-C45E8VzE.js.map +0 -1
  416. package/dist/esm/queries-DWjy-LsV.js.map +0 -1
  417. package/dist/esm/streamAttributes-CTs61PCl.js.map +0 -1
  418. package/dist/esm/utils-DJ5FvINs.js.map +0 -1
  419. package/dist/viewer/p-02384d83.entry.js +0 -5
  420. package/dist/viewer/p-02384d83.entry.js.map +0 -1
  421. package/dist/viewer/p-12a673f0.entry.js.map +0 -1
  422. package/dist/viewer/p-49578ec9.entry.js +0 -5
  423. package/dist/viewer/p-49578ec9.entry.js.map +0 -1
  424. package/dist/viewer/p-4c223366.entry.js +0 -5
  425. package/dist/viewer/p-4c223366.entry.js.map +0 -1
  426. package/dist/viewer/p-7m7Vr5V7.js.map +0 -1
  427. package/dist/viewer/p-8774425b.entry.js +0 -5
  428. package/dist/viewer/p-8774425b.entry.js.map +0 -1
  429. package/dist/viewer/p-9c02567d.entry.js +0 -5
  430. package/dist/viewer/p-9c02567d.entry.js.map +0 -1
  431. package/dist/viewer/p-BDy3SLKk.js +0 -5
  432. package/dist/viewer/p-CZZALKHT.js +0 -5
  433. package/dist/viewer/p-CZZALKHT.js.map +0 -1
  434. package/dist/viewer/p-Cju1inFh.js.map +0 -1
  435. package/dist/viewer/p-Cr2EnhS-.js +0 -5
  436. package/dist/viewer/p-Cr2EnhS-.js.map +0 -1
  437. package/dist/viewer/p-UQXG8bCI.js.map +0 -1
  438. package/dist/viewer/p-c2c3579f.entry.js +0 -5
  439. package/dist/viewer/p-d5542b6a.entry.js +0 -5
  440. package/dist/viewer/p-d5542b6a.entry.js.map +0 -1
  441. package/dist/viewer/p-e3981cf8.entry.js.map +0 -1
  442. /package/dist/components/{p-CZgX-9yo.js.map → p-5bk1mHRt.js.map} +0 -0
  443. /package/dist/components/{p-DRGCkSEK.js.map → p-B8530k7R.js.map} +0 -0
  444. /package/dist/components/{p-BKQMbekH.js.map → p-BCuMPvZO.js.map} +0 -0
  445. /package/dist/components/{p-C02XtMl4.js.map → p-BHyxBmg6.js.map} +0 -0
  446. /package/dist/components/{p-O1_Yvjd6.js.map → p-BT9d9jRt.js.map} +0 -0
  447. /package/dist/components/{p-oDn1DcWj.js.map → p-BZDn1Vuv.js.map} +0 -0
  448. /package/dist/components/{p-VEJB73Ei.js.map → p-Bdf4AcJ2.js.map} +0 -0
  449. /package/dist/components/{p-CMdP8O-G.js.map → p-Bx42CNGV.js.map} +0 -0
  450. /package/dist/components/{p-CelQDFR0.js.map → p-C12jtCFb.js.map} +0 -0
  451. /package/dist/components/{p-Dzs4u_ZY.js.map → p-CABws4i9.js.map} +0 -0
  452. /package/dist/components/{p-BqeEZXPn.js.map → p-CPROw2BU.js.map} +0 -0
  453. /package/dist/components/{p-DnVcQAR9.js.map → p-CTi-0-dI.js.map} +0 -0
  454. /package/dist/components/{p-EG7pMA2M.js.map → p-CeZe0Qql.js.map} +0 -0
  455. /package/dist/components/{p-Due5EmBt.js.map → p-Clyxptbp.js.map} +0 -0
  456. /package/dist/components/{p-MnZadXO8.js.map → p-D_h07qsA.js.map} +0 -0
  457. /package/dist/components/{p-DCTZZ5Rd.js.map → p-DjQ6RXWP.js.map} +0 -0
  458. /package/dist/components/{p-CxzyM08j.js.map → p-DyL2wWm6.js.map} +0 -0
  459. /package/dist/components/{p-avWSFTeP.js.map → p-JvS9LLoO.js.map} +0 -0
  460. /package/dist/components/{p-CfTvpqud.js.map → p-KidjtXKE.js.map} +0 -0
  461. /package/dist/components/{p-BC777sCK.js.map → p-UJR-ixsy.js.map} +0 -0
  462. /package/dist/components/{p-mpsCUvSn.js.map → p-_qi2VkC2.js.map} +0 -0
  463. /package/dist/components/{p-CNprIkKd.js.map → p-rDr0x5Z7.js.map} +0 -0
  464. /package/dist/viewer/{p-7b4eec65.entry.js.map → p-293d8f3f.entry.js.map} +0 -0
  465. /package/dist/viewer/{p-510fd2e1.entry.js.map → p-2d2fa147.entry.js.map} +0 -0
  466. /package/dist/viewer/{p-a108a305.entry.js.map → p-2faddbf8.entry.js.map} +0 -0
  467. /package/dist/viewer/{p-aa0359e0.entry.js.map → p-3c5dd716.entry.js.map} +0 -0
  468. /package/dist/viewer/{p-fe434552.entry.js.map → p-45cc095e.entry.js.map} +0 -0
  469. /package/dist/viewer/{p-71c03352.entry.js.map → p-53f6cc59.entry.js.map} +0 -0
  470. /package/dist/viewer/{p-56e39cff.entry.js.map → p-83683307.entry.js.map} +0 -0
  471. /package/dist/viewer/{p-91fca24b.entry.js.map → p-93311f46.entry.js.map} +0 -0
  472. /package/dist/viewer/{p-9312a936.entry.js.map → p-a94b626c.entry.js.map} +0 -0
  473. /package/dist/viewer/{p-82ed4346.entry.js.map → p-ced98004.entry.js.map} +0 -0
  474. /package/dist/viewer/{p-c2454523.entry.js.map → p-ea45c3e9.entry.js.map} +0 -0
  475. /package/dist/viewer/{p-a893a299.entry.js.map → p-ecd594f2.entry.js.map} +0 -0
  476. /package/dist/viewer/{p-03a531d9.entry.js.map → p-ef9437ca.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-viewer-box-query-tool.entry.js","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"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vertex-viewer-box-query-tool.entry.js","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"],"names":[],"mappings":"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"}
@@ -10,9 +10,14 @@ const viewerButtonCss = () => `:host{cursor:pointer}.viewer-button{align-items:c
10
10
  const ViewerButton = class {
11
11
  constructor(hostRef) {
12
12
  registerInstance(this, hostRef);
13
+ /**
14
+ * Accessible name applied to the internal native button. Use this for
15
+ * icon-only buttons or when the slotted content does not provide a name.
16
+ */
17
+ this.ariaLabel = null;
13
18
  }
14
19
  render() {
15
- return (h(Host, { key: 'ad089fc6e38b51cc0bd267c21f034f5cf92787f4' }, h("button", { key: '6c4c11f6ee44645ba5b8e8246dda2a2f7f7ca472', class: "viewer-button" }, h("slot", { key: '17fae4ab960240b4bb6e3fb41bfafec60e3db3f8' }))));
20
+ return (h(Host, { key: '48d5d5322a3a9a0ea1057612fe2a8f1c9bef5171' }, h("button", { key: 'd0e8582256ea5b9a10e33819991e2d6e76271c43', class: "viewer-button", "aria-label": this.ariaLabel }, h("slot", { key: 'cc647426fc0a227fc0aa0e1f49ff65cdedd73f1d' }))));
16
21
  }
17
22
  };
18
23
  ViewerButton.style = viewerButtonCss();
@@ -1 +1 @@
1
- {"file":"vertex-viewer-button_3.entry.js","mappings":";;;;;;;AAAA,MAAM,eAAe,GAAG,MAAM,CAAC,uIAAuI,CAAC;;MCO1J,YAAY,GAAA,MAAA;;;;IAChB,MAAM,GAAA;AACX,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,KAAK,EAAC,eAAe,EAAA,EAC3B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACN,CACJ;;;;;ACdb,MAAM,gBAAgB,GAAG,MAAM,CAAC,ibAAib,CAAC;;MCUrc,aAAa,GAAA,MAAA;AAL1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAA2B,eAAe;AAGnD,QAAA,IAAA,CAAA,SAAS,GAA2B,YAAY;AA2BxD;IAzBQ,MAAM,GAAA;AACX,QAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AAExD,QAAA,QACE,CAAA,CAAA,qBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;gBACxB,cAAc,EAAE,QAAQ,KAAK,KAAK;gBAClC,iBAAiB,EAAE,QAAQ,KAAK,QAAQ;gBACxC,iBAAiB,EAAE,QAAQ,KAAK,QAAQ;gBACxC,eAAe,EAAE,UAAU,KAAK,MAAM;gBACtC,iBAAiB,EAAE,UAAU,KAAK,QAAQ;gBAC1C,gBAAgB,EAAE,UAAU,KAAK,OAAO;AACzC,aAAA,CAAC,EAAA,EAEF,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AACxB,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,KAAK,UAAU;AACvC,gBAAA,UAAU,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY;AAC5C,aAAA,CAAC,EAAA,EAEF,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACc;;;;;AC1C5B,MAAM,qBAAqB,GAAG,MAAM,CAAC,8HAA8H,CAAC;;MCUvJ,kBAAkB,GAAA,MAAA;AAL/B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAOS,QAAA,IAAA,CAAA,SAAS,GAAgC,YAAY;AAc7D;IAZQ,MAAM,GAAA;AACX,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAEA,SAAU,CAAC,OAAO,EAAE;AACzB,gBAAA,UAAU,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY;AAC3C,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,KAAK,UAAU;AACxC,aAAA,CAAC,EAAA,EAEF,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT;;;;;;;","names":["classNames"],"sources":["src/components/viewer-button/viewer-button.css?tag=vertex-viewer-button&encapsulation=shadow","src/components/viewer-button/viewer-button.tsx","src/components/viewer-toolbar/viewer-toolbar.css?tag=vertex-viewer-toolbar&encapsulation=shadow","src/components/viewer-toolbar/viewer-toolbar.tsx","src/components/viewer-toolbar-group/viewer-toolbar-group.css?tag=vertex-viewer-toolbar-group&encapsulation=shadow","src/components/viewer-toolbar-group/viewer-toolbar-group.tsx"],"sourcesContent":[":host {\n cursor: pointer;\n}\n\n.viewer-button {\n align-items: center;\n background: none;\n border: none;\n color: inherit;\n cursor: inherit;\n display: flex;\n padding: 0;\n}\n","import { Component, h, Host } from '@stencil/core';\n\n@Component({\n tag: 'vertex-viewer-button',\n styleUrl: 'viewer-button.css',\n shadow: true,\n})\nexport class ViewerButton {\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <button class=\"viewer-button\">\n <slot></slot>\n </button>\n </Host>\n );\n }\n}\n",".layer {\n padding: 1rem;\n display: flex;\n}\n\n.layer.position-top {\n align-items: flex-start;\n}\n\n.layer.position-middle {\n align-items: center;\n}\n\n.layer.position-bottom {\n align-items: flex-end;\n}\n\n.layer.position-left {\n justify-content: flex-start;\n}\n\n.layer.position-center {\n justify-content: center;\n}\n\n.layer.position-right {\n justify-content: flex-end;\n}\n\n.inner {\n display: flex;\n}\n\n.inner.vertical {\n flex-direction: column;\n}\n\n.inner.horizonal {\n flex-direction: row;\n}\n\n::slotted(*) {\n pointer-events: initial;\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport classname from 'classnames';\n\nimport { ViewerToolbarDirection, ViewerToolbarPlacement } from './types';\n\n@Component({\n tag: 'vertex-viewer-toolbar',\n styleUrl: 'viewer-toolbar.css',\n shadow: true,\n})\nexport class ViewerToolbar {\n /**\n * Specifies where the toolbar is positioned.\n */\n @Prop()\n public placement: ViewerToolbarPlacement = 'bottom-center';\n\n @Prop()\n public direction: ViewerToolbarDirection = 'horizontal';\n\n public render(): h.JSX.IntrinsicElements {\n const [vertical, horizontal] = this.placement.split('-');\n\n return (\n <vertex-viewer-layer\n class={classname('layer', {\n 'position-top': vertical === 'top',\n 'position-middle': vertical === 'middle',\n 'position-bottom': vertical === 'bottom',\n 'position-left': horizontal === 'left',\n 'position-center': horizontal === 'center',\n 'position-right': horizontal === 'right',\n })}\n >\n <div\n class={classname('inner', {\n vertical: this.direction === 'vertical',\n horizontal: this.direction === 'horizontal',\n })}\n >\n <slot></slot>\n </div>\n </vertex-viewer-layer>\n );\n }\n}\n",".inner {\n display: flex;\n align-items: center;\n margin: auto;\n}\n\n.inner.vertical {\n flex-direction: column;\n}\n\n.inner.horizontal {\n flex-direction: row;\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n\nimport { ViewerToolbarGroupDirection } from './types';\n\n@Component({\n tag: 'vertex-viewer-toolbar-group',\n styleUrl: 'viewer-toolbar-group.css',\n shadow: true,\n})\nexport class ViewerToolbarGroup {\n @Prop()\n public direction: ViewerToolbarGroupDirection = 'horizontal';\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <div\n class={classNames('inner', {\n horizontal: this.direction === 'horizontal',\n vertical: this.direction === 'vertical',\n })}\n >\n <slot></slot>\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"vertex-viewer-button_3.entry.js","mappings":";;;;;;;AAAA,MAAM,eAAe,GAAG,MAAM,CAAC,uIAAuI,CAAC;;MCO1J,YAAY,GAAA,MAAA;AALzB,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;;AAGG;AAEI,QAAA,IAAA,CAAA,SAAS,GAAkB,IAAI;AAWvC;IATQ,MAAM,GAAA;QACX,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,QAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAQ,KAAK,EAAC,eAAe,EAAA,YAAA,EAAa,IAAI,CAAC,SAAS,EAAA,EACtD,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACN,CACJ;;;;;ACrBb,MAAM,gBAAgB,GAAG,MAAM,CAAC,ibAAib,CAAC;;MCUrc,aAAa,GAAA,MAAA;AAL1B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAME;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAA2B,eAAe;AAGnD,QAAA,IAAA,CAAA,SAAS,GAA2B,YAAY;AA2BxD;IAzBQ,MAAM,GAAA;AACX,QAAA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;AAExD,QAAA,QACE,CAAA,CAAA,qBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;gBACxB,cAAc,EAAE,QAAQ,KAAK,KAAK;gBAClC,iBAAiB,EAAE,QAAQ,KAAK,QAAQ;gBACxC,iBAAiB,EAAE,QAAQ,KAAK,QAAQ;gBACxC,eAAe,EAAE,UAAU,KAAK,MAAM;gBACtC,iBAAiB,EAAE,UAAU,KAAK,QAAQ;gBAC1C,gBAAgB,EAAE,UAAU,KAAK,OAAO;AACzC,aAAA,CAAC,EAAA,EAEF,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AACxB,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,KAAK,UAAU;AACvC,gBAAA,UAAU,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY;AAC5C,aAAA,CAAC,EAAA,EAEF,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,CACc;;;;;AC1C5B,MAAM,qBAAqB,GAAG,MAAM,CAAC,8HAA8H,CAAC;;MCUvJ,kBAAkB,GAAA,MAAA;AAL/B,IAAA,WAAA,CAAA,OAAA,EAAA;;AAOS,QAAA,IAAA,CAAA,SAAS,GAAgC,YAAY;AAc7D;IAZQ,MAAM,GAAA;AACX,QAAA,QACE,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAEA,SAAU,CAAC,OAAO,EAAE;AACzB,gBAAA,UAAU,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY;AAC3C,gBAAA,QAAQ,EAAE,IAAI,CAAC,SAAS,KAAK,UAAU;AACxC,aAAA,CAAC,EAAA,EAEF,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT;;;;;;;","names":["classNames"],"sources":["src/components/viewer-button/viewer-button.css?tag=vertex-viewer-button&encapsulation=shadow","src/components/viewer-button/viewer-button.tsx","src/components/viewer-toolbar/viewer-toolbar.css?tag=vertex-viewer-toolbar&encapsulation=shadow","src/components/viewer-toolbar/viewer-toolbar.tsx","src/components/viewer-toolbar-group/viewer-toolbar-group.css?tag=vertex-viewer-toolbar-group&encapsulation=shadow","src/components/viewer-toolbar-group/viewer-toolbar-group.tsx"],"sourcesContent":[":host {\n cursor: pointer;\n}\n\n.viewer-button {\n align-items: center;\n background: none;\n border: none;\n color: inherit;\n cursor: inherit;\n display: flex;\n padding: 0;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'vertex-viewer-button',\n styleUrl: 'viewer-button.css',\n shadow: true,\n})\nexport class ViewerButton {\n /**\n * Accessible name applied to the internal native button. Use this for\n * icon-only buttons or when the slotted content does not provide a name.\n */\n @Prop({ attribute: 'aria-label' })\n public ariaLabel: string | null = null;\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <button class=\"viewer-button\" aria-label={this.ariaLabel}>\n <slot></slot>\n </button>\n </Host>\n );\n }\n}\n",".layer {\n padding: 1rem;\n display: flex;\n}\n\n.layer.position-top {\n align-items: flex-start;\n}\n\n.layer.position-middle {\n align-items: center;\n}\n\n.layer.position-bottom {\n align-items: flex-end;\n}\n\n.layer.position-left {\n justify-content: flex-start;\n}\n\n.layer.position-center {\n justify-content: center;\n}\n\n.layer.position-right {\n justify-content: flex-end;\n}\n\n.inner {\n display: flex;\n}\n\n.inner.vertical {\n flex-direction: column;\n}\n\n.inner.horizonal {\n flex-direction: row;\n}\n\n::slotted(*) {\n pointer-events: initial;\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport classname from 'classnames';\n\nimport { ViewerToolbarDirection, ViewerToolbarPlacement } from './types';\n\n@Component({\n tag: 'vertex-viewer-toolbar',\n styleUrl: 'viewer-toolbar.css',\n shadow: true,\n})\nexport class ViewerToolbar {\n /**\n * Specifies where the toolbar is positioned.\n */\n @Prop()\n public placement: ViewerToolbarPlacement = 'bottom-center';\n\n @Prop()\n public direction: ViewerToolbarDirection = 'horizontal';\n\n public render(): h.JSX.IntrinsicElements {\n const [vertical, horizontal] = this.placement.split('-');\n\n return (\n <vertex-viewer-layer\n class={classname('layer', {\n 'position-top': vertical === 'top',\n 'position-middle': vertical === 'middle',\n 'position-bottom': vertical === 'bottom',\n 'position-left': horizontal === 'left',\n 'position-center': horizontal === 'center',\n 'position-right': horizontal === 'right',\n })}\n >\n <div\n class={classname('inner', {\n vertical: this.direction === 'vertical',\n horizontal: this.direction === 'horizontal',\n })}\n >\n <slot></slot>\n </div>\n </vertex-viewer-layer>\n );\n }\n}\n",".inner {\n display: flex;\n align-items: center;\n margin: auto;\n}\n\n.inner.vertical {\n flex-direction: column;\n}\n\n.inner.horizontal {\n flex-direction: row;\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n\nimport { ViewerToolbarGroupDirection } from './types';\n\n@Component({\n tag: 'vertex-viewer-toolbar-group',\n styleUrl: 'viewer-toolbar-group.css',\n shadow: true,\n})\nexport class ViewerToolbarGroup {\n @Prop()\n public direction: ViewerToolbarGroupDirection = 'horizontal';\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <div\n class={classNames('inner', {\n horizontal: this.direction === 'horizontal',\n vertical: this.direction === 'vertical',\n })}\n >\n <slot></slot>\n </div>\n );\n }\n}\n"],"version":3}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { r as registerInstance, h } from './index-CCVkga9Q.js';
5
5
 
6
- const viewerDefaultToolbarCss = () => `: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)}`;
6
+ const viewerDefaultToolbarCss = () => `: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)}`;
7
7
 
8
8
  const ViewerDefaultToolbar = class {
9
9
  constructor(hostRef) {
@@ -27,7 +27,7 @@ const ViewerDefaultToolbar = class {
27
27
  this.animationMs = 1000;
28
28
  }
29
29
  render() {
30
- return (h("vertex-viewer-toolbar", { key: '349bf96991062154e2e7666bbbecd3d66310e69f', placement: this.placement, direction: this.direction }, h("vertex-viewer-toolbar-group", { key: '6982b3cb19276e09484c52d8baaa825a7339f371', class: "group", direction: this.direction, "data-direction": this.direction }, h("vertex-viewer-button", { key: '77e0f4332b4997c433d2f28b5b9917cc9bea9a12', class: "group-item btn", "data-testid": "fit-all-btn", onClick: () => this.viewAll() }, h("vertex-viewer-icon", { key: '75f085b6c0443ba658e795f74a579cf70e1af2da', class: "icon", name: "fit-all", size: "md" })))));
30
+ return (h("vertex-viewer-toolbar", { key: '349bf96991062154e2e7666bbbecd3d66310e69f', placement: this.placement, direction: this.direction }, h("vertex-viewer-toolbar-group", { key: '6982b3cb19276e09484c52d8baaa825a7339f371', class: "group", direction: this.direction, "data-direction": this.direction }, h("vertex-viewer-button", { key: 'f7831cc2d418cd77b05493fd0e657b21f300648c', "aria-label": "Fit all", class: "group-item btn", "data-testid": "fit-all-btn", onClick: () => this.viewAll() }, h("vertex-viewer-icon", { key: 'adaa5a960e61b8b931634c350d3b1ef233243886', class: "icon", name: "fit-all", size: "md" })))));
31
31
  }
32
32
  async viewAll() {
33
33
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-viewer-default-toolbar.entry.js","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"],"names":[],"mappings":";;;;;AAAA,MAAM,uBAAuB,GAAG,MAAM,CAAC,siCAAsiC,CAAC;;MCUjkC,oBAAoB,GAAA,MAAA;AALjC,IAAA,WAAA,CAAA,OAAA,EAAA;;AAcE;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAA2B,eAAe;AAE1D;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAAgC,YAAY;AAE5D;;;AAGG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK;AAEjC;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI;AAgC1B;IA9BQ,MAAM,GAAA;QACX,QACE,CAAA,CAAA,uBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAA,EAEzB,CAAA,CAAA,6BAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,OAAO,EACb,SAAS,EAAE,IAAI,CAAC,SAAS,EAAA,gBAAA,EACT,IAAI,CAAC,SAAS,EAAA,EAE9B,CAAA,CAAA,sBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,gBAAgB,EAAA,aAAA,EACV,aAAa,EACzB,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,EAAA,EAE7B,CAAA,CAAA,oBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAoB,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAA,CAAG,CACvC,CACK,CACR;;AAIpB,IAAA,MAAM,OAAO,GAAA;;AACnB,QAAA,MAAM,KAAK,GAAG,OAAM,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAA;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC;AACrB,cAAE;cACA,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,MAAM,EAAA,CAAG,OAAO,EAAA,CAAG,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;;;;;;;"}
1
+ {"version":3,"file":"vertex-viewer-default-toolbar.entry.js","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"],"names":[],"mappings":";;;;;AAAA,MAAM,uBAAuB,GAAG,MAAM,CAAC,kiCAAkiC,CAAC;;MCU7jC,oBAAoB,GAAA,MAAA;AALjC,IAAA,WAAA,CAAA,OAAA,EAAA;;AAcE;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAA2B,eAAe;AAE1D;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAAgC,YAAY;AAE5D;;;AAGG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK;AAEjC;;AAEG;AAEI,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI;AAiC1B;IA/BQ,MAAM,GAAA;QACX,QACE,CAAA,CAAA,uBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,SAAS,EAAE,IAAI,CAAC,SAAS,EAAA,EAEzB,CAAA,CAAA,6BAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAC,OAAO,EACb,SAAS,EAAE,IAAI,CAAC,SAAS,EAAA,gBAAA,EACT,IAAI,CAAC,SAAS,EAAA,EAE9B,CAAA,CAAA,sBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,YAAA,EACa,SAAS,EACpB,KAAK,EAAC,gBAAgB,iBACV,aAAa,EACzB,OAAO,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,EAAA,EAE7B,CAAA,CAAA,oBAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAoB,KAAK,EAAC,MAAM,EAAC,IAAI,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAA,CAAG,CACvC,CACK,CACR;;AAIpB,IAAA,MAAM,OAAO,GAAA;;AACnB,QAAA,MAAM,KAAK,GAAG,OAAM,CAAA,EAAA,GAAA,IAAI,CAAC,MAAM,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE,CAAA;AACxC,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC;AACrB,cAAE;cACA,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE;AACtC,QAAA,KAAK,KAAA,IAAA,IAAL,KAAK,KAAA,MAAA,GAAA,MAAA,GAAL,KAAK,CAAE,MAAM,EAAA,CAAG,OAAO,EAAA,CAAG,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;;;;;;;"}
@@ -2,14 +2,14 @@
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-CCVkga9Q.js';
5
- import { v as vector3, q as quaternion, m as matrix4, h as euler } from './bundle-CZZALKHT.js';
5
+ import { v as vector3, q as quaternion, m as matrix4, h as euler } from './bundle-2UsvOTHJ.js';
6
6
  import { o as objects } from './bundle-D9AxqWtI.js';
7
- import { M as MultiElementInteractionHandler } from './multiElementInteractionHandler-C45E8VzE.js';
8
- import './streamAttributes-CTs61PCl.js';
7
+ import { M as MultiElementInteractionHandler } from './multiElementInteractionHandler-3tE3OPpw.js';
8
+ import './streamAttributes-BW9JzMeG.js';
9
9
  import './entities-BAhfr1Nx.js';
10
- import { V as Viewport } from './viewport-D90kzsD7.js';
10
+ import { V as Viewport } from './viewport-CHtidaFL.js';
11
11
  import './_commonjsHelpers-CG9AChtV.js';
12
- import './dom-Bbf2HAst.js';
12
+ import './dom-DaP9SiyY.js';
13
13
  import './bundle-CG6SJT94.js';
14
14
 
15
15
  const viewerDomElementCss = () => `:host{position:absolute;pointer-events:none;visibility:hidden}:host([hydrated]){visibility:hidden}:host(.ready){visibility:inherit}:host(:not([interactions-off]))>*{pointer-events:auto}`;
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, h, H as Host } from './index-CCVkga9Q.js';
5
- import { v as vector3, q as quaternion, m as matrix4, h as euler } from './bundle-CZZALKHT.js';
5
+ import { v as vector3, q as quaternion, m as matrix4, h as euler } from './bundle-2UsvOTHJ.js';
6
6
  import { o as objects } from './bundle-D9AxqWtI.js';
7
7
  import './_commonjsHelpers-CG9AChtV.js';
8
8
 
@@ -2,16 +2,16 @@
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
4
  import { r as registerInstance, h, H as Host, a as getElement } from './index-CCVkga9Q.js';
5
- import { v as vector3, m as matrix4, q as quaternion, r as ray, a as angle } from './bundle-CZZALKHT.js';
5
+ import { v as vector3, m as matrix4, q as quaternion, r as ray, a as angle } from './bundle-2UsvOTHJ.js';
6
6
  import { w as writeDOM, r as readDOM } from './stencil-BV-7pO4q.js';
7
- import { M as MeshPoints, R as ReglComponent, r as regl, s as shapeBuilder, T as TriangleMesh, c as computeArrowNdcValues, a as Mesh, A as AxisLine, b as axisPositions } from './regl-component-zzdsBise.js';
7
+ import { M as MeshPoints, R as ReglComponent, r as regl, s as shapeBuilder, T as TriangleMesh, c as computeArrowNdcValues, a as Mesh, A as AxisLine, b as axisPositions } from './regl-component-B1_h3_s8.js';
8
8
  import './_commonjsHelpers-CG9AChtV.js';
9
9
  import './bundle-D9AxqWtI.js';
10
- import './util-DUjEw5Kh.js';
11
- import './streamAttributes-CTs61PCl.js';
10
+ import './util-CMPFqnEv.js';
11
+ import './streamAttributes-BW9JzMeG.js';
12
12
  import './bundle-CG6SJT94.js';
13
13
  import './entities-BAhfr1Nx.js';
14
- import './viewport-D90kzsD7.js';
14
+ import './viewport-CHtidaFL.js';
15
15
 
16
16
  function parseCssColorValue(styles, property) {
17
17
  return styles.getPropertyValue(property).trim().replace(/["']*/g, '');
@@ -2,11 +2,11 @@
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
4
  import { h, r as registerInstance, c as createEvent, H as Host, a as getElement } from './index-CCVkga9Q.js';
5
- import { b as getWindowDevicePixelRatio, g as getMouseClientPosition } from './dom-Bbf2HAst.js';
5
+ import { b as getWindowDevicePixelRatio, g as getMouseClientPosition } from './dom-DaP9SiyY.js';
6
6
  import { w as writeDOM } from './stencil-BV-7pO4q.js';
7
7
  import { g as getMarkupBoundingClientRect } from './dom-Bg-uS9BH.js';
8
- import { p as point, e as dimensions, g as rectangle, a as angle } from './bundle-CZZALKHT.js';
9
- import { i as isVertexViewerArrowMarkup, a as isVertexViewerCircleMarkup, b as isVertexViewerFreeformMarkup, p as parsePoint, c as arrowheadPointsToPolygonPoints, d as arrowheadPointsToPathPoints, e as arrowheadPointsToHashPoints, f as arrowheadPointsToCirclePoints, g as createLineAnchorStylePoints, h as parseBounds, j as parsePoints } from './utils-DJ5FvINs.js';
8
+ import { p as point, e as dimensions, g as rectangle, a as angle } from './bundle-2UsvOTHJ.js';
9
+ import { i as isVertexViewerArrowMarkup, a as isVertexViewerCircleMarkup, b as isVertexViewerFreeformMarkup, p as parsePoint, c as arrowheadPointsToPolygonPoints, d as arrowheadPointsToPathPoints, e as arrowheadPointsToHashPoints, f as arrowheadPointsToCirclePoints, g as createLineAnchorStylePoints, h as parseBounds, j as parsePoints } from './utils-c-mcLgsj.js';
10
10
  import { c as classname } from './index-DI7z7TKn.js';
11
11
  import './_commonjsHelpers-CG9AChtV.js';
12
12
 
@@ -3,13 +3,13 @@
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-CCVkga9Q.js';
5
5
  import { s as stampTemplateWithId } from './templates-DRh4_Z-g.js';
6
- import { F as FreeformMarkup, C as CircleMarkup, A as ArrowMarkup } from './markup-y96-uR-l.js';
7
- import { b as isVertexViewerFreeformMarkup, a as isVertexViewerCircleMarkup, i as isVertexViewerArrowMarkup } from './utils-DJ5FvINs.js';
8
- import './bundle-CZZALKHT.js';
6
+ import { F as FreeformMarkup, C as CircleMarkup, A as ArrowMarkup } from './markup-B58g75Hr.js';
7
+ import { b as isVertexViewerFreeformMarkup, a as isVertexViewerCircleMarkup, i as isVertexViewerArrowMarkup } from './utils-c-mcLgsj.js';
8
+ import './bundle-2UsvOTHJ.js';
9
9
  import './bundle-D9AxqWtI.js';
10
10
  import './_commonjsHelpers-CG9AChtV.js';
11
11
 
12
- const viewerMarkupToolCss = () => `:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}:host([elevated=""]){z-index:100}`;
12
+ const viewerMarkupToolCss = () => `:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}:host([elevated='']){z-index:100}`;
13
13
 
14
14
  const ViewerMarkupTool = class {
15
15
  constructor(hostRef) {
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-viewer-markup-tool.entry.js","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"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vertex-viewer-markup-tool.entry.js","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"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, h, H as Host, a as getElement } from './index-CCVkga9Q.js';
5
- import { p as point } from './bundle-CZZALKHT.js';
5
+ import { p as point } from './bundle-2UsvOTHJ.js';
6
6
  import { s as stampTemplateWithId } from './templates-DRh4_Z-g.js';
7
- import { A as ArrowMarkup, C as CircleMarkup, F as FreeformMarkup } from './markup-y96-uR-l.js';
8
- import { i as isVertexViewerArrowMarkup, a as isVertexViewerCircleMarkup, b as isVertexViewerFreeformMarkup } from './utils-DJ5FvINs.js';
7
+ import { A as ArrowMarkup, C as CircleMarkup, F as FreeformMarkup } from './markup-B58g75Hr.js';
8
+ import { i as isVertexViewerArrowMarkup, a as isVertexViewerCircleMarkup, b as isVertexViewerFreeformMarkup } from './utils-c-mcLgsj.js';
9
9
  import './bundle-D9AxqWtI.js';
10
10
  import './_commonjsHelpers-CG9AChtV.js';
11
11
 
@@ -1 +1 @@
1
- {"version":3,"file":"vertex-viewer-markup.entry.js","sources":["src/components/viewer-markup/viewer-markup.css?tag=vertex-viewer-markup&encapsulation=shadow","src/components/viewer-markup/viewer-markup.tsx"],"sourcesContent":[":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n MarkupInteraction,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\nimport { ViewerMarkupToolType } from '../viewer-markup-tool/viewer-markup-tool';\n\n@Component({\n tag: 'vertex-viewer-markup',\n styleUrl: 'viewer-markup.css',\n shadow: true,\n})\nexport class ViewerMarkup {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup to perform.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * If `true`, disables adding or editing of markup through user\n * interaction.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup. If nested within a <vertex-viewer>,\n * this property will be populated automatically.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The ID of the markup that is selected.\n */\n @Prop({ mutable: true })\n public selectedMarkupId?: string;\n\n /**\n * Indicates if new markup should be automatically selected.\n */\n @Prop()\n public selectNew = false;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * Dispatched when a new markup is added, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupAdded!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when an existing piece of markup is changed, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when a markup is removed, either through user\n * interaction or programmatically.\n */\n @Event()\n public markupRemoved!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when markup selection changes. Will either be the\n * selected element or `undefined` indicating that selection\n * was cleared.\n */\n @Event()\n public markupSelectionChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n >;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private toSelectMarkupId?: string;\n\n @State()\n private pointerDownPosition?: Point.Point;\n\n protected disconnectedCallback(): void {\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n }\n\n /**\n * Adds a new markup as a child to this component. A new markup\n * component will be created from the template specified by\n * `arrow-template-id`, `circle-template-id`, or if undefined\n * a default element will be created.\n *\n * @param markup The markup to add.\n * @returns The markup element that was created.\n * @see {@link arrowTemplateId}\n * @see {@link circleTemplateId}\n */\n @Method()\n public async addMarkup(\n markup: Markup,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n > {\n if (markup instanceof ArrowMarkup) {\n const { start, end, id } = markup;\n\n const el = this.createArrowMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.start = start;\n el.end = end;\n el.startLineAnchorStyle = this.startLineAnchorStyle;\n el.endLineAnchorStyle = this.endLineAnchorStyle;\n\n return el;\n } else if (markup instanceof CircleMarkup) {\n const { bounds, id } = markup;\n\n const el = this.createCircleMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.bounds = bounds;\n\n return el;\n } else if (markup instanceof FreeformMarkup) {\n const { bounds, points, id } = markup;\n\n const el = this.createFreeformMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.points = points;\n el.bounds = bounds;\n\n return el;\n } else {\n throw new Error(`Cannot add markup. Unknown type '${markup}'.`);\n }\n }\n\n /**\n * Removes a markup with the given ID, and returns the HTML element\n * associated to the markup. Returns `undefined` if no markup is\n * found.\n *\n * @param id The ID of the markup to remove.\n * @returns The markup element, or undefined.\n */\n @Method()\n public async removeMarkup(\n id: string,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElement(id);\n\n if (markup != null) {\n markup.remove();\n this.markupRemoved.emit(markup);\n }\n\n return markup;\n }\n\n /**\n * Returns a list of markup elements that are children of this component.\n *\n * @returns A list of all markups.\n * @see {@link getMarkupElement}\n */\n @Method()\n public async getMarkupElements(): Promise<\n Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >\n > {\n return Array.from(this.hostEl.children).filter(\n (e) =>\n isVertexViewerArrowMarkup(e) ||\n isVertexViewerCircleMarkup(e) ||\n isVertexViewerFreeformMarkup(e),\n ) as Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n }\n\n /**\n * Returns the markup element associated to the given ID.\n *\n * @param id The ID of the markup element to return.\n * @returns A markup element, or `undefined`.\n * @see {@link getMarkupElements}\n */\n @Method()\n public async getMarkupElement(\n id: string,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElements();\n return markup.find((el) => el.id === id);\n }\n\n /**\n * @ignore\n */\n @Watch('selectedMarkupId')\n protected async handleSelectedMarkupIdChanged(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => {\n if (m.id === this.selectedMarkupId) {\n m.mode = 'edit';\n this.markupSelectionChanged.emit(m);\n } else {\n m.mode = '';\n }\n });\n\n if (this.selectedMarkupId == null) {\n this.markupSelectionChanged.emit(undefined);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('freeformTemplateId')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n @Watch('offset')\n @Watch('scale')\n protected async handleViewerChanged(\n newViewer: HTMLVertexViewerElement | undefined,\n ): Promise<void> {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n }\n\n /**\n * @ignore\n */\n @Watch('disabled')\n protected handleDisabledChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('startLineAnchorStyle')\n protected async handleStartLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n if (selectedArrow != null) {\n selectedArrow.startLineAnchorStyle = this.startLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('endLineAnchorStyle')\n protected async handleEndLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n\n if (selectedArrow != null) {\n selectedArrow.endLineAnchorStyle = this.endLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('markupEnd')\n protected async handleMarkupEnd(event: CustomEvent<Markup>): Promise<void> {\n const e = event as CustomEvent<Markup>;\n const el = await this.addMarkup(e.detail);\n if (typeof el.componentOnReady === 'function') {\n await el.componentOnReady();\n }\n if (this.selectNew) {\n this.selectedMarkupId = e.detail.id;\n }\n this.getMarkupTool()?.reset();\n }\n\n /**\n * @ignore\n */\n @Listen('interactionEnd')\n protected async handleMarkupUpdated(\n event: CustomEvent<MarkupInteraction>,\n ): Promise<void> {\n const e = event as CustomEvent<MarkupInteraction>;\n\n // Do not emit the markupChanged event if the markup was just created\n if (!e.detail.newlyCreatedMarkup) {\n this.markupChanged.emit(e.detail.markup);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('pointerdown')\n protected async handleMarkupPointerDown(event: PointerEvent): Promise<void> {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (markup?.id != null && markup?.id !== '') {\n this.toSelectMarkupId = el.id;\n }\n this.pointerDownPosition = Point.create(event.clientX, event.clientY);\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <slot onSlotchange={this.handleSlotChange} />\n </Host>\n );\n }\n\n private handleSlotChange = (): void => {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY),\n ) > 2\n ) {\n this.toSelectMarkupId = undefined;\n }\n };\n\n private handlePointerUp = async (event: PointerEvent): Promise<void> => {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (\n markup?.id != null &&\n markup.id !== '' &&\n markup.id === this.toSelectMarkupId\n ) {\n this.selectedMarkupId = el.id;\n } else if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY),\n ) <= 2\n ) {\n this.selectedMarkupId = undefined;\n }\n this.toSelectMarkupId = undefined;\n this.pointerDownPosition = undefined;\n }\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n };\n\n private appendMarkupElement(\n el:\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement,\n ):\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement {\n this.updatePropsOnMarkup(el);\n this.hostEl.appendChild(el);\n this.markupAdded.emit(el);\n\n return el;\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`,\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`,\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`,\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private async updatePropsOnMarkups(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => this.updatePropsOnMarkup(m));\n }\n\n private updatePropsOnMarkup(\n element:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement,\n ): void {\n element.viewer = this.viewer;\n element.originatingViewport = this.originatingViewport;\n element.centeringBehavior = this.centeringBehavior;\n element.offset = this.offset;\n element.scale = this.scale;\n element.classList.add('viewer-markup__markup');\n }\n\n private updatePropsOnMarkupTool(): void {\n const tool = this.getMarkupTool();\n if (tool != null) {\n tool.disabled = this.disabled;\n tool.arrowTemplateId = this.arrowTemplateId;\n tool.circleTemplateId = this.circleTemplateId;\n tool.freeformTemplateId = this.freeformTemplateId;\n tool.tool = this.tool;\n tool.viewer = this.viewer;\n tool.startLineAnchorStyle = this.startLineAnchorStyle;\n tool.endLineAnchorStyle = this.endLineAnchorStyle;\n tool.originatingViewport = this.originatingViewport;\n tool.centeringBehavior = this.centeringBehavior;\n tool.offset = this.offset;\n tool.scale = this.scale;\n }\n }\n\n private getMarkupTool(): HTMLVertexViewerMarkupToolElement | undefined {\n return this.hostEl.querySelector('vertex-viewer-markup-tool') as\n | HTMLVertexViewerMarkupToolElement\n | undefined;\n }\n\n private async getSelectedArrowMarkup(): Promise<\n HTMLVertexViewerMarkupArrowElement | undefined\n > {\n if (this.selectedMarkupId != null) {\n const selected = await this.getMarkupElement(this.selectedMarkupId);\n\n return isVertexViewerArrowMarkup(selected) ? selected : undefined;\n }\n }\n}\n"],"names":["Point"],"mappings":"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"}
1
+ {"version":3,"file":"vertex-viewer-markup.entry.js","sources":["src/components/viewer-markup/viewer-markup.css?tag=vertex-viewer-markup&encapsulation=shadow","src/components/viewer-markup/viewer-markup.tsx"],"sourcesContent":[":host {\n display: block;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n MarkupInteraction,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\nimport { ViewerMarkupToolType } from '../viewer-markup-tool/viewer-markup-tool';\n\n@Component({\n tag: 'vertex-viewer-markup',\n styleUrl: 'viewer-markup.css',\n shadow: true,\n})\nexport class ViewerMarkup {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup to perform.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * If `true`, disables adding or editing of markup through user\n * interaction.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup. If nested within a <vertex-viewer>,\n * this property will be populated automatically.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The ID of the markup that is selected.\n */\n @Prop({ mutable: true })\n public selectedMarkupId?: string;\n\n /**\n * Indicates if new markup should be automatically selected.\n */\n @Prop()\n public selectNew = false;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * Dispatched when a new markup is added, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupAdded!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when an existing piece of markup is changed, either through user interaction\n * or programmatically.\n */\n @Event()\n public markupChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when a markup is removed, either through user\n * interaction or programmatically.\n */\n @Event()\n public markupRemoved!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n\n /**\n * Dispatched when markup selection changes. Will either be the\n * selected element or `undefined` indicating that selection\n * was cleared.\n */\n @Event()\n public markupSelectionChanged!: EventEmitter<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n >;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private toSelectMarkupId?: string;\n\n @State()\n private pointerDownPosition?: Point.Point;\n\n protected disconnectedCallback(): void {\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n }\n\n /**\n * Adds a new markup as a child to this component. A new markup\n * component will be created from the template specified by\n * `arrow-template-id`, `circle-template-id`, or if undefined\n * a default element will be created.\n *\n * @param markup The markup to add.\n * @returns The markup element that was created.\n * @see {@link arrowTemplateId}\n * @see {@link circleTemplateId}\n */\n @Method()\n public async addMarkup(\n markup: Markup,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n > {\n if (markup instanceof ArrowMarkup) {\n const { start, end, id } = markup;\n\n const el = this.createArrowMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.start = start;\n el.end = end;\n el.startLineAnchorStyle = this.startLineAnchorStyle;\n el.endLineAnchorStyle = this.endLineAnchorStyle;\n\n return el;\n } else if (markup instanceof CircleMarkup) {\n const { bounds, id } = markup;\n\n const el = this.createCircleMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.bounds = bounds;\n\n return el;\n } else if (markup instanceof FreeformMarkup) {\n const { bounds, points, id } = markup;\n\n const el = this.createFreeformMarkupElement();\n this.appendMarkupElement(el);\n el.id = id;\n el.points = points;\n el.bounds = bounds;\n\n return el;\n } else {\n throw new Error(`Cannot add markup. Unknown type '${markup}'.`);\n }\n }\n\n /**\n * Removes a markup with the given ID, and returns the HTML element\n * associated to the markup. Returns `undefined` if no markup is\n * found.\n *\n * @param id The ID of the markup to remove.\n * @returns The markup element, or undefined.\n */\n @Method()\n public async removeMarkup(\n id: string,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElement(id);\n\n if (markup != null) {\n markup.remove();\n this.markupRemoved.emit(markup);\n }\n\n return markup;\n }\n\n /**\n * Returns a list of markup elements that are children of this component.\n *\n * @returns A list of all markups.\n * @see {@link getMarkupElement}\n */\n @Method()\n public async getMarkupElements(): Promise<\n Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >\n > {\n return Array.from(this.hostEl.children).filter(\n (e) =>\n isVertexViewerArrowMarkup(e) ||\n isVertexViewerCircleMarkup(e) ||\n isVertexViewerFreeformMarkup(e),\n ) as Array<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n >;\n }\n\n /**\n * Returns the markup element associated to the given ID.\n *\n * @param id The ID of the markup element to return.\n * @returns A markup element, or `undefined`.\n * @see {@link getMarkupElements}\n */\n @Method()\n public async getMarkupElement(\n id: string,\n ): Promise<\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement\n | undefined\n > {\n const markup = await this.getMarkupElements();\n return markup.find((el) => el.id === id);\n }\n\n /**\n * @ignore\n */\n @Watch('selectedMarkupId')\n protected async handleSelectedMarkupIdChanged(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => {\n if (m.id === this.selectedMarkupId) {\n m.mode = 'edit';\n this.markupSelectionChanged.emit(m);\n } else {\n m.mode = '';\n }\n });\n\n if (this.selectedMarkupId == null) {\n this.markupSelectionChanged.emit(undefined);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('freeformTemplateId')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n @Watch('offset')\n @Watch('scale')\n protected async handleViewerChanged(\n newViewer: HTMLVertexViewerElement | undefined,\n ): Promise<void> {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n }\n\n /**\n * @ignore\n */\n @Watch('disabled')\n protected handleDisabledChanged(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n @Watch('startLineAnchorStyle')\n protected async handleStartLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n if (selectedArrow != null) {\n selectedArrow.startLineAnchorStyle = this.startLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('endLineAnchorStyle')\n protected async handleEndLineAnchorStyleChanged(): Promise<void> {\n this.updatePropsOnMarkupTool();\n\n // If a piece of arrow markup is currently selected, then update its anchor style\n const selectedArrow = await this.getSelectedArrowMarkup();\n\n if (selectedArrow != null) {\n selectedArrow.endLineAnchorStyle = this.endLineAnchorStyle;\n this.markupChanged.emit(selectedArrow);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('markupEnd')\n protected async handleMarkupEnd(event: CustomEvent<Markup>): Promise<void> {\n const e = event as CustomEvent<Markup>;\n const el = await this.addMarkup(e.detail);\n if (typeof el.componentOnReady === 'function') {\n await el.componentOnReady();\n }\n if (this.selectNew) {\n this.selectedMarkupId = e.detail.id;\n }\n this.getMarkupTool()?.reset();\n }\n\n /**\n * @ignore\n */\n @Listen('interactionEnd')\n protected async handleMarkupUpdated(\n event: CustomEvent<MarkupInteraction>,\n ): Promise<void> {\n const e = event as CustomEvent<MarkupInteraction>;\n\n // Do not emit the markupChanged event if the markup was just created\n if (!e.detail.newlyCreatedMarkup) {\n this.markupChanged.emit(e.detail.markup);\n }\n }\n\n /**\n * @ignore\n */\n @Listen('pointerdown')\n protected async handleMarkupPointerDown(event: PointerEvent): Promise<void> {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (markup?.id != null && markup?.id !== '') {\n this.toSelectMarkupId = el.id;\n }\n this.pointerDownPosition = Point.create(event.clientX, event.clientY);\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updatePropsOnMarkupTool();\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <slot onSlotchange={this.handleSlotChange} />\n </Host>\n );\n }\n\n private handleSlotChange = (): void => {\n this.updatePropsOnMarkupTool();\n this.updatePropsOnMarkups();\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY),\n ) > 2\n ) {\n this.toSelectMarkupId = undefined;\n }\n };\n\n private handlePointerUp = async (event: PointerEvent): Promise<void> => {\n if (!this.disabled) {\n const el = event.target as Element;\n const markups = await this.getMarkupElements();\n const markup = markups.find((m) => m === el);\n if (\n markup?.id != null &&\n markup.id !== '' &&\n markup.id === this.toSelectMarkupId\n ) {\n this.selectedMarkupId = el.id;\n } else if (\n this.pointerDownPosition != null &&\n Point.distance(\n this.pointerDownPosition,\n Point.create(event.clientX, event.clientY),\n ) <= 2\n ) {\n this.selectedMarkupId = undefined;\n }\n this.toSelectMarkupId = undefined;\n this.pointerDownPosition = undefined;\n }\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n window.removeEventListener('pointermove', this.handlePointerMove);\n };\n\n private appendMarkupElement(\n el:\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement,\n ):\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupFreeformElement {\n this.updatePropsOnMarkup(el);\n this.hostEl.appendChild(el);\n this.markupAdded.emit(el);\n\n return el;\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`,\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`,\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`,\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private async updatePropsOnMarkups(): Promise<void> {\n const markup = await this.getMarkupElements();\n markup.forEach((m) => this.updatePropsOnMarkup(m));\n }\n\n private updatePropsOnMarkup(\n element:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement,\n ): void {\n element.viewer = this.viewer;\n element.originatingViewport = this.originatingViewport;\n element.centeringBehavior = this.centeringBehavior;\n element.offset = this.offset;\n element.scale = this.scale;\n element.classList.add('viewer-markup__markup');\n }\n\n private updatePropsOnMarkupTool(): void {\n const tool = this.getMarkupTool();\n if (tool != null) {\n tool.disabled = this.disabled;\n tool.arrowTemplateId = this.arrowTemplateId;\n tool.circleTemplateId = this.circleTemplateId;\n tool.freeformTemplateId = this.freeformTemplateId;\n tool.tool = this.tool;\n tool.viewer = this.viewer;\n tool.startLineAnchorStyle = this.startLineAnchorStyle;\n tool.endLineAnchorStyle = this.endLineAnchorStyle;\n tool.originatingViewport = this.originatingViewport;\n tool.centeringBehavior = this.centeringBehavior;\n tool.offset = this.offset;\n tool.scale = this.scale;\n }\n }\n\n private getMarkupTool(): HTMLVertexViewerMarkupToolElement | undefined {\n return this.hostEl.querySelector('vertex-viewer-markup-tool') as\n HTMLVertexViewerMarkupToolElement | undefined;\n }\n\n private async getSelectedArrowMarkup(): Promise<\n HTMLVertexViewerMarkupArrowElement | undefined\n > {\n if (this.selectedMarkupId != null) {\n const selected = await this.getMarkupElement(this.selectedMarkupId);\n\n return isVertexViewerArrowMarkup(selected) ? selected : undefined;\n }\n }\n}\n"],"names":["Point"],"mappings":";;;;;;;;;;;AAAA,MAAM,eAAe,GAAG,MAAM,CAAC,wFAAwF,CAAC;;MCqC3G,YAAY,GAAA,MAAA;AALzB,IAAA,WAAA,CAAA,OAAA,EAAA;;;;;;AA8BE;;AAEG;AAEI,QAAA,IAAA,CAAA,IAAI,GAAyB,OAAO;AAE3C;;;AAGG;AAEI,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK;AAevB;;AAEG;AAEI,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK;AAExB;;AAEG;AAEI,QAAA,IAAA,CAAA,oBAAoB,GAAoB,MAAM;AAErD;;AAEG;AAEI,QAAA,IAAA,CAAA,kBAAkB,GAAoB,gBAAgB;AAY7D;;;;;;;;;;AAUG;AAEI,QAAA,IAAA,CAAA,iBAAiB,GAA4B,MAAM;AAW1D;;;;;AAKG;AAEI,QAAA,IAAA,CAAA,KAAK,GAAG,CAAC;AAuVR,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAW;YACpC,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,oBAAoB,EAAE;AAC7B,SAAC;AAEO,QAAA,IAAA,CAAA,iBAAiB,GAAG,CAAC,KAAmB,KAAU;AACxD,YAAA,IACE,IAAI,CAAC,mBAAmB,IAAI,IAAI;gBAChCA,KAAK,CAAC,QAAQ,CACZ,IAAI,CAAC,mBAAmB,EACxBA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAC3C,GAAG,CAAC,EACL;AACA,gBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;;AAErC,SAAC;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,OAAO,KAAmB,KAAmB;AACrE,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,gBAAA,MAAM,EAAE,GAAG,KAAK,CAAC,MAAiB;AAClC,gBAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC9C,gBAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC5C,IACE,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,KAAI,IAAI;oBAClB,MAAM,CAAC,EAAE,KAAK,EAAE;AAChB,oBAAA,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,gBAAgB,EACnC;AACA,oBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,EAAE;;AACxB,qBAAA,IACL,IAAI,CAAC,mBAAmB,IAAI,IAAI;oBAChCA,KAAK,CAAC,QAAQ,CACZ,IAAI,CAAC,mBAAmB,EACxBA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAC3C,IAAI,CAAC,EACN;AACA,oBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;;AAEnC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;AACjC,gBAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS;;YAGtC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC;YAC7D,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;AACnE,SAAC;AA6IF;IAtdW,oBAAoB,GAAA;QAC5B,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC;QAC7D,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;;AAGnE;;;;;;;;;;AAUG;IAEI,MAAM,SAAS,CACpB,MAAc,EAAA;AAMd,QAAA,IAAI,MAAM,YAAY,WAAW,EAAE;YACjC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM;AAEjC,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,wBAAwB,EAAE;AAC1C,YAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAC5B,YAAA,EAAE,CAAC,EAAE,GAAG,EAAE;AACV,YAAA,EAAE,CAAC,KAAK,GAAG,KAAK;AAChB,YAAA,EAAE,CAAC,GAAG,GAAG,GAAG;AACZ,YAAA,EAAE,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACnD,YAAA,EAAE,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAE/C,YAAA,OAAO,EAAE;;AACJ,aAAA,IAAI,MAAM,YAAY,YAAY,EAAE;AACzC,YAAA,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AAE7B,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,yBAAyB,EAAE;AAC3C,YAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAC5B,YAAA,EAAE,CAAC,EAAE,GAAG,EAAE;AACV,YAAA,EAAE,CAAC,MAAM,GAAG,MAAM;AAElB,YAAA,OAAO,EAAE;;AACJ,aAAA,IAAI,MAAM,YAAY,cAAc,EAAE;YAC3C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM;AAErC,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,2BAA2B,EAAE;AAC7C,YAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAC5B,YAAA,EAAE,CAAC,EAAE,GAAG,EAAE;AACV,YAAA,EAAE,CAAC,MAAM,GAAG,MAAM;AAClB,YAAA,EAAE,CAAC,MAAM,GAAG,MAAM;AAElB,YAAA,OAAO,EAAE;;aACJ;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,MAAM,CAAA,EAAA,CAAI,CAAC;;;AAInE;;;;;;;AAOG;IAEI,MAAM,YAAY,CACvB,EAAU,EAAA;QAOV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;AAE9C,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,MAAM,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;;AAGjC,QAAA,OAAO,MAAM;;AAGf;;;;;AAKG;AAEI,IAAA,MAAM,iBAAiB,GAAA;QAO5B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAC5C,CAAC,CAAC,KACA,yBAAyB,CAAC,CAAC,CAAC;YAC5B,0BAA0B,CAAC,CAAC,CAAC;AAC7B,YAAA,4BAA4B,CAAC,CAAC,CAAC,CAKlC;;AAGH;;;;;;AAMG;IAEI,MAAM,gBAAgB,CAC3B,EAAU,EAAA;AAOV,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC7C,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;;AAG1C;;AAEG;AAEO,IAAA,MAAM,6BAA6B,GAAA;AAC3C,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC7C,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;YACnB,IAAI,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,gBAAgB,EAAE;AAClC,gBAAA,CAAC,CAAC,IAAI,GAAG,MAAM;AACf,gBAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;;iBAC9B;AACL,gBAAA,CAAC,CAAC,IAAI,GAAG,EAAE;;AAEf,SAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;AACjC,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;;;AAI/C;;AAEG;IAKO,qBAAqB,GAAA;QAC7B,IAAI,CAAC,uBAAuB,EAAE;;AAGhC;;AAEG;IAMO,MAAM,mBAAmB,CACjC,SAA8C,EAAA;QAE9C,IAAI,CAAC,uBAAuB,EAAE;QAC9B,IAAI,CAAC,oBAAoB,EAAE;;AAG7B;;AAEG;IAEO,qBAAqB,GAAA;QAC7B,IAAI,CAAC,uBAAuB,EAAE;;AAGhC;;AAEG;AAEO,IAAA,MAAM,iCAAiC,GAAA;QAC/C,IAAI,CAAC,uBAAuB,EAAE;;AAG9B,QAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE;AACzD,QAAA,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,YAAA,aAAa,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AAC9D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;;AAI1C;;AAEG;AAEO,IAAA,MAAM,+BAA+B,GAAA;QAC7C,IAAI,CAAC,uBAAuB,EAAE;;AAG9B,QAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE;AAEzD,QAAA,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,YAAA,aAAa,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AAC1D,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC;;;AAI1C;;AAEG;IAEO,MAAM,eAAe,CAAC,KAA0B,EAAA;;QACxD,MAAM,CAAC,GAAG,KAA4B;QACtC,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AACzC,QAAA,IAAI,OAAO,EAAE,CAAC,gBAAgB,KAAK,UAAU,EAAE;AAC7C,YAAA,MAAM,EAAE,CAAC,gBAAgB,EAAE;;AAE7B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE;;QAErC,CAAA,EAAA,GAAA,IAAI,CAAC,aAAa,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,KAAK,EAAE;;AAG/B;;AAEG;IAEO,MAAM,mBAAmB,CACjC,KAAqC,EAAA;QAErC,MAAM,CAAC,GAAG,KAAuC;;AAGjD,QAAA,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE;YAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;;;AAI5C;;AAEG;IAEO,MAAM,uBAAuB,CAAC,KAAmB,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,MAAM,EAAE,GAAG,KAAK,CAAC,MAAiB;AAClC,YAAA,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC9C,YAAA,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,KAAI,IAAI,IAAI,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,MAAA,GAAA,MAAA,GAAN,MAAM,CAAE,EAAE,MAAK,EAAE,EAAE;AAC3C,gBAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,EAAE;;AAE/B,YAAA,IAAI,CAAC,mBAAmB,GAAGA,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;YAErE,MAAM,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC;YAC9D,MAAM,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC;;;AAI9D;;AAEG;IACO,gBAAgB,GAAA;QACxB,IAAI,CAAC,uBAAuB,EAAE;;AAGhC;;AAEG;IACO,MAAM,GAAA;AACd,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACH,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,YAAY,EAAE,IAAI,CAAC,gBAAgB,EAAA,CAAI,CACxC;;AAiDH,IAAA,mBAAmB,CACzB,EAGyC,EAAA;AAKzC,QAAA,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;AAEzB,QAAA,OAAO,EAAE;;IAGH,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,EAAE;AAChC,YAAA,MAAM,OAAO,GAAG,mBAAmB,CACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EACpB,IAAI,CAAC,eAAe,EACpB,yBAAyB,EACzB,MACE,OAAO,CAAC,IAAI,CACV,CAAA,uBAAA,EAA0B,IAAI,CAAC,eAAe,CAAA,wCAAA,CAA0C,CACzF,EACH,MACE,OAAO,CAAC,IAAI,CACV,CAAA,0FAAA,CAA4F,CAC7F,CACJ;AAED,YAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,gBAAA,OAAO,OAAO;;;AAIlB,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,4BAA4B,CAAC;;IAGrD,yBAAyB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;AACjC,YAAA,MAAM,OAAO,GAAG,mBAAmB,CACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EACpB,IAAI,CAAC,gBAAgB,EACrB,0BAA0B,EAC1B,MACE,OAAO,CAAC,IAAI,CACV,CAAA,wBAAA,EAA2B,IAAI,CAAC,gBAAgB,CAAA,yCAAA,CAA2C,CAC5F,EACH,MACE,OAAO,CAAC,IAAI,CACV,CAAA,6FAAA,CAA+F,CAChG,CACJ;AAED,YAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,gBAAA,OAAO,OAAO;;;AAIlB,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAC;;IAGtD,2BAA2B,GAAA;AACjC,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE;AACnC,YAAA,MAAM,OAAO,GAAG,mBAAmB,CACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EACpB,IAAI,CAAC,kBAAkB,EACvB,4BAA4B,EAC5B,MACE,OAAO,CAAC,IAAI,CACV,CAAA,0BAAA,EAA6B,IAAI,CAAC,kBAAkB,CAAA,2CAAA,CAA6C,CAClG,EACH,MACE,OAAO,CAAC,IAAI,CACV,CAAA,mGAAA,CAAqG,CACtG,CACJ;AAED,YAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,gBAAA,OAAO,OAAO;;;AAIlB,QAAA,OAAO,QAAQ,CAAC,aAAa,CAAC,+BAA+B,CAAC;;AAGxD,IAAA,MAAM,oBAAoB,GAAA;AAChC,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE;AAC7C,QAAA,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;;AAG5C,IAAA,mBAAmB,CACzB,OAGyC,EAAA;AAEzC,QAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC5B,QAAA,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACtD,QAAA,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAClD,QAAA,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AAC5B,QAAA,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AAC1B,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAuB,CAAC;;IAGxC,uBAAuB,GAAA;AAC7B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE;AACjC,QAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;AAC7B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe;AAC3C,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;AAC7C,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AACjD,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;AACrB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACzB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB;AACrD,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB;AACjD,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB;AACnD,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB;AAC/C,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;;;IAInB,aAAa,GAAA;QACnB,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,2BAA2B,CACb;;AAGzC,IAAA,MAAM,sBAAsB,GAAA;AAGlC,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;YACjC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAEnE,YAAA,OAAO,yBAAyB,CAAC,QAAQ,CAAC,GAAG,QAAQ,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -2,14 +2,14 @@
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
4
  import { h, F as Fragment, r as registerInstance, H as Host } from './index-CCVkga9Q.js';
5
- import './geometry_pb-BEB8SExe.js';
5
+ import './geometry_pb-COdZQiRi.js';
6
6
  import './wrappers_pb-aFAwKqIf.js';
7
7
  import './wrappers_pb-Xw_x1jYm.js';
8
8
  import './bundle-CG6SJT94.js';
9
- import { D as DistanceUnits, A as AngleUnits, h as AreaUnits } from './streamAttributes-CTs61PCl.js';
9
+ import { D as DistanceUnits, A as AngleUnits, h as AreaUnits } from './streamAttributes-BW9JzMeG.js';
10
10
  import { M as MeasurementModel } from './model-fOcd_X42.js';
11
11
  import './entities-BAhfr1Nx.js';
12
- import { v as vector3 } from './bundle-CZZALKHT.js';
12
+ import { v as vector3 } from './bundle-2UsvOTHJ.js';
13
13
  import { c as classname } from './index-DI7z7TKn.js';
14
14
  import { _ as __assign } from './tslib.es6-C-NyjLsm.js';
15
15
  import './bundle-D9AxqWtI.js';