@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{E as i,b as t}from"./p-CDM7zNn0.js";import{p as s}from"./p-CZZALKHT.js";import{g as h}from"./p-CIBBr-p1.js";const e=16;const n=1.2;class o{constructor(t,s,h,e,n,o,l,r,a,d){this.downEvent=t;this.upEvent=s;this.moveEvent=h;this.rotateInteraction=e;this.rotatePointInteraction=n;this.zoomInteraction=o;this.panInteraction=l;this.twistInteraction=r;this.pivotInteraction=a;this.getConfig=d;this.isDragging=false;this.keyboardControls=false;this.disableIndividualInteractions=false;this.primaryInteractionTypeChange=new i;this.primaryInteraction=e;this.handleDownEvent=this.handleDownEvent.bind(this);this.handleMouseWheel=this.handleMouseWheel.bind(this);this.handleWindowMove=this.handleWindowMove.bind(this);this.handleWindowUp=this.handleWindowUp.bind(this);this.handleDoubleClick=this.handleDoubleClick.bind(this)}initialize(i,t){this.element=i;this.interactionApi=t;i.addEventListener(this.downEvent,this.handleDownEvent);i.addEventListener("mousedown",this.handleDoubleClick);i.addEventListener("wheel",this.handleMouseWheel,{passive:false})}dispose(){var i,t,s;(i=this.element)===null||i===void 0?void 0:i.removeEventListener(this.downEvent,this.handleDownEvent);(t=this.element)===null||t===void 0?void 0:t.removeEventListener("mousedown",this.handleDoubleClick);(s=this.element)===null||s===void 0?void 0:s.removeEventListener("wheel",this.handleMouseWheel);this.element=undefined}onPrimaryInteractionTypeChange(i){return this.primaryInteractionTypeChange.on(i)}setCurrentInteractionType(i){var t;switch(i){case"rotate":this.currentInteraction=this.rotateInteraction;break;case"zoom":this.currentInteraction=this.zoomInteraction;break;case"pan":this.currentInteraction=this.panInteraction;break;case"twist":this.currentInteraction=this.twistInteraction;break;case"rotate-point":this.currentInteraction=this.rotatePointInteraction;break;case"pivot":this.currentInteraction=this.pivotInteraction;break;default:this.currentInteraction=undefined}if(this.draggingInteraction){const i=this.draggingInteraction.getPosition();this.draggingInteraction=this.currentInteraction||this.primaryInteraction;(t=this.interactionApi)===null||t===void 0?void 0:t.resetLastAngle();this.draggingInteraction.setPosition(i)}}getPrimaryInteractionType(){return this.primaryInteraction.getType()}getCurrentInteractionType(){return(this.currentInteraction||this.primaryInteraction).getType()}setPrimaryInteractionType(i){switch(i){case"rotate":this.primaryInteraction=this.rotateInteraction;this.lastPrimaryRotateInteraction=this.rotateInteraction;break;case"rotate-point":this.primaryInteraction=this.rotatePointInteraction;this.lastPrimaryRotateInteraction=this.rotatePointInteraction;break;case"zoom":this.primaryInteraction=this.zoomInteraction;break;case"pan":this.primaryInteraction=this.panInteraction;break;case"pivot":this.primaryInteraction=this.pivotInteraction;break}this.primaryInteractionTypeChange.emit()}setDefaultKeyboardControls(i){this.keyboardControls=i}handleDownEvent(i){i.preventDefault();this.interactionTimer=window.setTimeout((()=>{this.downPosition=s.create(i.screenX,i.screenY);this.downPositionCanvas=this.getCanvasPosition(i);this.interactionTimer=undefined;if(this.lastMoveEvent!=null){this.handleWindowMove(this.lastMoveEvent)}}),this.getConfig().interactions.interactionDelay);window.addEventListener(this.moveEvent,this.handleWindowMove);window.addEventListener(this.upEvent,this.handleWindowUp)}handleWindowMove(i){if(this.interactionTimer==null){if(this.disableIndividualInteractions){return}const t=s.create(i.screenX,i.screenY);const h=this.interactionApi!=null?this.interactionApi.pixelThreshold(this.isTouch(i)):2;if(this.downPosition!=null&&s.distance(t,this.downPosition)>=h&&!this.isDragging){this.beginDrag(i);this.isDragging=true}if(this.isDragging){this.drag(i)}}this.lastMoveEvent=i}async handleWindowUp(i){if(this.isDragging){this.endDrag(i);this.isDragging=false}if(this.interactionTimer!=null){window.clearTimeout(this.interactionTimer);this.interactionTimer=undefined}window.removeEventListener(this.moveEvent,this.handleWindowMove);window.removeEventListener(this.upEvent,this.handleWindowUp);this.lastMoveEvent=undefined}async handleDoubleClick(i){if(i.detail===2&&i.buttons===4&&this.interactionApi!=null){await this.interactionApi.viewAll()}}beginDrag(i){var t;if(this.keyboardControls&&i.metaKey&&i.shiftKey){this.currentInteraction=this.rotatePointInteraction}else if(this.keyboardControls&&i.shiftKey&&i.altKey){this.currentInteraction=this.twistInteraction}else if(this.keyboardControls&&i.shiftKey){this.currentInteraction=this.zoomInteraction}else if(this.keyboardControls&&(i.metaKey||i.ctrlKey)){this.currentInteraction=this.panInteraction}else if(this.keyboardControls&&i.altKey){this.currentInteraction=this.rotateInteraction}if(i.buttons===1){this.draggingInteraction=this.currentInteraction||this.primaryInteraction}else if(i.buttons===2){this.draggingInteraction=this.panInteraction}else if(i.buttons===4){this.draggingInteraction=(t=this.lastPrimaryRotateInteraction)!==null&&t!==void 0?t:this.rotateInteraction}if(this.draggingInteraction!=null&&this.interactionApi!=null&&this.element!=null){this.zoomInteraction.endDrag(i,this.interactionApi);this.draggingInteraction.beginDrag(i,this.downPositionCanvas||s.create(i.clientX,i.clientY),this.interactionApi,this.element)}}drag(i){if(this.keyboardControls&&i.altKey&&i.shiftKey){this.currentInteraction=this.twistInteraction}else{this.currentInteraction=undefined}this.draggingInteraction=this.currentInteraction||this.draggingInteraction||this.primaryInteraction;if(this.draggingInteraction!=null&&this.interactionApi!=null){this.draggingInteraction.drag(i,this.interactionApi)}}endDrag(i){if(this.keyboardControls&&this.currentInteraction===this.twistInteraction){this.currentInteraction=undefined}if(this.draggingInteraction!=null&&this.interactionApi!=null){this.draggingInteraction.endDrag(i,this.interactionApi);this.draggingInteraction=undefined}}handleMouseWheel(i){i.preventDefault();if(this.element!=null&&this.interactionApi!=null&&i.buttons!==4){const t=-this.wheelDeltaToPixels(i.deltaY,i.deltaMode)/10;const s=this.element.getBoundingClientRect();const e=h(i,s);const n=Math.abs(i.deltaY);if(n<12){void this.zoomInteraction.zoomToPoint(e,t,this.interactionApi)}else{const i=Math.min(10,Math.ceil(n/12));const s=t/i;for(let t=1;t<=i;t++){const i=t*5;window.setTimeout((()=>{if(this.interactionApi!=null){this.zoomInteraction.zoomToPoint(e,s,this.interactionApi,i)}}),i)}}}}wheelDeltaToPixels(i,t){if(this.bodyStyleCache==null){const i=window.getComputedStyle(document.body);const t=Number.parseFloat(i.getPropertyValue("fontSize"))||e;const s=Number.parseFloat(i.getPropertyValue("lineHeight"));this.bodyStyleCache={lineHeightPixels:Number.isFinite(s)?s:t*n,height:Number.parseFloat(i.getPropertyValue("height"))||window.innerHeight};window.setTimeout((()=>{this.bodyStyleCache=undefined}),4800)}if(t===1){return i*this.bodyStyleCache.lineHeightPixels}else if(t===2){return i*this.bodyStyleCache.height}return i}getCanvasPosition(i){var t;const h=(t=this.element)===null||t===void 0?void 0:t.getBoundingClientRect();const e=h!=null?s.create(h.left,h.top):undefined;return e!=null?s.subtract(s.create(i.clientX,i.clientY),e):undefined}isTouch(i){return window.PointerEvent!=null&&i instanceof PointerEvent?i.pointerType==="touch":false}}class l extends o{constructor(){super(...arguments);this.registeredExternalElements={}}registerAdditionalElement(i){const s=t.create();const h=this.addEventListenersToElement(i);this.registeredExternalElements[s]=h;return h}deregisterAdditionalElementById(i){const t=this.registeredExternalElements[i];t.dispose();this.registeredExternalElements=Object.fromEntries(Object.entries(this.registeredExternalElements).filter((([t])=>t!==i)))}deregisterAllListeners(){Object.keys(this.registeredExternalElements).forEach((i=>this.deregisterAdditionalElementById(i)))}}export{o as B,l as M};
5
- //# sourceMappingURL=p-7m7Vr5V7.js.map
4
+ import{E as i,b as t}from"./p-CDM7zNn0.js";import{p as s}from"./p-2UsvOTHJ.js";import{g as h}from"./p-CPROw2BU.js";const e=16;const n=1.2;class o{constructor(t,s,h,e,n,o,l,r,a,d){this.downEvent=t;this.upEvent=s;this.moveEvent=h;this.rotateInteraction=e;this.rotatePointInteraction=n;this.zoomInteraction=o;this.panInteraction=l;this.twistInteraction=r;this.pivotInteraction=a;this.getConfig=d;this.isDragging=false;this.keyboardControls=false;this.disableIndividualInteractions=false;this.primaryInteractionTypeChange=new i;this.primaryInteraction=e;this.handleDownEvent=this.handleDownEvent.bind(this);this.handleMouseWheel=this.handleMouseWheel.bind(this);this.handleWindowMove=this.handleWindowMove.bind(this);this.handleWindowUp=this.handleWindowUp.bind(this);this.handleDoubleClick=this.handleDoubleClick.bind(this)}initialize(i,t){this.element=i;this.interactionApi=t;i.addEventListener(this.downEvent,this.handleDownEvent);i.addEventListener("mousedown",this.handleDoubleClick);i.addEventListener("wheel",this.handleMouseWheel,{passive:false})}dispose(){var i,t,s;(i=this.element)===null||i===void 0?void 0:i.removeEventListener(this.downEvent,this.handleDownEvent);(t=this.element)===null||t===void 0?void 0:t.removeEventListener("mousedown",this.handleDoubleClick);(s=this.element)===null||s===void 0?void 0:s.removeEventListener("wheel",this.handleMouseWheel);this.element=undefined}onPrimaryInteractionTypeChange(i){return this.primaryInteractionTypeChange.on(i)}setCurrentInteractionType(i){var t;switch(i){case"rotate":this.currentInteraction=this.rotateInteraction;break;case"zoom":this.currentInteraction=this.zoomInteraction;break;case"pan":this.currentInteraction=this.panInteraction;break;case"twist":this.currentInteraction=this.twistInteraction;break;case"rotate-point":this.currentInteraction=this.rotatePointInteraction;break;case"pivot":this.currentInteraction=this.pivotInteraction;break;default:this.currentInteraction=undefined}if(this.draggingInteraction){const i=this.draggingInteraction.getPosition();this.draggingInteraction=this.currentInteraction||this.primaryInteraction;(t=this.interactionApi)===null||t===void 0?void 0:t.resetLastAngle();this.draggingInteraction.setPosition(i)}}getPrimaryInteractionType(){return this.primaryInteraction.getType()}getCurrentInteractionType(){return(this.currentInteraction||this.primaryInteraction).getType()}setPrimaryInteractionType(i){switch(i){case"rotate":this.primaryInteraction=this.rotateInteraction;this.lastPrimaryRotateInteraction=this.rotateInteraction;break;case"rotate-point":this.primaryInteraction=this.rotatePointInteraction;this.lastPrimaryRotateInteraction=this.rotatePointInteraction;break;case"zoom":this.primaryInteraction=this.zoomInteraction;break;case"pan":this.primaryInteraction=this.panInteraction;break;case"pivot":this.primaryInteraction=this.pivotInteraction;break}this.primaryInteractionTypeChange.emit()}setDefaultKeyboardControls(i){this.keyboardControls=i}handleDownEvent(i){i.preventDefault();this.interactionTimer=window.setTimeout((()=>{this.downPosition=s.create(i.screenX,i.screenY);this.downPositionCanvas=this.getCanvasPosition(i);this.interactionTimer=undefined;if(this.lastMoveEvent!=null){this.handleWindowMove(this.lastMoveEvent)}}),this.getConfig().interactions.interactionDelay);window.addEventListener(this.moveEvent,this.handleWindowMove);window.addEventListener(this.upEvent,this.handleWindowUp)}handleWindowMove(i){if(this.interactionTimer==null){if(this.disableIndividualInteractions){return}const t=s.create(i.screenX,i.screenY);const h=this.interactionApi!=null?this.interactionApi.pixelThreshold(this.isTouch(i)):2;if(this.downPosition!=null&&s.distance(t,this.downPosition)>=h&&!this.isDragging){this.beginDrag(i);this.isDragging=true}if(this.isDragging){this.drag(i)}}this.lastMoveEvent=i}async handleWindowUp(i){if(this.isDragging){this.endDrag(i);this.isDragging=false}if(this.interactionTimer!=null){window.clearTimeout(this.interactionTimer);this.interactionTimer=undefined}window.removeEventListener(this.moveEvent,this.handleWindowMove);window.removeEventListener(this.upEvent,this.handleWindowUp);this.lastMoveEvent=undefined}async handleDoubleClick(i){if(i.detail===2&&i.buttons===4&&this.interactionApi!=null){await this.interactionApi.viewAll()}}beginDrag(i){var t;if(this.keyboardControls&&i.metaKey&&i.shiftKey){this.currentInteraction=this.rotatePointInteraction}else if(this.keyboardControls&&i.shiftKey&&i.altKey){this.currentInteraction=this.twistInteraction}else if(this.keyboardControls&&i.shiftKey){this.currentInteraction=this.zoomInteraction}else if(this.keyboardControls&&(i.metaKey||i.ctrlKey)){this.currentInteraction=this.panInteraction}else if(this.keyboardControls&&i.altKey){this.currentInteraction=this.rotateInteraction}if(i.buttons===1){this.draggingInteraction=this.currentInteraction||this.primaryInteraction}else if(i.buttons===2){this.draggingInteraction=this.panInteraction}else if(i.buttons===4){this.draggingInteraction=(t=this.lastPrimaryRotateInteraction)!==null&&t!==void 0?t:this.rotateInteraction}if(this.draggingInteraction!=null&&this.interactionApi!=null&&this.element!=null){this.zoomInteraction.endDrag(i,this.interactionApi);this.draggingInteraction.beginDrag(i,this.downPositionCanvas||s.create(i.clientX,i.clientY),this.interactionApi,this.element)}}drag(i){if(this.keyboardControls&&i.altKey&&i.shiftKey){this.currentInteraction=this.twistInteraction}else{this.currentInteraction=undefined}this.draggingInteraction=this.currentInteraction||this.draggingInteraction||this.primaryInteraction;if(this.draggingInteraction!=null&&this.interactionApi!=null){this.draggingInteraction.drag(i,this.interactionApi)}}endDrag(i){if(this.keyboardControls&&this.currentInteraction===this.twistInteraction){this.currentInteraction=undefined}if(this.draggingInteraction!=null&&this.interactionApi!=null){this.draggingInteraction.endDrag(i,this.interactionApi);this.draggingInteraction=undefined}}handleMouseWheel(i){i.preventDefault();if(this.element!=null&&this.interactionApi!=null&&i.buttons!==4){const t=-this.wheelDeltaToPixels(i.deltaY,i.deltaMode)/10;const s=this.element.getBoundingClientRect();const e=h(i,s);const n=Math.abs(i.deltaY);if(n<12){void this.zoomInteraction.zoomToPoint(e,t,this.interactionApi)}else{const i=Math.min(10,Math.ceil(n/12));const s=t/i;for(let t=1;t<=i;t++){const i=t*5;window.setTimeout((()=>{if(this.interactionApi!=null){this.zoomInteraction.zoomToPoint(e,s,this.interactionApi,i)}}),i)}}}}wheelDeltaToPixels(i,t){if(this.bodyStyleCache==null){const i=window.getComputedStyle(document.body);const t=Number.parseFloat(i.getPropertyValue("fontSize"))||e;const s=Number.parseFloat(i.getPropertyValue("lineHeight"));this.bodyStyleCache={lineHeightPixels:Number.isFinite(s)?s:t*n,height:Number.parseFloat(i.getPropertyValue("height"))||window.innerHeight};window.setTimeout((()=>{this.bodyStyleCache=undefined}),4800)}if(t===1){return i*this.bodyStyleCache.lineHeightPixels}else if(t===2){return i*this.bodyStyleCache.height}return i}getCanvasPosition(i){var t;const h=(t=this.element)===null||t===void 0?void 0:t.getBoundingClientRect();const e=h!=null?s.create(h.left,h.top):undefined;return e!=null?s.subtract(s.create(i.clientX,i.clientY),e):undefined}isTouch(i){return window.PointerEvent!=null&&i instanceof PointerEvent?i.pointerType==="touch":false}}class l extends o{constructor(){super(...arguments);this.registeredExternalElements={}}registerAdditionalElement(i){const s=t.create();const h=this.addEventListenersToElement(i);this.registeredExternalElements[s]=h;return h}deregisterAdditionalElementById(i){const t=this.registeredExternalElements[i];t.dispose();this.registeredExternalElements=Object.fromEntries(Object.entries(this.registeredExternalElements).filter((([t])=>t!==i)))}deregisterAllListeners(){Object.keys(this.registeredExternalElements).forEach((i=>this.deregisterAdditionalElementById(i)))}}export{o as B,l as M};
5
+ //# sourceMappingURL=p-Ng27jBsS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_FONT_SIZE","DEFAULT_FONT_TO_LINE_HEIGHT_MULTIPLIER","BaseInteractionHandler","constructor","downEvent","upEvent","moveEvent","rotateInteraction","rotatePointInteraction","zoomInteraction","panInteraction","twistInteraction","pivotInteraction","getConfig","this","isDragging","keyboardControls","disableIndividualInteractions","primaryInteractionTypeChange","EventDispatcher","primaryInteraction","handleDownEvent","bind","handleMouseWheel","handleWindowMove","handleWindowUp","handleDoubleClick","initialize","element","api","interactionApi","addEventListener","passive","dispose","_a","removeEventListener","_b","_c","undefined","onPrimaryInteractionTypeChange","listener","on","setCurrentInteractionType","type","currentInteraction","draggingInteraction","point","getPosition","resetLastAngle","setPosition","getPrimaryInteractionType","getType","getCurrentInteractionType","setPrimaryInteractionType","lastPrimaryRotateInteraction","emit","setDefaultKeyboardControls","event","preventDefault","interactionTimer","window","setTimeout","downPosition","Point","create","screenX","screenY","downPositionCanvas","getCanvasPosition","lastMoveEvent","interactions","interactionDelay","position","pixelThreshold","isTouch","distance","beginDrag","drag","endDrag","clearTimeout","detail","buttons","viewAll","metaKey","shiftKey","altKey","ctrlKey","clientX","clientY","delta","wheelDeltaToPixels","deltaY","deltaMode","rect","getBoundingClientRect","getMouseClientPosition","scrollSize","Math","abs","zoomToPoint","divisions","min","ceil","zoomDelta","i","delayMs","bodyStyleCache","bodyStyle","getComputedStyle","document","body","fontSize","Number","parseFloat","getPropertyValue","lineHeight","lineHeightPixels","isFinite","height","innerHeight","canvasBounds","canvasOffset","left","top","subtract","PointerEvent","pointerType","MultiElementInteractionHandler","registeredExternalElements","registerAdditionalElement","external","id","UUID","disposable","addEventListenersToElement","deregisterAdditionalElementById","externalElement","Object","fromEntries","entries","filter","key","deregisterAllListeners","keys","forEach"],"sources":["src/lib/interactions/baseInteractionHandler.ts","src/lib/interactions/multiElementInteractionHandler.ts"],"sourcesContent":["import { Point } from '@vertexvis/geometry';\nimport { Disposable, EventDispatcher, Listener } from '@vertexvis/utils';\n\nimport { ConfigProvider } from '../config';\nimport { getMouseClientPosition } from '../dom';\nimport { InteractionApi } from './interactionApi';\nimport { BaseEvent } from './interactionEvent';\nimport { InteractionHandler } from './interactionHandler';\nimport {\n MouseInteraction,\n PanInteraction,\n PivotInteraction,\n RotateInteraction,\n RotatePointInteraction,\n TwistInteraction,\n ZoomInteraction,\n} from './mouseInteractions';\n\nexport type InteractionType =\n 'rotate' | 'zoom' | 'pan' | 'twist' | 'rotate-point' | 'pivot';\n\nconst DEFAULT_FONT_SIZE = 16;\nconst DEFAULT_FONT_TO_LINE_HEIGHT_MULTIPLIER = 1.2;\n\nexport abstract class BaseInteractionHandler implements InteractionHandler {\n protected interactionApi?: InteractionApi;\n protected element?: HTMLElement;\n protected downPosition?: Point.Point;\n private downPositionCanvas?: Point.Point;\n private primaryInteraction: MouseInteraction;\n private currentInteraction?: MouseInteraction;\n private draggingInteraction: MouseInteraction | undefined;\n private lastPrimaryRotateInteraction?: MouseInteraction;\n private isDragging = false;\n private lastMoveEvent?: BaseEvent;\n private interactionTimer?: number;\n private keyboardControls = false;\n\n protected disableIndividualInteractions = false;\n\n private bodyStyleCache?: {\n lineHeightPixels: number;\n height: number;\n };\n\n private primaryInteractionTypeChange = new EventDispatcher<void>();\n\n public constructor(\n protected downEvent: 'mousedown' | 'pointerdown',\n protected upEvent: 'mouseup' | 'pointerup',\n protected moveEvent: 'mousemove' | 'pointermove',\n private rotateInteraction: RotateInteraction,\n private rotatePointInteraction: RotatePointInteraction,\n private zoomInteraction: ZoomInteraction,\n private panInteraction: PanInteraction,\n private twistInteraction: TwistInteraction,\n private pivotInteraction: PivotInteraction,\n private getConfig: ConfigProvider,\n ) {\n this.primaryInteraction = rotateInteraction;\n this.handleDownEvent = this.handleDownEvent.bind(this);\n this.handleMouseWheel = this.handleMouseWheel.bind(this);\n this.handleWindowMove = this.handleWindowMove.bind(this);\n this.handleWindowUp = this.handleWindowUp.bind(this);\n this.handleDoubleClick = this.handleDoubleClick.bind(this);\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.interactionApi = api;\n element.addEventListener(this.downEvent, this.handleDownEvent);\n element.addEventListener('mousedown', this.handleDoubleClick);\n element.addEventListener('wheel', this.handleMouseWheel, {\n passive: false,\n });\n }\n\n public dispose(): void {\n this.element?.removeEventListener(this.downEvent, this.handleDownEvent);\n this.element?.removeEventListener('mousedown', this.handleDoubleClick);\n this.element?.removeEventListener('wheel', this.handleMouseWheel);\n this.element = undefined;\n }\n\n public onPrimaryInteractionTypeChange(listener: Listener<void>): Disposable {\n return this.primaryInteractionTypeChange.on(listener);\n }\n\n public setCurrentInteractionType(type?: InteractionType): void {\n switch (type) {\n case 'rotate':\n this.currentInteraction = this.rotateInteraction;\n break;\n case 'zoom':\n this.currentInteraction = this.zoomInteraction;\n break;\n case 'pan':\n this.currentInteraction = this.panInteraction;\n break;\n case 'twist':\n this.currentInteraction = this.twistInteraction;\n break;\n case 'rotate-point':\n this.currentInteraction = this.rotatePointInteraction;\n break;\n case 'pivot':\n this.currentInteraction = this.pivotInteraction;\n break;\n default:\n this.currentInteraction = undefined;\n }\n\n if (this.draggingInteraction) {\n const point = this.draggingInteraction.getPosition();\n this.draggingInteraction =\n this.currentInteraction || this.primaryInteraction;\n this.interactionApi?.resetLastAngle();\n this.draggingInteraction.setPosition(point);\n }\n }\n\n public getPrimaryInteractionType(): InteractionType {\n return this.primaryInteraction.getType();\n }\n\n public getCurrentInteractionType(): InteractionType {\n return (this.currentInteraction || this.primaryInteraction).getType();\n }\n\n public setPrimaryInteractionType(type: InteractionType): void {\n switch (type) {\n case 'rotate':\n this.primaryInteraction = this.rotateInteraction;\n this.lastPrimaryRotateInteraction = this.rotateInteraction;\n break;\n case 'rotate-point':\n this.primaryInteraction = this.rotatePointInteraction;\n this.lastPrimaryRotateInteraction = this.rotatePointInteraction;\n break;\n case 'zoom':\n this.primaryInteraction = this.zoomInteraction;\n break;\n case 'pan':\n this.primaryInteraction = this.panInteraction;\n break;\n case 'pivot':\n this.primaryInteraction = this.pivotInteraction;\n break;\n }\n this.primaryInteractionTypeChange.emit();\n }\n\n public setDefaultKeyboardControls(keyboardControls: boolean): void {\n this.keyboardControls = keyboardControls;\n }\n\n protected handleDownEvent(event: BaseEvent): void {\n // Prevent selection of any text while interacting with the model.\n event.preventDefault();\n\n this.interactionTimer = window.setTimeout(() => {\n this.downPosition = Point.create(event.screenX, event.screenY);\n this.downPositionCanvas = this.getCanvasPosition(event);\n this.interactionTimer = undefined;\n\n // Perform the current movement in the case that the interaction timer elapses\n if (this.lastMoveEvent != null) {\n this.handleWindowMove(this.lastMoveEvent);\n }\n }, this.getConfig().interactions.interactionDelay);\n\n window.addEventListener(this.moveEvent, this.handleWindowMove);\n window.addEventListener(this.upEvent, this.handleWindowUp);\n }\n\n protected handleWindowMove(event: BaseEvent): void {\n if (this.interactionTimer == null) {\n if (this.disableIndividualInteractions) {\n return;\n }\n\n const position = Point.create(event.screenX, event.screenY);\n const pixelThreshold =\n this.interactionApi != null\n ? this.interactionApi.pixelThreshold(this.isTouch(event))\n : 2;\n if (\n this.downPosition != null &&\n Point.distance(position, this.downPosition) >= pixelThreshold &&\n !this.isDragging\n ) {\n this.beginDrag(event);\n this.isDragging = true;\n }\n\n if (this.isDragging) {\n this.drag(event);\n }\n }\n\n this.lastMoveEvent = event;\n }\n\n protected async handleWindowUp(event: BaseEvent): Promise<void> {\n if (this.isDragging) {\n this.endDrag(event);\n this.isDragging = false;\n }\n\n if (this.interactionTimer != null) {\n window.clearTimeout(this.interactionTimer);\n this.interactionTimer = undefined;\n }\n\n window.removeEventListener(this.moveEvent, this.handleWindowMove);\n window.removeEventListener(this.upEvent, this.handleWindowUp);\n this.lastMoveEvent = undefined;\n }\n\n protected async handleDoubleClick(event: BaseEvent): Promise<void> {\n // event.detail is the number of clicks that have happened recently. If the number is 2, then the user double clicked.\n if (\n event.detail === 2 &&\n event.buttons === 4 &&\n this.interactionApi != null\n ) {\n await this.interactionApi.viewAll();\n }\n }\n\n protected beginDrag(event: BaseEvent): void {\n if (this.keyboardControls && event.metaKey && event.shiftKey) {\n this.currentInteraction = this.rotatePointInteraction;\n } else if (this.keyboardControls && event.shiftKey && event.altKey) {\n this.currentInteraction = this.twistInteraction;\n } else if (this.keyboardControls && event.shiftKey) {\n this.currentInteraction = this.zoomInteraction;\n } else if (this.keyboardControls && (event.metaKey || event.ctrlKey)) {\n this.currentInteraction = this.panInteraction;\n } else if (this.keyboardControls && event.altKey) {\n this.currentInteraction = this.rotateInteraction;\n }\n\n if (event.buttons === 1) {\n this.draggingInteraction =\n this.currentInteraction || this.primaryInteraction;\n } else if (event.buttons === 2) {\n this.draggingInteraction = this.panInteraction;\n } else if (event.buttons === 4) {\n this.draggingInteraction =\n this.lastPrimaryRotateInteraction ?? this.rotateInteraction;\n }\n\n if (\n this.draggingInteraction != null &&\n this.interactionApi != null &&\n this.element != null\n ) {\n // Ensure any scroll wheel interactions have been ended prior to beginning\n // another interaction to prevent the interaction from being ended early.\n this.zoomInteraction.endDrag(event, this.interactionApi);\n\n this.draggingInteraction.beginDrag(\n event,\n this.downPositionCanvas || Point.create(event.clientX, event.clientY),\n this.interactionApi,\n this.element,\n );\n }\n }\n\n protected drag(event: BaseEvent): void {\n if (this.keyboardControls && event.altKey && event.shiftKey) {\n this.currentInteraction = this.twistInteraction;\n } else {\n this.currentInteraction = undefined;\n }\n this.draggingInteraction =\n this.currentInteraction ||\n this.draggingInteraction ||\n this.primaryInteraction;\n if (this.draggingInteraction != null && this.interactionApi != null) {\n this.draggingInteraction.drag(event, this.interactionApi);\n }\n }\n\n protected endDrag(event: BaseEvent): void {\n if (\n this.keyboardControls &&\n this.currentInteraction === this.twistInteraction\n ) {\n this.currentInteraction = undefined;\n }\n\n if (this.draggingInteraction != null && this.interactionApi != null) {\n this.draggingInteraction.endDrag(event, this.interactionApi);\n this.draggingInteraction = undefined;\n }\n }\n\n protected handleMouseWheel(event: WheelEvent): void {\n event.preventDefault();\n\n if (\n this.element != null &&\n this.interactionApi != null &&\n event.buttons !== 4\n ) {\n const delta =\n -this.wheelDeltaToPixels(event.deltaY, event.deltaMode) / 10;\n const rect = this.element.getBoundingClientRect();\n const point = getMouseClientPosition(event, rect);\n const scrollSize = Math.abs(event.deltaY);\n\n if (scrollSize < 12) {\n // For small wheel movements, send a single zoom event.\n void this.zoomInteraction.zoomToPoint(\n point,\n delta,\n this.interactionApi,\n );\n } else {\n const divisions = Math.min(10, Math.ceil(scrollSize / 12));\n const zoomDelta = delta / divisions;\n // For larger wheel movements, divide the delta into multiple zoom events with increasing delay\n // which approximates a smooth zoom deceleration curve for the end user.\n for (let i = 1; i <= divisions; i++) {\n const delayMs = i * 5;\n window.setTimeout(() => {\n if (this.interactionApi != null) {\n this.zoomInteraction.zoomToPoint(\n point,\n zoomDelta,\n this.interactionApi,\n delayMs,\n );\n }\n }, delayMs);\n }\n }\n }\n }\n\n protected wheelDeltaToPixels(deltaY: number, deltaMode: number): number {\n // Cached values are an optimization we can use given mouseWheel\n // events can happen dozen or hundreds of times per scroll, but body style\n // is very unlikely to change frequently or while doing wheel movements.\n if (this.bodyStyleCache == null) {\n const bodyStyle = window.getComputedStyle(document.body);\n const fontSize =\n Number.parseFloat(bodyStyle.getPropertyValue('fontSize')) ||\n DEFAULT_FONT_SIZE;\n const lineHeight = Number.parseFloat(\n bodyStyle.getPropertyValue('lineHeight'),\n );\n this.bodyStyleCache = {\n lineHeightPixels: Number.isFinite(lineHeight)\n ? lineHeight\n : fontSize * DEFAULT_FONT_TO_LINE_HEIGHT_MULTIPLIER,\n height:\n Number.parseFloat(bodyStyle.getPropertyValue('height')) ||\n window.innerHeight,\n };\n window.setTimeout(() => {\n this.bodyStyleCache = undefined;\n }, 4800); // For now hardcoded. Could be derived. eg mouseWheelInteractionEndDebounce * 12\n }\n\n if (deltaMode === 1) {\n // deltaMode 1 corresponds to DOM_DELTA_LINE, which computes deltas in lines\n return deltaY * this.bodyStyleCache.lineHeightPixels;\n } else if (deltaMode === 2) {\n // deltaMode 2 corresponds to DOM_DELTA_PAGE, which computes deltas in pages\n return deltaY * this.bodyStyleCache.height;\n }\n // deltaMode 0 corresponds to DOM_DELTA_PIXEL, which computes deltas in pixels\n return deltaY;\n }\n\n protected getCanvasPosition(event: BaseEvent): Point.Point | undefined {\n const canvasBounds = this.element?.getBoundingClientRect();\n const canvasOffset =\n canvasBounds != null\n ? Point.create(canvasBounds.left, canvasBounds.top)\n : undefined;\n\n return canvasOffset != null\n ? Point.subtract(Point.create(event.clientX, event.clientY), canvasOffset)\n : undefined;\n }\n\n protected isTouch(event: BaseEvent): boolean {\n return window.PointerEvent != null && event instanceof PointerEvent\n ? event.pointerType === 'touch'\n : false;\n }\n}\n","import { Disposable, UUID } from '@vertexvis/utils';\n\nimport { BaseInteractionHandler } from './baseInteractionHandler';\n\nexport abstract class MultiElementInteractionHandler extends BaseInteractionHandler {\n protected registeredExternalElements: Record<UUID.UUID, Disposable> = {};\n\n public registerAdditionalElement(external: HTMLElement): Disposable {\n const id = UUID.create();\n const disposable = this.addEventListenersToElement(external);\n\n this.registeredExternalElements[id] = disposable;\n return disposable;\n }\n\n public deregisterAdditionalElementById(id: UUID.UUID): void {\n const externalElement = this.registeredExternalElements[id];\n\n externalElement.dispose();\n\n this.registeredExternalElements = Object.fromEntries(\n Object.entries(this.registeredExternalElements).filter(\n ([key]) => key !== id,\n ),\n );\n }\n\n protected deregisterAllListeners(): void {\n Object.keys(this.registeredExternalElements).forEach((id) =>\n this.deregisterAdditionalElementById(id),\n );\n }\n\n public abstract addEventListenersToElement(element?: HTMLElement): Disposable;\n}\n"],"mappings":";;;mHAqBA,MAAMA,EAAoB,GAC1B,MAAMC,EAAyC,I,MAEzBC,EAuBpB,WAAAC,CACYC,EACAC,EACAC,EACFC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GATEC,KAAAV,YACAU,KAAAT,UACAS,KAAAR,YACFQ,KAAAP,oBACAO,KAAAN,yBACAM,KAAAL,kBACAK,KAAAJ,iBACAI,KAAAH,mBACAG,KAAAF,mBACAE,KAAAD,YAxBFC,KAAAC,WAAa,MAGbD,KAAAE,iBAAmB,MAEjBF,KAAAG,8BAAgC,MAOlCH,KAAAI,6BAA+B,IAAIC,EAczCL,KAAKM,mBAAqBb,EAC1BO,KAAKO,gBAAkBP,KAAKO,gBAAgBC,KAAKR,MACjDA,KAAKS,iBAAmBT,KAAKS,iBAAiBD,KAAKR,MACnDA,KAAKU,iBAAmBV,KAAKU,iBAAiBF,KAAKR,MACnDA,KAAKW,eAAiBX,KAAKW,eAAeH,KAAKR,MAC/CA,KAAKY,kBAAoBZ,KAAKY,kBAAkBJ,KAAKR,K,CAGhD,UAAAa,CAAWC,EAAsBC,GACtCf,KAAKc,QAAUA,EACfd,KAAKgB,eAAiBD,EACtBD,EAAQG,iBAAiBjB,KAAKV,UAAWU,KAAKO,iBAC9CO,EAAQG,iBAAiB,YAAajB,KAAKY,mBAC3CE,EAAQG,iBAAiB,QAASjB,KAAKS,iBAAkB,CACvDS,QAAS,O,CAIN,OAAAC,G,WACLC,EAAApB,KAAKc,WAAO,MAAAM,SAAA,SAAAA,EAAEC,oBAAoBrB,KAAKV,UAAWU,KAAKO,kBACvDe,EAAAtB,KAAKc,WAAO,MAAAQ,SAAA,SAAAA,EAAED,oBAAoB,YAAarB,KAAKY,oBACpDW,EAAAvB,KAAKc,WAAO,MAAAS,SAAA,SAAAA,EAAEF,oBAAoB,QAASrB,KAAKS,kBAChDT,KAAKc,QAAUU,S,CAGV,8BAAAC,CAA+BC,GACpC,OAAO1B,KAAKI,6BAA6BuB,GAAGD,E,CAGvC,yBAAAE,CAA0BC,G,MAC/B,OAAQA,GACN,IAAK,SACH7B,KAAK8B,mBAAqB9B,KAAKP,kBAC/B,MACF,IAAK,OACHO,KAAK8B,mBAAqB9B,KAAKL,gBAC/B,MACF,IAAK,MACHK,KAAK8B,mBAAqB9B,KAAKJ,eAC/B,MACF,IAAK,QACHI,KAAK8B,mBAAqB9B,KAAKH,iBAC/B,MACF,IAAK,eACHG,KAAK8B,mBAAqB9B,KAAKN,uBAC/B,MACF,IAAK,QACHM,KAAK8B,mBAAqB9B,KAAKF,iBAC/B,MACF,QACEE,KAAK8B,mBAAqBN,UAG9B,GAAIxB,KAAK+B,oBAAqB,CAC5B,MAAMC,EAAQhC,KAAK+B,oBAAoBE,cACvCjC,KAAK+B,oBACH/B,KAAK8B,oBAAsB9B,KAAKM,oBAClCc,EAAApB,KAAKgB,kBAAc,MAAAI,SAAA,SAAAA,EAAEc,iBACrBlC,KAAK+B,oBAAoBI,YAAYH,E,EAIlC,yBAAAI,GACL,OAAOpC,KAAKM,mBAAmB+B,S,CAG1B,yBAAAC,GACL,OAAQtC,KAAK8B,oBAAsB9B,KAAKM,oBAAoB+B,S,CAGvD,yBAAAE,CAA0BV,GAC/B,OAAQA,GACN,IAAK,SACH7B,KAAKM,mBAAqBN,KAAKP,kBAC/BO,KAAKwC,6BAA+BxC,KAAKP,kBACzC,MACF,IAAK,eACHO,KAAKM,mBAAqBN,KAAKN,uBAC/BM,KAAKwC,6BAA+BxC,KAAKN,uBACzC,MACF,IAAK,OACHM,KAAKM,mBAAqBN,KAAKL,gBAC/B,MACF,IAAK,MACHK,KAAKM,mBAAqBN,KAAKJ,eAC/B,MACF,IAAK,QACHI,KAAKM,mBAAqBN,KAAKF,iBAC/B,MAEJE,KAAKI,6BAA6BqC,M,CAG7B,0BAAAC,CAA2BxC,GAChCF,KAAKE,iBAAmBA,C,CAGhB,eAAAK,CAAgBoC,GAExBA,EAAMC,iBAEN5C,KAAK6C,iBAAmBC,OAAOC,YAAW,KACxC/C,KAAKgD,aAAeC,EAAMC,OAAOP,EAAMQ,QAASR,EAAMS,SACtDpD,KAAKqD,mBAAqBrD,KAAKsD,kBAAkBX,GACjD3C,KAAK6C,iBAAmBrB,UAGxB,GAAIxB,KAAKuD,eAAiB,KAAM,CAC9BvD,KAAKU,iBAAiBV,KAAKuD,c,IAE5BvD,KAAKD,YAAYyD,aAAaC,kBAEjCX,OAAO7B,iBAAiBjB,KAAKR,UAAWQ,KAAKU,kBAC7CoC,OAAO7B,iBAAiBjB,KAAKT,QAASS,KAAKW,e,CAGnC,gBAAAD,CAAiBiC,GACzB,GAAI3C,KAAK6C,kBAAoB,KAAM,CACjC,GAAI7C,KAAKG,8BAA+B,CACtC,M,CAGF,MAAMuD,EAAWT,EAAMC,OAAOP,EAAMQ,QAASR,EAAMS,SACnD,MAAMO,EACJ3D,KAAKgB,gBAAkB,KACnBhB,KAAKgB,eAAe2C,eAAe3D,KAAK4D,QAAQjB,IAChD,EACN,GACE3C,KAAKgD,cAAgB,MACrBC,EAAMY,SAASH,EAAU1D,KAAKgD,eAAiBW,IAC9C3D,KAAKC,WACN,CACAD,KAAK8D,UAAUnB,GACf3C,KAAKC,WAAa,I,CAGpB,GAAID,KAAKC,WAAY,CACnBD,KAAK+D,KAAKpB,E,EAId3C,KAAKuD,cAAgBZ,C,CAGb,oBAAMhC,CAAegC,GAC7B,GAAI3C,KAAKC,WAAY,CACnBD,KAAKgE,QAAQrB,GACb3C,KAAKC,WAAa,K,CAGpB,GAAID,KAAK6C,kBAAoB,KAAM,CACjCC,OAAOmB,aAAajE,KAAK6C,kBACzB7C,KAAK6C,iBAAmBrB,S,CAG1BsB,OAAOzB,oBAAoBrB,KAAKR,UAAWQ,KAAKU,kBAChDoC,OAAOzB,oBAAoBrB,KAAKT,QAASS,KAAKW,gBAC9CX,KAAKuD,cAAgB/B,S,CAGb,uBAAMZ,CAAkB+B,GAEhC,GACEA,EAAMuB,SAAW,GACjBvB,EAAMwB,UAAY,GAClBnE,KAAKgB,gBAAkB,KACvB,OACMhB,KAAKgB,eAAeoD,S,EAIpB,SAAAN,CAAUnB,G,MAClB,GAAI3C,KAAKE,kBAAoByC,EAAM0B,SAAW1B,EAAM2B,SAAU,CAC5DtE,KAAK8B,mBAAqB9B,KAAKN,sB,MAC1B,GAAIM,KAAKE,kBAAoByC,EAAM2B,UAAY3B,EAAM4B,OAAQ,CAClEvE,KAAK8B,mBAAqB9B,KAAKH,gB,MAC1B,GAAIG,KAAKE,kBAAoByC,EAAM2B,SAAU,CAClDtE,KAAK8B,mBAAqB9B,KAAKL,e,MAC1B,GAAIK,KAAKE,mBAAqByC,EAAM0B,SAAW1B,EAAM6B,SAAU,CACpExE,KAAK8B,mBAAqB9B,KAAKJ,c,MAC1B,GAAII,KAAKE,kBAAoByC,EAAM4B,OAAQ,CAChDvE,KAAK8B,mBAAqB9B,KAAKP,iB,CAGjC,GAAIkD,EAAMwB,UAAY,EAAG,CACvBnE,KAAK+B,oBACH/B,KAAK8B,oBAAsB9B,KAAKM,kB,MAC7B,GAAIqC,EAAMwB,UAAY,EAAG,CAC9BnE,KAAK+B,oBAAsB/B,KAAKJ,c,MAC3B,GAAI+C,EAAMwB,UAAY,EAAG,CAC9BnE,KAAK+B,qBACHX,EAAApB,KAAKwC,gCAA4B,MAAApB,SAAA,EAAAA,EAAIpB,KAAKP,iB,CAG9C,GACEO,KAAK+B,qBAAuB,MAC5B/B,KAAKgB,gBAAkB,MACvBhB,KAAKc,SAAW,KAChB,CAGAd,KAAKL,gBAAgBqE,QAAQrB,EAAO3C,KAAKgB,gBAEzChB,KAAK+B,oBAAoB+B,UACvBnB,EACA3C,KAAKqD,oBAAsBJ,EAAMC,OAAOP,EAAM8B,QAAS9B,EAAM+B,SAC7D1E,KAAKgB,eACLhB,KAAKc,Q,EAKD,IAAAiD,CAAKpB,GACb,GAAI3C,KAAKE,kBAAoByC,EAAM4B,QAAU5B,EAAM2B,SAAU,CAC3DtE,KAAK8B,mBAAqB9B,KAAKH,gB,KAC1B,CACLG,KAAK8B,mBAAqBN,S,CAE5BxB,KAAK+B,oBACH/B,KAAK8B,oBACL9B,KAAK+B,qBACL/B,KAAKM,mBACP,GAAIN,KAAK+B,qBAAuB,MAAQ/B,KAAKgB,gBAAkB,KAAM,CACnEhB,KAAK+B,oBAAoBgC,KAAKpB,EAAO3C,KAAKgB,e,EAIpC,OAAAgD,CAAQrB,GAChB,GACE3C,KAAKE,kBACLF,KAAK8B,qBAAuB9B,KAAKH,iBACjC,CACAG,KAAK8B,mBAAqBN,S,CAG5B,GAAIxB,KAAK+B,qBAAuB,MAAQ/B,KAAKgB,gBAAkB,KAAM,CACnEhB,KAAK+B,oBAAoBiC,QAAQrB,EAAO3C,KAAKgB,gBAC7ChB,KAAK+B,oBAAsBP,S,EAIrB,gBAAAf,CAAiBkC,GACzBA,EAAMC,iBAEN,GACE5C,KAAKc,SAAW,MAChBd,KAAKgB,gBAAkB,MACvB2B,EAAMwB,UAAY,EAClB,CACA,MAAMQ,GACH3E,KAAK4E,mBAAmBjC,EAAMkC,OAAQlC,EAAMmC,WAAa,GAC5D,MAAMC,EAAO/E,KAAKc,QAAQkE,wBAC1B,MAAMhD,EAAQiD,EAAuBtC,EAAOoC,GAC5C,MAAMG,EAAaC,KAAKC,IAAIzC,EAAMkC,QAElC,GAAIK,EAAa,GAAI,MAEdlF,KAAKL,gBAAgB0F,YACxBrD,EACA2C,EACA3E,KAAKgB,e,KAEF,CACL,MAAMsE,EAAYH,KAAKI,IAAI,GAAIJ,KAAKK,KAAKN,EAAa,KACtD,MAAMO,EAAYd,EAAQW,EAG1B,IAAK,IAAII,EAAI,EAAGA,GAAKJ,EAAWI,IAAK,CACnC,MAAMC,EAAUD,EAAI,EACpB5C,OAAOC,YAAW,KAChB,GAAI/C,KAAKgB,gBAAkB,KAAM,CAC/BhB,KAAKL,gBAAgB0F,YACnBrD,EACAyD,EACAzF,KAAKgB,eACL2E,E,IAGHA,E,IAMD,kBAAAf,CAAmBC,EAAgBC,GAI3C,GAAI9E,KAAK4F,gBAAkB,KAAM,CAC/B,MAAMC,EAAY/C,OAAOgD,iBAAiBC,SAASC,MACnD,MAAMC,EACJC,OAAOC,WAAWN,EAAUO,iBAAiB,cAC7ClH,EACF,MAAMmH,EAAaH,OAAOC,WACxBN,EAAUO,iBAAiB,eAE7BpG,KAAK4F,eAAiB,CACpBU,iBAAkBJ,OAAOK,SAASF,GAC9BA,EACAJ,EAAW9G,EACfqH,OACEN,OAAOC,WAAWN,EAAUO,iBAAiB,YAC7CtD,OAAO2D,aAEX3D,OAAOC,YAAW,KAChB/C,KAAK4F,eAAiBpE,SAAS,GAC9B,K,CAGL,GAAIsD,IAAc,EAAG,CAEnB,OAAOD,EAAS7E,KAAK4F,eAAeU,gB,MAC/B,GAAIxB,IAAc,EAAG,CAE1B,OAAOD,EAAS7E,KAAK4F,eAAeY,M,CAGtC,OAAO3B,C,CAGC,iBAAAvB,CAAkBX,G,MAC1B,MAAM+D,GAAetF,EAAApB,KAAKc,WAAO,MAAAM,SAAA,SAAAA,EAAE4D,wBACnC,MAAM2B,EACJD,GAAgB,KACZzD,EAAMC,OAAOwD,EAAaE,KAAMF,EAAaG,KAC7CrF,UAEN,OAAOmF,GAAgB,KACnB1D,EAAM6D,SAAS7D,EAAMC,OAAOP,EAAM8B,QAAS9B,EAAM+B,SAAUiC,GAC3DnF,S,CAGI,OAAAoC,CAAQjB,GAChB,OAAOG,OAAOiE,cAAgB,MAAQpE,aAAiBoE,aACnDpE,EAAMqE,cAAgB,QACtB,K,ECtYF,MAAgBC,UAAuC7H,EAA7D,WAAAC,G,oBACYW,KAAAkH,2BAA4D,E,CAE/D,yBAAAC,CAA0BC,GAC/B,MAAMC,EAAKC,EAAKpE,SAChB,MAAMqE,EAAavH,KAAKwH,2BAA2BJ,GAEnDpH,KAAKkH,2BAA2BG,GAAME,EACtC,OAAOA,C,CAGF,+BAAAE,CAAgCJ,GACrC,MAAMK,EAAkB1H,KAAKkH,2BAA2BG,GAExDK,EAAgBvG,UAEhBnB,KAAKkH,2BAA6BS,OAAOC,YACvCD,OAAOE,QAAQ7H,KAAKkH,4BAA4BY,QAC9C,EAAEC,KAASA,IAAQV,I,CAKf,sBAAAW,GACRL,OAAOM,KAAKjI,KAAKkH,4BAA4BgB,SAASb,GACpDrH,KAAKyH,gCAAgCJ,I","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t as e,p as i,H as t,d as r,h as o,e as n}from"./p-Bb32XUUS.js";import{g as s}from"./p-CZZALKHT.js";import{g as h,a}from"./p-BqeEZXPn.js";import{w as l}from"./p-Cd7kap5W.js";import{g as c}from"./p-Bg-uS9BH.js";import{M as d,t as u,l as p,d as v,m as g,n as w,S as b}from"./p-taOlygmc.js";import{B as m}from"./p-Due5EmBt.js";class f extends d{constructor(e,i,t,r){super(r);this.markupEl=e;this.interactionBegin=i;this.interactionEnd=t;this.anchor="bottom-right"}editAnchor(e,i){if(this.markupEl.mode==="edit"){this.anchor=e;this.resizeBounds=this.markupEl.bounds;this.startInteraction(i)}}startInteraction(e){this.handleInteractionAttempt(e)}computeBoundingRect(){return c(this.markupEl)}handleInteractionAttempt(e){var i;if(this.markupEl.mode!==""&&this.pointerId==null&&this.elementBounds!=null){const t=u(h(e,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.pointerId=e.pointerId;this.startPosition=t;this.markupEl.bounds=(i=this.markupEl.bounds)!==null&&i!==void 0?i:s.create(t.x,t.y,0,0);this.resizeBounds=this.markupEl.bounds;this.interactionBegin.emit();this.acceptInteraction()}}handleInteractionMove(e){var i;if(this.markupEl.bounds!=null&&this.startPosition!=null&&this.elementBounds!=null&&this.pointerId===e.pointerId){const t=u(h(e,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.markupEl.bounds=p((i=this.resizeBounds)!==null&&i!==void 0?i:this.markupEl.bounds,this.startPosition,t,this.anchor,e.shiftKey)}}handleInteractionEnd(e){var i,t;if(this.pointerId===e.pointerId){if(this.markupEl.mode!==""&&this.markupEl.bounds!=null&&((i=this.markupEl.bounds)===null||i===void 0?void 0:i.width)>0&&((t=this.markupEl.bounds)===null||t===void 0?void 0:t.height)>0){this.anchor="bottom-right";const e=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:e})}else{this.markupEl.bounds=undefined}this.pointerId=undefined}}}const k=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-circle-ellipse-stroke-color:var(--red-700);--viewer-markup-circle-ellipse-stroke-width:4px;--viewer-markup-circle-ellipse-fill-color:none;--viewer-markup-circle-ellipse-fill-opacity:0;--viewer-markup-circle-bounds-outline-border-color:var(--blue-400);--viewer-markup-circle-bounds-outline-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-circle-bounds-edge-anchor-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-background-color:white;--viewer-markup-circle-bounds-center-anchor-border-color:white;--viewer-markup-circle-bounds-center-anchor-border-width:1px;--viewer-markup-circle-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-circle-bounds-anchor-width:9px;--viewer-markup-circle-bounds-anchor-height:9px;--viewer-markup-circle-scale:1}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.ellipse{pointer-events:auto;stroke:var(--viewer-markup-circle-ellipse-stroke-color);stroke-width:calc( var(--viewer-markup-circle-ellipse-stroke-width) * var(--viewer-markup-circle-scale) );fill:var(--viewer-markup-circle-ellipse-fill-color);fill-opacity:var(--viewer-markup-circle-ellipse-fill-opacity);cursor:default}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-circle-bounds-outline-border-width);border-color:var(--viewer-markup-circle-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-circle-bounds-anchor-width);height:var(--viewer-markup-circle-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-circle-bounds-center-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-center-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-circle-bounds-center-anchor-background-color )}.bounds-edge-anchor{border-width:var(--viewer-markup-circle-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-edge-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-circle-bounds-edge-anchor-background-color )}`;const C=i(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.interactionBegin=r(this,"interactionBegin");this.interactionEnd=r(this,"interactionEnd");this.mode="";this.centeringBehavior="none";this.scale=1;this.interactionHandler=new f(this.hostEl,this.interactionBegin,this.interactionEnd,{scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior});this.handleWindowPointerDown=e=>{if(v(e)){this.interactionHandler.startInteraction(e)}};this.handleTouchStart=e=>{e.preventDefault()}}componentWillLoad(){this.updateViewport();this.handleViewerChanged(this.viewer);this.handleScaleChange();this.handleScalingConfigurationChange();this.updateBoundsFromProps()}componentDidLoad(){this.updateBoundsFromProps();const e=new ResizeObserver((()=>this.updateViewport()));e.observe(this.hostEl);if(this.mode==="create"){window.addEventListener("pointerdown",this.handleWindowPointerDown)}}disconnectedCallback(){this.dispose()}async dispose(){var e;(e=this.registeredHandler)===null||e===void 0?void 0:e.dispose();this.registeredHandler=undefined;window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async handleViewerChanged(e){var i;(i=this.registeredHandler)===null||i===void 0?void 0:i.dispose();this.registeredHandler=undefined;if(e!=null){this.registeredHandler=await e.registerBasicInteractionHandler(this.interactionHandler)}}handleBoundsJsonChange(){this.updateBoundsFromProps()}handleModeChange(){if(this.mode!=="create"){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}}handleScalingConfigurationChange(){this.interactionHandler.updateScalingOptions({scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior})}handleScaleChange(){l((()=>{this.hostEl.style.setProperty("--viewer-markup-circle-scale",this.scale.toString())}))}updateViewport(){const e=c(this.hostEl);this.elementBounds=e}updateBoundsFromProps(){var e;this.bounds=(e=this.bounds)!==null&&e!==void 0?e:g(this.boundsJson)}render(){var e,i,t,r;if(this.bounds!=null&&this.elementBounds!=null&&this.elementBounds.width>0&&this.elementBounds.height>0){const h=w(this.bounds,this.elementBounds,this.originatingViewport,this.centeringBehavior,this.scale);const l=s.center(h);const c=((i=(e=this.offset)===null||e===void 0?void 0:e.x)!==null&&i!==void 0?i:0)/a();const d=((r=(t=this.offset)===null||t===void 0?void 0:t.y)!==null&&r!==void 0?r:0)/a();return o(n,null,o("svg",{class:"svg",onTouchStart:this.handleTouchStart},o("defs",null,o(b,{id:"circle-shadow",scale:this.scale})),o("g",{transform:`translate(${c} ${d})`,filter:"url(#circle-shadow)"},o("ellipse",{class:"ellipse",cx:l.x,cy:l.y,rx:h.width/2,ry:h.height/2,stroke:"#000ff0","stroke-width":4,fill:"none"}))),this.mode==="edit"&&o(m,{bounds:h,offset:{x:c,y:d},onTopLeftAnchorPointerDown:e=>this.interactionHandler.editAnchor("top-left",e),onTopRightAnchorPointerDown:e=>this.interactionHandler.editAnchor("top-right",e),onTopAnchorPointerDown:e=>this.interactionHandler.editAnchor("top",e),onBottomLeftAnchorPointerDown:e=>this.interactionHandler.editAnchor("bottom-left",e),onBottomRightAnchorPointerDown:e=>this.interactionHandler.editAnchor("bottom-right",e),onBottomAnchorPointerDown:e=>this.interactionHandler.editAnchor("bottom",e),onLeftAnchorPointerDown:e=>this.interactionHandler.editAnchor("left",e),onRightAnchorPointerDown:e=>this.interactionHandler.editAnchor("right",e),onCenterAnchorPointerDown:e=>this.interactionHandler.editAnchor("center",e)}),this.mode==="create"&&o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}else{return o(n,null,o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],bounds:[{handleBoundsJsonChange:0}],mode:[{handleModeChange:0}],offset:[{handleScalingConfigurationChange:0}],originatingViewport:[{handleScalingConfigurationChange:0}],centeringBehavior:[{handleScalingConfigurationChange:0}],scale:[{handleScalingConfigurationChange:0},{handleScaleChange:0}]}}static get style(){return k()}},[1,"vertex-viewer-markup-circle",{bounds:[1040],boundsJson:[1,"bounds"],mode:[513],viewer:[16],originatingViewport:[16],centeringBehavior:[1,"centering-behavior"],offset:[16],scale:[2],elementBounds:[32],dispose:[64]},undefined,{viewer:[{handleViewerChanged:0}],bounds:[{handleBoundsJsonChange:0}],mode:[{handleModeChange:0}],offset:[{handleScalingConfigurationChange:0}],originatingViewport:[{handleScalingConfigurationChange:0}],centeringBehavior:[{handleScalingConfigurationChange:0}],scale:[{handleScalingConfigurationChange:0},{handleScaleChange:0}]}]);function x(){if(typeof customElements==="undefined"){return}const i=["vertex-viewer-markup-circle"];i.forEach((i=>{switch(i){case"vertex-viewer-markup-circle":if(!customElements.get(e(i))){customElements.define(e(i),C)}break}}))}x();export{C as V,x as d};
5
- //# sourceMappingURL=p-BC777sCK.js.map
4
+ import{t as e,p as i,H as t,d as r,h as o,e as n}from"./p-Bb32XUUS.js";import{g as s}from"./p-2UsvOTHJ.js";import{g as h,a}from"./p-CPROw2BU.js";import{w as l}from"./p-Cd7kap5W.js";import{g as c}from"./p-Bg-uS9BH.js";import{M as d,t as u,l as p,d as v,m as g,n as w,S as b}from"./p-Cs2aiMUK.js";import{B as f}from"./p-Clyxptbp.js";class m extends d{constructor(e,i,t,r){super(r);this.markupEl=e;this.interactionBegin=i;this.interactionEnd=t;this.anchor="bottom-right"}editAnchor(e,i){if(this.markupEl.mode==="edit"){this.anchor=e;this.resizeBounds=this.markupEl.bounds;this.startInteraction(i)}}startInteraction(e){this.handleInteractionAttempt(e)}computeBoundingRect(){return c(this.markupEl)}handleInteractionAttempt(e){var i;if(this.markupEl.mode!==""&&this.pointerId==null&&this.elementBounds!=null){const t=u(h(e,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.pointerId=e.pointerId;this.startPosition=t;this.markupEl.bounds=(i=this.markupEl.bounds)!==null&&i!==void 0?i:s.create(t.x,t.y,0,0);this.resizeBounds=this.markupEl.bounds;this.interactionBegin.emit();this.acceptInteraction()}}handleInteractionMove(e){var i;if(this.markupEl.bounds!=null&&this.startPosition!=null&&this.elementBounds!=null&&this.pointerId===e.pointerId){const t=u(h(e,this.elementBounds),this.elementBounds,this.scalingOptions.originatingViewport,this.scalingOptions.centeringBehavior,this.scalingOptions.scale,this.scalingOptions.offset);this.markupEl.bounds=p((i=this.resizeBounds)!==null&&i!==void 0?i:this.markupEl.bounds,this.startPosition,t,this.anchor,e.shiftKey)}}handleInteractionEnd(e){var i,t;if(this.pointerId===e.pointerId){if(this.markupEl.mode!==""&&this.markupEl.bounds!=null&&((i=this.markupEl.bounds)===null||i===void 0?void 0:i.width)>0&&((t=this.markupEl.bounds)===null||t===void 0?void 0:t.height)>0){this.anchor="bottom-right";const e=this.markupEl.mode!=="edit";this.interactionEnd.emit({markup:this.markupEl,newlyCreatedMarkup:e})}else{this.markupEl.bounds=undefined}this.pointerId=undefined}}}const k=()=>`:host{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;--viewer-markup-circle-ellipse-stroke-color:var(--red-700);--viewer-markup-circle-ellipse-stroke-width:4px;--viewer-markup-circle-ellipse-fill-color:none;--viewer-markup-circle-ellipse-fill-opacity:0;--viewer-markup-circle-bounds-outline-border-color:var(--blue-400);--viewer-markup-circle-bounds-outline-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-border-color:var(--blue-400);--viewer-markup-circle-bounds-edge-anchor-border-width:1px;--viewer-markup-circle-bounds-edge-anchor-background-color:white;--viewer-markup-circle-bounds-center-anchor-border-color:white;--viewer-markup-circle-bounds-center-anchor-border-width:1px;--viewer-markup-circle-bounds-center-anchor-background-color:var(--blue-400);--viewer-markup-circle-bounds-anchor-width:9px;--viewer-markup-circle-bounds-anchor-height:9px;--viewer-markup-circle-scale:1}.svg{pointer-events:none;width:100%;height:100%}.create-overlay{pointer-events:auto;position:absolute;left:0;top:0;width:100%;height:100%;cursor:crosshair}.ellipse{pointer-events:auto;stroke:var(--viewer-markup-circle-ellipse-stroke-color);stroke-width:calc( var(--viewer-markup-circle-ellipse-stroke-width) * var(--viewer-markup-circle-scale) );fill:var(--viewer-markup-circle-ellipse-fill-color);fill-opacity:var(--viewer-markup-circle-ellipse-fill-opacity);cursor:default}.bounds-container{pointer-events:none;position:absolute;width:100%;height:100%;top:0;left:0;overflow:hidden}.bounds-outline{position:absolute;border-width:var(--viewer-markup-circle-bounds-outline-border-width);border-color:var(--viewer-markup-circle-bounds-outline-border-color);border-style:solid;box-shadow:0 0 3px rgba(0, 0, 0, 0.3)}.bounds-anchor-position{position:absolute;transform:translate(-50%, -50%)}.bounds-anchor{pointer-events:auto;cursor:default;user-select:none}.bounds-default-anchor{width:var(--viewer-markup-circle-bounds-anchor-width);height:var(--viewer-markup-circle-bounds-anchor-height);box-sizing:border-box;box-shadow:0 0 2px rgba(0, 0, 0, 0.3)}.bounds-center-anchor{border-radius:100%;border-width:var(--viewer-markup-circle-bounds-center-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-center-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-circle-bounds-center-anchor-background-color )}.bounds-edge-anchor{border-width:var(--viewer-markup-circle-bounds-edge-anchor-border-width);border-color:var(--viewer-markup-circle-bounds-edge-anchor-border-color);border-style:solid;background-color:var( --viewer-markup-circle-bounds-edge-anchor-background-color )}`;const C=i(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.interactionBegin=r(this,"interactionBegin");this.interactionEnd=r(this,"interactionEnd");this.mode="";this.centeringBehavior="none";this.scale=1;this.interactionHandler=new m(this.hostEl,this.interactionBegin,this.interactionEnd,{scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior});this.handleWindowPointerDown=e=>{if(v(e)){this.interactionHandler.startInteraction(e)}};this.handleTouchStart=e=>{e.preventDefault()}}componentWillLoad(){this.updateViewport();this.handleViewerChanged(this.viewer);this.handleScaleChange();this.handleScalingConfigurationChange();this.updateBoundsFromProps()}componentDidLoad(){this.updateBoundsFromProps();const e=new ResizeObserver((()=>this.updateViewport()));e.observe(this.hostEl);if(this.mode==="create"){window.addEventListener("pointerdown",this.handleWindowPointerDown)}}disconnectedCallback(){this.dispose()}async dispose(){var e;(e=this.registeredHandler)===null||e===void 0?void 0:e.dispose();this.registeredHandler=undefined;window.removeEventListener("pointerdown",this.handleWindowPointerDown)}async handleViewerChanged(e){var i;(i=this.registeredHandler)===null||i===void 0?void 0:i.dispose();this.registeredHandler=undefined;if(e!=null){this.registeredHandler=await e.registerBasicInteractionHandler(this.interactionHandler)}}handleBoundsJsonChange(){this.updateBoundsFromProps()}handleModeChange(){if(this.mode!=="create"){window.removeEventListener("pointerdown",this.handleWindowPointerDown)}}handleScalingConfigurationChange(){this.interactionHandler.updateScalingOptions({scale:this.scale,offset:this.offset,originatingViewport:this.originatingViewport,centeringBehavior:this.centeringBehavior})}handleScaleChange(){l((()=>{this.hostEl.style.setProperty("--viewer-markup-circle-scale",this.scale.toString())}))}updateViewport(){const e=c(this.hostEl);this.elementBounds=e}updateBoundsFromProps(){var e;this.bounds=(e=this.bounds)!==null&&e!==void 0?e:g(this.boundsJson)}render(){var e,i,t,r;if(this.bounds!=null&&this.elementBounds!=null&&this.elementBounds.width>0&&this.elementBounds.height>0){const h=w(this.bounds,this.elementBounds,this.originatingViewport,this.centeringBehavior,this.scale);const l=s.center(h);const c=((i=(e=this.offset)===null||e===void 0?void 0:e.x)!==null&&i!==void 0?i:0)/a();const d=((r=(t=this.offset)===null||t===void 0?void 0:t.y)!==null&&r!==void 0?r:0)/a();return o(n,null,o("svg",{class:"svg",onTouchStart:this.handleTouchStart},o("defs",null,o(b,{id:"circle-shadow",scale:this.scale})),o("g",{transform:`translate(${c} ${d})`,filter:"url(#circle-shadow)"},o("ellipse",{class:"ellipse",cx:l.x,cy:l.y,rx:h.width/2,ry:h.height/2,stroke:"#000ff0","stroke-width":4,fill:"none"}))),this.mode==="edit"&&o(f,{bounds:h,offset:{x:c,y:d},onTopLeftAnchorPointerDown:e=>this.interactionHandler.editAnchor("top-left",e),onTopRightAnchorPointerDown:e=>this.interactionHandler.editAnchor("top-right",e),onTopAnchorPointerDown:e=>this.interactionHandler.editAnchor("top",e),onBottomLeftAnchorPointerDown:e=>this.interactionHandler.editAnchor("bottom-left",e),onBottomRightAnchorPointerDown:e=>this.interactionHandler.editAnchor("bottom-right",e),onBottomAnchorPointerDown:e=>this.interactionHandler.editAnchor("bottom",e),onLeftAnchorPointerDown:e=>this.interactionHandler.editAnchor("left",e),onRightAnchorPointerDown:e=>this.interactionHandler.editAnchor("right",e),onCenterAnchorPointerDown:e=>this.interactionHandler.editAnchor("center",e)}),this.mode==="create"&&o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}else{return o(n,null,o("div",{class:"create-overlay",onTouchStart:this.handleTouchStart}))}}get hostEl(){return this}static get watchers(){return{viewer:[{handleViewerChanged:0}],bounds:[{handleBoundsJsonChange:0}],mode:[{handleModeChange:0}],offset:[{handleScalingConfigurationChange:0}],originatingViewport:[{handleScalingConfigurationChange:0}],centeringBehavior:[{handleScalingConfigurationChange:0}],scale:[{handleScalingConfigurationChange:0},{handleScaleChange:0}]}}static get style(){return k()}},[1,"vertex-viewer-markup-circle",{bounds:[1040],boundsJson:[1,"bounds"],mode:[513],viewer:[16],originatingViewport:[16],centeringBehavior:[1,"centering-behavior"],offset:[16],scale:[2],elementBounds:[32],dispose:[64]},undefined,{viewer:[{handleViewerChanged:0}],bounds:[{handleBoundsJsonChange:0}],mode:[{handleModeChange:0}],offset:[{handleScalingConfigurationChange:0}],originatingViewport:[{handleScalingConfigurationChange:0}],centeringBehavior:[{handleScalingConfigurationChange:0}],scale:[{handleScalingConfigurationChange:0},{handleScaleChange:0}]}]);function x(){if(typeof customElements==="undefined"){return}const i=["vertex-viewer-markup-circle"];i.forEach((i=>{switch(i){case"vertex-viewer-markup-circle":if(!customElements.get(e(i))){customElements.define(e(i),C)}break}}))}x();export{C as V,x as d};
5
+ //# sourceMappingURL=p-UJR-ixsy.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t,p as i,H as e,d as s,h as n,e as o}from"./p-Bb32XUUS.js";import{p as h,v as a,c as l,b as r,r as d}from"./p-CZZALKHT.js";import{g as u}from"./p-BqeEZXPn.js";import{E as c}from"./p-CFus3r7d.js";import{E as v}from"./p-CDM7zNn0.js";class g{constructor(t,i){this.model=t;this.animationConfiguration=i;this.rectObserver=new c;this.handlePointerDown=this.handlePointerDown.bind(this);this.handlePointerUp=this.handlePointerUp.bind(this);this.handleEnabledChange=this.handleEnabledChange.bind(this);this.handleTeleportModeChange=this.handleTeleportModeChange.bind(this);this.enabledChangeDisposable=this.model.onEnabledChange(this.handleEnabledChange)}dispose(){var t;this.disable();(t=this.enabledChangeDisposable)===null||t===void 0?void 0:t.dispose();this.element=undefined;this.api=undefined;this.rectObserver.disconnect()}initialize(t,i){this.element=t;this.api=i;this.rectObserver.observe(t);this.handleEnabledChange(this.model.getEnabled())}setAnimations(t){this.animationConfiguration=t}enable(){var t;this.disable();this.teleportModeChangeDisposable=this.model.onTeleportModeChange(this.handleTeleportModeChange);(t=this.element)===null||t===void 0?void 0:t.addEventListener("pointerdown",this.handlePointerDown);this.handleTeleportModeChange(this.model.getTeleportMode())}disable(){var t,i,e;(t=this.teleportModeChangeDisposable)===null||t===void 0?void 0:t.dispose();(i=this.cursorDisposable)===null||i===void 0?void 0:i.dispose();(e=this.element)===null||e===void 0?void 0:e.removeEventListener("pointerdown",this.handlePointerDown)}async handlePointerDown(t){this.downPosition=u(t,this.rectObserver.rect);this.downButtons=t.buttons;window.addEventListener("pointerup",this.handlePointerUp)}async handlePointerUp(t){var i,e;const s=this.model.getTeleportMode();const n=(e=(i=this.api)===null||i===void 0?void 0:i.pixelThreshold())!==null&&e!==void 0?e:2;const o=u(t,this.rectObserver.rect);const a=this.downButtons===2;const l=t.shiftKey||t.altKey||t.metaKey||t.ctrlKey;if(s!=null&&this.downPosition!=null&&h.distance(this.downPosition,o)<=n&&!a&&!l){switch(s){case"teleport":return this.teleportToHit(o);case"teleport-toward":return this.teleportTowardHit(o);case"teleport-and-align":return this.teleportAndAlign(o)}}this.downPosition=undefined;window.removeEventListener("pointerup",this.handlePointerUp)}async beginInteraction(){var t,i;if(!((t=this.api)===null||t===void 0?void 0:t.isInteracting())){await((i=this.api)===null||i===void 0?void 0:i.beginInteraction())}}async endInteraction(){var t;await((t=this.api)===null||t===void 0?void 0:t.endInteraction())}async teleportTowardHit(t){var i,e;const s=await((i=this.api)===null||i===void 0?void 0:i.getWorldPointFromViewport(t));const n=(e=this.api)===null||e===void 0?void 0:e.getRayFromPoint(t);if(n!=null){const{teleportDistancePercentage:t,teleportCollisionDistance:i}=this.model.getConfiguration();const e=t/100;return this.performInteraction((({camera:t,boundingBox:o})=>{const h=Math.max(...a.toArray(l.lengths(o)))*e;const u=r.fromNormalAndCoplanarPoint(t.up,t.position);const c=r.projectPoint(u,s!==null&&s!==void 0?s:t.position);const v=a.distance(t.position,c);if(v<h&&v>i*1.1){const e=d.create({...n,origin:c});const s=r.projectPoint(u,d.at(e,-i));return t.update({position:s,lookAt:a.add(t.lookAt,a.subtract(s,t.position))})}else{const i=r.projectPoint(u,d.at(n,h));return t.update({position:i,lookAt:a.add(t.lookAt,a.subtract(i,t.position))})}}))}}async teleportToHit(t){const i=await this.getWorldPointWithFallback(t);if(i!=null){return this.performInteraction((({camera:t,boundingBox:e})=>{const s=this.shortestLength(e);const n=this.model.getTeleportHeightPercentage()/100;const o=r.fromNormalAndCoplanarPoint(t.up,t.position);const h=r.projectPoint(o,i);const l=d.create({origin:t.position,direction:a.normalize(a.subtract(h,t.position))});const u=a.distance(t.position,h);const c=a.distance(t.position,t.lookAt);const v=d.at(l,u-s*n);const g=d.create({origin:v,direction:a.normalize(t.viewVector)});return t.update({position:v,lookAt:d.at(g,c)})}))}}async teleportAndAlign(t){var i;const e=await((i=this.api)===null||i===void 0?void 0:i.hitItems(t));const s=e!=null?e[0]:undefined;if((s===null||s===void 0?void 0:s.hitNormal)!=null&&(s===null||s===void 0?void 0:s.hitPoint)){await this.performInteraction((({camera:t,boundingBox:i})=>{const e=this.shortestLength(i);const n=this.model.getTeleportHeightPercentage()/100;const o=d.create({origin:s.hitPoint,direction:s.hitNormal});return t.alignTo(d.at(o,e*n),s.hitNormal)}))}}async performInteraction(t){var i;await this.beginInteraction();await((i=this.api)===null||i===void 0?void 0:i.transformCamera(t,this.renderConfiguration()));await this.endInteraction()}async getWorldPointWithFallback(t){var i,e;const s=await((i=this.api)===null||i===void 0?void 0:i.getWorldPointFromViewport(t));if(s==null){const i=await((e=this.api)===null||e===void 0?void 0:e.hitItems(t));const n=i!=null?i[0]:undefined;return(n===null||n===void 0?void 0:n.hitPoint)!=null?n.hitPoint:s}return s}handleEnabledChange(t){if(t){this.enable()}else{this.disable()}}handleTeleportModeChange(t){var i,e;(i=this.cursorDisposable)===null||i===void 0?void 0:i.dispose();if(t!=null){this.cursorDisposable=(e=this.api)===null||e===void 0?void 0:e.addCursor("crosshair")}}shortestLength(t){return Math.min(...a.toArray(l.lengths(t)))}renderConfiguration(){return this.animationConfiguration!=null?{animation:{milliseconds:this.animationConfiguration.durationMs}}:{}}}class p{constructor(...t){this.bindings=t.map((t=>t.toLowerCase()))}matches(t){return this.bindings.length>0&&this.bindings.every((i=>this.bindingMatches(t,i)))}bindingMatches(t,i){const e=i.includes("!");const s=i.replace("!","");return e?!t[s]:t[s]}}class f{constructor(t){this.model=t;this.excludeTagNames=["VERTEX-SCENE-TREE","VERTEX-SCENE-TREE-SEARCH","VERTEX-VIEWER-PIN-TOOL","INPUT","TEXTAREA"];this.excludePredicates=[];this.updateModelExclusions()}updateModel(t){this.model=t}setEnabled(t){this.model.setEnabled(t)}setTeleportMode(t){this.model.setTeleportMode(t)}updateConfiguration(t){const i=this.model.getConfiguration();this.model.setConfiguration({...i,...t})}addKeyBinding(t,...i){this.model.addKeyBinding(t,new p(...i))}replaceKeyBinding(t,...i){this.model.replaceKeyBinding(t,new p(...i))}excludeElement(...t){if(typeof t[0]==="string"){this.excludeTagNames=[...this.excludeTagNames,t[0]];this.updateModelExclusions();return{dispose:()=>{this.excludeTagNames=this.excludeTagNames.filter((i=>i!==t[0]))}}}else{this.excludePredicates=[...this.excludePredicates,t[0]];this.updateModelExclusions();return{dispose:()=>{this.excludePredicates=this.excludePredicates.filter((i=>i!==t[0]))}}}}updateModelExclusions(){this.model.setExcludedPredicate((t=>this.excludeTagNames.some((i=>i===t.tagName))||this.excludePredicates.some((i=>i(t)))))}}var w;(function(t){t["MOVE_DOWN"]="MOVE_DOWN";t["MOVE_UP"]="MOVE_UP";t["PIVOT_DOWN"]="PIVOT_DOWN";t["PIVOT_LEFT"]="PIVOT_LEFT";t["PIVOT_RIGHT"]="PIVOT_RIGHT";t["PIVOT_UP"]="PIVOT_UP";t["WALK_BACKWARD"]="WALK_BACKWARD";t["WALK_FORWARD"]="WALK_FORWARD";t["WALK_LEFT"]="WALK_LEFT";t["WALK_RIGHT"]="WALK_RIGHT"})(w||(w={}));class m{constructor(){this.keyBindings={[w.MOVE_DOWN]:[new p("PageDown","!Shift","!Alt")],[w.MOVE_UP]:[new p("PageUp","!Shift","!Alt")],[w.PIVOT_DOWN]:[new p("ArrowDown","!Shift","!Alt")],[w.PIVOT_LEFT]:[new p("ArrowLeft","!Shift","!Alt")],[w.PIVOT_RIGHT]:[new p("ArrowRight","!Shift","!Alt")],[w.PIVOT_UP]:[new p("ArrowUp","!Shift","!Alt")],[w.WALK_BACKWARD]:[new p("s")],[w.WALK_FORWARD]:[new p("w")],[w.WALK_LEFT]:[new p("a")],[w.WALK_RIGHT]:[new p("d")]};this.configuration={teleportHeightPercentage:11.75,teleportDistancePercentage:2,teleportCollisionDistance:1e3,keyboardWalkSpeed:5,keyboardPivotDegrees:1,keyboardRepeatIntervalMs:25};this.enabled=true;this.enabledChanged=new v;this.teleportModeChanged=new v;this.configurationChanged=new v;this.keyBindingsChanged=new v}setEnabled(t){this.enabled=t;this.enabledChanged.emit(t)}setTeleportMode(t){this.teleportMode=t;this.teleportModeChanged.emit(t)}setConfiguration(t){this.configuration=t;this.configurationChanged.emit(t)}addKeyBinding(t,i){this.keyBindings[t]=[...this.keyBindings[t],i];this.keyBindingsChanged.emit(this.keyBindings)}replaceKeyBinding(t,i){this.keyBindings[t]=[i];this.keyBindingsChanged.emit(this.keyBindings)}setExcludedPredicate(t){this.excludedPredicate=t}getEnabled(){return this.enabled}getTeleportMode(){return this.teleportMode}getTeleportHeightPercentage(){return this.configuration.teleportHeightPercentage}getKeyboardWalkSpeed(){return this.configuration.keyboardWalkSpeed}getKeyboardPivotDegrees(){return this.configuration.keyboardPivotDegrees}getKeyboardRepeatInterval(){return this.configuration.keyboardRepeatIntervalMs}getConfiguration(){return this.configuration}getKeyBindings(){return this.keyBindings}operationMatches(t,i){return this.keyBindings[t].some((t=>t.matches(i)))}isElementExcluded(t){var i;return!!((i=this.excludedPredicate)===null||i===void 0?void 0:i.call(this,t))}onEnabledChange(t){return this.enabledChanged.on(t)}onTeleportModeChange(t){return this.teleportModeChanged.on(t)}onConfigurationChange(t){return this.configurationChanged.on(t)}onKeyBindingsChange(t){return this.keyBindingsChanged.on(t)}}const C=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}`;const E=i(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.controllerChanged=s(this,"controllerChanged");this.animationsDisabled=false;this.animationMs=500;this.model=new m;this.stateMap={}}componentWillLoad(){this.setupController();this.setupInteractionHandler();this.setDepthBuffers()}connectedCallback(){this.setupInteractionHandler();this.setDepthBuffers()}disconnectedCallback(){this.clearInteractionHandler();this.resetDepthBuffers()}handleModeChange(){var t;(t=this.controller)===null||t===void 0?void 0:t.setTeleportMode(this.mode);if(this.mode!=null){this.setDepthBuffers()}else{this.resetDepthBuffers()}}handleViewerChanged(){this.clearInteractionHandler();this.setupInteractionHandler();this.setDepthBuffers()}handleAnimationMsChanged(){var t;if(this.animationMs!=null){(t=this.interactionHandler)===null||t===void 0?void 0:t.setAnimations({durationMs:this.animationMs})}}handleAnimationsDisabledChanged(){var t,i;if(this.animationsDisabled){(t=this.interactionHandler)===null||t===void 0?void 0:t.setAnimations(undefined)}else if(this.animationMs!=null){(i=this.interactionHandler)===null||i===void 0?void 0:i.setAnimations({durationMs:this.animationMs})}}handleControllerChanged(){this.setupInteractionHandler();this.setupController();this.controllerChanged.emit(this.controller)}handleModelChanged(){this.setupController();this.clearInteractionHandler();this.setupInteractionHandler()}render(){return n(o,{key:"c8a6512176d203d38ae647ccddcfa8adf307f977"})}setupController(){if(this.controller==null){this.controller=new f(this.model);this.controller.setTeleportMode(this.mode);this.controllerChanged.emit(this.controller)}else{this.controller.setTeleportMode(this.mode);this.controller.updateModel(this.model)}}setDepthBuffers(){if(this.mode!=null&&this.viewer!=null&&this.viewer.depthBuffers==null){this.stateMap.shouldClearDepthBuffers=true;this.viewer.depthBuffers="final"}}resetDepthBuffers(){if(this.stateMap.shouldClearDepthBuffers&&this.viewer!=null){this.viewer.depthBuffers=undefined;this.stateMap.shouldClearDepthBuffers=undefined}}clearInteractionHandler(){var t,i;(t=this.interactionHandlerDisposable)===null||t===void 0?void 0:t.dispose();this.interactionHandlerDisposable=undefined;(i=this.interactionHandler)===null||i===void 0?void 0:i.dispose();this.interactionHandler=undefined}async setupInteractionHandler(){var t;if(this.interactionHandler==null){this.interactionHandler=new g(this.model,!this.animationsDisabled&&this.animationMs!=null?{durationMs:this.animationMs}:undefined);this.interactionHandlerDisposable=await((t=this.viewer)===null||t===void 0?void 0:t.registerInteractionHandler(this.interactionHandler))}}static get watchers(){return{mode:[{handleModeChange:0}],viewer:[{handleViewerChanged:0}],animationMs:[{handleAnimationMsChanged:0}],animationsDisabled:[{handleAnimationsDisabledChanged:0}],controller:[{handleControllerChanged:0}],model:[{handleModelChanged:0}]}}static get style(){return C()}},[1,"vertex-viewer-teleport-tool",{viewer:[16],mode:[1025],animationsDisabled:[4,"animations-disabled"],animationMs:[2,"animation-ms"],controller:[1040],model:[1040]},undefined,{mode:[{handleModeChange:0}],viewer:[{handleViewerChanged:0}],animationMs:[{handleAnimationMsChanged:0}],animationsDisabled:[{handleAnimationsDisabledChanged:0}],controller:[{handleControllerChanged:0}],model:[{handleModelChanged:0}]}]);function b(){if(typeof customElements==="undefined"){return}const i=["vertex-viewer-teleport-tool"];i.forEach((i=>{switch(i){case"vertex-viewer-teleport-tool":if(!customElements.get(t(i))){customElements.define(t(i),E)}break}}))}b();export{E as V,m as W,w as a,f as b,b as d};
5
- //# sourceMappingURL=p-Ib4vgh2t.js.map
4
+ import{t,p as i,H as e,d as s,h as n,e as o}from"./p-Bb32XUUS.js";import{p as h,v as a,c as l,b as r,r as d}from"./p-2UsvOTHJ.js";import{g as u}from"./p-CPROw2BU.js";import{E as c}from"./p-CFus3r7d.js";import{E as v}from"./p-CDM7zNn0.js";class g{constructor(t,i){this.model=t;this.animationConfiguration=i;this.rectObserver=new c;this.handlePointerDown=this.handlePointerDown.bind(this);this.handlePointerUp=this.handlePointerUp.bind(this);this.handleEnabledChange=this.handleEnabledChange.bind(this);this.handleTeleportModeChange=this.handleTeleportModeChange.bind(this);this.enabledChangeDisposable=this.model.onEnabledChange(this.handleEnabledChange)}dispose(){var t;this.disable();(t=this.enabledChangeDisposable)===null||t===void 0?void 0:t.dispose();this.element=undefined;this.api=undefined;this.rectObserver.disconnect()}initialize(t,i){this.element=t;this.api=i;this.rectObserver.observe(t);this.handleEnabledChange(this.model.getEnabled())}setAnimations(t){this.animationConfiguration=t}enable(){var t;this.disable();this.teleportModeChangeDisposable=this.model.onTeleportModeChange(this.handleTeleportModeChange);(t=this.element)===null||t===void 0?void 0:t.addEventListener("pointerdown",this.handlePointerDown);this.handleTeleportModeChange(this.model.getTeleportMode())}disable(){var t,i,e;(t=this.teleportModeChangeDisposable)===null||t===void 0?void 0:t.dispose();(i=this.cursorDisposable)===null||i===void 0?void 0:i.dispose();(e=this.element)===null||e===void 0?void 0:e.removeEventListener("pointerdown",this.handlePointerDown)}async handlePointerDown(t){this.downPosition=u(t,this.rectObserver.rect);this.downButtons=t.buttons;window.addEventListener("pointerup",this.handlePointerUp)}async handlePointerUp(t){var i,e;const s=this.model.getTeleportMode();const n=(e=(i=this.api)===null||i===void 0?void 0:i.pixelThreshold())!==null&&e!==void 0?e:2;const o=u(t,this.rectObserver.rect);const a=this.downButtons===2;const l=t.shiftKey||t.altKey||t.metaKey||t.ctrlKey;if(s!=null&&this.downPosition!=null&&h.distance(this.downPosition,o)<=n&&!a&&!l){switch(s){case"teleport":return this.teleportToHit(o);case"teleport-toward":return this.teleportTowardHit(o);case"teleport-and-align":return this.teleportAndAlign(o)}}this.downPosition=undefined;window.removeEventListener("pointerup",this.handlePointerUp)}async beginInteraction(){var t,i;if(!((t=this.api)===null||t===void 0?void 0:t.isInteracting())){await((i=this.api)===null||i===void 0?void 0:i.beginInteraction())}}async endInteraction(){var t;await((t=this.api)===null||t===void 0?void 0:t.endInteraction())}async teleportTowardHit(t){var i,e;const s=await((i=this.api)===null||i===void 0?void 0:i.getWorldPointFromViewport(t));const n=(e=this.api)===null||e===void 0?void 0:e.getRayFromPoint(t);if(n!=null){const{teleportDistancePercentage:t,teleportCollisionDistance:i}=this.model.getConfiguration();const e=t/100;return this.performInteraction((({camera:t,boundingBox:o})=>{const h=Math.max(...a.toArray(l.lengths(o)))*e;const u=r.fromNormalAndCoplanarPoint(t.up,t.position);const c=r.projectPoint(u,s!==null&&s!==void 0?s:t.position);const v=a.distance(t.position,c);if(v<h&&v>i*1.1){const e=d.create({...n,origin:c});const s=r.projectPoint(u,d.at(e,-i));return t.update({position:s,lookAt:a.add(t.lookAt,a.subtract(s,t.position))})}else{const i=r.projectPoint(u,d.at(n,h));return t.update({position:i,lookAt:a.add(t.lookAt,a.subtract(i,t.position))})}}))}}async teleportToHit(t){const i=await this.getWorldPointWithFallback(t);if(i!=null){return this.performInteraction((({camera:t,boundingBox:e})=>{const s=this.shortestLength(e);const n=this.model.getTeleportHeightPercentage()/100;const o=r.fromNormalAndCoplanarPoint(t.up,t.position);const h=r.projectPoint(o,i);const l=d.create({origin:t.position,direction:a.normalize(a.subtract(h,t.position))});const u=a.distance(t.position,h);const c=a.distance(t.position,t.lookAt);const v=d.at(l,u-s*n);const g=d.create({origin:v,direction:a.normalize(t.viewVector)});return t.update({position:v,lookAt:d.at(g,c)})}))}}async teleportAndAlign(t){var i;const e=await((i=this.api)===null||i===void 0?void 0:i.hitItems(t));const s=e!=null?e[0]:undefined;if((s===null||s===void 0?void 0:s.hitNormal)!=null&&(s===null||s===void 0?void 0:s.hitPoint)){await this.performInteraction((({camera:t,boundingBox:i})=>{const e=this.shortestLength(i);const n=this.model.getTeleportHeightPercentage()/100;const o=d.create({origin:s.hitPoint,direction:s.hitNormal});return t.alignTo(d.at(o,e*n),s.hitNormal)}))}}async performInteraction(t){var i;await this.beginInteraction();await((i=this.api)===null||i===void 0?void 0:i.transformCamera(t,this.renderConfiguration()));await this.endInteraction()}async getWorldPointWithFallback(t){var i,e;const s=await((i=this.api)===null||i===void 0?void 0:i.getWorldPointFromViewport(t));if(s==null){const i=await((e=this.api)===null||e===void 0?void 0:e.hitItems(t));const n=i!=null?i[0]:undefined;return(n===null||n===void 0?void 0:n.hitPoint)!=null?n.hitPoint:s}return s}handleEnabledChange(t){if(t){this.enable()}else{this.disable()}}handleTeleportModeChange(t){var i,e;(i=this.cursorDisposable)===null||i===void 0?void 0:i.dispose();if(t!=null){this.cursorDisposable=(e=this.api)===null||e===void 0?void 0:e.addCursor("crosshair")}}shortestLength(t){return Math.min(...a.toArray(l.lengths(t)))}renderConfiguration(){return this.animationConfiguration!=null?{animation:{milliseconds:this.animationConfiguration.durationMs}}:{}}}class p{constructor(...t){this.bindings=t.map((t=>t.toLowerCase()))}matches(t){return this.bindings.length>0&&this.bindings.every((i=>this.bindingMatches(t,i)))}bindingMatches(t,i){const e=i.includes("!");const s=i.replace("!","");return e?!t[s]:t[s]}}class f{constructor(t){this.model=t;this.excludeTagNames=["VERTEX-SCENE-TREE","VERTEX-SCENE-TREE-SEARCH","VERTEX-VIEWER-PIN-TOOL","INPUT","TEXTAREA"];this.excludePredicates=[];this.updateModelExclusions()}updateModel(t){this.model=t}setEnabled(t){this.model.setEnabled(t)}setTeleportMode(t){this.model.setTeleportMode(t)}updateConfiguration(t){const i=this.model.getConfiguration();this.model.setConfiguration({...i,...t})}addKeyBinding(t,...i){this.model.addKeyBinding(t,new p(...i))}replaceKeyBinding(t,...i){this.model.replaceKeyBinding(t,new p(...i))}excludeElement(...t){if(typeof t[0]==="string"){this.excludeTagNames=[...this.excludeTagNames,t[0]];this.updateModelExclusions();return{dispose:()=>{this.excludeTagNames=this.excludeTagNames.filter((i=>i!==t[0]))}}}else{this.excludePredicates=[...this.excludePredicates,t[0]];this.updateModelExclusions();return{dispose:()=>{this.excludePredicates=this.excludePredicates.filter((i=>i!==t[0]))}}}}updateModelExclusions(){this.model.setExcludedPredicate((t=>this.excludeTagNames.some((i=>i===t.tagName))||this.excludePredicates.some((i=>i(t)))))}}var w;(function(t){t["MOVE_DOWN"]="MOVE_DOWN";t["MOVE_UP"]="MOVE_UP";t["PIVOT_DOWN"]="PIVOT_DOWN";t["PIVOT_LEFT"]="PIVOT_LEFT";t["PIVOT_RIGHT"]="PIVOT_RIGHT";t["PIVOT_UP"]="PIVOT_UP";t["WALK_BACKWARD"]="WALK_BACKWARD";t["WALK_FORWARD"]="WALK_FORWARD";t["WALK_LEFT"]="WALK_LEFT";t["WALK_RIGHT"]="WALK_RIGHT"})(w||(w={}));class m{constructor(){this.keyBindings={[w.MOVE_DOWN]:[new p("PageDown","!Shift","!Alt")],[w.MOVE_UP]:[new p("PageUp","!Shift","!Alt")],[w.PIVOT_DOWN]:[new p("ArrowDown","!Shift","!Alt")],[w.PIVOT_LEFT]:[new p("ArrowLeft","!Shift","!Alt")],[w.PIVOT_RIGHT]:[new p("ArrowRight","!Shift","!Alt")],[w.PIVOT_UP]:[new p("ArrowUp","!Shift","!Alt")],[w.WALK_BACKWARD]:[new p("s")],[w.WALK_FORWARD]:[new p("w")],[w.WALK_LEFT]:[new p("a")],[w.WALK_RIGHT]:[new p("d")]};this.configuration={teleportHeightPercentage:11.75,teleportDistancePercentage:2,teleportCollisionDistance:1e3,keyboardWalkSpeed:5,keyboardPivotDegrees:1,keyboardRepeatIntervalMs:25};this.enabled=true;this.enabledChanged=new v;this.teleportModeChanged=new v;this.configurationChanged=new v;this.keyBindingsChanged=new v}setEnabled(t){this.enabled=t;this.enabledChanged.emit(t)}setTeleportMode(t){this.teleportMode=t;this.teleportModeChanged.emit(t)}setConfiguration(t){this.configuration=t;this.configurationChanged.emit(t)}addKeyBinding(t,i){this.keyBindings[t]=[...this.keyBindings[t],i];this.keyBindingsChanged.emit(this.keyBindings)}replaceKeyBinding(t,i){this.keyBindings[t]=[i];this.keyBindingsChanged.emit(this.keyBindings)}setExcludedPredicate(t){this.excludedPredicate=t}getEnabled(){return this.enabled}getTeleportMode(){return this.teleportMode}getTeleportHeightPercentage(){return this.configuration.teleportHeightPercentage}getKeyboardWalkSpeed(){return this.configuration.keyboardWalkSpeed}getKeyboardPivotDegrees(){return this.configuration.keyboardPivotDegrees}getKeyboardRepeatInterval(){return this.configuration.keyboardRepeatIntervalMs}getConfiguration(){return this.configuration}getKeyBindings(){return this.keyBindings}operationMatches(t,i){return this.keyBindings[t].some((t=>t.matches(i)))}isElementExcluded(t){var i;return!!((i=this.excludedPredicate)===null||i===void 0?void 0:i.call(this,t))}onEnabledChange(t){return this.enabledChanged.on(t)}onTeleportModeChange(t){return this.teleportModeChanged.on(t)}onConfigurationChange(t){return this.configurationChanged.on(t)}onKeyBindingsChange(t){return this.keyBindingsChanged.on(t)}}const C=()=>`:host{position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}`;const E=i(class t extends e{constructor(t){super();if(t!==false){this.__registerHost()}this.__attachShadow();this.controllerChanged=s(this,"controllerChanged");this.animationsDisabled=false;this.animationMs=500;this.model=new m;this.stateMap={}}componentWillLoad(){this.setupController();this.setupInteractionHandler();this.setDepthBuffers()}connectedCallback(){this.setupInteractionHandler();this.setDepthBuffers()}disconnectedCallback(){this.clearInteractionHandler();this.resetDepthBuffers()}handleModeChange(){var t;(t=this.controller)===null||t===void 0?void 0:t.setTeleportMode(this.mode);if(this.mode!=null){this.setDepthBuffers()}else{this.resetDepthBuffers()}}handleViewerChanged(){this.clearInteractionHandler();this.setupInteractionHandler();this.setDepthBuffers()}handleAnimationMsChanged(){var t;if(this.animationMs!=null){(t=this.interactionHandler)===null||t===void 0?void 0:t.setAnimations({durationMs:this.animationMs})}}handleAnimationsDisabledChanged(){var t,i;if(this.animationsDisabled){(t=this.interactionHandler)===null||t===void 0?void 0:t.setAnimations(undefined)}else if(this.animationMs!=null){(i=this.interactionHandler)===null||i===void 0?void 0:i.setAnimations({durationMs:this.animationMs})}}handleControllerChanged(){this.setupInteractionHandler();this.setupController();this.controllerChanged.emit(this.controller)}handleModelChanged(){this.setupController();this.clearInteractionHandler();this.setupInteractionHandler()}render(){return n(o,{key:"c8a6512176d203d38ae647ccddcfa8adf307f977"})}setupController(){if(this.controller==null){this.controller=new f(this.model);this.controller.setTeleportMode(this.mode);this.controllerChanged.emit(this.controller)}else{this.controller.setTeleportMode(this.mode);this.controller.updateModel(this.model)}}setDepthBuffers(){if(this.mode!=null&&this.viewer!=null&&this.viewer.depthBuffers==null){this.stateMap.shouldClearDepthBuffers=true;this.viewer.depthBuffers="final"}}resetDepthBuffers(){if(this.stateMap.shouldClearDepthBuffers&&this.viewer!=null){this.viewer.depthBuffers=undefined;this.stateMap.shouldClearDepthBuffers=undefined}}clearInteractionHandler(){var t,i;(t=this.interactionHandlerDisposable)===null||t===void 0?void 0:t.dispose();this.interactionHandlerDisposable=undefined;(i=this.interactionHandler)===null||i===void 0?void 0:i.dispose();this.interactionHandler=undefined}async setupInteractionHandler(){var t;if(this.interactionHandler==null){this.interactionHandler=new g(this.model,!this.animationsDisabled&&this.animationMs!=null?{durationMs:this.animationMs}:undefined);this.interactionHandlerDisposable=await((t=this.viewer)===null||t===void 0?void 0:t.registerInteractionHandler(this.interactionHandler))}}static get watchers(){return{mode:[{handleModeChange:0}],viewer:[{handleViewerChanged:0}],animationMs:[{handleAnimationMsChanged:0}],animationsDisabled:[{handleAnimationsDisabledChanged:0}],controller:[{handleControllerChanged:0}],model:[{handleModelChanged:0}]}}static get style(){return C()}},[1,"vertex-viewer-teleport-tool",{viewer:[16],mode:[1025],animationsDisabled:[4,"animations-disabled"],animationMs:[2,"animation-ms"],controller:[1040],model:[1040]},undefined,{mode:[{handleModeChange:0}],viewer:[{handleViewerChanged:0}],animationMs:[{handleAnimationMsChanged:0}],animationsDisabled:[{handleAnimationsDisabledChanged:0}],controller:[{handleControllerChanged:0}],model:[{handleModelChanged:0}]}]);function b(){if(typeof customElements==="undefined"){return}const i=["vertex-viewer-teleport-tool"];i.forEach((i=>{switch(i){case"vertex-viewer-teleport-tool":if(!customElements.get(t(i))){customElements.define(t(i),E)}break}}))}b();export{E as V,m as W,w as a,f as b,b as d};
5
+ //# sourceMappingURL=p-UrT4ZJv3.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["TeleportInteractionHandler","constructor","model","animationConfiguration","this","rectObserver","ElementRectObserver","handlePointerDown","bind","handlePointerUp","handleEnabledChange","handleTeleportModeChange","enabledChangeDisposable","onEnabledChange","dispose","disable","_a","element","undefined","api","disconnect","initialize","observe","getEnabled","setAnimations","config","enable","teleportModeChangeDisposable","onTeleportModeChange","addEventListener","getTeleportMode","_b","cursorDisposable","_c","removeEventListener","event","downPosition","getMouseClientPosition","rect","downButtons","buttons","window","mode","threshold","pixelThreshold","point","isRightClick","hasModifier","shiftKey","altKey","metaKey","ctrlKey","Point","distance","teleportToHit","teleportTowardHit","teleportAndAlign","beginInteraction","isInteracting","endInteraction","worldPoint","getWorldPointFromViewport","mouseRay","getRayFromPoint","teleportDistancePercentage","teleportCollisionDistance","getConfiguration","teleportDistanceScalar","performInteraction","camera","boundingBox","stepDistance","Math","max","Vector3","toArray","BoundingBox","lengths","positionPlane","Plane","fromNormalAndCoplanarPoint","up","position","projectedWorldPoint","projectPoint","distanceToWorldPoint","mouseRayAtWorldPoint","Ray","create","origin","nextPosition","at","update","lookAt","add","subtract","projectedNextStep","getWorldPointWithFallback","shortestBoundingBoxLength","shortestLength","heightScalar","getTeleportHeightPercentage","cameraPlane","projectedHitPosition","rayToHitPosition","direction","normalize","distanceToHitPosition","distanceToLookAt","newPosition","newPositionViewVectorRay","viewVector","hits","hitItems","hit","hitNormal","hitPoint","upRay","alignTo","fn","transformCamera","renderConfiguration","enabled","addCursor","min","animation","milliseconds","durationMs","KeyBinding","bindings","map","binding","toLowerCase","matches","keys","length","every","bindingMatches","negated","includes","key","replace","WalkModeController","excludeTagNames","excludePredicates","updateModelExclusions","updateModel","setEnabled","setTeleportMode","updateConfiguration","configuration","existing","setConfiguration","addKeyBinding","operation","replaceKeyBinding","excludeElement","args","filter","tn","setExcludedPredicate","el","some","tagName","p","ViewerWalkModeOperation","WalkModeModel","keyBindings","MOVE_DOWN","MOVE_UP","PIVOT_DOWN","PIVOT_LEFT","PIVOT_RIGHT","PIVOT_UP","WALK_BACKWARD","WALK_FORWARD","WALK_LEFT","WALK_RIGHT","teleportHeightPercentage","keyboardWalkSpeed","keyboardPivotDegrees","keyboardRepeatIntervalMs","enabledChanged","EventDispatcher","teleportModeChanged","configurationChanged","keyBindingsChanged","emit","teleportMode","keyBinding","predicate","excludedPredicate","getKeyboardWalkSpeed","getKeyboardPivotDegrees","getKeyboardRepeatInterval","getKeyBindings","operationMatches","state","isElementExcluded","call","listener","on","onConfigurationChange","onKeyBindingsChange","viewerTeleportToolCss","ViewerTeleportTool","__stencil_proxyCustomElement","HTMLElement","registerHost","animationsDisabled","animationMs","stateMap","componentWillLoad","setupController","setupInteractionHandler","setDepthBuffers","connectedCallback","disconnectedCallback","clearInteractionHandler","resetDepthBuffers","handleModeChange","controller","handleViewerChanged","handleAnimationMsChanged","interactionHandler","handleAnimationsDisabledChanged","handleControllerChanged","controllerChanged","handleModelChanged","render","h","Host","viewer","depthBuffers","shouldClearDepthBuffers","interactionHandlerDisposable","registerInteractionHandler"],"sources":["src/lib/teleportation/interactions.ts","src/lib/keyBinding.ts","src/lib/walk-mode/controller.ts","src/lib/walk-mode/model.ts","src/components/viewer-teleport-tool/viewer-teleport-tool.css?tag=vertex-viewer-teleport-tool&encapsulation=shadow","src/components/viewer-teleport-tool/viewer-teleport-tool.tsx"],"sourcesContent":["import { BoundingBox, Plane, Point, Ray, Vector3 } from '@vertexvis/geometry';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { getMouseClientPosition } from '../dom';\nimport { ElementRectObserver } from '../elementRectObserver';\nimport {\n CameraTransform,\n InteractionApi,\n InteractionHandler,\n} from '../interactions';\nimport { Camera, CameraRenderOptions } from '../scenes';\nimport { ViewerTeleportMode, WalkModeModel } from '../walk-mode/model';\n\nexport interface AnimationConfiguration {\n durationMs: number;\n}\n\nexport class TeleportInteractionHandler implements InteractionHandler {\n private api?: InteractionApi;\n private element?: HTMLElement;\n\n private rectObserver = new ElementRectObserver();\n\n private downPosition?: Point.Point;\n private downButtons?: number;\n\n private enabledChangeDisposable?: Disposable;\n private teleportModeChangeDisposable?: Disposable;\n private cursorDisposable?: Disposable;\n\n public constructor(\n private model: WalkModeModel,\n private animationConfiguration?: AnimationConfiguration,\n ) {\n this.handlePointerDown = this.handlePointerDown.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleEnabledChange = this.handleEnabledChange.bind(this);\n this.handleTeleportModeChange = this.handleTeleportModeChange.bind(this);\n\n this.enabledChangeDisposable = this.model.onEnabledChange(\n this.handleEnabledChange,\n );\n }\n\n public dispose(): void {\n this.disable();\n this.enabledChangeDisposable?.dispose();\n\n this.element = undefined;\n this.api = undefined;\n\n this.rectObserver.disconnect();\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.rectObserver.observe(element);\n\n this.handleEnabledChange(this.model.getEnabled());\n }\n\n public setAnimations(config?: AnimationConfiguration): void {\n this.animationConfiguration = config;\n }\n\n public enable(): void {\n this.disable();\n\n this.teleportModeChangeDisposable = this.model.onTeleportModeChange(\n this.handleTeleportModeChange,\n );\n this.element?.addEventListener('pointerdown', this.handlePointerDown);\n\n this.handleTeleportModeChange(this.model.getTeleportMode());\n }\n\n public disable(): void {\n this.teleportModeChangeDisposable?.dispose();\n this.cursorDisposable?.dispose();\n\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n }\n\n private async handlePointerDown(event: PointerEvent): Promise<void> {\n this.downPosition = getMouseClientPosition(event, this.rectObserver.rect);\n this.downButtons = event.buttons;\n\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n\n private async handlePointerUp(event: PointerEvent): Promise<void> {\n const mode = this.model.getTeleportMode();\n const threshold = this.api?.pixelThreshold() ?? 2;\n const point = getMouseClientPosition(event, this.rectObserver.rect);\n const isRightClick = this.downButtons === 2;\n const hasModifier =\n event.shiftKey || event.altKey || event.metaKey || event.ctrlKey;\n\n if (\n mode != null &&\n this.downPosition != null &&\n Point.distance(this.downPosition, point) <= threshold &&\n !isRightClick &&\n !hasModifier\n ) {\n switch (mode) {\n case 'teleport':\n return this.teleportToHit(point);\n case 'teleport-toward':\n return this.teleportTowardHit(point);\n case 'teleport-and-align':\n return this.teleportAndAlign(point);\n }\n }\n\n this.downPosition = undefined;\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n }\n\n private async beginInteraction(): Promise<void> {\n if (!this.api?.isInteracting()) {\n await this.api?.beginInteraction();\n }\n }\n\n private async endInteraction(): Promise<void> {\n await this.api?.endInteraction();\n }\n\n private async teleportTowardHit(point: Point.Point): Promise<void> {\n const worldPoint = await this.api?.getWorldPointFromViewport(point);\n const mouseRay = this.api?.getRayFromPoint(point);\n\n if (mouseRay != null) {\n const { teleportDistancePercentage, teleportCollisionDistance } =\n this.model.getConfiguration();\n const teleportDistanceScalar = teleportDistancePercentage / 100;\n\n return this.performInteraction(({ camera, boundingBox }) => {\n const stepDistance =\n Math.max(...Vector3.toArray(BoundingBox.lengths(boundingBox))) *\n teleportDistanceScalar;\n\n const positionPlane = Plane.fromNormalAndCoplanarPoint(\n camera.up,\n camera.position,\n );\n const projectedWorldPoint = Plane.projectPoint(\n positionPlane,\n worldPoint ?? camera.position,\n );\n const distanceToWorldPoint = Vector3.distance(\n camera.position,\n projectedWorldPoint,\n );\n\n if (\n distanceToWorldPoint < stepDistance &&\n distanceToWorldPoint > teleportCollisionDistance * 1.1\n ) {\n const mouseRayAtWorldPoint = Ray.create({\n ...mouseRay,\n origin: projectedWorldPoint,\n });\n const nextPosition = Plane.projectPoint(\n positionPlane,\n Ray.at(mouseRayAtWorldPoint, -teleportCollisionDistance),\n );\n\n return camera.update({\n position: nextPosition,\n lookAt: Vector3.add(\n camera.lookAt,\n Vector3.subtract(nextPosition, camera.position),\n ),\n });\n } else {\n const projectedNextStep = Plane.projectPoint(\n positionPlane,\n Ray.at(mouseRay, stepDistance),\n );\n\n return camera.update({\n position: projectedNextStep,\n lookAt: Vector3.add(\n camera.lookAt,\n Vector3.subtract(projectedNextStep, camera.position),\n ),\n });\n }\n });\n }\n }\n\n private async teleportToHit(point: Point.Point): Promise<void> {\n const worldPoint = await this.getWorldPointWithFallback(point);\n\n if (worldPoint != null) {\n return this.performInteraction(({ camera, boundingBox }) => {\n const shortestBoundingBoxLength = this.shortestLength(boundingBox);\n const heightScalar = this.model.getTeleportHeightPercentage() / 100;\n\n const cameraPlane = Plane.fromNormalAndCoplanarPoint(\n camera.up,\n camera.position,\n );\n const projectedHitPosition = Plane.projectPoint(\n cameraPlane,\n worldPoint,\n );\n\n const rayToHitPosition = Ray.create({\n origin: camera.position,\n direction: Vector3.normalize(\n Vector3.subtract(projectedHitPosition, camera.position),\n ),\n });\n const distanceToHitPosition = Vector3.distance(\n camera.position,\n projectedHitPosition,\n );\n const distanceToLookAt = Vector3.distance(\n camera.position,\n camera.lookAt,\n );\n\n const newPosition = Ray.at(\n rayToHitPosition,\n distanceToHitPosition - shortestBoundingBoxLength * heightScalar,\n );\n const newPositionViewVectorRay = Ray.create({\n origin: newPosition,\n direction: Vector3.normalize(camera.viewVector),\n });\n\n return camera.update({\n position: newPosition,\n lookAt: Ray.at(newPositionViewVectorRay, distanceToLookAt),\n });\n });\n }\n }\n\n private async teleportAndAlign(point: Point.Point): Promise<void> {\n const hits = await this.api?.hitItems(point);\n const hit = hits != null ? hits[0] : undefined;\n\n if (hit?.hitNormal != null && hit?.hitPoint) {\n await this.performInteraction(({ camera, boundingBox }) => {\n const shortestBoundingBoxLength = this.shortestLength(boundingBox);\n const heightScalar = this.model.getTeleportHeightPercentage() / 100;\n\n const upRay = Ray.create({\n origin: hit.hitPoint as Vector3.Vector3,\n direction: hit.hitNormal as Vector3.Vector3,\n });\n\n return camera.alignTo(\n Ray.at(upRay, shortestBoundingBoxLength * heightScalar),\n hit.hitNormal as Vector3.Vector3,\n );\n });\n }\n }\n\n private async performInteraction(fn: CameraTransform<Camera>): Promise<void> {\n await this.beginInteraction();\n await this.api?.transformCamera(fn, this.renderConfiguration());\n await this.endInteraction();\n }\n\n private async getWorldPointWithFallback(\n point: Point.Point,\n ): Promise<Vector3.Vector3 | undefined> {\n const worldPoint = await this.api?.getWorldPointFromViewport(point);\n\n if (worldPoint == null) {\n const hits = await this.api?.hitItems(point);\n const hit = hits != null ? hits[0] : undefined;\n\n return hit?.hitPoint != null\n ? (hit.hitPoint as Vector3.Vector3)\n : worldPoint;\n }\n return worldPoint;\n }\n\n private handleEnabledChange(enabled: boolean): void {\n if (enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n private handleTeleportModeChange(mode?: ViewerTeleportMode): void {\n this.cursorDisposable?.dispose();\n\n if (mode != null) {\n this.cursorDisposable = this.api?.addCursor('crosshair');\n }\n }\n\n private shortestLength(boundingBox: BoundingBox.BoundingBox): number {\n return Math.min(...Vector3.toArray(BoundingBox.lengths(boundingBox)));\n }\n\n private renderConfiguration(): CameraRenderOptions {\n return this.animationConfiguration != null\n ? { animation: { milliseconds: this.animationConfiguration.durationMs } }\n : {};\n }\n}\n","export class KeyBinding {\n private bindings: string[];\n\n public constructor(...bindings: string[]) {\n this.bindings = bindings.map((binding) => binding.toLowerCase());\n }\n\n public matches(keys: Record<string, boolean>): boolean {\n return (\n this.bindings.length > 0 &&\n this.bindings.every((binding) => this.bindingMatches(keys, binding))\n );\n }\n\n private bindingMatches(\n keys: Record<string, boolean>,\n binding: string,\n ): boolean {\n const negated = binding.includes('!');\n const key = binding.replace('!', '');\n\n return negated ? !keys[key] : keys[key];\n }\n}\n","import { Disposable } from '@vertexvis/utils';\n\nimport { KeyBinding } from '../keyBinding';\nimport {\n ViewerTeleportMode,\n ViewerWalkModeConfiguration,\n ViewerWalkModeOperation,\n WalkModeModel,\n} from './model';\n\nexport class WalkModeController {\n private excludeTagNames: Array<string> = [\n 'VERTEX-SCENE-TREE',\n 'VERTEX-SCENE-TREE-SEARCH',\n 'VERTEX-VIEWER-PIN-TOOL',\n 'INPUT',\n 'TEXTAREA',\n ];\n\n private excludePredicates: Array<(el: Element) => boolean> = [];\n\n public constructor(private model: WalkModeModel) {\n this.updateModelExclusions();\n }\n\n /**\n * @internal\n */\n public updateModel(model: WalkModeModel): void {\n this.model = model;\n }\n\n /**\n * Sets whether downstream walk mode interaction handlers are enabled.\n * Setting this value to `false` will remove all event listeners for\n * the interactions, and setting this value to `true` will add or\n * re-add the event listeners.\n */\n public setEnabled(enabled: boolean): void {\n this.model.setEnabled(enabled);\n }\n\n /**\n * Sets the `ViewerTeleportMode` to be used with a `<vertex-viewer-teleport-tool>`.\n */\n public setTeleportMode(mode?: ViewerTeleportMode): void {\n this.model.setTeleportMode(mode);\n }\n\n /**\n * Updates the configuration for downstream walk mode interaction handlers.\n *\n * `teleportHeightPercentage` - percentage used for fine-tuning the distance to offset\n * the camera from a surface when performing a `teleport-and-align`. This percentage is\n * used alongside the shortest side of the visible bounding box to determine how far to\n * place the camera from the surface that has been hit, with a larger percentage placing\n * the camera further from the surface and vice-versa. Defaults to 11.75%.\n *\n * `teleportDistancePercentage` - percentage used for fine-tuning the distance moved per\n * click with the `teleport-toward` mode. This percentage is used alongside the longest\n * side of the visible bounding box to determine how far to move the camera's position\n * with each click, with a larger percentage moving the camera further and vice-versa.\n * Defaults to 2%.\n *\n * `teleportCollisionDistance` - distance used alongside the `teleportCollisionPercentage`\n * to determine whether a click with the `teleport-toward` mode would cause a \"collision\",\n * or would pass through the point clicked. If such a collision would occur, the camera is\n * instead placed this distance back from the point clicked once, then allowed to pass\n * through the point on subsequent clicks. Note that this will not apply if clicks occur\n * in quick succession without setting the `depthBuffers` property on the `<vertex-viewer>`\n * to `all` frames. Defaults to `1000`.\n *\n * `keyboardWalkSpeed` - speed to move the camera when performing keyboard-based\n * walk interactions. A larger number here will result in a faster walk speed through\n * the model and vice-versa. Defaults to `5`.\n *\n * `keyboardPivotDegrees` - number of degrees to move the camera when performing\n * keyboard-based pivot interactions. Defaults to `1`.\n *\n * `keyboardRepeatIntervalMs` - number of milliseconds to repeat keyboard-based interactions.\n * this value is multiplicative with the `keyboardWalkSpeed` and `keyboardPivotDegrees`, and\n * lower numbers will result in faster movement and vice-versa. Defaults to `25`.\n *\n */\n public updateConfiguration(\n configuration: Partial<ViewerWalkModeConfiguration>,\n ): void {\n const existing = this.model.getConfiguration();\n\n this.model.setConfiguration({\n ...existing,\n ...configuration,\n });\n }\n\n /**\n * Adds a custom keybinding for a specific walk operation. This will append to the\n * existing set of keybindings to allow for multiple keybindings for a specific\n * operation. To replace the defaults, see `replaceKeyBinding`.\n */\n public addKeyBinding(\n operation: ViewerWalkModeOperation,\n ...keys: string[]\n ): void {\n this.model.addKeyBinding(operation, new KeyBinding(...keys));\n }\n\n /**\n * Adds a custom keybinding for a specific walk operation. This will replace any\n * existing keybindings to allow for overriding the default behavior.\n *\n * @example\n * ```\n * const walkModeTool = document.querySelector('vertex-viewer-walk-mode-tool');\n *\n * // Remove keybinding for the `PIVOT_UP` operation\n * walkModeTool.controller.replaceKeyBinding('PIVOT_UP');\n *\n * // Replace keybinding for `WALK_FORWARD` with `ArrowUp` instead of `w`\n * walkModeTool.controller.replaceKeyBinding('WALK_FORWARD', 'ArrowUp');\n * ```\n */\n public replaceKeyBinding(\n operation: ViewerWalkModeOperation,\n ...keys: string[]\n ): void {\n this.model.replaceKeyBinding(operation, new KeyBinding(...keys));\n }\n\n /**\n * Adds an exclusion for specific elements when responding to keyboard\n * events. This is useful when there are other elements on screen that\n * require keyboard interaction and the walk mode handlers should not\n * respond to the keyboard events. Can be either a element's `tagName`\n * or a predicate. Returns a `Disposable` that can be used to remove the\n * exclusion.\n *\n * Default `tagName` exclusions:\n * 'VERTEX-SCENE-TREE'\n * 'VERTEX-SCENE-TREE-SEARCH'\n * 'VERTEX-VIEWER-PIN-TOOL'\n * 'INPUT'\n * 'TEXTAREA'\n */\n public excludeElement(predicate: (el: Element) => boolean): Disposable;\n public excludeElement(tagName: string): Disposable;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public excludeElement(...args: any[]): Disposable {\n if (typeof args[0] === 'string') {\n this.excludeTagNames = [...this.excludeTagNames, args[0]];\n\n this.updateModelExclusions();\n\n return {\n dispose: () => {\n this.excludeTagNames = this.excludeTagNames.filter(\n (tn) => tn !== args[0],\n );\n },\n };\n } else {\n this.excludePredicates = [...this.excludePredicates, args[0]];\n\n this.updateModelExclusions();\n\n return {\n dispose: () => {\n this.excludePredicates = this.excludePredicates.filter(\n (tn) => tn !== args[0],\n );\n },\n };\n }\n }\n\n private updateModelExclusions(): void {\n this.model.setExcludedPredicate(\n (el) =>\n this.excludeTagNames.some((tn) => tn === el.tagName) ||\n this.excludePredicates.some((p) => p(el)),\n );\n }\n}\n","import { Disposable, EventDispatcher, Listener } from '@vertexvis/utils';\n\nimport { KeyBinding } from '../keyBinding';\n\nexport interface ViewerWalkModeConfiguration {\n teleportHeightPercentage: number;\n teleportDistancePercentage: number;\n teleportCollisionDistance: number;\n keyboardWalkSpeed: number;\n keyboardPivotDegrees: number;\n keyboardRepeatIntervalMs: number;\n}\n\nexport type ViewerTeleportMode =\n | 'teleport'\n | 'teleport-and-align'\n | 'teleport-toward';\n\nexport enum ViewerWalkModeOperation {\n 'MOVE_DOWN' = 'MOVE_DOWN',\n 'MOVE_UP' = 'MOVE_UP',\n 'PIVOT_DOWN' = 'PIVOT_DOWN',\n 'PIVOT_LEFT' = 'PIVOT_LEFT',\n 'PIVOT_RIGHT' = 'PIVOT_RIGHT',\n 'PIVOT_UP' = 'PIVOT_UP',\n 'WALK_BACKWARD' = 'WALK_BACKWARD',\n 'WALK_FORWARD' = 'WALK_FORWARD',\n 'WALK_LEFT' = 'WALK_LEFT',\n 'WALK_RIGHT' = 'WALK_RIGHT',\n}\n\nexport type ViewerWalkModeKeyBindings = Record<\n ViewerWalkModeOperation,\n KeyBinding[]\n>;\n\nexport class WalkModeModel {\n private keyBindings: ViewerWalkModeKeyBindings = {\n [ViewerWalkModeOperation.MOVE_DOWN]: [\n new KeyBinding('PageDown', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.MOVE_UP]: [\n new KeyBinding('PageUp', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.PIVOT_DOWN]: [\n new KeyBinding('ArrowDown', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.PIVOT_LEFT]: [\n new KeyBinding('ArrowLeft', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.PIVOT_RIGHT]: [\n new KeyBinding('ArrowRight', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.PIVOT_UP]: [\n new KeyBinding('ArrowUp', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.WALK_BACKWARD]: [new KeyBinding('s')],\n [ViewerWalkModeOperation.WALK_FORWARD]: [new KeyBinding('w')],\n [ViewerWalkModeOperation.WALK_LEFT]: [new KeyBinding('a')],\n [ViewerWalkModeOperation.WALK_RIGHT]: [new KeyBinding('d')],\n };\n\n private configuration: ViewerWalkModeConfiguration = {\n teleportHeightPercentage: 11.75,\n teleportDistancePercentage: 2,\n teleportCollisionDistance: 1000,\n keyboardWalkSpeed: 5,\n keyboardPivotDegrees: 1,\n keyboardRepeatIntervalMs: 25,\n };\n\n private excludedPredicate?: (el: Element) => boolean;\n\n private enabled = true;\n private teleportMode?: ViewerTeleportMode;\n\n private enabledChanged: EventDispatcher<boolean> = new EventDispatcher();\n\n private teleportModeChanged: EventDispatcher<ViewerTeleportMode | undefined> =\n new EventDispatcher<ViewerTeleportMode | undefined>();\n\n private configurationChanged: EventDispatcher<ViewerWalkModeConfiguration> =\n new EventDispatcher<ViewerWalkModeConfiguration>();\n\n private keyBindingsChanged: EventDispatcher<ViewerWalkModeKeyBindings> =\n new EventDispatcher<ViewerWalkModeKeyBindings>();\n\n public setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n this.enabledChanged.emit(enabled);\n }\n\n public setTeleportMode(mode?: ViewerTeleportMode): void {\n this.teleportMode = mode;\n this.teleportModeChanged.emit(mode);\n }\n\n public setConfiguration(configuration: ViewerWalkModeConfiguration): void {\n this.configuration = configuration;\n this.configurationChanged.emit(configuration);\n }\n\n public addKeyBinding(\n operation: ViewerWalkModeOperation,\n keyBinding: KeyBinding,\n ): void {\n this.keyBindings[operation] = [...this.keyBindings[operation], keyBinding];\n this.keyBindingsChanged.emit(this.keyBindings);\n }\n\n public replaceKeyBinding(\n operation: ViewerWalkModeOperation,\n keyBinding: KeyBinding,\n ): void {\n this.keyBindings[operation] = [keyBinding];\n this.keyBindingsChanged.emit(this.keyBindings);\n }\n\n public setExcludedPredicate(predicate: (el: Element) => boolean): void {\n this.excludedPredicate = predicate;\n }\n\n public getEnabled(): boolean {\n return this.enabled;\n }\n\n public getTeleportMode(): ViewerTeleportMode | undefined {\n return this.teleportMode;\n }\n\n public getTeleportHeightPercentage(): number {\n return this.configuration.teleportHeightPercentage;\n }\n\n public getKeyboardWalkSpeed(): number {\n return this.configuration.keyboardWalkSpeed;\n }\n\n public getKeyboardPivotDegrees(): number {\n return this.configuration.keyboardPivotDegrees;\n }\n\n public getKeyboardRepeatInterval(): number {\n return this.configuration.keyboardRepeatIntervalMs;\n }\n\n public getConfiguration(): ViewerWalkModeConfiguration {\n return this.configuration;\n }\n\n public getKeyBindings(): ViewerWalkModeKeyBindings {\n return this.keyBindings;\n }\n\n public operationMatches(\n operation: ViewerWalkModeOperation,\n state: Record<string, boolean>,\n ): boolean {\n return this.keyBindings[operation].some((binding) =>\n binding.matches(state),\n );\n }\n\n public isElementExcluded(el: Element): boolean {\n return !!this.excludedPredicate?.(el);\n }\n\n public onEnabledChange(listener: Listener<boolean>): Disposable {\n return this.enabledChanged.on(listener);\n }\n\n public onTeleportModeChange(\n listener: Listener<ViewerTeleportMode | undefined>,\n ): Disposable {\n return this.teleportModeChanged.on(listener);\n }\n\n public onConfigurationChange(\n listener: Listener<ViewerWalkModeConfiguration>,\n ): Disposable {\n return this.configurationChanged.on(listener);\n }\n\n public onKeyBindingsChange(\n listener: Listener<ViewerWalkModeKeyBindings>,\n ): Disposable {\n return this.keyBindingsChanged.on(listener);\n }\n}\n",":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { TeleportInteractionHandler } from '../../lib/teleportation/interactions';\nimport { WalkModeController } from '../../lib/walk-mode/controller';\nimport { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';\n\ninterface StateMap {\n shouldClearDepthBuffers?: boolean;\n}\n\n/**\n * The `<vertex-viewer-teleport-tool>` allows for click-based \"teleportation\"\n * around a model, which is particularly useful for walking through a model.\n * This tool is automatically included as part of the <vertex-viewer-walk-mode-tool>.\n */\n@Component({\n tag: 'vertex-viewer-teleport-tool',\n styleUrl: 'viewer-teleport-tool.css',\n shadow: true,\n})\nexport class ViewerTeleportTool {\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 type of teleportation to perform when clicking.\n *\n * `teleport` - the camera's `position` is moved to the location of the hit result\n * constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated\n * to align to the plane represented by the hit result's position and normal.\n *\n * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the\n * hit result constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `undefined` - no teleportation will occur when clicking.\n *\n * Defaults to `undefined`.\n */\n @Prop({ mutable: true })\n public mode?: ViewerTeleportMode;\n\n /**\n * Indicates whether animations will be used when performing camera\n * operations. Defaults to `false`.\n */\n @Prop()\n public animationsDisabled = false;\n\n /**\n * The duration of animations, in milliseconds. Defaults to `500`.\n */\n @Prop()\n public animationMs?: number = 500;\n\n @Prop({ mutable: true })\n public controller?: WalkModeController;\n\n @Prop({ mutable: true })\n public model: WalkModeModel = new WalkModeModel();\n\n /**\n * Event emitted when the `WalkModeController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<WalkModeController>;\n\n private interactionHandlerDisposable?: Disposable;\n private interactionHandler?: TeleportInteractionHandler;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.resetDepthBuffers();\n }\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected handleModeChange(): void {\n this.controller?.setTeleportMode(this.mode);\n\n if (this.mode != null) {\n this.setDepthBuffers();\n } else {\n this.resetDepthBuffers();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n @Watch('animationMs')\n protected handleAnimationMsChanged(): void {\n if (this.animationMs != null) {\n this.interactionHandler?.setAnimations({ durationMs: this.animationMs });\n }\n }\n\n /**\n * @ignore\n */\n @Watch('animationsDisabled')\n protected handleAnimationsDisabledChanged(): void {\n if (this.animationsDisabled) {\n this.interactionHandler?.setAnimations(undefined);\n } else if (this.animationMs != null) {\n this.interactionHandler?.setAnimations({ durationMs: this.animationMs });\n }\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(): void {\n this.setupInteractionHandler();\n this.setupController();\n this.controllerChanged.emit(this.controller);\n }\n\n @Watch('model')\n protected handleModelChanged(): void {\n this.setupController();\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n }\n\n protected render(): JSX.Element {\n return <Host></Host>;\n }\n\n private setupController(): void {\n if (this.controller == null) {\n this.controller = new WalkModeController(this.model);\n this.controller.setTeleportMode(this.mode);\n this.controllerChanged.emit(this.controller);\n } else {\n this.controller.setTeleportMode(this.mode);\n this.controller.updateModel(this.model);\n }\n }\n\n private setDepthBuffers(): void {\n if (\n this.mode != null &&\n this.viewer != null &&\n this.viewer.depthBuffers == null\n ) {\n this.stateMap.shouldClearDepthBuffers = true;\n this.viewer.depthBuffers = 'final';\n }\n }\n\n private resetDepthBuffers(): void {\n if (this.stateMap.shouldClearDepthBuffers && this.viewer != null) {\n this.viewer.depthBuffers = undefined;\n this.stateMap.shouldClearDepthBuffers = undefined;\n }\n }\n\n private clearInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandlerDisposable = undefined;\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private async setupInteractionHandler(): Promise<void> {\n if (this.interactionHandler == null) {\n this.interactionHandler = new TeleportInteractionHandler(\n this.model,\n !this.animationsDisabled && this.animationMs != null\n ? { durationMs: this.animationMs }\n : undefined,\n );\n\n this.interactionHandlerDisposable =\n await this.viewer?.registerInteractionHandler(this.interactionHandler);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["TeleportInteractionHandler","constructor","model","animationConfiguration","this","rectObserver","ElementRectObserver","handlePointerDown","bind","handlePointerUp","handleEnabledChange","handleTeleportModeChange","enabledChangeDisposable","onEnabledChange","dispose","disable","_a","element","undefined","api","disconnect","initialize","observe","getEnabled","setAnimations","config","enable","teleportModeChangeDisposable","onTeleportModeChange","addEventListener","getTeleportMode","_b","cursorDisposable","_c","removeEventListener","event","downPosition","getMouseClientPosition","rect","downButtons","buttons","window","mode","threshold","pixelThreshold","point","isRightClick","hasModifier","shiftKey","altKey","metaKey","ctrlKey","Point","distance","teleportToHit","teleportTowardHit","teleportAndAlign","beginInteraction","isInteracting","endInteraction","worldPoint","getWorldPointFromViewport","mouseRay","getRayFromPoint","teleportDistancePercentage","teleportCollisionDistance","getConfiguration","teleportDistanceScalar","performInteraction","camera","boundingBox","stepDistance","Math","max","Vector3","toArray","BoundingBox","lengths","positionPlane","Plane","fromNormalAndCoplanarPoint","up","position","projectedWorldPoint","projectPoint","distanceToWorldPoint","mouseRayAtWorldPoint","Ray","create","origin","nextPosition","at","update","lookAt","add","subtract","projectedNextStep","getWorldPointWithFallback","shortestBoundingBoxLength","shortestLength","heightScalar","getTeleportHeightPercentage","cameraPlane","projectedHitPosition","rayToHitPosition","direction","normalize","distanceToHitPosition","distanceToLookAt","newPosition","newPositionViewVectorRay","viewVector","hits","hitItems","hit","hitNormal","hitPoint","upRay","alignTo","fn","transformCamera","renderConfiguration","enabled","addCursor","min","animation","milliseconds","durationMs","KeyBinding","bindings","map","binding","toLowerCase","matches","keys","length","every","bindingMatches","negated","includes","key","replace","WalkModeController","excludeTagNames","excludePredicates","updateModelExclusions","updateModel","setEnabled","setTeleportMode","updateConfiguration","configuration","existing","setConfiguration","addKeyBinding","operation","replaceKeyBinding","excludeElement","args","filter","tn","setExcludedPredicate","el","some","tagName","p","ViewerWalkModeOperation","WalkModeModel","keyBindings","MOVE_DOWN","MOVE_UP","PIVOT_DOWN","PIVOT_LEFT","PIVOT_RIGHT","PIVOT_UP","WALK_BACKWARD","WALK_FORWARD","WALK_LEFT","WALK_RIGHT","teleportHeightPercentage","keyboardWalkSpeed","keyboardPivotDegrees","keyboardRepeatIntervalMs","enabledChanged","EventDispatcher","teleportModeChanged","configurationChanged","keyBindingsChanged","emit","teleportMode","keyBinding","predicate","excludedPredicate","getKeyboardWalkSpeed","getKeyboardPivotDegrees","getKeyboardRepeatInterval","getKeyBindings","operationMatches","state","isElementExcluded","call","listener","on","onConfigurationChange","onKeyBindingsChange","viewerTeleportToolCss","ViewerTeleportTool","__stencil_proxyCustomElement","HTMLElement","registerHost","animationsDisabled","animationMs","stateMap","componentWillLoad","setupController","setupInteractionHandler","setDepthBuffers","connectedCallback","disconnectedCallback","clearInteractionHandler","resetDepthBuffers","handleModeChange","controller","handleViewerChanged","handleAnimationMsChanged","interactionHandler","handleAnimationsDisabledChanged","handleControllerChanged","controllerChanged","handleModelChanged","render","h","Host","viewer","depthBuffers","shouldClearDepthBuffers","interactionHandlerDisposable","registerInteractionHandler"],"sources":["src/lib/teleportation/interactions.ts","src/lib/keyBinding.ts","src/lib/walk-mode/controller.ts","src/lib/walk-mode/model.ts","src/components/viewer-teleport-tool/viewer-teleport-tool.css?tag=vertex-viewer-teleport-tool&encapsulation=shadow","src/components/viewer-teleport-tool/viewer-teleport-tool.tsx"],"sourcesContent":["import { BoundingBox, Plane, Point, Ray, Vector3 } from '@vertexvis/geometry';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { getMouseClientPosition } from '../dom';\nimport { ElementRectObserver } from '../elementRectObserver';\nimport {\n CameraTransform,\n InteractionApi,\n InteractionHandler,\n} from '../interactions';\nimport { Camera, CameraRenderOptions } from '../scenes';\nimport { ViewerTeleportMode, WalkModeModel } from '../walk-mode/model';\n\nexport interface AnimationConfiguration {\n durationMs: number;\n}\n\nexport class TeleportInteractionHandler implements InteractionHandler {\n private api?: InteractionApi;\n private element?: HTMLElement;\n\n private rectObserver = new ElementRectObserver();\n\n private downPosition?: Point.Point;\n private downButtons?: number;\n\n private enabledChangeDisposable?: Disposable;\n private teleportModeChangeDisposable?: Disposable;\n private cursorDisposable?: Disposable;\n\n public constructor(\n private model: WalkModeModel,\n private animationConfiguration?: AnimationConfiguration,\n ) {\n this.handlePointerDown = this.handlePointerDown.bind(this);\n this.handlePointerUp = this.handlePointerUp.bind(this);\n this.handleEnabledChange = this.handleEnabledChange.bind(this);\n this.handleTeleportModeChange = this.handleTeleportModeChange.bind(this);\n\n this.enabledChangeDisposable = this.model.onEnabledChange(\n this.handleEnabledChange,\n );\n }\n\n public dispose(): void {\n this.disable();\n this.enabledChangeDisposable?.dispose();\n\n this.element = undefined;\n this.api = undefined;\n\n this.rectObserver.disconnect();\n }\n\n public initialize(element: HTMLElement, api: InteractionApi): void {\n this.element = element;\n this.api = api;\n\n this.rectObserver.observe(element);\n\n this.handleEnabledChange(this.model.getEnabled());\n }\n\n public setAnimations(config?: AnimationConfiguration): void {\n this.animationConfiguration = config;\n }\n\n public enable(): void {\n this.disable();\n\n this.teleportModeChangeDisposable = this.model.onTeleportModeChange(\n this.handleTeleportModeChange,\n );\n this.element?.addEventListener('pointerdown', this.handlePointerDown);\n\n this.handleTeleportModeChange(this.model.getTeleportMode());\n }\n\n public disable(): void {\n this.teleportModeChangeDisposable?.dispose();\n this.cursorDisposable?.dispose();\n\n this.element?.removeEventListener('pointerdown', this.handlePointerDown);\n }\n\n private async handlePointerDown(event: PointerEvent): Promise<void> {\n this.downPosition = getMouseClientPosition(event, this.rectObserver.rect);\n this.downButtons = event.buttons;\n\n window.addEventListener('pointerup', this.handlePointerUp);\n }\n\n private async handlePointerUp(event: PointerEvent): Promise<void> {\n const mode = this.model.getTeleportMode();\n const threshold = this.api?.pixelThreshold() ?? 2;\n const point = getMouseClientPosition(event, this.rectObserver.rect);\n const isRightClick = this.downButtons === 2;\n const hasModifier =\n event.shiftKey || event.altKey || event.metaKey || event.ctrlKey;\n\n if (\n mode != null &&\n this.downPosition != null &&\n Point.distance(this.downPosition, point) <= threshold &&\n !isRightClick &&\n !hasModifier\n ) {\n switch (mode) {\n case 'teleport':\n return this.teleportToHit(point);\n case 'teleport-toward':\n return this.teleportTowardHit(point);\n case 'teleport-and-align':\n return this.teleportAndAlign(point);\n }\n }\n\n this.downPosition = undefined;\n\n window.removeEventListener('pointerup', this.handlePointerUp);\n }\n\n private async beginInteraction(): Promise<void> {\n if (!this.api?.isInteracting()) {\n await this.api?.beginInteraction();\n }\n }\n\n private async endInteraction(): Promise<void> {\n await this.api?.endInteraction();\n }\n\n private async teleportTowardHit(point: Point.Point): Promise<void> {\n const worldPoint = await this.api?.getWorldPointFromViewport(point);\n const mouseRay = this.api?.getRayFromPoint(point);\n\n if (mouseRay != null) {\n const { teleportDistancePercentage, teleportCollisionDistance } =\n this.model.getConfiguration();\n const teleportDistanceScalar = teleportDistancePercentage / 100;\n\n return this.performInteraction(({ camera, boundingBox }) => {\n const stepDistance =\n Math.max(...Vector3.toArray(BoundingBox.lengths(boundingBox))) *\n teleportDistanceScalar;\n\n const positionPlane = Plane.fromNormalAndCoplanarPoint(\n camera.up,\n camera.position,\n );\n const projectedWorldPoint = Plane.projectPoint(\n positionPlane,\n worldPoint ?? camera.position,\n );\n const distanceToWorldPoint = Vector3.distance(\n camera.position,\n projectedWorldPoint,\n );\n\n if (\n distanceToWorldPoint < stepDistance &&\n distanceToWorldPoint > teleportCollisionDistance * 1.1\n ) {\n const mouseRayAtWorldPoint = Ray.create({\n ...mouseRay,\n origin: projectedWorldPoint,\n });\n const nextPosition = Plane.projectPoint(\n positionPlane,\n Ray.at(mouseRayAtWorldPoint, -teleportCollisionDistance),\n );\n\n return camera.update({\n position: nextPosition,\n lookAt: Vector3.add(\n camera.lookAt,\n Vector3.subtract(nextPosition, camera.position),\n ),\n });\n } else {\n const projectedNextStep = Plane.projectPoint(\n positionPlane,\n Ray.at(mouseRay, stepDistance),\n );\n\n return camera.update({\n position: projectedNextStep,\n lookAt: Vector3.add(\n camera.lookAt,\n Vector3.subtract(projectedNextStep, camera.position),\n ),\n });\n }\n });\n }\n }\n\n private async teleportToHit(point: Point.Point): Promise<void> {\n const worldPoint = await this.getWorldPointWithFallback(point);\n\n if (worldPoint != null) {\n return this.performInteraction(({ camera, boundingBox }) => {\n const shortestBoundingBoxLength = this.shortestLength(boundingBox);\n const heightScalar = this.model.getTeleportHeightPercentage() / 100;\n\n const cameraPlane = Plane.fromNormalAndCoplanarPoint(\n camera.up,\n camera.position,\n );\n const projectedHitPosition = Plane.projectPoint(\n cameraPlane,\n worldPoint,\n );\n\n const rayToHitPosition = Ray.create({\n origin: camera.position,\n direction: Vector3.normalize(\n Vector3.subtract(projectedHitPosition, camera.position),\n ),\n });\n const distanceToHitPosition = Vector3.distance(\n camera.position,\n projectedHitPosition,\n );\n const distanceToLookAt = Vector3.distance(\n camera.position,\n camera.lookAt,\n );\n\n const newPosition = Ray.at(\n rayToHitPosition,\n distanceToHitPosition - shortestBoundingBoxLength * heightScalar,\n );\n const newPositionViewVectorRay = Ray.create({\n origin: newPosition,\n direction: Vector3.normalize(camera.viewVector),\n });\n\n return camera.update({\n position: newPosition,\n lookAt: Ray.at(newPositionViewVectorRay, distanceToLookAt),\n });\n });\n }\n }\n\n private async teleportAndAlign(point: Point.Point): Promise<void> {\n const hits = await this.api?.hitItems(point);\n const hit = hits != null ? hits[0] : undefined;\n\n if (hit?.hitNormal != null && hit?.hitPoint) {\n await this.performInteraction(({ camera, boundingBox }) => {\n const shortestBoundingBoxLength = this.shortestLength(boundingBox);\n const heightScalar = this.model.getTeleportHeightPercentage() / 100;\n\n const upRay = Ray.create({\n origin: hit.hitPoint as Vector3.Vector3,\n direction: hit.hitNormal as Vector3.Vector3,\n });\n\n return camera.alignTo(\n Ray.at(upRay, shortestBoundingBoxLength * heightScalar),\n hit.hitNormal as Vector3.Vector3,\n );\n });\n }\n }\n\n private async performInteraction(fn: CameraTransform<Camera>): Promise<void> {\n await this.beginInteraction();\n await this.api?.transformCamera(fn, this.renderConfiguration());\n await this.endInteraction();\n }\n\n private async getWorldPointWithFallback(\n point: Point.Point,\n ): Promise<Vector3.Vector3 | undefined> {\n const worldPoint = await this.api?.getWorldPointFromViewport(point);\n\n if (worldPoint == null) {\n const hits = await this.api?.hitItems(point);\n const hit = hits != null ? hits[0] : undefined;\n\n return hit?.hitPoint != null\n ? (hit.hitPoint as Vector3.Vector3)\n : worldPoint;\n }\n return worldPoint;\n }\n\n private handleEnabledChange(enabled: boolean): void {\n if (enabled) {\n this.enable();\n } else {\n this.disable();\n }\n }\n\n private handleTeleportModeChange(mode?: ViewerTeleportMode): void {\n this.cursorDisposable?.dispose();\n\n if (mode != null) {\n this.cursorDisposable = this.api?.addCursor('crosshair');\n }\n }\n\n private shortestLength(boundingBox: BoundingBox.BoundingBox): number {\n return Math.min(...Vector3.toArray(BoundingBox.lengths(boundingBox)));\n }\n\n private renderConfiguration(): CameraRenderOptions {\n return this.animationConfiguration != null\n ? { animation: { milliseconds: this.animationConfiguration.durationMs } }\n : {};\n }\n}\n","export class KeyBinding {\n private bindings: string[];\n\n public constructor(...bindings: string[]) {\n this.bindings = bindings.map((binding) => binding.toLowerCase());\n }\n\n public matches(keys: Record<string, boolean>): boolean {\n return (\n this.bindings.length > 0 &&\n this.bindings.every((binding) => this.bindingMatches(keys, binding))\n );\n }\n\n private bindingMatches(\n keys: Record<string, boolean>,\n binding: string,\n ): boolean {\n const negated = binding.includes('!');\n const key = binding.replace('!', '');\n\n return negated ? !keys[key] : keys[key];\n }\n}\n","import { Disposable } from '@vertexvis/utils';\n\nimport { KeyBinding } from '../keyBinding';\nimport {\n ViewerTeleportMode,\n ViewerWalkModeConfiguration,\n ViewerWalkModeOperation,\n WalkModeModel,\n} from './model';\n\nexport class WalkModeController {\n private excludeTagNames: Array<string> = [\n 'VERTEX-SCENE-TREE',\n 'VERTEX-SCENE-TREE-SEARCH',\n 'VERTEX-VIEWER-PIN-TOOL',\n 'INPUT',\n 'TEXTAREA',\n ];\n\n private excludePredicates: Array<(el: Element) => boolean> = [];\n\n public constructor(private model: WalkModeModel) {\n this.updateModelExclusions();\n }\n\n /**\n * @internal\n */\n public updateModel(model: WalkModeModel): void {\n this.model = model;\n }\n\n /**\n * Sets whether downstream walk mode interaction handlers are enabled.\n * Setting this value to `false` will remove all event listeners for\n * the interactions, and setting this value to `true` will add or\n * re-add the event listeners.\n */\n public setEnabled(enabled: boolean): void {\n this.model.setEnabled(enabled);\n }\n\n /**\n * Sets the `ViewerTeleportMode` to be used with a `<vertex-viewer-teleport-tool>`.\n */\n public setTeleportMode(mode?: ViewerTeleportMode): void {\n this.model.setTeleportMode(mode);\n }\n\n /**\n * Updates the configuration for downstream walk mode interaction handlers.\n *\n * `teleportHeightPercentage` - percentage used for fine-tuning the distance to offset\n * the camera from a surface when performing a `teleport-and-align`. This percentage is\n * used alongside the shortest side of the visible bounding box to determine how far to\n * place the camera from the surface that has been hit, with a larger percentage placing\n * the camera further from the surface and vice-versa. Defaults to 11.75%.\n *\n * `teleportDistancePercentage` - percentage used for fine-tuning the distance moved per\n * click with the `teleport-toward` mode. This percentage is used alongside the longest\n * side of the visible bounding box to determine how far to move the camera's position\n * with each click, with a larger percentage moving the camera further and vice-versa.\n * Defaults to 2%.\n *\n * `teleportCollisionDistance` - distance used alongside the `teleportCollisionPercentage`\n * to determine whether a click with the `teleport-toward` mode would cause a \"collision\",\n * or would pass through the point clicked. If such a collision would occur, the camera is\n * instead placed this distance back from the point clicked once, then allowed to pass\n * through the point on subsequent clicks. Note that this will not apply if clicks occur\n * in quick succession without setting the `depthBuffers` property on the `<vertex-viewer>`\n * to `all` frames. Defaults to `1000`.\n *\n * `keyboardWalkSpeed` - speed to move the camera when performing keyboard-based\n * walk interactions. A larger number here will result in a faster walk speed through\n * the model and vice-versa. Defaults to `5`.\n *\n * `keyboardPivotDegrees` - number of degrees to move the camera when performing\n * keyboard-based pivot interactions. Defaults to `1`.\n *\n * `keyboardRepeatIntervalMs` - number of milliseconds to repeat keyboard-based interactions.\n * this value is multiplicative with the `keyboardWalkSpeed` and `keyboardPivotDegrees`, and\n * lower numbers will result in faster movement and vice-versa. Defaults to `25`.\n *\n */\n public updateConfiguration(\n configuration: Partial<ViewerWalkModeConfiguration>,\n ): void {\n const existing = this.model.getConfiguration();\n\n this.model.setConfiguration({\n ...existing,\n ...configuration,\n });\n }\n\n /**\n * Adds a custom keybinding for a specific walk operation. This will append to the\n * existing set of keybindings to allow for multiple keybindings for a specific\n * operation. To replace the defaults, see `replaceKeyBinding`.\n */\n public addKeyBinding(\n operation: ViewerWalkModeOperation,\n ...keys: string[]\n ): void {\n this.model.addKeyBinding(operation, new KeyBinding(...keys));\n }\n\n /**\n * Adds a custom keybinding for a specific walk operation. This will replace any\n * existing keybindings to allow for overriding the default behavior.\n *\n * @example\n * ```\n * const walkModeTool = document.querySelector('vertex-viewer-walk-mode-tool');\n *\n * // Remove keybinding for the `PIVOT_UP` operation\n * walkModeTool.controller.replaceKeyBinding('PIVOT_UP');\n *\n * // Replace keybinding for `WALK_FORWARD` with `ArrowUp` instead of `w`\n * walkModeTool.controller.replaceKeyBinding('WALK_FORWARD', 'ArrowUp');\n * ```\n */\n public replaceKeyBinding(\n operation: ViewerWalkModeOperation,\n ...keys: string[]\n ): void {\n this.model.replaceKeyBinding(operation, new KeyBinding(...keys));\n }\n\n /**\n * Adds an exclusion for specific elements when responding to keyboard\n * events. This is useful when there are other elements on screen that\n * require keyboard interaction and the walk mode handlers should not\n * respond to the keyboard events. Can be either a element's `tagName`\n * or a predicate. Returns a `Disposable` that can be used to remove the\n * exclusion.\n *\n * Default `tagName` exclusions:\n * 'VERTEX-SCENE-TREE'\n * 'VERTEX-SCENE-TREE-SEARCH'\n * 'VERTEX-VIEWER-PIN-TOOL'\n * 'INPUT'\n * 'TEXTAREA'\n */\n public excludeElement(predicate: (el: Element) => boolean): Disposable;\n public excludeElement(tagName: string): Disposable;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public excludeElement(...args: any[]): Disposable {\n if (typeof args[0] === 'string') {\n this.excludeTagNames = [...this.excludeTagNames, args[0]];\n\n this.updateModelExclusions();\n\n return {\n dispose: () => {\n this.excludeTagNames = this.excludeTagNames.filter(\n (tn) => tn !== args[0],\n );\n },\n };\n } else {\n this.excludePredicates = [...this.excludePredicates, args[0]];\n\n this.updateModelExclusions();\n\n return {\n dispose: () => {\n this.excludePredicates = this.excludePredicates.filter(\n (tn) => tn !== args[0],\n );\n },\n };\n }\n }\n\n private updateModelExclusions(): void {\n this.model.setExcludedPredicate(\n (el) =>\n this.excludeTagNames.some((tn) => tn === el.tagName) ||\n this.excludePredicates.some((p) => p(el)),\n );\n }\n}\n","import { Disposable, EventDispatcher, Listener } from '@vertexvis/utils';\n\nimport { KeyBinding } from '../keyBinding';\n\nexport interface ViewerWalkModeConfiguration {\n teleportHeightPercentage: number;\n teleportDistancePercentage: number;\n teleportCollisionDistance: number;\n keyboardWalkSpeed: number;\n keyboardPivotDegrees: number;\n keyboardRepeatIntervalMs: number;\n}\n\nexport type ViewerTeleportMode =\n 'teleport' | 'teleport-and-align' | 'teleport-toward';\n\nexport enum ViewerWalkModeOperation {\n MOVE_DOWN = 'MOVE_DOWN',\n MOVE_UP = 'MOVE_UP',\n PIVOT_DOWN = 'PIVOT_DOWN',\n PIVOT_LEFT = 'PIVOT_LEFT',\n PIVOT_RIGHT = 'PIVOT_RIGHT',\n PIVOT_UP = 'PIVOT_UP',\n WALK_BACKWARD = 'WALK_BACKWARD',\n WALK_FORWARD = 'WALK_FORWARD',\n WALK_LEFT = 'WALK_LEFT',\n WALK_RIGHT = 'WALK_RIGHT',\n}\n\nexport type ViewerWalkModeKeyBindings = Record<\n ViewerWalkModeOperation,\n KeyBinding[]\n>;\n\nexport class WalkModeModel {\n private keyBindings: ViewerWalkModeKeyBindings = {\n [ViewerWalkModeOperation.MOVE_DOWN]: [\n new KeyBinding('PageDown', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.MOVE_UP]: [\n new KeyBinding('PageUp', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.PIVOT_DOWN]: [\n new KeyBinding('ArrowDown', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.PIVOT_LEFT]: [\n new KeyBinding('ArrowLeft', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.PIVOT_RIGHT]: [\n new KeyBinding('ArrowRight', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.PIVOT_UP]: [\n new KeyBinding('ArrowUp', '!Shift', '!Alt'),\n ],\n [ViewerWalkModeOperation.WALK_BACKWARD]: [new KeyBinding('s')],\n [ViewerWalkModeOperation.WALK_FORWARD]: [new KeyBinding('w')],\n [ViewerWalkModeOperation.WALK_LEFT]: [new KeyBinding('a')],\n [ViewerWalkModeOperation.WALK_RIGHT]: [new KeyBinding('d')],\n };\n\n private configuration: ViewerWalkModeConfiguration = {\n teleportHeightPercentage: 11.75,\n teleportDistancePercentage: 2,\n teleportCollisionDistance: 1000,\n keyboardWalkSpeed: 5,\n keyboardPivotDegrees: 1,\n keyboardRepeatIntervalMs: 25,\n };\n\n private excludedPredicate?: (el: Element) => boolean;\n\n private enabled = true;\n private teleportMode?: ViewerTeleportMode;\n\n private enabledChanged: EventDispatcher<boolean> = new EventDispatcher();\n\n private teleportModeChanged: EventDispatcher<ViewerTeleportMode | undefined> =\n new EventDispatcher<ViewerTeleportMode | undefined>();\n\n private configurationChanged: EventDispatcher<ViewerWalkModeConfiguration> =\n new EventDispatcher<ViewerWalkModeConfiguration>();\n\n private keyBindingsChanged: EventDispatcher<ViewerWalkModeKeyBindings> =\n new EventDispatcher<ViewerWalkModeKeyBindings>();\n\n public setEnabled(enabled: boolean): void {\n this.enabled = enabled;\n this.enabledChanged.emit(enabled);\n }\n\n public setTeleportMode(mode?: ViewerTeleportMode): void {\n this.teleportMode = mode;\n this.teleportModeChanged.emit(mode);\n }\n\n public setConfiguration(configuration: ViewerWalkModeConfiguration): void {\n this.configuration = configuration;\n this.configurationChanged.emit(configuration);\n }\n\n public addKeyBinding(\n operation: ViewerWalkModeOperation,\n keyBinding: KeyBinding,\n ): void {\n this.keyBindings[operation] = [...this.keyBindings[operation], keyBinding];\n this.keyBindingsChanged.emit(this.keyBindings);\n }\n\n public replaceKeyBinding(\n operation: ViewerWalkModeOperation,\n keyBinding: KeyBinding,\n ): void {\n this.keyBindings[operation] = [keyBinding];\n this.keyBindingsChanged.emit(this.keyBindings);\n }\n\n public setExcludedPredicate(predicate: (el: Element) => boolean): void {\n this.excludedPredicate = predicate;\n }\n\n public getEnabled(): boolean {\n return this.enabled;\n }\n\n public getTeleportMode(): ViewerTeleportMode | undefined {\n return this.teleportMode;\n }\n\n public getTeleportHeightPercentage(): number {\n return this.configuration.teleportHeightPercentage;\n }\n\n public getKeyboardWalkSpeed(): number {\n return this.configuration.keyboardWalkSpeed;\n }\n\n public getKeyboardPivotDegrees(): number {\n return this.configuration.keyboardPivotDegrees;\n }\n\n public getKeyboardRepeatInterval(): number {\n return this.configuration.keyboardRepeatIntervalMs;\n }\n\n public getConfiguration(): ViewerWalkModeConfiguration {\n return this.configuration;\n }\n\n public getKeyBindings(): ViewerWalkModeKeyBindings {\n return this.keyBindings;\n }\n\n public operationMatches(\n operation: ViewerWalkModeOperation,\n state: Record<string, boolean>,\n ): boolean {\n return this.keyBindings[operation].some((binding) =>\n binding.matches(state),\n );\n }\n\n public isElementExcluded(el: Element): boolean {\n return !!this.excludedPredicate?.(el);\n }\n\n public onEnabledChange(listener: Listener<boolean>): Disposable {\n return this.enabledChanged.on(listener);\n }\n\n public onTeleportModeChange(\n listener: Listener<ViewerTeleportMode | undefined>,\n ): Disposable {\n return this.teleportModeChanged.on(listener);\n }\n\n public onConfigurationChange(\n listener: Listener<ViewerWalkModeConfiguration>,\n ): Disposable {\n return this.configurationChanged.on(listener);\n }\n\n public onKeyBindingsChange(\n listener: Listener<ViewerWalkModeKeyBindings>,\n ): Disposable {\n return this.keyBindingsChanged.on(listener);\n }\n}\n",":host {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n","import {\n Component,\n Event,\n EventEmitter,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n h,\n Host,\n JSX,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { Disposable } from '@vertexvis/utils';\n\nimport { TeleportInteractionHandler } from '../../lib/teleportation/interactions';\nimport { WalkModeController } from '../../lib/walk-mode/controller';\nimport { ViewerTeleportMode, WalkModeModel } from '../../lib/walk-mode/model';\n\ninterface StateMap {\n shouldClearDepthBuffers?: boolean;\n}\n\n/**\n * The `<vertex-viewer-teleport-tool>` allows for click-based \"teleportation\"\n * around a model, which is particularly useful for walking through a model.\n * This tool is automatically included as part of the <vertex-viewer-walk-mode-tool>.\n */\n@Component({\n tag: 'vertex-viewer-teleport-tool',\n styleUrl: 'viewer-teleport-tool.css',\n shadow: true,\n})\nexport class ViewerTeleportTool {\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 type of teleportation to perform when clicking.\n *\n * `teleport` - the camera's `position` is moved to the location of the hit result\n * constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `teleport-and-align` - the camera's `position`, `lookAt`, and `up` vectors are updated\n * to align to the plane represented by the hit result's position and normal.\n *\n * `teleport-toward` - the camera's `position` is moved a fixed distance toward the location of the\n * hit result constrained by the plane represented by the camera's current `position` and `up`\n * vectors.\n *\n * `undefined` - no teleportation will occur when clicking.\n *\n * Defaults to `undefined`.\n */\n @Prop({ mutable: true })\n public mode?: ViewerTeleportMode;\n\n /**\n * Indicates whether animations will be used when performing camera\n * operations. Defaults to `false`.\n */\n @Prop()\n public animationsDisabled = false;\n\n /**\n * The duration of animations, in milliseconds. Defaults to `500`.\n */\n @Prop()\n public animationMs?: number = 500;\n\n @Prop({ mutable: true })\n public controller?: WalkModeController;\n\n @Prop({ mutable: true })\n public model: WalkModeModel = new WalkModeModel();\n\n /**\n * Event emitted when the `WalkModeController` associated with this tool changes.\n */\n @Event()\n public controllerChanged!: EventEmitter<WalkModeController>;\n\n private interactionHandlerDisposable?: Disposable;\n private interactionHandler?: TeleportInteractionHandler;\n\n private stateMap: StateMap = {};\n\n /**\n * @ignore\n */\n protected componentWillLoad(): void {\n this.setupController();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n protected connectedCallback(): void {\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n protected disconnectedCallback(): void {\n this.clearInteractionHandler();\n this.resetDepthBuffers();\n }\n\n /**\n * @ignore\n */\n @Watch('mode')\n protected handleModeChange(): void {\n this.controller?.setTeleportMode(this.mode);\n\n if (this.mode != null) {\n this.setDepthBuffers();\n } else {\n this.resetDepthBuffers();\n }\n }\n\n /**\n * @ignore\n */\n @Watch('viewer')\n protected handleViewerChanged(): void {\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n this.setDepthBuffers();\n }\n\n /**\n * @ignore\n */\n @Watch('animationMs')\n protected handleAnimationMsChanged(): void {\n if (this.animationMs != null) {\n this.interactionHandler?.setAnimations({ durationMs: this.animationMs });\n }\n }\n\n /**\n * @ignore\n */\n @Watch('animationsDisabled')\n protected handleAnimationsDisabledChanged(): void {\n if (this.animationsDisabled) {\n this.interactionHandler?.setAnimations(undefined);\n } else if (this.animationMs != null) {\n this.interactionHandler?.setAnimations({ durationMs: this.animationMs });\n }\n }\n\n /**\n * @ignore\n */\n @Watch('controller')\n protected handleControllerChanged(): void {\n this.setupInteractionHandler();\n this.setupController();\n this.controllerChanged.emit(this.controller);\n }\n\n @Watch('model')\n protected handleModelChanged(): void {\n this.setupController();\n this.clearInteractionHandler();\n this.setupInteractionHandler();\n }\n\n protected render(): JSX.Element {\n return <Host></Host>;\n }\n\n private setupController(): void {\n if (this.controller == null) {\n this.controller = new WalkModeController(this.model);\n this.controller.setTeleportMode(this.mode);\n this.controllerChanged.emit(this.controller);\n } else {\n this.controller.setTeleportMode(this.mode);\n this.controller.updateModel(this.model);\n }\n }\n\n private setDepthBuffers(): void {\n if (\n this.mode != null &&\n this.viewer != null &&\n this.viewer.depthBuffers == null\n ) {\n this.stateMap.shouldClearDepthBuffers = true;\n this.viewer.depthBuffers = 'final';\n }\n }\n\n private resetDepthBuffers(): void {\n if (this.stateMap.shouldClearDepthBuffers && this.viewer != null) {\n this.viewer.depthBuffers = undefined;\n this.stateMap.shouldClearDepthBuffers = undefined;\n }\n }\n\n private clearInteractionHandler(): void {\n this.interactionHandlerDisposable?.dispose();\n this.interactionHandlerDisposable = undefined;\n this.interactionHandler?.dispose();\n this.interactionHandler = undefined;\n }\n\n private async setupInteractionHandler(): Promise<void> {\n if (this.interactionHandler == null) {\n this.interactionHandler = new TeleportInteractionHandler(\n this.model,\n !this.animationsDisabled && this.animationMs != null\n ? { durationMs: this.animationMs }\n : undefined,\n );\n\n this.interactionHandlerDisposable =\n await this.viewer?.registerInteractionHandler(this.interactionHandler);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{v as t}from"./p-CZZALKHT.js";function i(i,n){return{type:"minimum-distance",point1:i,point2:n,distance:t.distance(i,n)}}export{i as m};
5
- //# sourceMappingURL=p-mpsCUvSn.js.map
4
+ import{v as t}from"./p-2UsvOTHJ.js";function i(i,n){return{type:"minimum-distance",point1:i,point2:n,distance:t.distance(i,n)}}export{i as m};
5
+ //# sourceMappingURL=p-_qi2VkC2.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t as n,p as t,H as s,d as e,h as o,e as i}from"./p-Bb32XUUS.js";import{v as a,q as h,m as r,h as d}from"./p-CZZALKHT.js";import{o as l}from"./p-CDM7zNn0.js";const c=()=>`.sc-vertex-viewer-dom-group-h{display:block;transform-style:preserve-3d}`;const u=t(class n extends s{constructor(n){super();if(n!==false){this.__registerHost()}this.propertyChange=e(this,"propertyChange");this.position=a.origin();this.positionJson="";this.quaternion=h.create();this.quaternionJson="";this.scale=a.create(1,1,1);this.scaleJson="";this.matrix=r.makeIdentity()}handlePositionChange(){this.syncMatrix()}handlePositionJsonChanged(){this.syncPosition()}handleRotationChanged(){this.syncQuaternionWithRotation()}handleRotationJsonChanged(){this.syncRotation()}handleQuaternionChange(){this.syncMatrix()}handleQuaternionJsonChanged(){this.syncQuaternion()}handleScaleChange(){this.syncMatrix()}handleScaleJsonChanged(){this.syncScale()}handleMatrixChanged(n,t){if(!l.isEqual(n,t)){this.propertyChange.emit()}}componentWillLoad(){this.syncProperties()}componentShouldUpdate(){return false}syncProperties(){this.syncPosition();this.syncRotation();this.syncQuaternion();this.syncScale();this.syncMatrix()}syncPosition(){this.position=this.positionJson.length>0?this.parseJson("positionJson",this.positionJson,a.fromJson):this.position}syncRotation(){this.rotation=this.rotationJson!=null&&this.rotationJson.length>0?this.parseJson("rotationJson",this.rotationJson,d.fromJson):this.rotation;this.syncQuaternionWithRotation()}syncQuaternionWithRotation(){this.quaternion=this.rotation!=null?h.fromEuler(this.rotation):this.quaternion}syncQuaternion(){this.quaternion=this.quaternionJson.length>0?this.parseJson("quaternionJson",this.quaternionJson,h.fromJson):this.quaternion}syncScale(){this.scale=this.scaleJson.length>0?this.parseJson("scaleJson",this.scaleJson,a.fromJson):this.scale}syncMatrix(){this.matrix=r.makeTRS(this.position,this.quaternion,this.scale)}parseJson(n,t,s){try{return s(t)}catch(t){console.warn(`Could not parse \`${n}\`. Invalid JSON.`);throw t}}render(){return o(i,{key:"37c070b2d355a3c5e37ee8e3a7a457dc51976822"},o("slot",{key:"0af1478c04d2c4b88f4ded8fa18897970f9cd125"}))}static get watchers(){return{position:[{handlePositionChange:0}],positionJson:[{handlePositionJsonChanged:0}],rotation:[{handleRotationChanged:0}],rotationJson:[{handleRotationJsonChanged:0}],quaternion:[{handleQuaternionChange:0}],quaternionJson:[{handleQuaternionJsonChanged:0}],scale:[{handleScaleChange:0}],scaleJson:[{handleScaleJsonChanged:0}],matrix:[{handleMatrixChanged:0}]}}static get style(){return c()}},[262,"vertex-viewer-dom-group",{position:[1040],positionJson:[1,"position"],rotation:[1040],rotationJson:[1,"rotation"],quaternion:[1040],quaternionJson:[1,"quaternion"],scale:[1040],scaleJson:[1,"scale"],matrix:[1040]},undefined,{position:[{handlePositionChange:0}],positionJson:[{handlePositionJsonChanged:0}],rotation:[{handleRotationChanged:0}],rotationJson:[{handleRotationJsonChanged:0}],quaternion:[{handleQuaternionChange:0}],quaternionJson:[{handleQuaternionJsonChanged:0}],scale:[{handleScaleChange:0}],scaleJson:[{handleScaleJsonChanged:0}],matrix:[{handleMatrixChanged:0}]}]);function g(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-dom-group"];t.forEach((t=>{switch(t){case"vertex-viewer-dom-group":if(!customElements.get(n(t))){customElements.define(n(t),u)}break}}))}g();export{u as V,g as d};
5
- //# sourceMappingURL=p-CNprIkKd.js.map
4
+ import{t as n,p as t,H as s,d as e,h as o,e as i}from"./p-Bb32XUUS.js";import{v as a,q as h,m as r,h as d}from"./p-2UsvOTHJ.js";import{o as l}from"./p-CDM7zNn0.js";const c=()=>`.sc-vertex-viewer-dom-group-h{display:block;transform-style:preserve-3d}`;const u=t(class n extends s{constructor(n){super();if(n!==false){this.__registerHost()}this.propertyChange=e(this,"propertyChange");this.position=a.origin();this.positionJson="";this.quaternion=h.create();this.quaternionJson="";this.scale=a.create(1,1,1);this.scaleJson="";this.matrix=r.makeIdentity()}handlePositionChange(){this.syncMatrix()}handlePositionJsonChanged(){this.syncPosition()}handleRotationChanged(){this.syncQuaternionWithRotation()}handleRotationJsonChanged(){this.syncRotation()}handleQuaternionChange(){this.syncMatrix()}handleQuaternionJsonChanged(){this.syncQuaternion()}handleScaleChange(){this.syncMatrix()}handleScaleJsonChanged(){this.syncScale()}handleMatrixChanged(n,t){if(!l.isEqual(n,t)){this.propertyChange.emit()}}componentWillLoad(){this.syncProperties()}componentShouldUpdate(){return false}syncProperties(){this.syncPosition();this.syncRotation();this.syncQuaternion();this.syncScale();this.syncMatrix()}syncPosition(){this.position=this.positionJson.length>0?this.parseJson("positionJson",this.positionJson,a.fromJson):this.position}syncRotation(){this.rotation=this.rotationJson!=null&&this.rotationJson.length>0?this.parseJson("rotationJson",this.rotationJson,d.fromJson):this.rotation;this.syncQuaternionWithRotation()}syncQuaternionWithRotation(){this.quaternion=this.rotation!=null?h.fromEuler(this.rotation):this.quaternion}syncQuaternion(){this.quaternion=this.quaternionJson.length>0?this.parseJson("quaternionJson",this.quaternionJson,h.fromJson):this.quaternion}syncScale(){this.scale=this.scaleJson.length>0?this.parseJson("scaleJson",this.scaleJson,a.fromJson):this.scale}syncMatrix(){this.matrix=r.makeTRS(this.position,this.quaternion,this.scale)}parseJson(n,t,s){try{return s(t)}catch(t){console.warn(`Could not parse \`${n}\`. Invalid JSON.`);throw t}}render(){return o(i,{key:"37c070b2d355a3c5e37ee8e3a7a457dc51976822"},o("slot",{key:"0af1478c04d2c4b88f4ded8fa18897970f9cd125"}))}static get watchers(){return{position:[{handlePositionChange:0}],positionJson:[{handlePositionJsonChanged:0}],rotation:[{handleRotationChanged:0}],rotationJson:[{handleRotationJsonChanged:0}],quaternion:[{handleQuaternionChange:0}],quaternionJson:[{handleQuaternionJsonChanged:0}],scale:[{handleScaleChange:0}],scaleJson:[{handleScaleJsonChanged:0}],matrix:[{handleMatrixChanged:0}]}}static get style(){return c()}},[262,"vertex-viewer-dom-group",{position:[1040],positionJson:[1,"position"],rotation:[1040],rotationJson:[1,"rotation"],quaternion:[1040],quaternionJson:[1,"quaternion"],scale:[1040],scaleJson:[1,"scale"],matrix:[1040]},undefined,{position:[{handlePositionChange:0}],positionJson:[{handlePositionJsonChanged:0}],rotation:[{handleRotationChanged:0}],rotationJson:[{handleRotationJsonChanged:0}],quaternion:[{handleQuaternionChange:0}],quaternionJson:[{handleQuaternionJsonChanged:0}],scale:[{handleScaleChange:0}],scaleJson:[{handleScaleJsonChanged:0}],matrix:[{handleMatrixChanged:0}]}]);function g(){if(typeof customElements==="undefined"){return}const t=["vertex-viewer-dom-group"];t.forEach((t=>{switch(t){case"vertex-viewer-dom-group":if(!customElements.get(n(t))){customElements.define(n(t),u)}break}}))}g();export{u as V,g as d};
5
+ //# sourceMappingURL=p-rDr0x5Z7.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{S as o,d as s}from"./p-Y8W_BXUk.js";const t=o;const p=s;export{t as VertexSceneTreeSearch,p as defineCustomElement};
4
+ import{S as o,d as s}from"./p-C86HMDzi.js";const t=o;const p=s;export{t as VertexSceneTreeSearch,p as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-scene-tree-search.js.map
@@ -1,5 +1,5 @@
1
1
  /*!
2
2
  * Copyright (c) 2026 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import{t as e,p as i,H as t,d as s,h as n,e as o}from"./p-Bb32XUUS.js";import{d as l}from"./p-CPk-nchx.js";import"./p-DjrtwKcK.js";import{b as d}from"./p-DC86ZXai.js";import{d as r}from"./p-Bkm6H5uq.js";const a=()=>`button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{display:flex;align-items:center;box-sizing:border-box;--scene-tree-cell-background-hover:var(--blue-200);--scene-tree-cell-background-selected:var(--blue-300);--scene-tree-cell-text-positioning:left;--scene-tree-cell-padding:0.25rem 0;font-size:var(--scene-tree-default-font-size, unset);font-family:var(--scene-tree-default-font-family, unset);color:var(--scene-tree-default-font-color, #444444)}:host([is-hovered]){background:var(--scene-tree-cell-background-hover)}:host([is-selected]){background:var(--scene-tree-cell-background-selected)}.wrapper{display:flex;align-items:center;box-sizing:border-box;width:100%;height:100%;padding:var(--scene-tree-cell-padding)}.content{width:100%;text-align:var(--scene-tree-cell-text-positioning);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.column-spacer{width:var(--scene-tree-table-column-gap)}.expand-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}:host([is-leaf]) .expand-btn,:host([is-end-item]) .expand-btn{visibility:hidden;cursor:default}.no-shrink{flex-shrink:0}.end-item-btn{cursor:default;display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}:host(:not([is-end-item])) .end-item-btn{visibility:hidden;cursor:default}.end-item-icon{width:14px;height:14px;fill:var(--scene-tree-secondary-font-color, var(--neutral-600))}.visibility-btn,.isolate-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.icon{width:14px;height:14px;fill:var(--scene-tree-default-font-color, currentColor)}`;const h=i(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.expandToggled=s(this,"expandToggled");this.visibilityToggled=s(this,"visibilityToggled");this.selectionToggled=s(this,"selectionToggled");this.isolatePressed=s(this,"isolatePressed");this.cellLoaded=s(this,"cellLoaded");this.placeholder="--";this.alwaysShowIcons=false;this.hovered=false;this.displayValue=()=>{const e=this.value==null||this.value.trim()===""?this.placeholder:this.value;return e};this.handleCellPointerEnter=()=>{var e,i,t;(e=this.hoverController)===null||e===void 0?void 0:e.setHovered((t=(i=this.node)===null||i===void 0?void 0:i.id)===null||t===void 0?void 0:t.hex)};this.handleCellPointerLeave=()=>{var e;(e=this.hoverController)===null||e===void 0?void 0:e.setHovered(undefined)};this.handleCellPointerUp=e=>{if(!this.isScrolling&&this.node!=null&&this.tree!=null&&this.longPressTimer!=null){if(this.selectionHandler!=null){this.selectionHandler(e,this.node,this.tree)}else{this.performDefaultSelectionOperation(e)}this.selectionToggled.emit({node:this.node,originalEvent:e})}this.clearLongPressTimer()};this.handleCellPointerDown=e=>{this.restartLongPressTimer()};this.createActionPointerUpHandler=e=>i=>{i.preventDefault();i.stopPropagation();d(this.hostEl);e(i)};this.toggleExpansion=async e=>{if(this.tree!=null&&this.node!=null){if(this.expansionHandler!=null){this.expansionHandler(e,this.node,this.tree)}else{await this.performDefaultExpansionOperation(this.node,this.tree)}this.expandToggled.emit({node:this.node,originalEvent:e})}};this.toggleVisibility=async e=>{if(this.tree!=null&&this.node!=null){if(this.visibilityHandler!=null){this.visibilityHandler(e,this.node,this.tree)}else{await this.performDefaultVisibilityOperation(this.node,this.tree)}this.visibilityToggled.emit({node:this.node,originalEvent:e})}};this.isolate=async e=>{if(this.tree!=null&&this.node!=null){if(this.isolateHandler!=null){this.isolateHandler(e,this.node,this.tree)}else{await this.performDefaultIsolateOperation(this.node,this.tree)}this.isolatePressed.emit({node:this.node,originalEvent:e})}};this.performDefaultSelectionOperation=e=>{var i,t,s,n,o,l;if(!e.defaultPrevented&&e.button===0){if((e.ctrlKey||e.metaKey)&&((i=this.node)===null||i===void 0?void 0:i.selected)){(t=this.tree)===null||t===void 0?void 0:t.deselectItem(this.node)}else if((s=this.node)===null||s===void 0?void 0:s.selected){(n=this.tree)===null||n===void 0?void 0:n.selectItem(this.node,{recurseParent:true})}else if(!((o=this.node)===null||o===void 0?void 0:o.selected)){(l=this.tree)===null||l===void 0?void 0:l.selectItem(this.node,{append:e.ctrlKey||e.metaKey,range:e.shiftKey})}}};this.performDefaultVisibilityOperation=async(e,i)=>{await i.toggleItemVisibility(e)};this.performDefaultIsolateOperation=async(e,i)=>{await i.isolateItem(e)};this.performDefaultExpansionOperation=async(e,i)=>{await i.toggleExpandItem(e)}}componentDidLoad(){var e;this.hoverListener=(e=this.hoverController)===null||e===void 0?void 0:e.stateChanged((e=>{var i,t;this.hovered=e===((t=(i=this.node)===null||i===void 0?void 0:i.id)===null||t===void 0?void 0:t.hex)}));this.cellLoaded.emit();this.clearLongPressTimer()}disconnectedCallback(){var e;(e=this.hoverListener)===null||e===void 0?void 0:e.dispose();this.clearLongPressTimer()}componentWillRender(){var e,i,t,s,n,o;this.toggleAttribute("is-hovered",this.hovered);this.toggleAttribute("is-hidden",!((e=this.node)===null||e===void 0?void 0:e.visible));this.toggleAttribute("is-selected",!!((i=this.node)===null||i===void 0?void 0:i.selected));this.toggleAttribute("is-partial",!!((t=this.node)===null||t===void 0?void 0:t.partiallyVisible));this.toggleAttribute("is-leaf",!!((s=this.node)===null||s===void 0?void 0:s.isLeaf));this.toggleAttribute("is-end-item",!!((n=this.node)===null||n===void 0?void 0:n.endItem));this.toggleAttribute("is-filter-hit",!!((o=this.node)===null||o===void 0?void 0:o.filterHit))}render(){var e,i,t,s;const l=this.node==null?{visibility:"hidden"}:undefined;const d=this.getBackgroundColorStyle();const r=this.getEndItemIcon();const a=this.getExpansionIcon();const h=this.getIsolateIcon();const c=this.getVisibilityIcon();const v=this.expandToggle&&!r;const u=r&&!v;return n(o,{key:"703090cacf3d026e220ead0a051d70b186fa056e",onPointerEnter:this.handleCellPointerEnter,onPointerLeave:this.handleCellPointerLeave,onPointerUp:this.handleCellPointerUp,onPointerDown:this.handleCellPointerDown,style:{...l,"background-color":d}},n("div",{key:"25a45f3cebed75a1d0e469cce01e1cabec5450c4",class:"wrapper"},n("div",{key:"7ba2f3c1b9a5551287f6683f87de841f0717e87b",class:"no-shrink"},n("slot",{key:"04bd203d0e034aa4fce3a0b64d24718ab0ba50af",name:"left-gutter"})),v&&n("button",{key:"9dfa16123e24eeb90e208aa0d5936b9bacd9d8f4",class:"expand-btn no-shrink","data-testid":"expand-"+((e=this.node)===null||e===void 0?void 0:e.name),onPointerUp:this.createActionPointerUpHandler(this.toggleExpansion)},a&&n("vertex-viewer-icon",{key:"dd3c2a86b90d627b3234b76075dafef393418945",class:"icon",name:a,size:"sm"})),u&&n("button",{key:"d486186bcae525c9b520cc0cd07848389f9ffd87",class:"end-item-btn no-shrink","data-testid":"end-item-"+((i=this.node)===null||i===void 0?void 0:i.name)},r&&n("vertex-viewer-icon",{key:"70449bce2c41f6d07bd316a6f607b17c2484d4a0",class:"end-item-icon",name:r,size:"sm"})),n("div",{key:"a693f0db50d607f4f8c427f86ce99a6813b2d691",class:"content"},this.value!=null&&this.value.trim()!==""?n("slot",null,this.displayValue()):n("slot",{name:"placeholder"},this.placeholder)),this.isolateButton&&n("button",{key:"6d981678a7307f45e7f4636085676bd091187de4",class:"isolate-btn no-shrink","data-testid":"isolate-btn-"+((t=this.node)===null||t===void 0?void 0:t.name),onPointerUp:this.createActionPointerUpHandler(this.isolate)},h&&n("vertex-viewer-icon",{key:"9fee42c3d4a82445781fc99c31c5980778d94440",class:"icon",name:"locate",size:"sm"})),this.visibilityToggle&&n("button",{key:"ae999f4eadf1214f9583a503ccc49cfceee60e44",class:"visibility-btn no-shrink","data-testid":"visibility-btn-"+((s=this.node)===null||s===void 0?void 0:s.name),onPointerUp:this.createActionPointerUpHandler(this.toggleVisibility)},c&&n("vertex-viewer-icon",{key:"af24355ad0af2b8cb4fe66a5d25f9bf85796e460",class:"icon",name:c,size:"sm"})),n("div",{key:"1000b80cc334bc103563af29aea0a0629d3229c3",class:"no-shrink"},n("slot",{key:"788690a3c64964d744d8effc3898fefb19d1ae5a",name:"right-gutter"})),!this.visibilityToggle&&!this.isolateButton&&n("div",{key:"6012bc2d3b2fef8533597d92233db11b6b5982a1",class:"column-spacer"})))}toggleAttribute(e,i){if(i){this.hostEl.setAttribute(e,"")}else{this.hostEl.removeAttribute(e)}}clearLongPressTimer(){if(this.longPressTimer!=null){window.clearTimeout(this.longPressTimer)}this.longPressTimer=undefined}restartLongPressTimer(){this.clearLongPressTimer();this.longPressTimer=window.setTimeout((()=>{this.clearLongPressTimer()}),l.longPressThreshold)}getBackgroundColorStyle(){var e,i;const t=this.getCssVariableWithFallbacks(`--scene-tree-row-background-color-depth-${(e=this.node)===null||e===void 0?void 0:e.depth}`,"--scene-tree-row-background-color");const s=this.getCssVariableWithFallbacks("--scene-tree-selected-row-background-color","--scene-tree-cell-background-selected");const n=this.getCssVariableWithFallbacks("--scene-tree-hovered-row-background-color","--scene-tree-cell-background-hover");if(!!((i=this.node)===null||i===void 0?void 0:i.selected)){return s}else if(this.hovered){return n}return t}getCssVariableWithFallbacks(e,...i){const t=[...i].reverse();return[...t,e].reduce(((e,i)=>`var(${i}, ${e})`),"unset")}getIsolateIcon(){if(this.hovered||this.alwaysShowIcons){return"locate"}return undefined}getExpansionIcon(){var e,i,t;if(!((e=this.node)===null||e===void 0?void 0:e.isLeaf)&&!((i=this.node)===null||i===void 0?void 0:i.endItem)){return((t=this.node)===null||t===void 0?void 0:t.expanded)?"chevron-down":"chevron-right"}return undefined}getEndItemIcon(){var e,i,t;if(this.endItemIndicator&&((e=this.node)===null||e===void 0?void 0:e.endItem)&&(!((i=this.node)===null||i===void 0?void 0:i.isLeaf)||((t=this.node)===null||t===void 0?void 0:t.filterHit))){return"lock"}return undefined}getVisibilityIcon(){var e,i,t,s,n;if((this.hovered||this.alwaysShowIcons)&&!((e=this.node)===null||e===void 0?void 0:e.partiallyVisible)&&((i=this.node)===null||i===void 0?void 0:i.visible)){return"eye-open"}else if(!((t=this.node)===null||t===void 0?void 0:t.partiallyVisible)&&!((s=this.node)===null||s===void 0?void 0:s.visible)){return"eye-half"}else if((n=this.node)===null||n===void 0?void 0:n.partiallyVisible){return"eye-half-dotted"}return undefined}get hostEl(){return this}static get style(){return a()}},[257,"vertex-scene-tree-table-cell",{node:[16],tree:[16],value:[1],placeholder:[1],alwaysShowIcons:[4,"always-show-icons"],hovered:[1028],isScrolling:[4,"is-scrolling"],expandToggle:[4,"expand-toggle"],endItemIndicator:[4,"end-item-indicator"],visibilityToggle:[4,"visibility-toggle"],isolateButton:[4,"isolate-button"],selectionHandler:[16],visibilityHandler:[16],expansionHandler:[16],isolateHandler:[16],hoverController:[16]}]);function c(){if(typeof customElements==="undefined"){return}const i=["vertex-scene-tree-table-cell","vertex-viewer-icon"];i.forEach((i=>{switch(i){case"vertex-scene-tree-table-cell":if(!customElements.get(e(i))){customElements.define(e(i),h)}break;case"vertex-viewer-icon":if(!customElements.get(e(i))){r()}break}}))}c();const v=h;const u=c;export{v as VertexSceneTreeTableCell,u as defineCustomElement};
4
+ import{t as e,p as i,H as t,d as s,h as n,e as o}from"./p-Bb32XUUS.js";import{d as l}from"./p-CPk-nchx.js";import"./p-BjvjKoy7.js";import{b as d}from"./p-DC86ZXai.js";import{d as r}from"./p-Bkm6H5uq.js";const a=()=>`button{border:none;background:transparent;cursor:pointer;margin:0;padding:0}:host{display:flex;align-items:center;box-sizing:border-box;--scene-tree-cell-background-hover:var(--blue-200);--scene-tree-cell-background-selected:var(--blue-300);--scene-tree-cell-text-positioning:left;--scene-tree-cell-padding:0.25rem 0;font-size:var(--scene-tree-default-font-size, unset);font-family:var(--scene-tree-default-font-family, unset);color:var(--scene-tree-default-font-color, #444444)}:host([is-hovered]){background:var(--scene-tree-cell-background-hover)}:host([is-selected]){background:var(--scene-tree-cell-background-selected)}.wrapper{display:flex;align-items:center;box-sizing:border-box;width:100%;height:100%;padding:var(--scene-tree-cell-padding)}.content{width:100%;text-align:var(--scene-tree-cell-text-positioning);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.column-spacer{width:var(--scene-tree-table-column-gap)}.expand-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}:host([is-leaf]) .expand-btn,:host([is-end-item]) .expand-btn{visibility:hidden;cursor:default}.no-shrink{flex-shrink:0}.end-item-btn{cursor:default;display:flex;align-items:center;justify-content:center;min-width:24px;min-height:24px}:host(:not([is-end-item])) .end-item-btn{visibility:hidden;cursor:default}.end-item-icon{width:14px;height:14px;fill:var(--scene-tree-secondary-font-color, var(--neutral-600))}.visibility-btn,.isolate-btn{cursor:pointer;display:flex;align-items:center;justify-content:center;width:20px;height:20px}.icon{width:14px;height:14px;fill:var(--scene-tree-default-font-color, currentColor)}`;const h=i(class e extends t{constructor(e){super();if(e!==false){this.__registerHost()}this.__attachShadow();this.expandToggled=s(this,"expandToggled");this.visibilityToggled=s(this,"visibilityToggled");this.selectionToggled=s(this,"selectionToggled");this.isolatePressed=s(this,"isolatePressed");this.cellLoaded=s(this,"cellLoaded");this.placeholder="--";this.alwaysShowIcons=false;this.hovered=false;this.displayValue=()=>{const e=this.value==null||this.value.trim()===""?this.placeholder:this.value;return e};this.handleCellPointerEnter=()=>{var e,i,t;(e=this.hoverController)===null||e===void 0?void 0:e.setHovered((t=(i=this.node)===null||i===void 0?void 0:i.id)===null||t===void 0?void 0:t.hex)};this.handleCellPointerLeave=()=>{var e;(e=this.hoverController)===null||e===void 0?void 0:e.setHovered(undefined)};this.handleCellPointerUp=e=>{if(!this.isScrolling&&this.node!=null&&this.tree!=null&&this.longPressTimer!=null){if(this.selectionHandler!=null){this.selectionHandler(e,this.node,this.tree)}else{this.performDefaultSelectionOperation(e)}this.selectionToggled.emit({node:this.node,originalEvent:e})}this.clearLongPressTimer()};this.handleCellPointerDown=e=>{this.restartLongPressTimer()};this.createActionPointerUpHandler=e=>i=>{i.preventDefault();i.stopPropagation();d(this.hostEl);e(i)};this.toggleExpansion=async e=>{if(this.tree!=null&&this.node!=null){if(this.expansionHandler!=null){this.expansionHandler(e,this.node,this.tree)}else{await this.performDefaultExpansionOperation(this.node,this.tree)}this.expandToggled.emit({node:this.node,originalEvent:e})}};this.toggleVisibility=async e=>{if(this.tree!=null&&this.node!=null){if(this.visibilityHandler!=null){this.visibilityHandler(e,this.node,this.tree)}else{await this.performDefaultVisibilityOperation(this.node,this.tree)}this.visibilityToggled.emit({node:this.node,originalEvent:e})}};this.isolate=async e=>{if(this.tree!=null&&this.node!=null){if(this.isolateHandler!=null){this.isolateHandler(e,this.node,this.tree)}else{await this.performDefaultIsolateOperation(this.node,this.tree)}this.isolatePressed.emit({node:this.node,originalEvent:e})}};this.performDefaultSelectionOperation=e=>{var i,t,s,n,o,l;if(!e.defaultPrevented&&e.button===0){if((e.ctrlKey||e.metaKey)&&((i=this.node)===null||i===void 0?void 0:i.selected)){(t=this.tree)===null||t===void 0?void 0:t.deselectItem(this.node)}else if((s=this.node)===null||s===void 0?void 0:s.selected){(n=this.tree)===null||n===void 0?void 0:n.selectItem(this.node,{recurseParent:true})}else if(!((o=this.node)===null||o===void 0?void 0:o.selected)){(l=this.tree)===null||l===void 0?void 0:l.selectItem(this.node,{append:e.ctrlKey||e.metaKey,range:e.shiftKey})}}};this.performDefaultVisibilityOperation=async(e,i)=>{await i.toggleItemVisibility(e)};this.performDefaultIsolateOperation=async(e,i)=>{await i.isolateItem(e)};this.performDefaultExpansionOperation=async(e,i)=>{await i.toggleExpandItem(e)}}componentDidLoad(){var e;this.hoverListener=(e=this.hoverController)===null||e===void 0?void 0:e.stateChanged((e=>{var i,t;this.hovered=e===((t=(i=this.node)===null||i===void 0?void 0:i.id)===null||t===void 0?void 0:t.hex)}));this.cellLoaded.emit();this.clearLongPressTimer()}disconnectedCallback(){var e;(e=this.hoverListener)===null||e===void 0?void 0:e.dispose();this.clearLongPressTimer()}componentWillRender(){var e,i,t,s,n,o;this.toggleAttribute("is-hovered",this.hovered);this.toggleAttribute("is-hidden",!((e=this.node)===null||e===void 0?void 0:e.visible));this.toggleAttribute("is-selected",!!((i=this.node)===null||i===void 0?void 0:i.selected));this.toggleAttribute("is-partial",!!((t=this.node)===null||t===void 0?void 0:t.partiallyVisible));this.toggleAttribute("is-leaf",!!((s=this.node)===null||s===void 0?void 0:s.isLeaf));this.toggleAttribute("is-end-item",!!((n=this.node)===null||n===void 0?void 0:n.endItem));this.toggleAttribute("is-filter-hit",!!((o=this.node)===null||o===void 0?void 0:o.filterHit))}render(){var e,i,t,s;const l=this.node==null?{visibility:"hidden"}:undefined;const d=this.getBackgroundColorStyle();const r=this.getEndItemIcon();const a=this.getExpansionIcon();const h=this.getIsolateIcon();const c=this.getVisibilityIcon();const v=this.expandToggle&&!r;const u=r&&!v;return n(o,{key:"703090cacf3d026e220ead0a051d70b186fa056e",onPointerEnter:this.handleCellPointerEnter,onPointerLeave:this.handleCellPointerLeave,onPointerUp:this.handleCellPointerUp,onPointerDown:this.handleCellPointerDown,style:{...l,"background-color":d}},n("div",{key:"25a45f3cebed75a1d0e469cce01e1cabec5450c4",class:"wrapper"},n("div",{key:"7ba2f3c1b9a5551287f6683f87de841f0717e87b",class:"no-shrink"},n("slot",{key:"04bd203d0e034aa4fce3a0b64d24718ab0ba50af",name:"left-gutter"})),v&&n("button",{key:"2f06d2f206c5ddfac809ee19bc0f9ace1ab33fa7",class:"expand-btn no-shrink","data-testid":"expand-"+((e=this.node)===null||e===void 0?void 0:e.name),onPointerUp:this.createActionPointerUpHandler(this.toggleExpansion),"aria-label":"Cell expansion toggle"},a&&n("vertex-viewer-icon",{key:"01b15b48b36e4c1293618cde9a6ef57c17415e2d",class:"icon",name:a,size:"sm"})),u&&n("button",{key:"54eaff375458ed0d07d54231795406fdc97b07eb",class:"end-item-btn no-shrink","data-testid":"end-item-"+((i=this.node)===null||i===void 0?void 0:i.name),"aria-label":"End item"},r&&n("vertex-viewer-icon",{key:"a14f6e447bde1e8e862be0cfacb08b09ce96823e",class:"end-item-icon",name:r,size:"sm"})),n("div",{key:"33848352d332ff4b8f66c2a79752b00b0468d020",class:"content"},this.value!=null&&this.value.trim()!==""?n("slot",null,this.displayValue()):n("slot",{name:"placeholder"},this.placeholder)),this.isolateButton&&n("button",{key:"c9798418510785e27a6a245cc9196d196d520da1",class:"isolate-btn no-shrink","data-testid":"isolate-btn-"+((t=this.node)===null||t===void 0?void 0:t.name),onPointerUp:this.createActionPointerUpHandler(this.isolate),"aria-label":"Isolate"},h&&n("vertex-viewer-icon",{key:"4caa8e0c80da6af73afa35d8020d5037d5480f1d",class:"icon",name:"locate",size:"sm"})),this.visibilityToggle&&n("button",{key:"1005844156a635a7c4875513394628c417c9fe1f",class:"visibility-btn no-shrink","data-testid":"visibility-btn-"+((s=this.node)===null||s===void 0?void 0:s.name),onPointerUp:this.createActionPointerUpHandler(this.toggleVisibility),"aria-label":"Toggle visibility"},c&&n("vertex-viewer-icon",{key:"904615e1a27753d51dc19aaedd0914f190d0dc51",class:"icon",name:c,size:"sm"})),n("div",{key:"3d7f7703d059a44ad3dc8c94a5e505df547b94cb",class:"no-shrink"},n("slot",{key:"283a87e5c53eda72ddbf5e6fd1d7965fb4c4bc16",name:"right-gutter"})),!this.visibilityToggle&&!this.isolateButton&&n("div",{key:"170e79e98faa39d27eeb8a602627825cf99e9527",class:"column-spacer"})))}toggleAttribute(e,i){if(i){this.hostEl.setAttribute(e,"")}else{this.hostEl.removeAttribute(e)}}clearLongPressTimer(){if(this.longPressTimer!=null){window.clearTimeout(this.longPressTimer)}this.longPressTimer=undefined}restartLongPressTimer(){this.clearLongPressTimer();this.longPressTimer=window.setTimeout((()=>{this.clearLongPressTimer()}),l.longPressThreshold)}getBackgroundColorStyle(){var e,i;const t=this.getCssVariableWithFallbacks(`--scene-tree-row-background-color-depth-${(e=this.node)===null||e===void 0?void 0:e.depth}`,"--scene-tree-row-background-color");const s=this.getCssVariableWithFallbacks("--scene-tree-selected-row-background-color","--scene-tree-cell-background-selected");const n=this.getCssVariableWithFallbacks("--scene-tree-hovered-row-background-color","--scene-tree-cell-background-hover");if(!!((i=this.node)===null||i===void 0?void 0:i.selected)){return s}else if(this.hovered){return n}return t}getCssVariableWithFallbacks(e,...i){const t=[...i].reverse();return[...t,e].reduce(((e,i)=>`var(${i}, ${e})`),"unset")}getIsolateIcon(){if(this.hovered||this.alwaysShowIcons){return"locate"}return undefined}getExpansionIcon(){var e,i,t;if(!((e=this.node)===null||e===void 0?void 0:e.isLeaf)&&!((i=this.node)===null||i===void 0?void 0:i.endItem)){return((t=this.node)===null||t===void 0?void 0:t.expanded)?"chevron-down":"chevron-right"}return undefined}getEndItemIcon(){var e,i,t;if(this.endItemIndicator&&((e=this.node)===null||e===void 0?void 0:e.endItem)&&(!((i=this.node)===null||i===void 0?void 0:i.isLeaf)||((t=this.node)===null||t===void 0?void 0:t.filterHit))){return"lock"}return undefined}getVisibilityIcon(){var e,i,t,s,n;if((this.hovered||this.alwaysShowIcons)&&!((e=this.node)===null||e===void 0?void 0:e.partiallyVisible)&&((i=this.node)===null||i===void 0?void 0:i.visible)){return"eye-open"}else if(!((t=this.node)===null||t===void 0?void 0:t.partiallyVisible)&&!((s=this.node)===null||s===void 0?void 0:s.visible)){return"eye-half"}else if((n=this.node)===null||n===void 0?void 0:n.partiallyVisible){return"eye-half-dotted"}return undefined}get hostEl(){return this}static get style(){return a()}},[257,"vertex-scene-tree-table-cell",{node:[16],tree:[16],value:[1],placeholder:[1],alwaysShowIcons:[4,"always-show-icons"],hovered:[1028],isScrolling:[4,"is-scrolling"],expandToggle:[4,"expand-toggle"],endItemIndicator:[4,"end-item-indicator"],visibilityToggle:[4,"visibility-toggle"],isolateButton:[4,"isolate-button"],selectionHandler:[16],visibilityHandler:[16],expansionHandler:[16],isolateHandler:[16],hoverController:[16]}]);function c(){if(typeof customElements==="undefined"){return}const i=["vertex-scene-tree-table-cell","vertex-viewer-icon"];i.forEach((i=>{switch(i){case"vertex-scene-tree-table-cell":if(!customElements.get(e(i))){customElements.define(e(i),h)}break;case"vertex-viewer-icon":if(!customElements.get(e(i))){r()}break}}))}c();const v=h;const u=c;export{v as VertexSceneTreeTableCell,u as defineCustomElement};
5
5
  //# sourceMappingURL=vertex-scene-tree-table-cell.js.map