@vertexvis/viewer 0.15.2-testing.2 → 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
@@ -23111,6 +23111,458 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
23111
23111
  return PointQuery;
23112
23112
  })();
23113
23113
 
23114
+ stream.FrustumByRectangle = (function() {
23115
+
23116
+ /**
23117
+ * Properties of a FrustumByRectangle.
23118
+ * @memberof vertexvis.protobuf.stream
23119
+ * @interface IFrustumByRectangle
23120
+ * @property {vertexvis.protobuf.stream.IRectangle|null} [rectangle] FrustumByRectangle rectangle
23121
+ */
23122
+
23123
+ /**
23124
+ * Constructs a new FrustumByRectangle.
23125
+ * @memberof vertexvis.protobuf.stream
23126
+ * @classdesc Represents a FrustumByRectangle.
23127
+ * @implements IFrustumByRectangle
23128
+ * @constructor
23129
+ * @param {vertexvis.protobuf.stream.IFrustumByRectangle=} [properties] Properties to set
23130
+ */
23131
+ function FrustumByRectangle(properties) {
23132
+ if (properties)
23133
+ for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
23134
+ if (properties[keys[i]] != null)
23135
+ this[keys[i]] = properties[keys[i]];
23136
+ }
23137
+
23138
+ /**
23139
+ * FrustumByRectangle rectangle.
23140
+ * @member {vertexvis.protobuf.stream.IRectangle|null|undefined} rectangle
23141
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23142
+ * @instance
23143
+ */
23144
+ FrustumByRectangle.prototype.rectangle = null;
23145
+
23146
+ /**
23147
+ * Creates a new FrustumByRectangle instance using the specified properties.
23148
+ * @function create
23149
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23150
+ * @static
23151
+ * @param {vertexvis.protobuf.stream.IFrustumByRectangle=} [properties] Properties to set
23152
+ * @returns {vertexvis.protobuf.stream.FrustumByRectangle} FrustumByRectangle instance
23153
+ */
23154
+ FrustumByRectangle.create = function create(properties) {
23155
+ return new FrustumByRectangle(properties);
23156
+ };
23157
+
23158
+ /**
23159
+ * Encodes the specified FrustumByRectangle message. Does not implicitly {@link vertexvis.protobuf.stream.FrustumByRectangle.verify|verify} messages.
23160
+ * @function encode
23161
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23162
+ * @static
23163
+ * @param {vertexvis.protobuf.stream.IFrustumByRectangle} message FrustumByRectangle message or plain object to encode
23164
+ * @param {$protobuf.Writer} [writer] Writer to encode to
23165
+ * @returns {$protobuf.Writer} Writer
23166
+ */
23167
+ FrustumByRectangle.encode = function encode(message, writer) {
23168
+ if (!writer)
23169
+ writer = $Writer$1.create();
23170
+ if (message.rectangle != null && Object.hasOwnProperty.call(message, "rectangle"))
23171
+ $root$1.vertexvis.protobuf.stream.Rectangle.encode(message.rectangle, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
23172
+ return writer;
23173
+ };
23174
+
23175
+ /**
23176
+ * Encodes the specified FrustumByRectangle message, length delimited. Does not implicitly {@link vertexvis.protobuf.stream.FrustumByRectangle.verify|verify} messages.
23177
+ * @function encodeDelimited
23178
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23179
+ * @static
23180
+ * @param {vertexvis.protobuf.stream.IFrustumByRectangle} message FrustumByRectangle message or plain object to encode
23181
+ * @param {$protobuf.Writer} [writer] Writer to encode to
23182
+ * @returns {$protobuf.Writer} Writer
23183
+ */
23184
+ FrustumByRectangle.encodeDelimited = function encodeDelimited(message, writer) {
23185
+ return this.encode(message, writer).ldelim();
23186
+ };
23187
+
23188
+ /**
23189
+ * Decodes a FrustumByRectangle message from the specified reader or buffer.
23190
+ * @function decode
23191
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23192
+ * @static
23193
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
23194
+ * @param {number} [length] Message length if known beforehand
23195
+ * @returns {vertexvis.protobuf.stream.FrustumByRectangle} FrustumByRectangle
23196
+ * @throws {Error} If the payload is not a reader or valid buffer
23197
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
23198
+ */
23199
+ FrustumByRectangle.decode = function decode(reader, length) {
23200
+ if (!(reader instanceof $Reader$1))
23201
+ reader = $Reader$1.create(reader);
23202
+ let end = length === undefined ? reader.len : reader.pos + length, message = new $root$1.vertexvis.protobuf.stream.FrustumByRectangle();
23203
+ while (reader.pos < end) {
23204
+ let tag = reader.uint32();
23205
+ switch (tag >>> 3) {
23206
+ case 1:
23207
+ message.rectangle = $root$1.vertexvis.protobuf.stream.Rectangle.decode(reader, reader.uint32());
23208
+ break;
23209
+ default:
23210
+ reader.skipType(tag & 7);
23211
+ break;
23212
+ }
23213
+ }
23214
+ return message;
23215
+ };
23216
+
23217
+ /**
23218
+ * Decodes a FrustumByRectangle message from the specified reader or buffer, length delimited.
23219
+ * @function decodeDelimited
23220
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23221
+ * @static
23222
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
23223
+ * @returns {vertexvis.protobuf.stream.FrustumByRectangle} FrustumByRectangle
23224
+ * @throws {Error} If the payload is not a reader or valid buffer
23225
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
23226
+ */
23227
+ FrustumByRectangle.decodeDelimited = function decodeDelimited(reader) {
23228
+ if (!(reader instanceof $Reader$1))
23229
+ reader = new $Reader$1(reader);
23230
+ return this.decode(reader, reader.uint32());
23231
+ };
23232
+
23233
+ /**
23234
+ * Verifies a FrustumByRectangle message.
23235
+ * @function verify
23236
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23237
+ * @static
23238
+ * @param {Object.<string,*>} message Plain object to verify
23239
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
23240
+ */
23241
+ FrustumByRectangle.verify = function verify(message) {
23242
+ if (typeof message !== "object" || message === null)
23243
+ return "object expected";
23244
+ if (message.rectangle != null && message.hasOwnProperty("rectangle")) {
23245
+ let error = $root$1.vertexvis.protobuf.stream.Rectangle.verify(message.rectangle);
23246
+ if (error)
23247
+ return "rectangle." + error;
23248
+ }
23249
+ return null;
23250
+ };
23251
+
23252
+ /**
23253
+ * Creates a FrustumByRectangle message from a plain object. Also converts values to their respective internal types.
23254
+ * @function fromObject
23255
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23256
+ * @static
23257
+ * @param {Object.<string,*>} object Plain object
23258
+ * @returns {vertexvis.protobuf.stream.FrustumByRectangle} FrustumByRectangle
23259
+ */
23260
+ FrustumByRectangle.fromObject = function fromObject(object) {
23261
+ if (object instanceof $root$1.vertexvis.protobuf.stream.FrustumByRectangle)
23262
+ return object;
23263
+ let message = new $root$1.vertexvis.protobuf.stream.FrustumByRectangle();
23264
+ if (object.rectangle != null) {
23265
+ if (typeof object.rectangle !== "object")
23266
+ throw TypeError(".vertexvis.protobuf.stream.FrustumByRectangle.rectangle: object expected");
23267
+ message.rectangle = $root$1.vertexvis.protobuf.stream.Rectangle.fromObject(object.rectangle);
23268
+ }
23269
+ return message;
23270
+ };
23271
+
23272
+ /**
23273
+ * Creates a plain object from a FrustumByRectangle message. Also converts values to other types if specified.
23274
+ * @function toObject
23275
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23276
+ * @static
23277
+ * @param {vertexvis.protobuf.stream.FrustumByRectangle} message FrustumByRectangle
23278
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
23279
+ * @returns {Object.<string,*>} Plain object
23280
+ */
23281
+ FrustumByRectangle.toObject = function toObject(message, options) {
23282
+ if (!options)
23283
+ options = {};
23284
+ let object = {};
23285
+ if (options.defaults)
23286
+ object.rectangle = null;
23287
+ if (message.rectangle != null && message.hasOwnProperty("rectangle"))
23288
+ object.rectangle = $root$1.vertexvis.protobuf.stream.Rectangle.toObject(message.rectangle, options);
23289
+ return object;
23290
+ };
23291
+
23292
+ /**
23293
+ * Converts this FrustumByRectangle to JSON.
23294
+ * @function toJSON
23295
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
23296
+ * @instance
23297
+ * @returns {Object.<string,*>} JSON object
23298
+ */
23299
+ FrustumByRectangle.prototype.toJSON = function toJSON() {
23300
+ return this.constructor.toObject(this, minimal$2.util.toJSONOptions);
23301
+ };
23302
+
23303
+ return FrustumByRectangle;
23304
+ })();
23305
+
23306
+ stream.VolumeIntersectionQuery = (function() {
23307
+
23308
+ /**
23309
+ * Properties of a VolumeIntersectionQuery.
23310
+ * @memberof vertexvis.protobuf.stream
23311
+ * @interface IVolumeIntersectionQuery
23312
+ * @property {vertexvis.protobuf.stream.IFrustumByRectangle|null} [frustumByRectangle] VolumeIntersectionQuery frustumByRectangle
23313
+ * @property {boolean|null} [exclusive] VolumeIntersectionQuery exclusive
23314
+ * @property {vertexvis.protobuf.stream.IDimensions|null} [viewport] VolumeIntersectionQuery viewport
23315
+ */
23316
+
23317
+ /**
23318
+ * Constructs a new VolumeIntersectionQuery.
23319
+ * @memberof vertexvis.protobuf.stream
23320
+ * @classdesc Represents a VolumeIntersectionQuery.
23321
+ * @implements IVolumeIntersectionQuery
23322
+ * @constructor
23323
+ * @param {vertexvis.protobuf.stream.IVolumeIntersectionQuery=} [properties] Properties to set
23324
+ */
23325
+ function VolumeIntersectionQuery(properties) {
23326
+ if (properties)
23327
+ for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
23328
+ if (properties[keys[i]] != null)
23329
+ this[keys[i]] = properties[keys[i]];
23330
+ }
23331
+
23332
+ /**
23333
+ * VolumeIntersectionQuery frustumByRectangle.
23334
+ * @member {vertexvis.protobuf.stream.IFrustumByRectangle|null|undefined} frustumByRectangle
23335
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23336
+ * @instance
23337
+ */
23338
+ VolumeIntersectionQuery.prototype.frustumByRectangle = null;
23339
+
23340
+ /**
23341
+ * VolumeIntersectionQuery exclusive.
23342
+ * @member {boolean} exclusive
23343
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23344
+ * @instance
23345
+ */
23346
+ VolumeIntersectionQuery.prototype.exclusive = false;
23347
+
23348
+ /**
23349
+ * VolumeIntersectionQuery viewport.
23350
+ * @member {vertexvis.protobuf.stream.IDimensions|null|undefined} viewport
23351
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23352
+ * @instance
23353
+ */
23354
+ VolumeIntersectionQuery.prototype.viewport = null;
23355
+
23356
+ // OneOf field names bound to virtual getters and setters
23357
+ let $oneOfFields;
23358
+
23359
+ /**
23360
+ * VolumeIntersectionQuery volume.
23361
+ * @member {"frustumByRectangle"|undefined} volume
23362
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23363
+ * @instance
23364
+ */
23365
+ Object.defineProperty(VolumeIntersectionQuery.prototype, "volume", {
23366
+ get: $util$1.oneOfGetter($oneOfFields = ["frustumByRectangle"]),
23367
+ set: $util$1.oneOfSetter($oneOfFields)
23368
+ });
23369
+
23370
+ /**
23371
+ * Creates a new VolumeIntersectionQuery instance using the specified properties.
23372
+ * @function create
23373
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23374
+ * @static
23375
+ * @param {vertexvis.protobuf.stream.IVolumeIntersectionQuery=} [properties] Properties to set
23376
+ * @returns {vertexvis.protobuf.stream.VolumeIntersectionQuery} VolumeIntersectionQuery instance
23377
+ */
23378
+ VolumeIntersectionQuery.create = function create(properties) {
23379
+ return new VolumeIntersectionQuery(properties);
23380
+ };
23381
+
23382
+ /**
23383
+ * Encodes the specified VolumeIntersectionQuery message. Does not implicitly {@link vertexvis.protobuf.stream.VolumeIntersectionQuery.verify|verify} messages.
23384
+ * @function encode
23385
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23386
+ * @static
23387
+ * @param {vertexvis.protobuf.stream.IVolumeIntersectionQuery} message VolumeIntersectionQuery message or plain object to encode
23388
+ * @param {$protobuf.Writer} [writer] Writer to encode to
23389
+ * @returns {$protobuf.Writer} Writer
23390
+ */
23391
+ VolumeIntersectionQuery.encode = function encode(message, writer) {
23392
+ if (!writer)
23393
+ writer = $Writer$1.create();
23394
+ if (message.frustumByRectangle != null && Object.hasOwnProperty.call(message, "frustumByRectangle"))
23395
+ $root$1.vertexvis.protobuf.stream.FrustumByRectangle.encode(message.frustumByRectangle, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
23396
+ if (message.exclusive != null && Object.hasOwnProperty.call(message, "exclusive"))
23397
+ writer.uint32(/* id 2, wireType 0 =*/16).bool(message.exclusive);
23398
+ if (message.viewport != null && Object.hasOwnProperty.call(message, "viewport"))
23399
+ $root$1.vertexvis.protobuf.stream.Dimensions.encode(message.viewport, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
23400
+ return writer;
23401
+ };
23402
+
23403
+ /**
23404
+ * Encodes the specified VolumeIntersectionQuery message, length delimited. Does not implicitly {@link vertexvis.protobuf.stream.VolumeIntersectionQuery.verify|verify} messages.
23405
+ * @function encodeDelimited
23406
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23407
+ * @static
23408
+ * @param {vertexvis.protobuf.stream.IVolumeIntersectionQuery} message VolumeIntersectionQuery message or plain object to encode
23409
+ * @param {$protobuf.Writer} [writer] Writer to encode to
23410
+ * @returns {$protobuf.Writer} Writer
23411
+ */
23412
+ VolumeIntersectionQuery.encodeDelimited = function encodeDelimited(message, writer) {
23413
+ return this.encode(message, writer).ldelim();
23414
+ };
23415
+
23416
+ /**
23417
+ * Decodes a VolumeIntersectionQuery message from the specified reader or buffer.
23418
+ * @function decode
23419
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23420
+ * @static
23421
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
23422
+ * @param {number} [length] Message length if known beforehand
23423
+ * @returns {vertexvis.protobuf.stream.VolumeIntersectionQuery} VolumeIntersectionQuery
23424
+ * @throws {Error} If the payload is not a reader or valid buffer
23425
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
23426
+ */
23427
+ VolumeIntersectionQuery.decode = function decode(reader, length) {
23428
+ if (!(reader instanceof $Reader$1))
23429
+ reader = $Reader$1.create(reader);
23430
+ let end = length === undefined ? reader.len : reader.pos + length, message = new $root$1.vertexvis.protobuf.stream.VolumeIntersectionQuery();
23431
+ while (reader.pos < end) {
23432
+ let tag = reader.uint32();
23433
+ switch (tag >>> 3) {
23434
+ case 1:
23435
+ message.frustumByRectangle = $root$1.vertexvis.protobuf.stream.FrustumByRectangle.decode(reader, reader.uint32());
23436
+ break;
23437
+ case 2:
23438
+ message.exclusive = reader.bool();
23439
+ break;
23440
+ case 3:
23441
+ message.viewport = $root$1.vertexvis.protobuf.stream.Dimensions.decode(reader, reader.uint32());
23442
+ break;
23443
+ default:
23444
+ reader.skipType(tag & 7);
23445
+ break;
23446
+ }
23447
+ }
23448
+ return message;
23449
+ };
23450
+
23451
+ /**
23452
+ * Decodes a VolumeIntersectionQuery message from the specified reader or buffer, length delimited.
23453
+ * @function decodeDelimited
23454
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23455
+ * @static
23456
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
23457
+ * @returns {vertexvis.protobuf.stream.VolumeIntersectionQuery} VolumeIntersectionQuery
23458
+ * @throws {Error} If the payload is not a reader or valid buffer
23459
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
23460
+ */
23461
+ VolumeIntersectionQuery.decodeDelimited = function decodeDelimited(reader) {
23462
+ if (!(reader instanceof $Reader$1))
23463
+ reader = new $Reader$1(reader);
23464
+ return this.decode(reader, reader.uint32());
23465
+ };
23466
+
23467
+ /**
23468
+ * Verifies a VolumeIntersectionQuery message.
23469
+ * @function verify
23470
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23471
+ * @static
23472
+ * @param {Object.<string,*>} message Plain object to verify
23473
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
23474
+ */
23475
+ VolumeIntersectionQuery.verify = function verify(message) {
23476
+ if (typeof message !== "object" || message === null)
23477
+ return "object expected";
23478
+ if (message.frustumByRectangle != null && message.hasOwnProperty("frustumByRectangle")) {
23479
+ {
23480
+ let error = $root$1.vertexvis.protobuf.stream.FrustumByRectangle.verify(message.frustumByRectangle);
23481
+ if (error)
23482
+ return "frustumByRectangle." + error;
23483
+ }
23484
+ }
23485
+ if (message.exclusive != null && message.hasOwnProperty("exclusive"))
23486
+ if (typeof message.exclusive !== "boolean")
23487
+ return "exclusive: boolean expected";
23488
+ if (message.viewport != null && message.hasOwnProperty("viewport")) {
23489
+ let error = $root$1.vertexvis.protobuf.stream.Dimensions.verify(message.viewport);
23490
+ if (error)
23491
+ return "viewport." + error;
23492
+ }
23493
+ return null;
23494
+ };
23495
+
23496
+ /**
23497
+ * Creates a VolumeIntersectionQuery message from a plain object. Also converts values to their respective internal types.
23498
+ * @function fromObject
23499
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23500
+ * @static
23501
+ * @param {Object.<string,*>} object Plain object
23502
+ * @returns {vertexvis.protobuf.stream.VolumeIntersectionQuery} VolumeIntersectionQuery
23503
+ */
23504
+ VolumeIntersectionQuery.fromObject = function fromObject(object) {
23505
+ if (object instanceof $root$1.vertexvis.protobuf.stream.VolumeIntersectionQuery)
23506
+ return object;
23507
+ let message = new $root$1.vertexvis.protobuf.stream.VolumeIntersectionQuery();
23508
+ if (object.frustumByRectangle != null) {
23509
+ if (typeof object.frustumByRectangle !== "object")
23510
+ throw TypeError(".vertexvis.protobuf.stream.VolumeIntersectionQuery.frustumByRectangle: object expected");
23511
+ message.frustumByRectangle = $root$1.vertexvis.protobuf.stream.FrustumByRectangle.fromObject(object.frustumByRectangle);
23512
+ }
23513
+ if (object.exclusive != null)
23514
+ message.exclusive = Boolean(object.exclusive);
23515
+ if (object.viewport != null) {
23516
+ if (typeof object.viewport !== "object")
23517
+ throw TypeError(".vertexvis.protobuf.stream.VolumeIntersectionQuery.viewport: object expected");
23518
+ message.viewport = $root$1.vertexvis.protobuf.stream.Dimensions.fromObject(object.viewport);
23519
+ }
23520
+ return message;
23521
+ };
23522
+
23523
+ /**
23524
+ * Creates a plain object from a VolumeIntersectionQuery message. Also converts values to other types if specified.
23525
+ * @function toObject
23526
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23527
+ * @static
23528
+ * @param {vertexvis.protobuf.stream.VolumeIntersectionQuery} message VolumeIntersectionQuery
23529
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
23530
+ * @returns {Object.<string,*>} Plain object
23531
+ */
23532
+ VolumeIntersectionQuery.toObject = function toObject(message, options) {
23533
+ if (!options)
23534
+ options = {};
23535
+ let object = {};
23536
+ if (options.defaults) {
23537
+ object.exclusive = false;
23538
+ object.viewport = null;
23539
+ }
23540
+ if (message.frustumByRectangle != null && message.hasOwnProperty("frustumByRectangle")) {
23541
+ object.frustumByRectangle = $root$1.vertexvis.protobuf.stream.FrustumByRectangle.toObject(message.frustumByRectangle, options);
23542
+ if (options.oneofs)
23543
+ object.volume = "frustumByRectangle";
23544
+ }
23545
+ if (message.exclusive != null && message.hasOwnProperty("exclusive"))
23546
+ object.exclusive = message.exclusive;
23547
+ if (message.viewport != null && message.hasOwnProperty("viewport"))
23548
+ object.viewport = $root$1.vertexvis.protobuf.stream.Dimensions.toObject(message.viewport, options);
23549
+ return object;
23550
+ };
23551
+
23552
+ /**
23553
+ * Converts this VolumeIntersectionQuery to JSON.
23554
+ * @function toJSON
23555
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
23556
+ * @instance
23557
+ * @returns {Object.<string,*>} JSON object
23558
+ */
23559
+ VolumeIntersectionQuery.prototype.toJSON = function toJSON() {
23560
+ return this.constructor.toObject(this, minimal$2.util.toJSONOptions);
23561
+ };
23562
+
23563
+ return VolumeIntersectionQuery;
23564
+ })();
23565
+
23114
23566
  stream.SceneTreeRangeQuery = (function() {
23115
23567
 
23116
23568
  /**
@@ -25699,6 +26151,7 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
25699
26151
  * @property {vertexvis.protobuf.stream.ISceneTreeRangeQuery|null} [sceneTreeRange] SceneOperation sceneTreeRange
25700
26152
  * @property {vertexvis.protobuf.stream.IMetadataFilterQuery|null} [metadata] SceneOperation metadata
25701
26153
  * @property {vertexvis.protobuf.stream.IOverrideQuery|null} [override] SceneOperation override
26154
+ * @property {vertexvis.protobuf.stream.IVolumeIntersectionQuery|null} [volume] SceneOperation volume
25702
26155
  * @property {Array.<vertexvis.protobuf.stream.IOperationType>|null} [operationTypes] SceneOperation operationTypes
25703
26156
  */
25704
26157
 
@@ -25782,6 +26235,14 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
25782
26235
  */
25783
26236
  SceneOperation.prototype.override = null;
25784
26237
 
26238
+ /**
26239
+ * SceneOperation volume.
26240
+ * @member {vertexvis.protobuf.stream.IVolumeIntersectionQuery|null|undefined} volume
26241
+ * @memberof vertexvis.protobuf.stream.SceneOperation
26242
+ * @instance
26243
+ */
26244
+ SceneOperation.prototype.volume = null;
26245
+
25785
26246
  /**
25786
26247
  * SceneOperation operationTypes.
25787
26248
  * @member {Array.<vertexvis.protobuf.stream.IOperationType>} operationTypes
@@ -25795,12 +26256,12 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
25795
26256
 
25796
26257
  /**
25797
26258
  * SceneOperation query.
25798
- * @member {"item"|"or"|"and"|"all"|"point"|"sceneTreeRange"|"metadata"|"override"|undefined} query
26259
+ * @member {"item"|"or"|"and"|"all"|"point"|"sceneTreeRange"|"metadata"|"override"|"volume"|undefined} query
25799
26260
  * @memberof vertexvis.protobuf.stream.SceneOperation
25800
26261
  * @instance
25801
26262
  */
25802
26263
  Object.defineProperty(SceneOperation.prototype, "query", {
25803
- get: $util$1.oneOfGetter($oneOfFields = ["item", "or", "and", "all", "point", "sceneTreeRange", "metadata", "override"]),
26264
+ get: $util$1.oneOfGetter($oneOfFields = ["item", "or", "and", "all", "point", "sceneTreeRange", "metadata", "override", "volume"]),
25804
26265
  set: $util$1.oneOfSetter($oneOfFields)
25805
26266
  });
25806
26267
 
@@ -25847,6 +26308,8 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
25847
26308
  $root$1.vertexvis.protobuf.stream.MetadataFilterQuery.encode(message.metadata, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
25848
26309
  if (message.override != null && Object.hasOwnProperty.call(message, "override"))
25849
26310
  $root$1.vertexvis.protobuf.stream.OverrideQuery.encode(message.override, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();
26311
+ if (message.volume != null && Object.hasOwnProperty.call(message, "volume"))
26312
+ $root$1.vertexvis.protobuf.stream.VolumeIntersectionQuery.encode(message.volume, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();
25850
26313
  return writer;
25851
26314
  };
25852
26315
 
@@ -25905,6 +26368,9 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
25905
26368
  case 9:
25906
26369
  message.override = $root$1.vertexvis.protobuf.stream.OverrideQuery.decode(reader, reader.uint32());
25907
26370
  break;
26371
+ case 10:
26372
+ message.volume = $root$1.vertexvis.protobuf.stream.VolumeIntersectionQuery.decode(reader, reader.uint32());
26373
+ break;
25908
26374
  case 4:
25909
26375
  if (!(message.operationTypes && message.operationTypes.length))
25910
26376
  message.operationTypes = [];
@@ -26024,6 +26490,16 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
26024
26490
  return "override." + error;
26025
26491
  }
26026
26492
  }
26493
+ if (message.volume != null && message.hasOwnProperty("volume")) {
26494
+ if (properties.query === 1)
26495
+ return "query: multiple values";
26496
+ properties.query = 1;
26497
+ {
26498
+ let error = $root$1.vertexvis.protobuf.stream.VolumeIntersectionQuery.verify(message.volume);
26499
+ if (error)
26500
+ return "volume." + error;
26501
+ }
26502
+ }
26027
26503
  if (message.operationTypes != null && message.hasOwnProperty("operationTypes")) {
26028
26504
  if (!Array.isArray(message.operationTypes))
26029
26505
  return "operationTypes: array expected";
@@ -26088,6 +26564,11 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
26088
26564
  throw TypeError(".vertexvis.protobuf.stream.SceneOperation.override: object expected");
26089
26565
  message.override = $root$1.vertexvis.protobuf.stream.OverrideQuery.fromObject(object.override);
26090
26566
  }
26567
+ if (object.volume != null) {
26568
+ if (typeof object.volume !== "object")
26569
+ throw TypeError(".vertexvis.protobuf.stream.SceneOperation.volume: object expected");
26570
+ message.volume = $root$1.vertexvis.protobuf.stream.VolumeIntersectionQuery.fromObject(object.volume);
26571
+ }
26091
26572
  if (object.operationTypes) {
26092
26573
  if (!Array.isArray(object.operationTypes))
26093
26574
  throw TypeError(".vertexvis.protobuf.stream.SceneOperation.operationTypes: array expected");
@@ -26161,6 +26642,11 @@ const vertexvis$1 = $root$1.vertexvis = (() => {
26161
26642
  if (options.oneofs)
26162
26643
  object.query = "override";
26163
26644
  }
26645
+ if (message.volume != null && message.hasOwnProperty("volume")) {
26646
+ object.volume = $root$1.vertexvis.protobuf.stream.VolumeIntersectionQuery.toObject(message.volume, options);
26647
+ if (options.oneofs)
26648
+ object.query = "volume";
26649
+ }
26164
26650
  return object;
26165
26651
  };
26166
26652
 
@@ -61359,6 +61845,458 @@ const vertexvis = $root.vertexvis = (() => {
61359
61845
  return PointQuery;
61360
61846
  })();
61361
61847
 
61848
+ stream.FrustumByRectangle = (function() {
61849
+
61850
+ /**
61851
+ * Properties of a FrustumByRectangle.
61852
+ * @memberof vertexvis.protobuf.stream
61853
+ * @interface IFrustumByRectangle
61854
+ * @property {vertexvis.protobuf.stream.IRectangle|null} [rectangle] FrustumByRectangle rectangle
61855
+ */
61856
+
61857
+ /**
61858
+ * Constructs a new FrustumByRectangle.
61859
+ * @memberof vertexvis.protobuf.stream
61860
+ * @classdesc Represents a FrustumByRectangle.
61861
+ * @implements IFrustumByRectangle
61862
+ * @constructor
61863
+ * @param {vertexvis.protobuf.stream.IFrustumByRectangle=} [properties] Properties to set
61864
+ */
61865
+ function FrustumByRectangle(properties) {
61866
+ if (properties)
61867
+ for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
61868
+ if (properties[keys[i]] != null)
61869
+ this[keys[i]] = properties[keys[i]];
61870
+ }
61871
+
61872
+ /**
61873
+ * FrustumByRectangle rectangle.
61874
+ * @member {vertexvis.protobuf.stream.IRectangle|null|undefined} rectangle
61875
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
61876
+ * @instance
61877
+ */
61878
+ FrustumByRectangle.prototype.rectangle = null;
61879
+
61880
+ /**
61881
+ * Creates a new FrustumByRectangle instance using the specified properties.
61882
+ * @function create
61883
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
61884
+ * @static
61885
+ * @param {vertexvis.protobuf.stream.IFrustumByRectangle=} [properties] Properties to set
61886
+ * @returns {vertexvis.protobuf.stream.FrustumByRectangle} FrustumByRectangle instance
61887
+ */
61888
+ FrustumByRectangle.create = function create(properties) {
61889
+ return new FrustumByRectangle(properties);
61890
+ };
61891
+
61892
+ /**
61893
+ * Encodes the specified FrustumByRectangle message. Does not implicitly {@link vertexvis.protobuf.stream.FrustumByRectangle.verify|verify} messages.
61894
+ * @function encode
61895
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
61896
+ * @static
61897
+ * @param {vertexvis.protobuf.stream.IFrustumByRectangle} message FrustumByRectangle message or plain object to encode
61898
+ * @param {$protobuf.Writer} [writer] Writer to encode to
61899
+ * @returns {$protobuf.Writer} Writer
61900
+ */
61901
+ FrustumByRectangle.encode = function encode(message, writer) {
61902
+ if (!writer)
61903
+ writer = $Writer.create();
61904
+ if (message.rectangle != null && Object.hasOwnProperty.call(message, "rectangle"))
61905
+ $root.vertexvis.protobuf.stream.Rectangle.encode(message.rectangle, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
61906
+ return writer;
61907
+ };
61908
+
61909
+ /**
61910
+ * Encodes the specified FrustumByRectangle message, length delimited. Does not implicitly {@link vertexvis.protobuf.stream.FrustumByRectangle.verify|verify} messages.
61911
+ * @function encodeDelimited
61912
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
61913
+ * @static
61914
+ * @param {vertexvis.protobuf.stream.IFrustumByRectangle} message FrustumByRectangle message or plain object to encode
61915
+ * @param {$protobuf.Writer} [writer] Writer to encode to
61916
+ * @returns {$protobuf.Writer} Writer
61917
+ */
61918
+ FrustumByRectangle.encodeDelimited = function encodeDelimited(message, writer) {
61919
+ return this.encode(message, writer).ldelim();
61920
+ };
61921
+
61922
+ /**
61923
+ * Decodes a FrustumByRectangle message from the specified reader or buffer.
61924
+ * @function decode
61925
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
61926
+ * @static
61927
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
61928
+ * @param {number} [length] Message length if known beforehand
61929
+ * @returns {vertexvis.protobuf.stream.FrustumByRectangle} FrustumByRectangle
61930
+ * @throws {Error} If the payload is not a reader or valid buffer
61931
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
61932
+ */
61933
+ FrustumByRectangle.decode = function decode(reader, length) {
61934
+ if (!(reader instanceof $Reader))
61935
+ reader = $Reader.create(reader);
61936
+ let end = length === undefined ? reader.len : reader.pos + length, message = new $root.vertexvis.protobuf.stream.FrustumByRectangle();
61937
+ while (reader.pos < end) {
61938
+ let tag = reader.uint32();
61939
+ switch (tag >>> 3) {
61940
+ case 1:
61941
+ message.rectangle = $root.vertexvis.protobuf.stream.Rectangle.decode(reader, reader.uint32());
61942
+ break;
61943
+ default:
61944
+ reader.skipType(tag & 7);
61945
+ break;
61946
+ }
61947
+ }
61948
+ return message;
61949
+ };
61950
+
61951
+ /**
61952
+ * Decodes a FrustumByRectangle message from the specified reader or buffer, length delimited.
61953
+ * @function decodeDelimited
61954
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
61955
+ * @static
61956
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
61957
+ * @returns {vertexvis.protobuf.stream.FrustumByRectangle} FrustumByRectangle
61958
+ * @throws {Error} If the payload is not a reader or valid buffer
61959
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
61960
+ */
61961
+ FrustumByRectangle.decodeDelimited = function decodeDelimited(reader) {
61962
+ if (!(reader instanceof $Reader))
61963
+ reader = new $Reader(reader);
61964
+ return this.decode(reader, reader.uint32());
61965
+ };
61966
+
61967
+ /**
61968
+ * Verifies a FrustumByRectangle message.
61969
+ * @function verify
61970
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
61971
+ * @static
61972
+ * @param {Object.<string,*>} message Plain object to verify
61973
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
61974
+ */
61975
+ FrustumByRectangle.verify = function verify(message) {
61976
+ if (typeof message !== "object" || message === null)
61977
+ return "object expected";
61978
+ if (message.rectangle != null && message.hasOwnProperty("rectangle")) {
61979
+ let error = $root.vertexvis.protobuf.stream.Rectangle.verify(message.rectangle);
61980
+ if (error)
61981
+ return "rectangle." + error;
61982
+ }
61983
+ return null;
61984
+ };
61985
+
61986
+ /**
61987
+ * Creates a FrustumByRectangle message from a plain object. Also converts values to their respective internal types.
61988
+ * @function fromObject
61989
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
61990
+ * @static
61991
+ * @param {Object.<string,*>} object Plain object
61992
+ * @returns {vertexvis.protobuf.stream.FrustumByRectangle} FrustumByRectangle
61993
+ */
61994
+ FrustumByRectangle.fromObject = function fromObject(object) {
61995
+ if (object instanceof $root.vertexvis.protobuf.stream.FrustumByRectangle)
61996
+ return object;
61997
+ let message = new $root.vertexvis.protobuf.stream.FrustumByRectangle();
61998
+ if (object.rectangle != null) {
61999
+ if (typeof object.rectangle !== "object")
62000
+ throw TypeError(".vertexvis.protobuf.stream.FrustumByRectangle.rectangle: object expected");
62001
+ message.rectangle = $root.vertexvis.protobuf.stream.Rectangle.fromObject(object.rectangle);
62002
+ }
62003
+ return message;
62004
+ };
62005
+
62006
+ /**
62007
+ * Creates a plain object from a FrustumByRectangle message. Also converts values to other types if specified.
62008
+ * @function toObject
62009
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
62010
+ * @static
62011
+ * @param {vertexvis.protobuf.stream.FrustumByRectangle} message FrustumByRectangle
62012
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
62013
+ * @returns {Object.<string,*>} Plain object
62014
+ */
62015
+ FrustumByRectangle.toObject = function toObject(message, options) {
62016
+ if (!options)
62017
+ options = {};
62018
+ let object = {};
62019
+ if (options.defaults)
62020
+ object.rectangle = null;
62021
+ if (message.rectangle != null && message.hasOwnProperty("rectangle"))
62022
+ object.rectangle = $root.vertexvis.protobuf.stream.Rectangle.toObject(message.rectangle, options);
62023
+ return object;
62024
+ };
62025
+
62026
+ /**
62027
+ * Converts this FrustumByRectangle to JSON.
62028
+ * @function toJSON
62029
+ * @memberof vertexvis.protobuf.stream.FrustumByRectangle
62030
+ * @instance
62031
+ * @returns {Object.<string,*>} JSON object
62032
+ */
62033
+ FrustumByRectangle.prototype.toJSON = function toJSON() {
62034
+ return this.constructor.toObject(this, minimal.util.toJSONOptions);
62035
+ };
62036
+
62037
+ return FrustumByRectangle;
62038
+ })();
62039
+
62040
+ stream.VolumeIntersectionQuery = (function() {
62041
+
62042
+ /**
62043
+ * Properties of a VolumeIntersectionQuery.
62044
+ * @memberof vertexvis.protobuf.stream
62045
+ * @interface IVolumeIntersectionQuery
62046
+ * @property {vertexvis.protobuf.stream.IFrustumByRectangle|null} [frustumByRectangle] VolumeIntersectionQuery frustumByRectangle
62047
+ * @property {boolean|null} [exclusive] VolumeIntersectionQuery exclusive
62048
+ * @property {vertexvis.protobuf.stream.IDimensions|null} [viewport] VolumeIntersectionQuery viewport
62049
+ */
62050
+
62051
+ /**
62052
+ * Constructs a new VolumeIntersectionQuery.
62053
+ * @memberof vertexvis.protobuf.stream
62054
+ * @classdesc Represents a VolumeIntersectionQuery.
62055
+ * @implements IVolumeIntersectionQuery
62056
+ * @constructor
62057
+ * @param {vertexvis.protobuf.stream.IVolumeIntersectionQuery=} [properties] Properties to set
62058
+ */
62059
+ function VolumeIntersectionQuery(properties) {
62060
+ if (properties)
62061
+ for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)
62062
+ if (properties[keys[i]] != null)
62063
+ this[keys[i]] = properties[keys[i]];
62064
+ }
62065
+
62066
+ /**
62067
+ * VolumeIntersectionQuery frustumByRectangle.
62068
+ * @member {vertexvis.protobuf.stream.IFrustumByRectangle|null|undefined} frustumByRectangle
62069
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62070
+ * @instance
62071
+ */
62072
+ VolumeIntersectionQuery.prototype.frustumByRectangle = null;
62073
+
62074
+ /**
62075
+ * VolumeIntersectionQuery exclusive.
62076
+ * @member {boolean} exclusive
62077
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62078
+ * @instance
62079
+ */
62080
+ VolumeIntersectionQuery.prototype.exclusive = false;
62081
+
62082
+ /**
62083
+ * VolumeIntersectionQuery viewport.
62084
+ * @member {vertexvis.protobuf.stream.IDimensions|null|undefined} viewport
62085
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62086
+ * @instance
62087
+ */
62088
+ VolumeIntersectionQuery.prototype.viewport = null;
62089
+
62090
+ // OneOf field names bound to virtual getters and setters
62091
+ let $oneOfFields;
62092
+
62093
+ /**
62094
+ * VolumeIntersectionQuery volume.
62095
+ * @member {"frustumByRectangle"|undefined} volume
62096
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62097
+ * @instance
62098
+ */
62099
+ Object.defineProperty(VolumeIntersectionQuery.prototype, "volume", {
62100
+ get: $util.oneOfGetter($oneOfFields = ["frustumByRectangle"]),
62101
+ set: $util.oneOfSetter($oneOfFields)
62102
+ });
62103
+
62104
+ /**
62105
+ * Creates a new VolumeIntersectionQuery instance using the specified properties.
62106
+ * @function create
62107
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62108
+ * @static
62109
+ * @param {vertexvis.protobuf.stream.IVolumeIntersectionQuery=} [properties] Properties to set
62110
+ * @returns {vertexvis.protobuf.stream.VolumeIntersectionQuery} VolumeIntersectionQuery instance
62111
+ */
62112
+ VolumeIntersectionQuery.create = function create(properties) {
62113
+ return new VolumeIntersectionQuery(properties);
62114
+ };
62115
+
62116
+ /**
62117
+ * Encodes the specified VolumeIntersectionQuery message. Does not implicitly {@link vertexvis.protobuf.stream.VolumeIntersectionQuery.verify|verify} messages.
62118
+ * @function encode
62119
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62120
+ * @static
62121
+ * @param {vertexvis.protobuf.stream.IVolumeIntersectionQuery} message VolumeIntersectionQuery message or plain object to encode
62122
+ * @param {$protobuf.Writer} [writer] Writer to encode to
62123
+ * @returns {$protobuf.Writer} Writer
62124
+ */
62125
+ VolumeIntersectionQuery.encode = function encode(message, writer) {
62126
+ if (!writer)
62127
+ writer = $Writer.create();
62128
+ if (message.frustumByRectangle != null && Object.hasOwnProperty.call(message, "frustumByRectangle"))
62129
+ $root.vertexvis.protobuf.stream.FrustumByRectangle.encode(message.frustumByRectangle, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
62130
+ if (message.exclusive != null && Object.hasOwnProperty.call(message, "exclusive"))
62131
+ writer.uint32(/* id 2, wireType 0 =*/16).bool(message.exclusive);
62132
+ if (message.viewport != null && Object.hasOwnProperty.call(message, "viewport"))
62133
+ $root.vertexvis.protobuf.stream.Dimensions.encode(message.viewport, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
62134
+ return writer;
62135
+ };
62136
+
62137
+ /**
62138
+ * Encodes the specified VolumeIntersectionQuery message, length delimited. Does not implicitly {@link vertexvis.protobuf.stream.VolumeIntersectionQuery.verify|verify} messages.
62139
+ * @function encodeDelimited
62140
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62141
+ * @static
62142
+ * @param {vertexvis.protobuf.stream.IVolumeIntersectionQuery} message VolumeIntersectionQuery message or plain object to encode
62143
+ * @param {$protobuf.Writer} [writer] Writer to encode to
62144
+ * @returns {$protobuf.Writer} Writer
62145
+ */
62146
+ VolumeIntersectionQuery.encodeDelimited = function encodeDelimited(message, writer) {
62147
+ return this.encode(message, writer).ldelim();
62148
+ };
62149
+
62150
+ /**
62151
+ * Decodes a VolumeIntersectionQuery message from the specified reader or buffer.
62152
+ * @function decode
62153
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62154
+ * @static
62155
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
62156
+ * @param {number} [length] Message length if known beforehand
62157
+ * @returns {vertexvis.protobuf.stream.VolumeIntersectionQuery} VolumeIntersectionQuery
62158
+ * @throws {Error} If the payload is not a reader or valid buffer
62159
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
62160
+ */
62161
+ VolumeIntersectionQuery.decode = function decode(reader, length) {
62162
+ if (!(reader instanceof $Reader))
62163
+ reader = $Reader.create(reader);
62164
+ let end = length === undefined ? reader.len : reader.pos + length, message = new $root.vertexvis.protobuf.stream.VolumeIntersectionQuery();
62165
+ while (reader.pos < end) {
62166
+ let tag = reader.uint32();
62167
+ switch (tag >>> 3) {
62168
+ case 1:
62169
+ message.frustumByRectangle = $root.vertexvis.protobuf.stream.FrustumByRectangle.decode(reader, reader.uint32());
62170
+ break;
62171
+ case 2:
62172
+ message.exclusive = reader.bool();
62173
+ break;
62174
+ case 3:
62175
+ message.viewport = $root.vertexvis.protobuf.stream.Dimensions.decode(reader, reader.uint32());
62176
+ break;
62177
+ default:
62178
+ reader.skipType(tag & 7);
62179
+ break;
62180
+ }
62181
+ }
62182
+ return message;
62183
+ };
62184
+
62185
+ /**
62186
+ * Decodes a VolumeIntersectionQuery message from the specified reader or buffer, length delimited.
62187
+ * @function decodeDelimited
62188
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62189
+ * @static
62190
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
62191
+ * @returns {vertexvis.protobuf.stream.VolumeIntersectionQuery} VolumeIntersectionQuery
62192
+ * @throws {Error} If the payload is not a reader or valid buffer
62193
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
62194
+ */
62195
+ VolumeIntersectionQuery.decodeDelimited = function decodeDelimited(reader) {
62196
+ if (!(reader instanceof $Reader))
62197
+ reader = new $Reader(reader);
62198
+ return this.decode(reader, reader.uint32());
62199
+ };
62200
+
62201
+ /**
62202
+ * Verifies a VolumeIntersectionQuery message.
62203
+ * @function verify
62204
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62205
+ * @static
62206
+ * @param {Object.<string,*>} message Plain object to verify
62207
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
62208
+ */
62209
+ VolumeIntersectionQuery.verify = function verify(message) {
62210
+ if (typeof message !== "object" || message === null)
62211
+ return "object expected";
62212
+ if (message.frustumByRectangle != null && message.hasOwnProperty("frustumByRectangle")) {
62213
+ {
62214
+ let error = $root.vertexvis.protobuf.stream.FrustumByRectangle.verify(message.frustumByRectangle);
62215
+ if (error)
62216
+ return "frustumByRectangle." + error;
62217
+ }
62218
+ }
62219
+ if (message.exclusive != null && message.hasOwnProperty("exclusive"))
62220
+ if (typeof message.exclusive !== "boolean")
62221
+ return "exclusive: boolean expected";
62222
+ if (message.viewport != null && message.hasOwnProperty("viewport")) {
62223
+ let error = $root.vertexvis.protobuf.stream.Dimensions.verify(message.viewport);
62224
+ if (error)
62225
+ return "viewport." + error;
62226
+ }
62227
+ return null;
62228
+ };
62229
+
62230
+ /**
62231
+ * Creates a VolumeIntersectionQuery message from a plain object. Also converts values to their respective internal types.
62232
+ * @function fromObject
62233
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62234
+ * @static
62235
+ * @param {Object.<string,*>} object Plain object
62236
+ * @returns {vertexvis.protobuf.stream.VolumeIntersectionQuery} VolumeIntersectionQuery
62237
+ */
62238
+ VolumeIntersectionQuery.fromObject = function fromObject(object) {
62239
+ if (object instanceof $root.vertexvis.protobuf.stream.VolumeIntersectionQuery)
62240
+ return object;
62241
+ let message = new $root.vertexvis.protobuf.stream.VolumeIntersectionQuery();
62242
+ if (object.frustumByRectangle != null) {
62243
+ if (typeof object.frustumByRectangle !== "object")
62244
+ throw TypeError(".vertexvis.protobuf.stream.VolumeIntersectionQuery.frustumByRectangle: object expected");
62245
+ message.frustumByRectangle = $root.vertexvis.protobuf.stream.FrustumByRectangle.fromObject(object.frustumByRectangle);
62246
+ }
62247
+ if (object.exclusive != null)
62248
+ message.exclusive = Boolean(object.exclusive);
62249
+ if (object.viewport != null) {
62250
+ if (typeof object.viewport !== "object")
62251
+ throw TypeError(".vertexvis.protobuf.stream.VolumeIntersectionQuery.viewport: object expected");
62252
+ message.viewport = $root.vertexvis.protobuf.stream.Dimensions.fromObject(object.viewport);
62253
+ }
62254
+ return message;
62255
+ };
62256
+
62257
+ /**
62258
+ * Creates a plain object from a VolumeIntersectionQuery message. Also converts values to other types if specified.
62259
+ * @function toObject
62260
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62261
+ * @static
62262
+ * @param {vertexvis.protobuf.stream.VolumeIntersectionQuery} message VolumeIntersectionQuery
62263
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
62264
+ * @returns {Object.<string,*>} Plain object
62265
+ */
62266
+ VolumeIntersectionQuery.toObject = function toObject(message, options) {
62267
+ if (!options)
62268
+ options = {};
62269
+ let object = {};
62270
+ if (options.defaults) {
62271
+ object.exclusive = false;
62272
+ object.viewport = null;
62273
+ }
62274
+ if (message.frustumByRectangle != null && message.hasOwnProperty("frustumByRectangle")) {
62275
+ object.frustumByRectangle = $root.vertexvis.protobuf.stream.FrustumByRectangle.toObject(message.frustumByRectangle, options);
62276
+ if (options.oneofs)
62277
+ object.volume = "frustumByRectangle";
62278
+ }
62279
+ if (message.exclusive != null && message.hasOwnProperty("exclusive"))
62280
+ object.exclusive = message.exclusive;
62281
+ if (message.viewport != null && message.hasOwnProperty("viewport"))
62282
+ object.viewport = $root.vertexvis.protobuf.stream.Dimensions.toObject(message.viewport, options);
62283
+ return object;
62284
+ };
62285
+
62286
+ /**
62287
+ * Converts this VolumeIntersectionQuery to JSON.
62288
+ * @function toJSON
62289
+ * @memberof vertexvis.protobuf.stream.VolumeIntersectionQuery
62290
+ * @instance
62291
+ * @returns {Object.<string,*>} JSON object
62292
+ */
62293
+ VolumeIntersectionQuery.prototype.toJSON = function toJSON() {
62294
+ return this.constructor.toObject(this, minimal.util.toJSONOptions);
62295
+ };
62296
+
62297
+ return VolumeIntersectionQuery;
62298
+ })();
62299
+
61362
62300
  stream.SceneTreeRangeQuery = (function() {
61363
62301
 
61364
62302
  /**
@@ -63947,6 +64885,7 @@ const vertexvis = $root.vertexvis = (() => {
63947
64885
  * @property {vertexvis.protobuf.stream.ISceneTreeRangeQuery|null} [sceneTreeRange] SceneOperation sceneTreeRange
63948
64886
  * @property {vertexvis.protobuf.stream.IMetadataFilterQuery|null} [metadata] SceneOperation metadata
63949
64887
  * @property {vertexvis.protobuf.stream.IOverrideQuery|null} [override] SceneOperation override
64888
+ * @property {vertexvis.protobuf.stream.IVolumeIntersectionQuery|null} [volume] SceneOperation volume
63950
64889
  * @property {Array.<vertexvis.protobuf.stream.IOperationType>|null} [operationTypes] SceneOperation operationTypes
63951
64890
  */
63952
64891
 
@@ -64030,6 +64969,14 @@ const vertexvis = $root.vertexvis = (() => {
64030
64969
  */
64031
64970
  SceneOperation.prototype.override = null;
64032
64971
 
64972
+ /**
64973
+ * SceneOperation volume.
64974
+ * @member {vertexvis.protobuf.stream.IVolumeIntersectionQuery|null|undefined} volume
64975
+ * @memberof vertexvis.protobuf.stream.SceneOperation
64976
+ * @instance
64977
+ */
64978
+ SceneOperation.prototype.volume = null;
64979
+
64033
64980
  /**
64034
64981
  * SceneOperation operationTypes.
64035
64982
  * @member {Array.<vertexvis.protobuf.stream.IOperationType>} operationTypes
@@ -64043,12 +64990,12 @@ const vertexvis = $root.vertexvis = (() => {
64043
64990
 
64044
64991
  /**
64045
64992
  * SceneOperation query.
64046
- * @member {"item"|"or"|"and"|"all"|"point"|"sceneTreeRange"|"metadata"|"override"|undefined} query
64993
+ * @member {"item"|"or"|"and"|"all"|"point"|"sceneTreeRange"|"metadata"|"override"|"volume"|undefined} query
64047
64994
  * @memberof vertexvis.protobuf.stream.SceneOperation
64048
64995
  * @instance
64049
64996
  */
64050
64997
  Object.defineProperty(SceneOperation.prototype, "query", {
64051
- get: $util.oneOfGetter($oneOfFields = ["item", "or", "and", "all", "point", "sceneTreeRange", "metadata", "override"]),
64998
+ get: $util.oneOfGetter($oneOfFields = ["item", "or", "and", "all", "point", "sceneTreeRange", "metadata", "override", "volume"]),
64052
64999
  set: $util.oneOfSetter($oneOfFields)
64053
65000
  });
64054
65001
 
@@ -64095,6 +65042,8 @@ const vertexvis = $root.vertexvis = (() => {
64095
65042
  $root.vertexvis.protobuf.stream.MetadataFilterQuery.encode(message.metadata, writer.uint32(/* id 8, wireType 2 =*/66).fork()).ldelim();
64096
65043
  if (message.override != null && Object.hasOwnProperty.call(message, "override"))
64097
65044
  $root.vertexvis.protobuf.stream.OverrideQuery.encode(message.override, writer.uint32(/* id 9, wireType 2 =*/74).fork()).ldelim();
65045
+ if (message.volume != null && Object.hasOwnProperty.call(message, "volume"))
65046
+ $root.vertexvis.protobuf.stream.VolumeIntersectionQuery.encode(message.volume, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();
64098
65047
  return writer;
64099
65048
  };
64100
65049
 
@@ -64153,6 +65102,9 @@ const vertexvis = $root.vertexvis = (() => {
64153
65102
  case 9:
64154
65103
  message.override = $root.vertexvis.protobuf.stream.OverrideQuery.decode(reader, reader.uint32());
64155
65104
  break;
65105
+ case 10:
65106
+ message.volume = $root.vertexvis.protobuf.stream.VolumeIntersectionQuery.decode(reader, reader.uint32());
65107
+ break;
64156
65108
  case 4:
64157
65109
  if (!(message.operationTypes && message.operationTypes.length))
64158
65110
  message.operationTypes = [];
@@ -64272,6 +65224,16 @@ const vertexvis = $root.vertexvis = (() => {
64272
65224
  return "override." + error;
64273
65225
  }
64274
65226
  }
65227
+ if (message.volume != null && message.hasOwnProperty("volume")) {
65228
+ if (properties.query === 1)
65229
+ return "query: multiple values";
65230
+ properties.query = 1;
65231
+ {
65232
+ let error = $root.vertexvis.protobuf.stream.VolumeIntersectionQuery.verify(message.volume);
65233
+ if (error)
65234
+ return "volume." + error;
65235
+ }
65236
+ }
64275
65237
  if (message.operationTypes != null && message.hasOwnProperty("operationTypes")) {
64276
65238
  if (!Array.isArray(message.operationTypes))
64277
65239
  return "operationTypes: array expected";
@@ -64336,6 +65298,11 @@ const vertexvis = $root.vertexvis = (() => {
64336
65298
  throw TypeError(".vertexvis.protobuf.stream.SceneOperation.override: object expected");
64337
65299
  message.override = $root.vertexvis.protobuf.stream.OverrideQuery.fromObject(object.override);
64338
65300
  }
65301
+ if (object.volume != null) {
65302
+ if (typeof object.volume !== "object")
65303
+ throw TypeError(".vertexvis.protobuf.stream.SceneOperation.volume: object expected");
65304
+ message.volume = $root.vertexvis.protobuf.stream.VolumeIntersectionQuery.fromObject(object.volume);
65305
+ }
64339
65306
  if (object.operationTypes) {
64340
65307
  if (!Array.isArray(object.operationTypes))
64341
65308
  throw TypeError(".vertexvis.protobuf.stream.SceneOperation.operationTypes: array expected");
@@ -64409,6 +65376,11 @@ const vertexvis = $root.vertexvis = (() => {
64409
65376
  if (options.oneofs)
64410
65377
  object.query = "override";
64411
65378
  }
65379
+ if (message.volume != null && message.hasOwnProperty("volume")) {
65380
+ object.volume = $root.vertexvis.protobuf.stream.VolumeIntersectionQuery.toObject(message.volume, options);
65381
+ if (options.oneofs)
65382
+ object.query = "volume";
65383
+ }
64412
65384
  return object;
64413
65385
  };
64414
65386
 
@@ -91504,6 +92476,17 @@ function buildSceneOperation(query, operations, context) {
91504
92476
  },
91505
92477
  operationTypes,
91506
92478
  };
92479
+ case 'volume-intersection':
92480
+ return {
92481
+ volume: {
92482
+ frustumByRectangle: {
92483
+ rectangle: query.rectangle,
92484
+ },
92485
+ exclusive: query.exclusive,
92486
+ viewport: context.dimensions,
92487
+ },
92488
+ operationTypes,
92489
+ };
91507
92490
  default:
91508
92491
  return {};
91509
92492
  }
@@ -92147,6 +93130,9 @@ class RootQuery {
92147
93130
  withPoint(point) {
92148
93131
  return new PointQuery(point);
92149
93132
  }
93133
+ withVolumeIntersection(rectangle, exclusive) {
93134
+ return new VolumeIntersectionQuery(rectangle, exclusive);
93135
+ }
92150
93136
  }
92151
93137
  class AllQuery {
92152
93138
  build() {
@@ -92197,6 +93183,19 @@ class PointQuery {
92197
93183
  };
92198
93184
  }
92199
93185
  }
93186
+ class VolumeIntersectionQuery {
93187
+ constructor(rectangle, exclusive) {
93188
+ this.rectangle = rectangle;
93189
+ this.exclusive = exclusive;
93190
+ }
93191
+ build() {
93192
+ return {
93193
+ type: 'volume-intersection',
93194
+ rectangle: this.rectangle,
93195
+ exclusive: !!this.exclusive,
93196
+ };
93197
+ }
93198
+ }
92200
93199
  class BulkQuery {
92201
93200
  constructor(ids, type) {
92202
93201
  this.ids = ids;
@@ -105318,6 +106317,241 @@ function getRequiredProp(errorMsg, getter) {
105318
106317
  throw new Error(errorMsg);
105319
106318
  }
105320
106319
 
106320
+ const DEFAULT_CONCURRENT_VOLUME_QUERY_LIMIT = 5;
106321
+ class VolumeIntersectionQueryController {
106322
+ constructor(model, viewer) {
106323
+ this.model = model;
106324
+ this.viewer = viewer;
106325
+ this.inFlightOperations = 0;
106326
+ this.operationTransform = (builder) => builder.select();
106327
+ }
106328
+ setStartPoint(point) {
106329
+ this.previousViewerCameraControls = this.viewer.cameraControls;
106330
+ this.viewer.cameraControls = false;
106331
+ this.model.setStartPoint(point);
106332
+ }
106333
+ setEndPoint(point) {
106334
+ this.model.setEndPoint(point);
106335
+ }
106336
+ setOperationTransform(operationTransform) {
106337
+ this.operationTransform = operationTransform;
106338
+ }
106339
+ async execute() {
106340
+ var _a;
106341
+ const screenBounds = this.model.getScreenBounds();
106342
+ const type = this.model.getType();
106343
+ this.viewer.cameraControls = (_a = this.previousViewerCameraControls) !== null && _a !== void 0 ? _a : true;
106344
+ this.model.complete();
106345
+ if (screenBounds != null &&
106346
+ this.inFlightOperations < DEFAULT_CONCURRENT_VOLUME_QUERY_LIMIT) {
106347
+ this.inFlightOperations = this.inFlightOperations + 1;
106348
+ try {
106349
+ const scene = await this.viewer.scene();
106350
+ await scene
106351
+ .items((op) => this.operationTransform(op.where((q) => q.withVolumeIntersection(screenBounds, type === 'exclusive'))))
106352
+ .execute();
106353
+ }
106354
+ catch (e) {
106355
+ console.error('Failed to perform volume intersection query', e);
106356
+ throw e;
106357
+ }
106358
+ finally {
106359
+ this.inFlightOperations = this.inFlightOperations - 1;
106360
+ }
106361
+ }
106362
+ else if (this.inFlightOperations >= DEFAULT_CONCURRENT_VOLUME_QUERY_LIMIT) {
106363
+ throw new Error(`Unable to perform volume intersection query due to the limit of ${DEFAULT_CONCURRENT_VOLUME_QUERY_LIMIT}.`);
106364
+ }
106365
+ }
106366
+ }
106367
+
106368
+ class VolumeIntersectionQueryInteractionHandler {
106369
+ constructor(controller) {
106370
+ this.controller = controller;
106371
+ this.handleDragBegin = this.handleDragBegin.bind(this);
106372
+ this.handleDrag = this.handleDrag.bind(this);
106373
+ this.handleDragEnd = this.handleDragEnd.bind(this);
106374
+ }
106375
+ initialize(element) {
106376
+ this.element = element;
106377
+ this.element.addEventListener('pointerdown', this.handleDragBegin);
106378
+ }
106379
+ dispose() {
106380
+ var _a;
106381
+ (_a = this.element) === null || _a === void 0 ? void 0 : _a.removeEventListener('pointerdown', this.handleDragBegin);
106382
+ window.removeEventListener('pointermove', this.handleDrag);
106383
+ window.removeEventListener('pointerup', this.handleDragEnd);
106384
+ }
106385
+ handleDragBegin(event) {
106386
+ if (event.buttons === 1 && !this.isInteracting) {
106387
+ this.isInteracting = true;
106388
+ this.controller.setStartPoint(point.create(event.offsetX, event.offsetY));
106389
+ window.addEventListener('pointermove', this.handleDrag);
106390
+ window.addEventListener('pointerup', this.handleDragEnd);
106391
+ }
106392
+ }
106393
+ handleDrag(event) {
106394
+ this.controller.setEndPoint(point.create(event.offsetX, event.offsetY));
106395
+ }
106396
+ handleDragEnd() {
106397
+ this.controller.execute();
106398
+ this.isInteracting = false;
106399
+ window.removeEventListener('pointermove', this.handleDrag);
106400
+ window.removeEventListener('pointerup', this.handleDragEnd);
106401
+ }
106402
+ }
106403
+
106404
+ class VolumeIntersectionQueryModel {
106405
+ constructor() {
106406
+ this.dragStarted = new EventDispatcher();
106407
+ this.dragComplete = new EventDispatcher();
106408
+ this.screenBoundsChanged = new EventDispatcher();
106409
+ }
106410
+ setStartPoint(point) {
106411
+ this.startPoint = point;
106412
+ this.dragStarted.emit();
106413
+ }
106414
+ setEndPoint(point) {
106415
+ this.endPoint = point;
106416
+ this.updateQueryType();
106417
+ this.screenBoundsChanged.emit(this.getQueryDetails());
106418
+ }
106419
+ complete() {
106420
+ if (this.startPoint != null && this.endPoint != null) {
106421
+ this.screenBoundsChanged.emit(undefined);
106422
+ this.dragComplete.emit(this.getQueryDetails());
106423
+ this.reset();
106424
+ }
106425
+ }
106426
+ reset() {
106427
+ this.startPoint = undefined;
106428
+ this.endPoint = undefined;
106429
+ this.type = undefined;
106430
+ }
106431
+ getScreenBounds() {
106432
+ return this.startPoint != null && this.endPoint != null
106433
+ ? rectangle.fromPoints(this.startPoint, this.endPoint)
106434
+ : undefined;
106435
+ }
106436
+ getType() {
106437
+ return this.type;
106438
+ }
106439
+ onScreenBoundsChanged(listener) {
106440
+ return this.screenBoundsChanged.on(listener);
106441
+ }
106442
+ onDragStarted(listener) {
106443
+ return this.dragStarted.on(listener);
106444
+ }
106445
+ onDragComplete(listener) {
106446
+ return this.dragComplete.on(listener);
106447
+ }
106448
+ getQueryDetails() {
106449
+ if (this.startPoint != null && this.endPoint != null && this.type != null) {
106450
+ return {
106451
+ screenBounds: rectangle.fromPoints(this.startPoint, this.endPoint),
106452
+ type: this.type,
106453
+ };
106454
+ }
106455
+ else {
106456
+ throw new Error('Failed to create query details, the start and end points must be set.');
106457
+ }
106458
+ }
106459
+ updateQueryType() {
106460
+ if (this.startPoint != null && this.endPoint) {
106461
+ this.type =
106462
+ point.subtract(this.endPoint, this.startPoint).x > 0
106463
+ ? 'exclusive'
106464
+ : 'inclusive';
106465
+ }
106466
+ }
106467
+ }
106468
+
106469
+ 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)}";
106470
+
106471
+ const ViewerBoxQueryTool = class extends HTMLElement$1 {
106472
+ constructor() {
106473
+ super();
106474
+ this.__registerHost();
106475
+ this.__attachShadow();
106476
+ /**
106477
+ * The default operation to perform when a drag has completed and the intersection
106478
+ * query will be run. Defaults to `select`, and can be changed to `deselect`.
106479
+ *
106480
+ * The operation behavior for this intersection query tool can also be changed by
106481
+ * providing a custom implementation of the `VolumeIntersectionQueryController`, or
106482
+ * by using the `setOperationTransform` method of the default controller.
106483
+ */
106484
+ this.operationType = 'select';
106485
+ this.handleScreenBoundsChanged = this.handleScreenBoundsChanged.bind(this);
106486
+ }
106487
+ componentWillLoad() {
106488
+ var _a;
106489
+ this.model = (_a = this.model) !== null && _a !== void 0 ? _a : new VolumeIntersectionQueryModel();
106490
+ this.screenBoundsChangedDisposable = this.model.onScreenBoundsChanged(this.handleScreenBoundsChanged);
106491
+ this.handleViewerChanged(this.viewer);
106492
+ }
106493
+ disconnectedCallback() {
106494
+ var _a, _b, _c;
106495
+ (_a = this.model) === null || _a === void 0 ? void 0 : _a.reset();
106496
+ (_b = this.screenBoundsChangedDisposable) === null || _b === void 0 ? void 0 : _b.dispose();
106497
+ (_c = this.interactionHandler) === null || _c === void 0 ? void 0 : _c.dispose();
106498
+ }
106499
+ /**
106500
+ * @ignore
106501
+ */
106502
+ handleViewerChanged(newViewer) {
106503
+ this.deregisterInteractionHandler();
106504
+ if (this.model != null && newViewer != null) {
106505
+ this.controller = new VolumeIntersectionQueryController(this.model, newViewer);
106506
+ this.handleDefaultOperationChange(this.operationType);
106507
+ this.registerInteractionHandler(this.controller, newViewer);
106508
+ }
106509
+ }
106510
+ /**
106511
+ * @ignore
106512
+ */
106513
+ handleDefaultOperationChange(updatedOperationType) {
106514
+ var _a;
106515
+ (_a = this.controller) === null || _a === void 0 ? void 0 : _a.setOperationTransform(updatedOperationType === 'select'
106516
+ ? (builder) => builder.select()
106517
+ : (builder) => builder.deselect());
106518
+ }
106519
+ /**
106520
+ * @ignore
106521
+ */
106522
+ render() {
106523
+ return (h(Host, null, h("vertex-viewer-layer", null, this.details != null && (h("div", { class: "bounds", style: {
106524
+ left: `${this.details.screenBounds.x}px`,
106525
+ top: `${this.details.screenBounds.y}px`,
106526
+ width: `${this.details.screenBounds.width}px`,
106527
+ height: `${this.details.screenBounds.height}px`,
106528
+ } }, h("slot", { name: "bounds" }, h("div", { class: "outline" }, h("div", { class: "fill" }))))))));
106529
+ }
106530
+ handleScreenBoundsChanged(details) {
106531
+ this.details = details;
106532
+ this.updateTypeAttribute(details === null || details === void 0 ? void 0 : details.type);
106533
+ }
106534
+ registerInteractionHandler(controller, viewer) {
106535
+ this.interactionHandler = new VolumeIntersectionQueryInteractionHandler(controller);
106536
+ viewer.registerInteractionHandler(this.interactionHandler);
106537
+ }
106538
+ deregisterInteractionHandler() {
106539
+ var _a;
106540
+ (_a = this.interactionHandler) === null || _a === void 0 ? void 0 : _a.dispose();
106541
+ this.interactionHandler = undefined;
106542
+ }
106543
+ updateTypeAttribute(type) {
106544
+ this.hostEl.setAttribute('inclusive', `${type === 'inclusive'}`);
106545
+ this.hostEl.setAttribute('exclusive', `${type === 'exclusive'}`);
106546
+ }
106547
+ get hostEl() { return this; }
106548
+ static get watchers() { return {
106549
+ "viewer": ["handleViewerChanged"],
106550
+ "operationType": ["handleDefaultOperationChange"]
106551
+ }; }
106552
+ static get style() { return viewerBoxQueryToolCss; }
106553
+ };
106554
+
105321
106555
  const viewerButtonCss = ":host{cursor:pointer}.viewer-button{align-items:center;background:none;border:none;color:inherit;cursor:inherit;display:flex;padding:0}";
105322
106556
 
105323
106557
  const ViewerButton = class extends HTMLElement$1 {
@@ -123837,6 +125071,7 @@ const VertexSceneTreeTableResizeDivider = /*@__PURE__*/proxyCustomElement(SceneT
123837
125071
  const VertexSceneTreeToolbar = /*@__PURE__*/proxyCustomElement(SceneTreeToolbar, [1,"vertex-scene-tree-toolbar"]);
123838
125072
  const VertexSceneTreeToolbarGroup = /*@__PURE__*/proxyCustomElement(SceneTreeToolbarGroup, [1,"vertex-scene-tree-toolbar-group"]);
123839
125073
  const VertexViewer = /*@__PURE__*/proxyCustomElement(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]},[[0,"tap","handleTapEvent"]]]);
125074
+ const VertexViewerBoxQueryTool = /*@__PURE__*/proxyCustomElement(ViewerBoxQueryTool, [1,"vertex-viewer-box-query-tool",{"viewer":[16],"controller":[1040],"model":[1040],"operationType":[1,"operation-type"],"details":[32]}]);
123840
125075
  const VertexViewerButton = /*@__PURE__*/proxyCustomElement(ViewerButton, [1,"vertex-viewer-button"]);
123841
125076
  const VertexViewerDefaultToolbar = /*@__PURE__*/proxyCustomElement(ViewerDefaultToolbar, [1,"vertex-viewer-default-toolbar",{"viewer":[16],"placement":[1],"direction":[1],"animationsDisabled":[4,"animations-disabled"],"animationMs":[2,"animation-ms"]}]);
123842
125077
  const VertexViewerDomElement = /*@__PURE__*/proxyCustomElement(ViewerDomElement, [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"]}]);
@@ -123876,6 +125111,7 @@ const defineCustomElements = (opts) => {
123876
125111
  VertexSceneTreeToolbar,
123877
125112
  VertexSceneTreeToolbarGroup,
123878
125113
  VertexViewer,
125114
+ VertexViewerBoxQueryTool,
123879
125115
  VertexViewerButton,
123880
125116
  VertexViewerDefaultToolbar,
123881
125117
  VertexViewerDomElement,
@@ -123910,4 +125146,4 @@ const defineCustomElements = (opts) => {
123910
125146
  }
123911
125147
  };
123912
125148
 
123913
- export { AngleUnits, AreaUnits, ArrowMarkup, CircleMarkup, colorMaterial as ColorMaterial, CursorManager, DistanceUnits, EntityType, FrameCameraBase, FreeformMarkup, loadableResource as LoadableResource, MeasurementController, MeasurementEntity, MeasurementModel, MeasurementOverlayManager, Frame as ReceivedFrame, FrameImage as ReceivedFrameImage, FrameScene as ReceivedFrameScene, FrameOrthographicCamera as ReceivedOrthographicCamera, 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, VertexViewerPinGroup, VertexViewerPinLabel, VertexViewerPinLabelLine, VertexViewerPinTool, VertexViewerSpinner, VertexViewerToolbar, VertexViewerToolbarGroup, VertexViewerTransformWidget, VertexViewerViewCube, Viewport, __awaiter as _, __generator as a, __spreadArray as b, createCommonjsModule as c, defineCustomElements, labelPinCursor, makeMinimumDistanceResult, measurementCursor, measurementWithArrowCursor, pinCursor };
125149
+ export { AngleUnits, AreaUnits, ArrowMarkup, CircleMarkup, colorMaterial as ColorMaterial, CursorManager, DistanceUnits, EntityType, FrameCameraBase, FreeformMarkup, loadableResource as LoadableResource, MeasurementController, MeasurementEntity, MeasurementModel, MeasurementOverlayManager, Frame as ReceivedFrame, FrameImage as ReceivedFrameImage, FrameScene as ReceivedFrameScene, FrameOrthographicCamera as ReceivedOrthographicCamera, FramePerspectiveCamera as ReceivedPerspectiveCamera, Scene, SynchronizedClock, VertexSceneTree, VertexSceneTreeSearch, VertexSceneTreeTableCell, VertexSceneTreeTableColumn, VertexSceneTreeTableHeader, VertexSceneTreeTableLayout, VertexSceneTreeTableResizeDivider, VertexSceneTreeToolbar, VertexSceneTreeToolbarGroup, VertexViewer, VertexViewerBoxQueryTool, VertexViewerButton, VertexViewerDefaultToolbar, VertexViewerDomElement, VertexViewerDomGroup, VertexViewerDomRenderer, VertexViewerIcon, VertexViewerLayer, VertexViewerMarkup, VertexViewerMarkupArrow, VertexViewerMarkupCircle, VertexViewerMarkupFreeform, VertexViewerMarkupTool, VertexViewerMeasurementDetails, VertexViewerMeasurementDistance, VertexViewerMeasurementLine, VertexViewerMeasurementOverlays, VertexViewerMeasurementPrecise, VertexViewerPinGroup, VertexViewerPinLabel, VertexViewerPinLabelLine, VertexViewerPinTool, VertexViewerSpinner, VertexViewerToolbar, VertexViewerToolbarGroup, VertexViewerTransformWidget, VertexViewerViewCube, Viewport, __awaiter as _, __generator as a, __spreadArray as b, createCommonjsModule as c, defineCustomElements, labelPinCursor, makeMinimumDistanceResult, measurementCursor, measurementWithArrowCursor, pinCursor };