@vertexvis/viewer 0.15.2-testing.3 → 0.15.2-testing.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/cjs/{config-6e330a82.js → config-4a86ae0b.js} +1 -1
  2. package/dist/cjs/{entities-7b2e8c03.js → entities-496b61cd.js} +2 -2
  3. package/dist/cjs/index.cjs.js +4 -4
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{mapper-0f2294a6.js → mapper-216603b0.js} +1 -1
  6. package/dist/cjs/{scene-56438693.js → scene-0ce59b26.js} +28 -1
  7. package/dist/cjs/{streamAttributes-c64aee75.js → streamAttributes-7725f5c4.js} +976 -4
  8. package/dist/cjs/vertex-scene-tree.cjs.entry.js +2 -2
  9. package/dist/cjs/vertex-viewer-box-query-tool.cjs.entry.js +245 -0
  10. package/dist/cjs/vertex-viewer-dom-element_2.cjs.entry.js +1 -1
  11. package/dist/cjs/vertex-viewer-measurement-details.cjs.entry.js +1 -1
  12. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +2 -2
  13. package/dist/cjs/vertex-viewer-measurement-line_2.cjs.entry.js +2 -2
  14. package/dist/cjs/vertex-viewer-measurement-precise.cjs.entry.js +4 -4
  15. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +2 -2
  16. package/dist/cjs/vertex-viewer-transform-widget.cjs.entry.js +1 -1
  17. package/dist/cjs/vertex-viewer-view-cube.cjs.entry.js +1 -1
  18. package/dist/cjs/vertex-viewer.cjs.entry.js +3 -3
  19. package/dist/cjs/viewer.cjs.js +1 -1
  20. package/dist/collection/collection-manifest.json +1 -0
  21. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.css +74 -0
  22. package/dist/collection/components/viewer-box-query-tool/viewer-box-query-tool.js +191 -0
  23. package/dist/collection/lib/scenes/mapper.js +12 -1
  24. package/dist/collection/lib/scenes/queries.js +17 -1
  25. package/dist/collection/lib/volume-intersection/controller.js +48 -0
  26. package/dist/collection/lib/volume-intersection/interactions.js +37 -0
  27. package/dist/collection/lib/volume-intersection/model.js +67 -0
  28. package/dist/custom-elements/index.d.ts +6 -0
  29. package/dist/custom-elements/index.js +1241 -5
  30. package/dist/esm/{config-49688db8.js → config-6cdeb6ca.js} +1 -1
  31. package/dist/esm/{entities-a5bfef48.js → entities-6f3c5437.js} +2 -2
  32. package/dist/esm/index.js +4 -4
  33. package/dist/esm/index.mjs +4 -4
  34. package/dist/esm/loader.js +1 -1
  35. package/dist/esm/loader.mjs +1 -1
  36. package/dist/esm/{mapper-5894c2a4.js → mapper-941ff03c.js} +1 -1
  37. package/dist/esm/{scene-5b919078.js → scene-970f5000.js} +28 -1
  38. package/dist/esm/{streamAttributes-7e8565be.js → streamAttributes-24bd7b3a.js} +976 -4
  39. package/dist/esm/vertex-scene-tree.entry.js +2 -2
  40. package/dist/esm/vertex-viewer-box-query-tool.entry.js +241 -0
  41. package/dist/esm/vertex-viewer-dom-element_2.entry.js +1 -1
  42. package/dist/esm/vertex-viewer-measurement-details.entry.js +1 -1
  43. package/dist/esm/vertex-viewer-measurement-distance.entry.js +2 -2
  44. package/dist/esm/vertex-viewer-measurement-line_2.entry.js +2 -2
  45. package/dist/esm/vertex-viewer-measurement-precise.entry.js +4 -4
  46. package/dist/esm/vertex-viewer-pin-group.entry.js +2 -2
  47. package/dist/esm/vertex-viewer-transform-widget.entry.js +1 -1
  48. package/dist/esm/vertex-viewer-view-cube.entry.js +1 -1
  49. package/dist/esm/vertex-viewer.entry.js +3 -3
  50. package/dist/esm/viewer.js +1 -1
  51. package/dist/types/components/viewer-box-query-tool/viewer-box-query-tool.d.ts +60 -0
  52. package/dist/types/components.d.ts +48 -0
  53. package/dist/types/lib/scenes/queries.d.ts +14 -2
  54. package/dist/types/lib/volume-intersection/controller.d.ts +17 -0
  55. package/dist/types/lib/volume-intersection/interactions.d.ts +13 -0
  56. package/dist/types/lib/volume-intersection/model.d.ts +26 -0
  57. package/dist/viewer/index.esm.js +1 -1
  58. package/dist/viewer/{p-1e0dd2e9.js → p-10145045.js} +1 -1
  59. package/dist/viewer/{p-a6558bb2.entry.js → p-1bba9ade.entry.js} +1 -1
  60. package/dist/viewer/{p-3f6f2457.entry.js → p-24cda14a.entry.js} +1 -1
  61. package/dist/viewer/{p-b7e170ac.entry.js → p-2b58afc3.entry.js} +1 -1
  62. package/dist/viewer/{p-22ae6785.entry.js → p-51966cef.entry.js} +1 -1
  63. package/dist/viewer/{p-1fc24ec6.js → p-52ab9ec0.js} +1 -1
  64. package/dist/viewer/{p-927b528b.js → p-597cc9b5.js} +1 -1
  65. package/dist/viewer/{p-61e50e11.entry.js → p-608925c5.entry.js} +1 -1
  66. package/dist/viewer/p-68e192b9.js +4 -0
  67. package/dist/viewer/{p-d34ad2b2.entry.js → p-69a3fce8.entry.js} +1 -1
  68. package/dist/viewer/{p-7579e2a1.entry.js → p-74c772bb.entry.js} +1 -1
  69. package/dist/viewer/{p-40a9dd7d.js → p-9e1384c9.js} +1 -1
  70. package/dist/viewer/{p-d64c1e14.entry.js → p-a107b65e.entry.js} +2 -2
  71. package/dist/viewer/p-bb425931.entry.js +4 -0
  72. package/dist/viewer/{p-920c9a88.entry.js → p-bfacbaa8.entry.js} +1 -1
  73. package/dist/viewer/{p-f3ea0c2b.entry.js → p-c72da0fb.entry.js} +1 -1
  74. package/dist/viewer/viewer.esm.js +1 -1
  75. package/package.json +8 -8
  76. package/dist/viewer/p-31b87b90.js +0 -4
