@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,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{h as e,F as t,r as i,H as o}from"./p-CCVkga9Q.js";import{q as a,v as r,h as c}from"./p-CZZALKHT.js";import{r as n}from"./p-BxtKMwBH.js";import{O as d,g as s,S as f}from"./p-Cr2EnhS-.js";import"./p-BAhfr1Nx.js";import{c as b}from"./p-Dw4-tG-V.js";import"./p-5kcpg4MZ.js";import"./p-CG9AChtV.js";import"./p-CDM7zNn0.js";const l={front:{direction:r.back(),quaternion:a.create()},back:{direction:r.forward(),quaternion:a.fromAxisAngle(r.up(),Math.PI)},left:{direction:r.left(),quaternion:a.fromAxisAngle(r.down(),Math.PI/2)},right:{direction:r.right(),quaternion:a.fromAxisAngle(r.up(),Math.PI/2)},top:{direction:r.up(),quaternion:a.fromAxisAngle(r.right(),-Math.PI/2)},bottom:{direction:r.down(),quaternion:a.fromAxisAngle(r.left(),-Math.PI/2)}};const h=({label:i,length:o,rotationAxis:n})=>{const d={width:`${o+5}px`};const s=a.fromAxisAngle(n,Math.PI/2);const f=r.scale(o+15,r.right());return e(t,null,e("vertex-viewer-dom-group",{quaternion:s},e("vertex-viewer-dom-element",{style:d,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{rotation:c.create({x:Math.PI/2,y:0,z:0}),style:d,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{position:f,interactionsOff:true},e("div",{class:`triad-label triad-label-${i.toLowerCase()}`},i))))};const g=({label:t,length:i,side:o,disabled:a,onPointerDown:c})=>{const{direction:n,quaternion:d}=l[o];const s=r.scale(i/2-.1,n);return e("vertex-viewer-dom-element",{class:b("cube-side",{disabled:a}),position:s,quaternion:d,style:{width:`${i}px`,height:`${i}px`},onPointerDown:c,billboardOff:true},e("div",{class:`cube-side-face cube-side-face-${t.toLowerCase()}`},t))};const v=({length:t,face1Side:i,face1Corner:o,face2Side:a,face2Corner:c,face3Side:n,face3Corner:d,disabled:s,onPointerDown:f})=>{const{direction:h,quaternion:g}=l[i];const{direction:v,quaternion:u}=l[a];const{direction:w,quaternion:p}=l[n];const m=r.scale(t/2,h);const x=r.scale(t/2,v);const y=r.scale(t/2,w);const k={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:b("cube-corner",{disabled:s}),onPointerDown:f},e("vertex-viewer-dom-element",{position:m,quaternion:g,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${o}`})),e("vertex-viewer-dom-element",{position:x,quaternion:u,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${c}`})),e("vertex-viewer-dom-element",{position:y,quaternion:p,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${d}`})))};const u=({length:t,face1Side:i,face2Side:o,face1Edge:a,face2Edge:c,disabled:n,onPointerDown:d})=>{const{direction:s,quaternion:f}=l[i];const{direction:h,quaternion:g}=l[o];const v=r.scale(t/2,s);const u=r.scale(t/2,h);const w={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:b("cube-edge",{disabled:n}),onPointerDown:d},e("vertex-viewer-dom-element",{position:v,quaternion:f,style:w,billboardOff:true},e("div",{class:`cube-edge-face ${a}`})),e("vertex-viewer-dom-element",{position:u,quaternion:g,style:w,billboardOff:true},e("div",{class:`cube-edge-face ${c}`})))};const w=({length:t})=>{const{direction:i,quaternion:o}=l.top;const a=r.scale(-t/2,i);return e("vertex-viewer-dom-element",{class:"cube-shadow",position:a,quaternion:o,style:{width:`${t}px`,height:`${t}px`},billboardOff:true,interactionsOff:true},e("div",{class:"cube-shadow-face"}))};const p=()=>`:host{--viewer-view-cube-side-background:var(--white);--viewer-view-cube-side-background-hover:var(--blue-500);--viewer-view-cube-side-background-hover-opacity:0.25;--viewer-view-cube-side-border:1.5px solid var(--neutral-500);--viewer-view-cube-edge-length:12px;--viewer-view-cube-opacity:0.8;--viewer-view-cube-triad-x-axis-color:var(--x-axis-color);--viewer-view-cube-triad-y-axis-color:var(--y-axis-color);--viewer-view-cube-triad-z-axis-color:var(--z-axis-color);color:var(--neutral-700);width:80px;height:80px;margin:20px;position:relative;display:flex;align-items:center;justify-content:center;user-select:none}.renderer{position:unset;width:100%;height:100%;overflow:visible !important}.reference-point{width:5px;height:5px;border-radius:50%;background-color:black}.triad{pointer-events:none}.triad-axis{width:100%;height:1.5px;outline:1px solid transparent;transform:translateX(50%)}.triad-axis-x{background-color:#ea3324}.triad-axis-y{background-color:#4faf32}.triad-axis-z{background-color:#0000ff}.triad-label{font-family:Arial, Helvetica, sans-serif;font-size:0.6875rem}.triad-label-x{color:var(--viewer-view-cube-triad-x-axis-color)}.triad-label-y{color:var(--viewer-view-cube-triad-y-axis-color)}.triad-label-z{color:var(--viewer-view-cube-triad-z-axis-color)}.cube{pointer-events:initial}.cube:hover .cube-side-face{opacity:1}.cube-side{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-side-face{box-sizing:border-box;font-size:0.875rem;text-transform:uppercase;width:100%;height:100%;background-color:var(--viewer-view-cube-side-background);border:var(--viewer-view-cube-side-border);display:flex;align-items:center;justify-content:center;outline:1px solid transparent;opacity:var(--viewer-view-cube-opacity);transition:opacity 0.2s ease-in-out}.cube-side-face::before{content:'';position:absolute;left:calc(var(--viewer-view-cube-edge-length) - 4px);right:calc(var(--viewer-view-cube-edge-length) - 4px);top:calc(var(--viewer-view-cube-edge-length) - 4px);bottom:calc(var(--viewer-view-cube-edge-length) - 4px)}.cube-corner,.cube-edge{position:relative}.cube-corner-face,.cube-edge-face{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-edge-face.top{top:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.bottom{bottom:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.left{left:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-edge-face.right{right:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-corner-face{width:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-corner-face.top-left{top:0;left:0}.cube-corner-face.top-right{top:0;right:0}.cube-corner-face.bottom-right{bottom:0;right:0}.cube-corner-face.bottom-left{bottom:0;left:0}.cube-shadow{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-shadow-face{position:absolute;left:4px;right:4px;top:4px;bottom:4px;background-color:black;opacity:0.12;filter:blur(4px)}.cube-side-face,.cube-corner-face,.cube-edge-face{pointer-events:initial}.cube-corner .cube-corner-face,.cube-edge .cube-edge-face,.cube-side .cube-side-face::before{background:var(--viewer-view-cube-side-background-hover);opacity:0}.cube-corner:hover .cube-corner-face,.cube-edge:hover .cube-edge-face,.cube-side:hover .cube-side-face::before{opacity:var(--viewer-view-cube-side-background-hover-opacity)}.cube-corner.disabled,.cube-edge.disabled,.cube-side.disabled{pointer-events:none}`;const m=class{constructor(e){i(this,e);this.boxLength=80;this.triadPosition=r.origin();this.xPositiveLabel="Right";this.xNegativeLabel="Left";this.yPositiveLabel="Top";this.yNegativeLabel="Bottom";this.zPositiveLabel="Front";this.zNegativeLabel="Back";this.standardViewsOff=false;this.viewAll=true;this.animationDuration=500;this.triadOff=false;this.worldOrientation=d.DEFAULT;this.updateMatrices=()=>{var e;if(((e=this.viewer)===null||e===void 0?void 0:e.frame)!=null){const{camera:e}=this.viewer.frame.scene;const t=this.boxLength/2;this.triadPosition=r.create(-t-5,-t-5,-t-5);const i=3.125;const o=this.boxLength*i;const a=21.5;this.camera=new s(r.scale(o,r.negate(e.direction)),r.origin(),e.up,.1,100,1,a);this.worldOrientation=this.viewer.frame.scene.worldOrientation}}}handleViewerChanged(e,t){t===null||t===void 0?void 0:t.removeEventListener("frameDrawn",this.updateMatrices);e===null||e===void 0?void 0:e.addEventListener("frameDrawn",this.updateMatrices);this.updateMatrices()}handleStandardView(e){if(this.standardViewsOff){return async()=>undefined}else{return async()=>{if(this.viewer!=null){const t=await this.viewer.scene();const i=this.animationDuration>0?{animation:{milliseconds:this.animationDuration}}:{};const o=e.transformMatrix(this.worldOrientation.matrix);const a=t.boundingBox();if(!this.viewAll){t.camera().standardViewFixedLookAt(o).render(i)}else if((a===null||a===void 0?void 0:a.max)!=null&&r.isEqual(a.max,r.origin())&&r.isEqual(a.min,r.origin())){t.camera().standardView(o).render(i)}else{t.camera().standardView(o).viewAll().render(i)}}}}}componentWillLoad(){this.handleViewerChanged(this.viewer)}componentDidLoad(){if(this.rendererEl!=null){const e=new ResizeObserver((()=>this.handleRendererResized()));e.observe(this.rendererEl);this.handleRendererResized()}}handleRendererResized(){n((()=>{if(this.rendererEl!=null){const e=this.rendererEl.getBoundingClientRect();this.boxLength=Math.min(e.width,e.height)}}))}render(){return e(o,{key:"a3cea27b2376c4ffbe255168515b8c3f0e7ab5aa"},e("vertex-viewer-dom-renderer",{key:"7f1560abaf53c1dc5b8f43b9dade445917861656",ref:e=>this.rendererEl=e,class:"renderer",camera:this.camera},!this.triadOff&&e("vertex-viewer-dom-group",{key:"0671f7678ab3197709e98649d0ac36a1703614c6",class:"triad",position:this.triadPosition},e(h,{key:"b65eddeb99f9b93120246f8143886ac937afb57a",label:"X",length:this.boxLength,rotationAxis:r.origin()}),e(h,{key:"ba49dbda3e18e90e033453d06b509f31336fffe8",label:"Y",length:this.boxLength,rotationAxis:r.back()}),e(h,{key:"ff765198e6e11cc6b7b2d466766809b055c5ccdf",label:"Z",length:this.boxLength,rotationAxis:r.down()})),e("vertex-viewer-dom-group",{key:"0dd9aab195029c25a3090f35ee39c04ed45da8f8",class:"cube",matrix:this.worldOrientation.matrix},e(w,{key:"995e2af8e70518edcf949d5df72387463ff3cc0e",length:this.boxLength+10}),e(g,{key:"0864a044b3d79b9a483cd492b7a04a20fcf64f42",label:this.zPositiveLabel,length:this.boxLength,side:"front",onPointerDown:this.handleStandardView(f.FRONT),disabled:this.standardViewsOff}),e(g,{key:"8f9110528267a00b802f97a8543a896d9fc333f7",label:this.zNegativeLabel,length:this.boxLength,side:"back",onPointerDown:this.handleStandardView(f.BACK),disabled:this.standardViewsOff}),e(g,{key:"6848e1e273bc815ee40e0218cc15bdc80d1f2715",label:this.xNegativeLabel,length:this.boxLength,side:"left",onPointerDown:this.handleStandardView(f.LEFT),disabled:this.standardViewsOff}),e(g,{key:"825624a992f4d31d9faf7506c8e964392da041ab",label:this.xPositiveLabel,length:this.boxLength,side:"right",onPointerDown:this.handleStandardView(f.RIGHT),disabled:this.standardViewsOff}),e(g,{key:"f59f5693ce4f1b4a794f4665b3f920bf29c1f159",label:this.yPositiveLabel,length:this.boxLength,side:"top",onPointerDown:this.handleStandardView(f.TOP),disabled:this.standardViewsOff}),e(g,{key:"65b8c8a2f8cc5cbc7974ca0dc3e6c328e2ca0649",label:this.yNegativeLabel,length:this.boxLength,side:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM),disabled:this.standardViewsOff}),e(u,{key:"0923dfc3696b2c76e69069156c0f57d6cd4f8285",length:this.boxLength,face1Side:"top",face1Edge:"bottom",face2Side:"front",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_FRONT),disabled:this.standardViewsOff}),e(u,{key:"6bf8058fbb4e35b9a1ed8dc5ff772ed2d2995add",length:this.boxLength,face1Side:"front",face1Edge:"right",face2Side:"right",face2Edge:"left",onPointerDown:this.handleStandardView(f.FRONT_LEFT),disabled:this.standardViewsOff}),e(u,{key:"61f28c6cd18661c643ec1510305a8603efbd5cdb",length:this.boxLength,face1Side:"bottom",face1Edge:"top",face2Side:"front",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT),disabled:this.standardViewsOff}),e(u,{key:"6c62acdf92f6397ec3c381d10078215cf6a29ebb",length:this.boxLength,face1Side:"front",face1Edge:"left",face2Side:"left",face2Edge:"right",onPointerDown:this.handleStandardView(f.FRONT_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"a94dc61cea93cae54e148c4f1ffc73a42717f986",length:this.boxLength,face1Side:"top",face1Edge:"right",face2Side:"right",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_LEFT),disabled:this.standardViewsOff}),e(u,{key:"4a97659a3aad5b162252091401ec666727d204be",length:this.boxLength,face1Side:"back",face1Edge:"left",face2Side:"right",face2Edge:"right",onPointerDown:this.handleStandardView(f.BACK_LEFT),disabled:this.standardViewsOff}),e(u,{key:"422acd7e4689eb7ae0403726a29a3784637bdfd6",length:this.boxLength,face1Side:"bottom",face1Edge:"right",face2Side:"right",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_LEFT),disabled:this.standardViewsOff}),e(u,{key:"afa5fb1b78c1fcbb78a48f040d5c868a4dd338fc",length:this.boxLength,face1Side:"top",face1Edge:"top",face2Side:"back",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_BACK),disabled:this.standardViewsOff}),e(u,{key:"e1aa294c3ed0a6e105929a7094cfbdeab26fe7c0",length:this.boxLength,face1Side:"back",face1Edge:"right",face2Side:"left",face2Edge:"left",onPointerDown:this.handleStandardView(f.BACK_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"e3a83623df735d9987a279ef2e055d1f962cafbe",length:this.boxLength,face1Side:"bottom",face1Edge:"bottom",face2Side:"back",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_BACK),disabled:this.standardViewsOff}),e(u,{key:"ad1d8915f046ba5df73240489c2daf1703b6a310",length:this.boxLength,face1Side:"top",face1Edge:"left",face2Side:"left",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"f0b94c0f3517d1f54cf0c23f74fa681607da3532",length:this.boxLength,face1Side:"bottom",face1Edge:"left",face2Side:"left",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"c814db371a4b47ba50084e69879845921eb6ba91",length:this.boxLength,face1Side:"top",face1Corner:"bottom-left",face2Side:"front",face2Corner:"top-left",face3Side:"left",face3Corner:"top-right",onPointerDown:this.handleStandardView(f.TOP_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"b0f81f620127d1533eeb675c66d74e1b3019cb3b",length:this.boxLength,face1Side:"top",face1Corner:"bottom-right",face2Side:"front",face2Corner:"top-right",face3Side:"right",face3Corner:"top-left",onPointerDown:this.handleStandardView(f.TOP_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{key:"254834f0214afa786b8997274e0dcbc4f1e5e31c",length:this.boxLength,face1Side:"bottom",face1Corner:"top-right",face2Side:"front",face2Corner:"bottom-right",face3Side:"right",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{key:"847425b3886582ddb596408fbfcd2fcd9e424641",length:this.boxLength,face1Side:"bottom",face1Corner:"top-left",face2Side:"front",face2Corner:"bottom-left",face3Side:"left",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"fe6eaffd1f06fe45a9fa3fb680d638f3623187aa",length:this.boxLength,face1Side:"top",face1Corner:"top-right",face2Side:"back",face2Corner:"top-left",face3Side:"right",face3Corner:"top-right",onPointerDown:this.handleStandardView(f.TOP_BACK_LEFT),disabled:this.standardViewsOff}),e(v,{key:"e4b8004047f4f1da2decc4b17d86297a67e38e9d",length:this.boxLength,face1Side:"top",face1Corner:"top-left",face2Side:"back",face2Corner:"top-right",face3Side:"left",face3Corner:"top-left",onPointerDown:this.handleStandardView(f.TOP_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"c06a8465a3b39828bf114faaa0039c8e32196441",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-left",face2Side:"back",face2Corner:"bottom-right",face3Side:"left",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(f.BOTTOM_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"2ea208573579fd18a3b7fde9f0bbc3a5834e2652",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-right",face2Side:"back",face2Corner:"bottom-left",face3Side:"right",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(f.BOTTOM_BACK_LEFT),disabled:this.standardViewsOff}))))}static get watchers(){return{viewer:[{handleViewerChanged:0}]}}};m.style=p();export{m as vertex_viewer_view_cube};
5
- //# sourceMappingURL=p-9312a936.entry.js.map
4
+ import{h as e,F as t,r as i,H as o}from"./p-CCVkga9Q.js";import{q as a,v as r,h as c}from"./p-2UsvOTHJ.js";import{r as n}from"./p-BxtKMwBH.js";import{O as d,g as s,S as f}from"./p-Cc3XhAoA.js";import"./p-BAhfr1Nx.js";import{c as b}from"./p-Dw4-tG-V.js";import"./p-5kcpg4MZ.js";import"./p-CG9AChtV.js";import"./p-CDM7zNn0.js";const l={front:{direction:r.back(),quaternion:a.create()},back:{direction:r.forward(),quaternion:a.fromAxisAngle(r.up(),Math.PI)},left:{direction:r.left(),quaternion:a.fromAxisAngle(r.down(),Math.PI/2)},right:{direction:r.right(),quaternion:a.fromAxisAngle(r.up(),Math.PI/2)},top:{direction:r.up(),quaternion:a.fromAxisAngle(r.right(),-Math.PI/2)},bottom:{direction:r.down(),quaternion:a.fromAxisAngle(r.left(),-Math.PI/2)}};const h=({label:i,length:o,rotationAxis:n})=>{const d={width:`${o+5}px`};const s=a.fromAxisAngle(n,Math.PI/2);const f=r.scale(o+15,r.right());return e(t,null,e("vertex-viewer-dom-group",{quaternion:s},e("vertex-viewer-dom-element",{style:d,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{rotation:c.create({x:Math.PI/2,y:0,z:0}),style:d,billboardOff:true,interactionsOff:true},e("div",{class:`triad-axis triad-axis-${i.toLowerCase()}`})),e("vertex-viewer-dom-element",{position:f,interactionsOff:true},e("div",{class:`triad-label triad-label-${i.toLowerCase()}`},i))))};const g=({label:t,length:i,side:o,disabled:a,onPointerDown:c})=>{const{direction:n,quaternion:d}=l[o];const s=r.scale(i/2-.1,n);return e("vertex-viewer-dom-element",{class:b("cube-side",{disabled:a}),position:s,quaternion:d,style:{width:`${i}px`,height:`${i}px`},onPointerDown:c,billboardOff:true},e("div",{class:`cube-side-face cube-side-face-${t.toLowerCase()}`},t))};const v=({length:t,face1Side:i,face1Corner:o,face2Side:a,face2Corner:c,face3Side:n,face3Corner:d,disabled:s,onPointerDown:f})=>{const{direction:h,quaternion:g}=l[i];const{direction:v,quaternion:u}=l[a];const{direction:w,quaternion:p}=l[n];const m=r.scale(t/2,h);const x=r.scale(t/2,v);const y=r.scale(t/2,w);const k={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:b("cube-corner",{disabled:s}),onPointerDown:f},e("vertex-viewer-dom-element",{position:m,quaternion:g,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${o}`})),e("vertex-viewer-dom-element",{position:x,quaternion:u,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${c}`})),e("vertex-viewer-dom-element",{position:y,quaternion:p,style:k,billboardOff:true},e("div",{class:`cube-corner-face ${d}`})))};const u=({length:t,face1Side:i,face2Side:o,face1Edge:a,face2Edge:c,disabled:n,onPointerDown:d})=>{const{direction:s,quaternion:f}=l[i];const{direction:h,quaternion:g}=l[o];const v=r.scale(t/2,s);const u=r.scale(t/2,h);const w={width:`${t}px`,height:`${t}px`};return e("vertex-viewer-dom-group",{class:b("cube-edge",{disabled:n}),onPointerDown:d},e("vertex-viewer-dom-element",{position:v,quaternion:f,style:w,billboardOff:true},e("div",{class:`cube-edge-face ${a}`})),e("vertex-viewer-dom-element",{position:u,quaternion:g,style:w,billboardOff:true},e("div",{class:`cube-edge-face ${c}`})))};const w=({length:t})=>{const{direction:i,quaternion:o}=l.top;const a=r.scale(-t/2,i);return e("vertex-viewer-dom-element",{class:"cube-shadow",position:a,quaternion:o,style:{width:`${t}px`,height:`${t}px`},billboardOff:true,interactionsOff:true},e("div",{class:"cube-shadow-face"}))};const p=()=>`:host{--viewer-view-cube-side-background:var(--white);--viewer-view-cube-side-background-hover:var(--blue-500);--viewer-view-cube-side-background-hover-opacity:0.25;--viewer-view-cube-side-border:1.5px solid var(--neutral-500);--viewer-view-cube-edge-length:12px;--viewer-view-cube-opacity:0.8;--viewer-view-cube-triad-x-axis-color:var(--x-axis-color);--viewer-view-cube-triad-y-axis-color:var(--y-axis-color);--viewer-view-cube-triad-z-axis-color:var(--z-axis-color);color:var(--neutral-700);width:80px;height:80px;margin:20px;position:relative;display:flex;align-items:center;justify-content:center;user-select:none}.renderer{position:unset;width:100%;height:100%;overflow:visible !important}.reference-point{width:5px;height:5px;border-radius:50%;background-color:black}.triad{pointer-events:none}.triad-axis{width:100%;height:1.5px;outline:1px solid transparent;transform:translateX(50%)}.triad-axis-x{background-color:#ea3324}.triad-axis-y{background-color:#4faf32}.triad-axis-z{background-color:#0000ff}.triad-label{font-family:Arial, Helvetica, sans-serif;font-size:0.6875rem}.triad-label-x{color:var(--viewer-view-cube-triad-x-axis-color)}.triad-label-y{color:var(--viewer-view-cube-triad-y-axis-color)}.triad-label-z{color:var(--viewer-view-cube-triad-z-axis-color)}.cube{pointer-events:initial}.cube:hover .cube-side-face{opacity:1}.cube-side{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-side-face{box-sizing:border-box;font-size:0.875rem;text-transform:uppercase;width:100%;height:100%;background-color:var(--viewer-view-cube-side-background);border:var(--viewer-view-cube-side-border);display:flex;align-items:center;justify-content:center;outline:1px solid transparent;opacity:var(--viewer-view-cube-opacity);transition:opacity 0.2s ease-in-out}.cube-side-face::before{content:'';position:absolute;left:calc(var(--viewer-view-cube-edge-length) - 4px);right:calc(var(--viewer-view-cube-edge-length) - 4px);top:calc(var(--viewer-view-cube-edge-length) - 4px);bottom:calc(var(--viewer-view-cube-edge-length) - 4px)}.cube-corner,.cube-edge{position:relative}.cube-corner-face,.cube-edge-face{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-edge-face.top{top:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.bottom{bottom:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.left{left:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-edge-face.right{right:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-corner-face{width:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-corner-face.top-left{top:0;left:0}.cube-corner-face.top-right{top:0;right:0}.cube-corner-face.bottom-right{bottom:0;right:0}.cube-corner-face.bottom-left{bottom:0;left:0}.cube-shadow{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-shadow-face{position:absolute;left:4px;right:4px;top:4px;bottom:4px;background-color:black;opacity:0.12;filter:blur(4px)}.cube-side-face,.cube-corner-face,.cube-edge-face{pointer-events:initial}.cube-corner .cube-corner-face,.cube-edge .cube-edge-face,.cube-side .cube-side-face::before{background:var(--viewer-view-cube-side-background-hover);opacity:0}.cube-corner:hover .cube-corner-face,.cube-edge:hover .cube-edge-face,.cube-side:hover .cube-side-face::before{opacity:var(--viewer-view-cube-side-background-hover-opacity)}.cube-corner.disabled,.cube-edge.disabled,.cube-side.disabled{pointer-events:none}`;const m=class{constructor(e){i(this,e);this.boxLength=80;this.triadPosition=r.origin();this.xPositiveLabel="Right";this.xNegativeLabel="Left";this.yPositiveLabel="Top";this.yNegativeLabel="Bottom";this.zPositiveLabel="Front";this.zNegativeLabel="Back";this.standardViewsOff=false;this.viewAll=true;this.animationDuration=500;this.triadOff=false;this.worldOrientation=d.DEFAULT;this.updateMatrices=()=>{var e;if(((e=this.viewer)===null||e===void 0?void 0:e.frame)!=null){const{camera:e}=this.viewer.frame.scene;const t=this.boxLength/2;this.triadPosition=r.create(-t-5,-t-5,-t-5);const i=3.125;const o=this.boxLength*i;const a=21.5;this.camera=new s(r.scale(o,r.negate(e.direction)),r.origin(),e.up,.1,100,1,a);this.worldOrientation=this.viewer.frame.scene.worldOrientation}}}handleViewerChanged(e,t){t===null||t===void 0?void 0:t.removeEventListener("frameDrawn",this.updateMatrices);e===null||e===void 0?void 0:e.addEventListener("frameDrawn",this.updateMatrices);this.updateMatrices()}handleStandardView(e){if(this.standardViewsOff){return async()=>undefined}else{return async()=>{if(this.viewer!=null){const t=await this.viewer.scene();const i=this.animationDuration>0?{animation:{milliseconds:this.animationDuration}}:{};const o=e.transformMatrix(this.worldOrientation.matrix);const a=t.boundingBox();if(!this.viewAll){t.camera().standardViewFixedLookAt(o).render(i)}else if((a===null||a===void 0?void 0:a.max)!=null&&r.isEqual(a.max,r.origin())&&r.isEqual(a.min,r.origin())){t.camera().standardView(o).render(i)}else{t.camera().standardView(o).viewAll().render(i)}}}}}componentWillLoad(){this.handleViewerChanged(this.viewer)}componentDidLoad(){if(this.rendererEl!=null){const e=new ResizeObserver((()=>this.handleRendererResized()));e.observe(this.rendererEl);this.handleRendererResized()}}handleRendererResized(){n((()=>{if(this.rendererEl!=null){const e=this.rendererEl.getBoundingClientRect();this.boxLength=Math.min(e.width,e.height)}}))}render(){return e(o,{key:"a3cea27b2376c4ffbe255168515b8c3f0e7ab5aa"},e("vertex-viewer-dom-renderer",{key:"7f1560abaf53c1dc5b8f43b9dade445917861656",ref:e=>this.rendererEl=e,class:"renderer",camera:this.camera},!this.triadOff&&e("vertex-viewer-dom-group",{key:"0671f7678ab3197709e98649d0ac36a1703614c6",class:"triad",position:this.triadPosition},e(h,{key:"b65eddeb99f9b93120246f8143886ac937afb57a",label:"X",length:this.boxLength,rotationAxis:r.origin()}),e(h,{key:"ba49dbda3e18e90e033453d06b509f31336fffe8",label:"Y",length:this.boxLength,rotationAxis:r.back()}),e(h,{key:"ff765198e6e11cc6b7b2d466766809b055c5ccdf",label:"Z",length:this.boxLength,rotationAxis:r.down()})),e("vertex-viewer-dom-group",{key:"0dd9aab195029c25a3090f35ee39c04ed45da8f8",class:"cube",matrix:this.worldOrientation.matrix},e(w,{key:"995e2af8e70518edcf949d5df72387463ff3cc0e",length:this.boxLength+10}),e(g,{key:"0864a044b3d79b9a483cd492b7a04a20fcf64f42",label:this.zPositiveLabel,length:this.boxLength,side:"front",onPointerDown:this.handleStandardView(f.FRONT),disabled:this.standardViewsOff}),e(g,{key:"8f9110528267a00b802f97a8543a896d9fc333f7",label:this.zNegativeLabel,length:this.boxLength,side:"back",onPointerDown:this.handleStandardView(f.BACK),disabled:this.standardViewsOff}),e(g,{key:"6848e1e273bc815ee40e0218cc15bdc80d1f2715",label:this.xNegativeLabel,length:this.boxLength,side:"left",onPointerDown:this.handleStandardView(f.LEFT),disabled:this.standardViewsOff}),e(g,{key:"825624a992f4d31d9faf7506c8e964392da041ab",label:this.xPositiveLabel,length:this.boxLength,side:"right",onPointerDown:this.handleStandardView(f.RIGHT),disabled:this.standardViewsOff}),e(g,{key:"f59f5693ce4f1b4a794f4665b3f920bf29c1f159",label:this.yPositiveLabel,length:this.boxLength,side:"top",onPointerDown:this.handleStandardView(f.TOP),disabled:this.standardViewsOff}),e(g,{key:"65b8c8a2f8cc5cbc7974ca0dc3e6c328e2ca0649",label:this.yNegativeLabel,length:this.boxLength,side:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM),disabled:this.standardViewsOff}),e(u,{key:"0923dfc3696b2c76e69069156c0f57d6cd4f8285",length:this.boxLength,face1Side:"top",face1Edge:"bottom",face2Side:"front",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_FRONT),disabled:this.standardViewsOff}),e(u,{key:"6bf8058fbb4e35b9a1ed8dc5ff772ed2d2995add",length:this.boxLength,face1Side:"front",face1Edge:"right",face2Side:"right",face2Edge:"left",onPointerDown:this.handleStandardView(f.FRONT_LEFT),disabled:this.standardViewsOff}),e(u,{key:"61f28c6cd18661c643ec1510305a8603efbd5cdb",length:this.boxLength,face1Side:"bottom",face1Edge:"top",face2Side:"front",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT),disabled:this.standardViewsOff}),e(u,{key:"6c62acdf92f6397ec3c381d10078215cf6a29ebb",length:this.boxLength,face1Side:"front",face1Edge:"left",face2Side:"left",face2Edge:"right",onPointerDown:this.handleStandardView(f.FRONT_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"a94dc61cea93cae54e148c4f1ffc73a42717f986",length:this.boxLength,face1Side:"top",face1Edge:"right",face2Side:"right",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_LEFT),disabled:this.standardViewsOff}),e(u,{key:"4a97659a3aad5b162252091401ec666727d204be",length:this.boxLength,face1Side:"back",face1Edge:"left",face2Side:"right",face2Edge:"right",onPointerDown:this.handleStandardView(f.BACK_LEFT),disabled:this.standardViewsOff}),e(u,{key:"422acd7e4689eb7ae0403726a29a3784637bdfd6",length:this.boxLength,face1Side:"bottom",face1Edge:"right",face2Side:"right",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_LEFT),disabled:this.standardViewsOff}),e(u,{key:"afa5fb1b78c1fcbb78a48f040d5c868a4dd338fc",length:this.boxLength,face1Side:"top",face1Edge:"top",face2Side:"back",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_BACK),disabled:this.standardViewsOff}),e(u,{key:"e1aa294c3ed0a6e105929a7094cfbdeab26fe7c0",length:this.boxLength,face1Side:"back",face1Edge:"right",face2Side:"left",face2Edge:"left",onPointerDown:this.handleStandardView(f.BACK_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"e3a83623df735d9987a279ef2e055d1f962cafbe",length:this.boxLength,face1Side:"bottom",face1Edge:"bottom",face2Side:"back",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_BACK),disabled:this.standardViewsOff}),e(u,{key:"ad1d8915f046ba5df73240489c2daf1703b6a310",length:this.boxLength,face1Side:"top",face1Edge:"left",face2Side:"left",face2Edge:"top",onPointerDown:this.handleStandardView(f.TOP_RIGHT),disabled:this.standardViewsOff}),e(u,{key:"f0b94c0f3517d1f54cf0c23f74fa681607da3532",length:this.boxLength,face1Side:"bottom",face1Edge:"left",face2Side:"left",face2Edge:"bottom",onPointerDown:this.handleStandardView(f.BOTTOM_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"c814db371a4b47ba50084e69879845921eb6ba91",length:this.boxLength,face1Side:"top",face1Corner:"bottom-left",face2Side:"front",face2Corner:"top-left",face3Side:"left",face3Corner:"top-right",onPointerDown:this.handleStandardView(f.TOP_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"b0f81f620127d1533eeb675c66d74e1b3019cb3b",length:this.boxLength,face1Side:"top",face1Corner:"bottom-right",face2Side:"front",face2Corner:"top-right",face3Side:"right",face3Corner:"top-left",onPointerDown:this.handleStandardView(f.TOP_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{key:"254834f0214afa786b8997274e0dcbc4f1e5e31c",length:this.boxLength,face1Side:"bottom",face1Corner:"top-right",face2Side:"front",face2Corner:"bottom-right",face3Side:"right",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT_LEFT),disabled:this.standardViewsOff}),e(v,{key:"847425b3886582ddb596408fbfcd2fcd9e424641",length:this.boxLength,face1Side:"bottom",face1Corner:"top-left",face2Side:"front",face2Corner:"bottom-left",face3Side:"left",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(f.BOTTOM_FRONT_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"fe6eaffd1f06fe45a9fa3fb680d638f3623187aa",length:this.boxLength,face1Side:"top",face1Corner:"top-right",face2Side:"back",face2Corner:"top-left",face3Side:"right",face3Corner:"top-right",onPointerDown:this.handleStandardView(f.TOP_BACK_LEFT),disabled:this.standardViewsOff}),e(v,{key:"e4b8004047f4f1da2decc4b17d86297a67e38e9d",length:this.boxLength,face1Side:"top",face1Corner:"top-left",face2Side:"back",face2Corner:"top-right",face3Side:"left",face3Corner:"top-left",onPointerDown:this.handleStandardView(f.TOP_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"c06a8465a3b39828bf114faaa0039c8e32196441",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-left",face2Side:"back",face2Corner:"bottom-right",face3Side:"left",face3Corner:"bottom-left",onPointerDown:this.handleStandardView(f.BOTTOM_BACK_RIGHT),disabled:this.standardViewsOff}),e(v,{key:"2ea208573579fd18a3b7fde9f0bbc3a5834e2652",length:this.boxLength,face1Side:"bottom",face1Corner:"bottom-right",face2Side:"back",face2Corner:"bottom-left",face3Side:"right",face3Corner:"bottom-right",onPointerDown:this.handleStandardView(f.BOTTOM_BACK_LEFT),disabled:this.standardViewsOff}))))}static get watchers(){return{viewer:[{handleViewerChanged:0}]}}};m.style=p();export{m as vertex_viewer_view_cube};
5
+ //# sourceMappingURL=p-a94b626c.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["viewerAnnotationCalloutCss","ViewerAnnotationCallout","constructor","hostRef","this","iconSize","render","h","Host","key","class","classNames","style","borderColor","data","accentColor","backgroundColor","primaryColor","name","icon","size","color"],"sources":["src/components/viewer-annotation-callout/viewer-annotation-callout.css?tag=vertex-viewer-annotation-callout&encapsulation=shadow","src/components/viewer-annotation-callout/viewer-annotation-callout.tsx"],"sourcesContent":[":host {\n display: block;\n\n\n /**\n * @prop --viewer-annotation-callout-primary-color: A CSS color that\n * specifies the primary color of the callout.\n */\n --viewer-annotation-callout-primary-color: var(--blue-700);\n\n /**\n * @prop --viewer-annotation-callout-accent-color: A CSS color that\n * specifies a contrasting color to the primary color.\n */\n --viewer-annotation-callout-accent-color: var(--white);\n}\n\n.content {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: center;\n\n background-color: var(--viewer-annotation-callout-primary-color);\n border: 1px solid var(--viewer-annotation-callout-accent-color);\n}\n\n.content.sm {\n border-radius: 14px;\n width: 28px;\n height: 28px;\n}\n\n.content.md {\n border-radius: 19px;\n width: 38px;\n height: 38px;\n}\n\n.content.lg {\n border-radius: 24px;\n width: 48px;\n height: 48px;\n}\n\n.icon {\n color: var(--viewer-annotation-callout-accent-color);\n}","import { Component, h, Host, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n\nimport { CalloutAnnotationData } from '../../lib/annotations/annotation';\nimport { ViewerIconSize } from '../viewer-icon/viewer-icon';\n\n@Component({\n tag: 'vertex-viewer-annotation-callout',\n styleUrl: 'viewer-annotation-callout.css',\n shadow: true,\n})\nexport class ViewerAnnotationCallout {\n /**\n * The data that describes how to render the callout annotation.\n */\n @Prop() public data!: CalloutAnnotationData;\n\n /**\n * The icon size to display.\n */\n @Prop() public iconSize: ViewerIconSize = 'sm';\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div\n class={classNames('content', this.iconSize)}\n style={{\n borderColor: this.data.accentColor,\n backgroundColor: this.data.primaryColor,\n }}\n >\n <vertex-viewer-icon\n class=\"icon\"\n name={this.data.icon}\n size={this.iconSize}\n style={{ color: this.data.accentColor }}\n ></vertex-viewer-icon>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":";;;8GAAA,MAAMA,EAA6B,IAAM,wjB,MCW5BC,EAAuB,MALpC,WAAAC,CAAAC,G,UAciBC,KAAAC,SAA2B,IAsB3C,CApBQ,MAAAC,GACL,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CACEC,MAAOC,EAAW,UAAWP,KAAKC,UAClCO,MAAO,CACLC,YAAaT,KAAKU,KAAKC,YACvBC,gBAAiBZ,KAAKU,KAAKG,eAG7BV,EAAA,sBAAAE,IAAA,2CACEC,MAAM,OACNQ,KAAMd,KAAKU,KAAKK,KAChBC,KAAMhB,KAAKC,SACXO,MAAO,CAAES,MAAOjB,KAAKU,KAAKC,gB","ignoreList":[]}
1
+ {"version":3,"names":["viewerAnnotationCalloutCss","ViewerAnnotationCallout","constructor","hostRef","this","iconSize","render","h","Host","key","class","classNames","style","borderColor","data","accentColor","backgroundColor","primaryColor","name","icon","size","color"],"sources":["src/components/viewer-annotation-callout/viewer-annotation-callout.css?tag=vertex-viewer-annotation-callout&encapsulation=shadow","src/components/viewer-annotation-callout/viewer-annotation-callout.tsx"],"sourcesContent":[":host {\n display: block;\n\n /**\n * @prop --viewer-annotation-callout-primary-color: A CSS color that\n * specifies the primary color of the callout.\n */\n --viewer-annotation-callout-primary-color: var(--blue-700);\n\n /**\n * @prop --viewer-annotation-callout-accent-color: A CSS color that\n * specifies a contrasting color to the primary color.\n */\n --viewer-annotation-callout-accent-color: var(--white);\n}\n\n.content {\n display: flex;\n align-items: center;\n box-sizing: border-box;\n justify-content: center;\n\n background-color: var(--viewer-annotation-callout-primary-color);\n border: 1px solid var(--viewer-annotation-callout-accent-color);\n}\n\n.content.sm {\n border-radius: 14px;\n width: 28px;\n height: 28px;\n}\n\n.content.md {\n border-radius: 19px;\n width: 38px;\n height: 38px;\n}\n\n.content.lg {\n border-radius: 24px;\n width: 48px;\n height: 48px;\n}\n\n.icon {\n color: var(--viewer-annotation-callout-accent-color);\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n\nimport { CalloutAnnotationData } from '../../lib/annotations/annotation';\nimport { ViewerIconSize } from '../viewer-icon/viewer-icon';\n\n@Component({\n tag: 'vertex-viewer-annotation-callout',\n styleUrl: 'viewer-annotation-callout.css',\n shadow: true,\n})\nexport class ViewerAnnotationCallout {\n /**\n * The data that describes how to render the callout annotation.\n */\n @Prop() public data!: CalloutAnnotationData;\n\n /**\n * The icon size to display.\n */\n @Prop() public iconSize: ViewerIconSize = 'sm';\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div\n class={classNames('content', this.iconSize)}\n style={{\n borderColor: this.data.accentColor,\n backgroundColor: this.data.primaryColor,\n }}\n >\n <vertex-viewer-icon\n class=\"icon\"\n name={this.data.icon}\n size={this.iconSize}\n style={{ color: this.data.accentColor }}\n ></vertex-viewer-icon>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":";;;8GAAA,MAAMA,EAA6B,IAAM,wjB,MCW5BC,EAAuB,MALpC,WAAAC,CAAAC,G,UAciBC,KAAAC,SAA2B,IAsB3C,CApBQ,MAAAC,GACL,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CACEC,MAAOC,EAAW,UAAWP,KAAKC,UAClCO,MAAO,CACLC,YAAaT,KAAKU,KAAKC,YACvBC,gBAAiBZ,KAAKU,KAAKG,eAG7BV,EAAA,sBAAAE,IAAA,2CACEC,MAAM,OACNQ,KAAMd,KAAKU,KAAKK,KAChBC,KAAMhB,KAAKC,SACXO,MAAO,CAAES,MAAOjB,KAAKU,KAAKC,gB","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{r as e,c as t,h as n,H as r,a as i}from"./p-CCVkga9Q.js";import{s}from"./p-DRh4_Z-g.js";import{F as o,C as a,A as l}from"./p-avWSFTeP.js";import{b as h,a as d,i as u}from"./p-UQXG8bCI.js";import"./p-CZZALKHT.js";import"./p-CDM7zNn0.js";import"./p-CG9AChtV.js";const c=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}:host([elevated=""]){z-index:100}`;const f=class{constructor(n){e(this,n);this.markupBegin=t(this,"markupBegin");this.markupEnd=t(this,"markupEnd");this.tool="arrow";this.disabled=false;this.startLineAnchorStyle="none";this.endLineAnchorStyle="arrow-triangle";this.centeringBehavior="none";this.scale=1;this.stateMap={};this.handleMarkupInteractionBegin=()=>{this.markupBegin.emit()};this.handleMarkupInteractionEnd=()=>{const{markupElement:e}=this.stateMap;if(h(e)){const{points:t,bounds:n}=e;if(t!=null&&t.length>0&&n!=null){this.markupEnd.emit(new o({points:t,bounds:n}))}}else if(d(e)){const{bounds:t}=e;if(t!=null){this.markupEnd.emit(new a({bounds:t}))}}else if(u(e)){const{start:t,end:n}=e;if(t!=null&&n!=null){this.markupEnd.emit(new l({start:t,end:n}))}}}}async handleViewerChanged(){if(this.stateMap.markupElement!=null){this.stateMap.markupElement.viewer=this.viewer}}handlePropertyChanged(){this.updateMarkupElement()}handleScalingConfigurationChanged(){this.updateMarkupElement()}componentDidLoad(){this.updateMarkupElement()}async reset(){const{markupElement:e}=this.stateMap;if(h(e)){e.points=undefined;e.bounds=undefined;e.mode="create"}else if(d(e)){e.bounds=undefined;e.mode="create"}else if(u(e)){e.start=undefined;e.end=undefined;e.mode="create"}}render(){if(!this.disabled){if(this.tool==="arrow"||this.tool==="circle"||this.tool==="freeform"){return n(r,null,n("slot",null))}else{return n(r,null,`Unsupported tool type '${this.tool}'.`)}}else{return n(r,null)}}createArrowMarkupElement(){if(this.arrowTemplateId!=null){const e=s(window.document.body,this.arrowTemplateId,u,(()=>console.warn(`Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`)),(()=>console.warn(`Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-arrow")}createCircleMarkupElement(){if(this.circleTemplateId!=null){const e=s(window.document.body,this.circleTemplateId,d,(()=>console.warn(`Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`)),(()=>console.warn(`Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-circle")}createFreeformMarkupElement(){if(this.freeformTemplateId!=null){const e=s(window.document.body,this.freeformTemplateId,h,(()=>console.warn(`Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`)),(()=>console.warn(`Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-freeform")}createNewMarkupElement(){switch(this.tool){case"arrow":return this.createArrowMarkupElement();case"circle":return this.createCircleMarkupElement();case"freeform":return this.createFreeformMarkupElement()}}updateMarkupElement(){const{markupElement:e}=this.stateMap;if(e!=null){e.remove();e.dispose();e.viewer=undefined;e.removeEventListener("interactionBegin",this.handleMarkupInteractionBegin);e.removeEventListener("interactionEnd",this.handleMarkupInteractionEnd)}if(!this.disabled){const e=this.createNewMarkupElement();this.hostEl.append(e);if(this.tool==="arrow"){e.startLineAnchorStyle=this.startLineAnchorStyle;e.endLineAnchorStyle=this.endLineAnchorStyle}e.mode="create";e.viewer=this.viewer;e.originatingViewport=this.originatingViewport;e.centeringBehavior=this.centeringBehavior;e.offset=this.offset;e.scale=this.scale;e.addEventListener("interactionBegin",this.handleMarkupInteractionBegin);e.addEventListener("interactionEnd",this.handleMarkupInteractionEnd);this.stateMap.markupElement=e}}get hostEl(){return i(this)}static get watchers(){return{viewer:[{handleViewerChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],disabled:[{handlePropertyChanged:0}],endLineAnchorStyle:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],startLineAnchorStyle:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],scale:[{handleScalingConfigurationChanged:0}],offset:[{handleScalingConfigurationChanged:0}],originatingViewport:[{handleScalingConfigurationChanged:0}],centeringBehavior:[{handleScalingConfigurationChanged:0}]}}};f.style=c();export{f as vertex_viewer_markup_tool};
5
- //# sourceMappingURL=p-fc7d9b2b.entry.js.map
4
+ import{r as e,c as t,h as n,H as r,a as i}from"./p-CCVkga9Q.js";import{s}from"./p-DRh4_Z-g.js";import{F as o,C as a,A as l}from"./p-JvS9LLoO.js";import{b as h,a as d,i as u}from"./p-DBfvBC5O.js";import"./p-2UsvOTHJ.js";import"./p-CDM7zNn0.js";import"./p-CG9AChtV.js";const c=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}:host([elevated='']){z-index:100}`;const f=class{constructor(n){e(this,n);this.markupBegin=t(this,"markupBegin");this.markupEnd=t(this,"markupEnd");this.tool="arrow";this.disabled=false;this.startLineAnchorStyle="none";this.endLineAnchorStyle="arrow-triangle";this.centeringBehavior="none";this.scale=1;this.stateMap={};this.handleMarkupInteractionBegin=()=>{this.markupBegin.emit()};this.handleMarkupInteractionEnd=()=>{const{markupElement:e}=this.stateMap;if(h(e)){const{points:t,bounds:n}=e;if(t!=null&&t.length>0&&n!=null){this.markupEnd.emit(new o({points:t,bounds:n}))}}else if(d(e)){const{bounds:t}=e;if(t!=null){this.markupEnd.emit(new a({bounds:t}))}}else if(u(e)){const{start:t,end:n}=e;if(t!=null&&n!=null){this.markupEnd.emit(new l({start:t,end:n}))}}}}async handleViewerChanged(){if(this.stateMap.markupElement!=null){this.stateMap.markupElement.viewer=this.viewer}}handlePropertyChanged(){this.updateMarkupElement()}handleScalingConfigurationChanged(){this.updateMarkupElement()}componentDidLoad(){this.updateMarkupElement()}async reset(){const{markupElement:e}=this.stateMap;if(h(e)){e.points=undefined;e.bounds=undefined;e.mode="create"}else if(d(e)){e.bounds=undefined;e.mode="create"}else if(u(e)){e.start=undefined;e.end=undefined;e.mode="create"}}render(){if(!this.disabled){if(this.tool==="arrow"||this.tool==="circle"||this.tool==="freeform"){return n(r,null,n("slot",null))}else{return n(r,null,`Unsupported tool type '${this.tool}'.`)}}else{return n(r,null)}}createArrowMarkupElement(){if(this.arrowTemplateId!=null){const e=s(window.document.body,this.arrowTemplateId,u,(()=>console.warn(`Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`)),(()=>console.warn(`Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-arrow")}createCircleMarkupElement(){if(this.circleTemplateId!=null){const e=s(window.document.body,this.circleTemplateId,d,(()=>console.warn(`Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`)),(()=>console.warn(`Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-circle")}createFreeformMarkupElement(){if(this.freeformTemplateId!=null){const e=s(window.document.body,this.freeformTemplateId,h,(()=>console.warn(`Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`)),(()=>console.warn(`Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`)));if(e!=null){return e}}return document.createElement("vertex-viewer-markup-freeform")}createNewMarkupElement(){switch(this.tool){case"arrow":return this.createArrowMarkupElement();case"circle":return this.createCircleMarkupElement();case"freeform":return this.createFreeformMarkupElement()}}updateMarkupElement(){const{markupElement:e}=this.stateMap;if(e!=null){e.remove();e.dispose();e.viewer=undefined;e.removeEventListener("interactionBegin",this.handleMarkupInteractionBegin);e.removeEventListener("interactionEnd",this.handleMarkupInteractionEnd)}if(!this.disabled){const e=this.createNewMarkupElement();this.hostEl.append(e);if(this.tool==="arrow"){e.startLineAnchorStyle=this.startLineAnchorStyle;e.endLineAnchorStyle=this.endLineAnchorStyle}e.mode="create";e.viewer=this.viewer;e.originatingViewport=this.originatingViewport;e.centeringBehavior=this.centeringBehavior;e.offset=this.offset;e.scale=this.scale;e.addEventListener("interactionBegin",this.handleMarkupInteractionBegin);e.addEventListener("interactionEnd",this.handleMarkupInteractionEnd);this.stateMap.markupElement=e}}get hostEl(){return i(this)}static get watchers(){return{viewer:[{handleViewerChanged:0}],arrowTemplateId:[{handlePropertyChanged:0}],circleTemplateId:[{handlePropertyChanged:0}],disabled:[{handlePropertyChanged:0}],endLineAnchorStyle:[{handlePropertyChanged:0}],freeformTemplateId:[{handlePropertyChanged:0}],startLineAnchorStyle:[{handlePropertyChanged:0}],tool:[{handlePropertyChanged:0}],scale:[{handleScalingConfigurationChanged:0}],offset:[{handleScalingConfigurationChanged:0}],originatingViewport:[{handleScalingConfigurationChanged:0}],centeringBehavior:[{handleScalingConfigurationChanged:0}]}}};f.style=c();export{f as vertex_viewer_markup_tool};
5
+ //# sourceMappingURL=p-c531ca97.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["viewerMarkupToolCss","ViewerMarkupTool","constructor","hostRef","this","tool","disabled","startLineAnchorStyle","endLineAnchorStyle","centeringBehavior","scale","stateMap","handleMarkupInteractionBegin","markupBegin","emit","handleMarkupInteractionEnd","markupElement","isVertexViewerFreeformMarkup","points","bounds","length","markupEnd","FreeformMarkup","isVertexViewerCircleMarkup","CircleMarkup","isVertexViewerArrowMarkup","start","end","ArrowMarkup","handleViewerChanged","viewer","handlePropertyChanged","updateMarkupElement","handleScalingConfigurationChanged","componentDidLoad","reset","undefined","mode","render","h","Host","createArrowMarkupElement","arrowTemplateId","element","stampTemplateWithId","window","document","body","console","warn","createElement","createCircleMarkupElement","circleTemplateId","createFreeformMarkupElement","freeformTemplateId","createNewMarkupElement","remove","dispose","removeEventListener","newMarkupElement","hostEl","append","originatingViewport","offset","addEventListener"],"sources":["src/components/viewer-markup-tool/viewer-markup-tool.css?tag=vertex-viewer-markup-tool&encapsulation=shadow","src/components/viewer-markup-tool/viewer-markup-tool.tsx"],"sourcesContent":[":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n\n:host([elevated=\"\"]) {\n z-index: 100;\n}","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\nimport { BasicViewer } from '@vertexvis/utils';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\n\n/**\n * The types of markup that can be performed by this tool.\n */\nexport type ViewerMarkupToolType = 'arrow' | 'circle' | 'freeform';\n\ninterface StateMap {\n markupElement?:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement;\n}\n\n@Component({\n tag: 'vertex-viewer-markup-tool',\n styleUrl: 'viewer-markup-tool.css',\n shadow: true,\n})\nexport class ViewerMarkupTool {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * Disables markups.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` or `<vertex-viewer>` element.\n */\n @Prop()\n public viewer?: BasicViewer;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * An event that is dispatched when a user begins a new markup.\n */\n @Event({ bubbles: true })\n public markupBegin!: EventEmitter<void>;\n\n /**\n * An event that is dispatched when a user has finished their markup.\n */\n @Event({ bubbles: true })\n public markupEnd!: EventEmitter<Markup>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n /**\n * Captures internal state that you want to preserve across dev refreshes, but\n * don't want to trigger a render when the state changes.\n */\n @State()\n private stateMap: StateMap = {};\n\n @Watch('viewer')\n protected async handleViewerChanged(): Promise<void> {\n if (this.stateMap.markupElement != null) {\n this.stateMap.markupElement.viewer = this.viewer;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('disabled')\n @Watch('endLineAnchorStyle')\n @Watch('freeformTemplateId')\n @Watch('startLineAnchorStyle')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updateMarkupElement();\n }\n\n @Watch('scale')\n @Watch('offset')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n protected handleScalingConfigurationChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updateMarkupElement();\n }\n\n /**\n * Resets the state of the internally managed markup element\n * to allow for creating a new markup. This state is automatically\n * managed when this element is placed as a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Method()\n public async reset(): Promise<void> {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n markupElement.points = undefined;\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n markupElement.start = undefined;\n markupElement.end = undefined;\n markupElement.mode = 'create';\n }\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n if (!this.disabled) {\n if (\n this.tool === 'arrow' ||\n this.tool === 'circle' ||\n this.tool === 'freeform'\n ) {\n return (\n <Host>\n <slot />\n </Host>\n );\n } else {\n return <Host>{`Unsupported tool type '${this.tool}'.`}</Host>;\n }\n } else {\n return <Host></Host>;\n }\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`,\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`,\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`,\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private createNewMarkupElement():\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement {\n switch (this.tool) {\n case 'arrow':\n return this.createArrowMarkupElement();\n case 'circle':\n return this.createCircleMarkupElement();\n case 'freeform':\n return this.createFreeformMarkupElement();\n }\n }\n\n private updateMarkupElement(): void {\n const { markupElement } = this.stateMap;\n if (markupElement != null) {\n markupElement.remove();\n markupElement.dispose();\n markupElement.viewer = undefined;\n markupElement.removeEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin,\n );\n markupElement.removeEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd,\n );\n }\n\n if (!this.disabled) {\n const newMarkupElement = this.createNewMarkupElement();\n this.hostEl.append(newMarkupElement);\n\n if (this.tool === 'arrow') {\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).startLineAnchorStyle = this.startLineAnchorStyle;\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).endLineAnchorStyle = this.endLineAnchorStyle;\n }\n\n newMarkupElement.mode = 'create';\n newMarkupElement.viewer = this.viewer;\n newMarkupElement.originatingViewport = this.originatingViewport;\n newMarkupElement.centeringBehavior = this.centeringBehavior;\n newMarkupElement.offset = this.offset;\n newMarkupElement.scale = this.scale;\n newMarkupElement.addEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin,\n );\n newMarkupElement.addEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd,\n );\n this.stateMap.markupElement = newMarkupElement;\n }\n }\n\n private handleMarkupInteractionBegin = (): void => {\n this.markupBegin.emit();\n };\n\n private handleMarkupInteractionEnd = (): void => {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n const { points, bounds } = markupElement;\n\n if (points != null && points.length > 0 && bounds != null) {\n this.markupEnd.emit(new FreeformMarkup({ points, bounds }));\n }\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n const { bounds } = markupElement;\n\n if (bounds != null) {\n this.markupEnd.emit(new CircleMarkup({ bounds }));\n }\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n const { start, end } = markupElement;\n\n if (start != null && end != null) {\n this.markupEnd.emit(new ArrowMarkup({ start, end }));\n }\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["viewerMarkupToolCss","ViewerMarkupTool","constructor","hostRef","this","tool","disabled","startLineAnchorStyle","endLineAnchorStyle","centeringBehavior","scale","stateMap","handleMarkupInteractionBegin","markupBegin","emit","handleMarkupInteractionEnd","markupElement","isVertexViewerFreeformMarkup","points","bounds","length","markupEnd","FreeformMarkup","isVertexViewerCircleMarkup","CircleMarkup","isVertexViewerArrowMarkup","start","end","ArrowMarkup","handleViewerChanged","viewer","handlePropertyChanged","updateMarkupElement","handleScalingConfigurationChanged","componentDidLoad","reset","undefined","mode","render","h","Host","createArrowMarkupElement","arrowTemplateId","element","stampTemplateWithId","window","document","body","console","warn","createElement","createCircleMarkupElement","circleTemplateId","createFreeformMarkupElement","freeformTemplateId","createNewMarkupElement","remove","dispose","removeEventListener","newMarkupElement","hostEl","append","originatingViewport","offset","addEventListener"],"sources":["src/components/viewer-markup-tool/viewer-markup-tool.css?tag=vertex-viewer-markup-tool&encapsulation=shadow","src/components/viewer-markup-tool/viewer-markup-tool.tsx"],"sourcesContent":[":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n\n:host([elevated='']) {\n z-index: 100;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Dimensions, Point } from '@vertexvis/geometry';\nimport { BasicViewer } from '@vertexvis/utils';\n\nimport { stampTemplateWithId } from '../../lib/templates';\nimport {\n ArrowMarkup,\n CircleMarkup,\n FreeformMarkup,\n Markup,\n MarkupCenteringBehavior,\n} from '../../lib/types/markup';\nimport {\n isVertexViewerArrowMarkup,\n LineAnchorStyle,\n} from '../viewer-markup-arrow/utils';\nimport { isVertexViewerCircleMarkup } from '../viewer-markup-circle/utils';\nimport { isVertexViewerFreeformMarkup } from '../viewer-markup-freeform/utils';\n\n/**\n * The types of markup that can be performed by this tool.\n */\nexport type ViewerMarkupToolType = 'arrow' | 'circle' | 'freeform';\n\ninterface StateMap {\n markupElement?:\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement;\n}\n\n@Component({\n tag: 'vertex-viewer-markup-tool',\n styleUrl: 'viewer-markup-tool.css',\n shadow: true,\n})\nexport class ViewerMarkupTool {\n /**\n * An HTML template that describes the HTML to use for new arrow\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-arrow>`.\n */\n @Prop()\n public arrowTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new circle\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-circle>`.\n */\n @Prop()\n public circleTemplateId?: string;\n\n /**\n * An HTML template that describes the HTML to use for new freeform\n * markup. It's expected that the template contains a\n * `<vertex-viewer-markup-freeform>`.\n */\n @Prop()\n public freeformTemplateId?: string;\n\n /**\n * The type of markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public tool: ViewerMarkupToolType = 'arrow';\n\n /**\n * Disables markups.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Prop()\n public disabled = false;\n\n /**\n * The viewer to connect to markup.\n *\n * This property will automatically be set when a child of a\n * `<vertex-viewer-markup>` or `<vertex-viewer>` element.\n */\n @Prop()\n public viewer?: BasicViewer;\n\n /**\n * The style of the starting anchor. This defaults to none.\n */\n @Prop({ mutable: true })\n public startLineAnchorStyle: LineAnchorStyle = 'none';\n\n /**\n * The style of the ending anchor. This defaults to 'arrow-triangle.'\n */\n @Prop({ mutable: true })\n public endLineAnchorStyle: LineAnchorStyle = 'arrow-triangle';\n\n /**\n * The original viewport dimensions where this markup was created. This value is used\n * to determine where the markup should be rendered relative to the current viewport,\n * enabling some markup to appear \"off-screen\".\n *\n * When provided, all NDC values will be considered relative to this viewport.\n */\n @Prop()\n public originatingViewport?: Dimensions.Dimensions;\n\n /**\n * Defines the behavior of the provided markup when the originating viewport is smaller\n * than the current viewport, or is scaled to a size smaller than the current viewport\n * using the `scale` property.\n *\n * Options:\n * - `x-only`: Markup will be centered horizontally, but not vertically.\n * - `y-only`: Markup will be centered vertically, but not horizontally.\n * - `both`: Markup will be centered both horizontally and vertically.\n * - `none`: Markup will not be centered (default).\n */\n @Prop()\n public centeringBehavior: MarkupCenteringBehavior = 'none';\n\n /**\n * The current offset of the visible viewport. This value is used to determine where\n * markup should be rendered relative to the current viewport, enabling some markup to appear \"off-screen\".\n *\n * When provided, all computed coordinates will be offset by this amount.\n */\n @Prop()\n public offset?: Point.Point;\n\n /**\n * The scale to render this markup at. This value is used to scale the element's bounds\n * along with any `offset` to determine the final computed coordinates.\n *\n * When provided, all computed coordinates will be scaled by this amount.\n */\n @Prop()\n public scale = 1;\n\n /**\n * An event that is dispatched when a user begins a new markup.\n */\n @Event({ bubbles: true })\n public markupBegin!: EventEmitter<void>;\n\n /**\n * An event that is dispatched when a user has finished their markup.\n */\n @Event({ bubbles: true })\n public markupEnd!: EventEmitter<Markup>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n /**\n * Captures internal state that you want to preserve across dev refreshes, but\n * don't want to trigger a render when the state changes.\n */\n @State()\n private stateMap: StateMap = {};\n\n @Watch('viewer')\n protected async handleViewerChanged(): Promise<void> {\n if (this.stateMap.markupElement != null) {\n this.stateMap.markupElement.viewer = this.viewer;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('arrowTemplateId')\n @Watch('circleTemplateId')\n @Watch('disabled')\n @Watch('endLineAnchorStyle')\n @Watch('freeformTemplateId')\n @Watch('startLineAnchorStyle')\n @Watch('tool')\n protected handlePropertyChanged(): void {\n this.updateMarkupElement();\n }\n\n @Watch('scale')\n @Watch('offset')\n @Watch('originatingViewport')\n @Watch('centeringBehavior')\n protected handleScalingConfigurationChanged(): void {\n this.updateMarkupElement();\n }\n\n /**\n * @ignore\n */\n protected componentDidLoad(): void {\n this.updateMarkupElement();\n }\n\n /**\n * Resets the state of the internally managed markup element\n * to allow for creating a new markup. This state is automatically\n * managed when this element is placed as a child of a\n * `<vertex-viewer-markup>` element.\n */\n @Method()\n public async reset(): Promise<void> {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n markupElement.points = undefined;\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n markupElement.bounds = undefined;\n markupElement.mode = 'create';\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n markupElement.start = undefined;\n markupElement.end = undefined;\n markupElement.mode = 'create';\n }\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n if (!this.disabled) {\n if (\n this.tool === 'arrow' ||\n this.tool === 'circle' ||\n this.tool === 'freeform'\n ) {\n return (\n <Host>\n <slot />\n </Host>\n );\n } else {\n return <Host>{`Unsupported tool type '${this.tool}'.`}</Host>;\n }\n } else {\n return <Host></Host>;\n }\n }\n\n private createArrowMarkupElement(): HTMLVertexViewerMarkupArrowElement {\n if (this.arrowTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.arrowTemplateId,\n isVertexViewerArrowMarkup,\n () =>\n console.warn(\n `Arrow template with ID ${this.arrowTemplateId} not found. Using default arrow element.`,\n ),\n () =>\n console.warn(\n `Arrow template does not contain a vertex-viewer-markup-arrow. Using default arrow element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-arrow');\n }\n\n private createCircleMarkupElement(): HTMLVertexViewerMarkupCircleElement {\n if (this.circleTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.circleTemplateId,\n isVertexViewerCircleMarkup,\n () =>\n console.warn(\n `Circle template with ID ${this.circleTemplateId} not found. Using default circle element.`,\n ),\n () =>\n console.warn(\n `Circle template does not contain a vertex-viewer-markup-circle. Using default circle element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-circle');\n }\n\n private createFreeformMarkupElement(): HTMLVertexViewerMarkupFreeformElement {\n if (this.freeformTemplateId != null) {\n const element = stampTemplateWithId(\n window.document.body,\n this.freeformTemplateId,\n isVertexViewerFreeformMarkup,\n () =>\n console.warn(\n `Freeform template with ID ${this.freeformTemplateId} not found. Using default freeform element.`,\n ),\n () =>\n console.warn(\n `Freeform template does not contain a vertex-viewer-markup-freeform. Using default freeform element.`,\n ),\n );\n\n if (element != null) {\n return element;\n }\n }\n\n return document.createElement('vertex-viewer-markup-freeform');\n }\n\n private createNewMarkupElement():\n | HTMLVertexViewerMarkupArrowElement\n | HTMLVertexViewerMarkupCircleElement\n | HTMLVertexViewerMarkupFreeformElement {\n switch (this.tool) {\n case 'arrow':\n return this.createArrowMarkupElement();\n case 'circle':\n return this.createCircleMarkupElement();\n case 'freeform':\n return this.createFreeformMarkupElement();\n }\n }\n\n private updateMarkupElement(): void {\n const { markupElement } = this.stateMap;\n if (markupElement != null) {\n markupElement.remove();\n markupElement.dispose();\n markupElement.viewer = undefined;\n markupElement.removeEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin,\n );\n markupElement.removeEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd,\n );\n }\n\n if (!this.disabled) {\n const newMarkupElement = this.createNewMarkupElement();\n this.hostEl.append(newMarkupElement);\n\n if (this.tool === 'arrow') {\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).startLineAnchorStyle = this.startLineAnchorStyle;\n (\n newMarkupElement as HTMLVertexViewerMarkupArrowElement\n ).endLineAnchorStyle = this.endLineAnchorStyle;\n }\n\n newMarkupElement.mode = 'create';\n newMarkupElement.viewer = this.viewer;\n newMarkupElement.originatingViewport = this.originatingViewport;\n newMarkupElement.centeringBehavior = this.centeringBehavior;\n newMarkupElement.offset = this.offset;\n newMarkupElement.scale = this.scale;\n newMarkupElement.addEventListener(\n 'interactionBegin',\n this.handleMarkupInteractionBegin,\n );\n newMarkupElement.addEventListener(\n 'interactionEnd',\n this.handleMarkupInteractionEnd,\n );\n this.stateMap.markupElement = newMarkupElement;\n }\n }\n\n private handleMarkupInteractionBegin = (): void => {\n this.markupBegin.emit();\n };\n\n private handleMarkupInteractionEnd = (): void => {\n const { markupElement } = this.stateMap;\n if (isVertexViewerFreeformMarkup(markupElement)) {\n const { points, bounds } = markupElement;\n\n if (points != null && points.length > 0 && bounds != null) {\n this.markupEnd.emit(new FreeformMarkup({ points, bounds }));\n }\n } else if (isVertexViewerCircleMarkup(markupElement)) {\n const { bounds } = markupElement;\n\n if (bounds != null) {\n this.markupEnd.emit(new CircleMarkup({ bounds }));\n }\n } else if (isVertexViewerArrowMarkup(markupElement)) {\n const { start, end } = markupElement;\n\n if (start != null && end != null) {\n this.markupEnd.emit(new ArrowMarkup({ start, end }));\n }\n }\n };\n}\n"],"mappings":";;;2QAAA,MAAMA,EAAsB,IAAM,8G,MC+CrBC,EAAgB,MAL7B,WAAAC,CAAAC,G,oFAqCSC,KAAAC,KAA6B,QAS7BD,KAAAE,SAAW,MAeXF,KAAAG,qBAAwC,OAMxCH,KAAAI,mBAAsC,iBAwBtCJ,KAAAK,kBAA6C,OAkB7CL,KAAAM,MAAQ,EAsBPN,KAAAO,SAAqB,GAyNrBP,KAAAQ,6BAA+B,KACrCR,KAAKS,YAAYC,MAAM,EAGjBV,KAAAW,2BAA6B,KACnC,MAAMC,cAAEA,GAAkBZ,KAAKO,SAC/B,GAAIM,EAA6BD,GAAgB,CAC/C,MAAME,OAAEA,EAAMC,OAAEA,GAAWH,EAE3B,GAAIE,GAAU,MAAQA,EAAOE,OAAS,GAAKD,GAAU,KAAM,CACzDf,KAAKiB,UAAUP,KAAK,IAAIQ,EAAe,CAAEJ,SAAQC,W,OAE9C,GAAII,EAA2BP,GAAgB,CACpD,MAAMG,OAAEA,GAAWH,EAEnB,GAAIG,GAAU,KAAM,CAClBf,KAAKiB,UAAUP,KAAK,IAAIU,EAAa,CAAEL,W,OAEpC,GAAIM,EAA0BT,GAAgB,CACnD,MAAMU,MAAEA,EAAKC,IAAEA,GAAQX,EAEvB,GAAIU,GAAS,MAAQC,GAAO,KAAM,CAChCvB,KAAKiB,UAAUP,KAAK,IAAIc,EAAY,CAAEF,QAAOC,Q,GAIpD,CAhPW,yBAAME,GACd,GAAIzB,KAAKO,SAASK,eAAiB,KAAM,CACvCZ,KAAKO,SAASK,cAAcc,OAAS1B,KAAK0B,M,EAcpC,qBAAAC,GACR3B,KAAK4B,qB,CAOG,iCAAAC,GACR7B,KAAK4B,qB,CAMG,gBAAAE,GACR9B,KAAK4B,qB,CAUA,WAAMG,GACX,MAAMnB,cAAEA,GAAkBZ,KAAKO,SAC/B,GAAIM,EAA6BD,GAAgB,CAC/CA,EAAcE,OAASkB,UACvBpB,EAAcG,OAASiB,UACvBpB,EAAcqB,KAAO,Q,MAChB,GAAId,EAA2BP,GAAgB,CACpDA,EAAcG,OAASiB,UACvBpB,EAAcqB,KAAO,Q,MAChB,GAAIZ,EAA0BT,GAAgB,CACnDA,EAAcU,MAAQU,UACtBpB,EAAcW,IAAMS,UACpBpB,EAAcqB,KAAO,Q,EAOf,MAAAC,GACR,IAAKlC,KAAKE,SAAU,CAClB,GACEF,KAAKC,OAAS,SACdD,KAAKC,OAAS,UACdD,KAAKC,OAAS,WACd,CACA,OACEkC,EAACC,EAAI,KACHD,EAAA,a,KAGC,CACL,OAAOA,EAACC,EAAI,KAAE,0BAA0BpC,KAAKC,S,MAE1C,CACL,OAAOkC,EAACC,EAAI,K,EAIR,wBAAAC,GACN,GAAIrC,KAAKsC,iBAAmB,KAAM,CAChC,MAAMC,EAAUC,EACdC,OAAOC,SAASC,KAChB3C,KAAKsC,gBACLjB,GACA,IACEuB,QAAQC,KACN,0BAA0B7C,KAAKsC,6DAEnC,IACEM,QAAQC,KACN,gGAIN,GAAIN,GAAW,KAAM,CACnB,OAAOA,C,EAIX,OAAOG,SAASI,cAAc,6B,CAGxB,yBAAAC,GACN,GAAI/C,KAAKgD,kBAAoB,KAAM,CACjC,MAAMT,EAAUC,EACdC,OAAOC,SAASC,KAChB3C,KAAKgD,iBACL7B,GACA,IACEyB,QAAQC,KACN,2BAA2B7C,KAAKgD,+DAEpC,IACEJ,QAAQC,KACN,mGAIN,GAAIN,GAAW,KAAM,CACnB,OAAOA,C,EAIX,OAAOG,SAASI,cAAc,8B,CAGxB,2BAAAG,GACN,GAAIjD,KAAKkD,oBAAsB,KAAM,CACnC,MAAMX,EAAUC,EACdC,OAAOC,SAASC,KAChB3C,KAAKkD,mBACLrC,GACA,IACE+B,QAAQC,KACN,6BAA6B7C,KAAKkD,mEAEtC,IACEN,QAAQC,KACN,yGAIN,GAAIN,GAAW,KAAM,CACnB,OAAOA,C,EAIX,OAAOG,SAASI,cAAc,gC,CAGxB,sBAAAK,GAIN,OAAQnD,KAAKC,MACX,IAAK,QACH,OAAOD,KAAKqC,2BACd,IAAK,SACH,OAAOrC,KAAK+C,4BACd,IAAK,WACH,OAAO/C,KAAKiD,8B,CAIV,mBAAArB,GACN,MAAMhB,cAAEA,GAAkBZ,KAAKO,SAC/B,GAAIK,GAAiB,KAAM,CACzBA,EAAcwC,SACdxC,EAAcyC,UACdzC,EAAcc,OAASM,UACvBpB,EAAc0C,oBACZ,mBACAtD,KAAKQ,8BAEPI,EAAc0C,oBACZ,iBACAtD,KAAKW,2B,CAIT,IAAKX,KAAKE,SAAU,CAClB,MAAMqD,EAAmBvD,KAAKmD,yBAC9BnD,KAAKwD,OAAOC,OAAOF,GAEnB,GAAIvD,KAAKC,OAAS,QAAS,CAEvBsD,EACApD,qBAAuBH,KAAKG,qBAE5BoD,EACAnD,mBAAqBJ,KAAKI,kB,CAG9BmD,EAAiBtB,KAAO,SACxBsB,EAAiB7B,OAAS1B,KAAK0B,OAC/B6B,EAAiBG,oBAAsB1D,KAAK0D,oBAC5CH,EAAiBlD,kBAAoBL,KAAKK,kBAC1CkD,EAAiBI,OAAS3D,KAAK2D,OAC/BJ,EAAiBjD,MAAQN,KAAKM,MAC9BiD,EAAiBK,iBACf,mBACA5D,KAAKQ,8BAEP+C,EAAiBK,iBACf,iBACA5D,KAAKW,4BAEPX,KAAKO,SAASK,cAAgB2C,C","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
+ */
4
+ import{r as i,c as e,h as t,H as s,a as o}from"./p-CCVkga9Q.js";import{a as l,V as r}from"./p-Bdf4AcJ2.js";import{b as h}from"./p-DxMDDbmh.js";import{g as n}from"./p-D0aTA_2m.js";import"./p-5kcpg4MZ.js";import"./p-CG9AChtV.js";import"./p-CDM7zNn0.js";import"./p-2UsvOTHJ.js";class d{constructor(i){this.controller=i;this.handleDragBegin=this.handleDragBegin.bind(this);this.handleDrag=this.handleDrag.bind(this);this.handleDragEnd=this.handleDragEnd.bind(this);this.enabled=true}initialize(i,e){this.element=i;this.api=e;this.element.addEventListener("pointerdown",this.handleDragBegin);this.addCrosshairCursor()}dispose(){var i,e,t;(i=this.element)===null||i===void 0?void 0:i.removeEventListener("pointerdown",this.handleDragBegin);window.removeEventListener("pointermove",this.handleDrag);window.removeEventListener("pointerup",this.handleDragEnd);(e=this.crosshairCursorDisposable)===null||e===void 0?void 0:e.dispose();(t=this.waitCursorDisposable)===null||t===void 0?void 0:t.dispose();this.element=undefined;this.api=undefined;this.enabled=true}disable(){this.enabled=false}enable(){this.enabled=true}handleDragBegin(i){var e;if(this.enabled&&this.isPrimaryMouseButtonClick(i)&&!this.isInteracting){this.elementBounds=(e=this.element)===null||e===void 0?void 0:e.getBoundingClientRect();this.isInteracting=true;this.controller.setStartPoint(n(i,this.elementBounds));window.addEventListener("pointermove",this.handleDrag);window.addEventListener("pointerup",this.handleDragEnd)}}handleDrag(i){if(this.enabled){this.controller.setEndPoint(n(i,this.elementBounds))}}async handleDragEnd(){var i,e;this.isInteracting=false;window.removeEventListener("pointermove",this.handleDrag);window.removeEventListener("pointerup",this.handleDragEnd);(i=this.crosshairCursorDisposable)===null||i===void 0?void 0:i.dispose();if(this.enabled){this.addWaitCursor();try{await this.controller.execute()}finally{(e=this.waitCursorDisposable)===null||e===void 0?void 0:e.dispose();this.addCrosshairCursor()}}}isPrimaryMouseButtonClick(i){return i.buttons===1}addCrosshairCursor(){var i,e;(i=this.crosshairCursorDisposable)===null||i===void 0?void 0:i.dispose();this.crosshairCursorDisposable=(e=this.api)===null||e===void 0?void 0:e.addCursor(h)}addWaitCursor(){var i,e;(i=this.waitCursorDisposable)===null||i===void 0?void 0:i.dispose();this.waitCursorDisposable=(e=this.api)===null||e===void 0?void 0:e.addCursor("wait")}}const a=()=>`:host{--viewer-box-query-outline-exclusive-color:#0099cc;--viewer-box-query-outline-exclusive-border-style:solid;--viewer-box-query-outline-inclusive-color:#00cc00;--viewer-box-query-outline-inclusive-border-style:dashed;--viewer-box-query-outline-border-radius:0.25rem;--viewer-box-query-outline-fill-opacity:0.25}.bounds{position:absolute}.outline{position:absolute;top:0;left:0;width:100%;height:100%;box-sizing:border-box;border-radius:var(--viewer-box-query-outline-border-radius)}:host([exclusive='true']) .outline{border:3px var(--viewer-box-query-outline-exclusive-border-style) var(--viewer-box-query-outline-exclusive-color)}:host([inclusive='true']) .outline{border:3px var(--viewer-box-query-outline-inclusive-border-style) var(--viewer-box-query-outline-inclusive-color)}.fill{position:absolute;top:0;left:0;width:100%;height:100%;opacity:var(--viewer-box-query-outline-fill-opacity);border-radius:var(--viewer-box-query-outline-border-radius)}:host([exclusive='true']) .fill{background-color:var(--viewer-box-query-outline-exclusive-color)}:host([inclusive='true']) .fill{background-color:var(--viewer-box-query-outline-inclusive-color)}`;const u=class{constructor(t){i(this,t);this.controllerChanged=e(this,"controllerChanged");this.operationType="clearAndSelect";this.handleScreenBoundsChanged=this.handleScreenBoundsChanged.bind(this);this.handleExecuteStarted=this.handleExecuteStarted.bind(this);this.handleExecuteComplete=this.handleExecuteComplete.bind(this)}componentWillLoad(){var i;this.model=(i=this.model)!==null&&i!==void 0?i:new l(this.mode);this.screenBoundsChangedDisposable=this.model.onScreenBoundsChanged(this.handleScreenBoundsChanged);this.handleViewerChanged(this.viewer);this.handleControllerChange(this.controller);this.handleDefaultOperationChange(this.operationType)}disconnectedCallback(){var i,e,t,s;(i=this.model)===null||i===void 0?void 0:i.reset();(e=this.screenBoundsChangedDisposable)===null||e===void 0?void 0:e.dispose();(t=this.operationStartedDisposable)===null||t===void 0?void 0:t.dispose();(s=this.operationCompleteDisposable)===null||s===void 0?void 0:s.dispose();this.deregisterInteractionHandler()}handleViewerChanged(i){this.deregisterInteractionHandler();if(this.model!=null&&i!=null){this.controller=new r(this.model,i);this.handleDefaultOperationChange(this.operationType);this.registerInteractionHandler(this.controller,i)}}handleDefaultOperationChange(i){switch(i){case"clearAndSelect":this.setDefaultClearAndSelectOperation();break;case"select":this.setDefaultSelectOperation();break;case"deselect":this.setDefaultDeselectOperation();break}}handleModeChange(i){var e;(e=this.model)===null||e===void 0?void 0:e.setMode(i)}handleControllerChange(i){var e,t;(e=this.operationStartedDisposable)===null||e===void 0?void 0:e.dispose();(t=this.operationCompleteDisposable)===null||t===void 0?void 0:t.dispose();this.operationStartedDisposable=i===null||i===void 0?void 0:i.onExecuteStarted(this.handleExecuteStarted);this.operationStartedDisposable=i===null||i===void 0?void 0:i.onExecuteComplete(this.handleExecuteComplete);this.controllerChanged.emit(this.controller)}render(){return t(s,{key:"754fc6867397c6f7f366b078f9a4403344cb5137"},t("vertex-viewer-layer",{key:"df484423586be7270901b01bbabe62659a681a3a"},this.details!=null&&t("div",{key:"354f3d5f616264e8635258b7e9f05ab8350338ff",class:"bounds",style:{left:`${this.details.screenBounds.x}px`,top:`${this.details.screenBounds.y}px`,width:`${this.details.screenBounds.width}px`,height:`${this.details.screenBounds.height}px`}},t("slot",{key:"fa7330cb175bd1b40cf1aea9b0e845315b05c7b2",name:"bounds"},t("div",{key:"6d03c4c016ce759f51a61406a79769c5c8c00acd",class:"outline"}),t("div",{key:"b648029136d216ca805cc73c66c61d74e1297a5b",class:"fill"})))))}handleScreenBoundsChanged(i){this.details=i;this.updateTypeAttribute(i===null||i===void 0?void 0:i.type)}handleExecuteStarted(){var i;(i=this.interactionHandler)===null||i===void 0?void 0:i.disable()}handleExecuteComplete(){var i;(i=this.interactionHandler)===null||i===void 0?void 0:i.enable()}async registerInteractionHandler(i,e){this.interactionHandler=new d(i);this.interactionHandlerDisposable=await e.registerInteractionHandler(this.interactionHandler)}deregisterInteractionHandler(){var i,e;(i=this.interactionHandlerDisposable)===null||i===void 0?void 0:i.dispose();(e=this.interactionHandler)===null||e===void 0?void 0:e.dispose();this.interactionHandler=undefined}updateTypeAttribute(i){this.hostEl.setAttribute("inclusive",`${i==="inclusive"}`);this.hostEl.setAttribute("exclusive",`${i==="exclusive"}`)}setDefaultClearAndSelectOperation(){var i,e;(i=this.controller)===null||i===void 0?void 0:i.setOperationTransform((i=>i.select()));(e=this.controller)===null||e===void 0?void 0:e.setAdditionalTransforms([i=>i.items.where((i=>i.withSelected())).deselect()])}setDefaultSelectOperation(){var i,e;(i=this.controller)===null||i===void 0?void 0:i.setOperationTransform((i=>i.select()));(e=this.controller)===null||e===void 0?void 0:e.setAdditionalTransforms([])}setDefaultDeselectOperation(){var i,e;(i=this.controller)===null||i===void 0?void 0:i.setOperationTransform((i=>i.deselect()));(e=this.controller)===null||e===void 0?void 0:e.setAdditionalTransforms([])}get hostEl(){return o(this)}static get watchers(){return{viewer:[{handleViewerChanged:0}],operationType:[{handleDefaultOperationChange:0}],mode:[{handleModeChange:0}],controller:[{handleControllerChange:0}]}}};u.style=a();export{u as vertex_viewer_box_query_tool};
5
+ //# sourceMappingURL=p-c9dee5c4.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["VolumeIntersectionQueryInteractionHandler","constructor","controller","this","handleDragBegin","bind","handleDrag","handleDragEnd","enabled","initialize","element","api","addEventListener","addCrosshairCursor","dispose","_a","removeEventListener","window","_b","crosshairCursorDisposable","_c","waitCursorDisposable","undefined","disable","enable","event","isPrimaryMouseButtonClick","isInteracting","elementBounds","getBoundingClientRect","setStartPoint","getMouseClientPosition","setEndPoint","addWaitCursor","execute","buttons","addCursor","boxQueryCursor","viewerBoxQueryToolCss","ViewerBoxQueryTool","hostRef","operationType","handleScreenBoundsChanged","handleExecuteStarted","handleExecuteComplete","componentWillLoad","model","VolumeIntersectionQueryModel","mode","screenBoundsChangedDisposable","onScreenBoundsChanged","handleViewerChanged","viewer","handleControllerChange","handleDefaultOperationChange","disconnectedCallback","reset","operationStartedDisposable","_d","operationCompleteDisposable","deregisterInteractionHandler","newViewer","VolumeIntersectionQueryController","registerInteractionHandler","updatedOperationType","setDefaultClearAndSelectOperation","setDefaultSelectOperation","setDefaultDeselectOperation","handleModeChange","updatedMode","setMode","onExecuteStarted","onExecuteComplete","controllerChanged","emit","render","h","Host","key","details","class","style","left","screenBounds","x","top","y","width","height","name","updateTypeAttribute","type","interactionHandler","interactionHandlerDisposable","hostEl","setAttribute","setOperationTransform","builder","select","setAdditionalTransforms","op","items","where","q","withSelected","deselect"],"sources":["src/lib/volume-intersection/interactions.ts","src/components/viewer-box-query-tool/viewer-box-query-tool.css?tag=vertex-viewer-box-query-tool&encapsulation=shadow","src/components/viewer-box-query-tool/viewer-box-query-tool.tsx"],"sourcesContent":["import { Disposable } from '@vertexvis/utils';\n\nimport { boxQueryCursor } from '../cursors';\nimport { getMouseClientPosition } from '../dom';\nimport { InteractionApi } from '../interactions';\nimport { InteractionHandler } from '../interactions/interactionHandler';\nimport { VolumeIntersectionQueryController } from './controller';\n\nexport class VolumeIntersectionQueryInteractionHandler implements InteractionHandler {\n private element?: HTMLElement;\n private api?: InteractionApi;\n private isInteracting?: boolean;\n private enabled?: boolean;\n private elementBounds?: DOMRect;\n private crosshairCursorDisposable?: Disposable;\n private waitCursorDisposable?: Disposable;\n\n public constructor(private controller: VolumeIntersectionQueryController) {\n this.handleDragBegin = this.handleDragBegin.bind(this);\n this.handleDrag = this.handleDrag.bind(this);\n this.handleDragEnd = this.handleDragEnd.bind(this);\n\n this.enabled = true;\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.element.addEventListener('pointerdown', this.handleDragBegin);\n this.addCrosshairCursor();\n }\n\n public dispose(): void {\n this.element?.removeEventListener('pointerdown', this.handleDragBegin);\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleDragEnd);\n this.crosshairCursorDisposable?.dispose();\n this.waitCursorDisposable?.dispose();\n\n this.element = undefined;\n this.api = undefined;\n this.enabled = true;\n }\n\n public disable(): void {\n this.enabled = false;\n }\n\n public enable(): void {\n this.enabled = true;\n }\n\n private handleDragBegin(event: PointerEvent): void {\n if (\n this.enabled &&\n this.isPrimaryMouseButtonClick(event) &&\n !this.isInteracting\n ) {\n this.elementBounds = this.element?.getBoundingClientRect();\n this.isInteracting = true;\n this.controller.setStartPoint(\n getMouseClientPosition(event, this.elementBounds),\n );\n\n window.addEventListener('pointermove', this.handleDrag);\n window.addEventListener('pointerup', this.handleDragEnd);\n }\n }\n\n private handleDrag(event: PointerEvent): void {\n if (this.enabled) {\n this.controller.setEndPoint(\n getMouseClientPosition(event, this.elementBounds),\n );\n }\n }\n\n private async handleDragEnd(): Promise<void> {\n this.isInteracting = false;\n\n window.removeEventListener('pointermove', this.handleDrag);\n window.removeEventListener('pointerup', this.handleDragEnd);\n\n this.crosshairCursorDisposable?.dispose();\n if (this.enabled) {\n this.addWaitCursor();\n try {\n await this.controller.execute();\n } finally {\n this.waitCursorDisposable?.dispose();\n this.addCrosshairCursor();\n }\n }\n }\n\n private isPrimaryMouseButtonClick(event: PointerEvent): boolean {\n return event.buttons === 1;\n }\n\n private addCrosshairCursor(): void {\n this.crosshairCursorDisposable?.dispose();\n this.crosshairCursorDisposable = this.api?.addCursor(boxQueryCursor);\n }\n\n private addWaitCursor(): void {\n this.waitCursorDisposable?.dispose();\n this.waitCursorDisposable = this.api?.addCursor('wait');\n }\n}\n",":host {\n /**\n * @prop --viewer-box-query-outline-exclusive-color: A CSS color that\n * specifies the color of box for an exclusive query. This will\n * be used in combination with `--viewer-box-query-outline-fill-opacity`\n * for the background color of the box. Defaults to `#0099cc`.\n */\n --viewer-box-query-outline-exclusive-color: #0099cc;\n /**\n * @prop --viewer-box-query-outline-exclusive-border-style: A border\n * style that specifies the type of border to display around the box for an\n * exclusive query. Defaults to `solid`.\n */\n --viewer-box-query-outline-exclusive-border-style: solid;\n /**\n * @prop --viewer-box-query-outline-inclusive-color: A CSS color that\n * specifies the color of box for an inclusive query. This will\n * be used in combination with `--viewer-box-query-outline-fill-opacity`\n * for the background color of the box. Defaults to `#00cc00`.\n */\n --viewer-box-query-outline-inclusive-color: #00cc00;\n /**\n * @prop --viewer-box-query-outline-inclusive-border-style: A border\n * style that specifies the type of border to display around the box for an\n * inclusive query. Defaults to `dashed`.\n */\n --viewer-box-query-outline-inclusive-border-style: dashed;\n /**\n * @prop --viewer-box-query-outline-border-radius: A CSS length that\n * specifies the border radius of the drawn box. Defaults to `0.25rem`.\n */\n --viewer-box-query-outline-border-radius: 0.25rem;\n /**\n * @prop--viewer-box-query-outline-fill-opacity: A number between \n * 0 and 1 that specifies the opacity of the background of the drawn box.\n * Defaults to `0.25`.\n */\n --viewer-box-query-outline-fill-opacity: 0.25;\n}\n\n.bounds {\n position: absolute;\n}\n\n.outline {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n border-radius: var(--viewer-box-query-outline-border-radius);\n}\n\n:host([exclusive='true']) .outline {\n border: 3px var(--viewer-box-query-outline-exclusive-border-style)\n var(--viewer-box-query-outline-exclusive-color);\n}\n\n:host([inclusive='true']) .outline {\n border: 3px var(--viewer-box-query-outline-inclusive-border-style)\n var(--viewer-box-query-outline-inclusive-color);\n}\n\n.fill {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n opacity: var(--viewer-box-query-outline-fill-opacity);\n border-radius: var(--viewer-box-query-outline-border-radius);\n}\n\n:host([exclusive='true']) .fill {\n background-color: var(--viewer-box-query-outline-exclusive-color);\n}\n\n:host([inclusive='true']) .fill {\n background-color: var(--viewer-box-query-outline-inclusive-color);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { VolumeIntersectionQueryController } from '../../lib/volume-intersection/controller';\nimport { VolumeIntersectionQueryInteractionHandler } from '../../lib/volume-intersection/interactions';\nimport {\n QueryType,\n VolumeIntersectionQueryDetails,\n VolumeIntersectionQueryModel,\n} from '../../lib/volume-intersection/model';\nimport {\n VolumeIntersectionQueryMode,\n VolumeIntersectionQueryType,\n} from './types';\n\n/**\n * The `ViewerBoxQueryTool` allows for the drawing of a \"box\" on screen to represent\n * a query for items in a specific area of the viewer. This tool then allows for an\n * operation to be performed on the items contained (exclusive) by the box or both\n * contained by and intersecting with (inclusive) the box.\n */\n@Component({\n tag: 'vertex-viewer-box-query-tool',\n styleUrl: 'viewer-box-query-tool.css',\n shadow: true,\n})\nexport class ViewerBoxQueryTool {\n /**\n * The viewer that this component is bound to. This is automatically assigned\n * if added to the light-dom of a parent viewer element.\n */\n @Prop()\n public viewer?: HTMLVertexViewerElement;\n\n /**\n * The controller that is responsible for performing operations using the\n * volume intersection query defined by the drawn box and updating the model.\n */\n @Prop({ mutable: true })\n public controller?: VolumeIntersectionQueryController;\n\n /**\n * The model that contains the points representing the corners of the box\n * displayed on screen, the type of the query to be performed, and methods\n * for setting these values.\n */\n @Prop({ mutable: true })\n public model?: VolumeIntersectionQueryModel;\n\n /**\n * The default operation to perform when a drag has completed and the intersection\n * query will be run. Defaults to `clearAndSelect`, and can be changed to `select` or `deselect`.\n *\n * `clearAndSelect` will clear all existing selection, and select the results of the query.\n * `select` will maintain existing selection, and select the results of the query.\n * `deselect` will maintain existing selection, and deselect the results of the query.\n *\n * The operation behavior for this intersection query tool can also be changed by\n * providing a custom implementation of the `VolumeIntersectionQueryController`, or\n * by using the `setOperationTransform` method of the default controller.\n */\n @Prop()\n public operationType: VolumeIntersectionQueryType = 'clearAndSelect';\n\n /**\n * An optional value to specify a singular mode of intersection query. This value\n * defaults to `undefined`, which will indicate that both `exclusive` and `inclusive`\n * queries should be made, with `inclusive` being represented by a left to right\n * drag behavior and `exclusive` being represented by a right to left drag.\n *\n * Setting this value to `inclusive` will cause dragging left to right and left to right\n * to result in an `inclusive` query, and the box will only be styled for `inclusive` queries.\n *\n * Setting this value to `exclusive` will cause dragging left to right and left to right\n * to result in an `exclusive` query, and the box will only be styled for `exclusive` queries.\n */\n @Prop()\n public mode?: VolumeIntersectionQueryMode;\n\n @State()\n private details?: VolumeIntersectionQueryDetails;\n\n /**\n * Event emitted when the `VolumeIntersectionQueryController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<VolumeIntersectionQueryController>;\n\n @Element()\n private hostEl!: HTMLVertexViewerBoxQueryToolElement;\n\n private interactionHandler?: VolumeIntersectionQueryInteractionHandler;\n private interactionHandlerDisposable?: Disposable;\n\n private operationStartedDisposable?: Disposable;\n private operationCompleteDisposable?: Disposable;\n private screenBoundsChangedDisposable?: Disposable;\n\n public constructor() {\n this.handleScreenBoundsChanged = this.handleScreenBoundsChanged.bind(this);\n this.handleExecuteStarted = this.handleExecuteStarted.bind(this);\n this.handleExecuteComplete = this.handleExecuteComplete.bind(this);\n }\n\n public componentWillLoad(): void {\n this.model = this.model ?? new VolumeIntersectionQueryModel(this.mode);\n\n this.screenBoundsChangedDisposable = this.model.onScreenBoundsChanged(\n this.handleScreenBoundsChanged,\n );\n\n this.handleViewerChanged(this.viewer);\n this.handleControllerChange(this.controller);\n this.handleDefaultOperationChange(this.operationType);\n }\n\n public disconnectedCallback(): void {\n this.model?.reset();\n this.screenBoundsChangedDisposable?.dispose();\n this.operationStartedDisposable?.dispose();\n this.operationCompleteDisposable?.dispose();\n this.deregisterInteractionHandler();\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(newViewer?: HTMLVertexViewerElement): void {\n this.deregisterInteractionHandler();\n\n if (this.model != null && newViewer != null) {\n this.controller = new VolumeIntersectionQueryController(\n this.model,\n newViewer,\n );\n this.handleDefaultOperationChange(this.operationType);\n this.registerInteractionHandler(this.controller, newViewer);\n }\n }\n\n /**\n * @ignore\n */\n @Watch('operationType')\n protected handleDefaultOperationChange(\n updatedOperationType: VolumeIntersectionQueryType,\n ): void {\n switch (updatedOperationType) {\n case 'clearAndSelect':\n this.setDefaultClearAndSelectOperation();\n break;\n case 'select':\n this.setDefaultSelectOperation();\n break;\n case 'deselect':\n this.setDefaultDeselectOperation();\n break;\n }\n }\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected handleModeChange(updatedMode?: VolumeIntersectionQueryMode): void {\n this.model?.setMode(updatedMode);\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChange(\n controller?: VolumeIntersectionQueryController,\n ): void {\n this.operationStartedDisposable?.dispose();\n this.operationCompleteDisposable?.dispose();\n\n this.operationStartedDisposable = controller?.onExecuteStarted(\n this.handleExecuteStarted,\n );\n this.operationStartedDisposable = controller?.onExecuteComplete(\n this.handleExecuteComplete,\n );\n\n this.controllerChanged.emit(this.controller);\n }\n\n /**\n * @ignore\n */\n protected render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <vertex-viewer-layer>\n {this.details != null && (\n <div\n class=\"bounds\"\n style={{\n left: `${this.details.screenBounds.x}px`,\n top: `${this.details.screenBounds.y}px`,\n width: `${this.details.screenBounds.width}px`,\n height: `${this.details.screenBounds.height}px`,\n }}\n >\n <slot name=\"bounds\">\n <div class=\"outline\"></div>\n <div class=\"fill\"></div>\n </slot>\n </div>\n )}\n </vertex-viewer-layer>\n </Host>\n );\n }\n\n private handleScreenBoundsChanged(\n details?: VolumeIntersectionQueryDetails,\n ): void {\n this.details = details;\n\n this.updateTypeAttribute(details?.type);\n }\n\n private handleExecuteStarted(): void {\n this.interactionHandler?.disable();\n }\n\n private handleExecuteComplete(): void {\n this.interactionHandler?.enable();\n }\n\n private async registerInteractionHandler(\n controller: VolumeIntersectionQueryController,\n viewer: HTMLVertexViewerElement,\n ): Promise<void> {\n this.interactionHandler = new VolumeIntersectionQueryInteractionHandler(\n controller,\n );\n this.interactionHandlerDisposable = await viewer.registerInteractionHandler(\n this.interactionHandler,\n );\n }\n\n private deregisterInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private updateTypeAttribute(type?: QueryType): void {\n this.hostEl.setAttribute('inclusive', `${type === 'inclusive'}`);\n this.hostEl.setAttribute('exclusive', `${type === 'exclusive'}`);\n }\n\n private setDefaultClearAndSelectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.select());\n this.controller?.setAdditionalTransforms([\n (op) => op.items.where((q) => q.withSelected()).deselect(),\n ]);\n }\n\n private setDefaultSelectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.select());\n this.controller?.setAdditionalTransforms([]);\n }\n\n private setDefaultDeselectOperation(): void {\n this.controller?.setOperationTransform((builder) => builder.deselect());\n this.controller?.setAdditionalTransforms([]);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
+ */
4
+ import{r as e,h as t,H as i}from"./p-CCVkga9Q.js";import{c as o}from"./p-Dw4-tG-V.js";import"./p-CG9AChtV.js";const r=()=>`:host{cursor:pointer}.viewer-button{align-items:center;background:none;border:none;color:inherit;cursor:inherit;display:flex;padding:0}`;const n=class{constructor(t){e(this,t);this.ariaLabel=null}render(){return t(i,{key:"48d5d5322a3a9a0ea1057612fe2a8f1c9bef5171"},t("button",{key:"d0e8582256ea5b9a10e33819991e2d6e76271c43",class:"viewer-button","aria-label":this.ariaLabel},t("slot",{key:"cc647426fc0a227fc0aa0e1f49ff65cdedd73f1d"})))}};n.style=r();const a=()=>`.layer{padding:1rem;display:flex}.layer.position-top{align-items:flex-start}.layer.position-middle{align-items:center}.layer.position-bottom{align-items:flex-end}.layer.position-left{justify-content:flex-start}.layer.position-center{justify-content:center}.layer.position-right{justify-content:flex-end}.inner{display:flex}.inner.vertical{flex-direction:column}.inner.horizonal{flex-direction:row}::slotted(*){pointer-events:initial}`;const s=class{constructor(t){e(this,t);this.placement="bottom-center";this.direction="horizontal"}render(){const[e,i]=this.placement.split("-");return t("vertex-viewer-layer",{key:"9a806f9d919ccd7dccdb849e8403cac35ad50e4d",class:o("layer",{"position-top":e==="top","position-middle":e==="middle","position-bottom":e==="bottom","position-left":i==="left","position-center":i==="center","position-right":i==="right"})},t("div",{key:"07b21949f6065f08e78143fe664b17348f67e28f",class:o("inner",{vertical:this.direction==="vertical",horizontal:this.direction==="horizontal"})},t("slot",{key:"d5b7ee0c96e101a581c1e3d6d4e286ab843942a1"})))}};s.style=a();const l=()=>`.inner{display:flex;align-items:center;margin:auto}.inner.vertical{flex-direction:column}.inner.horizontal{flex-direction:row}`;const c=class{constructor(t){e(this,t);this.direction="horizontal"}render(){return t("div",{key:"85bedc4a9bd37bc5236b7c28c8ab9f49f84e2867",class:o("inner",{horizontal:this.direction==="horizontal",vertical:this.direction==="vertical"})},t("slot",{key:"4186eebdeeea2915e8fbd136efe7873af224ffa3"}))}};c.style=l();export{n as vertex_viewer_button,s as vertex_viewer_toolbar,c as vertex_viewer_toolbar_group};
5
+ //# sourceMappingURL=p-ce711ae0.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["viewerButtonCss","ViewerButton","constructor","hostRef","this","ariaLabel","render","h","Host","key","class","viewerToolbarCss","ViewerToolbar","placement","direction","vertical","horizontal","split","classname","viewerToolbarGroupCss","ViewerToolbarGroup","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"],"mappings":";;;8GAAA,MAAMA,EAAkB,IAAM,0I,MCOjBC,EAAY,MALzB,WAAAC,CAAAC,G,UAWSC,KAAAC,UAA2B,IAWnC,CATQ,MAAAC,GACL,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,UAAAE,IAAA,2CAAQC,MAAM,gBAAe,aAAaN,KAAKC,WAC7CE,EAAA,QAAAE,IAAA,8C,eCnBV,MAAME,EAAmB,IAAM,ob,MCUlBC,EAAa,MAL1B,WAAAV,CAAAC,G,UAUSC,KAAAS,UAAoC,gBAGpCT,KAAAU,UAAoC,YA2B5C,CAzBQ,MAAAR,GACL,MAAOS,EAAUC,GAAcZ,KAAKS,UAAUI,MAAM,KAEpD,OACEV,EAAA,uBAAAE,IAAA,2CACEC,MAAOQ,EAAU,QAAS,CACxB,eAAgBH,IAAa,MAC7B,kBAAmBA,IAAa,SAChC,kBAAmBA,IAAa,SAChC,gBAAiBC,IAAe,OAChC,kBAAmBA,IAAe,SAClC,iBAAkBA,IAAe,WAGnCT,EAAA,OAAAE,IAAA,2CACEC,MAAOQ,EAAU,QAAS,CACxBH,SAAUX,KAAKU,YAAc,WAC7BE,WAAYZ,KAAKU,YAAc,gBAGjCP,EAAA,QAAAE,IAAA,8C,eCxCV,MAAMU,EAAwB,IAAM,iI,MCUvBC,EAAkB,MAL/B,WAAAlB,CAAAC,G,UAOSC,KAAAU,UAAyC,YAcjD,CAZQ,MAAAR,GACL,OACEC,EAAA,OAAAE,IAAA,2CACEC,MAAOW,EAAW,QAAS,CACzBL,WAAYZ,KAAKU,YAAc,aAC/BC,SAAUX,KAAKU,YAAc,cAG/BP,EAAA,QAAAE,IAAA,6C","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{r as e,h as t,F as i,H as s}from"./p-CCVkga9Q.js";import{p as r,a}from"./p-CZZALKHT.js";import"./p-C-huOg09.js";import"./p-BNuMPeJ8.js";import"./p-ux1ckSDN.js";import"./p-5kcpg4MZ.js";import"./p-Cr2EnhS-.js";import{M as n}from"./p-CxzyM08j.js";import{t as l}from"./p-BDy3SLKk.js";import"./p-CDM7zNn0.js";import"./p-CG9AChtV.js";import"./p-BAhfr1Nx.js";const o=()=>`:host{display:block;--viewer-measurement-line-stroke:var(--white);--viewer-measurement-line-stroke-opacity:0.75;--viewer-measurement-line-stroke-width:1.25px;--viewer-measurement-line-fill:var(--neutral-900);--viewer-measurement-line-fill-width:2px;--viewer-measurement-line-start-cap-visibility:initial;--viewer-measurement-line-end-cap-visibility:initial}svg{width:100%;height:100%}.line-stroke{stroke-width:calc( var(--viewer-measurement-line-fill-width) + var(--viewer-measurement-line-stroke-width) );stroke:var(--viewer-measurement-line-stroke);opacity:var(--viewer-measurement-line-stroke-opacity)}.line-fill{stroke-width:var(--viewer-measurement-line-fill-width);stroke:var(--viewer-measurement-line-fill)}.start-cap{visibility:var(--viewer-measurement-line-start-cap-visibility)}.end-cap{visibility:var(--viewer-measurement-line-end-cap-visibility)}`;const c=class{constructor(t){e(this,t);this.start=r.create();this.end=r.create();this.capLength=0;this.pointerEvents="none"}render(){const e=a.fromPoints(this.start,this.end);const i=v(this.start,this.end,e,this.capLength);const s=v(this.start,this.end,e,this.capLength+1);return t("svg",{key:"323aa791a7c2bdc86782e2f8b760814d77be2425"},t("g",{key:"8cd508b94de3a13ffc310d3b473af23282f8a738",class:"line-stroke","pointer-events":this.pointerEvents},t("line",{key:"bac6d7aba6fd4291de05724f32d2fe98951d0689",class:"line",x1:this.start.x,y1:this.start.y,x2:this.end.x,y2:this.end.y}),t("line",{key:"1737e250c626425bd6957d999093f52554306f51",class:"start-cap",x1:s.startEndCap.start.x,y1:s.startEndCap.start.y,x2:s.startEndCap.end.x,y2:s.startEndCap.end.y}),t("line",{key:"493750b2fcfbddc3e3babfc49b021fba02137553",class:"end-cap",x1:s.endEndCap.start.x,y1:s.endEndCap.start.y,x2:s.endEndCap.end.x,y2:s.endEndCap.end.y})),t("g",{key:"12e2f699db1b0dfdea6dbc2c1c3ce59f18208f72",class:"line-fill","pointer-events":this.pointerEvents},t("line",{key:"df123676bd96bb1393c2650a17fbab7df314e543",class:"line",x1:this.start.x,y1:this.start.y,x2:this.end.x,y2:this.end.y}),t("line",{key:"8349df59c4a3bcb7b5c0be89f46e1088c9e4b76c",class:"start-cap",x1:i.startEndCap.start.x,y1:i.startEndCap.start.y,x2:i.startEndCap.end.x,y2:i.startEndCap.end.y}),t("line",{key:"2c3a122698d55e69c391cf859c8e5cd3a0b032f3",class:"end-cap",x1:i.endEndCap.start.x,y1:i.endEndCap.start.y,x2:i.endEndCap.end.x,y2:i.endEndCap.end.y})))}};function v(e,t,i,s){return{startEndCap:m(e,i,s),endEndCap:m(t,i,s)}}function m(e,t,i){const s=t+Math.PI/2;const a=r.add(e,r.polar(i/2,s));const n=r.add(e,r.polar(i/2,s+Math.PI));return{start:a,end:n}}c.style=o();const d=({overlay:e,viewport:i,camera:s})=>{if(e.type==="line"){return t(h,{overlay:e,viewport:i,camera:s})}else{return t(u,{overlay:e,viewport:i,camera:s})}};const h=({overlay:e,camera:i,viewport:s})=>{const{start:r,end:a}=l(e,{camera:i,viewport:s});return t("vertex-viewer-measurement-line",{class:"measurement-line",start:r,end:a})};const u=({overlay:{x:e,y:s,z:r},camera:a,viewport:n})=>{const o={camera:a,viewport:n};const{start:c,end:v}=l(e,o);const{start:m,end:d}=l(s,o);const{start:h,end:u}=l(r,o);return t(i,null,t("vertex-viewer-measurement-line",{class:"measurement-line distance-vector-x",start:c,end:v}),t("vertex-viewer-measurement-line",{class:"measurement-line distance-vector-y",start:m,end:d}),t("vertex-viewer-measurement-line",{class:"measurement-line distance-vector-z",start:h,end:u}))};const p=()=>`:host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;--viewer-measurement-overlays-x-axis-color:var(--x-axis-color);--viewer-measurement-overlays-y-axis-color:var(--y-axis-color);--viewer-measurement-overlays-z-axis-color:var(--z-axis-color)}.measurement-line{position:absolute;width:100%;height:100%}.measurement-line.distance-vector-x{--viewer-measurement-line-fill:var( --viewer-measurement-overlays-x-axis-color )}.measurement-line.distance-vector-y{--viewer-measurement-line-fill:var( --viewer-measurement-overlays-y-axis-color )}.measurement-line.distance-vector-z{--viewer-measurement-line-fill:var( --viewer-measurement-overlays-z-axis-color )}`;const y=class{constructor(t){e(this,t);this.measurementOverlays=new n;this.overlays=[];this.updateCamera=()=>{var e,t;this.camera=(t=(e=this.viewer)===null||e===void 0?void 0:e.frame)===null||t===void 0?void 0:t.scene.camera}}handleMeasurementOverlaysChanged(){this.removeModelListeners();this.addModelListeners();this.updateOverlays()}handleViewerChanged(e,t){this.removeViewerListeners(t);this.addViewerListeners();this.updateCamera()}componentWillLoad(){this.addModelListeners();this.addViewerListeners();this.updateOverlays();this.updateCamera()}addModelListeners(){this.onOverlaysChangedListener=this.measurementOverlays.onOverlaysChanged((()=>this.updateOverlays()))}removeModelListeners(){var e;(e=this.onOverlaysChangedListener)===null||e===void 0?void 0:e.dispose();this.onOverlaysChangedListener=undefined}addViewerListeners(){var e;(e=this.viewer)===null||e===void 0?void 0:e.addEventListener("frameReceived",this.updateCamera)}removeViewerListeners(e){e===null||e===void 0?void 0:e.removeEventListener("frameReceived",this.updateCamera)}updateOverlays(){this.overlays=this.measurementOverlays.getOverlays()}render(){return t(s,{key:"965a86f907cfe18797db57f488d38ac29bae8682"},this.overlays.map((e=>{if(this.camera!=null&&this.viewer!=null){return t(d,{overlay:e,viewport:this.viewer.viewport,camera:this.camera})}})))}static get watchers(){return{measurementOverlays:[{handleMeasurementOverlaysChanged:0}],viewer:[{handleViewerChanged:0}]}}};y.style=p();export{c as vertex_viewer_measurement_line,y as vertex_viewer_measurement_overlays};
5
- //# sourceMappingURL=p-82ed4346.entry.js.map
4
+ import{r as e,h as t,F as i,H as s}from"./p-CCVkga9Q.js";import{p as r,a}from"./p-2UsvOTHJ.js";import"./p-Br21pGVj.js";import"./p-BNuMPeJ8.js";import"./p-ux1ckSDN.js";import"./p-5kcpg4MZ.js";import"./p-Cc3XhAoA.js";import{M as n}from"./p-DyL2wWm6.js";import{t as l}from"./p-CEDqc5sS.js";import"./p-CDM7zNn0.js";import"./p-CG9AChtV.js";import"./p-BAhfr1Nx.js";const o=()=>`:host{display:block;--viewer-measurement-line-stroke:var(--white);--viewer-measurement-line-stroke-opacity:0.75;--viewer-measurement-line-stroke-width:1.25px;--viewer-measurement-line-fill:var(--neutral-900);--viewer-measurement-line-fill-width:2px;--viewer-measurement-line-start-cap-visibility:initial;--viewer-measurement-line-end-cap-visibility:initial}svg{width:100%;height:100%}.line-stroke{stroke-width:calc( var(--viewer-measurement-line-fill-width) + var(--viewer-measurement-line-stroke-width) );stroke:var(--viewer-measurement-line-stroke);opacity:var(--viewer-measurement-line-stroke-opacity)}.line-fill{stroke-width:var(--viewer-measurement-line-fill-width);stroke:var(--viewer-measurement-line-fill)}.start-cap{visibility:var(--viewer-measurement-line-start-cap-visibility)}.end-cap{visibility:var(--viewer-measurement-line-end-cap-visibility)}`;const c=class{constructor(t){e(this,t);this.start=r.create();this.end=r.create();this.capLength=0;this.pointerEvents="none"}render(){const e=a.fromPoints(this.start,this.end);const i=v(this.start,this.end,e,this.capLength);const s=v(this.start,this.end,e,this.capLength+1);return t("svg",{key:"323aa791a7c2bdc86782e2f8b760814d77be2425"},t("g",{key:"8cd508b94de3a13ffc310d3b473af23282f8a738",class:"line-stroke","pointer-events":this.pointerEvents},t("line",{key:"bac6d7aba6fd4291de05724f32d2fe98951d0689",class:"line",x1:this.start.x,y1:this.start.y,x2:this.end.x,y2:this.end.y}),t("line",{key:"1737e250c626425bd6957d999093f52554306f51",class:"start-cap",x1:s.startEndCap.start.x,y1:s.startEndCap.start.y,x2:s.startEndCap.end.x,y2:s.startEndCap.end.y}),t("line",{key:"493750b2fcfbddc3e3babfc49b021fba02137553",class:"end-cap",x1:s.endEndCap.start.x,y1:s.endEndCap.start.y,x2:s.endEndCap.end.x,y2:s.endEndCap.end.y})),t("g",{key:"12e2f699db1b0dfdea6dbc2c1c3ce59f18208f72",class:"line-fill","pointer-events":this.pointerEvents},t("line",{key:"df123676bd96bb1393c2650a17fbab7df314e543",class:"line",x1:this.start.x,y1:this.start.y,x2:this.end.x,y2:this.end.y}),t("line",{key:"8349df59c4a3bcb7b5c0be89f46e1088c9e4b76c",class:"start-cap",x1:i.startEndCap.start.x,y1:i.startEndCap.start.y,x2:i.startEndCap.end.x,y2:i.startEndCap.end.y}),t("line",{key:"2c3a122698d55e69c391cf859c8e5cd3a0b032f3",class:"end-cap",x1:i.endEndCap.start.x,y1:i.endEndCap.start.y,x2:i.endEndCap.end.x,y2:i.endEndCap.end.y})))}};function v(e,t,i,s){return{startEndCap:m(e,i,s),endEndCap:m(t,i,s)}}function m(e,t,i){const s=t+Math.PI/2;const a=r.add(e,r.polar(i/2,s));const n=r.add(e,r.polar(i/2,s+Math.PI));return{start:a,end:n}}c.style=o();const d=({overlay:e,viewport:i,camera:s})=>{if(e.type==="line"){return t(h,{overlay:e,viewport:i,camera:s})}else{return t(u,{overlay:e,viewport:i,camera:s})}};const h=({overlay:e,camera:i,viewport:s})=>{const{start:r,end:a}=l(e,{camera:i,viewport:s});return t("vertex-viewer-measurement-line",{class:"measurement-line",start:r,end:a})};const u=({overlay:{x:e,y:s,z:r},camera:a,viewport:n})=>{const o={camera:a,viewport:n};const{start:c,end:v}=l(e,o);const{start:m,end:d}=l(s,o);const{start:h,end:u}=l(r,o);return t(i,null,t("vertex-viewer-measurement-line",{class:"measurement-line distance-vector-x",start:c,end:v}),t("vertex-viewer-measurement-line",{class:"measurement-line distance-vector-y",start:m,end:d}),t("vertex-viewer-measurement-line",{class:"measurement-line distance-vector-z",start:h,end:u}))};const p=()=>`:host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;--viewer-measurement-overlays-x-axis-color:var(--x-axis-color);--viewer-measurement-overlays-y-axis-color:var(--y-axis-color);--viewer-measurement-overlays-z-axis-color:var(--z-axis-color)}.measurement-line{position:absolute;width:100%;height:100%}.measurement-line.distance-vector-x{--viewer-measurement-line-fill:var( --viewer-measurement-overlays-x-axis-color )}.measurement-line.distance-vector-y{--viewer-measurement-line-fill:var( --viewer-measurement-overlays-y-axis-color )}.measurement-line.distance-vector-z{--viewer-measurement-line-fill:var( --viewer-measurement-overlays-z-axis-color )}`;const y=class{constructor(t){e(this,t);this.measurementOverlays=new n;this.overlays=[];this.updateCamera=()=>{var e,t;this.camera=(t=(e=this.viewer)===null||e===void 0?void 0:e.frame)===null||t===void 0?void 0:t.scene.camera}}handleMeasurementOverlaysChanged(){this.removeModelListeners();this.addModelListeners();this.updateOverlays()}handleViewerChanged(e,t){this.removeViewerListeners(t);this.addViewerListeners();this.updateCamera()}componentWillLoad(){this.addModelListeners();this.addViewerListeners();this.updateOverlays();this.updateCamera()}addModelListeners(){this.onOverlaysChangedListener=this.measurementOverlays.onOverlaysChanged((()=>this.updateOverlays()))}removeModelListeners(){var e;(e=this.onOverlaysChangedListener)===null||e===void 0?void 0:e.dispose();this.onOverlaysChangedListener=undefined}addViewerListeners(){var e;(e=this.viewer)===null||e===void 0?void 0:e.addEventListener("frameReceived",this.updateCamera)}removeViewerListeners(e){e===null||e===void 0?void 0:e.removeEventListener("frameReceived",this.updateCamera)}updateOverlays(){this.overlays=this.measurementOverlays.getOverlays()}render(){return t(s,{key:"965a86f907cfe18797db57f488d38ac29bae8682"},this.overlays.map((e=>{if(this.camera!=null&&this.viewer!=null){return t(d,{overlay:e,viewport:this.viewer.viewport,camera:this.camera})}})))}static get watchers(){return{measurementOverlays:[{handleMeasurementOverlaysChanged:0}],viewer:[{handleViewerChanged:0}]}}};y.style=p();export{c as vertex_viewer_measurement_line,y as vertex_viewer_measurement_overlays};
5
+ //# sourceMappingURL=p-ced98004.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["sceneTreeTableColumnCss","SceneTreeTableColumn","render","h","Host","key","class","name"],"sources":["src/components/scene-tree-table-column/scene-tree-table-column.css?tag=vertex-scene-tree-table-column&encapsulation=shadow","src/components/scene-tree-table-column/scene-tree-table-column.tsx"],"sourcesContent":[":host {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.hidden {\n visibility: hidden;\n pointer-events: none;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'vertex-scene-tree-table-column',\n styleUrl: 'scene-tree-table-column.css',\n shadow: true,\n})\nexport class SceneTreeTableColumn {\n /**\n * The initial width of this column.\n */\n @Prop()\n public initialWidth?: number;\n\n /**\n * The minimum width of this column.\n */\n @Prop()\n public minWidth?: number;\n\n /**\n * The maximum width of this column.\n */\n @Prop()\n public maxWidth?: number;\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div class=\"hidden\">\n <slot name=\"header\" />\n </div>\n <div class=\"column\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":";;;kDAAA,MAAMA,EAA0B,IAAM,kL,MCOzBC,EAAoB,M,yBAmBxB,MAAAC,GACL,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,UACTH,EAAA,QAAAE,IAAA,2CAAME,KAAK,YAEbJ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,UACTH,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
1
+ {"version":3,"names":["sceneTreeTableColumnCss","SceneTreeTableColumn","render","h","Host","key","class","name"],"sources":["src/components/scene-tree-table-column/scene-tree-table-column.css?tag=vertex-scene-tree-table-column&encapsulation=shadow","src/components/scene-tree-table-column/scene-tree-table-column.tsx"],"sourcesContent":[":host {\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.hidden {\n visibility: hidden;\n pointer-events: none;\n}\n\n.column {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n overflow: hidden;\n}\n","import { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'vertex-scene-tree-table-column',\n styleUrl: 'scene-tree-table-column.css',\n shadow: true,\n})\nexport class SceneTreeTableColumn {\n /**\n * The initial width of this column.\n */\n @Prop()\n public initialWidth?: number;\n\n /**\n * The minimum width of this column.\n */\n @Prop()\n public minWidth?: number;\n\n /**\n * The maximum width of this column.\n */\n @Prop()\n public maxWidth?: number;\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <Host>\n <div class=\"hidden\">\n <slot name=\"header\" />\n </div>\n <div class=\"column\">\n <slot />\n </div>\n </Host>\n );\n }\n}\n"],"mappings":";;;kDAAA,MAAMA,EAA0B,IAAM,kL,MCOzBC,EAAoB,M,yBAmBxB,MAAAC,GACL,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,UACTH,EAAA,QAAAE,IAAA,2CAAME,KAAK,YAEbJ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,UACTH,EAAA,QAAAE,IAAA,8C","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
+ */
4
+ import{r as i,c as t,h as n,H as e,a as o}from"./p-CCVkga9Q.js";import{p as a}from"./p-2UsvOTHJ.js";import{c as s}from"./p-Dw4-tG-V.js";import{g as r}from"./p-D0aTA_2m.js";import{t as l,c as h,a as d,P as v,g as p,b}from"./p-CxBXErQ8.js";import{r as c}from"./p-BxtKMwBH.js";import"./p-CG9AChtV.js";import"./p-CDM7zNn0.js";function u(i){return window.getComputedStyle(i)}const w=()=>`:host{--viewer-annotations-pin-label-background-color:var( --viewer-annotations-pin-accent-color );--viewer-annotations-pin-label-border-color:var( --viewer-annotations-pin-primary-color );--viewer-annotations-pin-label-focused-border-color:var( --viewer-annotations-pin-primary-color );--viewer-annotations-pin-label-color:var(--white);--viewer-annotations-pin-label-padding-y:0.375em;--viewer-annotations-pin-label-padding-x:0.5em;--viewer-annotations-pin-label-border-width:2px;--viewer-annotations-pin-label-border-style:solid;--viewer-annotations-pin-label-border-radius:0.25em;--viewer-annotations-pin-label-min-width:2rem;--viewer-annotations-pin-label-max-width:25rem;--viewer-annotations-pin-label-max-height:50rem;overflow:hidden;pointer-events:none}:host([mode='']) .pin-label{color:var(--viewer-annotations-pin-label-color);background:var(--viewer-annotations-pin-label-background-color)}.pin-label-text{font-family:Arial, Helvetica, sans-serif;font-size:0.875rem;line-height:1rem;word-break:break-word;white-space:pre-wrap}.pin-label-input-wrapper{display:flex;position:absolute;pointer-events:auto;box-sizing:border-box;min-width:var(--viewer-annotations-pin-label-min-width);max-width:var(--viewer-annotations-pin-label-max-width);max-height:var(--viewer-annotations-pin-label-max-height);background:var(--viewer-annotations-pin-label-background-color);border-width:var(--viewer-annotations-pin-label-border-width);border-style:var(--viewer-annotations-pin-label-border-style);border-color:var(--viewer-annotations-pin-label-border-color);border-radius:var(--viewer-annotations-pin-label-border-radius)}.pin-label-input-wrapper.focused{min-width:var(--viewer-annotations-pin-label-max-width);border-color:var(--viewer-annotations-pin-label-focused-border-color)}.pin-input-drag-target{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}.pin-label-input{resize:none;position:relative;outline:none;border:none;word-break:break-word;padding:0 0 0 0;background-color:transparent;margin:var(--viewer-annotations-pin-label-padding-y) var(--viewer-annotations-pin-label-padding-x);width:var(--viewer-annotations-pin-label-min-width);flex-grow:1;overflow:hidden;max-width:calc( var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)) )}.pin-label-input.readonly{pointer-events:auto;color:black;cursor:pointer}.pin-label-hidden{position:absolute;visibility:hidden;pointer-events:none;width:auto;height:auto;box-sizing:border-box;border-width:var(--viewer-annotations-pin-label-border-width);border-style:var(--viewer-annotations-pin-label-border-style);border-color:var(--viewer-annotations-pin-label-border-color);margin:var(--viewer-annotations-pin-label-padding-y) 0;padding:0 var(--viewer-annotations-pin-label-padding-x);max-width:calc( var(--viewer-annotations-pin-label-max-width) - calc(2 * var(--viewer-annotations-pin-label-padding-x)) )}`;const f=class{constructor(n){i(this,n);this.labelChanged=t(this,"labelChanged");this.labelFocused=t(this,"labelFocused");this.labelBlurred=t(this,"labelBlurred");this.value="";this.focused=false;this.textareaRows=1;this.computeContentSize=()=>{c((()=>{if(this.contentEl!=null){this.contentElBounds=this.contentEl.getBoundingClientRect();const i=u(this.contentEl);this.textareaRows=Math.max(1,Math.ceil((Number.parseFloat(i.getPropertyValue("height"))-Number.parseFloat(i.getPropertyValue("borderWidth"))*2)/Number.parseFloat(i.getPropertyValue("lineHeight"))))}}))};this.handleInputKeyDown=i=>{i.stopPropagation();if(i.key==="Enter"&&(i.ctrlKey||i.metaKey||i.shiftKey)){this.textareaRows+=1;this.value+="\n"}else if(i.key==="Enter"){i.preventDefault();this.submit()}};this.handlePointerDown=i=>{var t;if(!this.focused){if(this.elementBounds!=null){if(i.buttons!==2){i.preventDefault();i.stopPropagation()}this.relativePointerDownPosition=l(r(i,this.elementBounds),this.elementBounds);this.pinPointerDownPosition=(t=this.pin)===null||t===void 0?void 0:t.label.point;window.addEventListener("pointermove",this.handlePointerMove);window.addEventListener("pointerup",this.handlePointerUp)}}};this.handlePointerMove=i=>{var t;if(this.elementBounds!=null&&this.relativePointerDownPosition&&this.pinPointerDownPosition!=null){i.preventDefault();i.stopPropagation();const n=r(i,this.elementBounds);const e=l(n,this.elementBounds);const o=a.subtract(e,this.relativePointerDownPosition);const s=this.pin!=null?{...this.pin,label:{...this.pin.label,point:a.add(this.pinPointerDownPosition,o)}}:undefined;if(s){(t=this.pinController)===null||t===void 0?void 0:t.updatePin(s);this.computeScreenPosition()}}};this.handlePointerUp=i=>{var t,n;if(((t=this.pinController)===null||t===void 0?void 0:t.getToolMode())==="edit"&&this.relativePointerDownPosition!=null&&this.elementBounds!=null){const t=h(this.relativePointerDownPosition,this.elementBounds);const e=a.distance(t,r(i,this.elementBounds));if(e<=2){this.focused=true;this.labelFocused.emit((n=this.pin)===null||n===void 0?void 0:n.id)}}this.relativePointerDownPosition=undefined;this.pinPointerDownPosition=undefined;window.removeEventListener("pointermove",this.handlePointerMove);window.removeEventListener("pointerup",this.handlePointerUp)};this.handleTextBlur=()=>{this.submit()};this.handleTextInput=i=>{const t=i.target;this.value=t.value}}async setFocus(){var i,t,n;if(typeof((i=this.inputEl)===null||i===void 0?void 0:i.focus)==="function"){this.focused=true;this.labelFocused.emit((t=this.pin)===null||t===void 0?void 0:t.id);(n=this.inputEl)===null||n===void 0?void 0:n.focus()}}async submit(){var i,t;this.focused=false;this.labelBlurred.emit((i=this.pin)===null||i===void 0?void 0:i.id);if(this.pin!=null){(t=this.pinController)===null||t===void 0?void 0:t.updatePin({...this.pin,label:{point:this.pin.label.point,text:this.value}})}}watchFocusChange(){var i,t;this.labelChanged.emit();if(this.focused){(i=this.pinController)===null||i===void 0?void 0:i.setSelectedPinId((t=this.pin)===null||t===void 0?void 0:t.id)}}watchPinChange(){var i,t;this.value=(t=(i=this.pin)===null||i===void 0?void 0:i.label.text)!==null&&t!==void 0?t:"";this.computeScreenPosition()}watchElementBoundsChange(){this.computeScreenPosition()}componentWillLoad(){var i,t;this.value=(t=(i=this.pin)===null||i===void 0?void 0:i.label.text)!==null&&t!==void 0?t:"";this.computeScreenPosition();if(this.pinController==null){this.pinController=new d(new v)}}componentDidLoad(){this.resizeObserver=new ResizeObserver((()=>{this.labelChanged.emit()}));this.contentResizeObserver=new ResizeObserver(this.computeContentSize);if(this.hostEl!=null){this.resizeObserver.observe(this.hostEl)}if(this.contentEl!=null){this.contentResizeObserver.observe(this.contentEl)}}disconnectedCallback(){var i,t;(i=this.resizeObserver)===null||i===void 0?void 0:i.disconnect();(t=this.contentResizeObserver)===null||t===void 0?void 0:t.disconnect()}componentDidRender(){if(this.focused&&this.inputEl!=null){this.setFocus()}}render(){var i,t,o;const{primaryColor:a,accentColor:r}=p(this.pin);return n(e,{key:"2eeca89781ad06fce5403bee5d967496c4886201"},n("div",{key:"9f6ca00bfadf8b6090db219ce05ec2eae28f341f",class:s("pin-label-input-wrapper",{focused:this.focused}),onPointerDown:this.handlePointerDown,style:{top:`${((i=this.computedScreenPosition)===null||i===void 0?void 0:i.y.toString())||0}px`,left:`${((t=this.computedScreenPosition)===null||t===void 0?void 0:t.x.toString())||0}px`,minWidth:this.computeMinWidth(),maxWidth:this.computeMaxWidth(),maxHeight:this.computeMaxHeight(),borderColor:a,background:r}},n("textarea",{key:"beaf273457ceeadd30f709fff580f2af5b1c366a",id:`pin-label-input-${(o=this.pin)===null||o===void 0?void 0:o.id}`,class:s("pin-label-input","pin-label-text",{["readonly"]:!this.focused}),disabled:!this.focused,ref:i=>this.inputEl=i,value:this.value,rows:this.textareaRows,onKeyDown:this.handleInputKeyDown,onInput:this.handleTextInput,onBlur:this.handleTextBlur,"aria-label":"Pin label input"}),!this.focused&&n("div",{key:"6ba9750253ae2e9de2a48a9b2ce31f6971b7b0a1",class:"pin-input-drag-target",onPointerDown:this.handlePointerDown})),n("div",{key:"7a474943d854cda9fe7859a30441bcc06a758010",ref:i=>this.contentEl=i,class:s("pin-label-text","pin-label-hidden"),style:{maxWidth:this.computeMaxWidth(),maxHeight:this.computeMaxHeight()}},this.hiddenContent()))}hiddenContent(){return this.value.includes("\n")?this.value.split("\n").reduce(((i,t)=>[...i,t,n("br",null)]),[]):[this.value]}computeMinWidth(){if(this.contentElBounds!=null){const i=`${this.contentElBounds.width+8}px`;return`min(${i}, ${this.computeMaxWidth()})`}else{return`var(--viewer-annotations-pin-label-min-width)`}}computeMaxWidth(){const i=`var(--viewer-annotations-pin-label-max-width)`;return`min(${i}, ${this.computeRemainingWidth()})`}computeMaxHeight(){const i=`var(--viewer-annotations-pin-label-max-height)`;return`min(${i}, ${this.computeRemainingHeight()})`}computeRemainingWidth(){var i,t;return`calc(${((i=this.elementBounds)===null||i===void 0?void 0:i.width.toString())||0}px - ${((t=this.computedScreenPosition)===null||t===void 0?void 0:t.x.toString())||0}px)`}computeRemainingHeight(){var i,t;return`calc(${((i=this.elementBounds)===null||i===void 0?void 0:i.height.toString())||0}px - ${((t=this.computedScreenPosition)===null||t===void 0?void 0:t.y.toString())||0}px)`}computeScreenPosition(){this.computedScreenPosition=b(this.pin)&&this.elementBounds!=null&&this.pin.label.point!=null?h(this.pin.label.point,this.elementBounds):undefined}get hostEl(){return o(this)}static get watchers(){return{focused:[{watchFocusChange:0}],pin:[{watchPinChange:0}],elementBounds:[{watchElementBoundsChange:0}]}}};f.style=w();const m=()=>`:host{--viewer-annotations-pin-label-line-color:var( --viewer-annotations-pin-primary-color );--viewer-annotations-pin-label-line-width:1;overflow:hidden;pointer-events:none}.label-line{pointer-events:auto;stroke:var(--viewer-annotations-pin-label-line-color);stroke-width:var(--viewer-annotations-pin-label-line-width);cursor:default}.svg{position:absolute;top:0;bottom:0;left:0;right:0;overflow:hidden;pointer-events:none;height:100%;width:100%}`;const g=class{constructor(t){i(this,t)}render(){var i,t,o,a;const{primaryColor:s}=p(this.pin);return n(e,{key:"daf863da93b542c252fdedcf3a6effc95d86942c"},n("svg",{key:"4a1b04fd9fb7a04b3a46cdbaf2b5ded7efa0bc2c",class:"svg"},n("line",{key:"809a20f602e6c459f3d8988b931406ca63770337",class:"label-line",style:{stroke:s},x1:(i=this.labelPoint)===null||i===void 0?void 0:i.x,y1:(t=this.labelPoint)===null||t===void 0?void 0:t.y,x2:(o=this.pinPoint)===null||o===void 0?void 0:o.x,y2:(a=this.pinPoint)===null||a===void 0?void 0:a.y})))}};g.style=m();export{f as vertex_viewer_pin_label,g as vertex_viewer_pin_label_line};
5
+ //# sourceMappingURL=p-dcb6ddfe.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getComputedStyle","el","window","viewerPinLabelCss","VertexPinLabel","constructor","hostRef","this","value","focused","textareaRows","computeContentSize","readDOM","contentEl","contentElBounds","getBoundingClientRect","computedStyles","Math","max","ceil","Number","parseFloat","getPropertyValue","handleInputKeyDown","event","stopPropagation","key","ctrlKey","metaKey","shiftKey","preventDefault","submit","handlePointerDown","elementBounds","buttons","relativePointerDownPosition","translatePointToRelative","getMouseClientPosition","pinPointerDownPosition","_a","pin","label","point","addEventListener","handlePointerMove","handlePointerUp","relative","relativeDelta","Point","subtract","myUpdatedPin","add","undefined","pinController","updatePin","computeScreenPosition","getToolMode","pointerDownScreen","translatePointToScreen","distanceBetweenStartAndEndPoint","distance","labelFocused","emit","_b","id","removeEventListener","handleTextBlur","handleTextInput","input","target","setFocus","inputEl","focus","_c","labelBlurred","text","watchFocusChange","labelChanged","setSelectedPinId","watchPinChange","watchElementBoundsChange","componentWillLoad","PinController","PinModel","componentDidLoad","resizeObserver","ResizeObserver","contentResizeObserver","hostEl","observe","disconnectedCallback","disconnect","componentDidRender","render","primaryColor","accentColor","getPinColors","h","Host","class","classNames","onPointerDown","style","top","computedScreenPosition","y","toString","left","x","minWidth","computeMinWidth","maxWidth","computeMaxWidth","maxHeight","computeMaxHeight","borderColor","background","disabled","ref","rows","onKeyDown","onInput","onBlur","hiddenContent","includes","split","reduce","res","str","expected","width","computeRemainingWidth","computeRemainingHeight","height","isTextPin","viewerPinLabelLineCss","VertexPinLabelLine","stroke","x1","labelPoint","y1","x2","pinPoint","y2","_d"],"sources":["src/components/viewer-pin-label/utils.ts","src/components/viewer-pin-label/viewer-pin-label.css?tag=vertex-viewer-pin-label","src/components/viewer-pin-label/viewer-pin-label.tsx","src/components/viewer-pin-label-line/viewer-pin-label-line.css?tag=vertex-viewer-pin-label-line","src/components/viewer-pin-label-line/viewer-pin-label-line.tsx"],"sourcesContent":["export function getComputedStyle(el: HTMLElement): CSSStyleDeclaration {\n return window.getComputedStyle(el);\n}\n",":host {\n /**\n * @prop --viewer-annotations-pin-label-background-color: A CSS color that\n * specifies the color of the label background\n */\n --viewer-annotations-pin-label-background-color: var(\n --viewer-annotations-pin-accent-color\n );\n\n /**\n * @prop --viewer-annotations-pin-label-border-color: A CSS color that\n * specifies the color of the label's border\n */\n --viewer-annotations-pin-label-border-color: var(\n --viewer-annotations-pin-primary-color\n );\n\n /**\n * @prop --viewer-annotations-pin-label-focused-border-color: A CSS color that\n * specifies the color of the label's border when focused. \n */\n --viewer-annotations-pin-label-focused-border-color: var(\n --viewer-annotations-pin-primary-color\n );\n\n /**\n * @prop --viewer-annotations-pin-label-color: A CSS color that\n * specifies the color of the label \n */\n --viewer-annotations-pin-label-color: var(--white);\n\n /**\n * @prop --viewer-annotations-pin-label-padding-y: A var that\n * specifies the vertical padding of the label\n */\n --viewer-annotations-pin-label-padding-y: 0.375em;\n\n /**\n * @prop --viewer-annotations-pin-label-padding-x: A var that\n * specifies the horizontal padding of the label\n */\n --viewer-annotations-pin-label-padding-x: 0.5em;\n\n /**\n * @prop --viewer-annotations-pin-label-border-width: A CSS length that\n * specifies the width of the border on this label. Defaults to `2px`.\n */\n --viewer-annotations-pin-label-border-width: 2px;\n\n /**\n * @prop --viewer-annotations-pin-label-border-style: A CSS variable that\n * specifies the style of border on this label. Defaults to `solid`.\n */\n --viewer-annotations-pin-label-border-style: solid;\n\n /**\n * @prop --viewer-annotations-pin-label-border-radius: A var that\n * specifies the border radius of the label\n */\n --viewer-annotations-pin-label-border-radius: 0.25em;\n\n /**\n * @prop --viewer-annotations-pin-label-min-width: A CSS length that\n * specifies the minimum width of the label. Defaults to `2rem`.\n */\n --viewer-annotations-pin-label-min-width: 2rem;\n\n /**\n * @prop --viewer-annotations-pin-label-max-width: A CSS length that\n * specifies the maximum width of the label. Defaults to `25rem`.\n */\n --viewer-annotations-pin-label-max-width: 25rem;\n\n /**\n * @prop --viewer-annotations-pin-label-max-height: A CSS length that\n * specifies the maximum height of the label. Defaults to `50rem`.\n */\n --viewer-annotations-pin-label-max-height: 50rem;\n\n overflow: hidden;\n pointer-events: none;\n}\n\n:host([mode='']) .pin-label {\n color: var(--viewer-annotations-pin-label-color);\n background: var(--viewer-annotations-pin-label-background-color);\n}\n\n.pin-label-text {\n font-family: Arial, Helvetica, sans-serif;\n font-size: 0.875rem;\n line-height: 1rem;\n word-break: break-word;\n white-space: pre-wrap;\n}\n\n.pin-label-input-wrapper {\n display: flex;\n position: absolute;\n pointer-events: auto;\n box-sizing: border-box;\n min-width: var(--viewer-annotations-pin-label-min-width);\n max-width: var(--viewer-annotations-pin-label-max-width);\n max-height: var(--viewer-annotations-pin-label-max-height);\n background: var(--viewer-annotations-pin-label-background-color);\n border-width: var(--viewer-annotations-pin-label-border-width);\n border-style: var(--viewer-annotations-pin-label-border-style);\n border-color: var(--viewer-annotations-pin-label-border-color);\n border-radius: var(--viewer-annotations-pin-label-border-radius);\n}\n\n.pin-label-input-wrapper.focused {\n min-width: var(--viewer-annotations-pin-label-max-width);\n border-color: var(--viewer-annotations-pin-label-focused-border-color);\n}\n\n.pin-input-drag-target {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n}\n\n.pin-label-input {\n resize: none;\n position: relative;\n outline: none;\n border: none;\n word-break: break-word;\n padding: 0 0 0 0;\n background-color: transparent;\n margin: var(--viewer-annotations-pin-label-padding-y)\n var(--viewer-annotations-pin-label-padding-x);\n width: var(--viewer-annotations-pin-label-min-width);\n flex-grow: 1;\n overflow: hidden;\n max-width: calc(\n var(--viewer-annotations-pin-label-max-width) -\n calc(2 * var(--viewer-annotations-pin-label-padding-x))\n );\n}\n\n.pin-label-input.readonly {\n pointer-events: auto;\n color: black;\n cursor: pointer;\n}\n\n.pin-label-hidden {\n position: absolute;\n visibility: hidden;\n pointer-events: none;\n width: auto;\n height: auto;\n box-sizing: border-box;\n border-width: var(--viewer-annotations-pin-label-border-width);\n border-style: var(--viewer-annotations-pin-label-border-style);\n border-color: var(--viewer-annotations-pin-label-border-color);\n margin: var(--viewer-annotations-pin-label-padding-y) 0;\n padding: 0 var(--viewer-annotations-pin-label-padding-x);\n max-width: calc(\n var(--viewer-annotations-pin-label-max-width) -\n calc(2 * var(--viewer-annotations-pin-label-padding-x))\n );\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Method,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\nimport classNames from 'classnames';\n\nimport { getMouseClientPosition } from '../../lib/dom';\nimport { PinController } from '../../lib/pins/controller';\nimport {\n getPinColors,\n isTextPin,\n PinModel,\n TextPin,\n} from '../../lib/pins/model';\nimport { readDOM } from '../../lib/stencil';\nimport {\n translatePointToRelative,\n translatePointToScreen,\n} from '../viewer-pin-tool/utils';\nimport { getComputedStyle } from './utils';\n\n@Component({\n tag: 'vertex-viewer-pin-label',\n styleUrl: 'viewer-pin-label.css',\n shadow: false,\n})\nexport class VertexPinLabel {\n /**\n * The pin to draw for the group\n */\n @Prop()\n public pin?: TextPin;\n\n /**\n * The dimensions of the canvas for the pins\n */\n @Prop()\n public elementBounds?: DOMRect;\n\n /**\n * The current text value of the component. Value is updated on user\n * interaction.\n */\n @Prop({ mutable: true })\n public value = '';\n\n /**\n * The controller that drives behavior for pin operations\n */\n @Prop({ mutable: true })\n public pinController?: PinController;\n\n /**\n * @internal\n */\n @Event({ bubbles: true })\n public labelChanged!: EventEmitter<void>;\n\n /**\n * Emitted whenever the label is focused, with the ID of the\n * associated pin (or undefined if no pin is provided).\n */\n @Event({ bubbles: true })\n public labelFocused!: EventEmitter<string | undefined>;\n\n /**\n * Emitted whenever the label is blurred, with the ID of the\n * associated pin (or undefined if no pin is provided).\n */\n @Event({ bubbles: true })\n public labelBlurred!: EventEmitter<string | undefined>;\n\n @Element()\n private hostEl!: HTMLElement;\n\n @State()\n private focused = false;\n\n @State()\n private computedScreenPosition?: Point.Point;\n\n @State()\n private textareaRows = 1;\n\n @State()\n private contentElBounds?: DOMRect;\n\n private relativePointerDownPosition?: Point.Point;\n private pinPointerDownPosition?: Point.Point;\n\n private inputEl?: HTMLTextAreaElement;\n private contentEl?: HTMLDivElement;\n\n private resizeObserver?: ResizeObserver;\n private contentResizeObserver?: ResizeObserver;\n\n /**\n * Gives focus to the component's internal text input.\n */\n @Method()\n public async setFocus(): Promise<void> {\n // HTMLInputElement.focus() doesn't exist in tests.\n if (typeof this.inputEl?.focus === 'function') {\n this.focused = true;\n this.labelFocused.emit(this.pin?.id);\n this.inputEl?.focus();\n }\n }\n\n /**\n * @internal\n * submits the current text, unfocuses the input and emits the blur event to consumers\n */\n @Method()\n public async submit(): Promise<void> {\n this.focused = false;\n this.labelBlurred.emit(this.pin?.id);\n if (this.pin != null) {\n this.pinController?.updatePin({\n ...this.pin,\n label: {\n point: this.pin.label.point,\n text: this.value,\n },\n });\n }\n }\n\n @Watch('focused')\n protected watchFocusChange(): void {\n this.labelChanged.emit();\n\n if (this.focused) {\n this.pinController?.setSelectedPinId(this.pin?.id);\n }\n }\n\n @Watch('pin')\n protected watchPinChange(): void {\n this.value = this.pin?.label.text ?? '';\n this.computeScreenPosition();\n }\n\n @Watch('elementBounds')\n protected watchElementBoundsChange(): void {\n this.computeScreenPosition();\n }\n\n protected componentWillLoad(): void {\n this.value = this.pin?.label.text ?? '';\n this.computeScreenPosition();\n\n if (this.pinController == null) {\n this.pinController = new PinController(new PinModel());\n }\n }\n\n protected componentDidLoad(): void {\n this.resizeObserver = new ResizeObserver(() => {\n this.labelChanged.emit();\n });\n\n this.contentResizeObserver = new ResizeObserver(this.computeContentSize);\n\n if (this.hostEl != null) {\n this.resizeObserver.observe(this.hostEl);\n }\n\n if (this.contentEl != null) {\n this.contentResizeObserver.observe(this.contentEl);\n }\n }\n\n protected disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n this.contentResizeObserver?.disconnect();\n }\n\n protected componentDidRender(): void {\n if (this.focused && this.inputEl != null) {\n this.setFocus();\n }\n }\n\n protected render(): JSX.Element {\n const { primaryColor, accentColor } = getPinColors(this.pin);\n return (\n <Host>\n <div\n class={classNames('pin-label-input-wrapper', {\n focused: this.focused,\n })}\n onPointerDown={this.handlePointerDown}\n style={{\n top: `${this.computedScreenPosition?.y.toString() || 0}px`,\n left: `${this.computedScreenPosition?.x.toString() || 0}px`,\n minWidth: this.computeMinWidth(),\n maxWidth: this.computeMaxWidth(),\n maxHeight: this.computeMaxHeight(),\n borderColor: primaryColor,\n background: accentColor,\n }}\n >\n <textarea\n id={`pin-label-input-${this.pin?.id}`}\n class={classNames('pin-label-input', 'pin-label-text', {\n ['readonly']: !this.focused,\n })}\n disabled={!this.focused}\n ref={(ref) => (this.inputEl = ref)}\n value={this.value}\n rows={this.textareaRows}\n onKeyDown={this.handleInputKeyDown}\n onInput={this.handleTextInput}\n onBlur={this.handleTextBlur}\n aria-label=\"Pin label input\"\n />\n {/* This corrects for a behavior in Firefox where setting the `disabled` attribute to true */}\n {/* prevents any events from propagating. */}\n {!this.focused && (\n <div\n class=\"pin-input-drag-target\"\n onPointerDown={this.handlePointerDown}\n />\n )}\n </div>\n <div\n ref={(el) => (this.contentEl = el)}\n class={classNames('pin-label-text', 'pin-label-hidden')}\n style={{\n maxWidth: this.computeMaxWidth(),\n maxHeight: this.computeMaxHeight(),\n }}\n >\n {this.hiddenContent()}\n </div>\n </Host>\n );\n }\n\n private hiddenContent(): Array<string | HTMLBRElement> {\n // This corrects some inconsistencies in how a newline character\n // is represented in a div. Leveraging `<br>`s results in a more\n // consistent representation of the newlines in a textarea.\n return this.value.includes('\\n')\n ? this.value\n .split('\\n')\n .reduce(\n (res, str) => [...res, str, <br />],\n [] as Array<string | HTMLBRElement>,\n )\n : [this.value];\n }\n\n private computeMinWidth(): string {\n if (this.contentElBounds != null) {\n const expected = `${this.contentElBounds.width + 8}px`;\n\n return `min(${expected}, ${this.computeMaxWidth()})`;\n } else {\n return `var(--viewer-annotations-pin-label-min-width)`;\n }\n }\n\n private computeMaxWidth(): string {\n const expected = `var(--viewer-annotations-pin-label-max-width)`;\n\n return `min(${expected}, ${this.computeRemainingWidth()})`;\n }\n\n private computeMaxHeight(): string {\n const expected = `var(--viewer-annotations-pin-label-max-height)`;\n\n return `min(${expected}, ${this.computeRemainingHeight()})`;\n }\n\n private computeRemainingWidth(): string {\n return `calc(${this.elementBounds?.width.toString() || 0}px - ${\n this.computedScreenPosition?.x.toString() || 0\n }px)`;\n }\n\n private computeRemainingHeight(): string {\n return `calc(${this.elementBounds?.height.toString() || 0}px - ${\n this.computedScreenPosition?.y.toString() || 0\n }px)`;\n }\n\n private computeScreenPosition(): void {\n this.computedScreenPosition =\n isTextPin(this.pin) &&\n this.elementBounds != null &&\n this.pin.label.point != null\n ? translatePointToScreen(this.pin.label.point, this.elementBounds)\n : undefined;\n }\n\n private computeContentSize = (): void => {\n readDOM(() => {\n if (this.contentEl != null) {\n this.contentElBounds = this.contentEl.getBoundingClientRect();\n const computedStyles = getComputedStyle(this.contentEl);\n this.textareaRows = Math.max(\n 1,\n Math.ceil(\n (Number.parseFloat(computedStyles.getPropertyValue('height')) -\n Number.parseFloat(\n computedStyles.getPropertyValue('borderWidth'),\n ) *\n 2) /\n Number.parseFloat(computedStyles.getPropertyValue('lineHeight')),\n ),\n );\n }\n });\n };\n\n private handleInputKeyDown = (event: KeyboardEvent): void => {\n event.stopPropagation();\n if (\n event.key === 'Enter' &&\n (event.ctrlKey || event.metaKey || event.shiftKey)\n ) {\n this.textareaRows += 1;\n this.value += '\\n';\n } else if (event.key === 'Enter') {\n event.preventDefault();\n this.submit();\n }\n };\n\n private handlePointerDown = (event: PointerEvent): void => {\n if (!this.focused) {\n if (this.elementBounds != null) {\n if (event.buttons !== 2) {\n event.preventDefault();\n event.stopPropagation();\n }\n this.relativePointerDownPosition = translatePointToRelative(\n getMouseClientPosition(event, this.elementBounds),\n this.elementBounds,\n );\n this.pinPointerDownPosition = this.pin?.label.point;\n\n window.addEventListener('pointermove', this.handlePointerMove);\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n }\n };\n\n private handlePointerMove = (event: PointerEvent): void => {\n if (\n this.elementBounds != null &&\n this.relativePointerDownPosition &&\n this.pinPointerDownPosition != null\n ) {\n // Prevent selection of any text while interacting with the label\n event.preventDefault();\n event.stopPropagation();\n\n const point = getMouseClientPosition(event, this.elementBounds);\n const relative = translatePointToRelative(point, this.elementBounds);\n\n const relativeDelta = Point.subtract(\n relative,\n this.relativePointerDownPosition,\n );\n\n const myUpdatedPin =\n this.pin != null\n ? {\n ...this.pin,\n label: {\n ...this.pin.label,\n point: Point.add(this.pinPointerDownPosition, relativeDelta),\n },\n }\n : undefined;\n\n if (myUpdatedPin) {\n this.pinController?.updatePin(myUpdatedPin);\n this.computeScreenPosition();\n }\n }\n };\n\n private handlePointerUp = (event: PointerEvent): void => {\n if (\n this.pinController?.getToolMode() === 'edit' &&\n this.relativePointerDownPosition != null &&\n this.elementBounds != null\n ) {\n const pointerDownScreen = translatePointToScreen(\n this.relativePointerDownPosition,\n this.elementBounds,\n );\n const distanceBetweenStartAndEndPoint = Point.distance(\n pointerDownScreen,\n getMouseClientPosition(event, this.elementBounds),\n );\n\n if (distanceBetweenStartAndEndPoint <= 2) {\n this.focused = true;\n this.labelFocused.emit(this.pin?.id);\n }\n }\n\n this.relativePointerDownPosition = undefined;\n this.pinPointerDownPosition = undefined;\n\n window.removeEventListener('pointermove', this.handlePointerMove);\n window.removeEventListener('pointerup', this.handlePointerUp);\n };\n\n private handleTextBlur = (): void => {\n this.submit();\n };\n\n private handleTextInput = (event: Event): void => {\n const input = event.target as HTMLInputElement;\n this.value = input.value;\n };\n}\n",":host {\n /**\n * @prop --viewer-annotations-pin-label-line-color: A CSS color that\n * specifies the color of the label line\n */\n --viewer-annotations-pin-label-line-color: var(\n --viewer-annotations-pin-primary-color\n );\n\n /**\n * @prop --viewer-annotations-pin-label-line-width: A CSS color that\n * specifies the width of the label line\n */\n --viewer-annotations-pin-label-line-width: 1;\n\n overflow: hidden;\n pointer-events: none;\n}\n\n.label-line {\n pointer-events: auto;\n stroke: var(--viewer-annotations-pin-label-line-color);\n stroke-width: var(--viewer-annotations-pin-label-line-width);\n cursor: default;\n}\n\n.svg {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n pointer-events: none;\n height: 100%;\n width: 100%;\n}\n","import {\n Component,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n} from '@stencil/core';\nimport { Point } from '@vertexvis/geometry';\n\nimport { getPinColors, Pin } from '../../lib/pins/model';\n\n@Component({\n tag: 'vertex-viewer-pin-label-line',\n styleUrl: 'viewer-pin-label-line.css',\n shadow: false,\n})\nexport class VertexPinLabelLine {\n @Prop()\n public pinPoint: Point.Point | undefined;\n\n @Prop()\n public labelPoint: Point.Point | undefined;\n\n @Prop()\n public pin: Pin | undefined;\n\n protected render(): JSX.Element {\n const { primaryColor } = getPinColors(this.pin);\n return (\n <Host>\n <svg class=\"svg\">\n <line\n class=\"label-line\"\n style={{\n stroke: primaryColor,\n }}\n x1={this.labelPoint?.x}\n y1={this.labelPoint?.y}\n x2={this.pinPoint?.x}\n y2={this.pinPoint?.y}\n />\n </svg>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["viewerSpinnerCss","ViewerSpinner","constructor","hostRef","this","size","render","h","key","class","classNames"],"sources":["src/components/viewer-spinner/viewer-spinner.css?tag=vertex-viewer-spinner&encapsulation=shadow","src/components/viewer-spinner/viewer-spinner.tsx"],"sourcesContent":[".spinner {\n position: relative;\n height: 16px;\n width: 16px;\n}\n\n.spinner div {\n position: absolute;\n display: block;\n animation: spinner 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-radius: 50%;\n border-style: solid;\n box-sizing: border-box;\n border-color: var(--neutral-800) transparent transparent transparent;\n border-width: 1px;\n\n margin: 0;\n}\n\n.spinner div:nth-child(1) {\n animation-delay: -0.45s;\n}\n\n.spinner div:nth-child(2) {\n animation-delay: -0.3s;\n}\n\n.spinner div:nth-child(3) {\n animation-delay: -0.15s;\n}\n\n/* xs */\n.spinner.xs {\n height: 16px;\n width: 16px;\n}\n\n.spinner.xs div {\n border-width: 1px;\n height: 16px;\n width: 16px;\n margin: 0;\n}\n\n/* sm */\n.spinner.sm {\n height: 24px;\n width: 24px;\n}\n\n.spinner.sm div {\n border-width: 3px;\n height: 18px;\n width: 18px;\n margin: 2px;\n}\n\n/* md */\n.spinner.md {\n height: 32px;\n width: 32px;\n}\n\n.spinner.md div {\n border-width: 3px;\n height: 32px;\n width: 32px;\n margin: 2px;\n}\n\n/* lg */\n.spinner.lg {\n height: 64px;\n width: 64px;\n}\n\n.spinner.lg div {\n border-width: 6px;\n height: 52px;\n width: 52px;\n margin: 6px;\n}\n\n@keyframes spinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n\n/**\n * The predefined sizes for the spinner.\n */\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | undefined;\n\n@Component({\n tag: 'vertex-viewer-spinner',\n styleUrl: 'viewer-spinner.css',\n shadow: true,\n})\nexport class ViewerSpinner {\n /**\n * The size of the spinner. Can be `'xs' | 'sm' | 'md' | 'lg' | undefined`. Predefined\n * sizes are set to:\n *\n * * `xm`: 16px\n * * `sm`: 24px\n * * `md`: 32px\n * * `lg`: 64px\n */\n @Prop()\n public size?: SpinnerSize = 'md';\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <div\n class={classNames('spinner', {\n ['xs']: this.size === 'xs',\n ['sm']: this.size === 'sm',\n ['md']: this.size === 'md',\n ['lg']: this.size === 'lg',\n })}\n >\n <div />\n <div />\n <div />\n <div />\n </div>\n );\n }\n}\n"],"mappings":";;;uGAAA,MAAMA,EAAmB,IAAM,46B,MCalBC,EAAa,MAL1B,WAAAC,CAAAC,G,UAgBSC,KAAAC,KAAqB,IAmB7B,CAjBQ,MAAAC,GACL,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAOC,EAAW,UAAW,CAC3B,CAAC,MAAON,KAAKC,OAAS,KACtB,CAAC,MAAOD,KAAKC,OAAS,KACtB,CAAC,MAAOD,KAAKC,OAAS,KACtB,CAAC,MAAOD,KAAKC,OAAS,QAGxBE,EAAA,OAAAC,IAAA,6CACAD,EAAA,OAAAC,IAAA,6CACAD,EAAA,OAAAC,IAAA,6CACAD,EAAA,OAAAC,IAAA,6C","ignoreList":[]}
1
+ {"version":3,"names":["viewerSpinnerCss","ViewerSpinner","constructor","hostRef","this","size","render","h","key","class","classNames"],"sources":["src/components/viewer-spinner/viewer-spinner.css?tag=vertex-viewer-spinner&encapsulation=shadow","src/components/viewer-spinner/viewer-spinner.tsx"],"sourcesContent":[".spinner {\n position: relative;\n height: 16px;\n width: 16px;\n}\n\n.spinner div {\n position: absolute;\n display: block;\n animation: spinner 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-radius: 50%;\n border-style: solid;\n box-sizing: border-box;\n border-color: var(--neutral-800) transparent transparent transparent;\n border-width: 1px;\n\n margin: 0;\n}\n\n.spinner div:nth-child(1) {\n animation-delay: -0.45s;\n}\n\n.spinner div:nth-child(2) {\n animation-delay: -0.3s;\n}\n\n.spinner div:nth-child(3) {\n animation-delay: -0.15s;\n}\n\n/* xs */\n.spinner.xs {\n height: 16px;\n width: 16px;\n}\n\n.spinner.xs div {\n border-width: 1px;\n height: 16px;\n width: 16px;\n margin: 0;\n}\n\n/* sm */\n.spinner.sm {\n height: 24px;\n width: 24px;\n}\n\n.spinner.sm div {\n border-width: 3px;\n height: 18px;\n width: 18px;\n margin: 2px;\n}\n\n/* md */\n.spinner.md {\n height: 32px;\n width: 32px;\n}\n\n.spinner.md div {\n border-width: 3px;\n height: 32px;\n width: 32px;\n margin: 2px;\n}\n\n/* lg */\n.spinner.lg {\n height: 64px;\n width: 64px;\n}\n\n.spinner.lg div {\n border-width: 6px;\n height: 52px;\n width: 52px;\n margin: 6px;\n}\n\n@keyframes spinner {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n","import { Component, h, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n\n/**\n * The predefined sizes for the spinner.\n */\nexport type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg' | undefined;\n\n@Component({\n tag: 'vertex-viewer-spinner',\n styleUrl: 'viewer-spinner.css',\n shadow: true,\n})\nexport class ViewerSpinner {\n /**\n * The size of the spinner. Can be `'xs' | 'sm' | 'md' | 'lg' | undefined`. Predefined\n * sizes are set to:\n *\n * * `xm`: 16px\n * * `sm`: 24px\n * * `md`: 32px\n * * `lg`: 64px\n */\n @Prop()\n public size?: SpinnerSize = 'md';\n\n public render(): h.JSX.IntrinsicElements {\n return (\n <div\n class={classNames('spinner', {\n ['xs']: this.size === 'xs',\n ['sm']: this.size === 'sm',\n ['md']: this.size === 'md',\n ['lg']: this.size === 'lg',\n })}\n >\n <div />\n <div />\n <div />\n <div />\n </div>\n );\n }\n}\n"],"mappings":";;;uGAAA,MAAMA,EAAmB,IAAM,46B,MCalBC,EAAa,MAL1B,WAAAC,CAAAC,G,UAgBSC,KAAAC,KAAqB,IAmB7B,CAjBQ,MAAAC,GACL,OACEC,EAAA,OAAAC,IAAA,2CACEC,MAAOC,EAAW,UAAW,CAC3B,CAAC,MAAON,KAAKC,OAAS,KACtB,CAAC,MAAOD,KAAKC,OAAS,KACtB,CAAC,MAAOD,KAAKC,OAAS,KACtB,CAAC,MAAOD,KAAKC,OAAS,QAGxBE,EAAA,OAAAC,IAAA,6CACAD,EAAA,OAAAC,IAAA,6CACAD,EAAA,OAAAC,IAAA,6CACAD,EAAA,OAAAC,IAAA,6C","ignoreList":[]}