@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,147 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { r as registerInstance, h, H as Host } from './index-f0053642.js';
5
- import { a as MeasurementModel } from './model-f711a825.js';
4
+ import { h, F as Fragment, r as registerInstance, H as Host } from './index-10c1495a.js';
5
+ import './mapper-4b815e31.js';
6
6
  import './grpc-web-client.umd-5982b7b0.js';
7
- import { s as summarizeResults } from './summary-0a3d0bf9.js';
8
- import { D as DistanceUnits, A as AngleUnits, d as AreaUnits } from './streamAttributes-7aa486b2.js';
9
- import './browser.esm-e6827921.js';
10
- import './bundle.esm-8f14ac60.js';
7
+ import { D as DistanceUnits, A as AngleUnits, d as AreaUnits } from './streamAttributes-d623bb60.js';
8
+ import { M as MeasurementModel } from './model-e5a4f00f.js';
9
+ import { n as __rest, v as vector3 } from './bundle.esm-d899b2d5.js';
10
+ import { c as classnames } from './index-455380d0.js';
11
11
  import './_commonjsHelpers-9943807e.js';
12
+ import './browser.esm-59e914f6.js';
12
13
 
13
- const viewerMeasurementDetailsCss = ":host{display:flex;flex-direction:column;--viewer-measurement-details-x-color:red;--viewer-measurement-details-y-color:var(--green-500);--viewer-measurement-details-z-color:blue}.measurement-details-entry{display:flex;align-items:center}.measurement-details-entry-label{user-select:none;padding-right:0.25rem}.measurement-details-entry-label.x-label{color:var(--viewer-measurement-details-x-color)}.measurement-details-entry-label.y-label{color:var(--viewer-measurement-details-y-color)}.measurement-details-entry-label.z-label{color:var(--viewer-measurement-details-z-color)}.measurement-details-entry-label-superscript{font-size:0.6rem;position:relative;bottom:0.3em;line-height:initial}";
14
+ /*! *****************************************************************************
15
+ Copyright (c) Microsoft Corporation.
16
+
17
+ Permission to use, copy, modify, and/or distribute this software for any
18
+ purpose with or without fee is hereby granted.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
21
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
22
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
23
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
24
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
25
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
26
+ PERFORMANCE OF THIS SOFTWARE.
27
+ ***************************************************************************** */
28
+
29
+ var __assign$1 = function() {
30
+ __assign$1 = Object.assign || function __assign(t) {
31
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
32
+ s = arguments[i];
33
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
34
+ }
35
+ return t;
36
+ };
37
+ return __assign$1.apply(this, arguments);
38
+ };
39
+
40
+ /*! *****************************************************************************
41
+ Copyright (c) Microsoft Corporation.
42
+
43
+ Permission to use, copy, modify, and/or distribute this software for any
44
+ purpose with or without fee is hereby granted.
45
+
46
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
47
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
48
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
49
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
50
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
51
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
52
+ PERFORMANCE OF THIS SOFTWARE.
53
+ ***************************************************************************** */
54
+
55
+ var __assign = function() {
56
+ __assign = Object.assign || function __assign(t) {
57
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
58
+ s = arguments[i];
59
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
60
+ }
61
+ return t;
62
+ };
63
+ return __assign.apply(this, arguments);
64
+ };
65
+
66
+ /**
67
+ * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt
68
+ */
69
+ /**
70
+ * Lower case as a function.
71
+ */
72
+ function lowerCase(str) {
73
+ return str.toLowerCase();
74
+ }
75
+
76
+ // Support camel case ("camelCase" -> "camel Case" and "CAMELCase" -> "CAMEL Case").
77
+ var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
78
+ // Remove all non-word characters.
79
+ var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
80
+ /**
81
+ * Normalize the string into something other libraries can manipulate easier.
82
+ */
83
+ function noCase(input, options) {
84
+ if (options === void 0) { options = {}; }
85
+ var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
86
+ var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
87
+ var start = 0;
88
+ var end = result.length;
89
+ // Trim the delimiter from around the output string.
90
+ while (result.charAt(start) === "\0")
91
+ start++;
92
+ while (result.charAt(end - 1) === "\0")
93
+ end--;
94
+ // Transform each token independently.
95
+ return result.slice(start, end).split("\0").map(transform).join(delimiter);
96
+ }
97
+ /**
98
+ * Replace `re` in the input string with the replacement value.
99
+ */
100
+ function replace(input, re, value) {
101
+ if (re instanceof RegExp)
102
+ return input.replace(re, value);
103
+ return re.reduce(function (input, re) { return input.replace(re, value); }, input);
104
+ }
105
+
106
+ function dotCase(input, options) {
107
+ if (options === void 0) { options = {}; }
108
+ return noCase(input, __assign({ delimiter: "." }, options));
109
+ }
110
+
111
+ function paramCase(input, options) {
112
+ if (options === void 0) { options = {}; }
113
+ return dotCase(input, __assign$1({ delimiter: "-" }, options));
114
+ }
115
+
116
+ const MeasurementDetailsEntry = (_a, children) => {
117
+ var { label } = _a, props = __rest(_a, ["label"]);
118
+ return (h("div", Object.assign({}, props, { class: "measurement-details-entry" }),
119
+ h("div", { class: classnames('measurement-details-entry-label', paramCase(label)) },
120
+ label,
121
+ ":"),
122
+ children));
123
+ };
124
+
125
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
126
+ const MinimumDistanceResultEntry = ({ result, formatter, overlays, onShowOverlay, onHideOverlay }) => {
127
+ const v = vector3.subtract(result.point1, result.point2);
128
+ return (h(Fragment, null,
129
+ h(MeasurementDetailsEntry, { label: "Min Dist", onMouseEnter: () => onShowOverlay(overlays === null || overlays === void 0 ? void 0 : overlays.addLineFromResult(result)), onMouseLeave: onHideOverlay }, formatter(result.distance)),
130
+ h(MeasurementDetailsEntry, { label: "X", onMouseEnter: () => onShowOverlay(overlays === null || overlays === void 0 ? void 0 : overlays.addDistanceVectorFromResult(result)), onMouseLeave: onHideOverlay }, formatter(v.x)),
131
+ h(MeasurementDetailsEntry, { label: "Y", onMouseEnter: () => onShowOverlay(overlays === null || overlays === void 0 ? void 0 : overlays.addDistanceVectorFromResult(result)), onMouseLeave: onHideOverlay }, formatter(v.y)),
132
+ h(MeasurementDetailsEntry, { label: "Z", onMouseEnter: () => onShowOverlay(overlays === null || overlays === void 0 ? void 0 : overlays.addDistanceVectorFromResult(result)), onMouseLeave: onHideOverlay }, formatter(v.z))));
133
+ };
134
+ const PlanarAngleResultEntry = ({ result, formatter }) => {
135
+ return (h(MeasurementDetailsEntry, { label: "Angle" }, formatter(result.angle)));
136
+ };
137
+ const PlanarDistanceResultEntry = ({ result, formatter }) => {
138
+ return (h(MeasurementDetailsEntry, { label: "Parallel Dist" }, formatter(result.distance)));
139
+ };
140
+ const SurfaceAreaResultEntry = ({ result, formatter }) => {
141
+ return (h(MeasurementDetailsEntry, { label: "Area" }, formatter(result.area)));
142
+ };
143
+
144
+ const viewerMeasurementDetailsCss = ":host{display:flex;flex-direction:column;--viewer-measurement-details-x-color:red;--viewer-measurement-details-y-color:var(--green-500);--viewer-measurement-details-z-color:blue}.measurement-details-entry{display:flex;align-items:center}.measurement-details-entry-label{user-select:none;padding-right:0.25rem}.measurement-details-entry-label.x{color:var(--viewer-measurement-details-x-color)}.measurement-details-entry-label.y{color:var(--viewer-measurement-details-y-color)}.measurement-details-entry-label.z{color:var(--viewer-measurement-details-z-color)}";
14
145
 