@@ -5,10 +5,10 @@ import { h, F as Fragment, r as registerInstance, c as createEvent, f as forceUp
5
5
  import { o as __rest } from './bundle.esm-ce2c7ad3.js';
6
6
  import { c as createCommonjsModule } from './_commonjsHelpers-11ca3be1.js';
7
7
  import { a as googleProtobuf, w as wrappers_pb, g as grpcWebClient_umd } from './grpc-web-client.umd-5409853c.js';
8
- import { p as parseConfig } from './config-49688db8.js';
8
+ import { p as parseConfig } from './config-6cdeb6ca.js';
9
9
  import { E as EventDispatcher } from './browser.esm-ae4ca1f1.js';
10
10
  import { i as isLoadedRow, f as fromNodeProto, g as getSceneTreeContainsElement } from './dom-e19ee80b.js';
11
- import './streamAttributes-7e8565be.js';
11
+ import './streamAttributes-24bd7b3a.js';
12
12
  import './entities-ce81dd7f.js';
13
13
 
14
14
  window.requestIdleCallback =
@@ -0,0 +1,241 @@
1
+ /**!
2
+ * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
+ */
4
+ import { r as registerInstance, h, H as Host, g as getElement } from './index-26dfb2d0.js';
5
+ import { p as point, i as rectangle } from './bundle.esm-ce2c7ad3.js';
6
+ import { E as EventDispatcher } from './browser.esm-ae4ca1f1.js';
7
+
8
+ const DEFAULT_CONCURRENT_VOLUME_QUERY_LIMIT = 5;
9
+ class VolumeIntersectionQueryController {
10
+ constructor(model, viewer) {
11
+ this.model = model;
12
+ this.viewer = viewer;
13
+ this.inFlightOperations = 0;
14
+ this.operationTransform = (builder) => builder.select();
15
+ }
16
+ setStartPoint(point) {
17
+ this.previousViewerCameraControls = this.viewer.cameraControls;
18
+ this.viewer.cameraControls = false;
19
+ this.model.setStartPoint(point);
20
+ }
21
+ setEndPoint(point) {
22
+ this.model.setEndPoint(point);
23
+ }
24
+ setOperationTransform(operationTransform) {
25
+ this.operationTransform = operationTransform;
26
+ }
27
+ async execute() {
28
+ var _a;
29
+ const screenBounds = this.model.getScreenBounds();
30
+ const type = this.model.getType();
31
+ this.viewer.cameraControls = (_a = this.previousViewerCameraControls) !== null && _a !== void 0 ? _a : true;
32
+ this.model.complete();
33
+ if (screenBounds != null &&
34
+ this.inFlightOperations < DEFAULT_CONCURRENT_VOLUME_QUERY_LIMIT) {
35
+ this.inFlightOperations = this.inFlightOperations + 1;
36
+ try {
37
+ const scene = await this.viewer.scene();
38
+ await scene
39
+ .items((op) => this.operationTransform(op.where((q) => q.withVolumeIntersection(screenBounds, type === 'exclusive'))))
40
+ .execute();
41
+ }
42
+ catch (e) {
43
+ console.error('Failed to perform volume intersection query', e);
44
+ throw e;
45
+ }
46
+ finally {
47
+ this.inFlightOperations = this.inFlightOperations - 1;
48
+ }
49
+ }
50
+ else if (this.inFlightOperations >= DEFAULT_CONCURRENT_VOLUME_QUERY_LIMIT) {
51
+ throw new Error(`Unable to perform volume intersection query due to the limit of ${DEFAULT_CONCURRENT_VOLUME_QUERY_LIMIT}.`);
52
+ }
53
+ }
54
+ }
55
+
56
+ class VolumeIntersectionQueryInteractionHandler {
57
+ constructor(controller) {
58
+ this.controller = controller;
59
+ this.handleDragBegin = this.handleDragBegin.bind(this);
60
+ this.handleDrag = this.handleDrag.bind(this);
61
+ this.handleDragEnd = this.handleDragEnd.bind(this);
62
+ }
63
+ initialize(element) {
64
+ this.element = element;
65
+ this.element.addEventListener('pointerdown', this.handleDragBegin);
66
+ }
67
+ dispose() {
68
+ var _a;
69
+ (_a = this.element) === null || _a === void 0 ? void 0 : _a.removeEventListener('pointerdown', this.handleDragBegin);
70
+ window.removeEventListener('pointermove', this.handleDrag);
71
+ window.removeEventListener('pointerup', this.handleDragEnd);
72
+ }
73
+ handleDragBegin(event) {
74
+ if (event.buttons === 1 && !this.isInteracting) {
75
+ this.isInteracting = true;
76
+ this.controller.setStartPoint(point.create(event.offsetX, event.offsetY));
77
+ window.addEventListener('pointermove', this.handleDrag);
78
+ window.addEventListener('pointerup', this.handleDragEnd);
79
+ }
80
+ }
81
+ handleDrag(event) {
82
+ this.controller.setEndPoint(point.create(event.offsetX, event.offsetY));
83
+ }
84
+ handleDragEnd() {
85
+ this.controller.execute();
86
+ this.isInteracting = false;
87
+ window.removeEventListener('pointermove', this.handleDrag);
88
+ window.removeEventListener('pointerup', this.handleDragEnd);
89
+ }
90
+ }
91
+
92
+ class VolumeIntersectionQueryModel {
93
+ constructor() {
94
+ this.dragStarted = new EventDispatcher();
95
+ this.dragComplete = new EventDispatcher();
96
+ this.screenBoundsChanged = new EventDispatcher();
97
+ }
98
+ setStartPoint(point) {
99
+ this.startPoint = point;
100
+ this.dragStarted.emit();
101
+ }
102
+ setEndPoint(point) {
103
+ this.endPoint = point;
104
+ this.updateQueryType();
105
+ this.screenBoundsChanged.emit(this.getQueryDetails());
106
+ }
107
+ complete() {
108
+ if (this.startPoint != null && this.endPoint != null) {
109
+ this.screenBoundsChanged.emit(undefined);
110
+ this.dragComplete.emit(this.getQueryDetails());
111
+ this.reset();
112
+ }
113
+ }
114
+ reset() {
115
+ this.startPoint = undefined;
116
+ this.endPoint = undefined;
117
+ this.type = undefined;
118
+ }
119
+ getScreenBounds() {
120
+ return this.startPoint != null && this.endPoint != null
121
+ ? rectangle.fromPoints(this.startPoint, this.endPoint)
122
+ : undefined;
123
+ }
124
+ getType() {
125
+ return this.type;
126
+ }
127
+ onScreenBoundsChanged(listener) {
128
+ return this.screenBoundsChanged.on(listener);
129
+ }
130
+ onDragStarted(listener) {
131
+ return this.dragStarted.on(listener);
132
+ }
133
+ onDragComplete(listener) {
134
+ return this.dragComplete.on(listener);
135
+ }
136
+ getQueryDetails() {
137
+ if (this.startPoint != null && this.endPoint != null && this.type != null) {
138
+ return {
139
+ screenBounds: rectangle.fromPoints(this.startPoint, this.endPoint),
140
+ type: this.type,
141
+ };
142
+ }
143
+ else {
144
+ throw new Error('Failed to create query details, the start and end points must be set.');
145
+ }
146
+ }
147
+ updateQueryType() {
148
+ if (this.startPoint != null && this.endPoint) {
149
+ this.type =
150
+ point.subtract(this.endPoint, this.startPoint).x > 0
151
+ ? 'exclusive'
152
+ : 'inclusive';
153
+ }
154
+ }
155
+ }
156
+
157
+ const viewerBoxQueryToolCss = ":host{--viewer-box-query-outline-exclusive-color:#0099cc;--viewer-box-query-outline-exclusive-border-style:solid;--viewer-box-query-outline-inclusive-color:#00cc00;--viewer-box-query-outline-inclusive-border-style:dashed;--viewer-box-query-outline-border-radius:0.25rem;--viewer-box-query-outline-fill-opacity:0.25}.bounds{position:absolute}.outline{position:relative;width:100%;height:100%;box-sizing:border-box;border-radius:var(--viewer-box-query-outline-border-radius)}:host([exclusive=\"true\"]) .outline{border:3px var(--viewer-box-query-outline-exclusive-border-style) var(--viewer-box-query-outline-exclusive-color)}:host([inclusive=\"true\"]) .outline{border:3px var(--viewer-box-query-outline-inclusive-border-style) var(--viewer-box-query-outline-inclusive-color)}.fill{position:relative;width:100%;height:100%;opacity:var(--viewer-box-query-outline-fill-opacity)}:host([exclusive=\"true\"]) .fill{background-color:var(--viewer-box-query-outline-exclusive-color)}:host([inclusive=\"true\"]) .fill{background-color:var(--viewer-box-query-outline-inclusive-color)}";
158
+
159
+ const ViewerBoxQueryTool = class {
160
+ constructor(hostRef) {
161
+ registerInstance(this, hostRef);
162
+ /**
163
+ * The default operation to perform when a drag has completed and the intersection
164
+ * query will be run. Defaults to `select`, and can be changed to `deselect`.
165
+ *
166
+ * The operation behavior for this intersection query tool can also be changed by
167
+ * providing a custom implementation of the `VolumeIntersectionQueryController`, or
168
+ * by using the `setOperationTransform` method of the default controller.
169
+ */
170
+ this.operationType = 'select';
171
+ this.handleScreenBoundsChanged = this.handleScreenBoundsChanged.bind(this);
172
+ }
173
+ componentWillLoad() {
174
+ var _a;
175
+ this.model = (_a = this.model) !== null && _a !== void 0 ? _a : new VolumeIntersectionQueryModel();
176
+ this.screenBoundsChangedDisposable = this.model.onScreenBoundsChanged(this.handleScreenBoundsChanged);
177
+ this.handleViewerChanged(this.viewer);
178
+ }
179
+ disconnectedCallback() {
180
+ var _a, _b, _c;
181
+ (_a = this.model) === null || _a === void 0 ? void 0 : _a.reset();
182
+ (_b = this.screenBoundsChangedDisposable) === null || _b === void 0 ? void 0 : _b.dispose();
183
+ (_c = this.interactionHandler) === null || _c === void 0 ? void 0 : _c.dispose();
184
+ }
185
+ /**
186
+ * @ignore
187
+ */
188
+ handleViewerChanged(newViewer) {
189
+ this.deregisterInteractionHandler();
190
+ if (this.model != null && newViewer != null) {
191
+ this.controller = new VolumeIntersectionQueryController(this.model, newViewer);
192
+ this.handleDefaultOperationChange(this.operationType);
193
+ this.registerInteractionHandler(this.controller, newViewer);
194
+ }
195
+ }
196
+ /**
197
+ * @ignore
198
+ */
199
+ handleDefaultOperationChange(updatedOperationType) {
200
+ var _a;
201
+ (_a = this.controller) === null || _a === void 0 ? void 0 : _a.setOperationTransform(updatedOperationType === 'select'
202
+ ? (builder) => builder.select()
203
+ : (builder) => builder.deselect());
204
+ }
205
+ /**
206
+ * @ignore
207
+ */
208
+ render() {
209
+ return (h(Host, null, h("vertex-viewer-layer", null, this.details != null && (h("div", { class: "bounds", style: {
210
+ left: `${this.details.screenBounds.x}px`,
211
+ top: `${this.details.screenBounds.y}px`,
212
+ width: `${this.details.screenBounds.width}px`,
213
+ height: `${this.details.screenBounds.height}px`,
214
+ } }, h("slot", { name: "bounds" }, h("div", { class: "outline" }, h("div", { class: "fill" }))))))));
215
+ }
216
+ handleScreenBoundsChanged(details) {
217
+ this.details = details;
218
+ this.updateTypeAttribute(details === null || details === void 0 ? void 0 : details.type);
219
+ }
220
+ registerInteractionHandler(controller, viewer) {
221
+ this.interactionHandler = new VolumeIntersectionQueryInteractionHandler(controller);
222
+ viewer.registerInteractionHandler(this.interactionHandler);
223
+ }
224
+ deregisterInteractionHandler() {
225
+ var _a;
226
+ (_a = this.interactionHandler) === null || _a === void 0 ? void 0 : _a.dispose();
227
+ this.interactionHandler = undefined;
228
+ }
229
+ updateTypeAttribute(type) {
230
+ this.hostEl.setAttribute('inclusive', `${type === 'inclusive'}`);
231
+ this.hostEl.setAttribute('exclusive', `${type === 'exclusive'}`);
232
+ }
233
+ get hostEl() { return getElement(this); }
234
+ static get watchers() { return {
235
+ "viewer": ["handleViewerChanged"],
236
+ "operationType": ["handleDefaultOperationChange"]
237
+ }; }
238
+ };
239
+ ViewerBoxQueryTool.style = viewerBoxQueryToolCss;
240
+
241
+ export { ViewerBoxQueryTool as vertex_viewer_box_query_tool };
@@ -4,7 +4,7 @@
4
4
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-26dfb2d0.js';
5
5
  import { v as vector3, q as quaternion, m as matrix4, u as euler } from './bundle.esm-ce2c7ad3.js';
6
6
  import { o as objects } from './browser.esm-ae4ca1f1.js';
7
- import './streamAttributes-7e8565be.js';
7
+ import './streamAttributes-24bd7b3a.js';
8
8
  import './entities-ce81dd7f.js';
9
9
  import { V as Viewport } from './viewport-e39e2eba.js';
10
10
  import './_commonjsHelpers-11ca3be1.js';
@@ -2,7 +2,7 @@
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
4
  import { h, F as Fragment, r as registerInstance, H as Host } from './index-26dfb2d0.js';
5
- import { D as DistanceUnits, A as AngleUnits, f as AreaUnits } from './streamAttributes-7e8565be.js';
5
+ import { D as DistanceUnits, A as AngleUnits, f as AreaUnits } from './streamAttributes-24bd7b3a.js';
6
6
  import './entities-ce81dd7f.js';
7
7
  import { o as __rest, v as vector3 } from './bundle.esm-ce2c7ad3.js';
8
8
  import { c as classnames } from './index-e841d91b.js';
@@ -5,9 +5,9 @@ import { h, r as registerInstance, c as createEvent, H as Host, g as getElement
5
5
  import { v as vector3, h as angle, p as point, l as line3 } from './bundle.esm-ce2c7ad3.js';
6
6
  import { m as measurementCursor } from './cursors-a8d4b3f4.js';
7
7
  import { a as cssTransformCenterAt, g as getMouseClientPosition } from './dom-5b164305.js';
8
- import './mapper-5894c2a4.js';
8
+ import './mapper-941ff03c.js';
9
9
  import './grpc-web-client.umd-5409853c.js';
10
- import { j as fromPbVector3f, D as DistanceUnits } from './streamAttributes-7e8565be.js';
10
+ import { j as fromPbVector3f, D as DistanceUnits } from './streamAttributes-24bd7b3a.js';
11
11
  import { M as MeasurementModel } from './model-fa9af61a.js';
12
12
  import { M as MeasurementOverlayManager } from './overlays-cc3efc30.js';
13
13
  import { m as makeMinimumDistanceResult } from './results-3b4df2cf.js';
@@ -3,9 +3,9 @@
3
3
  */
4
4
  import { r as registerInstance, h, F as Fragment, H as Host } from './index-26dfb2d0.js';
5
5
  import { p as point, h as angle } from './bundle.esm-ce2c7ad3.js';
6
- import './mapper-5894c2a4.js';
6
+ import './mapper-941ff03c.js';
7
7
  import './grpc-web-client.umd-5409853c.js';
8
- import './streamAttributes-7e8565be.js';
8
+ import './streamAttributes-24bd7b3a.js';
9
9
  import { M as MeasurementOverlayManager } from './overlays-cc3efc30.js';
10
10
  import { t as translateWorldLineToViewport } from './utils-81347571.js';
11
11
  import './_commonjsHelpers-11ca3be1.js';
@@ -2,11 +2,11 @@
2
2
  * Copyright (c) 2022 Vertex Software LLC. All rights reserved.
3
3
  */
4
4
  import { r as registerInstance, h, H as Host } from './index-26dfb2d0.js';
5
- import { s as scene_view_api_pb } from './mapper-5894c2a4.js';
5
+ import { s as scene_view_api_pb } from './mapper-941ff03c.js';
6
6
  import { g as grpcWebClient_umd } from './grpc-web-client.umd-5409853c.js';
7
- import { p as parseConfig } from './config-49688db8.js';
8
- import { a as MeasurementEntity, M as MeasurementController } from './entities-a5bfef48.js';
9
- import './streamAttributes-7e8565be.js';
7
+ import { p as parseConfig } from './config-6cdeb6ca.js';
8
+ import { a as MeasurementEntity, M as MeasurementController } from './entities-6f3c5437.js';
9
+ import './streamAttributes-24bd7b3a.js';
10
10
  import { M as MeasurementModel } from './model-fa9af61a.js';
11
11
  import { M as MeasurementOverlayManager } from './overlays-cc3efc30.js';
12
12
  import { p as point } from './bundle.esm-ce2c7ad3.js';
@@ -4,9 +4,9 @@
4
4
  import { h, F as Fragment, r as registerInstance } from './index-26dfb2d0.js';
5
5
  import { p as point, m as matrix4, v as vector3 } from './bundle.esm-ce2c7ad3.js';
6
6
  import './cursors-a8d4b3f4.js';
7
- import './mapper-5894c2a4.js';
7
+ import './mapper-941ff03c.js';
8
8
  import './grpc-web-client.umd-5409853c.js';
9
- import './streamAttributes-7e8565be.js';
9
+ import './streamAttributes-24bd7b3a.js';
10
10
  import './entities-ce81dd7f.js';
11
11
  import { V as Viewport } from './viewport-e39e2eba.js';
12
12
  import { g as getPinColors, i as isIconPin, b as isTextPin, P as PinModel, a as PinController, c as translatePointToScreen } from './model-40bd1711.js';
@@ -7,7 +7,7 @@ import { c as classnames } from './index-e841d91b.js';
7
7
  import { w as writeDOM, r as readDOM } from './stencil-bfbf099f.js';
8
8
  import { c as color, E as EventDispatcher } from './browser.esm-ae4ca1f1.js';
9
9
  import { c as createCommonjsModule, a as commonjsGlobal, g as getAugmentedNamespace, b as getDefaultExportFromCjs } from './_commonjsHelpers-11ca3be1.js';
10
- import './streamAttributes-7e8565be.js';
10
+ import './streamAttributes-24bd7b3a.js';
11
11
  import './entities-ce81dd7f.js';
12
12
  import { V as Viewport } from './viewport-e39e2eba.js';
13
13
 
@@ -4,7 +4,7 @@
4
4
  import { h, F as Fragment, r as registerInstance, H as Host } from './index-26dfb2d0.js';
5
5
  import { v as vector3, q as quaternion, u as euler } from './bundle.esm-ce2c7ad3.js';
6
6
  import { r as readDOM } from './stencil-bfbf099f.js';
7
- import { O as Orientation, e as FramePerspectiveCamera, G as StandardView } from './streamAttributes-7e8565be.js';
7
+ import { O as Orientation, e as FramePerspectiveCamera, G as StandardView } from './streamAttributes-24bd7b3a.js';
8
8
  import './entities-ce81dd7f.js';
9
9
  import { c as classnames } from './index-e841d91b.js';
10
10
  import './browser.esm-ae4ca1f1.js';
@@ -3,13 +3,13 @@
3
3
  */
4
4
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-26dfb2d0.js';
5
5
  import { p as point, v as vector3, h as angle, j as plane, r as ray, b as boundingBox, s as matrix2, d as dimensions } from './bundle.esm-ce2c7ad3.js';
6
- import { l as fromPbStencilBufferOrThrow, m as decodePng, n as DepthBuffer, t as toProtoDuration, g as toProtobuf, p as protoToDate, o as toPbStreamAttributes, q as toPbRGBi, S as StreamApi, r as StreamRequestError, s as fromPbFrameOrThrow, u as fromPbStartStreamResponseOrThrow, x as fromPbReconnectResponseOrThrow, y as fromPbSyncTimeResponseOrThrow, z as currentDateAsProtoTimestamp, B as fromPbRefreshTokenResponseOrThrow, W as WebSocketClientImpl, C as toOrthographic, E as toPerspective } from './streamAttributes-7e8565be.js';
6
+ import { l as fromPbStencilBufferOrThrow, m as decodePng, n as DepthBuffer, t as toProtoDuration, g as toProtobuf, p as protoToDate, o as toPbStreamAttributes, q as toPbRGBi, S as StreamApi, r as StreamRequestError, s as fromPbFrameOrThrow, u as fromPbStartStreamResponseOrThrow, x as fromPbReconnectResponseOrThrow, y as fromPbSyncTimeResponseOrThrow, z as currentDateAsProtoTimestamp, B as fromPbRefreshTokenResponseOrThrow, W as WebSocketClientImpl, C as toOrthographic, E as toPerspective } from './streamAttributes-24bd7b3a.js';
7
7
  import { E as EventDispatcher, m as mapper, c as color, o as objects, u as uri, a as async, b as uuid } from './browser.esm-ae4ca1f1.js';
8
8
  import { c as classnames } from './index-e841d91b.js';
9
- import { p as parseConfig } from './config-49688db8.js';
9
+ import { p as parseConfig } from './config-6cdeb6ca.js';
10
10
  import { C as CursorManager } from './cursors-a8d4b3f4.js';
11
11
  import { g as getMouseClientPosition, c as cssCursor } from './dom-5b164305.js';
12
- import { I as ImageLoadError, f as fromUrn, C as CustomError, W as WebsocketConnectionError, a as SynchronizedClock, b as SceneRenderError, d as defaultSelectionMaterial, V as ViewerInitializationError, e as InteractionHandlerError, g as ComponentInitializationError, h as IllegalStateError, i as fromHex, S as Scene } from './scene-5b919078.js';
12
+ import { I as ImageLoadError, f as fromUrn, C as CustomError, W as WebsocketConnectionError, a as SynchronizedClock, b as SceneRenderError, d as defaultSelectionMaterial, V as ViewerInitializationError, e as InteractionHandlerError, g as ComponentInitializationError, h as IllegalStateError, i as fromHex, S as Scene } from './scene-970f5000.js';
13
13
  import { E as EntityType } from './entities-ce81dd7f.js';
14
14
  import { V as Viewport } from './viewport-e39e2eba.js';
15
15
  import './_commonjsHelpers-11ca3be1.js';
@@ -72,5 +72,5 @@ const patchDynamicImport = (base, orgScriptElm) => {
72
72
 
73
73
  patchBrowser().then(options => {
74
74
  globalScripts();
75
- return bootstrapLazy([["vertex-viewer-pin-tool",[[1,"vertex-viewer-pin-tool",{"pinController":[1040],"pinModel":[16],"viewer":[16],"tool":[1025],"mode":[1025],"primaryColor":[1025,"primary-color"],"accentColor":[1025,"accent-color"],"pins":[32],"selectedPinId":[32],"elementBounds":[32],"projectionViewMatrix":[32]}]]],["vertex-scene-tree",[[1,"vertex-scene-tree",{"overScanCount":[2,"over-scan-count"],"viewerSelector":[1,"viewer-selector"],"viewer":[1040],"rowData":[16],"config":[1],"configEnv":[1,"config-env"],"controller":[1040],"metadataSearchExactMatch":[1028,"metadata-search-exact-match"],"metadataSearchKeys":[1040],"metadataKeys":[16],"rows":[32],"totalRows":[32],"showLoader":[32],"stateMap":[32],"errorDetails":[32],"attemptingRetry":[32],"invalidateRows":[64],"scrollToIndex":[64],"scrollToItem":[64],"expandAll":[64],"collapseAll":[64],"expandItem":[64],"collapseItem":[64],"toggleExpandItem":[64],"toggleItemVisibility":[64],"hideItem":[64],"showItem":[64],"selectItem":[64],"deselectItem":[64],"getRowAtIndex":[64],"getRowForEvent":[64],"getRowAtClientY":[64],"filterItems":[64],"selectFilteredItems":[64],"fetchMetadataKeys":[64]},[[0,"search","handleSearch"]]]]],["vertex-viewer-default-toolbar",[[1,"vertex-viewer-default-toolbar",{"viewer":[16],"placement":[1],"direction":[1],"animationsDisabled":[4,"animations-disabled"],"animationMs":[2,"animation-ms"]}]]],["vertex-viewer-markup",[[1,"vertex-viewer-markup",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"selectedMarkupId":[1025,"selected-markup-id"],"selectNew":[4,"select-new"],"toSelectMarkupId":[32],"pointerDownPosition":[32],"addMarkup":[64],"removeMarkup":[64],"getMarkupElements":[64],"getMarkupElement":[64]},[[0,"markupEnd","handleMarkupEnd"],[1,"pointerdown","handleMarkupPointerDown"]]]]],["vertex-viewer-markup-tool",[[1,"vertex-viewer-markup-tool",{"arrowTemplateId":[1,"arrow-template-id"],"circleTemplateId":[1,"circle-template-id"],"freeformTemplateId":[1,"freeform-template-id"],"tool":[1],"disabled":[4],"viewer":[16],"stateMap":[32],"reset":[64]}]]],["vertex-viewer-view-cube",[[1,"vertex-viewer-view-cube",{"xPositiveLabel":[1,"x-positive-label"],"xNegativeLabel":[1,"x-negative-label"],"yPositiveLabel":[1,"y-positive-label"],"yNegativeLabel":[1,"y-negative-label"],"zPositiveLabel":[1,"z-positive-label"],"zNegativeLabel":[1,"z-negative-label"],"standardViewsOff":[4,"standard-views-off"],"animationDuration":[2,"animation-duration"],"triadOff":[4,"triad-off"],"worldOrientation":[1040],"camera":[1040],"viewer":[16],"boxLength":[32],"triadPosition":[32]}]]],["vertex-viewer-measurement-distance",[[1,"vertex-viewer-measurement-distance",{"start":[1040],"startJson":[1,"start-json"],"end":[1040],"endJson":[1,"end-json"],"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],"measurementModel":[16],"viewport":[32],"elementBounds":[32],"interactionCount":[32],"internalCamera":[32],"invalidateStateCounter":[32],"stateMap":[32],"measurementUnits":[32],"computeElementMetrics":[64]}]]],["vertex-viewer-measurement-precise",[[1,"vertex-viewer-measurement-precise",{"measurementModel":[16],"measurementOverlays":[16],"measurementController":[1040],"measurableEntityTypes":[16],"viewer":[16],"configEnv":[1,"config-env"],"config":[1]}]]],["vertex-scene-tree-table-cell",[[1,"vertex-scene-tree-table-cell",{"node":[16],"tree":[16],"value":[1],"placeholder":[1],"hovered":[1028],"isScrolling":[4,"is-scrolling"],"expandToggle":[4,"expand-toggle"],"visibilityToggle":[4,"visibility-toggle"],"selectionHandler":[16],"visibilityHandler":[16],"expansionHandler":[16],"hoverController":[16]}]]],["vertex-scene-tree-table-column",[[1,"vertex-scene-tree-table-column",{"initialWidth":[2,"initial-width"],"minWidth":[2,"min-width"],"maxWidth":[2,"max-width"]}]]],["vertex-scene-tree-table-header",[[1,"vertex-scene-tree-table-header"]]],["vertex-scene-tree-table-resize-divider",[[1,"vertex-scene-tree-table-resize-divider",{"dragging":[32]}]]],["vertex-scene-tree-toolbar-group",[[1,"vertex-scene-tree-toolbar-group"]]],["vertex-viewer",[[1,"vertex-viewer",{"src":[1],"clientId":[1,"client-id"],"deviceId":[1025,"device-id"],"config":[1],"configEnv":[1,"config-env"],"resolvedConfig":[1040],"cameraControls":[4,"camera-controls"],"cameraType":[1537,"camera-type"],"keyboardControls":[4,"keyboard-controls"],"rotateAroundTapPoint":[4,"rotate-around-tap-point"],"token":[1025],"depthBuffers":[1,"depth-buffers"],"experimentalGhostingOpacity":[2,"experimental-ghosting-opacity"],"noDefaultLights":[4,"no-default-lights"],"experimentalRenderingOptions":[1,"experimental-rendering-options"],"featureLines":[16],"featureHighlighting":[16],"featureMaps":[1,"feature-maps"],"selectionMaterial":[1,"selection-material"],"resizeDebounce":[2,"resize-debounce"],"frame":[1040],"stream":[1040],"stencilBuffer":[1040],"viewport":[1040],"dimensions":[32],"hostDimensions":[32],"errorMessage":[32],"cursor":[32],"stateMap":[32],"dispatchFrameDrawn":[64],"registerInteractionHandler":[64],"registerTapKeyInteraction":[64],"getInteractionTarget_DEPRECATED":[64],"addCursor":[64],"getInteractionHandlers":[64],"getKeyInteractions":[64],"getBaseInteractionHandler":[64],"getJwt":[64],"load":[64],"unload":[64],"scene":[64],"isSceneReady":[64]},[[0,"tap","handleTapEvent"]]]]],["vertex-viewer-measurement-details",[[1,"vertex-viewer-measurement-details",{"measurementModel":[16],"measurementOverlays":[16],"measurementOutcome":[1040],"distanceUnits":[1,"distance-units"],"angleUnits":[1,"angle-units"],"fractionalDigits":[2,"fractional-digits"],"distanceFormatter":[16],"angleFormatter":[16],"areaFormatter":[16],"resultTypes":[16],"overlay":[32],"distanceMeasurementUnits":[32],"angleMeasurementUnits":[32],"areaMeasurementUnits":[32]}]]],["vertex-viewer-transform-widget",[[1,"vertex-viewer-transform-widget",{"viewer":[16],"position":[1040],"controller":[1040],"hovered":[1040]}]]],["vertex-viewer-pin-group",[[0,"vertex-viewer-pin-group",{"pin":[16],"matrix":[1040],"projectionViewMatrix":[16],"elementBounds":[1040],"pinModel":[16],"pinController":[16],"selected":[4],"invalidateStateCounter":[32]}]]],["vertex-viewer-dom-group",[[1,"vertex-viewer-dom-group",{"position":[1040],"positionJson":[1,"position"],"rotation":[1040],"rotationJson":[1,"rotation"],"quaternion":[1040],"quaternionJson":[1,"quaternion"],"scale":[1040],"scaleJson":[1,"scale"],"matrix":[1040]}]]],["vertex-viewer-layer",[[1,"vertex-viewer-layer",{"stretchOff":[516,"stretch-off"]}]]],["vertex-viewer-spinner",[[1,"vertex-viewer-spinner",{"size":[1]}]]],["vertex-viewer-icon",[[1,"vertex-viewer-icon",{"name":[1],"size":[1]}]]],["vertex-scene-tree-search_3",[[1,"vertex-scene-tree-search",{"debounce":[2],"disabled":[4],"placeholder":[1],"controller":[16],"value":[1025],"focused":[32],"isSearching":[32],"setFocus":[64]}],[1,"vertex-scene-tree-table-layout",{"tree":[16],"controller":[16],"rows":[16],"totalRows":[2,"total-rows"],"rowHeight":[1026,"row-height"],"overScanCount":[2,"over-scan-count"],"rowData":[16],"layoutOffset":[1026,"layout-offset"],"scrollOffset":[1026,"scroll-offset"],"layoutHeight":[1026,"layout-height"],"layoutWidth":[1026,"layout-width"],"viewportStartIndex":[1026,"viewport-start-index"],"viewportEndIndex":[1026,"viewport-end-index"],"columnGridLayout":[32],"columnGridFixedLayout":[32],"isComputingCellHeight":[32],"lastDividerPointerPosition":[32],"resizingColumnIndex":[32],"isScrolling":[32],"scrollTimer":[32],"stateMap":[32],"scrollToPosition":[64]}],[1,"vertex-scene-tree-toolbar"]]],["vertex-viewer-button_3",[[1,"vertex-viewer-toolbar",{"placement":[1],"direction":[1]}],[1,"vertex-viewer-button"],[1,"vertex-viewer-toolbar-group",{"direction":[1]}]]],["vertex-viewer-pin-label_2",[[0,"vertex-viewer-pin-label",{"pin":[16],"elementBounds":[16],"value":[1025],"pinController":[16],"focused":[32],"computedScreenPosition":[32],"textareaRows":[32],"contentElBounds":[32],"setFocus":[64]}],[0,"vertex-viewer-pin-label-line",{"pinPoint":[16],"labelPoint":[16],"pin":[16]}]]],["vertex-viewer-measurement-line_2",[[1,"vertex-viewer-measurement-overlays",{"measurementOverlays":[16],"camera":[1040],"viewer":[16],"overlays":[32]}],[1,"vertex-viewer-measurement-line",{"start":[16],"end":[16],"capLength":[2,"cap-length"],"pointerEvents":[1,"pointer-events"]}]]],["vertex-viewer-dom-element_2",[[1,"vertex-viewer-dom-renderer",{"drawMode":[1,"draw-mode"],"viewer":[16],"camera":[1040],"depthBuffer":[1040],"viewport":[32],"invalidateFrameCounter":[32]},[[0,"propertyChange","handlePropertyChange"]]],[1,"vertex-viewer-dom-element",{"position":[1040],"positionJson":[1,"position"],"rotation":[1040],"rotationJson":[1,"rotation"],"quaternion":[1040],"quaternionJson":[1,"quaternion"],"scale":[1040],"scaleJson":[1,"scale"],"matrix":[1040],"occlusionOff":[4,"occlusion-off"],"occluded":[516],"billboardOff":[4,"billboard-off"],"interactionsOff":[516,"interactions-off"]}]]],["vertex-viewer-markup-arrow_3",[[1,"vertex-viewer-markup-arrow",{"start":[1040],"startJson":[1,"start"],"end":[1040],"endJson":[1,"end"],"mode":[513],"viewer":[16],"elementBounds":[32],"dispose":[64]}],[1,"vertex-viewer-markup-circle",{"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"elementBounds":[32],"dispose":[64]}],[1,"vertex-viewer-markup-freeform",{"points":[1040],"pointsJson":[1,"points"],"bounds":[1040],"boundsJson":[1,"bounds"],"mode":[513],"viewer":[16],"elementBounds":[32],"screenPoints":[32],"dispose":[64]}]]]], options);
75
+ return bootstrapLazy(JSON.parse("[[\"vertex-viewer-pin-tool\",[[1,\"vertex-viewer-pin-tool\",{\"pinController\":[1040],\"pinModel\":[16],\"viewer\":[16],\"tool\":[1025],\"mode\":[1025],\"primaryColor\":[1025,\"primary-color\"],\"accentColor\":[1025,\"accent-color\"],\"pins\":[32],\"selectedPinId\":[32],\"elementBounds\":[32],\"projectionViewMatrix\":[32]}]]],[\"vertex-scene-tree\",[[1,\"vertex-scene-tree\",{\"overScanCount\":[2,\"over-scan-count\"],\"viewerSelector\":[1,\"viewer-selector\"],\"viewer\":[1040],\"rowData\":[16],\"config\":[1],\"configEnv\":[1,\"config-env\"],\"controller\":[1040],\"metadataSearchExactMatch\":[1028,\"metadata-search-exact-match\"],\"metadataSearchKeys\":[1040],\"metadataKeys\":[16],\"rows\":[32],\"totalRows\":[32],\"showLoader\":[32],\"stateMap\":[32],\"errorDetails\":[32],\"attemptingRetry\":[32],\"invalidateRows\":[64],\"scrollToIndex\":[64],\"scrollToItem\":[64],\"expandAll\":[64],\"collapseAll\":[64],\"expandItem\":[64],\"collapseItem\":[64],\"toggleExpandItem\":[64],\"toggleItemVisibility\":[64],\"hideItem\":[64],\"showItem\":[64],\"selectItem\":[64],\"deselectItem\":[64],\"getRowAtIndex\":[64],\"getRowForEvent\":[64],\"getRowAtClientY\":[64],\"filterItems\":[64],\"selectFilteredItems\":[64],\"fetchMetadataKeys\":[64]},[[0,\"search\",\"handleSearch\"]]]]],[\"vertex-viewer-default-toolbar\",[[1,\"vertex-viewer-default-toolbar\",{\"viewer\":[16],\"placement\":[1],\"direction\":[1],\"animationsDisabled\":[4,\"animations-disabled\"],\"animationMs\":[2,\"animation-ms\"]}]]],[\"vertex-viewer-markup\",[[1,\"vertex-viewer-markup\",{\"arrowTemplateId\":[1,\"arrow-template-id\"],\"circleTemplateId\":[1,\"circle-template-id\"],\"freeformTemplateId\":[1,\"freeform-template-id\"],\"tool\":[1],\"disabled\":[4],\"viewer\":[16],\"selectedMarkupId\":[1025,\"selected-markup-id\"],\"selectNew\":[4,\"select-new\"],\"toSelectMarkupId\":[32],\"pointerDownPosition\":[32],\"addMarkup\":[64],\"removeMarkup\":[64],\"getMarkupElements\":[64],\"getMarkupElement\":[64]},[[0,\"markupEnd\",\"handleMarkupEnd\"],[1,\"pointerdown\",\"handleMarkupPointerDown\"]]]]],[\"vertex-viewer-markup-tool\",[[1,\"vertex-viewer-markup-tool\",{\"arrowTemplateId\":[1,\"arrow-template-id\"],\"circleTemplateId\":[1,\"circle-template-id\"],\"freeformTemplateId\":[1,\"freeform-template-id\"],\"tool\":[1],\"disabled\":[4],\"viewer\":[16],\"stateMap\":[32],\"reset\":[64]}]]],[\"vertex-viewer-view-cube\",[[1,\"vertex-viewer-view-cube\",{\"xPositiveLabel\":[1,\"x-positive-label\"],\"xNegativeLabel\":[1,\"x-negative-label\"],\"yPositiveLabel\":[1,\"y-positive-label\"],\"yNegativeLabel\":[1,\"y-negative-label\"],\"zPositiveLabel\":[1,\"z-positive-label\"],\"zNegativeLabel\":[1,\"z-negative-label\"],\"standardViewsOff\":[4,\"standard-views-off\"],\"animationDuration\":[2,\"animation-duration\"],\"triadOff\":[4,\"triad-off\"],\"worldOrientation\":[1040],\"camera\":[1040],\"viewer\":[16],\"boxLength\":[32],\"triadPosition\":[32]}]]],[\"vertex-viewer-measurement-distance\",[[1,\"vertex-viewer-measurement-distance\",{\"start\":[1040],\"startJson\":[1,\"start-json\"],\"end\":[1040],\"endJson\":[1,\"end-json\"],\"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],\"measurementModel\":[16],\"viewport\":[32],\"elementBounds\":[32],\"interactionCount\":[32],\"internalCamera\":[32],\"invalidateStateCounter\":[32],\"stateMap\":[32],\"measurementUnits\":[32],\"computeElementMetrics\":[64]}]]],[\"vertex-viewer-measurement-precise\",[[1,\"vertex-viewer-measurement-precise\",{\"measurementModel\":[16],\"measurementOverlays\":[16],\"measurementController\":[1040],\"measurableEntityTypes\":[16],\"viewer\":[16],\"configEnv\":[1,\"config-env\"],\"config\":[1]}]]],[\"vertex-viewer-box-query-tool\",[[1,\"vertex-viewer-box-query-tool\",{\"viewer\":[16],\"controller\":[1040],\"model\":[1040],\"operationType\":[1,\"operation-type\"],\"details\":[32]}]]],[\"vertex-scene-tree-table-cell\",[[1,\"vertex-scene-tree-table-cell\",{\"node\":[16],\"tree\":[16],\"value\":[1],\"placeholder\":[1],\"hovered\":[1028],\"isScrolling\":[4,\"is-scrolling\"],\"expandToggle\":[4,\"expand-toggle\"],\"visibilityToggle\":[4,\"visibility-toggle\"],\"selectionHandler\":[16],\"visibilityHandler\":[16],\"expansionHandler\":[16],\"hoverController\":[16]}]]],[\"vertex-scene-tree-table-column\",[[1,\"vertex-scene-tree-table-column\",{\"initialWidth\":[2,\"initial-width\"],\"minWidth\":[2,\"min-width\"],\"maxWidth\":[2,\"max-width\"]}]]],[\"vertex-scene-tree-table-header\",[[1,\"vertex-scene-tree-table-header\"]]],[\"vertex-scene-tree-table-resize-divider\",[[1,\"vertex-scene-tree-table-resize-divider\",{\"dragging\":[32]}]]],[\"vertex-scene-tree-toolbar-group\",[[1,\"vertex-scene-tree-toolbar-group\"]]],[\"vertex-viewer\",[[1,\"vertex-viewer\",{\"src\":[1],\"clientId\":[1,\"client-id\"],\"deviceId\":[1025,\"device-id\"],\"config\":[1],\"configEnv\":[1,\"config-env\"],\"resolvedConfig\":[1040],\"cameraControls\":[4,\"camera-controls\"],\"cameraType\":[1537,\"camera-type\"],\"keyboardControls\":[4,\"keyboard-controls\"],\"rotateAroundTapPoint\":[4,\"rotate-around-tap-point\"],\"token\":[1025],\"depthBuffers\":[1,\"depth-buffers\"],\"experimentalGhostingOpacity\":[2,\"experimental-ghosting-opacity\"],\"noDefaultLights\":[4,\"no-default-lights\"],\"experimentalRenderingOptions\":[1,\"experimental-rendering-options\"],\"featureLines\":[16],\"featureHighlighting\":[16],\"featureMaps\":[1,\"feature-maps\"],\"selectionMaterial\":[1,\"selection-material\"],\"resizeDebounce\":[2,\"resize-debounce\"],\"frame\":[1040],\"stream\":[1040],\"stencilBuffer\":[1040],\"viewport\":[1040],\"dimensions\":[32],\"hostDimensions\":[32],\"errorMessage\":[32],\"cursor\":[32],\"stateMap\":[32],\"dispatchFrameDrawn\":[64],\"registerInteractionHandler\":[64],\"registerTapKeyInteraction\":[64],\"getInteractionTarget_DEPRECATED\":[64],\"addCursor\":[64],\"getInteractionHandlers\":[64],\"getKeyInteractions\":[64],\"getBaseInteractionHandler\":[64],\"getJwt\":[64],\"load\":[64],\"unload\":[64],\"scene\":[64],\"isSceneReady\":[64]},[[0,\"tap\",\"handleTapEvent\"]]]]],[\"vertex-viewer-measurement-details\",[[1,\"vertex-viewer-measurement-details\",{\"measurementModel\":[16],\"measurementOverlays\":[16],\"measurementOutcome\":[1040],\"distanceUnits\":[1,\"distance-units\"],\"angleUnits\":[1,\"angle-units\"],\"fractionalDigits\":[2,\"fractional-digits\"],\"distanceFormatter\":[16],\"angleFormatter\":[16],\"areaFormatter\":[16],\"resultTypes\":[16],\"overlay\":[32],\"distanceMeasurementUnits\":[32],\"angleMeasurementUnits\":[32],\"areaMeasurementUnits\":[32]}]]],[\"vertex-viewer-transform-widget\",[[1,\"vertex-viewer-transform-widget\",{\"viewer\":[16],\"position\":[1040],\"controller\":[1040],\"hovered\":[1040]}]]],[\"vertex-viewer-icon\",[[1,\"vertex-viewer-icon\",{\"name\":[1],\"size\":[1]}]]],[\"vertex-viewer-pin-group\",[[0,\"vertex-viewer-pin-group\",{\"pin\":[16],\"matrix\":[1040],\"projectionViewMatrix\":[16],\"elementBounds\":[1040],\"pinModel\":[16],\"pinController\":[16],\"selected\":[4],\"invalidateStateCounter\":[32]}]]],[\"vertex-viewer-dom-group\",[[1,\"vertex-viewer-dom-group\",{\"position\":[1040],\"positionJson\":[1,\"position\"],\"rotation\":[1040],\"rotationJson\":[1,\"rotation\"],\"quaternion\":[1040],\"quaternionJson\":[1,\"quaternion\"],\"scale\":[1040],\"scaleJson\":[1,\"scale\"],\"matrix\":[1040]}]]],[\"vertex-viewer-spinner\",[[1,\"vertex-viewer-spinner\",{\"size\":[1]}]]],[\"vertex-scene-tree-search_3\",[[1,\"vertex-scene-tree-search\",{\"debounce\":[2],\"disabled\":[4],\"placeholder\":[1],\"controller\":[16],\"value\":[1025],\"focused\":[32],\"isSearching\":[32],\"setFocus\":[64]}],[1,\"vertex-scene-tree-table-layout\",{\"tree\":[16],\"controller\":[16],\"rows\":[16],\"totalRows\":[2,\"total-rows\"],\"rowHeight\":[1026,\"row-height\"],\"overScanCount\":[2,\"over-scan-count\"],\"rowData\":[16],\"layoutOffset\":[1026,\"layout-offset\"],\"scrollOffset\":[1026,\"scroll-offset\"],\"layoutHeight\":[1026,\"layout-height\"],\"layoutWidth\":[1026,\"layout-width\"],\"viewportStartIndex\":[1026,\"viewport-start-index\"],\"viewportEndIndex\":[1026,\"viewport-end-index\"],\"columnGridLayout\":[32],\"columnGridFixedLayout\":[32],\"isComputingCellHeight\":[32],\"lastDividerPointerPosition\":[32],\"resizingColumnIndex\":[32],\"isScrolling\":[32],\"scrollTimer\":[32],\"stateMap\":[32],\"scrollToPosition\":[64]}],[1,\"vertex-scene-tree-toolbar\"]]],[\"vertex-viewer-layer\",[[1,\"vertex-viewer-layer\",{\"stretchOff\":[516,\"stretch-off\"]}]]],[\"vertex-viewer-button_3\",[[1,\"vertex-viewer-toolbar\",{\"placement\":[1],\"direction\":[1]}],[1,\"vertex-viewer-button\"],[1,\"vertex-viewer-toolbar-group\",{\"direction\":[1]}]]],[\"vertex-viewer-pin-label_2\",[[0,\"vertex-viewer-pin-label\",{\"pin\":[16],\"elementBounds\":[16],\"value\":[1025],\"pinController\":[16],\"focused\":[32],\"computedScreenPosition\":[32],\"textareaRows\":[32],\"contentElBounds\":[32],\"setFocus\":[64]}],[0,\"vertex-viewer-pin-label-line\",{\"pinPoint\":[16],\"labelPoint\":[16],\"pin\":[16]}]]],[\"vertex-viewer-measurement-line_2\",[[1,\"vertex-viewer-measurement-overlays\",{\"measurementOverlays\":[16],\"camera\":[1040],\"viewer\":[16],\"overlays\":[32]}],[1,\"vertex-viewer-measurement-line\",{\"start\":[16],\"end\":[16],\"capLength\":[2,\"cap-length\"],\"pointerEvents\":[1,\"pointer-events\"]}]]],[\"vertex-viewer-dom-element_2\",[[1,\"vertex-viewer-dom-renderer\",{\"drawMode\":[1,\"draw-mode\"],\"viewer\":[16],\"camera\":[1040],\"depthBuffer\":[1040],\"viewport\":[32],\"invalidateFrameCounter\":[32]},[[0,\"propertyChange\",\"handlePropertyChange\"]]],[1,\"vertex-viewer-dom-element\",{\"position\":[1040],\"positionJson\":[1,\"position\"],\"rotation\":[1040],\"rotationJson\":[1,\"rotation\"],\"quaternion\":[1040],\"quaternionJson\":[1,\"quaternion\"],\"scale\":[1040],\"scaleJson\":[1,\"scale\"],\"matrix\":[1040],\"occlusionOff\":[4,\"occlusion-off\"],\"occluded\":[516],\"billboardOff\":[4,\"billboard-off\"],\"interactionsOff\":[516,\"interactions-off\"]}]]],[\"vertex-viewer-markup-arrow_3\",[[1,\"vertex-viewer-markup-arrow\",{\"start\":[1040],\"startJson\":[1,\"start\"],\"end\":[1040],\"endJson\":[1,\"end\"],\"mode\":[513],\"viewer\":[16],\"elementBounds\":[32],\"dispose\":[64]}],[1,\"vertex-viewer-markup-circle\",{\"bounds\":[1040],\"boundsJson\":[1,\"bounds\"],\"mode\":[513],\"viewer\":[16],\"elementBounds\":[32],\"dispose\":[64]}],[1,\"vertex-viewer-markup-freeform\",{\"points\":[1040],\"pointsJson\":[1,\"points\"],\"bounds\":[1040],\"boundsJson\":[1,\"bounds\"],\"mode\":[513],\"viewer\":[16],\"elementBounds\":[32],\"screenPoints\":[32],\"dispose\":[64]}]]]]"), options);
76
76
  });
@@ -0,0 +1,60 @@
1
+ import { h } from '../../stencil-public-runtime';
2
+ import { VolumeIntersectionQueryController } from '../../lib/volume-intersection/controller';
3
+ import { VolumeIntersectionQueryModel } from '../../lib/volume-intersection/model';
4
+ export declare type VolumeIntersectionQueryType = 'select' | 'deselect';
5
+ /**
6
+ * The `ViewerBoxQueryTool` allows for the drawing of a "box" on screen to represent
7
+ * a query for items in a specific area of the viewer. This tool then allows for an
8
+ * operation to be performed on the items contained (exclusive) by the box or both
9
+ * contained by and intersecting with (inclusive) the box.
10
+ */
11
+ export declare class ViewerBoxQueryTool {
12
+ /**
13
+ * The viewer that this component is bound to. This is automatically assigned
14
+ * if added to the light-dom of a parent viewer element.
15
+ */
16
+ viewer?: HTMLVertexViewerElement;
17
+ /**
18
+ * The controller that is responsible for performing operations using the
19
+ * volume intersection query defined by the drawn box and updating the model.
20
+ */
21
+ controller?: VolumeIntersectionQueryController;
22
+ /**
23
+ * The model that contains the points representing the corners of the box
24
+ * displayed on screen, the type of the query to be performed, and methods
25
+ * for setting these values.
26
+ */
27
+ model?: VolumeIntersectionQueryModel;
28
+ /**
29
+ * The default operation to perform when a drag has completed and the intersection
30
+ * query will be run. Defaults to `select`, and can be changed to `deselect`.
31
+ *
32
+ * The operation behavior for this intersection query tool can also be changed by
33
+ * providing a custom implementation of the `VolumeIntersectionQueryController`, or
34
+ * by using the `setOperationTransform` method of the default controller.
35
+ */
36
+ operationType: VolumeIntersectionQueryType;
37
+ private details?;
38
+ private hostEl;
39
+ private interactionHandler?;
40
+ private screenBoundsChangedDisposable?;
41
+ constructor();
42
+ componentWillLoad(): void;
43
+ disconnectedCallback(): void;
44
+ /**
45
+ * @ignore
46
+ */
47
+ protected handleViewerChanged(newViewer?: HTMLVertexViewerElement): void;
48
+ /**
49
+ * @ignore
50
+ */
51
+ protected handleDefaultOperationChange(updatedOperationType: VolumeIntersectionQueryType): void;
52
+ /**
53
+ * @ignore
54
+ */
55
+ protected render(): h.JSX.IntrinsicElements;
56
+ private handleScreenBoundsChanged;
57
+ private registerInteractionHandler;
58
+ private deregisterInteractionHandler;
59
+ private updateTypeAttribute;
60
+ }
@@ -33,6 +33,9 @@ import { KeyInteraction } from "./lib/interactions/keyInteraction";
33
33
  import { Cursor } from "./lib/cursors";
34
34
  import { BaseInteractionHandler } from "./lib/interactions/baseInteractionHandler";
35
35
  import { Scene } from "./lib/scenes/scene";
36
+ import { VolumeIntersectionQueryController } from "./lib/volume-intersection/controller";
37
+ import { VolumeIntersectionQueryModel } from "./lib/volume-intersection/model";
38
+ import { VolumeIntersectionQueryType } from "./components/viewer-box-query-tool/viewer-box-query-tool";
36
39
  import { ViewerToolbarPlacement } from "./components/viewer-toolbar/viewer-toolbar";
37
40
  import { ViewerToolbarGroupDirection } from "./components/viewer-toolbar-group/viewer-toolbar-group";
38
41
  import { ViewerDomRendererDrawMode } from "./components/viewer-dom-renderer/viewer-dom-renderer";
@@ -464,6 +467,24 @@ export namespace Components {
464
467
  */
465
468
  "viewport": Viewport;
466
469
  }
470
+ interface VertexViewerBoxQueryTool {
471
+ /**
472
+ * The controller that is responsible for performing operations using the volume intersection query defined by the drawn box and updating the model.
473
+ */
474
+ "controller"?: VolumeIntersectionQueryController;
475
+ /**
476
+ * The model that contains the points representing the corners of the box displayed on screen, the type of the query to be performed, and methods for setting these values.
477
+ */
478
+ "model"?: VolumeIntersectionQueryModel;
479
+ /**
480
+ * The default operation to perform when a drag has completed and the intersection query will be run. Defaults to `select`, and can be changed to `deselect`. The operation behavior for this intersection query tool can also be changed by providing a custom implementation of the `VolumeIntersectionQueryController`, or by using the `setOperationTransform` method of the default controller.
481
+ */
482
+ "operationType": VolumeIntersectionQueryType;
483
+ /**
484
+ * The viewer that this component is bound to. This is automatically assigned if added to the light-dom of a parent viewer element.
485
+ */
486
+ "viewer"?: HTMLVertexViewerElement;
487
+ }
467
488
  interface VertexViewerButton {
468
489
  }
469
490
  interface VertexViewerDefaultToolbar {
@@ -1244,6 +1265,12 @@ declare global {
1244
1265
  prototype: HTMLVertexViewerElement;
1245
1266
  new (): HTMLVertexViewerElement;
1246
1267
  };
1268
+ interface HTMLVertexViewerBoxQueryToolElement extends Components.VertexViewerBoxQueryTool, HTMLStencilElement {
1269
+ }
1270
+ var HTMLVertexViewerBoxQueryToolElement: {
1271
+ prototype: HTMLVertexViewerBoxQueryToolElement;
1272
+ new (): HTMLVertexViewerBoxQueryToolElement;
1273
+ };
1247
1274
  interface HTMLVertexViewerButtonElement extends Components.VertexViewerButton, HTMLStencilElement {
1248
1275
  }
1249
1276
  var HTMLVertexViewerButtonElement: {
@@ -1411,6 +1438,7 @@ declare global {
1411
1438
  "vertex-scene-tree-toolbar": HTMLVertexSceneTreeToolbarElement;
1412
1439
  "vertex-scene-tree-toolbar-group": HTMLVertexSceneTreeToolbarGroupElement;
1413
1440
  "vertex-viewer": HTMLVertexViewerElement;
1441
+ "vertex-viewer-box-query-tool": HTMLVertexViewerBoxQueryToolElement;
1414
1442
  "vertex-viewer-button": HTMLVertexViewerButtonElement;
1415
1443
  "vertex-viewer-default-toolbar": HTMLVertexViewerDefaultToolbarElement;
1416
1444
  "vertex-viewer-dom-element": HTMLVertexViewerDomElementElement;
@@ -1724,6 +1752,24 @@ declare namespace LocalJSX {
1724
1752
  */
1725
1753
  "viewport"?: Viewport;
1726
1754
  }
1755
+ interface VertexViewerBoxQueryTool {
1756
+ /**
1757
+ * The controller that is responsible for performing operations using the volume intersection query defined by the drawn box and updating the model.
1758
+ */
1759
+ "controller"?: VolumeIntersectionQueryController;
1760
+ /**
1761
+ * The model that contains the points representing the corners of the box displayed on screen, the type of the query to be performed, and methods for setting these values.
1762
+ */
1763
+ "model"?: VolumeIntersectionQueryModel;
1764
+ /**
1765
+ * The default operation to perform when a drag has completed and the intersection query will be run. Defaults to `select`, and can be changed to `deselect`. The operation behavior for this intersection query tool can also be changed by providing a custom implementation of the `VolumeIntersectionQueryController`, or by using the `setOperationTransform` method of the default controller.
1766
+ */
1767
+ "operationType"?: VolumeIntersectionQueryType;
1768
+ /**
1769
+ * The viewer that this component is bound to. This is automatically assigned if added to the light-dom of a parent viewer element.
1770
+ */
1771
+ "viewer"?: HTMLVertexViewerElement;
1772
+ }
1727
1773
  interface VertexViewerButton {
1728
1774
  }
1729
1775
  interface VertexViewerDefaultToolbar {
@@ -2440,6 +2486,7 @@ declare namespace LocalJSX {
2440
2486
  "vertex-scene-tree-toolbar": VertexSceneTreeToolbar;
2441
2487
  "vertex-scene-tree-toolbar-group": VertexSceneTreeToolbarGroup;
2442
2488
  "vertex-viewer": VertexViewer;
2489
+ "vertex-viewer-box-query-tool": VertexViewerBoxQueryTool;
2443
2490
  "vertex-viewer-button": VertexViewerButton;
2444
2491
  "vertex-viewer-default-toolbar": VertexViewerDefaultToolbar;
2445
2492
  "vertex-viewer-dom-element": VertexViewerDomElement;
@@ -2482,6 +2529,7 @@ declare module "@stencil/core" {
2482
2529
  "vertex-scene-tree-toolbar": LocalJSX.VertexSceneTreeToolbar & JSXBase.HTMLAttributes<HTMLVertexSceneTreeToolbarElement>;
2483
2530
  "vertex-scene-tree-toolbar-group": LocalJSX.VertexSceneTreeToolbarGroup & JSXBase.HTMLAttributes<HTMLVertexSceneTreeToolbarGroupElement>;
2484
2531
  "vertex-viewer": LocalJSX.VertexViewer & JSXBase.HTMLAttributes<HTMLVertexViewerElement>;
2532
+ "vertex-viewer-box-query-tool": LocalJSX.VertexViewerBoxQueryTool & JSXBase.HTMLAttributes<HTMLVertexViewerBoxQueryToolElement>;
2485
2533
  "vertex-viewer-button": LocalJSX.VertexViewerButton & JSXBase.HTMLAttributes<HTMLVertexViewerButtonElement>;
2486
2534
  "vertex-viewer-default-toolbar": LocalJSX.VertexViewerDefaultToolbar & JSXBase.HTMLAttributes<HTMLVertexViewerDefaultToolbarElement>;
2487
2535
  "vertex-viewer-dom-element": LocalJSX.VertexViewerDomElement & JSXBase.HTMLAttributes<HTMLVertexViewerDomElementElement>;
@@ -1,4 +1,4 @@
1
- import { Point } from '@vertexvis/geometry';
1
+ import { Point, Rectangle } from '@vertexvis/geometry';
2
2
  import { ColorMaterial } from './colorMaterial';
3
3
  import { SceneItemOperationsBuilder } from './scene';
4
4
  interface AllQueryExpression {
@@ -37,10 +37,15 @@ interface PointQueryExpression {
37
37
  type: 'point';
38
38
  point: Point.Point;
39
39
  }
40
+ interface VolumeIntersectionQueryExpression {
41
+ type: 'volume-intersection';
42
+ rectangle: Rectangle.Rectangle;
43
+ exclusive: boolean;
44
+ }
40
45
  /**
41
46
  * Represents the sum of all possible types of expressions.
42
47
  */
43
- export declare type QueryExpression = AllQueryExpression | ItemQueryExpression | AndExpression | OrExpression | SceneTreeRangeQueryExpression | PointQueryExpression | MetadataQueryExpression | AllSelectedQueryExpression;
48
+ export declare type QueryExpression = AllQueryExpression | ItemQueryExpression | AndExpression | OrExpression | SceneTreeRangeQueryExpression | PointQueryExpression | VolumeIntersectionQueryExpression | MetadataQueryExpression | AllSelectedQueryExpression;
44
49
  /**
45
50
  * An interface that represents a query is "complete" and can be turned into an
46
51
  * expression.
@@ -66,6 +71,7 @@ export declare class RootQuery implements ItemQuery<SingleQuery> {
66
71
  withMetadata(filter: string, keys: string[], exactMatch: boolean): MetadataQuery;
67
72
  withSelected(): AllSelectedQuery;
68
73
  withPoint(point: Point.Point): PointQuery;
74
+ withVolumeIntersection(rectangle: Rectangle.Rectangle, exclusive?: boolean): VolumeIntersectionQuery;
69
75
  }
70
76
  export declare class AllQuery implements TerminalQuery {
71
77
  build(): QueryExpression;
@@ -90,6 +96,12 @@ export declare class PointQuery implements TerminalQuery {
90
96
  constructor(point: Point.Point);
91
97
  build(): PointQueryExpression;
92
98
  }
99
+ export declare class VolumeIntersectionQuery implements TerminalQuery {
100
+ private rectangle;
101
+ private exclusive?;
102
+ constructor(rectangle: Rectangle.Rectangle, exclusive?: boolean | undefined);
103
+ build(): VolumeIntersectionQueryExpression;
104
+ }
93
105
  export declare class BulkQuery implements TerminalQuery {
94
106
  private ids;
95
107
  private type;