@cognite/reveal 4.28.7 → 4.29.0-dev.20260112

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.
@@ -20,7 +20,6 @@ export declare class CadManager {
20
20
  private _needsRedraw;
21
21
  private readonly _loadingStateChangedTrigger;
22
22
  private readonly _markNeedsRedrawBound;
23
- private readonly _materialsChangedListener;
24
23
  private readonly _sectorBufferTime;
25
24
  get materialManager(): CadMaterialManager;
26
25
  get budget(): CadModelBudget;
@@ -57,6 +56,5 @@ export declare class CadManager {
57
56
  */
58
57
  private setCacheSizeForModel;
59
58
  private markNeedsRedraw;
60
- private handleMaterialsChanged;
61
59
  private updateTreeIndexToSectorsMap;
62
60
  }
@@ -5,7 +5,7 @@ import { NodeAppearanceProvider, NodeAppearance, PrioritizedArea, type NodeTrans
5
5
  import { SectorScene, CadModelMetadata, RootSectorNode, WantedSector, ConsumedSector } from '../../../cad-parsers';
6
6
  import { SectorRepository } from '../../../sector-loader';
7
7
  import { ParsedGeometry } from '../../../sector-parser';
8
- import { CadMaterialManager, RenderMode } from '../../../rendering';
8
+ import { CadMaterialManager, type CadMaterial } from '../../../rendering';
9
9
  import { Group, Object3D, Plane, Matrix4, Object3DEventMap } from 'three';
10
10
  import { TreeIndexToSectorsMap } from '../utilities/TreeIndexToSectorsMap';
11
11
  import { ParsedMeshGeometry } from '../../../cad-parsers';
@@ -21,9 +21,9 @@ export declare class CadNode extends Object3D<Object3DEventMap & {
21
21
  private _geometryBatchingManager?;
22
22
  private readonly _sourceTransform;
23
23
  private readonly _customTransform;
24
- private readonly _setModelRenderLayers;
25
24
  private readonly _batchedGeometryMeshGroup;
26
25
  private readonly _styledTreeIndexSets;
26
+ private readonly _cadMaterial;
27
27
  private _isDisposed;
28
28
  private _needsRedraw;
29
29
  private readonly _meshManager;
@@ -32,6 +32,7 @@ export declare class CadNode extends Object3D<Object3DEventMap & {
32
32
  constructor(model: CadModelMetadata, materialManager: CadMaterialManager, sectorRepository: SectorRepository);
33
33
  get needsRedraw(): boolean;
34
34
  resetRedraw(): void;
35
+ get cadMaterial(): CadMaterial;
35
36
  get nodeTransformProvider(): NodeTransformProvider;
36
37
  get nodeAppearanceProvider(): NodeAppearanceProvider;
37
38
  get defaultNodeAppearance(): NodeAppearance;
@@ -42,9 +43,6 @@ export declare class CadNode extends Object3D<Object3DEventMap & {
42
43
  get cadModelIdentifier(): symbol;
43
44
  get sectorScene(): SectorScene;
44
45
  get rootSector(): RootSectorNode;
45
- get materialManager(): CadMaterialManager;
46
- set renderMode(mode: RenderMode);
47
- get renderMode(): RenderMode;
48
46
  get isDisposed(): boolean;
49
47
  loadSector(sector: WantedSector, abortSignal?: AbortSignal): Promise<ConsumedSector>;
50
48
  /**
@@ -2,6 +2,7 @@
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
4
  export { CdfModelDataProvider } from './src/model-data-providers/CdfModelDataProvider';
5
+ export { CachedModelDataProvider } from './src/model-data-providers/CachedModelDataProvider';
5
6
  export { CdfModelIdentifier } from './src/model-identifiers/CdfModelIdentifier';
6
7
  export { CdfModelMetadataProvider } from './src/metadata-providers/CdfModelMetadataProvider';
7
8
  export { Cdf360ImageAnnotationProvider } from './src/image-360-data-providers/Cdf360ImageAnnotationProvider';
@@ -0,0 +1,31 @@
1
+ /*!
2
+ * Copyright 2025 Cognite AS
3
+ */
4
+ import { ModelDataProvider } from '../ModelDataProvider';
5
+ import { DataFileCacheManager, CacheConfig } from '../../../utilities';
6
+ /**
7
+ * Wraps a ModelDataProvider with caching capabilities using the Cache API.
8
+ *
9
+ * This provider intercepts getBinaryFile and getJsonFile calls and caches
10
+ * the responses for faster subsequent access.
11
+ */
12
+ export declare class CachedModelDataProvider implements ModelDataProvider {
13
+ private readonly baseProvider;
14
+ private readonly cacheManager;
15
+ constructor(baseProvider: ModelDataProvider, cacheConfig?: CacheConfig, cacheStorage?: CacheStorage);
16
+ getBinaryFile(baseUrl: string, fileName: string, abortSignal?: AbortSignal): Promise<ArrayBuffer>;
17
+ getJsonFile(baseUrl: string, fileName: string): Promise<unknown>;
18
+ private fetchWithCache;
19
+ /**
20
+ * Get the underlying cache manager for direct cache operations
21
+ */
22
+ getCacheManager(): DataFileCacheManager;
23
+ /**
24
+ * Check if a file is cached
25
+ */
26
+ isCached(baseUrl: string, fileName: string): Promise<boolean>;
27
+ /**
28
+ * Clear all cached data
29
+ */
30
+ clearCache(): Promise<void>;
31
+ }
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { PointCloudManager } from './PointCloudManager';
5
5
  import * as THREE from 'three';
6
- import { DMDataSourceType, ModelDataProvider, ModelMetadataProvider, PointCloudStylableObjectProvider } from '../../data-providers';
6
+ import { DMDataSourceType, ModelMetadataProvider, PointCloudStylableObjectProvider, CachedModelDataProvider } from '../../data-providers';
7
7
  import { IPointClassificationsProvider } from './classificationsProviders/IPointClassificationsProvider';
8
8
  import { PointCloudMaterialManager } from '../../rendering';
9
- export declare function createPointCloudManager(modelMetadataProvider: ModelMetadataProvider, modelDataProvider: ModelDataProvider, pointCloudStylableObjectProvider: PointCloudStylableObjectProvider, classificationsProvider: IPointClassificationsProvider, pointCloudDMProvider: PointCloudStylableObjectProvider<DMDataSourceType>, pointCloudMaterialManager: PointCloudMaterialManager, scene: THREE.Scene, renderer: THREE.WebGLRenderer): PointCloudManager;
9
+ export declare function createPointCloudManager(modelMetadataProvider: ModelMetadataProvider, pointCloudStylableObjectProvider: PointCloudStylableObjectProvider, classificationsProvider: IPointClassificationsProvider, pointCloudDMProvider: PointCloudStylableObjectProvider<DMDataSourceType>, pointCloudMaterialManager: PointCloudMaterialManager, cachedProvider: CachedModelDataProvider, scene: THREE.Scene, renderer: THREE.WebGLRenderer): PointCloudManager;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Copyright 2021 Cognite AS
3
3
  */
4
- export { CadMaterialManager } from './src/CadMaterialManager';
4
+ export { CadMaterialManager, createCadMaterial, CadMaterial } from './src/CadMaterialManager';
5
5
  export { PointCloudMaterialManager } from './src/PointCloudMaterialManager';
6
6
  export { RenderOptions, defaultRenderOptions, SsaoParameters, SsaoSampleQuality, AntiAliasingMode, EdlOptions } from './src/rendering/types';
7
7
  export * from './src/pointcloud-rendering/constants';
@@ -4,18 +4,25 @@
4
4
  import * as THREE from 'three';
5
5
  import { Materials } from './rendering/materials';
6
6
  import { RenderMode } from './rendering/RenderMode';
7
- import { NodeAppearance, NodeAppearanceProvider, NodeTransformProvider } from '../../cad-styling';
7
+ import { NodeAppearance, NodeAppearanceProvider, NodeAppearanceTextureBuilder, NodeTransformProvider, NodeTransformTextureBuilder } from '../../cad-styling';
8
8
  import { IndexSet } from '../../utilities';
9
+ export type CadMaterial = {
10
+ materials: Materials;
11
+ nodeAppearanceProvider: NodeAppearanceProvider;
12
+ nodeTransformProvider: NodeTransformProvider;
13
+ nodeAppearanceTextureBuilder: NodeAppearanceTextureBuilder;
14
+ nodeTransformTextureBuilder: NodeTransformTextureBuilder;
15
+ matCapTexture: THREE.Texture;
16
+ };
9
17
  export declare class CadMaterialManager {
10
- private readonly _events;
11
18
  get clippingPlanes(): THREE.Plane[];
12
19
  set clippingPlanes(clippingPlanes: THREE.Plane[]);
20
+ get needsRedraw(): boolean;
13
21
  private _renderMode;
14
22
  private readonly materialsMap;
15
23
  private _clippingPlanes;
16
- on(event: 'materialsChanged', listener: () => void): void;
17
- off(event: 'materialsChanged', listener: () => void): void;
18
- addModelMaterials(modelIdentifier: symbol, maxTreeIndex: number): void;
24
+ private _needsRedraw;
25
+ addModelMaterials(modelIdentifier: symbol, cadMaterial: CadMaterial): void;
19
26
  removeModelMaterials(modelIdentifier: symbol): void;
20
27
  addTexturedMeshMaterial(modelIdentifier: symbol, sectorId: number, texture: THREE.Texture): THREE.RawShaderMaterial;
21
28
  getModelMaterials(modelIdentifier: symbol): Materials;
@@ -31,12 +38,13 @@ export declare class CadMaterialManager {
31
38
  getModelVisibleTreeIndices(modelIdentifier: symbol): IndexSet;
32
39
  setRenderMode(mode: RenderMode): void;
33
40
  getRenderMode(): RenderMode;
41
+ resetRedraw(): void;
34
42
  dispose(): void;
35
43
  private updateClippingPlanesForModel;
36
44
  private updateMaterials;
37
45
  private updateTransforms;
38
46
  private getModelMaterialsWrapper;
39
47
  private applyToAllMaterials;
40
- private triggerMaterialsChanged;
41
48
  private initializeDefinesAndUniforms;
42
49
  }
50
+ export declare function createCadMaterial(maxTreeIndex: number): CadMaterial;
@@ -22,5 +22,5 @@ export interface Materials {
22
22
  };
23
23
  }
24
24
  export declare function forEachMaterial(materials: Materials, callback: (material: THREE.RawShaderMaterial) => void): void;
25
- export declare function createMaterials(renderMode: RenderMode, clippingPlanes: THREE.Plane[], overrideColorPerTreeIndex: THREE.DataTexture, transformOverrideIndexTexture: THREE.DataTexture, transformOverrideLookupTexture: THREE.DataTexture, matCapTexture: THREE.Texture): Materials;
25
+ export declare function createMaterials(overrideColorPerTreeIndex: THREE.DataTexture, transformOverrideIndexTexture: THREE.DataTexture, transformOverrideLookupTexture: THREE.DataTexture, matCapTexture: THREE.Texture): Materials;
26
26
  export declare function initializeDefinesAndUniforms(material: THREE.RawShaderMaterial, overrideColorPerTreeIndex: THREE.DataTexture, transformOverrideIndexTexture: THREE.DataTexture, transformOverrideTexture: THREE.DataTexture, matCapTexture: THREE.Texture, renderMode: RenderMode): void;
@@ -35,6 +35,9 @@ export { WebGLRendererStateHelper } from './src/WebGLRendererStateHelper';
35
35
  export { TypedArray, TypedArrayConstructor } from './src/types';
36
36
  export { MemoryRequestCache } from './src/cache/MemoryRequestCache';
37
37
  export { MostFrequentlyUsedCache } from './src/cache/MostFrequentlyUsedCache';
38
+ export { DataFileCacheManager } from './src/cache/DataFileCacheManager';
39
+ export type { CacheConfig } from './src/cache/types';
40
+ export { BINARY_FILES_CACHE_NAME } from './src/cache/constants';
38
41
  export { disposeAttributeArrayOnUpload } from './src/disposeAttributeArrayOnUpload';
39
42
  export { incrementOrInsertIndex, decrementOrDeleteIndex } from './src/counterMap';
40
43
  export { calculateVolumeOfMesh } from './src/calculateVolumeOfMesh';
@@ -0,0 +1,49 @@
1
+ import { CacheConfig } from './types';
2
+ /**
3
+ * Data File Cache Manager using the Browser Cache API for storing various data files
4
+ * Supports caching of binary files (point clouds, CAD models), images (360 images), and JSON data
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * // Default: Cache forever, browser manages eviction
9
+ * const cache = new DataFileCacheManager({
10
+ * cacheName: 'reveal-3d-resources-v1'
11
+ * });
12
+ *
13
+ * // Optional: Add time-based expiration
14
+ * const cache = new DataFileCacheManager({
15
+ * cacheName: 'reveal-3d-resources-v1',
16
+ * maxAge: 7 * 24 * 60 * 60 * 1000 // Expire after 7 days
17
+ * });
18
+ *
19
+ * // Store a response
20
+ * await cache.storeResponse(url, response);
21
+ *
22
+ * // Retrieve cached response, returns undefined if expired or not found
23
+ * const cachedResponse = await cache.getCachedResponse(url);
24
+ * ```
25
+ */
26
+ export declare class DataFileCacheManager {
27
+ private readonly DEFAULT_CONFIG;
28
+ private readonly _config;
29
+ private readonly _caches;
30
+ get cacheConfig(): CacheConfig;
31
+ constructor(config?: Partial<CacheConfig>, cacheStorage?: CacheStorage);
32
+ /**
33
+ * Check if a URL is cached and not expired
34
+ */
35
+ has(url: string): Promise<boolean>;
36
+ /**
37
+ * Clear all cached entries
38
+ */
39
+ clear(): Promise<void>;
40
+ /**
41
+ * Get a cached response if it exists and is not expired
42
+ */
43
+ getCachedResponse(url: string): Promise<Response | undefined>;
44
+ /**
45
+ * Store data in cache
46
+ * Browser will automatically evict old entries when quota is reached
47
+ */
48
+ storeResponse(url: string, data: ArrayBuffer, contentType?: string): Promise<void>;
49
+ }
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright 2025 Cognite AS
3
+ */
4
+ export declare const BINARY_FILES_CACHE_NAME = "reveal-3d-resources-v1";
5
+ export declare const BINARY_FILES_CACHE_HEADER_DATE = "X-Cache-Date";
6
+ export declare const BINARY_FILES_CACHE_HEADER_SIZE = "X-Cache-Size";
@@ -0,0 +1,14 @@
1
+ /*!
2
+ * Copyright 2025 Cognite AS
3
+ */
4
+ /**
5
+ * Configuration for cache behavior
6
+ */
7
+ export type CacheConfig = {
8
+ /** Name of the cache */
9
+ cacheName: string;
10
+ /** Maximum age in milliseconds before entries expire (Default is Infinity = never expire) */
11
+ maxAge: number;
12
+ /** Maximum cache size in bytes (Default is Infinity = browser manages quota) */
13
+ maxCacheSize: number;
14
+ };
@@ -0,0 +1,6 @@
1
+ /*!
2
+ * Copyright 2025 Cognite AS
3
+ */
4
+ export declare function safeParseInt(value: string | null | undefined): number | undefined;
5
+ export declare function getCacheDate(response: Response): number | undefined;
6
+ export declare function getCacheSize(response: Response): number | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cognite/reveal",
3
- "version": "4.28.7",
3
+ "version": "4.29.0-dev.20260112",
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": {