@vertexvis/viewer 0.12.0 → 0.13.0-canary.0

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 (225) hide show
  1. package/dist/cjs/{config-acd7cea9.js → config-90ee43d5.js} +1 -1
  2. package/dist/cjs/{cursors-399a9648.js → cursors-ad2fd395.js} +7 -0
  3. package/dist/cjs/{controller-8cbcdd8d.js → entities-aa59890e.js} +57 -22
  4. package/dist/cjs/{index-cc65325e.js → index-e100709a.js} +64 -3
  5. package/dist/cjs/index.cjs.js +21 -11
  6. package/dist/cjs/loader.cjs.js +2 -2
  7. package/dist/cjs/{model-18ef3363.js → mapper-f6e6cafe.js} +37 -191
  8. package/dist/cjs/model-4ec0c36e.js +134 -0
  9. package/dist/cjs/overlays-8a582edf.js +76 -0
  10. package/dist/cjs/results-bc325974.js +24 -0
  11. package/dist/cjs/{scene-ffee07ee.js → scene-f4040800.js} +1 -1
  12. package/dist/cjs/{stencil-bd453a38.js → stencil-a664cd10.js} +1 -1
  13. package/dist/cjs/{streamAttributes-9d6226ac.js → streamAttributes-d6236448.js} +87 -30
  14. package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +2 -2
  15. package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
  16. package/dist/cjs/vertex-scene-tree-table-column.cjs.entry.js +1 -1
  17. package/dist/cjs/vertex-scene-tree-table-header.cjs.entry.js +1 -1
  18. package/dist/cjs/vertex-scene-tree-table-resize-divider.cjs.entry.js +1 -1
  19. package/dist/cjs/vertex-scene-tree-toolbar-group.cjs.entry.js +1 -1
  20. package/dist/cjs/vertex-scene-tree.cjs.entry.js +3 -3
  21. package/dist/cjs/vertex-viewer-button_3.cjs.entry.js +1 -1
  22. package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js +1 -1
  23. package/dist/cjs/vertex-viewer-dom-element_3.cjs.entry.js +4 -4
  24. package/dist/cjs/vertex-viewer-icon.cjs.entry.js +1 -1
  25. package/dist/cjs/vertex-viewer-layer.cjs.entry.js +1 -1
  26. package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +1 -1
  27. package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +1 -1
  28. package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
  29. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +221 -75
  30. package/dist/cjs/{vertex-viewer-measurement-distance_2.cjs.entry.js → vertex-viewer-measurement-distance.cjs.entry.js} +30 -69
  31. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +170 -0
  32. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +163 -55
  33. package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +2 -2
  34. package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +33 -4
  35. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +4 -4
  36. package/dist/cjs/vertex-viewer.cjs.entry.js +58 -10
  37. package/dist/cjs/viewer.cjs.js +2 -2
  38. package/dist/cjs/{viewport-51aa05ab.js → viewport-8c39089f.js} +11 -0
  39. package/dist/collection/collection-manifest.json +1 -0
  40. package/dist/collection/components/viewer/viewer.js +2 -2
  41. package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +2 -2
  42. package/dist/collection/components/viewer-measurement-details/viewer-measurement-details-entry.js +14 -0
  43. package/dist/collection/components/viewer-measurement-details/viewer-measurement-details-results.js +22 -0
  44. package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.css +3 -10
  45. package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js +125 -188
  46. package/dist/collection/components/viewer-measurement-distance/interactions.js +3 -14
  47. package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +41 -1
  48. package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays-components.js +30 -0
  49. package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.css +51 -0
  50. package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +149 -0
  51. package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js +118 -26
  52. package/dist/collection/components/viewer-measurements/viewer-measurements.js +67 -2
  53. package/dist/collection/components/viewer-view-cube/viewer-view-cube.css +21 -3
  54. package/dist/collection/index.js +2 -2
  55. package/dist/collection/lib/cursors.js +7 -1
  56. package/dist/collection/lib/elementRectObserver.js +19 -0
  57. package/dist/collection/lib/interactions/interactionApi.js +53 -4
  58. package/dist/collection/lib/mappers/frameStreaming.js +2 -4
  59. package/dist/collection/lib/measurement/controller.js +21 -17
  60. package/dist/collection/lib/measurement/entities.js +34 -0
  61. package/dist/collection/lib/measurement/index.js +4 -2
  62. package/dist/collection/lib/measurement/interactions.js +74 -28
  63. package/dist/collection/lib/measurement/mapper.js +5 -5
  64. package/dist/collection/lib/measurement/model.js +24 -85
  65. package/dist/collection/lib/measurement/outcomes.js +2 -0
  66. package/dist/collection/lib/measurement/overlays.js +69 -0
  67. package/dist/collection/lib/measurement/results.js +17 -0
  68. package/dist/collection/lib/types/entities.js +5 -1
  69. package/dist/collection/lib/types/featureMap.js +14 -5
  70. package/dist/collection/lib/types/frame.js +3 -3
  71. package/dist/collection/lib/types/measurementUnits.js +7 -7
  72. package/dist/collection/lib/types/viewport.js +12 -1
  73. package/dist/collection/testing/eventually.js +30 -0
  74. package/dist/collection/testing/fixtures.js +11 -4
  75. package/dist/collection/testing/index.js +2 -1
  76. package/dist/custom-elements/index.d.ts +6 -0
  77. package/dist/custom-elements/index.js +851 -287
  78. package/dist/esm/{browser.esm-e6827921.js → browser.esm-59e914f6.js} +1 -1
  79. package/dist/esm/{bundle.esm-8f14ac60.js → bundle.esm-d899b2d5.js} +1 -1
  80. package/dist/esm/{config-a200c227.js → config-604c644e.js} +2 -2
  81. package/dist/esm/{cursors-5157d29d.js → cursors-a7ec4adb.js} +8 -2
  82. package/dist/esm/{dom-2d6a1e1e.js → dom-780d25be.js} +1 -1
  83. package/dist/esm/{controller-a756cf9c.js → entities-759d97cd.js} +52 -18
  84. package/dist/esm/{index-f0053642.js → index-10c1495a.js} +64 -3
  85. package/dist/esm/index.js +13 -11
  86. package/dist/esm/index.mjs +13 -11
  87. package/dist/esm/loader.js +2 -2
  88. package/dist/esm/loader.mjs +2 -2
  89. package/dist/esm/{model-f711a825.js → mapper-4b815e31.js} +37 -190
  90. package/dist/esm/{markup-e46623b3.js → markup-1d177b4a.js} +2 -2
  91. package/dist/esm/{measurement-702d6b8c.js → measurement-12cdbf5c.js} +2 -2
  92. package/dist/esm/model-e5a4f00f.js +132 -0
  93. package/dist/esm/overlays-dbe5d652.js +74 -0
  94. package/dist/esm/{png-decoder-59a0e9c2.js → png-decoder-3f1fa486.js} +1 -1
  95. package/dist/esm/results-994bdb50.js +22 -0
  96. package/dist/esm/{scene-16490983.js → scene-9ac8a484.js} +3 -3
  97. package/dist/esm/{stencil-7d04d41a.js → stencil-9bf7fb9e.js} +1 -1
  98. package/dist/esm/{streamAttributes-7aa486b2.js → streamAttributes-d623bb60.js} +77 -20
  99. package/dist/esm/{utils-8070900a.js → utils-01e4f587.js} +1 -1
  100. package/dist/esm/{utils-953a1619.js → utils-5e57bf24.js} +1 -1
  101. package/dist/esm/vertex-scene-tree-search_3.entry.js +3 -3
  102. package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
  103. package/dist/esm/vertex-scene-tree-table-column.entry.js +1 -1
  104. package/dist/esm/vertex-scene-tree-table-header.entry.js +1 -1
  105. package/dist/esm/vertex-scene-tree-table-resize-divider.entry.js +1 -1
  106. package/dist/esm/vertex-scene-tree-toolbar-group.entry.js +1 -1
  107. package/dist/esm/vertex-scene-tree.entry.js +5 -5
  108. package/dist/esm/vertex-viewer-button_3.entry.js +1 -1
  109. package/dist/esm/vertex-viewer-default-toolbar.entry.js +1 -1
  110. package/dist/esm/vertex-viewer-dom-element_3.entry.js +6 -6
  111. package/dist/esm/vertex-viewer-icon.entry.js +1 -1
  112. package/dist/esm/vertex-viewer-layer.entry.js +1 -1
  113. package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +4 -4
  114. package/dist/esm/vertex-viewer-markup-tool.entry.js +5 -5
  115. package/dist/esm/vertex-viewer-markup.entry.js +5 -5
  116. package/dist/esm/vertex-viewer-measurement-details.entry.js +221 -75
  117. package/dist/esm/{vertex-viewer-measurement-distance_2.entry.js → vertex-viewer-measurement-distance.entry.js} +35 -73
  118. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +165 -0
  119. package/dist/esm/vertex-viewer-measurement-precise.entry.js +160 -52
  120. package/dist/esm/vertex-viewer-measurement-tool.entry.js +6 -6
  121. package/dist/esm/vertex-viewer-measurements.entry.js +36 -7
  122. package/dist/esm/vertex-viewer-view-cube.entry.js +6 -6
  123. package/dist/esm/vertex-viewer.entry.js +61 -13
  124. package/dist/esm/viewer.js +2 -2
  125. package/dist/esm/{viewport-bb7c46d9.js → viewport-01c886ea.js} +12 -1
  126. package/dist/types/components/viewer-dom-renderer/viewer-dom-renderer.d.ts +1 -1
  127. package/dist/types/components/viewer-measurement-details/viewer-measurement-details-entry.d.ts +8 -0
  128. package/dist/types/components/viewer-measurement-details/viewer-measurement-details-results.d.ts +15 -0
  129. package/dist/types/components/viewer-measurement-details/viewer-measurement-details.d.ts +44 -42
  130. package/dist/types/components/viewer-measurement-distance/interactions.d.ts +23 -1
  131. package/dist/types/components/viewer-measurement-distance/viewer-measurement-distance.d.ts +8 -0
  132. package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays-components.d.ts +10 -0
  133. package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays.d.ts +41 -0
  134. package/dist/types/components/viewer-measurement-precise/viewer-measurement-precise.d.ts +62 -6
  135. package/dist/types/components/viewer-measurements/viewer-measurements.d.ts +12 -0
  136. package/dist/types/components.d.ts +103 -40
  137. package/dist/types/index.d.ts +1 -1
  138. package/dist/types/lib/cursors.d.ts +5 -0
  139. package/dist/types/lib/elementRectObserver.d.ts +8 -0
  140. package/dist/types/lib/interactions/interactionApi.d.ts +32 -5
  141. package/dist/types/lib/measurement/controller.d.ts +8 -7
  142. package/dist/types/lib/measurement/entities.d.ts +10 -0
  143. package/dist/types/lib/measurement/index.d.ts +3 -1
  144. package/dist/types/lib/measurement/interactions.d.ts +19 -5
  145. package/dist/types/lib/measurement/mapper.d.ts +1 -1
  146. package/dist/types/lib/measurement/model.d.ts +18 -153
  147. package/dist/types/lib/measurement/outcomes.d.ts +8 -0
  148. package/dist/types/lib/measurement/overlays.d.ts +38 -0
  149. package/dist/types/lib/measurement/results.d.ts +90 -0
  150. package/dist/types/lib/types/entities.d.ts +5 -1
  151. package/dist/types/lib/types/featureMap.d.ts +2 -2
  152. package/dist/types/lib/types/measurementUnits.d.ts +1 -1
  153. package/dist/types/lib/types/viewport.d.ts +9 -1
  154. package/dist/types/testing/eventually.d.ts +15 -0
  155. package/dist/types/testing/fixtures.d.ts +2 -2
  156. package/dist/types/testing/index.d.ts +1 -0
  157. package/dist/viewer/index.esm.js +1 -1
  158. package/dist/viewer/p-081e6873.js +4 -0
  159. package/dist/viewer/{p-5d82c131.entry.js → p-099fe6ca.entry.js} +1 -1
  160. package/dist/viewer/{p-784914e4.js → p-0aba71fd.js} +1 -1
  161. package/dist/viewer/p-0aeab3fc.js +4 -0
  162. package/dist/viewer/p-0eb195dd.entry.js +4 -0
  163. package/dist/viewer/p-1a7df99a.entry.js +4 -0
  164. package/dist/viewer/{p-f70d8def.js → p-301660cf.js} +1 -1
  165. package/dist/viewer/{p-a0e49d10.entry.js → p-31658489.entry.js} +1 -1
  166. package/dist/viewer/{p-95f3a81c.entry.js → p-353cfc7a.entry.js} +1 -1
  167. package/dist/viewer/p-364ce21c.js +4 -0
  168. package/dist/viewer/{p-a5a0bf86.js → p-3f6ac74f.js} +1 -1
  169. package/dist/viewer/p-423410be.js +4 -0
  170. package/dist/viewer/{p-6f71f0f2.js → p-439220c6.js} +1 -1
  171. package/dist/viewer/{p-e84ed098.entry.js → p-46459921.entry.js} +1 -1
  172. package/dist/viewer/{p-c23a8b34.entry.js → p-4717c98e.entry.js} +1 -1
  173. package/dist/viewer/p-4985fad5.js +4 -0
  174. package/dist/viewer/{p-ba393340.entry.js → p-61b1097b.entry.js} +1 -1
  175. package/dist/viewer/{p-011eecd5.entry.js → p-6370098c.entry.js} +1 -1
  176. package/dist/viewer/p-67446e35.js +4 -0
  177. package/dist/viewer/p-7006fd4e.entry.js +4 -0
  178. package/dist/viewer/{p-a20e4ea1.entry.js → p-70ca1ea7.entry.js} +1 -1
  179. package/dist/viewer/p-76ec0245.js +4 -0
  180. package/dist/viewer/p-7cad9bf4.js +4 -0
  181. package/dist/viewer/p-7f25dcb5.entry.js +4 -0
  182. package/dist/viewer/{p-ca6bbe53.entry.js → p-8decee06.entry.js} +1 -1
  183. package/dist/viewer/{p-b7ffa306.entry.js → p-915d95ad.entry.js} +1 -1
  184. package/dist/viewer/{p-4485ac6d.js → p-a0df0e0c.js} +1 -1
  185. package/dist/viewer/{p-cc9888be.entry.js → p-a455ae02.entry.js} +1 -1
  186. package/dist/viewer/{p-a6a8026f.js → p-acf22d3e.js} +1 -1
  187. package/dist/viewer/{p-653aca1b.entry.js → p-b2b48a42.entry.js} +1 -1
  188. package/dist/viewer/p-bc9b1e67.entry.js +4 -0
  189. package/dist/viewer/p-c458f191.entry.js +32 -0
  190. package/dist/viewer/p-cafa57a6.js +4 -0
  191. package/dist/viewer/p-d00e9203.js +4 -0
  192. package/dist/viewer/{p-3e96bd62.entry.js → p-d2bcf788.entry.js} +1 -1
  193. package/dist/viewer/p-d90f2f6d.entry.js +4 -0
  194. package/dist/viewer/p-da2f4a56.js +4 -0
  195. package/dist/viewer/{p-5a2e34e1.entry.js → p-e07377fa.entry.js} +1 -1
  196. package/dist/viewer/{p-40800e8d.entry.js → p-f755af5a.entry.js} +1 -1
  197. package/dist/viewer/p-f7cb7e59.js +4 -0
  198. package/dist/viewer/p-fad9693e.js +4 -0
  199. package/dist/viewer/p-fe11d694.js +4 -0
  200. package/dist/viewer/{p-b92a3ac2.entry.js → p-fec1a8d0.entry.js} +1 -1
  201. package/dist/viewer/viewer.css +1 -1
  202. package/dist/viewer/viewer.esm.js +1 -1
  203. package/package.json +11 -10
  204. package/dist/cjs/summary-7bbdb4c9.js +0 -45
  205. package/dist/collection/lib/measurement/summary.js +0 -38
  206. package/dist/esm/summary-0a3d0bf9.js +0 -43
  207. package/dist/types/lib/measurement/summary.d.ts +0 -11
  208. package/dist/viewer/p-03e482ff.js +0 -4
  209. package/dist/viewer/p-0c052bc8.entry.js +0 -4
  210. package/dist/viewer/p-148cd792.js +0 -4
  211. package/dist/viewer/p-26d99e2d.entry.js +0 -4
  212. package/dist/viewer/p-38eeacc5.js +0 -4
  213. package/dist/viewer/p-39d1720c.js +0 -4
  214. package/dist/viewer/p-5dc17b8b.js +0 -4
  215. package/dist/viewer/p-5fea3491.js +0 -4
  216. package/dist/viewer/p-6b700561.entry.js +0 -4
  217. package/dist/viewer/p-6cd7a6e0.js +0 -4
  218. package/dist/viewer/p-75337d0b.js +0 -4
  219. package/dist/viewer/p-b83cc8a9.js +0 -4
  220. package/dist/viewer/p-d2a9e047.js +0 -4
  221. package/dist/viewer/p-d40bd835.entry.js +0 -4
  222. package/dist/viewer/p-e10b1526.js +0 -4
  223. package/dist/viewer/p-ec8a1a68.entry.js +0 -4
  224. package/dist/viewer/p-f4a8c901.js +0 -4
  225. package/dist/viewer/p-f77dde26.entry.js +0 -4
