@vertexvis/viewer 0.21.0-testing.2 → 0.21.0-testing.3

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 (82) hide show
  1. package/dist/cjs/{controller-9e5744ec.js → controller-004b9f2c.js} +197 -4
  2. package/dist/cjs/controller-004b9f2c.js.map +1 -0
  3. package/dist/cjs/index.cjs.js +2 -2
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{queries-b9bf26dd.js → queries-731d8cf1.js} +40 -12
  6. package/dist/cjs/queries-731d8cf1.js.map +1 -0
  7. package/dist/cjs/vertex-scene-tree.cjs.entry.js +24 -11
  8. package/dist/cjs/vertex-scene-tree.cjs.entry.js.map +1 -1
  9. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js +6 -0
  10. package/dist/cjs/vertex-viewer-measurement-distance.cjs.entry.js.map +1 -1
  11. package/dist/cjs/vertex-viewer-pin-group.cjs.entry.js +1 -1
  12. package/dist/cjs/vertex-viewer.cjs.entry.js +1 -1
  13. package/dist/cjs/viewer.cjs.js +1 -1
  14. package/dist/collection/components/scene-tree/lib/controller.js +5 -0
  15. package/dist/collection/components/scene-tree/lib/controller.js.map +1 -1
  16. package/dist/collection/components/scene-tree/lib/viewer-ops.js +4 -2
  17. package/dist/collection/components/scene-tree/lib/viewer-ops.js.map +1 -1
  18. package/dist/collection/components/scene-tree/scene-tree.js +50 -12
  19. package/dist/collection/components/scene-tree/scene-tree.js.map +1 -1
  20. package/dist/collection/components/scene-tree/types.js.map +1 -1
  21. package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js +6 -0
  22. package/dist/collection/components/viewer-measurement-distance/viewer-measurement-distance.js.map +1 -1
  23. package/dist/collection/lib/scenes/mapper.js +34 -8
  24. package/dist/collection/lib/scenes/mapper.js.map +1 -1
  25. package/dist/collection/lib/scenes/queries.js +5 -3
  26. package/dist/collection/lib/scenes/queries.js.map +1 -1
  27. package/dist/components/controller.js +196 -3
  28. package/dist/components/controller.js.map +1 -1
  29. package/dist/components/queries.js +39 -11
  30. package/dist/components/queries.js.map +1 -1
  31. package/dist/components/vertex-scene-tree.js +24 -10
  32. package/dist/components/vertex-scene-tree.js.map +1 -1
  33. package/dist/components/vertex-viewer-measurement-distance.js +6 -0
  34. package/dist/components/vertex-viewer-measurement-distance.js.map +1 -1
  35. package/dist/esm/{controller-f2beee15.js → controller-6d2fbb9b.js} +197 -4
  36. package/dist/esm/controller-6d2fbb9b.js.map +1 -0
  37. package/dist/esm/index.js +2 -2
  38. package/dist/esm/index.mjs +2 -2
  39. package/dist/esm/loader.js +1 -1
  40. package/dist/esm/loader.mjs +1 -1
  41. package/dist/esm/{queries-78f566c5.js → queries-3bd4cfe1.js} +40 -12
  42. package/dist/esm/queries-3bd4cfe1.js.map +1 -0
  43. package/dist/esm/vertex-scene-tree.entry.js +24 -11
  44. package/dist/esm/vertex-scene-tree.entry.js.map +1 -1
  45. package/dist/esm/vertex-viewer-measurement-distance.entry.js +6 -0
  46. package/dist/esm/vertex-viewer-measurement-distance.entry.js.map +1 -1
  47. package/dist/esm/vertex-viewer-pin-group.entry.js +1 -1
  48. package/dist/esm/vertex-viewer.entry.js +1 -1
  49. package/dist/esm/viewer.js +1 -1
  50. package/dist/types/components/scene-tree/lib/controller.d.ts +4 -0
  51. package/dist/types/components/scene-tree/lib/viewer-ops.d.ts +1 -1
  52. package/dist/types/components/scene-tree/scene-tree.d.ts +7 -1
  53. package/dist/types/components/scene-tree/types.d.ts +5 -0
  54. package/dist/types/components.d.ts +13 -5
  55. package/dist/types/lib/scenes/queries.d.ts +4 -2
  56. package/dist/viewer/index.esm.js +1 -1
  57. package/dist/viewer/p-0f4f3757.js +5 -0
  58. package/dist/viewer/p-0f4f3757.js.map +1 -0
  59. package/dist/viewer/{p-1486ba3d.entry.js → p-70d29252.entry.js} +2 -2
  60. package/dist/viewer/{p-33627452.entry.js → p-be1fd8a7.entry.js} +2 -2
  61. package/dist/viewer/p-ccb5ff47.js +5 -0
  62. package/dist/viewer/p-ccb5ff47.js.map +1 -0
  63. package/dist/viewer/p-d41913d2.entry.js +5 -0
  64. package/dist/viewer/p-d41913d2.entry.js.map +1 -0
  65. package/dist/viewer/{p-f8c3e667.entry.js → p-d8626aa7.entry.js} +2 -2
  66. package/dist/viewer/p-d8626aa7.entry.js.map +1 -0
  67. package/dist/viewer/viewer.esm.js +1 -1
  68. package/dist/viewer/viewer.esm.js.map +1 -1
  69. package/package.json +8 -8
  70. package/dist/cjs/controller-9e5744ec.js.map +0 -1
  71. package/dist/cjs/queries-b9bf26dd.js.map +0 -1
  72. package/dist/esm/controller-f2beee15.js.map +0 -1
  73. package/dist/esm/queries-78f566c5.js.map +0 -1
  74. package/dist/viewer/p-07b05774.entry.js +0 -5
  75. package/dist/viewer/p-07b05774.entry.js.map +0 -1
  76. package/dist/viewer/p-564f9027.js +0 -5
  77. package/dist/viewer/p-564f9027.js.map +0 -1
  78. package/dist/viewer/p-949afb47.js +0 -5
  79. package/dist/viewer/p-949afb47.js.map +0 -1
  80. package/dist/viewer/p-f8c3e667.entry.js.map +0 -1
  81. /package/dist/viewer/{p-1486ba3d.entry.js.map → p-70d29252.entry.js.map} +0 -0
  82. /package/dist/viewer/{p-33627452.entry.js.map → p-be1fd8a7.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Dimensions } from '@vertexvis/geometry';\nimport { RepresentationPredefinedId } from '@vertexvis/scene-view-protos/core/protos/representation_pb';\nimport { toProtoDuration } from '@vertexvis/stream-api';\nimport { UUID } from '@vertexvis/utils';\n\nimport {\n Animation,\n FlyTo,\n FrameCamera,\n SceneViewStateIdentifier,\n} from '../types';\nimport { ItemOperation } from './operations';\nimport { QueryExpression } from './queries';\nimport { SceneViewStateFeature } from './scene';\n\nexport interface BuildSceneOperationContext {\n dimensions: Dimensions.Dimensions;\n}\n\nexport function buildSceneViewStateIdentifier(\n identifier: UUID.UUID | SceneViewStateIdentifier.SceneViewStateIdentifier\n):\n | Pick<\n vertexvis.protobuf.stream.ILoadSceneViewStatePayload,\n 'sceneViewStateId'\n >\n | Pick<\n vertexvis.protobuf.stream.ILoadSceneViewStatePayload,\n 'sceneViewStateSuppliedId'\n > {\n if (typeof identifier === 'string') {\n return { sceneViewStateId: { hex: identifier } };\n } else if (SceneViewStateIdentifier.isSceneViewStateId(identifier)) {\n return { sceneViewStateId: { hex: identifier.id } };\n } else if (SceneViewStateIdentifier.isSceneViewStateSuppliedId(identifier)) {\n return { sceneViewStateSuppliedId: { value: identifier.suppliedId } };\n } else {\n throw new Error(\n 'Unable to build scene view state identifier, input must be a string or `SceneViewStateIdentifier`.'\n );\n }\n}\n\nexport function buildQueryExpression(\n query: QueryExpression,\n context: BuildSceneOperationContext\n): vertexvis.protobuf.stream.IQueryExpression {\n switch (query.type) {\n case 'and':\n case 'or':\n return {\n operand: {\n itemCollection: {\n queries: query.expressions.map((exp) => ({\n sceneItemQuery: buildSceneItemQuery(exp),\n })),\n },\n },\n };\n case 'not':\n return {\n not: {\n expression: buildQueryExpression(query.query, context),\n },\n };\n case 'item-id':\n case 'supplied-id':\n return {\n operand: {\n item: {\n sceneItemQuery: buildSceneItemQuery(query),\n },\n },\n };\n case 'all':\n return {\n operand: {\n root: {},\n },\n };\n case 'scene-tree-range':\n return {\n operand: {\n sceneTreeRange: {\n start: query.range.start,\n end: query.range.end,\n },\n },\n };\n case 'metadata':\n return {\n operand: {\n metadata: {\n valueFilter: query.filter,\n keys: query.keys,\n exactMatch: query.exactMatch,\n },\n },\n };\n case 'all-selected':\n return {\n operand: {\n override: {\n selection: {},\n },\n },\n };\n case 'all-visible':\n return {\n operand: {\n override: {\n visibility: {\n visibilityState: true,\n },\n },\n },\n };\n case 'point':\n return {\n operand: {\n point: {\n point: query.point,\n viewport: context.dimensions,\n },\n },\n };\n case 'volume-intersection':\n return {\n operand: {\n volume: {\n frustumByRectangle: {\n rectangle: query.rectangle,\n },\n exclusive: query.exclusive,\n viewport: context.dimensions,\n },\n },\n };\n default:\n return {};\n }\n}\n\nexport function buildSceneOperation(\n query: QueryExpression,\n operations: ItemOperation[],\n context: BuildSceneOperationContext\n): vertexvis.protobuf.stream.ISceneOperation {\n const operationTypes = buildOperationTypes(operations);\n const queryExpression = buildQueryExpression(query, context);\n\n return { queryExpression, operationTypes };\n}\n\nfunction buildSceneItemQuery(\n item: QueryExpression\n): vertexvis.protobuf.stream.ISceneItemQuery {\n switch (item.type) {\n case 'item-id':\n return {\n id: new vertexvis.protobuf.core.Uuid({\n hex: item.value,\n }),\n };\n case 'supplied-id':\n return {\n suppliedId: item.value,\n };\n default:\n return {};\n }\n}\n\nexport function buildFlyToOperation(\n frameCorrelationId: UUID.UUID,\n options: FlyTo.FlyToOptions,\n animation?: Animation.Animation,\n baseCamera?: FrameCamera.FrameCamera\n): vertexvis.protobuf.stream.IFlyToPayload {\n const payload = {\n frameCorrelationId: {\n value: frameCorrelationId,\n },\n animation: animation\n ? {\n duration: toProtoDuration(animation.milliseconds),\n }\n : undefined,\n baseCamera:\n baseCamera != null ? FrameCamera.toProtobuf(baseCamera) : undefined,\n };\n\n switch (options.flyTo.type) {\n case 'supplied': {\n return {\n ...payload,\n itemSuppliedId: options.flyTo.data,\n };\n }\n case 'internal': {\n return {\n ...payload,\n itemId: new vertexvis.protobuf.core.Uuid({\n hex: options.flyTo.data,\n }),\n };\n }\n case 'camera': {\n return {\n ...payload,\n camera: FrameCamera.toProtobuf(options.flyTo.data),\n };\n }\n\n case 'bounding-box': {\n return {\n ...payload,\n boundingBox: {\n xmin: options.flyTo.data.min.x,\n xmax: options.flyTo.data.max.x,\n ymin: options.flyTo.data.min.y,\n ymax: options.flyTo.data.max.y,\n zmin: options.flyTo.data.min.z,\n zmax: options.flyTo.data.max.z,\n },\n };\n }\n default:\n return {};\n }\n}\n\nfunction buildOperationTypes(\n operations: ItemOperation[]\n): vertexvis.protobuf.stream.IOperationType[] {\n return operations.map((op) => {\n switch (op.type) {\n case 'change-material':\n return {\n changeMaterial: {\n materialOverride: {\n colorMaterial: {\n d: op.material.opacity,\n ns: op.material.glossiness,\n ka: op.material.ambient,\n kd: op.material.diffuse,\n ks: op.material.specular,\n ke: op.material.emissive,\n },\n },\n },\n };\n case 'clear-override':\n return { clearMaterial: {} };\n case 'change-transform':\n return { changeTransform: { transform: { ...op.transform } } };\n case 'clear-transform':\n return { clearTransform: { cascade: op.cascade } };\n case 'hide':\n return { changeVisibility: { visible: false } };\n case 'show':\n return { changeVisibility: { visible: true } };\n case 'select':\n return { changeSelection: { selected: true } };\n case 'deselect':\n return { changeSelection: { selected: false } };\n case 'change-phantom':\n return { changePhantom: { phantom: op.phantomState ?? true } };\n case 'clear-phantom':\n return { changePhantom: { phantom: false } };\n case 'change-end-item':\n return { changeEndItem: { endItem: op.endItemState ?? true } };\n case 'clear-end-item':\n return { changeEndItem: { endItem: false } };\n case 'view-rendition-by-id':\n return {\n viewRendition: {\n id: new vertexvis.protobuf.core.Uuid({ hex: op.id }),\n },\n };\n case 'view-rendition-by-supplied-id':\n return { viewRendition: { suppliedId: op.suppliedId } };\n case 'view-default-rendition':\n return { viewDefaultRendition: {} };\n case 'clear-rendition':\n return { clearRendition: {} };\n case 'view-representation':\n if (op.id === 'empty') {\n return {\n viewRepresentation: {\n predefinedId:\n RepresentationPredefinedId.REPRESENTATION_PREDEFINED_ID_EMPTY,\n },\n };\n } else if (op.id === 'entire-part') {\n return {\n viewRepresentation: {\n predefinedId:\n RepresentationPredefinedId.REPRESENTATION_PREDEFINED_ID_ENTIRE_PART,\n },\n };\n } else {\n return {\n viewRepresentation: {\n id: new vertexvis.protobuf.core.Uuid({ hex: op.id }),\n },\n };\n }\n case 'clear-representation':\n return { clearRepresentation: {} };\n default:\n return {};\n }\n });\n}\n\nexport function toPbSceneViewStateFeatures(\n features: SceneViewStateFeature[]\n): vertexvis.protobuf.stream.SceneViewStateFeature[] {\n return features.map((feature) => {\n switch (feature) {\n case 'camera':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_CAMERA;\n case 'material_overrides':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_MATERIAL_OVERRIDE;\n case 'selection':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_SELECTION;\n case 'visibility':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_VISIBILITY;\n case 'transforms':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_TRANSFORM;\n case 'cross_section':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_CROSS_SECTION;\n case 'phantom':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_PHANTOM;\n default:\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_INVALID;\n }\n });\n}\n"]}
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { vertexvis } from '@vertexvis/frame-streaming-protos';\nimport { Dimensions } from '@vertexvis/geometry';\nimport { RepresentationPredefinedId } from '@vertexvis/scene-view-protos/core/protos/representation_pb';\nimport { toProtoDuration } from '@vertexvis/stream-api';\nimport { UUID } from '@vertexvis/utils';\n\nimport {\n Animation,\n FlyTo,\n FrameCamera,\n SceneViewStateIdentifier,\n} from '../types';\nimport { ItemOperation } from './operations';\nimport { QueryExpression } from './queries';\nimport { SceneViewStateFeature } from './scene';\n\nexport interface BuildSceneOperationContext {\n dimensions: Dimensions.Dimensions;\n}\n\nexport function buildSceneViewStateIdentifier(\n identifier: UUID.UUID | SceneViewStateIdentifier.SceneViewStateIdentifier\n):\n | Pick<\n vertexvis.protobuf.stream.ILoadSceneViewStatePayload,\n 'sceneViewStateId'\n >\n | Pick<\n vertexvis.protobuf.stream.ILoadSceneViewStatePayload,\n 'sceneViewStateSuppliedId'\n > {\n if (typeof identifier === 'string') {\n return { sceneViewStateId: { hex: identifier } };\n } else if (SceneViewStateIdentifier.isSceneViewStateId(identifier)) {\n return { sceneViewStateId: { hex: identifier.id } };\n } else if (SceneViewStateIdentifier.isSceneViewStateSuppliedId(identifier)) {\n return { sceneViewStateSuppliedId: { value: identifier.suppliedId } };\n } else {\n throw new Error(\n 'Unable to build scene view state identifier, input must be a string or `SceneViewStateIdentifier`.'\n );\n }\n}\n\nexport function buildQueryExpression(\n query: QueryExpression,\n context: BuildSceneOperationContext\n): vertexvis.protobuf.stream.IQueryExpression {\n switch (query.type) {\n case 'and':\n case 'or':\n return {\n operand: {\n itemCollection: {\n queries: query.expressions.map((exp) => ({\n sceneItemQuery: buildSceneItemQuery(exp),\n })),\n },\n },\n };\n case 'not':\n return {\n not: {\n expression: buildQueryExpression(query.query, context),\n },\n };\n case 'item-id':\n case 'supplied-id':\n return {\n operand: {\n item: {\n sceneItemQuery: buildSceneItemQuery(query),\n },\n },\n };\n case 'all':\n return {\n operand: {\n root: {},\n },\n };\n case 'scene-tree-range':\n return {\n operand: {\n sceneTreeRange: {\n start: query.range.start,\n end: query.range.end,\n },\n },\n };\n case 'metadata':\n if (query.removeHiddenItems) {\n return {\n and: {\n first: {\n operand: {\n metadata: {\n valueFilter: query.filter,\n keys: query.keys,\n exactMatch: query.exactMatch,\n },\n },\n },\n second: {\n operand: {\n override: {\n visibility: {\n visibilityState: true,\n },\n },\n },\n },\n },\n };\n } else {\n return {\n operand: {\n metadata: {\n valueFilter: query.filter,\n keys: query.keys,\n exactMatch: query.exactMatch,\n },\n },\n };\n }\n case 'all-selected':\n return {\n operand: {\n override: {\n selection: {},\n },\n },\n };\n case 'all-visible':\n return {\n operand: {\n override: {\n visibility: {\n visibilityState: true,\n },\n },\n },\n };\n case 'point':\n return {\n operand: {\n point: {\n point: query.point,\n viewport: context.dimensions,\n },\n },\n };\n case 'volume-intersection':\n return {\n operand: {\n volume: {\n frustumByRectangle: {\n rectangle: query.rectangle,\n },\n exclusive: query.exclusive,\n viewport: context.dimensions,\n },\n },\n };\n default:\n return {};\n }\n}\n\nexport function buildSceneOperation(\n query: QueryExpression,\n operations: ItemOperation[],\n context: BuildSceneOperationContext\n): vertexvis.protobuf.stream.ISceneOperation {\n const operationTypes = buildOperationTypes(operations);\n const queryExpression = buildQueryExpression(query, context);\n\n return { queryExpression, operationTypes };\n}\n\nfunction buildSceneItemQuery(\n item: QueryExpression\n): vertexvis.protobuf.stream.ISceneItemQuery {\n switch (item.type) {\n case 'item-id':\n return {\n id: new vertexvis.protobuf.core.Uuid({\n hex: item.value,\n }),\n };\n case 'supplied-id':\n return {\n suppliedId: item.value,\n };\n default:\n return {};\n }\n}\n\nexport function buildFlyToOperation(\n frameCorrelationId: UUID.UUID,\n options: FlyTo.FlyToOptions,\n animation?: Animation.Animation,\n baseCamera?: FrameCamera.FrameCamera\n): vertexvis.protobuf.stream.IFlyToPayload {\n const payload = {\n frameCorrelationId: {\n value: frameCorrelationId,\n },\n animation: animation\n ? {\n duration: toProtoDuration(animation.milliseconds),\n }\n : undefined,\n baseCamera:\n baseCamera != null ? FrameCamera.toProtobuf(baseCamera) : undefined,\n };\n\n switch (options.flyTo.type) {\n case 'supplied': {\n return {\n ...payload,\n itemSuppliedId: options.flyTo.data,\n };\n }\n case 'internal': {\n return {\n ...payload,\n itemId: new vertexvis.protobuf.core.Uuid({\n hex: options.flyTo.data,\n }),\n };\n }\n case 'camera': {\n return {\n ...payload,\n camera: FrameCamera.toProtobuf(options.flyTo.data),\n };\n }\n\n case 'bounding-box': {\n return {\n ...payload,\n boundingBox: {\n xmin: options.flyTo.data.min.x,\n xmax: options.flyTo.data.max.x,\n ymin: options.flyTo.data.min.y,\n ymax: options.flyTo.data.max.y,\n zmin: options.flyTo.data.min.z,\n zmax: options.flyTo.data.max.z,\n },\n };\n }\n default:\n return {};\n }\n}\n\nfunction buildOperationTypes(\n operations: ItemOperation[]\n): vertexvis.protobuf.stream.IOperationType[] {\n return operations.map((op) => {\n switch (op.type) {\n case 'change-material':\n return {\n changeMaterial: {\n materialOverride: {\n colorMaterial: {\n d: op.material.opacity,\n ns: op.material.glossiness,\n ka: op.material.ambient,\n kd: op.material.diffuse,\n ks: op.material.specular,\n ke: op.material.emissive,\n },\n },\n },\n };\n case 'clear-override':\n return { clearMaterial: {} };\n case 'change-transform':\n return { changeTransform: { transform: { ...op.transform } } };\n case 'clear-transform':\n return { clearTransform: { cascade: op.cascade } };\n case 'hide':\n return { changeVisibility: { visible: false } };\n case 'show':\n return { changeVisibility: { visible: true } };\n case 'select':\n return { changeSelection: { selected: true } };\n case 'deselect':\n return { changeSelection: { selected: false } };\n case 'change-phantom':\n return { changePhantom: { phantom: op.phantomState ?? true } };\n case 'clear-phantom':\n return { changePhantom: { phantom: false } };\n case 'change-end-item':\n return { changeEndItem: { endItem: op.endItemState ?? true } };\n case 'clear-end-item':\n return { changeEndItem: { endItem: false } };\n case 'view-rendition-by-id':\n return {\n viewRendition: {\n id: new vertexvis.protobuf.core.Uuid({ hex: op.id }),\n },\n };\n case 'view-rendition-by-supplied-id':\n return { viewRendition: { suppliedId: op.suppliedId } };\n case 'view-default-rendition':\n return { viewDefaultRendition: {} };\n case 'clear-rendition':\n return { clearRendition: {} };\n case 'view-representation':\n if (op.id === 'empty') {\n return {\n viewRepresentation: {\n predefinedId:\n RepresentationPredefinedId.REPRESENTATION_PREDEFINED_ID_EMPTY,\n },\n };\n } else if (op.id === 'entire-part') {\n return {\n viewRepresentation: {\n predefinedId:\n RepresentationPredefinedId.REPRESENTATION_PREDEFINED_ID_ENTIRE_PART,\n },\n };\n } else {\n return {\n viewRepresentation: {\n id: new vertexvis.protobuf.core.Uuid({ hex: op.id }),\n },\n };\n }\n case 'clear-representation':\n return { clearRepresentation: {} };\n default:\n return {};\n }\n });\n}\n\nexport function toPbSceneViewStateFeatures(\n features: SceneViewStateFeature[]\n): vertexvis.protobuf.stream.SceneViewStateFeature[] {\n return features.map((feature) => {\n switch (feature) {\n case 'camera':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_CAMERA;\n case 'material_overrides':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_MATERIAL_OVERRIDE;\n case 'selection':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_SELECTION;\n case 'visibility':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_VISIBILITY;\n case 'transforms':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_TRANSFORM;\n case 'cross_section':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_CROSS_SECTION;\n case 'phantom':\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_PHANTOM;\n default:\n return vertexvis.protobuf.stream.SceneViewStateFeature\n .SCENE_VIEW_STATE_FEATURE_INVALID;\n }\n });\n}\n"]}
@@ -172,8 +172,8 @@ export class RootQuery {
172
172
  * ]).execute();
