@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.
- package/dist/cjs/{config-acd7cea9.js → config-90ee43d5.js} +1 -1
- package/dist/cjs/{cursors-399a9648.js → cursors-ad2fd395.js} +7 -0
- package/dist/cjs/{controller-8cbcdd8d.js → entities-aa59890e.js} +57 -22
- package/dist/cjs/{index-cc65325e.js → index-e100709a.js} +64 -3
- package/dist/cjs/index.cjs.js +21 -11
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{model-18ef3363.js → mapper-f6e6cafe.js} +37 -191
- package/dist/cjs/model-4ec0c36e.js +134 -0
- package/dist/cjs/overlays-8a582edf.js +76 -0
- package/dist/cjs/results-bc325974.js +24 -0
- package/dist/cjs/{scene-ffee07ee.js → scene-f4040800.js} +1 -1
- package/dist/cjs/{stencil-bd453a38.js → stencil-a664cd10.js} +1 -1
- package/dist/cjs/{streamAttributes-9d6226ac.js → streamAttributes-d6236448.js} +87 -30
- package/dist/cjs/vertex-scene-tree-search_3.cjs.entry.js +2 -2
- package/dist/cjs/vertex-scene-tree-table-cell.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-column.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-header.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-table-resize-divider.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree-toolbar-group.cjs.entry.js +1 -1
- package/dist/cjs/vertex-scene-tree.cjs.entry.js +3 -3
- package/dist/cjs/vertex-viewer-button_3.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-default-toolbar.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-dom-element_3.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer-icon.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-layer.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup-arrow_3.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup-tool.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-markup.cjs.entry.js +1 -1
- package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +221 -75
- package/dist/cjs/{vertex-viewer-measurement-distance_2.cjs.entry.js → vertex-viewer-measurement-distance.cjs.entry.js} +30 -69
- package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +170 -0
- package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +163 -55
- package/dist/cjs/vertex-viewer-measurement-tool.cjs.entry.js +2 -2
- package/dist/cjs/vertex-viewer-measurements.cjs.entry.js +33 -4
- package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +4 -4
- package/dist/cjs/vertex-viewer.cjs.entry.js +58 -10
- package/dist/cjs/viewer.cjs.js +2 -2
- package/dist/cjs/{viewport-51aa05ab.js → viewport-8c39089f.js} +11 -0
- package/dist/collection/collection-manifest.json +1 -0
- package/dist/collection/components/viewer/viewer.js +2 -2
- package/dist/collection/components/viewer-dom-renderer/viewer-dom-renderer.js +2 -2
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details-entry.js +14 -0
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details-results.js +22 -0
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.css +3 -10
- package/dist/collection/components/viewer-measurement-details/viewer-measurement-details.js +125 -188
- package/dist/collection/components/viewer-measurement-distance/interactions.js +3 -14
- package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +41 -1
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays-components.js +30 -0
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.css +51 -0
- package/dist/collection/components/viewer-measurement-overlays/viewer-measurement-overlays.js +149 -0
- package/dist/collection/components/viewer-measurement-precise/viewer-measurement-precise.js +118 -26
- package/dist/collection/components/viewer-measurements/viewer-measurements.js +67 -2
- package/dist/collection/components/viewer-view-cube/viewer-view-cube.css +21 -3
- package/dist/collection/index.js +2 -2
- package/dist/collection/lib/cursors.js +7 -1
- package/dist/collection/lib/elementRectObserver.js +19 -0
- package/dist/collection/lib/interactions/interactionApi.js +53 -4
- package/dist/collection/lib/mappers/frameStreaming.js +2 -4
- package/dist/collection/lib/measurement/controller.js +21 -17
- package/dist/collection/lib/measurement/entities.js +34 -0
- package/dist/collection/lib/measurement/index.js +4 -2
- package/dist/collection/lib/measurement/interactions.js +74 -28
- package/dist/collection/lib/measurement/mapper.js +5 -5
- package/dist/collection/lib/measurement/model.js +24 -85
- package/dist/collection/lib/measurement/outcomes.js +2 -0
- package/dist/collection/lib/measurement/overlays.js +69 -0
- package/dist/collection/lib/measurement/results.js +17 -0
- package/dist/collection/lib/types/entities.js +5 -1
- package/dist/collection/lib/types/featureMap.js +14 -5
- package/dist/collection/lib/types/frame.js +3 -3
- package/dist/collection/lib/types/measurementUnits.js +7 -7
- package/dist/collection/lib/types/viewport.js +12 -1
- package/dist/collection/testing/eventually.js +30 -0
- package/dist/collection/testing/fixtures.js +11 -4
- package/dist/collection/testing/index.js +2 -1
- package/dist/custom-elements/index.d.ts +6 -0
- package/dist/custom-elements/index.js +851 -287
- package/dist/esm/{browser.esm-e6827921.js → browser.esm-59e914f6.js} +1 -1
- package/dist/esm/{bundle.esm-8f14ac60.js → bundle.esm-d899b2d5.js} +1 -1
- package/dist/esm/{config-a200c227.js → config-604c644e.js} +2 -2
- package/dist/esm/{cursors-5157d29d.js → cursors-a7ec4adb.js} +8 -2
- package/dist/esm/{dom-2d6a1e1e.js → dom-780d25be.js} +1 -1
- package/dist/esm/{controller-a756cf9c.js → entities-759d97cd.js} +52 -18
- package/dist/esm/{index-f0053642.js → index-10c1495a.js} +64 -3
- package/dist/esm/index.js +13 -11
- package/dist/esm/index.mjs +13 -11
- package/dist/esm/loader.js +2 -2
- package/dist/esm/loader.mjs +2 -2
- package/dist/esm/{model-f711a825.js → mapper-4b815e31.js} +37 -190
- package/dist/esm/{markup-e46623b3.js → markup-1d177b4a.js} +2 -2
- package/dist/esm/{measurement-702d6b8c.js → measurement-12cdbf5c.js} +2 -2
- package/dist/esm/model-e5a4f00f.js +132 -0
- package/dist/esm/overlays-dbe5d652.js +74 -0
- package/dist/esm/{png-decoder-59a0e9c2.js → png-decoder-3f1fa486.js} +1 -1
- package/dist/esm/results-994bdb50.js +22 -0
- package/dist/esm/{scene-16490983.js → scene-9ac8a484.js} +3 -3
- package/dist/esm/{stencil-7d04d41a.js → stencil-9bf7fb9e.js} +1 -1
- package/dist/esm/{streamAttributes-7aa486b2.js → streamAttributes-d623bb60.js} +77 -20
- package/dist/esm/{utils-8070900a.js → utils-01e4f587.js} +1 -1
- package/dist/esm/{utils-953a1619.js → utils-5e57bf24.js} +1 -1
- package/dist/esm/vertex-scene-tree-search_3.entry.js +3 -3
- package/dist/esm/vertex-scene-tree-table-cell.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-column.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-header.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-table-resize-divider.entry.js +1 -1
- package/dist/esm/vertex-scene-tree-toolbar-group.entry.js +1 -1
- package/dist/esm/vertex-scene-tree.entry.js +5 -5
- package/dist/esm/vertex-viewer-button_3.entry.js +1 -1
- package/dist/esm/vertex-viewer-default-toolbar.entry.js +1 -1
- package/dist/esm/vertex-viewer-dom-element_3.entry.js +6 -6
- package/dist/esm/vertex-viewer-icon.entry.js +1 -1
- package/dist/esm/vertex-viewer-layer.entry.js +1 -1
- package/dist/esm/vertex-viewer-markup-arrow_3.entry.js +4 -4
- package/dist/esm/vertex-viewer-markup-tool.entry.js +5 -5
- package/dist/esm/vertex-viewer-markup.entry.js +5 -5
- package/dist/esm/vertex-viewer-measurement-details.entry.js +221 -75
- package/dist/esm/{vertex-viewer-measurement-distance_2.entry.js → vertex-viewer-measurement-distance.entry.js} +35 -73
- package/dist/esm/vertex-viewer-measurement-line_2.entry.js +165 -0
- package/dist/esm/vertex-viewer-measurement-precise.entry.js +160 -52
- package/dist/esm/vertex-viewer-measurement-tool.entry.js +6 -6
- package/dist/esm/vertex-viewer-measurements.entry.js +36 -7
- package/dist/esm/vertex-viewer-view-cube.entry.js +6 -6
- package/dist/esm/vertex-viewer.entry.js +61 -13
- package/dist/esm/viewer.js +2 -2
- package/dist/esm/{viewport-bb7c46d9.js → viewport-01c886ea.js} +12 -1
- package/dist/types/components/viewer-dom-renderer/viewer-dom-renderer.d.ts +1 -1
- package/dist/types/components/viewer-measurement-details/viewer-measurement-details-entry.d.ts +8 -0
- package/dist/types/components/viewer-measurement-details/viewer-measurement-details-results.d.ts +15 -0
- package/dist/types/components/viewer-measurement-details/viewer-measurement-details.d.ts +44 -42
- package/dist/types/components/viewer-measurement-distance/interactions.d.ts +23 -1
- package/dist/types/components/viewer-measurement-distance/viewer-measurement-distance.d.ts +8 -0
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays-components.d.ts +10 -0
- package/dist/types/components/viewer-measurement-overlays/viewer-measurement-overlays.d.ts +41 -0
- package/dist/types/components/viewer-measurement-precise/viewer-measurement-precise.d.ts +62 -6
- package/dist/types/components/viewer-measurements/viewer-measurements.d.ts +12 -0
- package/dist/types/components.d.ts +103 -40
- package/dist/types/index.d.ts +1 -1
- package/dist/types/lib/cursors.d.ts +5 -0
- package/dist/types/lib/elementRectObserver.d.ts +8 -0
- package/dist/types/lib/interactions/interactionApi.d.ts +32 -5
- package/dist/types/lib/measurement/controller.d.ts +8 -7
- package/dist/types/lib/measurement/entities.d.ts +10 -0
- package/dist/types/lib/measurement/index.d.ts +3 -1
- package/dist/types/lib/measurement/interactions.d.ts +19 -5
- package/dist/types/lib/measurement/mapper.d.ts +1 -1
- package/dist/types/lib/measurement/model.d.ts +18 -153
- package/dist/types/lib/measurement/outcomes.d.ts +8 -0
- package/dist/types/lib/measurement/overlays.d.ts +38 -0
- package/dist/types/lib/measurement/results.d.ts +90 -0
- package/dist/types/lib/types/entities.d.ts +5 -1
- package/dist/types/lib/types/featureMap.d.ts +2 -2
- package/dist/types/lib/types/measurementUnits.d.ts +1 -1
- package/dist/types/lib/types/viewport.d.ts +9 -1
- package/dist/types/testing/eventually.d.ts +15 -0
- package/dist/types/testing/fixtures.d.ts +2 -2
- package/dist/types/testing/index.d.ts +1 -0
- package/dist/viewer/index.esm.js +1 -1
- package/dist/viewer/p-081e6873.js +4 -0
- package/dist/viewer/{p-5d82c131.entry.js → p-099fe6ca.entry.js} +1 -1
- package/dist/viewer/{p-784914e4.js → p-0aba71fd.js} +1 -1
- package/dist/viewer/p-0aeab3fc.js +4 -0
- package/dist/viewer/p-0eb195dd.entry.js +4 -0
- package/dist/viewer/p-1a7df99a.entry.js +4 -0
- package/dist/viewer/{p-f70d8def.js → p-301660cf.js} +1 -1
- package/dist/viewer/{p-a0e49d10.entry.js → p-31658489.entry.js} +1 -1
- package/dist/viewer/{p-95f3a81c.entry.js → p-353cfc7a.entry.js} +1 -1
- package/dist/viewer/p-364ce21c.js +4 -0
- package/dist/viewer/{p-a5a0bf86.js → p-3f6ac74f.js} +1 -1
- package/dist/viewer/p-423410be.js +4 -0
- package/dist/viewer/{p-6f71f0f2.js → p-439220c6.js} +1 -1
- package/dist/viewer/{p-e84ed098.entry.js → p-46459921.entry.js} +1 -1
- package/dist/viewer/{p-c23a8b34.entry.js → p-4717c98e.entry.js} +1 -1
- package/dist/viewer/p-4985fad5.js +4 -0
- package/dist/viewer/{p-ba393340.entry.js → p-61b1097b.entry.js} +1 -1
- package/dist/viewer/{p-011eecd5.entry.js → p-6370098c.entry.js} +1 -1
- package/dist/viewer/p-67446e35.js +4 -0
- package/dist/viewer/p-7006fd4e.entry.js +4 -0
- package/dist/viewer/{p-a20e4ea1.entry.js → p-70ca1ea7.entry.js} +1 -1
- package/dist/viewer/p-76ec0245.js +4 -0
- package/dist/viewer/p-7cad9bf4.js +4 -0
- package/dist/viewer/p-7f25dcb5.entry.js +4 -0
- package/dist/viewer/{p-ca6bbe53.entry.js → p-8decee06.entry.js} +1 -1
- package/dist/viewer/{p-b7ffa306.entry.js → p-915d95ad.entry.js} +1 -1
- package/dist/viewer/{p-4485ac6d.js → p-a0df0e0c.js} +1 -1
- package/dist/viewer/{p-cc9888be.entry.js → p-a455ae02.entry.js} +1 -1
- package/dist/viewer/{p-a6a8026f.js → p-acf22d3e.js} +1 -1
- package/dist/viewer/{p-653aca1b.entry.js → p-b2b48a42.entry.js} +1 -1
- package/dist/viewer/p-bc9b1e67.entry.js +4 -0
- package/dist/viewer/p-c458f191.entry.js +32 -0
- package/dist/viewer/p-cafa57a6.js +4 -0
- package/dist/viewer/p-d00e9203.js +4 -0
- package/dist/viewer/{p-3e96bd62.entry.js → p-d2bcf788.entry.js} +1 -1
- package/dist/viewer/p-d90f2f6d.entry.js +4 -0
- package/dist/viewer/p-da2f4a56.js +4 -0
- package/dist/viewer/{p-5a2e34e1.entry.js → p-e07377fa.entry.js} +1 -1
- package/dist/viewer/{p-40800e8d.entry.js → p-f755af5a.entry.js} +1 -1
- package/dist/viewer/p-f7cb7e59.js +4 -0
- package/dist/viewer/p-fad9693e.js +4 -0
- package/dist/viewer/p-fe11d694.js +4 -0
- package/dist/viewer/{p-b92a3ac2.entry.js → p-fec1a8d0.entry.js} +1 -1
- package/dist/viewer/viewer.css +1 -1
- package/dist/viewer/viewer.esm.js +1 -1
- package/package.json +11 -10
- package/dist/cjs/summary-7bbdb4c9.js +0 -45
- package/dist/collection/lib/measurement/summary.js +0 -38
- package/dist/esm/summary-0a3d0bf9.js +0 -43
- package/dist/types/lib/measurement/summary.d.ts +0 -11
- package/dist/viewer/p-03e482ff.js +0 -4
- package/dist/viewer/p-0c052bc8.entry.js +0 -4
- package/dist/viewer/p-148cd792.js +0 -4
- package/dist/viewer/p-26d99e2d.entry.js +0 -4
- package/dist/viewer/p-38eeacc5.js +0 -4
- package/dist/viewer/p-39d1720c.js +0 -4
- package/dist/viewer/p-5dc17b8b.js +0 -4
- package/dist/viewer/p-5fea3491.js +0 -4
- package/dist/viewer/p-6b700561.entry.js +0 -4
- package/dist/viewer/p-6cd7a6e0.js +0 -4
- package/dist/viewer/p-75337d0b.js +0 -4
- package/dist/viewer/p-b83cc8a9.js +0 -4
- package/dist/viewer/p-d2a9e047.js +0 -4
- package/dist/viewer/p-d40bd835.entry.js +0 -4
- package/dist/viewer/p-e10b1526.js +0 -4
- package/dist/viewer/p-ec8a1a68.entry.js +0 -4
- package/dist/viewer/p-f4a8c901.js +0 -4
- package/dist/viewer/p-f77dde26.entry.js +0 -4
|
@@ -35,15 +35,15 @@ function __extends(d, b) {
|
|
|
35
35
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
var __assign = function() {
|
|
39
|
-
__assign = Object.assign || function __assign(t) {
|
|
38
|
+
var __assign$2 = function() {
|
|
39
|
+
__assign$2 = Object.assign || function __assign(t) {
|
|
40
40
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
41
41
|
s = arguments[i];
|
|
42
42
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
43
43
|
}
|
|
44
44
|
return t;
|
|
45
45
|
};
|
|
46
|
-
return __assign.apply(this, arguments);
|
|
46
|
+
return __assign$2.apply(this, arguments);
|
|
47
47
|
};
|
|
48
48
|
|
|
49
49
|
function __rest(s, e) {
|
|
@@ -2680,7 +2680,7 @@ function defaults() {
|
|
|
2680
2680
|
objects[_i] = arguments[_i];
|
|
2681
2681
|
}
|
|
2682
2682
|
var _a = __read(objects), a = _a[0], other = _a.slice(1);
|
|
2683
|
-
var result = __assign({}, a);
|
|
2683
|
+
var result = __assign$2({}, a);
|
|
2684
2684
|
if (other.length === 0) {
|
|
2685
2685
|
return result;
|
|
2686
2686
|
}
|
|
@@ -2753,7 +2753,7 @@ function fromPairs(pairs) {
|
|
|
2753
2753
|
return pairs.reduce(function (result, pair) {
|
|
2754
2754
|
var _a;
|
|
2755
2755
|
if (pair != null) {
|
|
2756
|
-
return __assign(__assign({}, result), (_a = {}, _a[pair[0]] = pair[1], _a));
|
|
2756
|
+
return __assign$2(__assign$2({}, result), (_a = {}, _a[pair[0]] = pair[1], _a));
|
|
2757
2757
|
}
|
|
2758
2758
|
else {
|
|
2759
2759
|
return result;
|
|
@@ -2845,7 +2845,7 @@ var isEqual$4 = function (a, b) {
|
|
|
2845
2845
|
};
|
|
2846
2846
|
var replacePath = function (path, uri) {
|
|
2847
2847
|
var pathWithForwardSlash = path[0] === '/' ? path : "/".concat(path);
|
|
2848
|
-
return __assign(__assign({}, uri), { path: pathWithForwardSlash });
|
|
2848
|
+
return __assign$2(__assign$2({}, uri), { path: pathWithForwardSlash });
|
|
2849
2849
|
};
|
|
2850
2850
|
var pathAsArray = function (uri) {
|
|
2851
2851
|
return uri.path != null ? sanitizePath(uri.path.split('/')) : [];
|
|
@@ -2862,7 +2862,7 @@ var addQueryString = function (query, uri) {
|
|
|
2862
2862
|
var addQueryEntry = function (query, uri) {
|
|
2863
2863
|
if (query[1] != null) {
|
|
2864
2864
|
var newQuery = __spreadArray(__spreadArray([], __read(queryAsArray(uri)), false), [query], false);
|
|
2865
|
-
return __assign(__assign({}, uri), { query: newQuery
|
|
2865
|
+
return __assign$2(__assign$2({}, uri), { query: newQuery
|
|
2866
2866
|
.map(function (entry) { return entry.map(encodeURIComponent).join('='); })
|
|
2867
2867
|
.join('&') });
|
|
2868
2868
|
}
|
|
@@ -2877,7 +2877,7 @@ var addQueryParams = function (params, uri) {
|
|
|
2877
2877
|
return mapAsEntries(params).reduce(function (result, entry) { return addQueryEntry(entry, result); }, uri);
|
|
2878
2878
|
};
|
|
2879
2879
|
var replaceFragment = function (fragment, uri) {
|
|
2880
|
-
return __assign(__assign({}, uri), { fragment: fragment });
|
|
2880
|
+
return __assign$2(__assign$2({}, uri), { fragment: fragment });
|
|
2881
2881
|
};
|
|
2882
2882
|
/**
|
|
2883
2883
|
* Return an array of name/value pairs representing the query string of a URI.
|
|
@@ -2914,7 +2914,7 @@ var queryAsMap = function (uri) {
|
|
|
2914
2914
|
return queryAsArray(uri).reduce(function (map, _a) {
|
|
2915
2915
|
var _b;
|
|
2916
2916
|
var _c = __read(_a, 2), name = _c[0], value = _c[1];
|
|
2917
|
-
return __assign(__assign({}, map), (_b = {}, _b[name] = value, _b));
|
|
2917
|
+
return __assign$2(__assign$2({}, map), (_b = {}, _b[name] = value, _b));
|
|
2918
2918
|
}, {});
|
|
2919
2919
|
};
|
|
2920
2920
|
var toString = function (uri) {
|
|
@@ -3156,7 +3156,7 @@ var EventDispatcher = /** @class */ (function () {
|
|
|
3156
3156
|
controller.abort();
|
|
3157
3157
|
resolve(event);
|
|
3158
3158
|
}
|
|
3159
|
-
}, __assign(__assign({}, opts), { abort: controller.signal }));
|
|
3159
|
+
}, __assign$2(__assign$2({}, opts), { abort: controller.signal }));
|
|
3160
3160
|
})];
|
|
3161
3161
|
});
|
|
3162
3162
|
});
|
|
@@ -3345,11 +3345,17 @@ CursorManager.NORMAL_PRIORITY = 10;
|
|
|
3345
3345
|
* A constant representing the high priority cursors.
|
|
3346
3346
|
*/
|
|
3347
3347
|
CursorManager.HIGH_PRIORITY = 20;
|
|
3348
|
+
// CSS SVG images need to be URL encoded: https://yoksel.github.io/url-encoder/
|
|
3348
3349
|
const measurementCursor = {
|
|
3349
3350
|
url: "data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath d='M21.5 8h-19a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h19a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5zm-.5 6H3V9h3v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2z' stroke='%23fff' stroke-width='1.25' stroke-opacity='0.5' stroke-miterlimit='10' shape-rendering='crispEdges'/%3E%3Cpath d='M21.5 8h-19a.5.5 0 00-.5.5v6a.5.5 0 00.5.5h19a.5.5 0 00.5-.5v-6a.5.5 0 00-.5-.5zm-.5 6H3V9h3v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2v2.5a.5.5 0 001 0V9h2z' shape-rendering='crispEdges'/%3E%3C/svg%3E",
|
|
3350
3351
|
offsetX: -24,
|
|
3351
3352
|
offsetY: -24,
|
|
3352
3353
|
};
|
|
3354
|
+
const measurementWithArrowCursor = {
|
|
3355
|
+
url: "data:image/svg+xml;utf8,%3Csvg id='icons' xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3E%3Cdefs%3E%3Cstyle%3E.cls-1%7Bstroke:%23fff;stroke-miterlimit:10;stroke-width:2px;%7D.cls-2%7Bfill:%23fff;%7D.cls-2,.cls-3%7Bfill-rule:evenodd;%7D%3C/style%3E%3C/defs%3E%3Cpath class='cls-1' d='M27.46,21h-19a.5.5,0,0,0-.5.5v6a.5.5,0,0,0,.5.5h19a.5.5,0,0,0,.5-.5v-6A.5.5,0,0,0,27.46,21ZM27,27H9V22h3v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2Z'/%3E%3Cpath d='M27.46,21h-19a.5.5,0,0,0-.5.5v6a.5.5,0,0,0,.5.5h19a.5.5,0,0,0,.5-.5v-6A.5.5,0,0,0,27.46,21ZM27,27H9V22h3v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2v2.5a.5.5,0,0,0,1,0V22h2Z'/%3E%3Cpath class='cls-2' d='M1,17V1L12.59,12.62H5.81l-.41.12Z'/%3E%3Cpath class='cls-2' d='M10.08,17.69l-3.6,1.53L1.8,8.14,5.48,6.58Z'/%3E%3Cpath class='cls-3' d='M8.75,17l-1.84.77-3.1-7.37,1.84-.78Z'/%3E%3Cpath class='cls-3' d='M2,3.41V14.6l3-2.87.43-.14h4.76Z'/%3E%3C/svg%3E",
|
|
3356
|
+
offsetX: -30,
|
|
3357
|
+
offsetY: -30,
|
|
3358
|
+
};
|
|
3353
3359
|
|
|
3354
3360
|
var commonjsGlobal$1 = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
3355
3361
|
|
|
@@ -12443,7 +12449,8 @@ proto.vertexvis.protobuf.core.MeasurementOutcome.prototype.toObject = function(o
|
|
|
12443
12449
|
proto.vertexvis.protobuf.core.MeasurementOutcome.toObject = function(includeInstance, msg) {
|
|
12444
12450
|
var obj = {
|
|
12445
12451
|
resultsList: googleProtobuf.Message.toObjectList(msg.getResultsList(),
|
|
12446
|
-
proto.vertexvis.protobuf.core.MeasurementResult.toObject, includeInstance)
|
|
12452
|
+
proto.vertexvis.protobuf.core.MeasurementResult.toObject, includeInstance),
|
|
12453
|
+
isApproximate: googleProtobuf.Message.getFieldWithDefault(msg, 2, false)
|
|
12447
12454
|
};
|
|
12448
12455
|
|
|
12449
12456
|
if (includeInstance) {
|
|
@@ -12485,6 +12492,10 @@ proto.vertexvis.protobuf.core.MeasurementOutcome.deserializeBinaryFromReader = f
|
|
|
12485
12492
|
reader.readMessage(value,proto.vertexvis.protobuf.core.MeasurementResult.deserializeBinaryFromReader);
|
|
12486
12493
|
msg.addResults(value);
|
|
12487
12494
|
break;
|
|
12495
|
+
case 2:
|
|
12496
|
+
var value = /** @type {boolean} */ (reader.readBool());
|
|
12497
|
+
msg.setIsApproximate(value);
|
|
12498
|
+
break;
|
|
12488
12499
|
default:
|
|
12489
12500
|
reader.skipField();
|
|
12490
12501
|
break;
|
|
@@ -12522,6 +12533,13 @@ proto.vertexvis.protobuf.core.MeasurementOutcome.serializeBinaryToWriter = funct
|
|
|
12522
12533
|
proto.vertexvis.protobuf.core.MeasurementResult.serializeBinaryToWriter
|
|
12523
12534
|
);
|
|
12524
12535
|
}
|
|
12536
|
+
f = message.getIsApproximate();
|
|
12537
|
+
if (f) {
|
|
12538
|
+
writer.writeBool(
|
|
12539
|
+
2,
|
|
12540
|
+
f
|
|
12541
|
+
);
|
|
12542
|
+
}
|
|
12525
12543
|
};
|
|
12526
12544
|
|
|
12527
12545
|
|
|
@@ -12556,6 +12574,23 @@ proto.vertexvis.protobuf.core.MeasurementOutcome.prototype.clearResultsList = fu
|
|
|
12556
12574
|
};
|
|
12557
12575
|
|
|
12558
12576
|
|
|
12577
|
+
/**
|
|
12578
|
+
* optional bool is_approximate = 2;
|
|
12579
|
+
* Note that Boolean fields may be set to 0/1 when serialized from a Java server.
|
|
12580
|
+
* You should avoid comparisons like {@code val === true/false} in those cases.
|
|
12581
|
+
* @return {boolean}
|
|
12582
|
+
*/
|
|
12583
|
+
proto.vertexvis.protobuf.core.MeasurementOutcome.prototype.getIsApproximate = function() {
|
|
12584
|
+
return /** @type {boolean} */ (googleProtobuf.Message.getFieldWithDefault(this, 2, false));
|
|
12585
|
+
};
|
|
12586
|
+
|
|
12587
|
+
|
|
12588
|
+
/** @param {boolean} value */
|
|
12589
|
+
proto.vertexvis.protobuf.core.MeasurementOutcome.prototype.setIsApproximate = function(value) {
|
|
12590
|
+
googleProtobuf.Message.setProto3BooleanField(this, 2, value);
|
|
12591
|
+
};
|
|
12592
|
+
|
|
12593
|
+
|
|
12559
12594
|
goog.object.extend(exports, proto.vertexvis.protobuf.core);
|
|
12560
12595
|
});
|
|
12561
12596
|
|
|
@@ -15594,16 +15629,16 @@ function invert(matrix) {
|
|
|
15594
15629
|
function lookAt(m, position, target, up) {
|
|
15595
15630
|
var z = subtract(position, target);
|
|
15596
15631
|
if (magnitudeSquared(z) === 0) {
|
|
15597
|
-
z = __assign(__assign({}, z), { z: 1 });
|
|
15632
|
+
z = __assign$2(__assign$2({}, z), { z: 1 });
|
|
15598
15633
|
}
|
|
15599
15634
|
z = normalize(z);
|
|
15600
15635
|
var x = cross(up, z);
|
|
15601
15636
|
if (magnitudeSquared(x) === 0) {
|
|
15602
15637
|
if (Math.abs(up.z) === 1) {
|
|
15603
|
-
z = __assign(__assign({}, z), { x: z.x + 0.0001 });
|
|
15638
|
+
z = __assign$2(__assign$2({}, z), { x: z.x + 0.0001 });
|
|
15604
15639
|
}
|
|
15605
15640
|
else {
|
|
15606
|
-
z = __assign(__assign({}, z), { z: z.z + 0.0001 });
|
|
15641
|
+
z = __assign$2(__assign$2({}, z), { z: z.z + 0.0001 });
|
|
15607
15642
|
}
|
|
15608
15643
|
z = normalize(z);
|
|
15609
15644
|
x = cross(up, z);
|
|
@@ -16889,7 +16924,7 @@ var matrix2 = /*#__PURE__*/Object.freeze({
|
|
|
16889
16924
|
*/
|
|
16890
16925
|
function create$2$1(values) {
|
|
16891
16926
|
if (values === void 0) { values = {}; }
|
|
16892
|
-
return __assign({ normal: origin(), constant: 0 }, values);
|
|
16927
|
+
return __assign$2({ normal: origin(), constant: 0 }, values);
|
|
16893
16928
|
}
|
|
16894
16929
|
/**
|
|
16895
16930
|
* Creates a plane from a normal and an arbitrary point on a plane.
|
|
@@ -16967,7 +17002,7 @@ var plane = /*#__PURE__*/Object.freeze({
|
|
|
16967
17002
|
*/
|
|
16968
17003
|
function create$1$2(value) {
|
|
16969
17004
|
if (value === void 0) { value = {}; }
|
|
16970
|
-
return __assign({ x: 0, y: 0, z: 0, w: 1 }, value);
|
|
17005
|
+
return __assign$2({ x: 0, y: 0, z: 0, w: 1 }, value);
|
|
16971
17006
|
}
|
|
16972
17007
|
/**
|
|
16973
17008
|
* Parses a JSON string representation of a `Quaternion`.
|
|
@@ -22685,6 +22720,7 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
|
|
|
22685
22720
|
* @interface IMetadataFilterQuery
|
|
22686
22721
|
* @property {string|null} [valueFilter] MetadataFilterQuery valueFilter
|
|
22687
22722
|
* @property {Array.<string>|null} [keys] MetadataFilterQuery keys
|
|
22723
|
+
* @property {boolean|null} [exactMatch] MetadataFilterQuery exactMatch
|
|
22688
22724
|
*/
|
|
22689
22725
|
|
|
22690
22726
|
/**
|
|
@@ -22719,6 +22755,14 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
|
|
|
22719
22755
|
*/
|
|
22720
22756
|
MetadataFilterQuery.prototype.keys = $util$1.emptyArray;
|
|
22721
22757
|
|
|
22758
|
+
/**
|
|
22759
|
+
* MetadataFilterQuery exactMatch.
|
|
22760
|
+
* @member {boolean} exactMatch
|
|
22761
|
+
* @memberof vertexvis.protobuf.stream.MetadataFilterQuery
|
|
22762
|
+
* @instance
|
|
22763
|
+
*/
|
|
22764
|
+
MetadataFilterQuery.prototype.exactMatch = false;
|
|
22765
|
+
|
|
22722
22766
|
/**
|
|
22723
22767
|
* Creates a new MetadataFilterQuery instance using the specified properties.
|
|
22724
22768
|
* @function create
|
|
@@ -22748,6 +22792,8 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
|
|
|
22748
22792
|
if (message.keys != null && message.keys.length)
|
|
22749
22793
|
for (let i = 0; i < message.keys.length; ++i)
|
|
22750
22794
|
writer.uint32(/* id 3, wireType 2 =*/26).string(message.keys[i]);
|
|
22795
|
+
if (message.exactMatch != null && Object.hasOwnProperty.call(message, "exactMatch"))
|
|
22796
|
+
writer.uint32(/* id 4, wireType 0 =*/32).bool(message.exactMatch);
|
|
22751
22797
|
return writer;
|
|
22752
22798
|
};
|
|
22753
22799
|
|
|
@@ -22790,6 +22836,9 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
|
|
|
22790
22836
|
message.keys = [];
|
|
22791
22837
|
message.keys.push(reader.string());
|
|
22792
22838
|
break;
|
|
22839
|
+
case 4:
|
|
22840
|
+
message.exactMatch = reader.bool();
|
|
22841
|
+
break;
|
|
22793
22842
|
default:
|
|
22794
22843
|
reader.skipType(tag & 7);
|
|
22795
22844
|
break;
|
|
@@ -22835,6 +22884,9 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
|
|
|
22835
22884
|
if (!$util$1.isString(message.keys[i]))
|
|
22836
22885
|
return "keys: string[] expected";
|
|
22837
22886
|
}
|
|
22887
|
+
if (message.exactMatch != null && message.hasOwnProperty("exactMatch"))
|
|
22888
|
+
if (typeof message.exactMatch !== "boolean")
|
|
22889
|
+
return "exactMatch: boolean expected";
|
|
22838
22890
|
return null;
|
|
22839
22891
|
};
|
|
22840
22892
|
|
|
@@ -22859,6 +22911,8 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
|
|
|
22859
22911
|
for (let i = 0; i < object.keys.length; ++i)
|
|
22860
22912
|
message.keys[i] = String(object.keys[i]);
|
|
22861
22913
|
}
|
|
22914
|
+
if (object.exactMatch != null)
|
|
22915
|
+
message.exactMatch = Boolean(object.exactMatch);
|
|
22862
22916
|
return message;
|
|
22863
22917
|
};
|
|
22864
22918
|
|
|
@@ -22877,8 +22931,10 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
|
|
|
22877
22931
|
let object = {};
|
|
22878
22932
|
if (options.arrays || options.defaults)
|
|
22879
22933
|
object.keys = [];
|
|
22880
|
-
if (options.defaults)
|
|
22934
|
+
if (options.defaults) {
|
|
22881
22935
|
object.valueFilter = "";
|
|
22936
|
+
object.exactMatch = false;
|
|
22937
|
+
}
|
|
22882
22938
|
if (message.valueFilter != null && message.hasOwnProperty("valueFilter"))
|
|
22883
22939
|
object.valueFilter = message.valueFilter;
|
|
22884
22940
|
if (message.keys && message.keys.length) {
|
|
@@ -22886,6 +22942,8 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
|
|
|
22886
22942
|
for (let j = 0; j < message.keys.length; ++j)
|
|
22887
22943
|
object.keys[j] = message.keys[j];
|
|
22888
22944
|
}
|
|
22945
|
+
if (message.exactMatch != null && message.hasOwnProperty("exactMatch"))
|
|
22946
|
+
object.exactMatch = message.exactMatch;
|
|
22889
22947
|
return object;
|
|
22890
22948
|
};
|
|
22891
22949
|
|
|
@@ -50626,7 +50684,7 @@ function defineParams() {
|
|
|
50626
50684
|
definitions[_i] = arguments[_i];
|
|
50627
50685
|
}
|
|
50628
50686
|
return function (settings) {
|
|
50629
|
-
return definitions.reduce(function (result, def) { return (__assign(__assign({}, result), def(settings))); }, {});
|
|
50687
|
+
return definitions.reduce(function (result, def) { return (__assign$2(__assign$2({}, result), def(settings))); }, {});
|
|
50630
50688
|
};
|
|
50631
50689
|
}
|
|
50632
50690
|
function defineBoolean(param, prop) {
|
|
@@ -52142,7 +52200,7 @@ var StreamApi = /** @class */ (function () {
|
|
|
52142
52200
|
return __generator(this, function (_a) {
|
|
52143
52201
|
switch (_a.label) {
|
|
52144
52202
|
case 0:
|
|
52145
|
-
desc = __assign(__assign({}, descriptor), { url: appendSettingsToUrl(descriptor.url, settings) });
|
|
52203
|
+
desc = __assign$2(__assign$2({}, descriptor), { url: appendSettingsToUrl(descriptor.url, settings) });
|
|
52146
52204
|
return [4 /*yield*/, this.websocket.connect(desc)];
|
|
52147
52205
|
case 1:
|
|
52148
52206
|
_a.sent();
|
|
@@ -52473,7 +52531,7 @@ var StreamApi = /** @class */ (function () {
|
|
|
52473
52531
|
* @param result A result to reply with.
|
|
52474
52532
|
*/
|
|
52475
52533
|
StreamApi.prototype.replyResult = function (reqId, result) {
|
|
52476
|
-
this.sendResponse(__assign({ requestId: { value: reqId } }, result));
|
|
52534
|
+
this.sendResponse(__assign$2({ requestId: { value: reqId } }, result));
|
|
52477
52535
|
};
|
|
52478
52536
|
/**
|
|
52479
52537
|
* Acknowledges a failed request by sending a reply back to the server.
|
|
@@ -52525,7 +52583,7 @@ var StreamApi = /** @class */ (function () {
|
|
|
52525
52583
|
var sentAtTime = currentDateAsProtoTimestamp();
|
|
52526
52584
|
if (withResponse) {
|
|
52527
52585
|
var requestId_1 = uuid.create();
|
|
52528
|
-
var request_1 = __assign(__assign({}, req), { requestId: { value: requestId_1 } });
|
|
52586
|
+
var request_1 = __assign$2(__assign$2({}, req), { requestId: { value: requestId_1 } });
|
|
52529
52587
|
return new Promise(function (resolve, reject) {
|
|
52530
52588
|
var subscription = _this.onResponse(function (msg) {
|
|
52531
52589
|
var _a;
|
|
@@ -53337,6 +53395,10 @@ var EntityType;
|
|
|
53337
53395
|
* A value that represents the presence of geometry without BREP.
|
|
53338
53396
|
*/
|
|
53339
53397
|
EntityType[EntityType["GENERIC_GEOMETRY"] = 96] = "GENERIC_GEOMETRY";
|
|
53398
|
+
/**
|
|
53399
|
+
* A value that represents the absence of geometry.
|
|
53400
|
+
*/
|
|
53401
|
+
EntityType[EntityType["NO_GEOMETRY"] = 0] = "NO_GEOMETRY";
|
|
53340
53402
|
})(EntityType || (EntityType = {}));
|
|
53341
53403
|
|
|
53342
53404
|
/**
|
|
@@ -53363,11 +53425,17 @@ class FeatureMap {
|
|
|
53363
53425
|
* @returns A new feature map.
|
|
53364
53426
|
*/
|
|
53365
53427
|
static fromPng(png, imageAttr) {
|
|
53366
|
-
if (png.data instanceof Uint8Array) {
|
|
53367
|
-
|
|
53428
|
+
if (!(png.data instanceof Uint8Array)) {
|
|
53429
|
+
throw new Error('Cannot create FeatureMap. Expected decoded PNG to be a Uint8Array.');
|
|
53430
|
+
}
|
|
53431
|
+
else if (png.channels !== 4) {
|
|
53432
|
+
throw new Error('Cannot create FeatureMap. Missing alpha channel.');
|
|
53368
53433
|
}
|
|
53369
53434
|
else {
|
|
53370
|
-
|
|
53435
|
+
return new FeatureMap(png.data, Object.assign(Object.assign({}, imageAttr), {
|
|
53436
|
+
// TODO(dan): Need to change frame protos to include image attributes
|
|
53437
|
+
// per image artifact.
|
|
53438
|
+
imageRect: rectangle.fromPointAndDimensions(imageAttr.imageRect, png) }));
|
|
53371
53439
|
}
|
|
53372
53440
|
}
|
|
53373
53441
|
/**
|
|
@@ -53398,6 +53466,9 @@ class FeatureMap {
|
|
|
53398
53466
|
else if ((color === null || color === void 0 ? void 0 : color.a) === EntityType.PRECISE_SURFACE) {
|
|
53399
53467
|
return EntityType.PRECISE_SURFACE;
|
|
53400
53468
|
}
|
|
53469
|
+
else {
|
|
53470
|
+
return EntityType.NO_GEOMETRY;
|
|
53471
|
+
}
|
|
53401
53472
|
}
|
|
53402
53473
|
getColor(point$1) {
|
|
53403
53474
|
const { width, height } = this.imageAttr.imageRect;
|
|
@@ -53472,7 +53543,7 @@ class Frame {
|
|
|
53472
53543
|
if (this.cachedDepthBuffer == null) {
|
|
53473
53544
|
this.cachedDepthBuffer =
|
|
53474
53545
|
this.depthBufferBytes != null
|
|
53475
|
-
? this.decodeDepthBuffer(this.depthBufferBytes)
|
|
53546
|
+
? this.decodeDepthBuffer(new Uint8Array(this.depthBufferBytes))
|
|
53476
53547
|
: Promise.resolve(undefined);
|
|
53477
53548
|
}
|
|
53478
53549
|
return this.cachedDepthBuffer;
|
|
@@ -53485,7 +53556,7 @@ class Frame {
|
|
|
53485
53556
|
if (this.cachedFeatureMap == null) {
|
|
53486
53557
|
this.cachedFeatureMap =
|
|
53487
53558
|
this.featureMapBytes != null
|
|
53488
|
-
? this.decodeFeatureMap(this.featureMapBytes)
|
|
53559
|
+
? this.decodeFeatureMap(new Uint8Array(this.featureMapBytes))
|
|
53489
53560
|
: Promise.resolve(undefined);
|
|
53490
53561
|
}
|
|
53491
53562
|
return this.cachedFeatureMap;
|
|
@@ -53835,32 +53906,32 @@ class AreaUnits {
|
|
|
53835
53906
|
AreaUnits.units = {
|
|
53836
53907
|
millimeters: {
|
|
53837
53908
|
name: 'Square Millimeters',
|
|
53838
|
-
abbreviatedName: 'mm
|
|
53909
|
+
abbreviatedName: 'mm²',
|
|
53839
53910
|
converter: new MillimeterUnitConverter(),
|
|
53840
53911
|
},
|
|
53841
53912
|
centimeters: {
|
|
53842
53913
|
name: 'Square Centimeters',
|
|
53843
|
-
abbreviatedName: 'cm
|
|
53914
|
+
abbreviatedName: 'cm²',
|
|
53844
53915
|
converter: new CentimeterUnitConverter(2),
|
|
53845
53916
|
},
|
|
53846
53917
|
meters: {
|
|
53847
53918
|
name: 'Square Meters',
|
|
53848
|
-
abbreviatedName: 'm
|
|
53919
|
+
abbreviatedName: 'm²',
|
|
53849
53920
|
converter: new MeterUnitConverter(2),
|
|
53850
53921
|
},
|
|
53851
53922
|
inches: {
|
|
53852
53923
|
name: 'Square Inches',
|
|
53853
|
-
abbreviatedName: 'in
|
|
53924
|
+
abbreviatedName: 'in²',
|
|
53854
53925
|
converter: new InchesUnitConverter(2),
|
|
53855
53926
|
},
|
|
53856
53927
|
feet: {
|
|
53857
53928
|
name: 'Square Feet',
|
|
53858
|
-
abbreviatedName: 'ft
|
|
53929
|
+
abbreviatedName: 'ft²',
|
|
53859
53930
|
converter: new FeetUnitConverter(2),
|
|
53860
53931
|
},
|
|
53861
53932
|
yards: {
|
|
53862
53933
|
name: 'Square Yards',
|
|
53863
|
-
abbreviatedName: 'yd
|
|
53934
|
+
abbreviatedName: 'yd²',
|
|
53864
53935
|
converter: new YardUnitConverter(2),
|
|
53865
53936
|
},
|
|
53866
53937
|
};
|
|
@@ -54398,6 +54469,17 @@ class Viewport {
|
|
|
54398
54469
|
transformVectorToViewport(ndc) {
|
|
54399
54470
|
return point.create(ndc.x * this.center.x + this.center.x, -ndc.y * this.center.y + this.center.y);
|
|
54400
54471
|
}
|
|
54472
|
+
/**
|
|
54473
|
+
* Transforms a world point to 2D point in viewport space.
|
|
54474
|
+
*
|
|
54475
|
+
* @param worldPt The world point to transform.
|
|
54476
|
+
* @param projectionViewMatrix The projection matrix to transform a 3D point to 2D point.
|
|
54477
|
+
* @returns A point in viewport space.
|
|
54478
|
+
*/
|
|
54479
|
+
transformWorldToViewport(worldPt, projectionViewMatrix) {
|
|
54480
|
+
const ndc = vector3.transformMatrix(worldPt, projectionViewMatrix);
|
|
54481
|
+
return this.transformVectorToViewport(ndc);
|
|
54482
|
+
}
|
|
54401
54483
|
transformPointToViewport(pt, image) {
|
|
54402
54484
|
const { x: scaleX, y: scaleY } = this.calculateFrameScale(image);
|
|
54403
54485
|
return point.scale(pt, 1 * scaleX, 1 * scaleY);
|
|
@@ -54543,9 +54625,7 @@ function fromPbFrameScene(worldOrientation) {
|
|
|
54543
54625
|
return mapper.defineMapper(mapper.read(fromPbFrameSceneAttributes, fromPbFrameCamera), ([sceneAttr, camera]) => new FrameScene(camera, sceneAttr.boundingBox, sceneAttr.crossSectioning, worldOrientation, sceneAttr.hasChanged));
|
|
54544
54626
|
}
|
|
54545
54627
|
function fromPbFrame(worldOrientation) {
|
|
54546
|
-
return mapper.defineMapper(mapper.read(mapper.mapProp('frameCorrelationIds', (ids) => (ids != null ? ids : [])), mapper.requiredProp('sequenceNumber'), mapper.compose(fromPbFrameImageAttributes, mapper.getProp('frameDimensions')), fromPbFrameScene(worldOrientation), fromPbFrameImage, mapper.
|
|
54547
|
-
return new Frame(cIds, seq, fd, i, s, (db === null || db === void 0 ? void 0 : db.value) || undefined, (fm === null || fm === void 0 ? void 0 : fm.value) || undefined);
|
|
54548
|
-
});
|
|
54628
|
+
return mapper.defineMapper(mapper.read(mapper.mapProp('frameCorrelationIds', (ids) => (ids != null ? ids : [])), mapper.requiredProp('sequenceNumber'), mapper.compose(fromPbFrameImageAttributes, mapper.getProp('frameDimensions')), fromPbFrameScene(worldOrientation), fromPbFrameImage, mapper.mapProp('depthBuffer', fromPbBytesValue), mapper.mapProp('featureMap', fromPbBytesValue)), ([cIds, seq, fd, s, i, db, fm]) => new Frame(cIds, seq, fd, i, s, db, fm));
|
|
54549
54629
|
}
|
|
54550
54630
|
function fromPbFrameOrThrow(worldOrientation) {
|
|
54551
54631
|
return mapper.ifInvalidThrow(fromPbFrame(worldOrientation));
|
|
@@ -60040,6 +60120,7 @@ const vertexvis = $root.vertexvis = (() => {
|
|
|
60040
60120
|
* @interface IMetadataFilterQuery
|
|
60041
60121
|
* @property {string|null} [valueFilter] MetadataFilterQuery valueFilter
|
|
60042
60122
|
* @property {Array.<string>|null} [keys] MetadataFilterQuery keys
|
|
60123
|
+
* @property {boolean|null} [exactMatch] MetadataFilterQuery exactMatch
|
|
60043
60124
|
*/
|
|
60044
60125
|
|
|
60045
60126
|
/**
|
|
@@ -60074,6 +60155,14 @@ const vertexvis = $root.vertexvis = (() => {
|
|
|
60074
60155
|
*/
|
|
60075
60156
|
MetadataFilterQuery.prototype.keys = $util.emptyArray;
|
|
60076
60157
|
|
|
60158
|
+
/**
|
|
60159
|
+
* MetadataFilterQuery exactMatch.
|
|
60160
|
+
* @member {boolean} exactMatch
|
|
60161
|
+
* @memberof vertexvis.protobuf.stream.MetadataFilterQuery
|
|
60162
|
+
* @instance
|
|
60163
|
+
*/
|
|
60164
|
+
MetadataFilterQuery.prototype.exactMatch = false;
|
|
60165
|
+
|
|
60077
60166
|
/**
|
|
60078
60167
|
* Creates a new MetadataFilterQuery instance using the specified properties.
|
|
60079
60168
|
* @function create
|
|
@@ -60103,6 +60192,8 @@ const vertexvis = $root.vertexvis = (() => {
|
|
|
60103
60192
|
if (message.keys != null && message.keys.length)
|
|
60104
60193
|
for (let i = 0; i < message.keys.length; ++i)
|
|
60105
60194
|
writer.uint32(/* id 3, wireType 2 =*/26).string(message.keys[i]);
|
|
60195
|
+
if (message.exactMatch != null && Object.hasOwnProperty.call(message, "exactMatch"))
|
|
60196
|
+
writer.uint32(/* id 4, wireType 0 =*/32).bool(message.exactMatch);
|
|
60106
60197
|
return writer;
|
|
60107
60198
|
};
|
|
60108
60199
|
|
|
@@ -60145,6 +60236,9 @@ const vertexvis = $root.vertexvis = (() => {
|
|
|
60145
60236
|
message.keys = [];
|
|
60146
60237
|
message.keys.push(reader.string());
|
|
60147
60238
|
break;
|
|
60239
|
+
case 4:
|
|
60240
|
+
message.exactMatch = reader.bool();
|
|
60241
|
+
break;
|
|
60148
60242
|
default:
|
|
60149
60243
|
reader.skipType(tag & 7);
|
|
60150
60244
|
break;
|
|
@@ -60190,6 +60284,9 @@ const vertexvis = $root.vertexvis = (() => {
|
|
|
60190
60284
|
if (!$util.isString(message.keys[i]))
|
|
60191
60285
|
return "keys: string[] expected";
|
|
60192
60286
|
}
|
|
60287
|
+
if (message.exactMatch != null && message.hasOwnProperty("exactMatch"))
|
|
60288
|
+
if (typeof message.exactMatch !== "boolean")
|
|
60289
|
+
return "exactMatch: boolean expected";
|
|
60193
60290
|
return null;
|
|
60194
60291
|
};
|
|
60195
60292
|
|
|
@@ -60214,6 +60311,8 @@ const vertexvis = $root.vertexvis = (() => {
|
|
|
60214
60311
|
for (let i = 0; i < object.keys.length; ++i)
|
|
60215
60312
|
message.keys[i] = String(object.keys[i]);
|
|
60216
60313
|
}
|
|
60314
|
+
if (object.exactMatch != null)
|
|
60315
|
+
message.exactMatch = Boolean(object.exactMatch);
|
|
60217
60316
|
return message;
|
|
60218
60317
|
};
|
|
60219
60318
|
|
|
@@ -60232,8 +60331,10 @@ const vertexvis = $root.vertexvis = (() => {
|
|
|
60232
60331
|
let object = {};
|
|
60233
60332
|
if (options.arrays || options.defaults)
|
|
60234
60333
|
object.keys = [];
|
|
60235
|
-
if (options.defaults)
|
|
60334
|
+
if (options.defaults) {
|
|
60236
60335
|
object.valueFilter = "";
|
|
60336
|
+
object.exactMatch = false;
|
|
60337
|
+
}
|
|
60237
60338
|
if (message.valueFilter != null && message.hasOwnProperty("valueFilter"))
|
|
60238
60339
|
object.valueFilter = message.valueFilter;
|
|
60239
60340
|
if (message.keys && message.keys.length) {
|
|
@@ -60241,6 +60342,8 @@ const vertexvis = $root.vertexvis = (() => {
|
|
|
60241
60342
|
for (let j = 0; j < message.keys.length; ++j)
|
|
60242
60343
|
object.keys[j] = message.keys[j];
|
|
60243
60344
|
}
|
|
60345
|
+
if (message.exactMatch != null && message.hasOwnProperty("exactMatch"))
|
|
60346
|
+
object.exactMatch = message.exactMatch;
|
|
60244
60347
|
return object;
|
|
60245
60348
|
};
|
|
60246
60349
|
|
|
@@ -87998,11 +88101,11 @@ const mapPlanarAngle = mapper.defineMapper(mapper.read(mapper.getProp('angleInRa
|
|
|
87998
88101
|
plane1,
|
|
87999
88102
|
plane2,
|
|
88000
88103
|
}));
|
|
88001
|
-
const mapMinimumDistance = mapper.defineMapper(mapper.read(mapper.getProp('distance'), mapper.mapRequiredProp('closestPoint1', fromPbVector3f), mapper.mapRequiredProp('closestPoint2', fromPbVector3f)), ([distance,
|
|
88104
|
+
const mapMinimumDistance = mapper.defineMapper(mapper.read(mapper.getProp('distance'), mapper.mapRequiredProp('closestPoint1', fromPbVector3f), mapper.mapRequiredProp('closestPoint2', fromPbVector3f)), ([distance, point1, point2]) => ({
|
|
88002
88105
|
type: 'minimum-distance',
|
|
88003
88106
|
distance,
|
|
88004
|
-
|
|
88005
|
-
|
|
88107
|
+
point1,
|
|
88108
|
+
point2,
|
|
88006
88109
|
}));
|
|
88007
88110
|
const mapSurfaceArea = mapper.defineMapper(mapper.read(mapper.getProp('area')), ([area]) => ({
|
|
88008
88111
|
type: 'surface-area',
|
|
@@ -88013,7 +88116,7 @@ const mapPlanarAngleFromResult = mapper.mapProp('planarAngle', mapper.ifDefined(
|
|
|
88013
88116
|
const mapMinimumDistanceFromResult = mapper.mapProp('minimumDistance', mapper.ifDefined(mapMinimumDistance));
|
|
88014
88117
|
const mapSurfaceAreaFromResult = mapper.mapProp('totalSurfaceArea', mapper.ifDefined(mapSurfaceArea));
|
|
88015
88118
|
const mapMeasurementResult = mapper.compose(mapper.pickFirst(mapPlanarDistanceFromResult, mapPlanarAngleFromResult, mapMinimumDistanceFromResult, mapSurfaceAreaFromResult), mapper.required('Result field'));
|
|
88016
|
-
const mapMeasureResponse = mapper.defineMapper(mapper.read(mapper.mapRequiredProp('outcome', mapper.mapRequiredProp('resultsList', mapper.mapArray(mapMeasurementResult)))), ([results]) => ({ results }));
|
|
88119
|
+
const mapMeasureResponse = mapper.defineMapper(mapper.read(mapper.mapRequiredProp('outcome', mapper.mapRequiredProp('resultsList', mapper.mapArray(mapMeasurementResult))), mapper.mapRequiredProp('outcome', mapper.getProp('isApproximate'))), ([results, isApproximate]) => ({ results, isApproximate }));
|
|
88017
88120
|
const mapMeasureResponseOrThrow = mapper.ifInvalidThrow(mapMeasureResponse);
|
|
88018
88121
|
|
|
88019
88122
|
/**
|
|
@@ -88026,7 +88129,7 @@ class MeasurementController {
|
|
|
88026
88129
|
this.client = client;
|
|
88027
88130
|
this.jwtProvider = jwtProvider;
|
|
88028
88131
|
this.deviceId = deviceId;
|
|
88029
|
-
this.
|
|
88132
|
+
this.outcome = Promise.resolve(undefined);
|
|
88030
88133
|
}
|
|
88031
88134
|
/**
|
|
88032
88135
|
* Registers an entity to measure and performs a measurement if this entity
|
|
@@ -88046,7 +88149,7 @@ class MeasurementController {
|
|
|
88046
88149
|
clearEntities() {
|
|
88047
88150
|
return this.performMeasurement(() => {
|
|
88048
88151
|
this.model.clearEntities();
|
|
88049
|
-
this.model.
|
|
88152
|
+
this.model.clearOutcome();
|
|
88050
88153
|
return true;
|
|
88051
88154
|
});
|
|
88052
88155
|
}
|
|
@@ -88079,28 +88182,32 @@ class MeasurementController {
|
|
|
88079
88182
|
this.measureAndUpdateModel(entities);
|
|
88080
88183
|
this.highlightEntities(previous, entities);
|
|
88081
88184
|
}
|
|
88082
|
-
return this.
|
|
88185
|
+
return this.outcome;
|
|
88083
88186
|
}
|
|
88084
88187
|
measureAndUpdateModel(entities) {
|
|
88085
88188
|
if (entities.length > 0) {
|
|
88086
|
-
this.
|
|
88087
|
-
this.model.
|
|
88088
|
-
return this.model.
|
|
88189
|
+
this.outcome = this.measureEntities(entities).then((outcome) => {
|
|
88190
|
+
this.model.setOutcome(outcome);
|
|
88191
|
+
return this.model.getOutcome();
|
|
88089
88192
|
});
|
|
88090
88193
|
}
|
|
88091
88194
|
else {
|
|
88092
|
-
this.
|
|
88195
|
+
this.outcome = Promise.resolve(undefined);
|
|
88093
88196
|
}
|
|
88094
88197
|
}
|
|
88095
|
-
async measureEntities() {
|
|
88096
|
-
|
|
88097
|
-
|
|
88098
|
-
|
|
88099
|
-
|
|
88100
|
-
|
|
88101
|
-
|
|
88102
|
-
|
|
88103
|
-
|
|
88198
|
+
async measureEntities(entities) {
|
|
88199
|
+
if (entities.length > 0) {
|
|
88200
|
+
const res = await requestUnary(async (handler) => {
|
|
88201
|
+
const meta = await createMetadata(this.jwtProvider, this.deviceId);
|
|
88202
|
+
const req = new scene_view_api_pb.MeasureRequest();
|
|
88203
|
+
req.setEntitiesList(entities.map((e) => e.toProto()));
|
|
88204
|
+
this.client.measure(req, meta, handler);
|
|
88205
|
+
});
|
|
88206
|
+
return mapMeasureResponseOrThrow(res.toObject());
|
|
88207
|
+
}
|
|
88208
|
+
else {
|
|
88209
|
+
return undefined;
|
|
88210
|
+
}
|
|
88104
88211
|
}
|
|
88105
88212
|
async highlightEntities(previous, entities) {
|
|
88106
88213
|
await requestUnary(async (handler) => {
|
|
@@ -88153,6 +88260,7 @@ class MeasurementEntity {
|
|
|
88153
88260
|
return entity;
|
|
88154
88261
|
}
|
|
88155
88262
|
}
|
|
88263
|
+
|
|
88156
88264
|
/**
|
|
88157
88265
|
* A model representing the state of measurement.
|
|
88158
88266
|
*
|
|
@@ -88167,8 +88275,8 @@ class MeasurementModel {
|
|
|
88167
88275
|
constructor() {
|
|
88168
88276
|
this.entities = new Set();
|
|
88169
88277
|
this.results = new Set();
|
|
88170
|
-
this.resultsChanged = new EventDispatcher();
|
|
88171
88278
|
this.entitiesChanged = new EventDispatcher();
|
|
88279
|
+
this.outcomeChanged = new EventDispatcher();
|
|
88172
88280
|
}
|
|
88173
88281
|
/**
|
|
88174
88282
|
* Registers an entity to be measured with the model.
|
|
@@ -88186,24 +88294,6 @@ class MeasurementModel {
|
|
|
88186
88294
|
return false;
|
|
88187
88295
|
}
|
|
88188
88296
|
}
|
|
88189
|
-
/**
|
|
88190
|
-
* Adds a measurement result to the model.
|
|
88191
|
-
*
|
|
88192
|
-
* Emits a _result changed_ event.
|
|
88193
|
-
*
|
|
88194
|
-
* @param result A result to add.
|
|
88195
|
-
* @returns `true` if the result has been added.
|
|
88196
|
-
*/
|
|
88197
|
-
addResult(result) {
|
|
88198
|
-
if (!this.results.has(result)) {
|
|
88199
|
-
this.results.add(result);
|
|
88200
|
-
this.resultsChanged.emit(this.getResults());
|
|
88201
|
-
return true;
|
|
88202
|
-
}
|
|
88203
|
-
else {
|
|
88204
|
-
return false;
|
|
88205
|
-
}
|
|
88206
|
-
}
|
|
88207
88297
|
/**
|
|
88208
88298
|
* Clears all registered entities from the model.
|
|
88209
88299
|
*/
|
|
@@ -88211,23 +88301,23 @@ class MeasurementModel {
|
|
|
88211
88301
|
this.entities.forEach((e) => this.removeEntity(e));
|
|
88212
88302
|
}
|
|
88213
88303
|
/**
|
|
88214
|
-
* Clears
|
|
88215
|
-
*
|
|
88216
|
-
* Emits a _result changed_ event.
|
|
88304
|
+
* Clears the outcome containing the results of a measurement.
|
|
88217
88305
|
*/
|
|
88218
|
-
|
|
88219
|
-
this.
|
|
88306
|
+
clearOutcome() {
|
|
88307
|
+
this.setOutcome(undefined);
|
|
88220
88308
|
}
|
|
88221
88309
|
/**
|
|
88222
|
-
*
|
|
88310
|
+
* Sets the outcome containing the results of a measurement.
|
|
88223
88311
|
*
|
|
88224
|
-
* Emits a
|
|
88312
|
+
* Emits a _outcome changed_ event.
|
|
88225
88313
|
*
|
|
88226
|
-
* @param outcome The outcome
|
|
88314
|
+
* @param outcome The outcome containing results.
|
|
88227
88315
|
*/
|
|
88228
|
-
|
|
88229
|
-
this.
|
|
88230
|
-
|
|
88316
|
+
setOutcome(outcome) {
|
|
88317
|
+
if (!objects.isEqual(this.outcome, outcome)) {
|
|
88318
|
+
this.outcome = outcome;
|
|
88319
|
+
this.outcomeChanged.emit(outcome);
|
|
88320
|
+
}
|
|
88231
88321
|
}
|
|
88232
88322
|
/**
|
|
88233
88323
|
* Returns all the entities registered with the model.
|
|
@@ -88235,6 +88325,12 @@ class MeasurementModel {
|
|
|
88235
88325
|
getEntities() {
|
|
88236
88326
|
return Array.from(this.entities);
|
|
88237
88327
|
}
|
|
88328
|
+
/**
|
|
88329
|
+
* Returns the outcome that contains the results of a measurement.
|
|
88330
|
+
*/
|
|
88331
|
+
getOutcome() {
|
|
88332
|
+
return this.outcome;
|
|
88333
|
+
}
|
|
88238
88334
|
/**
|
|
88239
88335
|
* Returns all the measurement results of the model.
|
|
88240
88336
|
*/
|
|
@@ -88257,23 +88353,6 @@ class MeasurementModel {
|
|
|
88257
88353
|
return false;
|
|
88258
88354
|
}
|
|
88259
88355
|
}
|
|
88260
|
-
/**
|
|
88261
|
-
* Removes a measurement result from the model.
|
|
88262
|
-
*
|
|
88263
|
-
* Emits a _result changed_ event.
|
|
88264
|
-
*
|
|
88265
|
-
* @param result The result to remove.
|
|
88266
|
-
*/
|
|
88267
|
-
removeResult(result) {
|
|
88268
|
-
if (this.results.has(result)) {
|
|
88269
|
-
this.results.delete(result);
|
|
88270
|
-
this.resultsChanged.emit(this.getResults());
|
|
88271
|
-
return true;
|
|
88272
|
-
}
|
|
88273
|
-
else {
|
|
88274
|
-
return false;
|
|
88275
|
-
}
|
|
88276
|
-
}
|
|
88277
88356
|
/**
|
|
88278
88357
|
* Sets the set of entities to be measured with the model.
|
|
88279
88358
|
*
|
|
@@ -88287,14 +88366,14 @@ class MeasurementModel {
|
|
|
88287
88366
|
return true;
|
|
88288
88367
|
}
|
|
88289
88368
|
/**
|
|
88290
|
-
* Registers an event listener that will be invoked when the model's
|
|
88291
|
-
*
|
|
88369
|
+
* Registers an event listener that will be invoked when the model's outcome
|
|
88370
|
+
* changes.
|
|
88292
88371
|
*
|
|
88293
88372
|
* @param listener The listener to add.
|
|
88294
88373
|
* @returns A disposable that can be used to remove the listener.
|
|
88295
88374
|
*/
|
|
88296
|
-
|
|
88297
|
-
return this.
|
|
88375
|
+
onOutcomeChanged(listener) {
|
|
88376
|
+
return this.outcomeChanged.on(listener);
|
|
88298
88377
|
}
|
|
88299
88378
|
/**
|
|
88300
88379
|
* Registers an event listener that will be invoked when the model's
|
|
@@ -88308,40 +88387,86 @@ class MeasurementModel {
|
|
|
88308
88387
|
}
|
|
88309
88388
|
}
|
|
88310
88389
|
|
|
88311
|
-
|
|
88312
|
-
|
|
88313
|
-
|
|
88314
|
-
|
|
88315
|
-
|
|
88316
|
-
|
|
88317
|
-
|
|
88318
|
-
|
|
88319
|
-
|
|
88320
|
-
|
|
88321
|
-
|
|
88390
|
+
class MeasurementOverlayManager {
|
|
88391
|
+
constructor() {
|
|
88392
|
+
this.overlays = new Map();
|
|
88393
|
+
this.overlaysChanged = new EventDispatcher();
|
|
88394
|
+
}
|
|
88395
|
+
addLineFromResult(result) {
|
|
88396
|
+
return this.addLine(result.point1, result.point2);
|
|
88397
|
+
}
|
|
88398
|
+
addLine(start, end) {
|
|
88399
|
+
const id = uuid.create();
|
|
88400
|
+
const overlay = {
|
|
88401
|
+
type: 'line',
|
|
88402
|
+
id: id,
|
|
88403
|
+
start,
|
|
88404
|
+
end,
|
|
88405
|
+
dispose: () => this.remove(id),
|
|
88406
|
+
};
|
|
88407
|
+
this.addOverlay(overlay);
|
|
88408
|
+
return overlay;
|
|
88409
|
+
}
|
|
88410
|
+
addDistanceVectorFromResult(result) {
|
|
88411
|
+
return this.addDistanceVector(result.point1, result.point2);
|
|
88412
|
+
}
|
|
88413
|
+
addDistanceVector(start, end) {
|
|
88414
|
+
const id = uuid.create();
|
|
88415
|
+
const v = vector3.subtract(start, end);
|
|
88416
|
+
const ze = vector3.add(start, vector3.create(0, 0, -v.z));
|
|
88417
|
+
const z = { start, end: ze };
|
|
88418
|
+
const ye = vector3.add(ze, vector3.create(0, -v.y, 0));
|
|
88419
|
+
const y = { start: ze, end: ye };
|
|
88420
|
+
const xe = vector3.add(ye, vector3.create(-v.x, 0, 0));
|
|
88421
|
+
const x = { start: ye, end: xe };
|
|
88422
|
+
const overlay = {
|
|
88423
|
+
type: 'distance-vector',
|
|
88424
|
+
id,
|
|
88425
|
+
x,
|
|
88426
|
+
y,
|
|
88427
|
+
z,
|
|
88428
|
+
dispose: () => this.remove(id),
|
|
88429
|
+
};
|
|
88430
|
+
this.addOverlay(overlay);
|
|
88431
|
+
return overlay;
|
|
88432
|
+
}
|
|
88433
|
+
addOverlay(overlay) {
|
|
88434
|
+
if (!this.overlays.has(overlay.id)) {
|
|
88435
|
+
this.overlays.set(overlay.id, overlay);
|
|
88436
|
+
this.overlaysChanged.emit(this.getOverlays());
|
|
88322
88437
|
}
|
|
88323
|
-
}
|
|
88324
|
-
|
|
88325
|
-
|
|
88326
|
-
|
|
88327
|
-
|
|
88328
|
-
|
|
88329
|
-
|
|
88330
|
-
|
|
88331
|
-
|
|
88332
|
-
|
|
88333
|
-
|
|
88334
|
-
|
|
88335
|
-
|
|
88336
|
-
}
|
|
88337
|
-
|
|
88338
|
-
|
|
88339
|
-
|
|
88340
|
-
};
|
|
88438
|
+
}
|
|
88439
|
+
getOverlays() {
|
|
88440
|
+
return Array.from(this.overlays.values());
|
|
88441
|
+
}
|
|
88442
|
+
remove(id) {
|
|
88443
|
+
if (this.overlays.has(id)) {
|
|
88444
|
+
this.overlays.delete(id);
|
|
88445
|
+
this.overlaysChanged.emit(this.getOverlays());
|
|
88446
|
+
return true;
|
|
88447
|
+
}
|
|
88448
|
+
else {
|
|
88449
|
+
return false;
|
|
88450
|
+
}
|
|
88451
|
+
}
|
|
88452
|
+
onOverlaysChanged(listener) {
|
|
88453
|
+
return this.overlaysChanged.on(listener);
|
|
88454
|
+
}
|
|
88341
88455
|
}
|
|
88342
|
-
|
|
88456
|
+
|
|
88457
|
+
/**
|
|
88458
|
+
* Constructs a new measurement result from the given points.
|
|
88459
|
+
*
|
|
88460
|
+
* @param point1 A starting point.
|
|
88461
|
+
* @param point2 An ending point.
|
|
88462
|
+
* @returns A new measurement result.
|
|
88463
|
+
*/
|
|
88464
|
+
function makeMinimumDistanceResult(point1, point2) {
|
|
88343
88465
|
return {
|
|
88344
|
-
|
|
88466
|
+
type: 'minimum-distance',
|
|
88467
|
+
point1,
|
|
88468
|
+
point2,
|
|
88469
|
+
distance: vector3.distance(point1, point2),
|
|
88345
88470
|
};
|
|
88346
88471
|
}
|
|
88347
88472
|
|
|
@@ -97360,21 +97485,21 @@ let SceneTreeTableHeader = class extends HTMLElement$1 {
|
|
|
97360
97485
|
/**
|
|
97361
97486
|
* Lower case as a function.
|
|
97362
97487
|
*/
|
|
97363
|
-
function lowerCase(str) {
|
|
97488
|
+
function lowerCase$1(str) {
|
|
97364
97489
|
return str.toLowerCase();
|
|
97365
97490
|
}
|
|
97366
97491
|
|
|
97367
97492
|
// Support camel case ("camelCase" -> "camel Case" and "CAMELCase" -> "CAMEL Case").
|
|
97368
|
-
var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
|
|
97493
|
+
var DEFAULT_SPLIT_REGEXP$1 = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
|
|
97369
97494
|
// Remove all non-word characters.
|
|
97370
|
-
var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
|
|
97495
|
+
var DEFAULT_STRIP_REGEXP$1 = /[^A-Z0-9]+/gi;
|
|
97371
97496
|
/**
|
|
97372
97497
|
* Normalize the string into something other libraries can manipulate easier.
|
|
97373
97498
|
*/
|
|
97374
|
-
function noCase(input, options) {
|
|
97499
|
+
function noCase$1(input, options) {
|
|
97375
97500
|
if (options === void 0) { options = {}; }
|
|
97376
|
-
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;
|
|
97377
|
-
var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
|
|
97501
|
+
var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP$1 : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP$1 : _b, _c = options.transform, transform = _c === void 0 ? lowerCase$1 : _c, _d = options.delimiter, delimiter = _d === void 0 ? " " : _d;
|
|
97502
|
+
var result = replace$1(replace$1(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
|
|
97378
97503
|
var start = 0;
|
|
97379
97504
|
var end = result.length;
|
|
97380
97505
|
// Trim the delimiter from around the output string.
|
|
@@ -97388,7 +97513,7 @@ function noCase(input, options) {
|
|
|
97388
97513
|
/**
|
|
97389
97514
|
* Replace `re` in the input string with the replacement value.
|
|
97390
97515
|
*/
|
|
97391
|
-
function replace(input, re, value) {
|
|
97516
|
+
function replace$1(input, re, value) {
|
|
97392
97517
|
if (re instanceof RegExp)
|
|
97393
97518
|
return input.replace(re, value);
|
|
97394
97519
|
return re.reduce(function (input, re) { return input.replace(re, value); }, input);
|
|
@@ -97404,7 +97529,7 @@ function pascalCaseTransform(input, index) {
|
|
|
97404
97529
|
}
|
|
97405
97530
|
function pascalCase(input, options) {
|
|
97406
97531
|
if (options === void 0) { options = {}; }
|
|
97407
|
-
return noCase(input, __assign({ delimiter: "", transform: pascalCaseTransform }, options));
|
|
97532
|
+
return noCase$1(input, __assign$2({ delimiter: "", transform: pascalCaseTransform }, options));
|
|
97408
97533
|
}
|
|
97409
97534
|
|
|
97410
97535
|
function camelCaseTransform(input, index) {
|
|
@@ -97414,7 +97539,7 @@ function camelCaseTransform(input, index) {
|
|
|
97414
97539
|
}
|
|
97415
97540
|
function camelCase(input, options) {
|
|
97416
97541
|
if (options === void 0) { options = {}; }
|
|
97417
|
-
return pascalCase(input, __assign({ transform: camelCaseTransform }, options));
|
|
97542
|
+
return pascalCase(input, __assign$2({ transform: camelCaseTransform }, options));
|
|
97418
97543
|
}
|
|
97419
97544
|
|
|
97420
97545
|
const bindingRegEx = /{{(.+)}}/;
|
|
@@ -98373,8 +98498,9 @@ class FlyToPositionKeyInteraction {
|
|
|
98373
98498
|
* the internal state of an interaction.
|
|
98374
98499
|
*/
|
|
98375
98500
|
class InteractionApi {
|
|
98376
|
-
constructor(stream, getConfig, getScene, getFrame, getViewport, tapEmitter, doubleTapEmitter, longPressEmitter, interactionStartedEmitter, interactionFinishedEmitter) {
|
|
98501
|
+
constructor(stream, cursors, getConfig, getScene, getFrame, getViewport, tapEmitter, doubleTapEmitter, longPressEmitter, interactionStartedEmitter, interactionFinishedEmitter) {
|
|
98377
98502
|
this.stream = stream;
|
|
98503
|
+
this.cursors = cursors;
|
|
98378
98504
|
this.getConfig = getConfig;
|
|
98379
98505
|
this.getScene = getScene;
|
|
98380
98506
|
this.getFrame = getFrame;
|
|
@@ -98389,6 +98515,53 @@ class InteractionApi {
|
|
|
98389
98515
|
this.longPress = this.longPress.bind(this);
|
|
98390
98516
|
this.emitTapEvent = this.emitTapEvent.bind(this);
|
|
98391
98517
|
}
|
|
98518
|
+
/**
|
|
98519
|
+
* Displays a cursor over the viewer with the given priority. Cursors with
|
|
98520
|
+
* higher priority will take precedence over cursors with lower priorities if
|
|
98521
|
+
* there's more than a single cursor added.
|
|
98522
|
+
*
|
|
98523
|
+
* @param cursor The cursor to add.
|
|
98524
|
+
* @param priority The priority of the cursor.
|
|
98525
|
+
* @returns A `Disposable` that can be used to remove the cursor.
|
|
98526
|
+
*/
|
|
98527
|
+
addCursor(cursor, priority) {
|
|
98528
|
+
return this.cursors.add(cursor, priority);
|
|
98529
|
+
}
|
|
98530
|
+
/**
|
|
98531
|
+
* Returns a 3D point in world space for the given 2D point in viewport space.
|
|
98532
|
+
*
|
|
98533
|
+
* @param point A point in 2D viewport space to transform.
|
|
98534
|
+
* @returns A 3D point in world space.
|
|
98535
|
+
*/
|
|
98536
|
+
async getWorldPointFromViewport(point) {
|
|
98537
|
+
const viewport = this.getViewport();
|
|
98538
|
+
const frame = this.getFrame();
|
|
98539
|
+
if (frame == null) {
|
|
98540
|
+
throw new Error('Cannot get world point. Frame is undefined.');
|
|
98541
|
+
}
|
|
98542
|
+
const depthBuffer = await frame.depthBuffer();
|
|
98543
|
+
return depthBuffer != null
|
|
98544
|
+
? viewport.transformPointToWorldSpace(point, depthBuffer, 0.5)
|
|
98545
|
+
: undefined;
|
|
98546
|
+
}
|
|
98547
|
+
/**
|
|
98548
|
+
* Returns the entity at the given point in viewport space.
|
|
98549
|
+
*
|
|
98550
|
+
* @param point A point in viewport space.
|
|
98551
|
+
* @returns The entity that was found.
|
|
98552
|
+
*/
|
|
98553
|
+
async getEntityTypeAtPoint(point) {
|
|
98554
|
+
var _a;
|
|
98555
|
+
const viewport = this.getViewport();
|
|
98556
|
+
const featureMap = await ((_a = this.getFrame()) === null || _a === void 0 ? void 0 : _a.featureMap());
|
|
98557
|
+
if (featureMap != null) {
|
|
98558
|
+
const framePt = viewport.transformPointToFrame(point, featureMap);
|
|
98559
|
+
return featureMap.getEntityType(framePt);
|
|
98560
|
+
}
|
|
98561
|
+
else {
|
|
98562
|
+
return EntityType.NO_GEOMETRY;
|
|
98563
|
+
}
|
|
98564
|
+
}
|
|
98392
98565
|
/**
|
|
98393
98566
|
* Generates a ray from the given point, in viewport coordinates.
|
|
98394
98567
|
*
|
|
@@ -98549,8 +98722,8 @@ class InteractionApi {
|
|
|
98549
98722
|
});
|
|
98550
98723
|
}
|
|
98551
98724
|
/**
|
|
98552
|
-
* Performs a view all operation for the scene's bounding box, and requests a
|
|
98553
|
-
* for the updated scene.
|
|
98725
|
+
* Performs a view all operation for the scene's bounding box, and requests a
|
|
98726
|
+
* new image for the updated scene.
|
|
98554
98727
|
*/
|
|
98555
98728
|
async viewAll() {
|
|
98556
98729
|
await this.getScene().camera().viewAll().render();
|
|
@@ -100800,7 +100973,7 @@ let Viewer = class extends HTMLElement$1 {
|
|
|
100800
100973
|
if (this.stream == null) {
|
|
100801
100974
|
throw new ComponentInitializationError('Cannot create interaction API. Component has not been initialized.');
|
|
100802
100975
|
}
|
|
100803
|
-
return new InteractionApi(this.stream, () => this.getResolvedConfig().interactions, () => this.createScene(), () => this.frame, () => this.viewport, this.tap, this.doubletap, this.longpress, this.interactionStarted, this.interactionFinished);
|
|
100976
|
+
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);
|
|
100804
100977
|
}
|
|
100805
100978
|
handleCursorChanged() {
|
|
100806
100979
|
window.requestAnimationFrame(() => {
|
|
@@ -101534,7 +101707,7 @@ let ViewerDomRenderer = class extends HTMLElement$1 {
|
|
|
101534
101707
|
/**
|
|
101535
101708
|
* @ignore
|
|
101536
101709
|
*/
|
|
101537
|
-
|
|
101710
|
+
componentDidRender() {
|
|
101538
101711
|
this.updateElements();
|
|
101539
101712
|
}
|
|
101540
101713
|
/**
|
|
@@ -103060,7 +103233,137 @@ let ViewerMarkupTool = class extends HTMLElement$1 {
|
|
|
103060
103233
|
static get style() { return viewerMarkupToolCss; }
|
|
103061
103234
|
};
|
|
103062
103235
|
|
|
103063
|
-
|
|
103236
|
+
/*! *****************************************************************************
|
|
103237
|
+
Copyright (c) Microsoft Corporation.
|
|
103238
|
+
|
|
103239
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
103240
|
+
purpose with or without fee is hereby granted.
|
|
103241
|
+
|
|
103242
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
103243
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
103244
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
103245
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
103246
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
103247
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
103248
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
103249
|
+
***************************************************************************** */
|
|
103250
|
+
|
|
103251
|
+
var __assign$1 = function() {
|
|
103252
|
+
__assign$1 = Object.assign || function __assign(t) {
|
|
103253
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
103254
|
+
s = arguments[i];
|
|
103255
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
103256
|
+
}
|
|
103257
|
+
return t;
|
|
103258
|
+
};
|
|
103259
|
+
return __assign$1.apply(this, arguments);
|
|
103260
|
+
};
|
|
103261
|
+
|
|
103262
|
+
/*! *****************************************************************************
|
|
103263
|
+
Copyright (c) Microsoft Corporation.
|
|
103264
|
+
|
|
103265
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
103266
|
+
purpose with or without fee is hereby granted.
|
|
103267
|
+
|
|
103268
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
103269
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
103270
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
103271
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
103272
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
103273
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
103274
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
103275
|
+
***************************************************************************** */
|
|
103276
|
+
|
|
103277
|
+
var __assign = function() {
|
|
103278
|
+
__assign = Object.assign || function __assign(t) {
|
|
103279
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
103280
|
+
s = arguments[i];
|
|
103281
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
103282
|
+
}
|
|
103283
|
+
return t;
|
|
103284
|
+
};
|
|
103285
|
+
return __assign.apply(this, arguments);
|
|
103286
|
+
};
|
|
103287
|
+
|
|
103288
|
+
/**
|
|
103289
|
+
* Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt
|
|
103290
|
+
*/
|
|
103291
|
+
/**
|
|
103292
|
+
* Lower case as a function.
|
|
103293
|
+
*/
|
|
103294
|
+
function lowerCase(str) {
|
|
103295
|
+
return str.toLowerCase();
|
|
103296
|
+
}
|
|
103297
|
+
|
|
103298
|
+
// Support camel case ("camelCase" -> "camel Case" and "CAMELCase" -> "CAMEL Case").
|
|
103299
|
+
var DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];
|
|
103300
|
+
// Remove all non-word characters.
|
|
103301
|
+
var DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;
|
|
103302
|
+
/**
|
|
103303
|
+
* Normalize the string into something other libraries can manipulate easier.
|
|
103304
|
+
*/
|
|
103305
|
+
function noCase(input, options) {
|
|
103306
|
+
if (options === void 0) { options = {}; }
|
|
103307
|
+
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;
|
|
103308
|
+
var result = replace(replace(input, splitRegexp, "$1\0$2"), stripRegexp, "\0");
|
|
103309
|
+
var start = 0;
|
|
103310
|
+
var end = result.length;
|
|
103311
|
+
// Trim the delimiter from around the output string.
|
|
103312
|
+
while (result.charAt(start) === "\0")
|
|
103313
|
+
start++;
|
|
103314
|
+
while (result.charAt(end - 1) === "\0")
|
|
103315
|
+
end--;
|
|
103316
|
+
// Transform each token independently.
|
|
103317
|
+
return result.slice(start, end).split("\0").map(transform).join(delimiter);
|
|
103318
|
+
}
|
|
103319
|
+
/**
|
|
103320
|
+
* Replace `re` in the input string with the replacement value.
|
|
103321
|
+
*/
|
|
103322
|
+
function replace(input, re, value) {
|
|
103323
|
+
if (re instanceof RegExp)
|
|
103324
|
+
return input.replace(re, value);
|
|
103325
|
+
return re.reduce(function (input, re) { return input.replace(re, value); }, input);
|
|
103326
|
+
}
|
|
103327
|
+
|
|
103328
|
+
function dotCase(input, options) {
|
|
103329
|
+
if (options === void 0) { options = {}; }
|
|
103330
|
+
return noCase(input, __assign({ delimiter: "." }, options));
|
|
103331
|
+
}
|
|
103332
|
+
|
|
103333
|
+
function paramCase(input, options) {
|
|
103334
|
+
if (options === void 0) { options = {}; }
|
|
103335
|
+
return dotCase(input, __assign$1({ delimiter: "-" }, options));
|
|
103336
|
+
}
|
|
103337
|
+
|
|
103338
|
+
const MeasurementDetailsEntry = (_a, children) => {
|
|
103339
|
+
var { label } = _a, props = __rest(_a, ["label"]);
|
|
103340
|
+
return (h("div", Object.assign({}, props, { class: "measurement-details-entry" }),
|
|
103341
|
+
h("div", { class: classnames('measurement-details-entry-label', paramCase(label)) },
|
|
103342
|
+
label,
|
|
103343
|
+
":"),
|
|
103344
|
+
children));
|
|
103345
|
+
};
|
|
103346
|
+
|
|
103347
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
103348
|
+
const MinimumDistanceResultEntry = ({ result, formatter, overlays, onShowOverlay, onHideOverlay }) => {
|
|
103349
|
+
const v = vector3.subtract(result.point1, result.point2);
|
|
103350
|
+
return (h(Fragment, null,
|
|
103351
|
+
h(MeasurementDetailsEntry, { label: "Min Dist", onMouseEnter: () => onShowOverlay(overlays === null || overlays === void 0 ? void 0 : overlays.addLineFromResult(result)), onMouseLeave: onHideOverlay }, formatter(result.distance)),
|
|
103352
|
+
h(MeasurementDetailsEntry, { label: "X", onMouseEnter: () => onShowOverlay(overlays === null || overlays === void 0 ? void 0 : overlays.addDistanceVectorFromResult(result)), onMouseLeave: onHideOverlay }, formatter(v.x)),
|
|
103353
|
+
h(MeasurementDetailsEntry, { label: "Y", onMouseEnter: () => onShowOverlay(overlays === null || overlays === void 0 ? void 0 : overlays.addDistanceVectorFromResult(result)), onMouseLeave: onHideOverlay }, formatter(v.y)),
|
|
103354
|
+
h(MeasurementDetailsEntry, { label: "Z", onMouseEnter: () => onShowOverlay(overlays === null || overlays === void 0 ? void 0 : overlays.addDistanceVectorFromResult(result)), onMouseLeave: onHideOverlay }, formatter(v.z))));
|
|
103355
|
+
};
|
|
103356
|
+
const PlanarAngleResultEntry = ({ result, formatter }) => {
|
|
103357
|
+
return (h(MeasurementDetailsEntry, { label: "Angle" }, formatter(result.angle)));
|
|
103358
|
+
};
|
|
103359
|
+
const PlanarDistanceResultEntry = ({ result, formatter }) => {
|
|
103360
|
+
return (h(MeasurementDetailsEntry, { label: "Parallel Dist" }, formatter(result.distance)));
|
|
103361
|
+
};
|
|
103362
|
+
const SurfaceAreaResultEntry = ({ result, formatter }) => {
|
|
103363
|
+
return (h(MeasurementDetailsEntry, { label: "Area" }, formatter(result.area)));
|
|
103364
|
+
};
|
|
103365
|
+
|
|
103366
|
+
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)}";
|
|
103064
103367
|
|
|
103065
103368
|
let ViewerMeasurementDetails = class extends HTMLElement$1 {
|
|
103066
103369
|
constructor() {
|
|
@@ -103085,106 +103388,121 @@ let ViewerMeasurementDetails = class extends HTMLElement$1 {
|
|
|
103085
103388
|
* The number of fraction digits to display.
|
|
103086
103389
|
*/
|
|
103087
103390
|
this.fractionalDigits = 2;
|
|
103088
|
-
/**
|
|
103089
|
-
* The current `MeasurementResult` displayed.
|
|
103090
|
-
*
|
|
103091
|
-
* @readonly
|
|
103092
|
-
*/
|
|
103093
103391
|
this.results = [];
|
|
103392
|
+
this.isApproximate = false;
|
|
103094
103393
|
this.distanceMeasurementUnits = new DistanceUnits(this.distanceUnits);
|
|
103095
103394
|
this.angleMeasurementUnits = new AngleUnits(this.angleUnits);
|
|
103096
103395
|
this.areaMeasurementUnits = new AreaUnits(this.distanceUnits);
|
|
103097
|
-
this.
|
|
103098
|
-
this.
|
|
103099
|
-
this.createSummary();
|
|
103396
|
+
this.handleShowOverlay = (overlay) => {
|
|
103397
|
+
this.overlay = overlay;
|
|
103100
103398
|
};
|
|
103101
|
-
this.
|
|
103102
|
-
const realDistance = Math.abs(this.distanceMeasurementUnits.convertWorldValueToReal(distance));
|
|
103103
|
-
if (this.distanceFormatter != null) {
|
|
103104
|
-
return this.distanceFormatter(realDistance);
|
|
103105
|
-
}
|
|
103106
|
-
else {
|
|
103107
|
-
const abbreviated = this.distanceMeasurementUnits.unit.abbreviatedName;
|
|
103108
|
-
return realDistance == null
|
|
103109
|
-
? '---'
|
|
103110
|
-
: `${realDistance.toFixed(this.fractionalDigits)} ${abbreviated}`;
|
|
103111
|
-
}
|
|
103112
|
-
};
|
|
103113
|
-
this.formatAngle = (angleInRadians) => {
|
|
103114
|
-
if (this.angleFormatter != null) {
|
|
103115
|
-
return this.angleFormatter(angleInRadians);
|
|
103116
|
-
}
|
|
103117
|
-
else {
|
|
103118
|
-
const value = this.angleMeasurementUnits
|
|
103119
|
-
.convertTo(angleInRadians)
|
|
103120
|
-
.toFixed(this.fractionalDigits);
|
|
103121
|
-
return `${value} ${this.angleMeasurementUnits.unit.abbreviatedName}`;
|
|
103122
|
-
}
|
|
103123
|
-
};
|
|
103124
|
-
this.formatArea = (area) => {
|
|
103125
|
-
const realArea = this.areaMeasurementUnits.convertWorldValueToReal(area);
|
|
103126
|
-
if (this.areaFormatter != null) {
|
|
103127
|
-
return this.areaFormatter(area);
|
|
103128
|
-
}
|
|
103129
|
-
else {
|
|
103130
|
-
const abbreviated = this.areaMeasurementUnits.unit.abbreviatedName;
|
|
103131
|
-
return realArea == null
|
|
103132
|
-
? '---'
|
|
103133
|
-
: `${realArea.toFixed(this.fractionalDigits)} ${abbreviated}`;
|
|
103134
|
-
}
|
|
103135
|
-
};
|
|
103136
|
-
this.createSummary = () => {
|
|
103399
|
+
this.handleHideOverlay = () => {
|
|
103137
103400
|
var _a;
|
|
103138
|
-
|
|
103139
|
-
|
|
103140
|
-
|
|
103141
|
-
this.
|
|
103142
|
-
.filter((k) => !hidden.includes(k))
|
|
103143
|
-
.reduce((reducedSummary, key) => (Object.assign(Object.assign({}, reducedSummary), { [key]: baseSummary[key] })), {});
|
|
103401
|
+
(_a = this.overlay) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
103402
|
+
};
|
|
103403
|
+
this.handleOutcomeChange = () => {
|
|
103404
|
+
this.updateStateFromModel();
|
|
103144
103405
|
};
|
|
103145
103406
|
}
|
|
103407
|
+
/**
|
|
103408
|
+
* @internal
|
|
103409
|
+
*/
|
|
103146
103410
|
connectedCallback() {
|
|
103147
|
-
this.
|
|
103148
|
-
|
|
103149
|
-
componentWillLoad() {
|
|
103150
|
-
this.parseHiddenDetails();
|
|
103151
|
-
}
|
|
103152
|
-
componentWillUpdate() {
|
|
103153
|
-
this.parseHiddenDetails();
|
|
103411
|
+
this.onOutcomeChangedHandler = this.measurementModel.onOutcomeChanged(this.handleOutcomeChange);
|
|
103412
|
+
this.updateStateFromModel();
|
|
103154
103413
|
}
|
|
103414
|
+
/**
|
|
103415
|
+
* @internal
|
|
103416
|
+
*/
|
|
103155
103417
|
disconnectedCallback() {
|
|
103156
103418
|
var _a;
|
|
103157
|
-
(_a = this.
|
|
103419
|
+
(_a = this.onOutcomeChangedHandler) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
103158
103420
|
}
|
|
103421
|
+
/**
|
|
103422
|
+
* @internal
|
|
103423
|
+
*/
|
|
103159
103424
|
handleDistanceUnitsChanged() {
|
|
103160
103425
|
this.distanceMeasurementUnits = new DistanceUnits(this.distanceUnits);
|
|
103161
103426
|
this.areaMeasurementUnits = new AreaUnits(this.distanceUnits);
|
|
103162
103427
|
}
|
|
103428
|
+
/**
|
|
103429
|
+
* @internal
|
|
103430
|
+
*/
|
|
103163
103431
|
handleAngleUnitsChanged() {
|
|
103164
103432
|
this.angleMeasurementUnits = new AngleUnits(this.angleUnits);
|
|
103165
103433
|
}
|
|
103434
|
+
/**
|
|
103435
|
+
* @internal
|
|
103436
|
+
*/
|
|
103166
103437
|
handleMeasurementModelChanged() {
|
|
103167
103438
|
var _a;
|
|
103168
|
-
(_a = this.
|
|
103169
|
-
this.
|
|
103439
|
+
(_a = this.onOutcomeChangedHandler) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
103440
|
+
this.onOutcomeChangedHandler = this.measurementModel.onOutcomeChanged(this.handleOutcomeChange);
|
|
103441
|
+
this.updateStateFromModel();
|
|
103170
103442
|
}
|
|
103171
|
-
|
|
103172
|
-
|
|
103443
|
+
/**
|
|
103444
|
+
* @internal
|
|
103445
|
+
*/
|
|
103446
|
+
handleResultTypesChanged() {
|
|
103447
|
+
this.updateStateFromModel();
|
|
103173
103448
|
}
|
|
103449
|
+
/**
|
|
103450
|
+
* @internal
|
|
103451
|
+
*/
|
|
103174
103452
|
render() {
|
|
103175
|
-
|
|
103176
|
-
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));
|
|
103453
|
+
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 })))));
|
|
103177
103454
|
}
|
|
103178
|
-
|
|
103179
|
-
|
|
103180
|
-
|
|
103455
|
+
updateStateFromModel() {
|
|
103456
|
+
const isFilteredResultType = (result) => {
|
|
103457
|
+
var _a, _b;
|
|
103458
|
+
return (_b = (_a = this.resultTypes) === null || _a === void 0 ? void 0 : _a.includes(result.type)) !== null && _b !== void 0 ? _b : true;
|
|
103459
|
+
};
|
|
103460
|
+
const outcome = this.measurementModel.getOutcome();
|
|
103461
|
+
if (outcome != null) {
|
|
103462
|
+
this.results = outcome.results.filter(isFilteredResultType);
|
|
103463
|
+
this.isApproximate = outcome.isApproximate;
|
|
103464
|
+
}
|
|
103465
|
+
else {
|
|
103466
|
+
this.results = [];
|
|
103467
|
+
this.isApproximate = false;
|
|
103181
103468
|
}
|
|
103182
103469
|
}
|
|
103470
|
+
renderResult(type, render) {
|
|
103471
|
+
const result = this.getResultForType(type);
|
|
103472
|
+
return result != null ? render(result) : undefined;
|
|
103473
|
+
}
|
|
103474
|
+
getResultForType(type) {
|
|
103475
|
+
return this.results.find((result) => result.type === type);
|
|
103476
|
+
}
|
|
103477
|
+
makeDistanceFormatter() {
|
|
103478
|
+
return this.makeFormatter((value) => this.distanceMeasurementUnits.convertWorldValueToReal(value), this.distanceMeasurementUnits.unit, this.distanceFormatter);
|
|
103479
|
+
}
|
|
103480
|
+
makeAngleFormatter() {
|
|
103481
|
+
return this.makeFormatter((value) => this.angleMeasurementUnits.convertTo(value), this.angleMeasurementUnits.unit, this.angleFormatter);
|
|
103482
|
+
}
|
|
103483
|
+
makeAreaFormatter() {
|
|
103484
|
+
return this.makeFormatter((value) => this.areaMeasurementUnits.convertWorldValueToReal(value), this.areaMeasurementUnits.unit, this.areaFormatter);
|
|
103485
|
+
}
|
|
103486
|
+
makeFormatter(convert, units, customFormatter) {
|
|
103487
|
+
return (value) => {
|
|
103488
|
+
const v = convert(value);
|
|
103489
|
+
if (customFormatter != null) {
|
|
103490
|
+
return customFormatter(v);
|
|
103491
|
+
}
|
|
103492
|
+
else {
|
|
103493
|
+
return this.formatValue(v, units);
|
|
103494
|
+
}
|
|
103495
|
+
};
|
|
103496
|
+
}
|
|
103497
|
+
formatValue(value, unit) {
|
|
103498
|
+
const val = value.toFixed(this.fractionalDigits);
|
|
103499
|
+
return `${this.isApproximate ? '~' + val : val} ${unit.abbreviatedName}`;
|
|
103500
|
+
}
|
|
103183
103501
|
static get watchers() { return {
|
|
103184
103502
|
"distanceUnits": ["handleDistanceUnitsChanged"],
|
|
103185
103503
|
"angleUnits": ["handleAngleUnitsChanged"],
|
|
103186
103504
|
"measurementModel": ["handleMeasurementModelChanged"],
|
|
103187
|
-
"
|
|
103505
|
+
"resultTypes": ["handleResultTypesChanged"]
|
|
103188
103506
|
}; }
|
|
103189
103507
|
static get style() { return viewerMeasurementDetailsCss; }
|
|
103190
103508
|
};
|
|
@@ -103547,21 +103865,10 @@ async function getHit(raycaster, pt) {
|
|
|
103547
103865
|
return undefined;
|
|
103548
103866
|
}
|
|
103549
103867
|
function validMeasurement(start, end) {
|
|
103550
|
-
return {
|
|
103551
|
-
type: 'point-to-point',
|
|
103552
|
-
start,
|
|
103553
|
-
end,
|
|
103554
|
-
distance: vector3.distance(start, end),
|
|
103555
|
-
valid: true,
|
|
103556
|
-
};
|
|
103868
|
+
return { start, end, distance: vector3.distance(start, end), valid: true };
|
|
103557
103869
|
}
|
|
103558
103870
|
function invalidMeasurement(start, end) {
|
|
103559
|
-
return {
|
|
103560
|
-
type: 'point-to-point',
|
|
103561
|
-
start,
|
|
103562
|
-
end,
|
|
103563
|
-
valid: false,
|
|
103564
|
-
};
|
|
103871
|
+
return { start, end, valid: false };
|
|
103565
103872
|
}
|
|
103566
103873
|
|
|
103567
103874
|
function translateWorldPtToViewport(pt, projectionViewMatrix, viewport) {
|
|
@@ -103656,6 +103963,11 @@ let ViewerMeasurementDistance = class extends HTMLElement$1 {
|
|
|
103656
103963
|
this.__attachShadow();
|
|
103657
103964
|
this.editBegin = createEvent(this, "editBegin", 7);
|
|
103658
103965
|
this.editEnd = createEvent(this, "editEnd", 7);
|
|
103966
|
+
/**
|
|
103967
|
+
* Enables the display of axis reference lines between the start and end
|
|
103968
|
+
* point.
|
|
103969
|
+
*/
|
|
103970
|
+
this.showAxisReferenceLines = false;
|
|
103659
103971
|
/**
|
|
103660
103972
|
* The distance, in pixels, between the mouse and nearest snappable edge. A
|
|
103661
103973
|
* value of 0 disables snapping.
|
|
@@ -103700,6 +104012,7 @@ let ViewerMeasurementDistance = class extends HTMLElement$1 {
|
|
|
103700
104012
|
this.stateMap = {};
|
|
103701
104013
|
this.model = PointToPointInteractionModel.empty();
|
|
103702
104014
|
this.controller = new PointToPointInteractionController(this.model);
|
|
104015
|
+
this.overlays = new MeasurementOverlayManager();
|
|
103703
104016
|
this.measurementUnits = new DistanceUnits(this.units);
|
|
103704
104017
|
this.isUserInteractingWithModel = false;
|
|
103705
104018
|
this.handleFrameDrawn = () => {
|
|
@@ -103858,13 +104171,13 @@ let ViewerMeasurementDistance = class extends HTMLElement$1 {
|
|
|
103858
104171
|
const { startPt, endPt, labelPt, indicatorPt, hideStart, hideEnd } = positions;
|
|
103859
104172
|
const distance = this.formatDistance(this.distance);
|
|
103860
104173
|
if (this.mode === 'edit') {
|
|
103861
|
-
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') }))));
|
|
104174
|
+
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') }))));
|
|
103862
104175
|
}
|
|
103863
104176
|
else if (this.mode === 'replace') {
|
|
103864
|
-
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 }))));
|
|
104177
|
+
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 }))));
|
|
103865
104178
|
}
|
|
103866
104179
|
else {
|
|
103867
|
-
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" }))));
|
|
104180
|
+
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" }))));
|
|
103868
104181
|
}
|
|
103869
104182
|
}
|
|
103870
104183
|
/**
|
|
@@ -103911,6 +104224,18 @@ let ViewerMeasurementDistance = class extends HTMLElement$1 {
|
|
|
103911
104224
|
this.updateCamera();
|
|
103912
104225
|
this.updateDepthBuffer();
|
|
103913
104226
|
this.updateMeasurementPropsFromModel();
|
|
104227
|
+
this.updateOverlays();
|
|
104228
|
+
}
|
|
104229
|
+
updateOverlays() {
|
|
104230
|
+
var _a;
|
|
104231
|
+
(_a = this.overlay) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
104232
|
+
if (this.showAxisReferenceLines &&
|
|
104233
|
+
this.interactionCount === 0 &&
|
|
104234
|
+
!this.invalid &&
|
|
104235
|
+
this.start != null &&
|
|
104236
|
+
this.end != null) {
|
|
104237
|
+
this.overlay = this.overlays.addDistanceVector(this.start, this.end);
|
|
104238
|
+
}
|
|
103914
104239
|
}
|
|
103915
104240
|
async setCursor(cursor) {
|
|
103916
104241
|
var _a, _b;
|
|
@@ -104194,6 +104519,112 @@ function getPerpendicularLine(pt, angle, length) {
|
|
|
104194
104519
|
return { start, end };
|
|
104195
104520
|
}
|
|
104196
104521
|
|
|
104522
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
104523
|
+
const MeasurementOverlayView = ({ overlay, viewport, camera }) => {
|
|
104524
|
+
if (overlay.type === 'line') {
|
|
104525
|
+
return (h(LineOverlayView, { overlay: overlay, viewport: viewport, camera: camera }));
|
|
104526
|
+
}
|
|
104527
|
+
else {
|
|
104528
|
+
return (h(DistanceVectorOverlayView, { overlay: overlay, viewport: viewport, camera: camera }));
|
|
104529
|
+
}
|
|
104530
|
+
};
|
|
104531
|
+
const LineOverlayView = ({ overlay: { start, end }, camera, viewport }) => {
|
|
104532
|
+
const m = camera.projectionViewMatrix;
|
|
104533
|
+
const sw = viewport.transformWorldToViewport(start, m);
|
|
104534
|
+
const ew = viewport.transformWorldToViewport(end, m);
|
|
104535
|
+
return (h("vertex-viewer-measurement-line", { class: "measurement-line", start: sw, end: ew }));
|
|
104536
|
+
};
|
|
104537
|
+
const DistanceVectorOverlayView = ({ overlay: { x, y, z }, camera, viewport }) => {
|
|
104538
|
+
const m = camera.projectionViewMatrix;
|
|
104539
|
+
const xs = viewport.transformWorldToViewport(x.start, m);
|
|
104540
|
+
const xe = viewport.transformWorldToViewport(x.end, m);
|
|
104541
|
+
const ys = viewport.transformWorldToViewport(y.start, m);
|
|
104542
|
+
const ye = viewport.transformWorldToViewport(y.end, m);
|
|
104543
|
+
const zs = viewport.transformWorldToViewport(z.start, m);
|
|
104544
|
+
const ze = viewport.transformWorldToViewport(z.end, m);
|
|
104545
|
+
return (h(Fragment, null,
|
|
104546
|
+
h("vertex-viewer-measurement-line", { class: "measurement-line distance-vector-x", start: xs, end: xe }),
|
|
104547
|
+
h("vertex-viewer-measurement-line", { class: "measurement-line distance-vector-y", start: ys, end: ye }),
|
|
104548
|
+
h("vertex-viewer-measurement-line", { class: "measurement-line distance-vector-z", start: zs, end: ze })));
|
|
104549
|
+
};
|
|
104550
|
+
|
|
104551
|
+
const viewerMeasurementOverlaysCss = ":host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;--viewer-measurement-overlays-x-axis-color:var(--x-axis-color);--viewer-measurement-overlays-y-axis-color:var(--y-axis-color);--viewer-measurement-overlays-z-axis-color:var(--z-axis-color)}.measurement-line{position:absolute;width:100%;height:100%}.measurement-line.distance-vector-x{--viewer-measurement-line-fill:var(\n --viewer-measurement-overlays-x-axis-color\n )}.measurement-line.distance-vector-y{--viewer-measurement-line-fill:var(\n --viewer-measurement-overlays-y-axis-color\n )}.measurement-line.distance-vector-z{--viewer-measurement-line-fill:var(\n --viewer-measurement-overlays-z-axis-color\n )}";
|
|
104552
|
+
|
|
104553
|
+
let ViewerMeasurementOverlays = class extends HTMLElement$1 {
|
|
104554
|
+
constructor() {
|
|
104555
|
+
super();
|
|
104556
|
+
this.__registerHost();
|
|
104557
|
+
this.__attachShadow();
|
|
104558
|
+
/**
|
|
104559
|
+
* The model that contains the overlays to present.
|
|
104560
|
+
*/
|
|
104561
|
+
this.measurementOverlays = new MeasurementOverlayManager();
|
|
104562
|
+
this.overlays = [];
|
|
104563
|
+
this.updateCamera = () => {
|
|
104564
|
+
var _a, _b;
|
|
104565
|
+
this.camera = (_b = (_a = this.viewer) === null || _a === void 0 ? void 0 : _a.frame) === null || _b === void 0 ? void 0 : _b.scene.camera;
|
|
104566
|
+
};
|
|
104567
|
+
}
|
|
104568
|
+
/**
|
|
104569
|
+
* @ignore
|
|
104570
|
+
*/
|
|
104571
|
+
handleMeasurementOverlaysChanged() {
|
|
104572
|
+
this.removeModelListeners();
|
|
104573
|
+
this.addModelListeners();
|
|
104574
|
+
this.updateOverlays();
|
|
104575
|
+
}
|
|
104576
|
+
/**
|
|
104577
|
+
* @ignore
|
|
104578
|
+
*/
|
|
104579
|
+
handleViewerChanged(newViewer, oldViewer) {
|
|
104580
|
+
this.removeViewerListeners(oldViewer);
|
|
104581
|
+
this.addViewerListeners();
|
|
104582
|
+
this.updateCamera();
|
|
104583
|
+
}
|
|
104584
|
+
/**
|
|
104585
|
+
* @ignore
|
|
104586
|
+
*/
|
|
104587
|
+
componentWillLoad() {
|
|
104588
|
+
this.addModelListeners();
|
|
104589
|
+
this.addViewerListeners();
|
|
104590
|
+
this.updateOverlays();
|
|
104591
|
+
this.updateCamera();
|
|
104592
|
+
}
|
|
104593
|
+
addModelListeners() {
|
|
104594
|
+
this.onOverlaysChangedListener = this.measurementOverlays.onOverlaysChanged(() => this.updateOverlays());
|
|
104595
|
+
}
|
|
104596
|
+
removeModelListeners() {
|
|
104597
|
+
var _a;
|
|
104598
|
+
(_a = this.onOverlaysChangedListener) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
104599
|
+
this.onOverlaysChangedListener = undefined;
|
|
104600
|
+
}
|
|
104601
|
+
addViewerListeners() {
|
|
104602
|
+
var _a;
|
|
104603
|
+
(_a = this.viewer) === null || _a === void 0 ? void 0 : _a.addEventListener('frameReceived', this.updateCamera);
|
|
104604
|
+
}
|
|
104605
|
+
removeViewerListeners(viewer) {
|
|
104606
|
+
viewer === null || viewer === void 0 ? void 0 : viewer.removeEventListener('frameReceived', this.updateCamera);
|
|
104607
|
+
}
|
|
104608
|
+
updateOverlays() {
|
|
104609
|
+
this.overlays = this.measurementOverlays.getOverlays();
|
|
104610
|
+
}
|
|
104611
|
+
/**
|
|
104612
|
+
* @ignore
|
|
104613
|
+
*/
|
|
104614
|
+
render() {
|
|
104615
|
+
return (h(Host, null, this.overlays.map((overlay) => {
|
|
104616
|
+
if (this.camera != null && this.viewer != null) {
|
|
104617
|
+
return (h(MeasurementOverlayView, { overlay: overlay, viewport: this.viewer.viewport, camera: this.camera }));
|
|
104618
|
+
}
|
|
104619
|
+
})));
|
|
104620
|
+
}
|
|
104621
|
+
static get watchers() { return {
|
|
104622
|
+
"measurementOverlays": ["handleMeasurementOverlaysChanged"],
|
|
104623
|
+
"viewer": ["handleViewerChanged"]
|
|
104624
|
+
}; }
|
|
104625
|
+
static get style() { return viewerMeasurementOverlaysCss; }
|
|
104626
|
+
};
|
|
104627
|
+
|
|
104197
104628
|
// package: vertexvis.protobuf.sceneview.v1
|
|
104198
104629
|
// file: sceneview/protos/scene_view_api.proto
|
|
104199
104630
|
|
|
@@ -104293,59 +104724,122 @@ SceneViewAPIClient.prototype.measure = function measure(requestMessage, metadata
|
|
|
104293
104724
|
|
|
104294
104725
|
var SceneViewAPIClient_1 = SceneViewAPIClient;
|
|
104295
104726
|
|
|
104296
|
-
class
|
|
104297
|
-
constructor(
|
|
104727
|
+
class ElementRectObserver {
|
|
104728
|
+
constructor() {
|
|
104729
|
+
this.observer = new ResizeObserver(() => this.measure());
|
|
104730
|
+
}
|
|
104731
|
+
observe(element) {
|
|
104732
|
+
this.element = element;
|
|
104733
|
+
this.observer.observe(element);
|
|
104734
|
+
this.measure();
|
|
104735
|
+
}
|
|
104736
|
+
disconnect() {
|
|
104737
|
+
this.element = undefined;
|
|
104738
|
+
this.observer.disconnect();
|
|
104739
|
+
}
|
|
104740
|
+
measure() {
|
|
104741
|
+
var _a;
|
|
104742
|
+
this.rect = (_a = this.element) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
104743
|
+
}
|
|
104744
|
+
}
|
|
104745
|
+
|
|
104746
|
+
class MeasurementInteractionHandler {
|
|
104747
|
+
constructor(controller, measurableEntityTypes) {
|
|
104748
|
+
this.rectObserver = new ElementRectObserver();
|
|
104749
|
+
this.handlePointerMove = async (event) => {
|
|
104750
|
+
if (await this.isMeasurableEntityUnderPointer(event)) {
|
|
104751
|
+
this.clearCursor();
|
|
104752
|
+
this.addCursor(measurementWithArrowCursor);
|
|
104753
|
+
}
|
|
104754
|
+
else {
|
|
104755
|
+
this.clearCursor();
|
|
104756
|
+
}
|
|
104757
|
+
};
|
|
104298
104758
|
this.handlePointerDown = (event) => {
|
|
104299
|
-
this.ifNoInteraction(event, () => {
|
|
104300
|
-
this.
|
|
104301
|
-
|
|
104302
|
-
|
|
104303
|
-
|
|
104304
|
-
|
|
104305
|
-
|
|
104306
|
-
else {
|
|
104307
|
-
this.controller.clearEntities();
|
|
104308
|
-
}
|
|
104309
|
-
});
|
|
104759
|
+
this.ifNoInteraction(event, async () => {
|
|
104760
|
+
if (await this.isMeasurableEntityUnderPointer(event)) {
|
|
104761
|
+
this.measureEntityUnderPointer(event);
|
|
104762
|
+
}
|
|
104763
|
+
else {
|
|
104764
|
+
this.controller.clearEntities();
|
|
104765
|
+
}
|
|
104310
104766
|
});
|
|
104311
104767
|
};
|
|
104312
104768
|
this.controller = controller;
|
|
104769
|
+
this.measurableEntityTypes = measurableEntityTypes;
|
|
104770
|
+
}
|
|
104771
|
+
get elementRect() {
|
|
104772
|
+
return this.rectObserver.rect;
|
|
104313
104773
|
}
|
|
104314
104774
|
initialize(element, api) {
|
|
104315
104775
|
this.element = element;
|
|
104316
104776
|
this.api = api;
|
|
104777
|
+
this.rectObserver.observe(element);
|
|
104778
|
+
element.addEventListener('pointermove', this.handlePointerMove);
|
|
104317
104779
|
element.addEventListener('pointerdown', this.handlePointerDown);
|
|
104318
104780
|
}
|
|
104319
104781
|
dispose() {
|
|
104782
|
+
var _a, _b, _c;
|
|
104783
|
+
this.rectObserver.disconnect();
|
|
104784
|
+
(_a = this.measurementInteraction) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
104785
|
+
this.clearCursor();
|
|
104786
|
+
(_b = this.element) === null || _b === void 0 ? void 0 : _b.removeEventListener('pointermove', this.handlePointerMove);
|
|
104787
|
+
(_c = this.element) === null || _c === void 0 ? void 0 : _c.removeEventListener('pointerdown', this.handlePointerDown);
|
|
104788
|
+
this.element = undefined;
|
|
104789
|
+
this.api = undefined;
|
|
104790
|
+
}
|
|
104791
|
+
addCursor(cursor) {
|
|
104792
|
+
this.cursor = this.ifInitialized(({ api }) => api.addCursor(cursor));
|
|
104793
|
+
}
|
|
104794
|
+
clearCursor() {
|
|
104320
104795
|
var _a;
|
|
104321
|
-
(_a = this.
|
|
104796
|
+
(_a = this.cursor) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
104797
|
+
this.cursor = undefined;
|
|
104798
|
+
}
|
|
104799
|
+
async isMeasurableEntityUnderPointer(event) {
|
|
104800
|
+
var _a;
|
|
104801
|
+
const pt = getMouseClientPosition(event, this.elementRect);
|
|
104802
|
+
const type = await ((_a = this.api) === null || _a === void 0 ? void 0 : _a.getEntityTypeAtPoint(pt));
|
|
104803
|
+
return type != null && this.measurableEntityTypes.includes(type);
|
|
104804
|
+
}
|
|
104805
|
+
measureEntityUnderPointer(event) {
|
|
104806
|
+
this.ifInitialized(async ({ api }) => {
|
|
104807
|
+
const pt = getMouseClientPosition(event, this.elementRect);
|
|
104808
|
+
const [hit] = await api.hitItems(pt);
|
|
104809
|
+
if (hit != null) {
|
|
104810
|
+
this.controller.addEntity(MeasurementEntity.fromHit(hit));
|
|
104811
|
+
}
|
|
104812
|
+
else {
|
|
104813
|
+
this.controller.clearEntities();
|
|
104814
|
+
}
|
|
104815
|
+
});
|
|
104816
|
+
}
|
|
104817
|
+
ifInitialized(f) {
|
|
104818
|
+
if (this.element != null && this.api != null) {
|
|
104819
|
+
return f({ element: this.element, api: this.api });
|
|
104820
|
+
}
|
|
104821
|
+
else {
|
|
104822
|
+
throw new Error('Measurement interaction handler not initialized.');
|
|
104823
|
+
}
|
|
104322
104824
|
}
|
|
104323
104825
|
ifNoInteraction(event, f) {
|
|
104324
104826
|
const startPos = point.create(event.clientX, event.clientY);
|
|
104325
104827
|
let didInteract = false;
|
|
104326
|
-
|
|
104828
|
+
const handleMouseMove = (event) => {
|
|
104327
104829
|
const pos = point.create(event.clientX, event.clientY);
|
|
104328
104830
|
const dis = point.distance(startPos, pos);
|
|
104329
104831
|
didInteract = dis > 2;
|
|
104330
|
-
}
|
|
104331
|
-
|
|
104832
|
+
};
|
|
104833
|
+
const handleMouseUp = () => {
|
|
104332
104834
|
window.removeEventListener('pointermove', handleMouseMove);
|
|
104333
104835
|
window.removeEventListener('pointerup', handleMouseUp);
|
|
104334
104836
|
if (!didInteract) {
|
|
104335
104837
|
f();
|
|
104336
104838
|
}
|
|
104337
|
-
}
|
|
104839
|
+
};
|
|
104338
104840
|
window.addEventListener('pointermove', handleMouseMove);
|
|
104339
104841
|
window.addEventListener('pointerup', handleMouseUp);
|
|
104340
104842
|
}
|
|
104341
|
-
ifInitialized(f) {
|
|
104342
|
-
if (this.element != null && this.api != null) {
|
|
104343
|
-
return f({ element: this.element, api: this.api });
|
|
104344
|
-
}
|
|
104345
|
-
else {
|
|
104346
|
-
throw new Error('Measurement interaction handler not initialized');
|
|
104347
|
-
}
|
|
104348
|
-
}
|
|
104349
104843
|
}
|
|
104350
104844
|
|
|
104351
104845
|
const viewerMeasurementPreciseCss = ":host{display:block;position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none}";
|
|
@@ -104355,36 +104849,80 @@ let ViewerMeasurementPrecise = class extends HTMLElement$1 {
|
|
|
104355
104849
|
super();
|
|
104356
104850
|
this.__registerHost();
|
|
104357
104851
|
this.__attachShadow();
|
|
104852
|
+
/**
|
|
104853
|
+
* The model that contains the entities and outcomes from performing precise
|
|
104854
|
+
* measurements.
|
|
104855
|
+
*/
|
|
104358
104856
|
this.measurementModel = new MeasurementModel();
|
|
104857
|
+
/**
|
|
104858
|
+
* The manager that is responsible for measurement overlays to present by this
|
|
104859
|
+
* component.
|
|
104860
|
+
*/
|
|
104861
|
+
this.measurementOverlays = new MeasurementOverlayManager();
|
|
104862
|
+
/**
|
|
104863
|
+
* @internal
|
|
104864
|
+
*
|
|
104865
|
+
* An internal property that can be used to opt-in to performing measurements
|
|
104866
|
+
* on other types of entities.
|
|
104867
|
+
*/
|
|
104868
|
+
this.measurableEntityTypes = [EntityType.PRECISE_SURFACE];
|
|
104869
|
+
/**
|
|
104870
|
+
* The environment that will be used to request measurement results.
|
|
104871
|
+
*/
|
|
104359
104872
|
this.configEnv = 'platprod';
|
|
104360
|
-
this.
|
|
104361
|
-
this.handleEntitiesChanged = () => {
|
|
104362
|
-
this.updateEntities();
|
|
104363
|
-
};
|
|
104873
|
+
this.overlays = [];
|
|
104364
104874
|
}
|
|
104875
|
+
/**
|
|
104876
|
+
* @ignore
|
|
104877
|
+
*/
|
|
104365
104878
|
connectedCallback() {
|
|
104366
104879
|
this.setupInteractionHandler();
|
|
104367
104880
|
}
|
|
104881
|
+
/**
|
|
104882
|
+
* @ignore
|
|
104883
|
+
*/
|
|
104368
104884
|
componentWillLoad() {
|
|
104369
104885
|
this.setupController();
|
|
104370
|
-
this.setupInteractionHandler();
|
|
104371
104886
|
this.setupModelListeners();
|
|
104887
|
+
this.setupInteractionHandler();
|
|
104372
104888
|
}
|
|
104889
|
+
/**
|
|
104890
|
+
* @ignore
|
|
104891
|
+
*/
|
|
104373
104892
|
disconnectedCallback() {
|
|
104374
104893
|
this.clearInteractionHandler();
|
|
104894
|
+
this.clearModelListeners();
|
|
104895
|
+
}
|
|
104896
|
+
/**
|
|
104897
|
+
* @ignore
|
|
104898
|
+
*/
|
|
104899
|
+
handleMeasurableEntityTypesChanged() {
|
|
104900
|
+
this.setupInteractionHandler();
|
|
104375
104901
|
}
|
|
104902
|
+
/**
|
|
104903
|
+
* @ignore
|
|
104904
|
+
*/
|
|
104376
104905
|
handleMeasurementControllerChanged() {
|
|
104377
104906
|
this.setupInteractionHandler();
|
|
104378
104907
|
}
|
|
104908
|
+
/**
|
|
104909
|
+
* @ignore
|
|
104910
|
+
*/
|
|
104379
104911
|
handleMeasurementModelChanged() {
|
|
104380
104912
|
this.setupController();
|
|
104381
104913
|
this.setupModelListeners();
|
|
104382
104914
|
}
|
|
104915
|
+
/**
|
|
104916
|
+
* @ignore
|
|
104917
|
+
*/
|
|
104383
104918
|
handleViewerChanged() {
|
|
104384
104919
|
this.setupInteractionHandler();
|
|
104385
104920
|
}
|
|
104921
|
+
/**
|
|
104922
|
+
* @ignore
|
|
104923
|
+
*/
|
|
104386
104924
|
render() {
|
|
104387
|
-
return h(Host, null);
|
|
104925
|
+
return (h(Host, null, h("vertex-viewer-measurement-overlays", { viewer: this.viewer, measurementOverlays: this.measurementOverlays })));
|
|
104388
104926
|
}
|
|
104389
104927
|
setupController() {
|
|
104390
104928
|
var _a;
|
|
@@ -104402,24 +104940,23 @@ let ViewerMeasurementPrecise = class extends HTMLElement$1 {
|
|
|
104402
104940
|
this.clearInteractionHandler();
|
|
104403
104941
|
if (this.measurementController != null) {
|
|
104404
104942
|
this.registeredInteractionHandler =
|
|
104405
|
-
(_a = this.viewer) === null || _a === void 0 ? void 0 : _a.registerInteractionHandler(new
|
|
104943
|
+
(_a = this.viewer) === null || _a === void 0 ? void 0 : _a.registerInteractionHandler(new MeasurementInteractionHandler(this.measurementController, this.measurableEntityTypes));
|
|
104406
104944
|
}
|
|
104407
104945
|
}
|
|
104408
104946
|
clearModelListeners() {
|
|
104409
|
-
var _a;
|
|
104410
|
-
(_a = this.
|
|
104411
|
-
this.
|
|
104947
|
+
var _a, _b;
|
|
104948
|
+
(_a = this.onEntitiesChangedHandler) === null || _a === void 0 ? void 0 : _a.dispose();
|
|
104949
|
+
this.onEntitiesChangedHandler = undefined;
|
|
104950
|
+
(_b = this.onOverlaysChangedHandler) === null || _b === void 0 ? void 0 : _b.dispose();
|
|
104951
|
+
this.onOverlaysChangedHandler = undefined;
|
|
104412
104952
|
}
|
|
104413
104953
|
setupModelListeners() {
|
|
104414
|
-
|
|
104415
|
-
|
|
104416
|
-
|
|
104417
|
-
}
|
|
104418
|
-
updateEntities() {
|
|
104419
|
-
var _a, _b;
|
|
104420
|
-
this.entities = (_b = (_a = this.measurementModel) === null || _a === void 0 ? void 0 : _a.getEntities()) !== null && _b !== void 0 ? _b : [];
|
|
104954
|
+
this.onOverlaysChangedHandler = this.measurementOverlays.onOverlaysChanged((overlays) => {
|
|
104955
|
+
this.overlays = overlays;
|
|
104956
|
+
});
|
|
104421
104957
|
}
|
|
104422
104958
|
static get watchers() { return {
|
|
104959
|
+
"measurableEntityTypes": ["handleMeasurableEntityTypesChanged"],
|
|
104423
104960
|
"measurementController": ["handleMeasurementControllerChanged"],
|
|
104424
104961
|
"measurementModel": ["handleMeasurementModelChanged"],
|
|
104425
104962
|
"viewer": ["handleViewerChanged"]
|
|
@@ -104627,6 +105164,17 @@ let ViewerMeasurements = class extends HTMLElement$1 {
|
|
|
104627
105164
|
* value of 0 disables snapping.
|
|
104628
105165
|
*/
|
|
104629
105166
|
this.snapDistance = MEASUREMENT_SNAP_DISTANCE;
|
|
105167
|
+
/**
|
|
105168
|
+
* Enables the display of axis reference lines between the start and end
|
|
105169
|
+
* point of selected measurements.
|
|
105170
|
+
*/
|
|
105171
|
+
this.showAxisReferenceLines = false;
|
|
105172
|
+
/**
|
|
105173
|
+
* The measurement model that will be updated with the selected measurement.
|
|
105174
|
+
* You can pass this to a <vertex-viewer-measurement-details> component to
|
|
105175
|
+
* display measurement outcomes.
|
|
105176
|
+
*/
|
|
105177
|
+
this.measurementModel = new MeasurementModel();
|
|
104630
105178
|
}
|
|
104631
105179
|
/**
|
|
104632
105180
|
* Adds a new measurement as a child to this component. A new measurement
|
|
@@ -104695,9 +105243,23 @@ let ViewerMeasurements = class extends HTMLElement$1 {
|
|
|
104695
105243
|
* @ignore
|
|
104696
105244
|
*/
|
|
104697
105245
|
async handleSelectedMeasurementIdChanged() {
|
|
105246
|
+
this.measurementModel.clearOutcome();
|
|
104698
105247
|
const measurements = await this.getMeasurementElements();
|
|
104699
105248
|
measurements.forEach((m) => {
|
|
104700
|
-
|
|
105249
|
+
if (m.id === this.selectedMeasurementId) {
|
|
105250
|
+
m.mode = 'edit';
|
|
105251
|
+
m.showAxisReferenceLines = this.showAxisReferenceLines;
|
|
105252
|
+
if (m.start != null && m.end != null) {
|
|
105253
|
+
this.measurementModel.setOutcome({
|
|
105254
|
+
isApproximate: true,
|
|
105255
|
+
results: [makeMinimumDistanceResult(m.start, m.end)],
|
|
105256
|
+
});
|
|
105257
|
+
}
|
|
105258
|
+
}
|
|
105259
|
+
else {
|
|
105260
|
+
m.mode = '';
|
|
105261
|
+
m.showAxisReferenceLines = false;
|
|
105262
|
+
}
|
|
104701
105263
|
});
|
|
104702
105264
|
}
|
|
104703
105265
|
/**
|
|
@@ -104957,7 +105519,7 @@ const ViewCubeShadow = ({ length, }) => {
|
|
|
104957
105519
|
h("div", { class: "cube-shadow-face" })));
|
|
104958
105520
|
};
|
|
104959
105521
|
|
|
104960
|
-
const viewerViewCubeCss = ":host{--viewer-view-cube-side-background:var(--white);--viewer-view-cube-side-background-hover:var(--blue-500);--viewer-view-cube-side-background-hover-opacity:0.25;--viewer-view-cube-side-border:1.5px solid var(--neutral-500);--viewer-view-cube-edge-length:12px;--viewer-view-cube-opacity:0.8;display:block;color:var(--neutral-700);width:80px;height:80px;margin:20px;position:relative;display:flex;align-items:center;justify-content:center;user-select:none}.renderer{position:unset;width:100%;height:100%;overflow:visible}.reference-point{width:5px;height:5px;border-radius:50%;background-color:black}.triad{pointer-events:none}.triad-axis{width:100%;height:1.5px;outline:1px solid transparent;transform:translateX(50%)}.triad-axis-x{background-color:#ea3324}.triad-axis-y{background-color:#4faf32}.triad-axis-z{background-color:#0000ff}.triad-label{font-family:Arial, Helvetica, sans-serif;font-size:0.6875rem}.triad-label-x{color
|
|
105522
|
+
const viewerViewCubeCss = ":host{--viewer-view-cube-side-background:var(--white);--viewer-view-cube-side-background-hover:var(--blue-500);--viewer-view-cube-side-background-hover-opacity:0.25;--viewer-view-cube-side-border:1.5px solid var(--neutral-500);--viewer-view-cube-edge-length:12px;--viewer-view-cube-opacity:0.8;--viewer-view-cube-triad-x-axis-color:var(--x-axis-color);--viewer-view-cube-triad-y-axis-color:var(--y-axis-color);--viewer-view-cube-triad-z-axis-color:var(--z-axis-color);display:block;color:var(--neutral-700);width:80px;height:80px;margin:20px;position:relative;display:flex;align-items:center;justify-content:center;user-select:none}.renderer{position:unset;width:100%;height:100%;overflow:visible}.reference-point{width:5px;height:5px;border-radius:50%;background-color:black}.triad{pointer-events:none}.triad-axis{width:100%;height:1.5px;outline:1px solid transparent;transform:translateX(50%)}.triad-axis-x{background-color:#ea3324}.triad-axis-y{background-color:#4faf32}.triad-axis-z{background-color:#0000ff}.triad-label{font-family:Arial, Helvetica, sans-serif;font-size:0.6875rem}.triad-label-x{color:var(--viewer-view-cube-triad-x-axis-color)}.triad-label-y{color:var(--viewer-view-cube-triad-y-axis-color)}.triad-label-z{color:var(--viewer-view-cube-triad-z-axis-color)}.cube{pointer-events:initial}.cube:hover .cube-side-face{opacity:1}.cube-side{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-side-face{box-sizing:border-box;font-size:0.875rem;text-transform:uppercase;width:100%;height:100%;background-color:var(--viewer-view-cube-side-background);border:var(--viewer-view-cube-side-border);display:flex;align-items:center;justify-content:center;outline:1px solid transparent;opacity:var(--viewer-view-cube-opacity);transition:opacity 0.2s ease-in-out}.cube-side-face::before{content:'';position:absolute;left:calc(var(--viewer-view-cube-edge-length) - 4px);right:calc(var(--viewer-view-cube-edge-length) - 4px);top:calc(var(--viewer-view-cube-edge-length) - 4px);bottom:calc(var(--viewer-view-cube-edge-length) - 4px)}.cube-corner,.cube-edge{position:relative}.cube-corner-face,.cube-edge-face{position:absolute;backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-edge-face.top{top:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.bottom{bottom:0;left:var(--viewer-view-cube-edge-length);right:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-edge-face.left{left:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-edge-face.right{right:0;top:var(--viewer-view-cube-edge-length);bottom:var(--viewer-view-cube-edge-length);width:var(--viewer-view-cube-edge-length)}.cube-corner-face{width:var(--viewer-view-cube-edge-length);height:var(--viewer-view-cube-edge-length)}.cube-corner-face.top-left{top:0;left:0}.cube-corner-face.top-right{top:0;right:0}.cube-corner-face.bottom-right{bottom:0;right:0}.cube-corner-face.bottom-left{bottom:0;left:0}.cube-shadow{backface-visibility:hidden;-webkit-backface-visibility:hidden}.cube-shadow-face{position:absolute;left:4px;right:4px;top:4px;bottom:4px;background-color:black;opacity:0.12;filter:blur(4px)}.cube-corner .cube-corner-face,.cube-edge .cube-edge-face,.cube-side .cube-side-face::before{background:var(--viewer-view-cube-side-background-hover);opacity:0}.cube-corner:hover .cube-corner-face,.cube-edge:hover .cube-edge-face,.cube-side:hover .cube-side-face::before{opacity:var(--viewer-view-cube-side-background-hover-opacity)}.cube-corner.disabled,.cube-edge.disabled,.cube-side.disabled{pointer-events:none}";
|
|
104961
105523
|
|
|
104962
105524
|
let ViewerViewCube = class extends HTMLElement$1 {
|
|
104963
105525
|
constructor() {
|
|
@@ -105107,12 +105669,13 @@ const VertexViewerMarkupArrow = /*@__PURE__*/proxyCustomElement(ViewerMarkupArro
|
|
|
105107
105669
|
const VertexViewerMarkupCircle = /*@__PURE__*/proxyCustomElement(ViewerMarkupCircle, [1,"vertex-viewer-markup-circle",{"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"elementBounds":[32],"startPosition":[32],"editAnchor":[32],"resizeBounds":[32]}]);
|
|
105108
105670
|
const VertexViewerMarkupFreeform = /*@__PURE__*/proxyCustomElement(ViewerMarkupFreeform, [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]}]);
|
|
105109
105671
|
const VertexViewerMarkupTool = /*@__PURE__*/proxyCustomElement(ViewerMarkupTool, [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]}]);
|
|
105110
|
-
const VertexViewerMeasurementDetails = /*@__PURE__*/proxyCustomElement(ViewerMeasurementDetails, [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],"
|
|
105111
|
-
const VertexViewerMeasurementDistance = /*@__PURE__*/proxyCustomElement(ViewerMeasurementDistance, [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]}]);
|
|
105672
|
+
const VertexViewerMeasurementDetails = /*@__PURE__*/proxyCustomElement(ViewerMeasurementDetails, [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]}]);
|
|
105673
|
+
const VertexViewerMeasurementDistance = /*@__PURE__*/proxyCustomElement(ViewerMeasurementDistance, [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]}]);
|
|
105112
105674
|
const VertexViewerMeasurementLine = /*@__PURE__*/proxyCustomElement(ViewerMeasurementLine, [1,"vertex-viewer-measurement-line",{"start":[16],"end":[16],"capLength":[2,"cap-length"],"pointerEvents":[1,"pointer-events"]}]);
|
|
105113
|
-
const
|
|
105675
|
+
const VertexViewerMeasurementOverlays = /*@__PURE__*/proxyCustomElement(ViewerMeasurementOverlays, [1,"vertex-viewer-measurement-overlays",{"measurementOverlays":[16],"camera":[1040],"viewer":[16],"overlays":[32]}]);
|
|
105676
|
+
const VertexViewerMeasurementPrecise = /*@__PURE__*/proxyCustomElement(ViewerMeasurementPrecise, [1,"vertex-viewer-measurement-precise",{"measurementModel":[16],"measurementOverlays":[16],"measurementController":[1040],"measurableEntityTypes":[16],"viewer":[16],"configEnv":[1,"config-env"],"config":[16],"overlays":[32]}]);
|
|
105114
105677
|
const VertexViewerMeasurementTool = /*@__PURE__*/proxyCustomElement(ViewerMeasurementTool, [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]}]);
|
|
105115
|
-
const VertexViewerMeasurements = /*@__PURE__*/proxyCustomElement(ViewerMeasurements, [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"]},[[0,"measureEnd","handleMeasureEnd"],[1,"pointerdown","handleMeasurementPointerDown"]]]);
|
|
105678
|
+
const VertexViewerMeasurements = /*@__PURE__*/proxyCustomElement(ViewerMeasurements, [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]},[[0,"measureEnd","handleMeasureEnd"],[1,"pointerdown","handleMeasurementPointerDown"]]]);
|
|
105116
105679
|
const VertexViewerToolbar = /*@__PURE__*/proxyCustomElement(ViewerToolbar, [1,"vertex-viewer-toolbar",{"placement":[1],"direction":[1]}]);
|
|
105117
105680
|
const VertexViewerToolbarGroup = /*@__PURE__*/proxyCustomElement(ViewerToolbarGroup, [1,"vertex-viewer-toolbar-group",{"direction":[1]}]);
|
|
105118
105681
|
const VertexViewerViewCube = /*@__PURE__*/proxyCustomElement(ViewerViewCube, [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]}]);
|
|
@@ -105144,6 +105707,7 @@ const defineCustomElements = (opts) => {
|
|
|
105144
105707
|
VertexViewerMeasurementDetails,
|
|
105145
105708
|
VertexViewerMeasurementDistance,
|
|
105146
105709
|
VertexViewerMeasurementLine,
|
|
105710
|
+
VertexViewerMeasurementOverlays,
|
|
105147
105711
|
VertexViewerMeasurementPrecise,
|
|
105148
105712
|
VertexViewerMeasurementTool,
|
|
105149
105713
|
VertexViewerMeasurements,
|
|
@@ -105158,4 +105722,4 @@ const defineCustomElements = (opts) => {
|
|
|
105158
105722
|
}
|
|
105159
105723
|
};
|
|
105160
105724
|
|
|
105161
|
-
export { AngleUnits, AreaUnits, ArrowMarkup, CircleMarkup, colorMaterial as ColorMaterial, CursorManager, DistanceUnits, FreeformMarkup, loadableResource as LoadableResource, MeasurementController, MeasurementEntity, MeasurementModel, Frame as ReceivedFrame, FrameImage as ReceivedFrameImage, FrameScene as ReceivedFrameScene, FramePerspectiveCamera as ReceivedPerspectiveCamera, Scene, SynchronizedClock, VertexSceneTree, VertexSceneTreeSearch, VertexSceneTreeTableCell, VertexSceneTreeTableColumn, VertexSceneTreeTableHeader, VertexSceneTreeTableLayout, VertexSceneTreeTableResizeDivider, VertexSceneTreeToolbar, VertexSceneTreeToolbarGroup, VertexViewer, VertexViewerButton, VertexViewerDefaultToolbar, VertexViewerDomElement, VertexViewerDomGroup, VertexViewerDomRenderer, VertexViewerIcon, VertexViewerLayer, VertexViewerMarkup, VertexViewerMarkupArrow, VertexViewerMarkupCircle, VertexViewerMarkupFreeform, VertexViewerMarkupTool, VertexViewerMeasurementDetails, VertexViewerMeasurementDistance, VertexViewerMeasurementLine, VertexViewerMeasurementPrecise, VertexViewerMeasurementTool, VertexViewerMeasurements, VertexViewerToolbar, VertexViewerToolbarGroup, VertexViewerViewCube, Viewport, __awaiter as _, __generator as a, __spreadArray as b, createCommonjsModule as c, defineCustomElements, measurementCursor,
|
|
105725
|
+
export { AngleUnits, AreaUnits, ArrowMarkup, CircleMarkup, colorMaterial as ColorMaterial, CursorManager, DistanceUnits, EntityType, FreeformMarkup, loadableResource as LoadableResource, MeasurementController, MeasurementEntity, MeasurementModel, MeasurementOverlayManager, Frame as ReceivedFrame, FrameImage as ReceivedFrameImage, FrameScene as ReceivedFrameScene, FramePerspectiveCamera as ReceivedPerspectiveCamera, Scene, SynchronizedClock, VertexSceneTree, VertexSceneTreeSearch, VertexSceneTreeTableCell, VertexSceneTreeTableColumn, VertexSceneTreeTableHeader, VertexSceneTreeTableLayout, VertexSceneTreeTableResizeDivider, VertexSceneTreeToolbar, VertexSceneTreeToolbarGroup, VertexViewer, VertexViewerButton, VertexViewerDefaultToolbar, VertexViewerDomElement, VertexViewerDomGroup, VertexViewerDomRenderer, VertexViewerIcon, VertexViewerLayer, VertexViewerMarkup, VertexViewerMarkupArrow, VertexViewerMarkupCircle, VertexViewerMarkupFreeform, VertexViewerMarkupTool, VertexViewerMeasurementDetails, VertexViewerMeasurementDistance, VertexViewerMeasurementLine, VertexViewerMeasurementOverlays, VertexViewerMeasurementPrecise, VertexViewerMeasurementTool, VertexViewerMeasurements, VertexViewerToolbar, VertexViewerToolbarGroup, VertexViewerViewCube, Viewport, __awaiter as _, __generator as a, __spreadArray as b, createCommonjsModule as c, defineCustomElements, makeMinimumDistanceResult, measurementCursor, measurementWithArrowCursor };
|