@@ -1,16 +1,16 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-f0053642.js';
5
- import { p as point, v as vector3, h as angle, g as plane, r as ray, b as boundingBox, o as matrix2, d as dimensions } from './bundle.esm-8f14ac60.js';
6
- import { h as fromPbStencilBufferOrThrow, i as decodePng, j as DepthBuffer, t as toProtoDuration, p as protoToDate, k as toPbStreamAttributes, l as toPbRGBi, S as StreamApi, m as StreamRequestError, n as fromPbFrameOrThrow, o as fromPbStartStreamResponseOrThrow, q as fromPbReconnectResponseOrThrow, r as fromPbSyncTimeResponseOrThrow, s as currentDateAsProtoTimestamp, u as fromPbRefreshTokenResponseOrThrow, W as WebSocketClientImpl } from './streamAttributes-7aa486b2.js';
7
- import { E as EventDispatcher, m as mapper, c as color, o as objects, u as uri, a as async, b as uuid } from './browser.esm-e6827921.js';
4
+ import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-10c1495a.js';
5
+ import { p as point, v as vector3, i as angle, h as plane, r as ray, b as boundingBox, o as matrix2, d as dimensions } from './bundle.esm-d899b2d5.js';
6
+ import { h as fromPbStencilBufferOrThrow, i as decodePng, j as DepthBuffer, t as toProtoDuration, E as EntityType, p as protoToDate, k as toPbStreamAttributes, l as toPbRGBi, S as StreamApi, m as StreamRequestError, n as fromPbFrameOrThrow, o as fromPbStartStreamResponseOrThrow, q as fromPbReconnectResponseOrThrow, r as fromPbSyncTimeResponseOrThrow, s as currentDateAsProtoTimestamp, u as fromPbRefreshTokenResponseOrThrow, W as WebSocketClientImpl } from './streamAttributes-d623bb60.js';
7
+ import { E as EventDispatcher, m as mapper, c as color, o as objects, u as uri, a as async, b as uuid } from './browser.esm-59e914f6.js';
8
8
  import { c as classnames } from './index-455380d0.js';