173
173
  * ```
174
174
  */
175
- withMetadata(filter, keys, exactMatch) {
176
- return new MetadataQuery(filter, keys, exactMatch, this.inverted);
175
+ withMetadata(filter, keys, exactMatch, removeHiddenItems) {
176
+ return new MetadataQuery(filter, keys, exactMatch, this.inverted, removeHiddenItems);
177
177
  }
178
178
  /**
179
179
  * Specifies that the operation should be performed on any item that has been selected.
@@ -292,11 +292,12 @@ export class SceneTreeRangeQuery extends TerminalQuery {
292
292
  }
293
293
  }
294
294
  export class MetadataQuery extends TerminalQuery {
295
- constructor(filter, keys, exactMatch, inverted) {
295
+ constructor(filter, keys, exactMatch, inverted, removeHiddenItems) {
296
296
  super(inverted);
297
297
  this.filter = filter;
298
298
  this.keys = keys;
299
299
  this.exactMatch = exactMatch;
300
+ this.removeHiddenItems = removeHiddenItems;
300
301
  }
301
302
  queryExpressionBuilder() {
302
303
  return {
@@ -304,6 +305,7 @@ export class MetadataQuery extends TerminalQuery {
304
305
  filter: this.filter,
305
306
  keys: this.keys,
306
307
  exactMatch: this.exactMatch,
308
+ removeHiddenItems: this.removeHiddenItems,
307
309
  };
308
310
  }
309
311
  }
@@ -1 +1 @@
1
- {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/queries.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Rectangle } from '@vertexvis/geometry';\n\nimport { SceneItemOperationsBuilder } from './scene';\n\ninterface AllQueryExpression {\n type: 'all';\n}\n\nexport interface SceneTreeRange {\n start: number;\n end: number;\n}\n\ninterface ItemQueryExpression {\n type: 'item-id' | 'supplied-id';\n value: string;\n}\n\nexport interface AndExpression {\n type: 'and';\n expressions: QueryExpression[];\n}\n\nexport interface OrExpression {\n type: 'or';\n expressions: QueryExpression[];\n}\n\ninterface SceneTreeRangeQueryExpression {\n type: 'scene-tree-range';\n range: SceneTreeRange;\n}\n\ninterface NotQueryExpression {\n type: 'not';\n query: QueryExpression;\n}\ninterface MetadataQueryExpression {\n type: 'metadata';\n filter: string;\n keys: string[];\n exactMatch: boolean;\n}\n\ninterface AllSelectedQueryExpression {\n type: 'all-selected';\n}\n\ninterface AllVisibleQueryExpression {\n type: 'all-visible';\n}\n\ninterface PointQueryExpression {\n type: 'point';\n point: Point.Point;\n}\n\ninterface VolumeIntersectionQueryExpression {\n type: 'volume-intersection';\n rectangle: Rectangle.Rectangle;\n exclusive: boolean;\n}\n\n/**\n * Represents the sum of all possible types of expressions.\n */\nexport type QueryExpression =\n | AllQueryExpression\n | ItemQueryExpression\n | AndExpression\n | OrExpression\n | SceneTreeRangeQueryExpression\n | PointQueryExpression\n | VolumeIntersectionQueryExpression\n | MetadataQueryExpression\n | AllSelectedQueryExpression\n | AllVisibleQueryExpression\n | NotQueryExpression;\n\n/**\n * An interface that represents a query is \"complete\" and can be turned into an\n * expression.\n */\nabstract class TerminalQuery {\n protected inverted: boolean;\n public constructor(inverted: boolean) {\n this.inverted = inverted;\n }\n\n public build(): QueryExpression {\n if (this.inverted) {\n return {\n type: 'not',\n query: this.queryExpressionBuilder(),\n };\n } else {\n return this.queryExpressionBuilder();\n }\n }\n\n public abstract queryExpressionBuilder(): QueryExpression;\n}\n\ninterface ItemQuery<N> {\n withItemId(id: string): N;\n\n withSuppliedId(id: string): N;\n}\n\ninterface BooleanQuery {\n and(): AndQuery;\n or(): OrQuery;\n}\n\nexport class RootQuery implements ItemQuery<SingleQuery> {\n public constructor(private inverted: boolean = false) {}\n\n /**\n * Specifies that the operation should be performed on all items in the scene.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect all items in the scene\n * await scene.items((op) => [op.where((q) => q.all()).deselect()]).execute();\n * ```\n */\n public all(): AllQuery {\n return new AllQuery();\n }\n\n /**\n * Specifies that the operation should be performed on all items that do not match any following queries.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items that are not selected\n * await scene.items((op) => [op.where((q) => q.not().withSelected()).hide()]).execute();\n * ```\n */\n public not(): RootQuery {\n return new NotQuery(!this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching any one of the provided IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid-1` ID and the `item-uuid-2` ID\n * await scene.items((op) => [\n * op.where((q) => q.withItemIds(['item-uuid-1', 'item-uuid-2'])).hide(),\n * ]).execute();\n * ```\n */\n public withItemIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'item-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching any one of the provided custom supplied IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-supplied-id-1` supplied ID\n * // and the `item-supplied-id-2` supplied ID\n * await scene.items((op) => [\n * op\n * .where((q) => q.withItemIds(['item-supplied-id-1', 'item-supplied-id-2']))\n * .hide(),\n * ]).execute();\n * ```\n */\n public withSuppliedIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'supplied-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching the provided ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid` ID\n * await scene.items((op) => [\n * op.where((q) => q.withItemId('item-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public withItemId(id: string): SingleQuery {\n return new SingleQuery({ type: 'item-id', value: id }, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching the provided custom supplied ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-supplied-id` supplied ID\n * await scene.items((op) => [\n * op.where((q) => q.withSuppliedId('item-supplied-id')).hide(),\n * ]).execute();\n * ```\n */\n public withSuppliedId(id: string): SingleQuery {\n return new SingleQuery({ type: 'supplied-id', value: id }, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on a range within the `<vertex-scene-tree>` component.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items from the 2nd row to the 5th row of the scene-tree\n * await scene.items((op) => [\n * op\n * .where((q) =>\n * q.withSceneTreeRange({\n * start: 2,\n * end: 5,\n * })\n * )\n * .hide(),\n * ]).execute();\n * ```\n */\n public withSceneTreeRange(range: SceneTreeRange): SceneTreeRangeQuery {\n return new SceneTreeRangeQuery(range, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that has a metadata value matching the\n * filter provided for any of the keys specified. Can optionally be set to perform an exactMatch,\n * which will require that the filter matches the value exactly.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items where the `PART_NAME_KEY` includes a value of `PartName`\n * await scene.items((op) => [\n * op.where((q) => q.withMetadata('PartName', ['PART_NAME_KEY'])).hide(),\n * ]).execute();\n *\n * // Hide all items where the `PART_NAME_KEY` has exactly a value of `PartName`\n * await scene.items((op) => [\n * op.where((q) => q.withMetadata('PartName', ['PART_NAME_KEY'], true)).hide(),\n * ]).execute();\n * ```\n */\n public withMetadata(\n filter: string,\n keys: string[],\n exactMatch: boolean\n ): MetadataQuery {\n return new MetadataQuery(filter, keys, exactMatch, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that has been selected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items that are selected\n * await scene.items((op) => [op.where((q) => q.withSelected()).hide()]).execute();\n * ```\n */\n public withSelected(): AllSelectedQuery {\n return new AllSelectedQuery(this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that is visible.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select all items that are visible\n * await scene.items((op) => [op.where((q) => q.withVisible()).select()]).execute();\n * ```\n */\n public withVisible(): AllVisibleQuery {\n return new AllVisibleQuery(this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item present at the provided `point` in the image.\n * This query operates on the item found at that `point` similar to using `withItemId` in combination with\n * `raycaster.hitItems`, which can be useful if the additional metadata from the `raycaster.hitItems`\n * method is not needed to eliminate a network request.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select the item present at the [100, 100] coordinate of the image\n * await scene.items((op) => [\n * op.where((q) => q.withPoint(Point.create(100, 100))).select(),\n * ]).execute();\n * ```\n */\n public withPoint(point: Point.Point): PointQuery {\n return new PointQuery(point, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on items within the specified `rectangle` boundary \n * within the Viewer. The `exclusive` flag here determines whether items that intersect with the `rectangle`, \n * but are not contained should be included in the result.\n * \n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n\n * // Select all items within the specified 100x100 region of the image\n * // excluding any elements that are not fully contained by the region\n * await scene.items((op) => [\n * op\n * .where((q) =>\n * q.withVolumeIntersection(\n * Rectangle.create(100, 100, 100, 100),\n * true\n * )\n * )\n * .hide(),\n * ]).execute();\n\n * // Select all items within the specified 100x100 region of the image\n * // including any elements that intersect with the region\n * await scene.items((op) => [\n * op\n * .where((q) =>\n * q.withVolumeIntersection(\n * Rectangle.create(100, 100, 100, 100),\n * false\n * )\n * )\n * .hide(),\n * ]).execute();\n * ```\n */\n public withVolumeIntersection(\n rectangle: Rectangle.Rectangle,\n exclusive?: boolean\n ): VolumeIntersectionQuery {\n return new VolumeIntersectionQuery(rectangle, this.inverted, exclusive);\n }\n}\n\nexport class NotQuery extends RootQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n}\n\nexport class AllQuery extends TerminalQuery {\n public constructor(inverted = false) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'all' };\n }\n}\n\nexport class SceneTreeRangeQuery extends TerminalQuery {\n public constructor(private range: SceneTreeRange, inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): SceneTreeRangeQueryExpression {\n return {\n type: 'scene-tree-range',\n range: this.range,\n };\n }\n}\n\nexport class MetadataQuery extends TerminalQuery {\n public constructor(\n private filter: string,\n private keys: string[],\n private exactMatch: boolean,\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): MetadataQueryExpression {\n return {\n type: 'metadata',\n filter: this.filter,\n keys: this.keys,\n exactMatch: this.exactMatch,\n };\n }\n}\n\nexport class AllSelectedQuery extends TerminalQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): AllSelectedQueryExpression {\n return {\n type: 'all-selected',\n };\n }\n}\n\nexport class AllVisibleQuery extends TerminalQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): AllVisibleQueryExpression {\n return {\n type: 'all-visible',\n };\n }\n}\n\nexport class PointQuery extends TerminalQuery {\n public constructor(private point: Point.Point, inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): PointQueryExpression {\n return {\n type: 'point',\n point: this.point,\n };\n }\n}\n\nexport class VolumeIntersectionQuery extends TerminalQuery {\n public constructor(\n private rectangle: Rectangle.Rectangle,\n inverted: boolean,\n private exclusive?: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): VolumeIntersectionQueryExpression {\n return {\n type: 'volume-intersection',\n rectangle: this.rectangle,\n exclusive: !!this.exclusive,\n };\n }\n}\n\nexport class BulkQuery extends TerminalQuery {\n public constructor(\n private ids: string[],\n private type: 'item-id' | 'supplied-id',\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return {\n type: 'or',\n expressions: this.ids.map((id) => {\n return {\n type: this.type,\n value: id,\n };\n }),\n };\n }\n}\n\nclass SingleQuery extends TerminalQuery implements BooleanQuery {\n public constructor(private query: QueryExpression, inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { ...this.query };\n }\n\n public and(): AndQuery {\n return new AndQuery([this.query], this.inverted);\n }\n\n public or(): OrQuery {\n return new OrQuery([this.query], this.inverted);\n }\n}\n\nexport class OrQuery extends TerminalQuery implements ItemQuery<OrQuery> {\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'or', expressions: [...this.expressions] };\n }\n\n public withItemId(id: string): OrQuery {\n return new OrQuery(\n [...this.expressions, { type: 'item-id', value: id }],\n this.inverted\n );\n }\n\n public withSuppliedId(id: string): OrQuery {\n return new OrQuery(\n [...this.expressions, { type: 'supplied-id', value: id }],\n this.inverted\n );\n }\n\n public or(): OrQuery {\n return this;\n }\n}\n\nexport class AndQuery extends TerminalQuery implements ItemQuery<AndQuery> {\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'and', expressions: [...this.expressions] };\n }\n\n public withItemId(id: string): AndQuery {\n return new AndQuery(\n [...this.expressions, { type: 'item-id', value: id }],\n this.inverted\n );\n }\n\n public withSuppliedId(id: string): AndQuery {\n return new AndQuery(\n [...this.expressions, { type: 'supplied-id', value: id }],\n this.inverted\n );\n }\n\n public and(): AndQuery {\n return this;\n }\n}\n\nexport class SceneItemQueryExecutor {\n public where(\n query: (q: RootQuery) => TerminalQuery\n ): SceneItemOperationsBuilder {\n const expression: QueryExpression = query(new RootQuery()).build();\n\n return new SceneItemOperationsBuilder(expression);\n }\n}\n"]}
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../../../../../src/lib/scenes/queries.ts"],"names":[],"mappings":"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","sourcesContent":["import { Point, Rectangle } from '@vertexvis/geometry';\n\nimport { SceneItemOperationsBuilder } from './scene';\n\ninterface AllQueryExpression {\n type: 'all';\n}\n\nexport interface SceneTreeRange {\n start: number;\n end: number;\n}\n\ninterface ItemQueryExpression {\n type: 'item-id' | 'supplied-id';\n value: string;\n}\n\nexport interface AndExpression {\n type: 'and';\n expressions: QueryExpression[];\n}\n\nexport interface OrExpression {\n type: 'or';\n expressions: QueryExpression[];\n}\n\ninterface SceneTreeRangeQueryExpression {\n type: 'scene-tree-range';\n range: SceneTreeRange;\n}\n\ninterface NotQueryExpression {\n type: 'not';\n query: QueryExpression;\n}\n\ninterface MetadataQueryExpression {\n type: 'metadata';\n filter: string;\n keys: string[];\n exactMatch: boolean;\n removeHiddenItems?: boolean;\n}\n\ninterface AllSelectedQueryExpression {\n type: 'all-selected';\n}\n\ninterface AllVisibleQueryExpression {\n type: 'all-visible';\n}\n\ninterface PointQueryExpression {\n type: 'point';\n point: Point.Point;\n}\n\ninterface VolumeIntersectionQueryExpression {\n type: 'volume-intersection';\n rectangle: Rectangle.Rectangle;\n exclusive: boolean;\n}\n\n/**\n * Represents the sum of all possible types of expressions.\n */\nexport type QueryExpression =\n | AllQueryExpression\n | ItemQueryExpression\n | AndExpression\n | OrExpression\n | SceneTreeRangeQueryExpression\n | PointQueryExpression\n | VolumeIntersectionQueryExpression\n | MetadataQueryExpression\n | AllSelectedQueryExpression\n | AllVisibleQueryExpression\n | NotQueryExpression;\n\n/**\n * An interface that represents a query is \"complete\" and can be turned into an\n * expression.\n */\nabstract class TerminalQuery {\n protected inverted: boolean;\n public constructor(inverted: boolean) {\n this.inverted = inverted;\n }\n\n public build(): QueryExpression {\n if (this.inverted) {\n return {\n type: 'not',\n query: this.queryExpressionBuilder(),\n };\n } else {\n return this.queryExpressionBuilder();\n }\n }\n\n public abstract queryExpressionBuilder(): QueryExpression;\n}\n\ninterface ItemQuery<N> {\n withItemId(id: string): N;\n\n withSuppliedId(id: string): N;\n}\n\ninterface BooleanQuery {\n and(): AndQuery;\n or(): OrQuery;\n}\n\nexport class RootQuery implements ItemQuery<SingleQuery> {\n public constructor(private inverted: boolean = false) {}\n\n /**\n * Specifies that the operation should be performed on all items in the scene.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Deselect all items in the scene\n * await scene.items((op) => [op.where((q) => q.all()).deselect()]).execute();\n * ```\n */\n public all(): AllQuery {\n return new AllQuery();\n }\n\n /**\n * Specifies that the operation should be performed on all items that do not match any following queries.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items that are not selected\n * await scene.items((op) => [op.where((q) => q.not().withSelected()).hide()]).execute();\n * ```\n */\n public not(): RootQuery {\n return new NotQuery(!this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching any one of the provided IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid-1` ID and the `item-uuid-2` ID\n * await scene.items((op) => [\n * op.where((q) => q.withItemIds(['item-uuid-1', 'item-uuid-2'])).hide(),\n * ]).execute();\n * ```\n */\n public withItemIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'item-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching any one of the provided custom supplied IDs.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-supplied-id-1` supplied ID\n * // and the `item-supplied-id-2` supplied ID\n * await scene.items((op) => [\n * op\n * .where((q) => q.withItemIds(['item-supplied-id-1', 'item-supplied-id-2']))\n * .hide(),\n * ]).execute();\n * ```\n */\n public withSuppliedIds(ids: string[]): BulkQuery {\n return new BulkQuery(ids, 'supplied-id', this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching the provided ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-uuid` ID\n * await scene.items((op) => [\n * op.where((q) => q.withItemId('item-uuid')).hide(),\n * ]).execute();\n * ```\n */\n public withItemId(id: string): SingleQuery {\n return new SingleQuery({ type: 'item-id', value: id }, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item matching the provided custom supplied ID.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide the item with the `item-supplied-id` supplied ID\n * await scene.items((op) => [\n * op.where((q) => q.withSuppliedId('item-supplied-id')).hide(),\n * ]).execute();\n * ```\n */\n public withSuppliedId(id: string): SingleQuery {\n return new SingleQuery({ type: 'supplied-id', value: id }, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on a range within the `<vertex-scene-tree>` component.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items from the 2nd row to the 5th row of the scene-tree\n * await scene.items((op) => [\n * op\n * .where((q) =>\n * q.withSceneTreeRange({\n * start: 2,\n * end: 5,\n * })\n * )\n * .hide(),\n * ]).execute();\n * ```\n */\n public withSceneTreeRange(range: SceneTreeRange): SceneTreeRangeQuery {\n return new SceneTreeRangeQuery(range, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that has a metadata value matching the\n * filter provided for any of the keys specified. Can optionally be set to perform an exactMatch,\n * which will require that the filter matches the value exactly.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items where the `PART_NAME_KEY` includes a value of `PartName`\n * await scene.items((op) => [\n * op.where((q) => q.withMetadata('PartName', ['PART_NAME_KEY'])).hide(),\n * ]).execute();\n *\n * // Hide all items where the `PART_NAME_KEY` has exactly a value of `PartName`\n * await scene.items((op) => [\n * op.where((q) => q.withMetadata('PartName', ['PART_NAME_KEY'], true)).hide(),\n * ]).execute();\n * ```\n */\n public withMetadata(\n filter: string,\n keys: string[],\n exactMatch: boolean,\n removeHiddenItems?: boolean\n ): MetadataQuery {\n return new MetadataQuery(\n filter,\n keys,\n exactMatch,\n this.inverted,\n removeHiddenItems\n );\n }\n\n /**\n * Specifies that the operation should be performed on any item that has been selected.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Hide all items that are selected\n * await scene.items((op) => [op.where((q) => q.withSelected()).hide()]).execute();\n * ```\n */\n public withSelected(): AllSelectedQuery {\n return new AllSelectedQuery(this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item that is visible.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select all items that are visible\n * await scene.items((op) => [op.where((q) => q.withVisible()).select()]).execute();\n * ```\n */\n public withVisible(): AllVisibleQuery {\n return new AllVisibleQuery(this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on any item present at the provided `point` in the image.\n * This query operates on the item found at that `point` similar to using `withItemId` in combination with\n * `raycaster.hitItems`, which can be useful if the additional metadata from the `raycaster.hitItems`\n * method is not needed to eliminate a network request.\n *\n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n *\n * // Select the item present at the [100, 100] coordinate of the image\n * await scene.items((op) => [\n * op.where((q) => q.withPoint(Point.create(100, 100))).select(),\n * ]).execute();\n * ```\n */\n public withPoint(point: Point.Point): PointQuery {\n return new PointQuery(point, this.inverted);\n }\n\n /**\n * Specifies that the operation should be performed on items within the specified `rectangle` boundary \n * within the Viewer. The `exclusive` flag here determines whether items that intersect with the `rectangle`, \n * but are not contained should be included in the result.\n * \n * @example\n * ```typescript\n * const viewer = document.querySelector('vertex-viewer');\n * const scene = await viewer.scene();\n\n * // Select all items within the specified 100x100 region of the image\n * // excluding any elements that are not fully contained by the region\n * await scene.items((op) => [\n * op\n * .where((q) =>\n * q.withVolumeIntersection(\n * Rectangle.create(100, 100, 100, 100),\n * true\n * )\n * )\n * .hide(),\n * ]).execute();\n\n * // Select all items within the specified 100x100 region of the image\n * // including any elements that intersect with the region\n * await scene.items((op) => [\n * op\n * .where((q) =>\n * q.withVolumeIntersection(\n * Rectangle.create(100, 100, 100, 100),\n * false\n * )\n * )\n * .hide(),\n * ]).execute();\n * ```\n */\n public withVolumeIntersection(\n rectangle: Rectangle.Rectangle,\n exclusive?: boolean\n ): VolumeIntersectionQuery {\n return new VolumeIntersectionQuery(rectangle, this.inverted, exclusive);\n }\n}\n\nexport class NotQuery extends RootQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n}\n\nexport class AllQuery extends TerminalQuery {\n public constructor(inverted = false) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'all' };\n }\n}\n\nexport class SceneTreeRangeQuery extends TerminalQuery {\n public constructor(private range: SceneTreeRange, inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): SceneTreeRangeQueryExpression {\n return {\n type: 'scene-tree-range',\n range: this.range,\n };\n }\n}\n\nexport class MetadataQuery extends TerminalQuery {\n public constructor(\n private filter: string,\n private keys: string[],\n private exactMatch: boolean,\n inverted: boolean,\n private removeHiddenItems?: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): MetadataQueryExpression {\n return {\n type: 'metadata',\n filter: this.filter,\n keys: this.keys,\n exactMatch: this.exactMatch,\n removeHiddenItems: this.removeHiddenItems,\n };\n }\n}\n\nexport class AllSelectedQuery extends TerminalQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): AllSelectedQueryExpression {\n return {\n type: 'all-selected',\n };\n }\n}\n\nexport class AllVisibleQuery extends TerminalQuery {\n public constructor(inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): AllVisibleQueryExpression {\n return {\n type: 'all-visible',\n };\n }\n}\n\nexport class PointQuery extends TerminalQuery {\n public constructor(private point: Point.Point, inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): PointQueryExpression {\n return {\n type: 'point',\n point: this.point,\n };\n }\n}\n\nexport class VolumeIntersectionQuery extends TerminalQuery {\n public constructor(\n private rectangle: Rectangle.Rectangle,\n inverted: boolean,\n private exclusive?: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): VolumeIntersectionQueryExpression {\n return {\n type: 'volume-intersection',\n rectangle: this.rectangle,\n exclusive: !!this.exclusive,\n };\n }\n}\n\nexport class BulkQuery extends TerminalQuery {\n public constructor(\n private ids: string[],\n private type: 'item-id' | 'supplied-id',\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return {\n type: 'or',\n expressions: this.ids.map((id) => {\n return {\n type: this.type,\n value: id,\n };\n }),\n };\n }\n}\n\nclass SingleQuery extends TerminalQuery implements BooleanQuery {\n public constructor(private query: QueryExpression, inverted: boolean) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { ...this.query };\n }\n\n public and(): AndQuery {\n return new AndQuery([this.query], this.inverted);\n }\n\n public or(): OrQuery {\n return new OrQuery([this.query], this.inverted);\n }\n}\n\nexport class OrQuery extends TerminalQuery implements ItemQuery<OrQuery> {\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'or', expressions: [...this.expressions] };\n }\n\n public withItemId(id: string): OrQuery {\n return new OrQuery(\n [...this.expressions, { type: 'item-id', value: id }],\n this.inverted\n );\n }\n\n public withSuppliedId(id: string): OrQuery {\n return new OrQuery(\n [...this.expressions, { type: 'supplied-id', value: id }],\n this.inverted\n );\n }\n\n public or(): OrQuery {\n return this;\n }\n}\n\nexport class AndQuery extends TerminalQuery implements ItemQuery<AndQuery> {\n public constructor(\n private expressions: QueryExpression[],\n inverted: boolean\n ) {\n super(inverted);\n }\n\n public queryExpressionBuilder(): QueryExpression {\n return { type: 'and', expressions: [...this.expressions] };\n }\n\n public withItemId(id: string): AndQuery {\n return new AndQuery(\n [...this.expressions, { type: 'item-id', value: id }],\n this.inverted\n );\n }\n\n public withSuppliedId(id: string): AndQuery {\n return new AndQuery(\n [...this.expressions, { type: 'supplied-id', value: id }],\n this.inverted\n );\n }\n\n public and(): AndQuery {\n return this;\n }\n}\n\nexport class SceneItemQueryExecutor {\n public where(\n query: (q: RootQuery) => TerminalQuery\n ): SceneItemOperationsBuilder {\n const expression: QueryExpression = query(new RootQuery()).build();\n\n return new SceneItemOperationsBuilder(expression);\n }\n}\n"]}
@@ -1106,6 +1106,7 @@ var global = Function('return this')();
1106
1106
 
1107
1107
 
1108
1108
  goog.exportSymbol('proto.vertexvis.protobuf.scenetree.v1alpha1.ColumnKey', null, global);
1109
+ goog.exportSymbol('proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange', null, global);
1109
1110
  goog.exportSymbol('proto.vertexvis.protobuf.scenetree.v1alpha1.KeepAlive', null, global);
1110
1111
  goog.exportSymbol('proto.vertexvis.protobuf.scenetree.v1alpha1.ListChange', null, global);
1111
1112
  goog.exportSymbol('proto.vertexvis.protobuf.scenetree.v1alpha1.Node', null, global);
@@ -2428,6 +2429,148 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.KeepAlive.serializeBinaryToWriter =
2428
2429
 
2429
2430
 
2430
2431
 
2432
+ /**
2433
+ * Generated by JsPbCodeGenerator.
2434
+ * @param {Array=} opt_data Optional initial data array, typically from a
2435
+ * server response, or constructed directly in Javascript. The array is used
2436
+ * in place and becomes part of the constructed object. It is not cloned.
2437
+ * If no data is provided, the constructed object will be empty, but still
2438
+ * valid.
2439
+ * @extends {jspb.Message}
2440
+ * @constructor
2441
+ */
2442
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange = function(opt_data) {
2443
+ googleProtobuf.Message.initialize(this, opt_data, 0, -1, null, null);
2444
+ };
2445
+ goog.inherits(proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange, googleProtobuf.Message);
2446
+ if (goog.DEBUG && !COMPILED) {
2447
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.displayName = 'proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange';
2448
+ }
2449
+
2450
+
2451
+ if (googleProtobuf.Message.GENERATE_TO_OBJECT) {
2452
+ /**
2453
+ * Creates an object representation of this proto suitable for use in Soy templates.
2454
+ * Field names that are reserved in JavaScript and will be renamed to pb_name.
2455
+ * To access a reserved field use, foo.pb_<name>, eg, foo.pb_default.
2456
+ * For the list of reserved names please see:
2457
+ * com.google.apps.jspb.JsClassTemplate.JS_RESERVED_WORDS.
2458
+ * @param {boolean=} opt_includeInstance Whether to include the JSPB instance
2459
+ * for transitional soy proto support: http://goto/soy-param-migration
2460
+ * @return {!Object}
2461
+ */
2462
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.prototype.toObject = function(opt_includeInstance) {
2463
+ return proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.toObject(opt_includeInstance, this);
2464
+ };
2465
+
2466
+
2467
+ /**
2468
+ * Static version of the {@see toObject} method.
2469
+ * @param {boolean|undefined} includeInstance Whether to include the JSPB
2470
+ * instance for transitional soy proto support:
2471
+ * http://goto/soy-param-migration
2472
+ * @param {!proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange} msg The msg instance to transform.
2473
+ * @return {!Object}
2474
+ * @suppress {unusedLocalVariables} f is only used for nested messages
2475
+ */
2476
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.toObject = function(includeInstance, msg) {
2477
+ var obj = {
2478
+ numberOfResults: googleProtobuf.Message.getFieldWithDefault(msg, 1, 0)
2479
+ };
2480
+
2481
+ if (includeInstance) {
2482
+ obj.$jspbMessageInstance = msg;
2483
+ }
2484
+ return obj;
2485
+ };
2486
+ }
2487
+
2488
+
2489
+ /**
2490
+ * Deserializes binary data (in protobuf wire format).
2491
+ * @param {jspb.ByteSource} bytes The bytes to deserialize.
2492
+ * @return {!proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange}
2493
+ */
2494
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.deserializeBinary = function(bytes) {
2495
+ var reader = new googleProtobuf.BinaryReader(bytes);
2496
+ var msg = new proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange;
2497
+ return proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.deserializeBinaryFromReader(msg, reader);
2498
+ };
2499
+
2500
+
2501
+ /**
2502
+ * Deserializes binary data (in protobuf wire format) from the
2503
+ * given reader into the given message object.
2504
+ * @param {!proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange} msg The message object to deserialize into.
2505
+ * @param {!jspb.BinaryReader} reader The BinaryReader to use.
2506
+ * @return {!proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange}
2507
+ */
2508
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.deserializeBinaryFromReader = function(msg, reader) {
2509
+ while (reader.nextField()) {
2510
+ if (reader.isEndGroup()) {
2511
+ break;
2512
+ }
2513
+ var field = reader.getFieldNumber();
2514
+ switch (field) {
2515
+ case 1:
2516
+ var value = /** @type {number} */ (reader.readInt32());
2517
+ msg.setNumberOfResults(value);
2518
+ break;
2519
+ default:
2520
+ reader.skipField();
2521
+ break;
2522
+ }
2523
+ }
2524
+ return msg;
2525
+ };
2526
+
2527
+
2528
+ /**
2529
+ * Serializes the message to binary data (in protobuf wire format).
2530
+ * @return {!Uint8Array}
2531
+ */
2532
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.prototype.serializeBinary = function() {
2533
+ var writer = new googleProtobuf.BinaryWriter();
2534
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.serializeBinaryToWriter(this, writer);
2535
+ return writer.getResultBuffer();
2536
+ };
2537
+
2538
+
2539
+ /**
2540
+ * Serializes the given message to binary data (in protobuf wire
2541
+ * format), writing to the given BinaryWriter.
2542
+ * @param {!proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange} message
2543
+ * @param {!jspb.BinaryWriter} writer
2544
+ * @suppress {unusedLocalVariables} f is only used for nested messages
2545
+ */
2546
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.serializeBinaryToWriter = function(message, writer) {
2547
+ var f = undefined;
2548
+ f = message.getNumberOfResults();
2549
+ if (f !== 0) {
2550
+ writer.writeInt32(
2551
+ 1,
2552
+ f
2553
+ );
2554
+ }
2555
+ };
2556
+
2557
+
2558
+ /**
2559
+ * optional int32 number_of_results = 1;
2560
+ * @return {number}
2561
+ */
2562
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.prototype.getNumberOfResults = function() {
2563
+ return /** @type {number} */ (googleProtobuf.Message.getFieldWithDefault(this, 1, 0));
2564
+ };
2565
+
2566
+
2567
+ /** @param {number} value */
2568
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.prototype.setNumberOfResults = function(value) {
2569
+ googleProtobuf.Message.setProto3IntField(this, 1, value);
2570
+ };
2571
+
2572
+
2573
+
2431
2574
  /**
2432
2575
  * Generated by JsPbCodeGenerator.
2433
2576
  * @param {Array=} opt_data Optional initial data array, typically from a
@@ -2453,7 +2596,7 @@ if (goog.DEBUG && !COMPILED) {
2453
2596
  * @private {!Array<!Array<number>>}
2454
2597
  * @const
2455
2598
  */
2456
- proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.oneofGroups_ = [[1,2,3]];
2599
+ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.oneofGroups_ = [[1,2,3,4]];
2457
2600
 
2458
2601
  /**
2459
2602
  * @enum {number}
@@ -2462,7 +2605,8 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.SealedValueCase = {
2462
2605
  SEALED_VALUE_NOT_SET: 0,
2463
2606
  LIST_CHANGE: 1,
2464
2607
  RANGES: 2,
2465
- KEEP_ALIVE: 3
2608
+ KEEP_ALIVE: 3,
2609
+ FILTER_CHANGE: 4
2466
2610
  };
2467
2611
 
2468
2612
  /**
@@ -2503,7 +2647,8 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.toObject = function(i
2503
2647
  var f, obj = {
2504
2648
  listChange: (f = msg.getListChange()) && proto.vertexvis.protobuf.scenetree.v1alpha1.ListChange.toObject(includeInstance, f),
2505
2649
  ranges: (f = msg.getRanges()) && proto.vertexvis.protobuf.scenetree.v1alpha1.StateChange.toObject(includeInstance, f),
2506
- keepAlive: (f = msg.getKeepAlive()) && proto.vertexvis.protobuf.scenetree.v1alpha1.KeepAlive.toObject(includeInstance, f)
2650
+ keepAlive: (f = msg.getKeepAlive()) && proto.vertexvis.protobuf.scenetree.v1alpha1.KeepAlive.toObject(includeInstance, f),
2651
+ filterChange: (f = msg.getFilterChange()) && proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.toObject(includeInstance, f)
2507
2652
  };
2508
2653
 
2509
2654
  if (includeInstance) {
@@ -2555,6 +2700,11 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.deserializeBinaryFrom
2555
2700
  reader.readMessage(value,proto.vertexvis.protobuf.scenetree.v1alpha1.KeepAlive.deserializeBinaryFromReader);
2556
2701
  msg.setKeepAlive(value);
2557
2702
  break;
2703
+ case 4:
2704
+ var value = new proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange;
2705
+ reader.readMessage(value,proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.deserializeBinaryFromReader);
2706
+ msg.setFilterChange(value);
2707
+ break;
2558
2708
  default:
2559
2709
  reader.skipField();
2560
2710
  break;
@@ -2608,6 +2758,14 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.serializeBinaryToWrit
2608
2758
  proto.vertexvis.protobuf.scenetree.v1alpha1.KeepAlive.serializeBinaryToWriter
2609
2759
  );
2610
2760
  }
2761
+ f = message.getFilterChange();
2762
+ if (f != null) {
2763
+ writer.writeMessage(
2764
+ 4,
2765
+ f,
2766
+ proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange.serializeBinaryToWriter
2767
+ );
2768
+ }
2611
2769
  };
2612
2770
 
2613
2771
 
@@ -2701,6 +2859,36 @@ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.prototype.hasKeepAliv
2701
2859
  };
2702
2860
 
2703
2861
 
2862
+ /**
2863
+ * optional FilterChange filter_change = 4;
2864
+ * @return {?proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange}
2865
+ */
2866
+ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.prototype.getFilterChange = function() {
2867
+ return /** @type{?proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange} */ (
2868
+ googleProtobuf.Message.getWrapperField(this, proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange, 4));
2869
+ };
2870
+
2871
+
2872
+ /** @param {?proto.vertexvis.protobuf.scenetree.v1alpha1.FilterChange|undefined} value */
2873
+ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.prototype.setFilterChange = function(value) {
2874
+ googleProtobuf.Message.setOneofWrapperField(this, 4, proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.oneofGroups_[0], value);
2875
+ };
2876
+
2877
+
2878
+ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.prototype.clearFilterChange = function() {
2879
+ this.setFilterChange(undefined);
2880
+ };
2881
+
2882
+
2883
+ /**
2884
+ * Returns whether this field is set.
2885
+ * @return {!boolean}
2886
+ */
2887
+ proto.vertexvis.protobuf.scenetree.v1alpha1.TreeChangeType.prototype.hasFilterChange = function() {
2888
+ return googleProtobuf.Message.getField(this, 4) != null;
2889
+ };
2890
+
2891
+
2704
2892
 
2705
2893
  /**
2706
2894
  * Generated by JsPbCodeGenerator.
@@ -7260,6 +7448,7 @@ class SceneTreeController {
7260
7448
  req.setFilter(term);
7261
7449
  req.setFullTree((_a = options.includeCollapsed) !== null && _a !== void 0 ? _a : true);
7262
7450
  req.setExactMatch(!!options.exactMatch);
7451
+ req.setRemoveHiddenItems(!!options.removeHiddenItems);
7263
7452
  if (options.columns)
7264
7453
  req.setColumnsKeysList(options.columns);
7265
7454
  this.pendingFilterGrpcRes = this.client.filter(req, metadata, handler);
@@ -7382,6 +7571,10 @@ class SceneTreeController {
7382
7571
  }
7383
7572
  this.startIdleReconnectTimer();
7384
7573
  const { change } = msg.toObject();
7574
+ // Update the number of filtered results if changed
7575
+ if ((change === null || change === void 0 ? void 0 : change.filterChange) != null) {
7576
+ this.updateState(Object.assign(Object.assign({}, this.state), { totalFilteredRows: change.filterChange.numberOfResults }));
7577
+ }
7385
7578
  if ((change === null || change === void 0 ? void 0 : change.listChange) != null) {
7386
7579
  this.log('Received list change', change.listChange.start);
7387
7580
  this.invalidateAfterOffset(change.listChange.start);