@cognite/reveal 4.7.1 → 4.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@
4
4
  import * as THREE from 'three';
5
5
  import { CogniteClient, Metadata } from '@cognite/sdk';
6
6
  import { Image360Collection, Image360Entity, Image360, IconsOptions, Image360RevisionEntity, Image360AnnotationIntersection, Image360AnnotationFilterOptions } from '../../../360-images';
7
+ import { Image360DataModelIdentifier } from '../../../data-providers';
7
8
  import { BeforeSceneRenderedDelegate, EventTrigger, InputHandler, SceneHandler } from '../../../utilities';
8
9
  import { ProxyCameraManager } from '../../../camera-manager';
9
10
  export declare class Image360ApiHelper {
@@ -23,7 +24,7 @@ export declare class Image360ApiHelper {
23
24
  get needsRedraw(): boolean;
24
25
  resetRedraw(): void;
25
26
  private getNormalizedOffset;
26
- add360ImageSet(eventFilter: Metadata, collectionTransform: THREE.Matrix4, preMultipliedRotation: boolean, annotationOptions?: Image360AnnotationFilterOptions): Promise<Image360Collection>;
27
+ add360ImageSet(collectionIdentifier: Metadata | Image360DataModelIdentifier, collectionTransform: THREE.Matrix4, preMultipliedRotation: boolean, annotationOptions?: Image360AnnotationFilterOptions): Promise<Image360Collection>;
27
28
  getImageCollections(): Image360Collection[];
28
29
  remove360Images(entities: Image360[]): Promise<void>;
29
30
  remove360ImageCollection(collection: Image360Collection): void;
@@ -9,6 +9,7 @@ import { AddImage360Options, AddModelOptions, Cognite3DViewerOptions, Intersecti
9
9
  import { CogniteModel } from '../types';
10
10
  import { ViewerState } from '../../utilities/ViewStateHelper';
11
11
  import { CameraManager, CameraChangeDelegate, CameraStopDelegate } from '../../../../camera-manager';
12
+ import { Image360DataModelIdentifier } from '../../../../data-providers';
12
13
  import { SupportedModelTypes } from '../../../../model-base';
13
14
  import { Image360Collection, Image360, Image360Revision, Image360AnnotationIntersection } from '../../../../360-images';
14
15
  /**
@@ -273,6 +274,12 @@ export declare class Cognite3DViewer {
273
274
  */
274
275
  addPointCloudModel(options: AddModelOptions): Promise<CognitePointCloudModel>;
275
276
  private addPointCloudModelWithSequencer;
277
+ /**
278
+ * Adds a set of 360 images to the scene from the /datamodels API in Cognite Data Fusion.
279
+ * @param datasource The data data source which holds the references to the 360 image sets.
280
+ * @param dataModelIdentifier The search parameters to apply when querying Cognite Datamodels that contains the 360 images.
281
+ */
282
+ add360ImageSet(datasource: 'datamodels', dataModelIdentifier: Image360DataModelIdentifier): Promise<Image360Collection>;
276
283
  /**
277
284
  * Adds a set of 360 images to the scene from the /events API in Cognite Data Fusion.
278
285
  * @param datasource The CDF data source which holds the references to the 360 image sets.
@@ -4,7 +4,10 @@
4
4
  export { CdfModelDataProvider } from './src/model-data-providers/CdfModelDataProvider';
5
5
  export { CdfModelIdentifier } from './src/model-identifiers/CdfModelIdentifier';
6
6
  export { CdfModelMetadataProvider } from './src/metadata-providers/CdfModelMetadataProvider';
7
- export { Cdf360ImageEventProvider } from './src/image-360-data-providers/Cdf360ImageEventProvider';
7
+ export { Cdf360ImageProvider } from './src/image-360-data-providers/Cdf360ImageProvider';
8
+ export { Cdf360EventDescriptorProvider } from './src/image-360-data-providers/descriptor-providers/events/Cdf360EventDescriptorProvider';
9
+ export { Cdf360DataModelsDescriptorProvider, Image360DataModelIdentifier } from './src/image-360-data-providers/descriptor-providers/datamodels/Cdf360DataModelsDescriptorProvider';
10
+ export { Cdf360CombinedDescriptorProvider } from './src/image-360-data-providers/descriptor-providers/Cdf360CombinedDescriptorProvider';
8
11
  export { LocalModelDataProvider } from './src/model-data-providers/LocalModelDataProvider';
9
12
  export { LocalModelIdentifier } from './src/model-identifiers/LocalModelIdentifier';
10
13
  export { LocalModelMetadataProvider } from './src/metadata-providers/LocalModelMetadataProvider';
@@ -0,0 +1,11 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { CogniteClient } from '@cognite/sdk';
5
+ import { Query, QueryNextCursors, QueryResult } from './types';
6
+ export declare class DataModelsSdk {
7
+ private readonly _sdk;
8
+ private readonly _queryEndpoint;
9
+ constructor(sdk: CogniteClient);
10
+ queryNodesAndEdges<const T extends Query>(query: T, nextCursor?: QueryNextCursors<T>): Promise<QueryResult<T>>;
11
+ }
@@ -1,29 +1,25 @@
1
1
  /*!
2
2
  * Copyright 2022 Cognite AS
3
3
  */
4
- import { AnnotationModel, CogniteClient, IdEither, Metadata, CogniteInternalId } from '@cognite/sdk';
5
- import { Historical360ImageSet, Image360AnnotationFilterDelegate, Image360Face, Image360FileDescriptor, ImageAssetLinkAnnotationInfo } from '../types';
4
+ import { AnnotationModel, CogniteClient, IdEither, CogniteInternalId } from '@cognite/sdk';
5
+ import { Historical360ImageSet, Image360AnnotationFilterDelegate, Image360DescriptorProvider, Image360Face, Image360FileDescriptor, ImageAssetLinkAnnotationInfo } from '../types';
6
6
  import { Image360Provider } from '../Image360Provider';
7
- export declare class Cdf360ImageEventProvider implements Image360Provider<Metadata> {
7
+ export declare class Cdf360ImageProvider<T> implements Image360Provider<T> {
8
8
  private readonly _client;
9
- constructor(client: CogniteClient);
10
- get360ImageDescriptors(metadataFilter: Metadata, preMultipliedRotation: boolean): Promise<Historical360ImageSet[]>;
9
+ private readonly _descriptorProvider;
10
+ constructor(client: CogniteClient, descriptorProvider: Image360DescriptorProvider<T>);
11
+ get360ImageDescriptors(metadataFilter: T, preMultipliedRotation: boolean): Promise<Historical360ImageSet[]>;
11
12
  get360ImageAnnotations(descriptors: Image360FileDescriptor[]): Promise<AnnotationModel[]>;
12
13
  getFilesByAssetRef(assetRef: IdEither): Promise<CogniteInternalId[]>;
13
14
  get360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
14
15
  getLowResolution360ImageFiles(image360FaceDescriptors: Image360FileDescriptor[], abortSignal?: AbortSignal): Promise<Image360Face[]>;
15
16
  private getFileIds;
16
17
  private createFaces;
17
- private mergeDescriptors;
18
- private listEvents;
19
- private listFiles;
20
- private sortFileInfoSetByNewest;
21
18
  private getFileBuffers;
22
19
  getIconBuffers(fileIds: {
23
20
  id: number;
24
21
  }[], abortSignal?: AbortSignal): Promise<ArrayBuffer[]>;
25
22
  private getDownloadUrls;
26
- private parseEventMetadata;
27
23
  get360ImageAssets(image360FileDescriptors: Image360FileDescriptor[], annotationFilter: Image360AnnotationFilterDelegate): Promise<ImageAssetLinkAnnotationInfo[]>;
28
24
  private listFileAnnotations;
29
25
  }
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { Metadata } from '@cognite/sdk';
5
+ import { Historical360ImageSet, Image360DescriptorProvider } from '../../types';
6
+ import { Cdf360DataModelsDescriptorProvider, Image360DataModelIdentifier } from './datamodels/Cdf360DataModelsDescriptorProvider';
7
+ import { Cdf360EventDescriptorProvider } from './events/Cdf360EventDescriptorProvider';
8
+ export declare class Cdf360CombinedDescriptorProvider implements Image360DescriptorProvider<Metadata | Image360DataModelIdentifier> {
9
+ private readonly _eventProvider;
10
+ private readonly _fdmProvider;
11
+ static isFdmIdentifier(metadataFilter: Metadata | Image360DataModelIdentifier): metadataFilter is Image360DataModelIdentifier;
12
+ constructor(fdmProvider: Cdf360DataModelsDescriptorProvider, eventProvider: Cdf360EventDescriptorProvider);
13
+ get360ImageDescriptors(metadataFilter: Metadata | Image360DataModelIdentifier, preMultipliedRotation: boolean): Promise<Historical360ImageSet[]>;
14
+ }
@@ -0,0 +1,23 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { CogniteClient } from '@cognite/sdk';
5
+ import { Historical360ImageSet, Image360DescriptorProvider } from '../../../types';
6
+ /**
7
+ * An identifier uniquely determining an instance of a Cognite Data Model
8
+ */
9
+ export type Image360DataModelIdentifier = {
10
+ space: string;
11
+ image360CollectionExternalId: string;
12
+ };
13
+ export declare class Cdf360DataModelsDescriptorProvider implements Image360DescriptorProvider<Image360DataModelIdentifier> {
14
+ private readonly _dmsSdk;
15
+ private readonly _cogniteSdk;
16
+ constructor(sdk: CogniteClient);
17
+ get360ImageDescriptors(collectionIdentifier: Image360DataModelIdentifier, _: boolean): Promise<Historical360ImageSet[]>;
18
+ private queryCollection;
19
+ private getFileDescriptors;
20
+ private getHistorical360ImageSet;
21
+ private getImageRevision;
22
+ private getRevisionTransform;
23
+ }
@@ -0,0 +1,103 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ declare const Image360CollectionQuery: {
5
+ readonly with: {
6
+ readonly image_collection: {
7
+ readonly nodes: {
8
+ readonly filter: {
9
+ readonly and: readonly [{
10
+ readonly equals: {
11
+ readonly property: readonly ["node", "externalId"];
12
+ readonly value: {
13
+ readonly parameter: "collectionExternalId";
14
+ };
15
+ };
16
+ }, {
17
+ readonly equals: {
18
+ readonly property: readonly ["node", "space"];
19
+ readonly value: {
20
+ readonly parameter: "collectionSpace";
21
+ };
22
+ };
23
+ }];
24
+ };
25
+ };
26
+ readonly limit: 1;
27
+ };
28
+ readonly images: {
29
+ readonly nodes: {
30
+ readonly from: "image_collection";
31
+ readonly through: {
32
+ readonly view: {
33
+ readonly type: "view";
34
+ readonly space: "cdf_360_image_schema";
35
+ readonly externalId: "Image360";
36
+ readonly version: "v1";
37
+ };
38
+ readonly identifier: "collection360";
39
+ };
40
+ };
41
+ readonly limit: 10000;
42
+ };
43
+ readonly stations: {
44
+ readonly nodes: {
45
+ readonly from: "images";
46
+ readonly through: {
47
+ readonly view: {
48
+ readonly type: "view";
49
+ readonly space: "cdf_360_image_schema";
50
+ readonly externalId: "Image360";
51
+ readonly version: "v1";
52
+ };
53
+ readonly identifier: "station";
54
+ };
55
+ readonly direction: "outwards";
56
+ };
57
+ readonly limit: 10000;
58
+ };
59
+ };
60
+ readonly select: {
61
+ readonly image_collection: {
62
+ readonly sources: readonly [{
63
+ readonly source: {
64
+ readonly type: "view";
65
+ readonly space: "cdf_360_image_schema";
66
+ readonly externalId: "Image360Collection";
67
+ readonly version: "v1";
68
+ };
69
+ readonly properties: readonly ["label"];
70
+ }];
71
+ };
72
+ readonly images: {
73
+ readonly sources: readonly [{
74
+ readonly source: {
75
+ readonly type: "view";
76
+ readonly space: "cdf_360_image_schema";
77
+ readonly externalId: "Image360";
78
+ readonly version: "v1";
79
+ };
80
+ readonly properties: readonly ["translationX", "translationY", "translationZ", "eulerRotationX", "eulerRotationY", "eulerRotationZ", "scaleX", "scaleY", "scaleZ", "cubeMapFront", "cubeMapBack", "cubeMapLeft", "cubeMapRight", "cubeMapTop", "cubeMapBottom", "collection360", "station", "timeTaken", "label"];
81
+ }];
82
+ };
83
+ readonly stations: {
84
+ readonly sources: readonly [{
85
+ readonly source: {
86
+ readonly type: "view";
87
+ readonly space: "cdf_360_image_schema";
88
+ readonly externalId: "Station360";
89
+ readonly version: "v1";
90
+ };
91
+ readonly properties: readonly ["label"];
92
+ }];
93
+ };
94
+ };
95
+ };
96
+ export type Cdf360FdmQuery = typeof Image360CollectionQuery;
97
+ export declare function get360CollectionQuery(externalId: string, space: string): Cdf360FdmQuery & {
98
+ parameters: {
99
+ collectionExternalId: string;
100
+ collectionSpace: string;
101
+ };
102
+ };
103
+ export {};
@@ -0,0 +1,15 @@
1
+ /*!
2
+ * Copyright 2023 Cognite AS
3
+ */
4
+ import { CogniteClient, Metadata } from '@cognite/sdk';
5
+ import { Historical360ImageSet, Image360DescriptorProvider } from '../../../types';
6
+ export declare class Cdf360EventDescriptorProvider implements Image360DescriptorProvider<Metadata> {
7
+ private readonly _client;
8
+ constructor(client: CogniteClient);
9
+ get360ImageDescriptors(metadataFilter: Metadata, preMultipliedRotation: boolean): Promise<Historical360ImageSet[]>;
10
+ private mergeDescriptors;
11
+ private listEvents;
12
+ private listFiles;
13
+ private sortFileInfoSetByNewest;
14
+ private parseEventMetadata;
15
+ }
@@ -37,7 +37,7 @@ export type Historical360ImageSet = Image360EventDescriptor & {
37
37
  imageRevisions: Image360Descriptor[];
38
38
  };
39
39
  export type Image360Descriptor = {
40
- timestamp?: number;
40
+ timestamp?: number | string;
41
41
  faceDescriptors: Image360FileDescriptor[];
42
42
  };
43
43
  export type Image360EventDescriptor = {
@@ -74,3 +74,89 @@ export interface BlobOutputMetadata {
74
74
  format: File3dFormat | string;
75
75
  version: number;
76
76
  }
77
+ type InstanceType = 'node' | 'edge';
78
+ export type Item = {
79
+ instanceType: InstanceType;
80
+ } & InstanceIdentifier;
81
+ export type Source = {
82
+ type: 'view';
83
+ version: string;
84
+ } & InstanceIdentifier;
85
+ export type InstanceIdentifier = {
86
+ space: string;
87
+ externalId: string;
88
+ };
89
+ export type EdgeItem = {
90
+ startNode: InstanceIdentifier;
91
+ endNode: InstanceIdentifier;
92
+ };
93
+ export type Query = {
94
+ with: Record<string, ResultSetExpression>;
95
+ select: Record<string, QuerySelect>;
96
+ parameters?: Record<string, string | number>;
97
+ cursors?: Record<string, string>;
98
+ };
99
+ type QuerySelect = {
100
+ sources: readonly SourceProperties[];
101
+ };
102
+ type SourceProperties = {
103
+ source: TestSource;
104
+ properties: readonly string[];
105
+ };
106
+ type TestSource = {
107
+ type: 'view';
108
+ space: string;
109
+ externalId: string;
110
+ version: string;
111
+ };
112
+ export type ResultSetExpression = (NodeResultSetExpression | EdgeResultSetExpression) & {
113
+ limit?: number;
114
+ sort?: any[];
115
+ };
116
+ export type NodeResultSetExpression = {
117
+ nodes: {
118
+ filter?: any;
119
+ from?: any;
120
+ through?: any;
121
+ chainTo?: any;
122
+ };
123
+ };
124
+ export type EdgeResultSetExpression = {
125
+ edges: {
126
+ filter?: any;
127
+ from?: any;
128
+ nodeFilter?: any;
129
+ maxDistance?: number;
130
+ direction?: 'outwards' | 'inwards';
131
+ limitEach?: number;
132
+ };
133
+ };
134
+ type SelectKey<T extends Query> = keyof T['select'];
135
+ type Sources<T extends Query, K extends SelectKey<T>> = T['select'][K]['sources'][0];
136
+ type MainSource<T extends Query, K extends SelectKey<T>> = Sources<T, K>['source'];
137
+ type MainSourceProperties<T extends Query, K extends SelectKey<T>> = Sources<T, K>['properties'];
138
+ type ResultExpressionProperties<T extends Query, K extends SelectKey<T>> = {
139
+ [V in MainSource<T, K>['space']]: {
140
+ [Q in `${MainSource<T, K>['externalId']}/${MainSource<T, K>['version']}`]: {
141
+ [B in MainSourceProperties<T, K>[number]]: string | number | InstanceIdentifier;
142
+ };
143
+ };
144
+ };
145
+ type ResultExpression<T extends Query, K extends SelectKey<T>> = {
146
+ instanceType: 'node';
147
+ version: number;
148
+ space: string;
149
+ externalId: string;
150
+ createdTime: number;
151
+ lastUpdatedTime: number;
152
+ properties: ResultExpressionProperties<T, K>;
153
+ };
154
+ export type QueryNextCursors<T extends Query> = {
155
+ [K in SelectKey<T>]?: string | undefined;
156
+ };
157
+ export type QueryResult<T extends Query> = {
158
+ [K in SelectKey<T>]: ResultExpression<T, K>[];
159
+ } & {
160
+ nextCursor?: QueryNextCursors<T>;
161
+ };
162
+ export {};
@@ -1,9 +1,9 @@
1
1
  export declare enum PointAttributeName {
2
- POSITION_CARTESIAN = 0,
3
- COLOR_PACKED = 1,
4
- COLOR_FLOATS_1 = 2,
5
- COLOR_FLOATS_255 = 3,
6
- NORMAL_FLOATS = 4,
2
+ POSITION_CARTESIAN = 0,// float x, y, z;
3
+ COLOR_PACKED = 1,// byte r, g, b, a; I = [0,1]
4
+ COLOR_FLOATS_1 = 2,// float r, g, b; I = [0,1]
5
+ COLOR_FLOATS_255 = 3,// float r, g, b; I = [0,255]
6
+ NORMAL_FLOATS = 4,// float x, y, z;
7
7
  FILLER = 5,
8
8
  INTENSITY = 6,
9
9
  CLASSIFICATION = 7,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognite/reveal",
3
- "version": "4.7.1",
3
+ "version": "4.8.0",
4
4
  "description": "WebGL based 3D viewer for CAD and point clouds processed in Cognite Data Fusion.",
5
5
  "homepage": "https://github.com/cognitedata/reveal/tree/master/viewer",
6
6
  "repository": {
@@ -86,18 +86,18 @@
86
86
  "@types/glob": "8.1.0",
87
87
  "@types/jest": "29.5.10",
88
88
  "@types/jest-environment-puppeteer": "5.0.6",
89
- "@types/jest-image-snapshot": "6.2.3",
89
+ "@types/jest-image-snapshot": "6.3.0",
90
90
  "@types/jsdom": "21.1.6",
91
91
  "@types/lodash": "4.14.202",
92
92
  "@types/mixpanel-browser": "2.47.5",
93
- "@types/node": "18.18.13",
93
+ "@types/node": "18.19.1",
94
94
  "@types/random-seed": "0.3.5",
95
95
  "@types/skmeans": "0.11.7",
96
96
  "@types/stats": "0.16.30",
97
97
  "@types/three": "0.158.2",
98
98
  "@types/tween.js": "18.5.1",
99
- "@typescript-eslint/eslint-plugin": "6.11.0",
100
- "@typescript-eslint/parser": "6.11.0",
99
+ "@typescript-eslint/eslint-plugin": "6.12.0",
100
+ "@typescript-eslint/parser": "6.12.0",
101
101
  "concurrently": "8.2.2",
102
102
  "cross-env": "7.0.3",
103
103
  "dat.gui": "0.7.9",
@@ -117,11 +117,11 @@
117
117
  "jest-canvas-mock": "2.5.2",
118
118
  "jest-environment-jsdom": "29.7.0",
119
119
  "jest-extended": "4.0.2",
120
- "jest-image-snapshot": "6.2.0",
120
+ "jest-image-snapshot": "6.3.0",
121
121
  "jest-puppeteer": "9.0.1",
122
122
  "jsdom": "22.1.0",
123
123
  "moq.ts": "10.0.8",
124
- "nock": "13.3.8",
124
+ "nock": "13.4.0",
125
125
  "prettier": "3.1.0",
126
126
  "process": "0.11.10",
127
127
  "puppeteer": "21.5.2",
@@ -135,7 +135,7 @@
135
135
  "ts-jest": "29.1.1",
136
136
  "ts-loader": "9.5.1",
137
137
  "tsc-alias": "1.8.8",
138
- "typescript": "5.2.2",
138
+ "typescript": "5.3.2",
139
139
  "wasm-pack": "0.12.1",
140
140
  "webpack": "5.89.0",
141
141
  "webpack-cli": "5.1.4",