9
- import { p as parseConfig } from './config-a200c227.js';
10
- import { C as CursorManager } from './cursors-5157d29d.js';
11
- import { g as getMouseClientPosition, c as cssCursor } from './dom-2d6a1e1e.js';
12
- import { I as ImageLoadError, f as fromUrn, C as CustomError, W as WebsocketConnectionError, a as SynchronizedClock, b as SceneRenderError, d as defaultSelectionMaterial, V as ViewerInitializationError, e as InteractionHandlerError, g as ComponentInitializationError, h as IllegalStateError, i as fromHex, S as Scene } from './scene-16490983.js';
13
- import { V as Viewport } from './viewport-bb7c46d9.js';
9
+ import { p as parseConfig } from './config-604c644e.js';
10
+ import { C as CursorManager } from './cursors-a7ec4adb.js';
11
+ import { g as getMouseClientPosition, c as cssCursor } from './dom-780d25be.js';
12
+ import { I as ImageLoadError, f as fromUrn, C as CustomError, W as WebsocketConnectionError, a as SynchronizedClock, b as SceneRenderError, d as defaultSelectionMaterial, V as ViewerInitializationError, e as InteractionHandlerError, g as ComponentInitializationError, h as IllegalStateError, i as fromHex, S as Scene } from './scene-9ac8a484.js';
13
+ import { V as Viewport } from './viewport-01c886ea.js';
14
14
  import './_commonjsHelpers-9943807e.js';
15
15
 
16
16
  /**
@@ -320,8 +320,9 @@ class FlyToPositionKeyInteraction {
320
320
  * the internal state of an interaction.
321
321
  */
