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