15
146
  let ViewerMeasurementDetails = class {
16
147
  constructor(hostRef) {
@@ -33,106 +164,121 @@ let ViewerMeasurementDetails = class {
33
164
  * The number of fraction digits to display.
34
165
  */
35
166
  this.fractionalDigits = 2;
36
- /**
37
- * The current `MeasurementResult` displayed.
38
- *
39
- * @readonly
40
- */
41
167
  this.results = [];
168
+ this.isApproximate = false;
42
169
  this.distanceMeasurementUnits = new DistanceUnits(this.distanceUnits);
43
170
  this.angleMeasurementUnits = new AngleUnits(this.angleUnits);
44
171
  this.areaMeasurementUnits = new AreaUnits(this.distanceUnits);
45
- this.handleResultsChange = (results) => {
46
- this.results = results;
47
- this.createSummary();
48
- };
49
- this.formatDistance = (distance) => {
50
- const realDistance = Math.abs(this.distanceMeasurementUnits.convertWorldValueToReal(distance));
51
- if (this.distanceFormatter != null) {
52
- return this.distanceFormatter(realDistance);
53
- }
54
- else {
55
- const abbreviated = this.distanceMeasurementUnits.unit.abbreviatedName;
56
- return realDistance == null
57
- ? '---'
58
- : `${realDistance.toFixed(this.fractionalDigits)} ${abbreviated}`;
59
- }
172
+ this.handleShowOverlay = (overlay) => {
173
+ this.overlay = overlay;
60
174
  };
61
- this.formatAngle = (angleInRadians) => {
62
- if (this.angleFormatter != null) {
63
- return this.angleFormatter(angleInRadians);
64
- }
65
- else {
66
- const value = this.angleMeasurementUnits
67
- .convertTo(angleInRadians)
68
- .toFixed(this.fractionalDigits);
69
- return `${value} ${this.angleMeasurementUnits.unit.abbreviatedName}`;
70
- }
71
- };
72
- this.formatArea = (area) => {
73
- const realArea = this.areaMeasurementUnits.convertWorldValueToReal(area);
74
- if (this.areaFormatter != null) {
75
- return this.areaFormatter(area);
76
- }
77
- else {
78
- const abbreviated = this.areaMeasurementUnits.unit.abbreviatedName;
79
- return realArea == null
80
- ? '---'
81
- : `${realArea.toFixed(this.fractionalDigits)} ${abbreviated}`;
82
- }
83
- };
84
- this.createSummary = () => {
175
+ this.handleHideOverlay = () => {
85
176
  var _a;
86
- const baseSummary = summarizeResults(this.results);
87
- const hidden = (_a = this.hiddenDetails) !== null && _a !== void 0 ? _a : [];
88
- this.summary = baseSummary;
89
- this.visibleSummary = Object.keys(baseSummary)
90
- .filter((k) => !hidden.includes(k))
91
- .reduce((reducedSummary, key) => (Object.assign(Object.assign({}, reducedSummary), { [key]: baseSummary[key] })), {});
177
+ (_a = this.overlay) === null || _a === void 0 ? void 0 : _a.dispose();
178
+ };
179
+ this.handleOutcomeChange = () => {
180
+ this.updateStateFromModel();
92
181
  };
93
182
  }
183
+ /**
184
+ * @internal
185
+ */
94
186
  connectedCallback() {
95
- this.resultsChangeListener = this.measurementModel.onResultsChanged(this.handleResultsChange);
96
- }
97
- componentWillLoad() {
98
- this.parseHiddenDetails();
99
- }
100
- componentWillUpdate() {
101
- this.parseHiddenDetails();
187
+ this.onOutcomeChangedHandler = this.measurementModel.onOutcomeChanged(this.handleOutcomeChange);
188
+ this.updateStateFromModel();
102
189
  }
190
+ /**
191
+ * @internal
192
+ */
103
193
  disconnectedCallback() {
104
194
  var _a;
105
- (_a = this.resultsChangeListener) === null || _a === void 0 ? void 0 : _a.dispose();
195
+ (_a = this.onOutcomeChangedHandler) === null || _a === void 0 ? void 0 : _a.dispose();
106
196
  }
197
+ /**
198
+ * @internal
199
+ */
107
200
  handleDistanceUnitsChanged() {
108
201
  this.distanceMeasurementUnits = new DistanceUnits(this.distanceUnits);
109
202
  this.areaMeasurementUnits = new AreaUnits(this.distanceUnits);
110
203
  }
204
+ /**
205
+ * @internal
206
+ */
111
207
  handleAngleUnitsChanged() {
112
208
  this.angleMeasurementUnits = new AngleUnits(this.angleUnits);
113
209
  }
210
+ /**
211
+ * @internal
212
+ */
114
213
  handleMeasurementModelChanged() {
115
214
  var _a;
116
- (_a = this.resultsChangeListener) === null || _a === void 0 ? void 0 : _a.dispose();
117
- this.resultsChangeListener = this.measurementModel.onResultsChanged(this.handleResultsChange);
215
+ (_a = this.onOutcomeChangedHandler) === null || _a === void 0 ? void 0 : _a.dispose();
216
+ this.onOutcomeChangedHandler = this.measurementModel.onOutcomeChanged(this.handleOutcomeChange);
217
+ this.updateStateFromModel();
118
218
  }
119
- handleHiddenDetailsChanged() {
120
- this.createSummary();
219
+ /**
220
+ * @internal
221
+ */
222
+ handleResultTypesChanged() {
223
+ this.updateStateFromModel();
121
224
  }
225
+ /**
226
+ * @internal
227
+ */
122
228
  render() {
123
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
124
- return this.visibleSummary != null ? (h(Host, null, ((_a = this.visibleSummary) === null || _a === void 0 ? void 0 : _a.angle) != null && (h("div", { class: "measurement-details-entry" }, h("div", { class: "measurement-details-entry-label" }, "Angle:"), this.formatAngle(this.visibleSummary.angle))), ((_b = this.visibleSummary) === null || _b === void 0 ? void 0 : _b.parallelDistance) != null && (h("div", { class: "measurement-details-entry" }, h("div", { class: "measurement-details-entry-label" }, "Parallel Dist:"), this.formatDistance(this.visibleSummary.parallelDistance))), ((_c = this.visibleSummary) === null || _c === void 0 ? void 0 : _c.minDistance) != null && (h("div", { class: "measurement-details-entry" }, h("div", { class: "measurement-details-entry-label" }, "Min Dist:"), this.formatDistance(this.visibleSummary.minDistance))), ((_d = this.visibleSummary) === null || _d === void 0 ? void 0 : _d.area) != null && (h("div", { class: "measurement-details-entry" }, h("div", { class: "measurement-details-entry-label" }, "Area:"), h("div", { innerHTML: this.formatArea(this.visibleSummary.area) }))), ((_f = (_e = this.visibleSummary) === null || _e === void 0 ? void 0 : _e.distanceVector) === null || _f === void 0 ? void 0 : _f.x) != null && (h("div", { class: "measurement-details-entry" }, h("div", { class: "measurement-details-entry-label x-label" }, "X:"), this.formatDistance((_g = this.visibleSummary.distanceVector) === null || _g === void 0 ? void 0 : _g.x))), ((_j = (_h = this.visibleSummary) === null || _h === void 0 ? void 0 : _h.distanceVector) === null || _j === void 0 ? void 0 : _j.y) != null && (h("div", { class: "measurement-details-entry" }, h("div", { class: "measurement-details-entry-label y-label" }, "Y:"), this.formatDistance((_k = this.visibleSummary.distanceVector) === null || _k === void 0 ? void 0 : _k.y))), ((_m = (_l = this.visibleSummary) === null || _l === void 0 ? void 0 : _l.distanceVector) === null || _m === void 0 ? void 0 : _m.z) != null && (h("div", { class: "measurement-details-entry" }, h("div", { class: "measurement-details-entry-label z-label" }, "Z:"), this.formatDistance((_o = this.visibleSummary.distanceVector) === null || _o === void 0 ? void 0 : _o.z))))) : (h(Host, null));
229
+ return (h(Host, null, this.renderResult('planar-angle', (result) => (h(PlanarAngleResultEntry, { result: result, overlays: this.measurementOverlays, formatter: this.makeAngleFormatter(), onShowOverlay: this.handleShowOverlay, onHideOverlay: this.handleHideOverlay }))), this.renderResult('planar-distance', (result) => (h(PlanarDistanceResultEntry, { result: result, overlays: this.measurementOverlays, formatter: this.makeDistanceFormatter(), onShowOverlay: this.handleShowOverlay, onHideOverlay: this.handleHideOverlay }))), this.renderResult('surface-area', (result) => (h(SurfaceAreaResultEntry, { result: result, overlays: this.measurementOverlays, formatter: this.makeAreaFormatter(), onShowOverlay: this.handleShowOverlay, onHideOverlay: this.handleHideOverlay }))), this.renderResult('minimum-distance', (result) => (h(MinimumDistanceResultEntry, { result: result, overlays: this.measurementOverlays, formatter: this.makeDistanceFormatter(), onShowOverlay: this.handleShowOverlay, onHideOverlay: this.handleHideOverlay })))));
125
230
  }
126
- parseHiddenDetails() {
127
- if (this.hiddenDetailsJson != null) {
128
- this.hiddenDetails = JSON.parse(this.hiddenDetailsJson);
231
+ updateStateFromModel() {
232
+ const isFilteredResultType = (result) => {
233
+ var _a, _b;
234
+ return (_b = (_a = this.resultTypes) === null || _a === void 0 ? void 0 : _a.includes(result.type)) !== null && _b !== void 0 ? _b : true;
235
+ };
236
+ const outcome = this.measurementModel.getOutcome();
237
+ if (outcome != null) {
238
+ this.results = outcome.results.filter(isFilteredResultType);
239
+ this.isApproximate = outcome.isApproximate;
129
240
  }
241
+ else {
242
+ this.results = [];
243
+ this.isApproximate = false;
244
+ }
245
+ }
246
+ renderResult(type, render) {
247
+ const result = this.getResultForType(type);
248
+ return result != null ? render(result) : undefined;
249
+ }
250
+ getResultForType(type) {
251
+ return this.results.find((result) => result.type === type);
252
+ }
253
+ makeDistanceFormatter() {
254
+ return this.makeFormatter((value) => this.distanceMeasurementUnits.convertWorldValueToReal(value), this.distanceMeasurementUnits.unit, this.distanceFormatter);
255
+ }
256
+ makeAngleFormatter() {
257
+ return this.makeFormatter((value) => this.angleMeasurementUnits.convertTo(value), this.angleMeasurementUnits.unit, this.angleFormatter);
258
+ }
259
+ makeAreaFormatter() {
260
+ return this.makeFormatter((value) => this.areaMeasurementUnits.convertWorldValueToReal(value), this.areaMeasurementUnits.unit, this.areaFormatter);
261
+ }
262
+ makeFormatter(convert, units, customFormatter) {
263
+ return (value) => {
264
+ const v = convert(value);
265
+ if (customFormatter != null) {
266
+ return customFormatter(v);
267
+ }
268
+ else {
269
+ return this.formatValue(v, units);
270
+ }
271
+ };
272
+ }
273
+ formatValue(value, unit) {
274
+ const val = value.toFixed(this.fractionalDigits);
275
+ return `${this.isApproximate ? '~' + val : val} ${unit.abbreviatedName}`;
130
276
  }
131
277
  static get watchers() { return {
132
278
  "distanceUnits": ["handleDistanceUnitsChanged"],
133
279
  "angleUnits": ["handleAngleUnitsChanged"],
134
280
  "measurementModel": ["handleMeasurementModelChanged"],
135
- "hiddenDetails": ["handleHiddenDetailsChanged"]
281
+ "resultTypes": ["handleResultTypesChanged"]
136
282
  }; }
137
283
  };
138
284
  ViewerMeasurementDetails.style = viewerMeasurementDetailsCss;
@@ -1,14 +1,17 @@
1
1
  /**!
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
- import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-f0053642.js';
5
- import { v as vector3, h as angle, p as point, l as line3 } from './bundle.esm-8f14ac60.js';
6
- import { M as MEASUREMENT_SNAP_DISTANCE, a as MEASUREMENT_LINE_CAP_LENGTH, t as translateWorldPtToViewport, g as getViewingElementPositions } from './utils-8070900a.js';
7
- import { m as measurementCursor } from './cursors-5157d29d.js';
8
- import { a as cssTransformCenterAt, g as getMouseClientPosition } from './dom-2d6a1e1e.js';
9
- import { g as fromPbVector3f, D as DistanceUnits } from './streamAttributes-7aa486b2.js';
10
- import { V as Viewport } from './viewport-bb7c46d9.js';
11
- import { E as EventDispatcher, m as mapper } from './browser.esm-e6827921.js';
4
+ import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-10c1495a.js';
5
+ import { v as vector3, i as angle, p as point, l as line3 } from './bundle.esm-d899b2d5.js';
6
+ import { M as MEASUREMENT_SNAP_DISTANCE, a as MEASUREMENT_LINE_CAP_LENGTH, t as translateWorldPtToViewport, g as getViewingElementPositions } from './utils-01e4f587.js';
7
+ import { m as measurementCursor } from './cursors-a7ec4adb.js';
8
+ import { a as cssTransformCenterAt, g as getMouseClientPosition } from './dom-780d25be.js';
9
+ import './mapper-4b815e31.js';
10
+ import './grpc-web-client.umd-5982b7b0.js';
11
+ import { e as fromPbVector3f, D as DistanceUnits } from './streamAttributes-d623bb60.js';
12
+ import { M as MeasurementOverlayManager } from './overlays-dbe5d652.js';
13
+ import { V as Viewport } from './viewport-01c886ea.js';
14
+ import { E as EventDispatcher, m as mapper } from './browser.esm-59e914f6.js';
12
15
  import { c as classnames } from './index-455380d0.js';
13
16
  import './_commonjsHelpers-9943807e.js';
14
17
 
@@ -360,21 +363,10 @@ async function getHit(raycaster, pt) {
360
363
  return undefined;
361
364
  }
362
365
  function validMeasurement(start, end) {
363
- return {
364
- type: 'point-to-point',
365
- start,
366
- end,
367
- distance: vector3.distance(start, end),
368
- valid: true,
369
- };
366
+ return { start, end, distance: vector3.distance(start, end), valid: true };
370
367
  }
371
368
  function invalidMeasurement(start, end) {
372
- return {
373
- type: 'point-to-point',
374
- start,
375
- end,
376
- valid: false,
377
- };
369
+ return { start, end, valid: false };
378
370
  }
379
371
 
380
372
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -416,6 +408,11 @@ let ViewerMeasurementDistance = class {
416
408
  registerInstance(this, hostRef);
417
409
  this.editBegin = createEvent(this, "editBegin", 7);
418
410
  this.editEnd = createEvent(this, "editEnd", 7);
411
+ /**
412
+ * Enables the display of axis reference lines between the start and end
413
+ * point.
414
+ */
415
+ this.showAxisReferenceLines = false;
419
416
  /**
420
417
  * The distance, in pixels, between the mouse and nearest snappable edge. A
421
418
  * value of 0 disables snapping.
@@ -460,6 +457,7 @@ let ViewerMeasurementDistance = class {
460
457
  this.stateMap = {};
461
458
  this.model = PointToPointInteractionModel.empty();
462
459
  this.controller = new PointToPointInteractionController(this.model);
460
+ this.overlays = new MeasurementOverlayManager();
463
461
  this.measurementUnits = new DistanceUnits(this.units);
464
462
  this.isUserInteractingWithModel = false;
465
463
  this.handleFrameDrawn = () => {
@@ -618,13 +616,13 @@ let ViewerMeasurementDistance = class {
618
616
  const { startPt, endPt, labelPt, indicatorPt, hideStart, hideEnd } = positions;
619
617
  const distance = this.formatDistance(this.distance);
620
618
  if (this.mode === 'edit') {
621
- return (h(Host, null, h("div", { class: "measurement" }, h(DistanceMeasurementRenderer, { startPt: startPt, endPt: endPt, centerPt: labelPt, indicatorPt: indicatorPt, distance: distance, anchorLabelOffset: this.anchorLabelOffset, lineCapLength: this.lineCapLength, hideStartAnchor: hideStart, hideEndAnchor: hideEnd, onStartAnchorPointerDown: this.handleEditAnchor('start'), onEndAnchorPointerDown: this.handleEditAnchor('end') }))));
619
+ return (h(Host, null, this.showAxisReferenceLines && (h("vertex-viewer-measurement-overlays", { measurementOverlays: this.overlays, viewer: this.viewer })), h("div", { class: "measurement" }, h(DistanceMeasurementRenderer, { startPt: startPt, endPt: endPt, centerPt: labelPt, indicatorPt: indicatorPt, distance: distance, anchorLabelOffset: this.anchorLabelOffset, lineCapLength: this.lineCapLength, hideStartAnchor: hideStart, hideEndAnchor: hideEnd, onStartAnchorPointerDown: this.handleEditAnchor('start'), onEndAnchorPointerDown: this.handleEditAnchor('end') }))));
622
620
  }
623
621
  else if (this.mode === 'replace') {
624
- return (h(Host, null, h("div", { class: "measurement" }, h(DistanceMeasurementRenderer, { startPt: startPt, endPt: endPt, centerPt: labelPt, indicatorPt: indicatorPt, distance: distance, hideStartAnchor: hideStart, hideEndAnchor: hideEnd, anchorLabelOffset: this.anchorLabelOffset, lineCapLength: this.lineCapLength }))));
622
+ return (h(Host, null, this.showAxisReferenceLines && (h("vertex-viewer-measurement-overlays", { measurementOverlays: this.overlays, viewer: this.viewer })), h("div", { class: "measurement" }, h(DistanceMeasurementRenderer, { startPt: startPt, endPt: endPt, centerPt: labelPt, indicatorPt: indicatorPt, distance: distance, hideStartAnchor: hideStart, hideEndAnchor: hideEnd, anchorLabelOffset: this.anchorLabelOffset, lineCapLength: this.lineCapLength }))));
625
623
  }
626
624
  else {
627
- return (h(Host, null, h("div", { class: "measurement" }, h(DistanceMeasurementRenderer, { startPt: startPt, endPt: endPt, centerPt: labelPt, indicatorPt: this.indicatorPt, distance: distance, hideStartAnchor: hideStart, hideEndAnchor: hideEnd, anchorLabelOffset: this.anchorLabelOffset, lineCapLength: this.lineCapLength, linePointerEvents: "painted" }))));
625
+ return (h(Host, null, this.showAxisReferenceLines && (h("vertex-viewer-measurement-overlays", { measurementOverlays: this.overlays, viewer: this.viewer })), h("div", { class: "measurement" }, h(DistanceMeasurementRenderer, { startPt: startPt, endPt: endPt, centerPt: labelPt, indicatorPt: this.indicatorPt, distance: distance, hideStartAnchor: hideStart, hideEndAnchor: hideEnd, anchorLabelOffset: this.anchorLabelOffset, lineCapLength: this.lineCapLength, linePointerEvents: "painted" }))));
628
626
  }
629
627
  }
630
628
  /**
@@ -671,6 +669,18 @@ let ViewerMeasurementDistance = class {
671
669
  this.updateCamera();
672
670
  this.updateDepthBuffer();
673
671
  this.updateMeasurementPropsFromModel();
672
+ this.updateOverlays();
673
+ }
674
+ updateOverlays() {
675
+ var _a;
676
+ (_a = this.overlay) === null || _a === void 0 ? void 0 : _a.dispose();
677
+ if (this.showAxisReferenceLines &&
678
+ this.interactionCount === 0 &&
679
+ !this.invalid &&
680
+ this.start != null &&
681
+ this.end != null) {
682
+ this.overlay = this.overlays.addDistanceVector(this.start, this.end);
683
+ }
674
684
  }
675
685
  async setCursor(cursor) {
676
686
  var _a, _b;
@@ -904,52 +914,4 @@ function parseVector3(value) {
904
914
  }
905
915
  ViewerMeasurementDistance.style = viewerMeasurementDistanceCss;
906
916
 
907
- const viewerMeasurementLineCss = ":host{display:block;--viewer-measurement-line-stroke:var(--white);--viewer-measurement-line-stroke-opacity:0.75;--viewer-measurement-line-stroke-width:1.25px;--viewer-measurement-line-fill:var(--neutral-900);--viewer-measurement-line-fill-width:2px;--viewer-measurement-line-start-cap-visibility:initial;--viewer-measurement-line-end-cap-visibility:initial}svg{width:100%;height:100%}.line-stroke{stroke-width:calc(\n var(--viewer-measurement-line-fill-width) +\n var(--viewer-measurement-line-stroke-width)\n );stroke:var(--viewer-measurement-line-stroke);opacity:var(--viewer-measurement-line-stroke-opacity)}.line-fill{stroke-width:var(--viewer-measurement-line-fill-width);stroke:var(--viewer-measurement-line-fill)}.start-cap{visibility:var(--viewer-measurement-line-start-cap-visibility)}.end-cap{visibility:var(--viewer-measurement-line-end-cap-visibility)}";
908
-
909
- let ViewerMeasurementLine = class {
910
- constructor(hostRef) {
911
- registerInstance(this, hostRef);
912
- /**
913
- * A point that specifies the starting point of the line.
914
- */
915
- this.start = point.create();
916
- /**
917
- * A point that specifies the ending point of the line.
918
- */
919
- this.end = point.create();
920
- /**
921
- * A length of the line cap. The line cap is a line at each end of a line.
922
- */
923
- this.capLength = 0;
924
- /**
925
- * The type of [SVG pointer
926
- * events](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/pointer-events)
927
- * that the line should respond to.
928
- */
929
- this.pointerEvents = 'none';
930
- }
931
- /**
932
- * @ignore
933
- */
934
- render() {
935
- const angle$1 = angle.fromPoints(this.start, this.end);
936
- const lineFillEndCaps = getEndCapPoints(this.start, this.end, angle$1, this.capLength);
937
- const lineStrokeEndCaps = getEndCapPoints(this.start, this.end, angle$1, this.capLength + 1);
938
- return (h("svg", null, h("g", { class: "line-stroke", "pointer-events": this.pointerEvents }, h("line", { class: "line", x1: this.start.x, y1: this.start.y, x2: this.end.x, y2: this.end.y }), h("line", { class: "start-cap", x1: lineStrokeEndCaps.startEndCap.start.x, y1: lineStrokeEndCaps.startEndCap.start.y, x2: lineStrokeEndCaps.startEndCap.end.x, y2: lineStrokeEndCaps.startEndCap.end.y }), h("line", { class: "end-cap", x1: lineStrokeEndCaps.endEndCap.start.x, y1: lineStrokeEndCaps.endEndCap.start.y, x2: lineStrokeEndCaps.endEndCap.end.x, y2: lineStrokeEndCaps.endEndCap.end.y })), h("g", { class: "line-fill", "pointer-events": this.pointerEvents }, h("line", { class: "line", x1: this.start.x, y1: this.start.y, x2: this.end.x, y2: this.end.y }), h("line", { class: "start-cap", x1: lineFillEndCaps.startEndCap.start.x, y1: lineFillEndCaps.startEndCap.start.y, x2: lineFillEndCaps.startEndCap.end.x, y2: lineFillEndCaps.startEndCap.end.y }), h("line", { class: "end-cap", x1: lineFillEndCaps.endEndCap.start.x, y1: lineFillEndCaps.endEndCap.start.y, x2: lineFillEndCaps.endEndCap.end.x, y2: lineFillEndCaps.endEndCap.end.y }))));
939
- }
940
- };
941
- function getEndCapPoints(start, end, angle, length) {
942
- return {
943
- startEndCap: getPerpendicularLine(start, angle, length),
944
- endEndCap: getPerpendicularLine(end, angle, length),
945
- };
946
- }
947
- function getPerpendicularLine(pt, angle, length) {
948
- const perpAngle = angle + Math.PI / 2;
949
- const start = point.add(pt, point.polar(length / 2, perpAngle));
950
- const end = point.add(pt, point.polar(length / 2, perpAngle + Math.PI));
951
- return { start, end };
952
- }
953
- ViewerMeasurementLine.style = viewerMeasurementLineCss;
954
-
955
- export { ViewerMeasurementDistance as vertex_viewer_measurement_distance, ViewerMeasurementLine as vertex_viewer_measurement_line };
917
+ export { ViewerMeasurementDistance as vertex_viewer_measurement_distance };