322
322
  class InteractionApi {
323
- constructor(stream, getConfig, getScene, getFrame, getViewport, tapEmitter, doubleTapEmitter, longPressEmitter, interactionStartedEmitter, interactionFinishedEmitter) {
323
+ constructor(stream, cursors, getConfig, getScene, getFrame, getViewport, tapEmitter, doubleTapEmitter, longPressEmitter, interactionStartedEmitter, interactionFinishedEmitter) {
324
324
  this.stream = stream;
325
+ this.cursors = cursors;
325
326
  this.getConfig = getConfig;
326
327
  this.getScene = getScene;
327
328
  this.getFrame = getFrame;
@@ -336,6 +337,53 @@ class InteractionApi {
336
337
  this.longPress = this.longPress.bind(this);
337
338
  this.emitTapEvent = this.emitTapEvent.bind(this);
338
339
  }
340
+ /**
341
+ * Displays a cursor over the viewer with the given priority. Cursors with
342
+ * higher priority will take precedence over cursors with lower priorities if
343
+ * there's more than a single cursor added.
344
+ *
345
+ * @param cursor The cursor to add.
346
+ * @param priority The priority of the cursor.
347
+ * @returns A `Disposable` that can be used to remove the cursor.
348
+ */
349
+ addCursor(cursor, priority) {
350
+ return this.cursors.add(cursor, priority);
351
+ }
352
+ /**
353
+ * Returns a 3D point in world space for the given 2D point in viewport space.
354
+ *
355
+ * @param point A point in 2D viewport space to transform.
356
+ * @returns A 3D point in world space.
357
+ */
358
+ async getWorldPointFromViewport(point) {
359
+ const viewport = this.getViewport();
360
+ const frame = this.getFrame();
361
+ if (frame == null) {
362
+ throw new Error('Cannot get world point. Frame is undefined.');
363
+ }
364
+ const depthBuffer = await frame.depthBuffer();
365
+ return depthBuffer != null
366
+ ? viewport.transformPointToWorldSpace(point, depthBuffer, 0.5)
367
+ : undefined;
368
+ }
369
+ /**
370
+ * Returns the entity at the given point in viewport space.
371
+ *
372
+ * @param point A point in viewport space.
373
+ * @returns The entity that was found.
374
+ */
375
+ async getEntityTypeAtPoint(point) {
376
+ var _a;
377
+ const viewport = this.getViewport();
378
+ const featureMap = await ((_a = this.getFrame()) === null || _a === void 0 ? void 0 : _a.featureMap());
379
+ if (featureMap != null) {
380
+ const framePt = viewport.transformPointToFrame(point, featureMap);
381
+ return featureMap.getEntityType(framePt);
382
+ }
383
+ else {
384
+ return EntityType.NO_GEOMETRY;
385
+ }
386
+ }
339
387
  /**
340
388
  * Generates a ray from the given point, in viewport coordinates.
341
389
  *
@@ -496,8 +544,8 @@ class InteractionApi {
496
544
  });
497
545
  }
498
546
  /**
499
- * Performs a view all operation for the scene's bounding box, and requests a new image
500
- * for the updated scene.
547
+ * Performs a view all operation for the scene's bounding box, and requests a
548
+ * new image for the updated scene.
501
549
  */
502
550
  async viewAll() {
503
551
  await this.getScene().camera().viewAll().render();
@@ -2745,7 +2793,7 @@ let Viewer = class {
2745
2793
  if (this.stream == null) {
2746
2794
  throw new ComponentInitializationError('Cannot create interaction API. Component has not been initialized.');
2747
2795
  }
2748
- return new InteractionApi(this.stream, () => this.getResolvedConfig().interactions, () => this.createScene(), () => this.frame, () => this.viewport, this.tap, this.doubletap, this.longpress, this.interactionStarted, this.interactionFinished);
2796
+ return new InteractionApi(this.stream, this.stateMap.cursorManager, () => this.getResolvedConfig().interactions, () => this.createScene(), () => this.frame, () => this.viewport, this.tap, this.doubletap, this.longpress, this.interactionStarted, this.interactionFinished);
2749
2797
  }
2750
2798
  handleCursorChanged() {
2751
2799
  window.requestAnimationFrame(() => {
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { d as doc, N as NAMESPACE, w as win, p as promiseResolve, b as bootstrapLazy } from './index-f0053642.js';
4
+ import { d as doc, N as NAMESPACE, w as win, p as promiseResolve, b as bootstrapLazy } from './index-10c1495a.js';
5
5
 
6
6
  /*
7
7
  Stencil Client Patch Browser v2.12.1 | MIT Licensed | https://stenciljs.com
@@ -69,5 +69,5 @@ const patchDynamicImport = (base, orgScriptElm) => {
69
69
  };
70
70
 
71
71
  patchBrowser().then(options => {
72
- return bootstrapLazy([["vertex-viewer-default-toolbar",[[1,"vertex-viewer-default-toolbar",{"viewer":[16],"placement":[1],"direction":[1],"animationsDisabled":[4,"animations-disabled"],"animationMs":[2,"animation-ms"]}]]],["vertex-scene-tree",[[1,"vertex-scene-tree",{"overScanCount":[2,"over-scan-count"],"viewerSelector":[1,"viewer-selector"],"viewer":[1040],"rowData":[16],"config":[16],"configEnv":[1,"config-env"],"controller":[1040],"filterOnMetadata":[1028,"filter-on-metadata"],"metadataKeys":[16],"rows":[32],"totalRows":[32],"stateMap":[32],"connectionErrorDetails":[32],"attemptingRetry":[32],"invalidateRows":[64],"scrollToIndex":[64],"scrollToItem":[64],"expandAll":[64],"collapseAll":[64],"expandItem":[64],"collapseItem":[64],"toggleExpandItem":[64],"toggleItemVisibility":[64],"hideItem":[64],"showItem":[64],"selectItem":[64],"deselectItem":[64],"getRowAtIndex":[64],"getRowForEvent":[64],"getRowAtClientY":[64],"filterItems":[64],"fetchMetadataKeys":[64]},[[0,"search","handleSearch"]]]]],["vertex-viewer-markup",[[1,"vertex-viewer-markup",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"selectedMarkupId":[1025,"selected-markup-id"],"selectNew":[4,"select-new"],"toSelectMarkupId":[32],"pointerDownPosition":[32],"addMarkup":[64],"removeMarkup":[64],"getMarkupElements":[64],"getMarkupElement":[64]},[[0,"markupEnd","handleMarkupEnd"],[1,"pointerdown","handleMarkupPointerDown"]]]]],["vertex-viewer-markup-tool",[[1,"vertex-viewer-markup-tool",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"stateMap":[32],"reset":[64]}]]],["vertex-viewer-measurement-tool",[[1,"vertex-viewer-measurement-tool",{"distanceTemplateId":[1,"distance-template-id"],"tool":[1],"units":[1],"fractionalDigits":[2,"fractional-digits"],"disabled":[4],"viewer":[16],"isMeasuring":[1540,"is-measuring"],"snapDistance":[2,"snap-distance"],"stateMap":[32]}]]],["vertex-viewer-view-cube",[[1,"vertex-viewer-view-cube",{"xPositiveLabel":[1,"x-positive-label"],"xNegativeLabel":[1,"x-negative-label"],"yPositiveLabel":[1,"y-positive-label"],"yNegativeLabel":[1,"y-negative-label"],"zPositiveLabel":[1,"z-positive-label"],"zNegativeLabel":[1,"z-negative-label"],"standardViewsOff":[4,"standard-views-off"],"animationDuration":[2,"animation-duration"],"triadOff":[4,"triad-off"],"worldOrientation":[1040],"camera":[1040],"viewer":[16],"boxLength":[32],"triadPosition":[32]}]]],["vertex-viewer-measurements",[[1,"vertex-viewer-measurements",{"distanceTemplateId":[1,"distance-template-id"],"tool":[1],"units":[1],"fractionalDigits":[2,"fractional-digits"],"disabled":[4],"viewer":[16],"selectedMeasurementId":[1025,"selected-measurement-id"],"snapDistance":[2,"snap-distance"],"addMeasurement":[64],"removeMeasurement":[64],"getMeasurementElement":[64],"getMeasurementElements":[64]},[[0,"measureEnd","handleMeasureEnd"],[1,"pointerdown","handleMeasurementPointerDown"]]]]],["vertex-scene-tree-table-cell",[[1,"vertex-scene-tree-table-cell",{"node":[16],"tree":[16],"value":[1],"placeholder":[1],"hoveredNodeId":[1,"hovered-node-id"],"expandToggle":[4,"expand-toggle"],"visibilityToggle":[4,"visibility-toggle"],"interactionsDisabled":[4,"interactions-disabled"],"recurseParentSelectionDisabled":[4,"recurse-parent-selection-disabled"]}]]],["vertex-scene-tree-table-column",[[1,"vertex-scene-tree-table-column",{"initialWidth":[2,"initial-width"],"minWidth":[2,"min-width"],"maxWidth":[2,"max-width"]}]]],["vertex-scene-tree-table-header",[[1,"vertex-scene-tree-table-header"]]],["vertex-scene-tree-table-resize-divider",[[1,"vertex-scene-tree-table-resize-divider",{"dragging":[32]}]]],["vertex-scene-tree-toolbar-group",[[1,"vertex-scene-tree-toolbar-group"]]],["vertex-viewer",[[1,"vertex-viewer",{"src":[1],"clientId":[1,"client-id"],"deviceId":[1,"device-id"],"config":[1],"configEnv":[1,"config-env"],"resolvedConfig":[1040],"cameraControls":[4,"camera-controls"],"keyboardControls":[4,"keyboard-controls"],"rotateAroundTapPoint":[4,"rotate-around-tap-point"],"token":[1025],"depthBuffers":[1,"depth-buffers"],"experimentalGhostingOpacity":[2,"experimental-ghosting-opacity"],"featureLines":[16],"featureHighlighting":[16],"featureMaps":[1,"feature-maps"],"selectionMaterial":[1,"selection-material"],"frame":[1040],"stream":[1040],"stencilBuffer":[1040],"viewport":[1040],"dimensions":[32],"hostDimensions":[32],"errorMessage":[32],"cursor":[32],"stateMap":[32],"dispatchFrameDrawn":[64],"registerInteractionHandler":[64],"registerTapKeyInteraction":[64],"getInteractionTarget":[64],"addCursor":[64],"getInteractionHandlers":[64],"getBaseInteractionHandler":[64],"getJwt":[64],"load":[64],"unload":[64],"scene":[64],"isSceneReady":[64]},[[0,"tap","handleTapEvent"]]]]],["vertex-viewer-measurement-details",[[1,"vertex-viewer-measurement-details",{"measurementModel":[16],"distanceUnits":[1,"distance-units"],"angleUnits":[1,"angle-units"],"fractionalDigits":[2,"fractional-digits"],"distanceFormatter":[16],"angleFormatter":[16],"areaFormatter":[16],"hiddenDetails":[1040],"hiddenDetailsJson":[1,"hidden-details"],"results":[1040],"summary":[1040],"visibleSummary":[1040]}]]],["vertex-viewer-measurement-precise",[[1,"vertex-viewer-measurement-precise",{"measurementModel":[16],"measurementController":[1040],"viewer":[16],"configEnv":[1,"config-env"],"config":[16],"entities":[32]}]]],["vertex-viewer-icon",[[1,"vertex-viewer-icon",{"name":[1],"size":[1]}]]],["vertex-scene-tree-search_3",[[1,"vertex-scene-tree-search",{"debounce":[2],"disabled":[4],"placeholder":[1],"value":[1025],"focused":[32],"setFocus":[64]}],[1,"vertex-scene-tree-table-layout",{"tree":[16],"controller":[16],"rows":[16],"totalRows":[2,"total-rows"],"rowHeight":[1026,"row-height"],"overScanCount":[2,"over-scan-count"],"rowData":[16],"layoutOffset":[1026,"layout-offset"],"scrollOffset":[1026,"scroll-offset"],"layoutHeight":[1026,"layout-height"],"layoutWidth":[1026,"layout-width"],"viewportStartIndex":[1026,"viewport-start-index"],"viewportEndIndex":[1026,"viewport-end-index"],"columnGridLayout":[32],"columnGridFixedLayout":[32],"hoveredNodeId":[32],"isComputingCellHeight":[32],"lastDividerPointerPosition":[32],"resizingColumnIndex":[32],"stateMap":[32],"scrollToPosition":[64]}],[1,"vertex-scene-tree-toolbar"]]],["vertex-viewer-button_3",[[1,"vertex-viewer-toolbar",{"placement":[1],"direction":[1]}],[1,"vertex-viewer-button"],[1,"vertex-viewer-toolbar-group",{"direction":[1]}]]],["vertex-viewer-dom-element_3",[[1,"vertex-viewer-dom-element",{"position":[1040],"positionJson":[1,"position"],"rotation":[1040],"rotationJson":[1,"rotation"],"quaternion":[1040],"quaternionJson":[1,"quaternion"],"scale":[1040],"scaleJson":[1,"scale"],"matrix":[1040],"occlusionOff":[4,"occlusion-off"],"occluded":[516],"billboardOff":[4,"billboard-off"],"interactionsOff":[516,"interactions-off"]}],[1,"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]}],[1,"vertex-viewer-dom-renderer",{"drawMode":[1,"draw-mode"],"viewer":[16],"camera":[1040],"depthBuffer":[1040],"viewport":[32],"invalidateFrameCounter":[32]},[[0,"propertyChange","handlePropertyChange"]]]]],["vertex-viewer-layer",[[1,"vertex-viewer-layer",{"stretchOff":[516,"stretch-off"]}]]],["vertex-viewer-measurement-distance_2",[[1,"vertex-viewer-measurement-distance",{"start":[1040],"startJson":[1,"start"],"end":[1040],"endJson":[1,"end"],"distance":[1026],"snapDistance":[2,"snap-distance"],"units":[1],"fractionalDigits":[2,"fractional-digits"],"labelFormatter":[16],"anchorLabelOffset":[2,"anchor-label-offset"],"lineCapLength":[2,"line-cap-length"],"mode":[513],"interactingAnchor":[1537,"interacting-anchor"],"invalid":[1540],"camera":[16],"hitProvider":[16],"indicatorPt":[1040],"viewer":[16],"viewport":[32],"elementBounds":[32],"interactionCount":[32],"internalCamera":[32],"invalidateStateCounter":[32],"stateMap":[32],"computeElementMetrics":[64]}],[1,"vertex-viewer-measurement-line",{"start":[16],"end":[16],"capLength":[2,"cap-length"],"pointerEvents":[1,"pointer-events"]}]]],["vertex-viewer-markup-arrow_3",[[1,"vertex-viewer-markup-arrow",{"start":[1040],"startJson":[1,"start"],"end":[1040],"endJson":[1,"end"],"mode":[513],"viewer":[16],"elementBounds":[32],"editAnchor":[32],"dispose":[64]}],[1,"vertex-viewer-markup-circle",{"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"elementBounds":[32],"startPosition":[32],"editAnchor":[32],"resizeBounds":[32],"dispose":[64]}],[1,"vertex-viewer-markup-freeform",{"points":[1040],"pointsJson":[1,"points"],"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"elementBounds":[32],"resizeStartPosition":[32],"editAnchor":[32],"resizeBounds":[32],"resizePoints":[32],"screenPoints":[32],"dispose":[64]}]]]], options);
72
+ return bootstrapLazy([["vertex-viewer-default-toolbar",[[1,"vertex-viewer-default-toolbar",{"viewer":[16],"placement":[1],"direction":[1],"animationsDisabled":[4,"animations-disabled"],"animationMs":[2,"animation-ms"]}]]],["vertex-scene-tree",[[1,"vertex-scene-tree",{"overScanCount":[2,"over-scan-count"],"viewerSelector":[1,"viewer-selector"],"viewer":[1040],"rowData":[16],"config":[16],"configEnv":[1,"config-env"],"controller":[1040],"filterOnMetadata":[1028,"filter-on-metadata"],"metadataKeys":[16],"rows":[32],"totalRows":[32],"stateMap":[32],"connectionErrorDetails":[32],"attemptingRetry":[32],"invalidateRows":[64],"scrollToIndex":[64],"scrollToItem":[64],"expandAll":[64],"collapseAll":[64],"expandItem":[64],"collapseItem":[64],"toggleExpandItem":[64],"toggleItemVisibility":[64],"hideItem":[64],"showItem":[64],"selectItem":[64],"deselectItem":[64],"getRowAtIndex":[64],"getRowForEvent":[64],"getRowAtClientY":[64],"filterItems":[64],"fetchMetadataKeys":[64]},[[0,"search","handleSearch"]]]]],["vertex-viewer-measurement-tool",[[1,"vertex-viewer-measurement-tool",{"distanceTemplateId":[1,"distance-template-id"],"tool":[1],"units":[1],"fractionalDigits":[2,"fractional-digits"],"disabled":[4],"viewer":[16],"isMeasuring":[1540,"is-measuring"],"snapDistance":[2,"snap-distance"],"stateMap":[32]}]]],["vertex-viewer-markup",[[1,"vertex-viewer-markup",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"selectedMarkupId":[1025,"selected-markup-id"],"selectNew":[4,"select-new"],"toSelectMarkupId":[32],"pointerDownPosition":[32],"addMarkup":[64],"removeMarkup":[64],"getMarkupElements":[64],"getMarkupElement":[64]},[[0,"markupEnd","handleMarkupEnd"],[1,"pointerdown","handleMarkupPointerDown"]]]]],["vertex-viewer-markup-tool",[[1,"vertex-viewer-markup-tool",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"stateMap":[32],"reset":[64]}]]],["vertex-viewer-measurements",[[1,"vertex-viewer-measurements",{"distanceTemplateId":[1,"distance-template-id"],"tool":[1],"units":[1],"fractionalDigits":[2,"fractional-digits"],"disabled":[4],"viewer":[16],"selectedMeasurementId":[1025,"selected-measurement-id"],"snapDistance":[2,"snap-distance"],"showAxisReferenceLines":[4,"show-axis-reference-lines"],"measurementModel":[16],"addMeasurement":[64],"removeMeasurement":[64],"getMeasurementElement":[64],"getMeasurementElements":[64]},[[0,"measureEnd","handleMeasureEnd"],[1,"pointerdown","handleMeasurementPointerDown"]]]]],["vertex-viewer-view-cube",[[1,"vertex-viewer-view-cube",{"xPositiveLabel":[1,"x-positive-label"],"xNegativeLabel":[1,"x-negative-label"],"yPositiveLabel":[1,"y-positive-label"],"yNegativeLabel":[1,"y-negative-label"],"zPositiveLabel":[1,"z-positive-label"],"zNegativeLabel":[1,"z-negative-label"],"standardViewsOff":[4,"standard-views-off"],"animationDuration":[2,"animation-duration"],"triadOff":[4,"triad-off"],"worldOrientation":[1040],"camera":[1040],"viewer":[16],"boxLength":[32],"triadPosition":[32]}]]],["vertex-viewer-measurement-precise",[[1,"vertex-viewer-measurement-precise",{"measurementModel":[16],"measurementOverlays":[16],"measurementController":[1040],"measurableEntityTypes":[16],"viewer":[16],"configEnv":[1,"config-env"],"config":[16],"overlays":[32]}]]],["vertex-scene-tree-table-cell",[[1,"vertex-scene-tree-table-cell",{"node":[16],"tree":[16],"value":[1],"placeholder":[1],"hoveredNodeId":[1,"hovered-node-id"],"expandToggle":[4,"expand-toggle"],"visibilityToggle":[4,"visibility-toggle"],"interactionsDisabled":[4,"interactions-disabled"],"recurseParentSelectionDisabled":[4,"recurse-parent-selection-disabled"]}]]],["vertex-scene-tree-table-column",[[1,"vertex-scene-tree-table-column",{"initialWidth":[2,"initial-width"],"minWidth":[2,"min-width"],"maxWidth":[2,"max-width"]}]]],["vertex-scene-tree-table-header",[[1,"vertex-scene-tree-table-header"]]],["vertex-scene-tree-table-resize-divider",[[1,"vertex-scene-tree-table-resize-divider",{"dragging":[32]}]]],["vertex-scene-tree-toolbar-group",[[1,"vertex-scene-tree-toolbar-group"]]],["vertex-viewer",[[1,"vertex-viewer",{"src":[1],"clientId":[1,"client-id"],"deviceId":[1,"device-id"],"config":[1],"configEnv":[1,"config-env"],"resolvedConfig":[1040],"cameraControls":[4,"camera-controls"],"keyboardControls":[4,"keyboard-controls"],"rotateAroundTapPoint":[4,"rotate-around-tap-point"],"token":[1025],"depthBuffers":[1,"depth-buffers"],"experimentalGhostingOpacity":[2,"experimental-ghosting-opacity"],"featureLines":[16],"featureHighlighting":[16],"featureMaps":[1,"feature-maps"],"selectionMaterial":[1,"selection-material"],"frame":[1040],"stream":[1040],"stencilBuffer":[1040],"viewport":[1040],"dimensions":[32],"hostDimensions":[32],"errorMessage":[32],"cursor":[32],"stateMap":[32],"dispatchFrameDrawn":[64],"registerInteractionHandler":[64],"registerTapKeyInteraction":[64],"getInteractionTarget":[64],"addCursor":[64],"getInteractionHandlers":[64],"getBaseInteractionHandler":[64],"getJwt":[64],"load":[64],"unload":[64],"scene":[64],"isSceneReady":[64]},[[0,"tap","handleTapEvent"]]]]],["vertex-viewer-measurement-details",[[1,"vertex-viewer-measurement-details",{"measurementModel":[16],"measurementOverlays":[16],"distanceUnits":[1,"distance-units"],"angleUnits":[1,"angle-units"],"fractionalDigits":[2,"fractional-digits"],"distanceFormatter":[16],"angleFormatter":[16],"areaFormatter":[16],"resultTypes":[16],"results":[32],"isApproximate":[32],"overlay":[32],"distanceMeasurementUnits":[32],"angleMeasurementUnits":[32],"areaMeasurementUnits":[32]}]]],["vertex-viewer-measurement-distance",[[1,"vertex-viewer-measurement-distance",{"start":[1040],"startJson":[1,"start"],"end":[1040],"endJson":[1,"end"],"distance":[1026],"showAxisReferenceLines":[4,"show-axis-reference-lines"],"snapDistance":[2,"snap-distance"],"units":[1],"fractionalDigits":[2,"fractional-digits"],"labelFormatter":[16],"anchorLabelOffset":[2,"anchor-label-offset"],"lineCapLength":[2,"line-cap-length"],"mode":[513],"interactingAnchor":[1537,"interacting-anchor"],"invalid":[1540],"camera":[16],"hitProvider":[16],"indicatorPt":[1040],"viewer":[16],"viewport":[32],"elementBounds":[32],"interactionCount":[32],"internalCamera":[32],"invalidateStateCounter":[32],"stateMap":[32],"computeElementMetrics":[64]}]]],["vertex-scene-tree-search_3",[[1,"vertex-scene-tree-search",{"debounce":[2],"disabled":[4],"placeholder":[1],"value":[1025],"focused":[32],"setFocus":[64]}],[1,"vertex-scene-tree-table-layout",{"tree":[16],"controller":[16],"rows":[16],"totalRows":[2,"total-rows"],"rowHeight":[1026,"row-height"],"overScanCount":[2,"over-scan-count"],"rowData":[16],"layoutOffset":[1026,"layout-offset"],"scrollOffset":[1026,"scroll-offset"],"layoutHeight":[1026,"layout-height"],"layoutWidth":[1026,"layout-width"],"viewportStartIndex":[1026,"viewport-start-index"],"viewportEndIndex":[1026,"viewport-end-index"],"columnGridLayout":[32],"columnGridFixedLayout":[32],"hoveredNodeId":[32],"isComputingCellHeight":[32],"lastDividerPointerPosition":[32],"resizingColumnIndex":[32],"stateMap":[32],"scrollToPosition":[64]}],[1,"vertex-scene-tree-toolbar"]]],["vertex-viewer-button_3",[[1,"vertex-viewer-toolbar",{"placement":[1],"direction":[1]}],[1,"vertex-viewer-button"],[1,"vertex-viewer-toolbar-group",{"direction":[1]}]]],["vertex-viewer-dom-element_3",[[1,"vertex-viewer-dom-element",{"position":[1040],"positionJson":[1,"position"],"rotation":[1040],"rotationJson":[1,"rotation"],"quaternion":[1040],"quaternionJson":[1,"quaternion"],"scale":[1040],"scaleJson":[1,"scale"],"matrix":[1040],"occlusionOff":[4,"occlusion-off"],"occluded":[516],"billboardOff":[4,"billboard-off"],"interactionsOff":[516,"interactions-off"]}],[1,"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]}],[1,"vertex-viewer-dom-renderer",{"drawMode":[1,"draw-mode"],"viewer":[16],"camera":[1040],"depthBuffer":[1040],"viewport":[32],"invalidateFrameCounter":[32]},[[0,"propertyChange","handlePropertyChange"]]]]],["vertex-viewer-icon",[[1,"vertex-viewer-icon",{"name":[1],"size":[1]}]]],["vertex-viewer-layer",[[1,"vertex-viewer-layer",{"stretchOff":[516,"stretch-off"]}]]],["vertex-viewer-markup-arrow_3",[[1,"vertex-viewer-markup-arrow",{"start":[1040],"startJson":[1,"start"],"end":[1040],"endJson":[1,"end"],"mode":[513],"viewer":[16],"elementBounds":[32],"editAnchor":[32],"dispose":[64]}],[1,"vertex-viewer-markup-circle",{"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"elementBounds":[32],"startPosition":[32],"editAnchor":[32],"resizeBounds":[32],"dispose":[64]}],[1,"vertex-viewer-markup-freeform",{"points":[1040],"pointsJson":[1,"points"],"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"elementBounds":[32],"resizeStartPosition":[32],"editAnchor":[32],"resizeBounds":[32],"resizePoints":[32],"screenPoints":[32],"dispose":[64]}]]],["vertex-viewer-measurement-line_2",[[1,"vertex-viewer-measurement-overlays",{"measurementOverlays":[16],"camera":[1040],"viewer":[16],"overlays":[32]}],[1,"vertex-viewer-measurement-line",{"start":[16],"end":[16],"capLength":[2,"cap-length"],"pointerEvents":[1,"pointer-events"]}]]]], options);
73
73
  });
@@ -1,7 +1,7 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { d as dimensions, p as point, v as vector3, r as ray, i as rectangle } from './bundle.esm-8f14ac60.js';
4
+ import { d as dimensions, p as point, v as vector3, r as ray, g as rectangle } from './bundle.esm-d899b2d5.js';
5
5
 
6
6
  /**
7
7
  * A `Viewport` represents the drawing area in the viewer.
@@ -45,6 +45,17 @@ class Viewport {
45
45
  transformVectorToViewport(ndc) {
46
46
  return point.create(ndc.x * this.center.x + this.center.x, -ndc.y * this.center.y + this.center.y);
47
47
  }
48
+ /**
49
+ * Transforms a world point to 2D point in viewport space.
50
+ *
51
+ * @param worldPt The world point to transform.
52
+ * @param projectionViewMatrix The projection matrix to transform a 3D point to 2D point.
53
+ * @returns A point in viewport space.
54
+ */
55
+ transformWorldToViewport(worldPt, projectionViewMatrix) {
56
+ const ndc = vector3.transformMatrix(worldPt, projectionViewMatrix);
57
+ return this.transformVectorToViewport(ndc);
58
+ }
48
59
  transformPointToViewport(pt, image) {
49
60
  const { x: scaleX, y: scaleY } = this.calculateFrameScale(image);
50
61
  return point.scale(pt, 1 * scaleX, 1 * scaleY);
@@ -49,7 +49,7 @@ export declare class ViewerDomRenderer {
49
49
  /**
50
50
  * @ignore
51
51
  */
52
- protected componentWillRender(): void;
52
+ protected componentDidRender(): void;
53
53
  /**
54
54
  * @ignore
55
55
  */
@@ -0,0 +1,8 @@
1
+ import { FunctionalComponent } from '../../stencil-public-runtime';
2
+ interface MeasurementDetailsEntryProps {
3
+ label: string;
4
+ onMouseEnter?: () => void;
5
+ onMouseLeave?: () => void;
6
+ }
7
+ export declare const MeasurementDetailsEntry: FunctionalComponent<MeasurementDetailsEntryProps>;
8
+ export {};
@@ -0,0 +1,15 @@
1
+ import { FunctionalComponent } from '../../stencil-public-runtime';
2
+ import { Formatter } from '../../lib/formatter';
3
+ import { MeasurementOverlay, MeasurementOverlayManager, MeasurementResult, MinimumDistanceMeasurementResult, PlanarAngleMeasurementResult, PlanarDistanceMeasurementResult, SurfaceAreaMeasurementResult } from '../../lib/measurement';
4
+ interface MeasurementResultEntryProps<R extends MeasurementResult> {
5
+ result: R;
6
+ overlays?: MeasurementOverlayManager;
7
+ formatter: Formatter<number>;
8
+ onShowOverlay: (overlay: MeasurementOverlay | undefined) => void;
9
+ onHideOverlay: () => void;
10
+ }
11
+ export declare const MinimumDistanceResultEntry: FunctionalComponent<MeasurementResultEntryProps<MinimumDistanceMeasurementResult>>;
12
+ export declare const PlanarAngleResultEntry: FunctionalComponent<MeasurementResultEntryProps<PlanarAngleMeasurementResult>>;
13
+ export declare const PlanarDistanceResultEntry: FunctionalComponent<MeasurementResultEntryProps<PlanarDistanceMeasurementResult>>;
14
+ export declare const SurfaceAreaResultEntry: FunctionalComponent<MeasurementResultEntryProps<SurfaceAreaMeasurementResult>>;
15
+ export {};
@@ -1,6 +1,6 @@
1
1
  import { h } from '../../stencil-public-runtime';
2
2
  import { Formatter } from '../../lib/formatter';
3
- import { MeasurementDetailsSummary, MeasurementModel, MeasurementResult } from '../../lib/measurement';
3
+ import { MeasurementModel, MeasurementOverlayManager, MeasurementResult } from '../../lib/measurement';
4
4
  import { AngleUnitType, DistanceUnitType } from '../../lib/types';
5
5
  export declare class ViewerMeasurementDetails {
6
6
  /**
@@ -9,6 +9,10 @@ export declare class ViewerMeasurementDetails {
9
9
  * which can then be used to update the display.
10
10
  */
11
11
  measurementModel: MeasurementModel;
12
+ /**
13
+ * The manager that the component will use to present measurement overlays.
14
+ */
15
+ measurementOverlays?: MeasurementOverlayManager;
12
16
  /**
13
17
  * The unit of distance-based measurement.
14
18
  */
@@ -40,56 +44,54 @@ export declare class ViewerMeasurementDetails {
40
44
  */
41
45
  areaFormatter?: Formatter<number>;
42
46
  /**
43
- * An optional set of details to hide. This can be used to display
44
- * reduced sets of details for more a more focused representation.
45
- * Can be provided as an array of keys from the `MeasurementDetailsSummary`
46
- * type, or as a JSON array with the format '["angle", "minDistance"]'.
47
+ * A set of result types to display. If `undefined`, then all results will be
48
+ * displayed.
47
49
  */
48
- hiddenDetails?: Array<keyof MeasurementDetailsSummary>;
50
+ resultTypes?: MeasurementResult['type'][];
51
+ private results;
52
+ private isApproximate;
53
+ private overlay?;
54
+ private distanceMeasurementUnits;
55
+ private angleMeasurementUnits;
56
+ private areaMeasurementUnits;
57
+ private onOutcomeChangedHandler?;
49
58
  /**
50
- * An optional set of details to hide. This can be used to display
51
- * reduced sets of details for more a more focused representation.
52
- * Can be provided as an array of keys from the `MeasurementDetailsSummary`
53
- * type, or as a JSON array with the format '["angle", "minDistance"]'.
59
+ * @internal
54
60
  */
55
- hiddenDetailsJson?: string;
61
+ protected connectedCallback(): void;
56
62
  /**
57
- * The current `MeasurementResult` displayed.
58
- *
59
- * @readonly
63
+ * @internal
60
64
  */
61
- results: MeasurementResult[];
65
+ protected disconnectedCallback(): void;
62
66
  /**
63
- * A summary representing all available measurements based on
64
- * the current `MeasurementResult` set.
65
- *
66
- * @readonly
67
+ * @internal
67
68
  */
68
- summary?: MeasurementDetailsSummary;
69
+ protected handleDistanceUnitsChanged(): void;
69
70
  /**
70
- * The visible measurements based on the current `summary`
71
- * and `hiddenDetails`.
72
- *
73
- * @readonly
71
+ * @internal
74
72
  */
75
- visibleSummary?: MeasurementDetailsSummary;
76
- private distanceMeasurementUnits;
77
- private angleMeasurementUnits;
78
- private areaMeasurementUnits;
79
- private resultsChangeListener?;
80
- connectedCallback(): void;
81
- componentWillLoad(): void;
82
- componentWillUpdate(): void;
83
- disconnectedCallback(): void;
84
- protected handleDistanceUnitsChanged(): void;
85
73
  protected handleAngleUnitsChanged(): void;
74
+ /**
75
+ * @internal
76
+ */
86
77
  protected handleMeasurementModelChanged(): void;
87
- protected handleHiddenDetailsChanged(): void;
88
- render(): h.JSX.IntrinsicElements;
89
- private parseHiddenDetails;
90
- private handleResultsChange;
91
- private formatDistance;
92
- private formatAngle;
93
- private formatArea;
94
- private createSummary;
78
+ /**
79
+ * @internal
80
+ */
81
+ protected handleResultTypesChanged(): void;
82
+ /**
83
+ * @internal
84
+ */
85
+ protected render(): h.JSX.IntrinsicElements;
86
+ private handleShowOverlay;
87
+ private handleHideOverlay;
88
+ private handleOutcomeChange;
89
+ private updateStateFromModel;
90
+ private renderResult;
91
+ private getResultForType;
92
+ private makeDistanceFormatter;
93
+ private makeAngleFormatter;
94
+ private makeAreaFormatter;
95
+ private makeFormatter;
96
+ private formatValue;
95
97
  }
@@ -1,9 +1,31 @@
1
1
  import { Point, Vector3 } from '@vertexvis/geometry';
2
2
  import { Disposable, Listener } from '@vertexvis/utils';
3
- import { PointToPointMeasurementResult } from '../../lib/measurement';
4
3
  import { RaycasterLike } from '../../lib/scenes';
5
4
  import { PointToPointHitTester } from './hitTest';
6
5
  import { Anchor } from './utils';
6
+ /**
7
+ * A measurement result that represents the distance between two points.
8
+ */
9
+ export interface PointToPointMeasurementResult {
10
+ /**
11
+ * The distance, in world units, between two points. This value is only
12
+ * populated if the result is valid.
13
+ */
14
+ distance?: number;
15
+ /**
16
+ * The first point, in world units.
17
+ */
18
+ start: Vector3.Vector3;
19
+ /**
20
+ * The second point, in world units.
21
+ */
22
+ end: Vector3.Vector3;
23
+ /**
24
+ * Indicates if this result is valid. A value of `false` indicates that one of
25
+ * the points does not touch any geometry.
26
+ */
27
+ valid: boolean;
28
+ }
7
29
  /**
8
30
  * Provides APIs to perform local or remote hit tests.
9
31
  */
@@ -69,6 +69,11 @@ export declare class ViewerMeasurementDistance {
69
69
  * measurement is invalid.
70
70
  */
71
71
  distance?: number;
72
+ /**
73
+ * Enables the display of axis reference lines between the start and end
74
+ * point.
75
+ */
76
+ showAxisReferenceLines: boolean;
72
77
  /**
73
78
  * The distance, in pixels, between the mouse and nearest snappable edge. A
74
79
  * value of 0 disables snapping.
@@ -151,6 +156,8 @@ export declare class ViewerMeasurementDistance {
151
156
  private model;
152
157
  private controller;
153
158
  private interaction?;
159
+ private overlays;
160
+ private overlay?;
154
161
  private measurementUnits;
155
162
  private isUserInteractingWithModel;
156
163
  /**
@@ -195,6 +202,7 @@ export declare class ViewerMeasurementDistance {
195
202
  protected handleEndChanged(): void;
196
203
  protected handleInvalidChanged(): void;
197
204
  private computePropsAndState;
205
+ private updateOverlays;
198
206
  private setCursor;
199
207
  private computeElementPositions;
200
208
  private computeEditOrViewElementPositions;
@@ -0,0 +1,10 @@
1
+ import { FunctionalComponent } from '../../stencil-public-runtime';
2
+ import { MeasurementOverlay } from '../../lib/measurement';
3
+ import { FramePerspectiveCamera, Viewport } from '../../lib/types';
4
+ interface MeasurementOverlayViewProps<O extends MeasurementOverlay> {
5
+ overlay: O;
6
+ viewport: Viewport;
7
+ camera: FramePerspectiveCamera;
8
+ }
9
+ export declare const MeasurementOverlayView: FunctionalComponent<MeasurementOverlayViewProps<MeasurementOverlay>>;
10
+ export {};
@@ -0,0 +1,41 @@
1
+ import { h } from '../../stencil-public-runtime';
2
+ import { MeasurementOverlayManager } from '../../lib/measurement';
3
+ import { FramePerspectiveCamera } from '../../lib/types';
4
+ export declare class ViewerMeasurementOverlays {
5
+ /**
6
+ * The model that contains the overlays to present.
7
+ */
8
+ measurementOverlays: MeasurementOverlayManager;
9
+ private onOverlaysChangedListener?;
10
+ /**
11
+ * @ignore
12
+ */
13
+ protected handleMeasurementOverlaysChanged(): void;
14
+ /**
15
+ * @internal
16
+ */
17
+ camera?: FramePerspectiveCamera;
18
+ /**
19
+ * The viewer that this component is bound to.
20
+ */
21
+ viewer?: HTMLVertexViewerElement;
22
+ /**
23
+ * @ignore
24
+ */
25
+ protected handleViewerChanged(newViewer?: HTMLVertexViewerElement, oldViewer?: HTMLVertexViewerElement): void;
26
+ private overlays;
27
+ /**
28
+ * @ignore
29
+ */
30
+ protected componentWillLoad(): void;
31
+ private addModelListeners;
32
+ private removeModelListeners;
33
+ private addViewerListeners;
34
+ private removeViewerListeners;
35
+ private updateCamera;
36
+ private updateOverlays;
37
+ /**
38
+ * @ignore
39
+ */
40
+ protected render(): h.JSX.IntrinsicElements;
41
+ }
@@ -1,28 +1,84 @@
1
1
  /// <reference types="react" />
2
2
  import { Config } from '../../lib/config';
3
3
  import { Environment } from '../../lib/environment';
4
- import { MeasurementController, MeasurementModel } from '../../lib/measurement';
4
+ import { MeasurementController, MeasurementModel, MeasurementOverlayManager } from '../../lib/measurement';
5
+ import { EntityType } from '../../lib/types';
5
6
  export declare class ViewerMeasurementPrecise {
7
+ /**
8
+ * The model that contains the entities and outcomes from performing precise
9
+ * measurements.
10
+ */
6
11
  measurementModel: MeasurementModel;
12
+ /**
13
+ * The manager that is responsible for measurement overlays to present by this
14
+ * component.
15
+ */
16
+ measurementOverlays: MeasurementOverlayManager;
17
+ /**
18
+ * The controller that is responsible for performing measurements and updating
19
+ * the model.
20
+ */
7
21
  measurementController?: MeasurementController;
22
+ /**
23
+ * @internal
24
+ *
25
+ * An internal property that can be used to opt-in to performing measurements
26
+ * on other types of entities.
27
+ */
28
+ measurableEntityTypes: EntityType[];
29
+ /**
30
+ * The viewer that this component is bound to. This is automatically assigned
31
+ * if added to the light-dom of a parent viewer element.
32
+ */
8
33
  viewer?: HTMLVertexViewerElement;
34
+ /**
35
+ * The environment that will be used to request measurement results.
36
+ */
9
37
  configEnv: Environment;
38
+ /**
39
+ * An optional configuration to setup network configuration of measurement
40
+ * endpoints.
41
+ */
10
42
  config?: Config;
11
- private entities;
43
+ private overlays;
12
44
  private registeredInteractionHandler?;
13
- private onEntitiesChangedDisposable?;
45
+ private onEntitiesChangedHandler?;
46
+ private onOverlaysChangedHandler?;
47
+ /**
48
+ * @ignore
49
+ */
14
50
  protected connectedCallback(): void;
51
+ /**
52
+ * @ignore
53
+ */
15
54
  protected componentWillLoad(): void;
55
+ /**
56
+ * @ignore
57
+ */
16
58
  protected disconnectedCallback(): void;
59
+ /**
60
+ * @ignore
61
+ */
62
+ protected handleMeasurableEntityTypesChanged(): void;
63
+ /**
64
+ * @ignore
65
+ */
17
66
  protected handleMeasurementControllerChanged(): void;
67
+ /**
68
+ * @ignore
69
+ */
18
70
  protected handleMeasurementModelChanged(): void;
71
+ /**
72
+ * @ignore
73
+ */
19
74
  protected handleViewerChanged(): void;
20
- render(): JSX.Element;
75
+ /**
76
+ * @ignore
77
+ */
78
+ protected render(): JSX.Element;
21
79
  private setupController;
22
80
  private clearInteractionHandler;
23
81
  private setupInteractionHandler;
24
82
  private clearModelListeners;
25
83
  private setupModelListeners;
26
- private handleEntitiesChanged;
27
- private updateEntities;
28
84
  }
@@ -1,4 +1,5 @@
1
1
  import { EventEmitter, h } from '../../stencil-public-runtime';
2
+ import { MeasurementModel } from '../../lib/measurement';
2
3
  import { DistanceUnitType, Measurement } from '../../lib/types';
3
4
  import { ViewerMeasurementToolType } from '../viewer-measurement-tool/viewer-measurement-tool';
4
5
  export declare class ViewerMeasurements {
@@ -39,6 +40,17 @@ export declare class ViewerMeasurements {
39
40
  * value of 0 disables snapping.
40
41
  */
41
42
  snapDistance: number;
43
+ /**
44
+ * Enables the display of axis reference lines between the start and end
45
+ * point of selected measurements.
46
+ */
47
+ showAxisReferenceLines: boolean;
48
+ /**
49
+ * The measurement model that will be updated with the selected measurement.
50
+ * You can pass this to a <vertex-viewer-measurement-details> component to
51
+ * display measurement outcomes.
52
+ */
53
+ measurementModel: MeasurementModel;
42
54
  /**
43
55
  * Dispatched when a new measurement is added, either through user interaction
44
56
  * or programmatically.