diff --git a/documentation/docs/examples/controlsmodes.mdx b/documentation/docs/examples/controlsmodes.mdx index 22c9b128a18..9154976f802 100644 --- a/documentation/docs/examples/controlsmodes.mdx +++ b/documentation/docs/examples/controlsmodes.mdx @@ -31,10 +31,14 @@ Default value is `false`. Example of setting different camera controls options: ```jsx runnable +// import { isDefaultCameraManager } from '@cognite/reveal'; + const newControlsOptions = { mouseWheelAction: 'zoomToCursor', changeCameraTargetOnClick: true, }; -viewer.cameraManager.setCameraControlsOptions(newControlsOptions); +if (isDefaultCameraManager(viewer.cameraManager)) { + viewer.cameraManager.setCameraControlsOptions(newControlsOptions); +} ``` diff --git a/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx b/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx index 3603d0dced5..00a380ef051 100644 --- a/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx +++ b/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx @@ -31,10 +31,14 @@ Default value is `false`. Example of setting different camera controls options: ```jsx runnable-4x +// import { isDefaultCameraManager } from '@cognite/reveal'; + const newControlsOptions = { mouseWheelAction: 'zoomToCursor', changeCameraTargetOnClick: true, }; -viewer.cameraManager.setCameraControlsOptions(newControlsOptions); +if (isDefaultCameraManager(viewer.cameraManager)) { + viewer.cameraManager.setCameraControlsOptions(newControlsOptions); +} ``` diff --git a/viewer/api-entry-points/core.ts b/viewer/api-entry-points/core.ts index 13384f28d32..2363bbe7e14 100644 --- a/viewer/api-entry-points/core.ts +++ b/viewer/api-entry-points/core.ts @@ -13,6 +13,7 @@ export { CameraControlsOptions, DebouncedCameraStopEventTrigger, DefaultCameraManager, + isDefaultCameraManager, CameraManagerEventType, CameraManagerHelper, CameraManager, diff --git a/viewer/package.json b/viewer/package.json index 70a0dc4e447..7593215a3fe 100644 --- a/viewer/package.json +++ b/viewer/package.json @@ -1,6 +1,6 @@ { "name": "@cognite/reveal", - "version": "4.15.2", + "version": "4.16.0", "description": "WebGL based 3D viewer for CAD and point clouds processed in Cognite Data Fusion.", "homepage": "https://github.com/cognitedata/reveal/tree/master/viewer", "repository": { diff --git a/viewer/packages/camera-manager/index.ts b/viewer/packages/camera-manager/index.ts index 2278062ad40..9f87c5aa75b 100644 --- a/viewer/packages/camera-manager/index.ts +++ b/viewer/packages/camera-manager/index.ts @@ -1,7 +1,7 @@ /*! * Copyright 2021 Cognite AS */ -export { DefaultCameraManager } from './src/DefaultCameraManager'; +export { DefaultCameraManager, isDefaultCameraManager } from './src/DefaultCameraManager'; export { ProxyCameraManager } from './src/ProxyCameraManager'; export { StationaryCameraManager } from './src/StationaryCameraManager'; export { CameraManagerHelper } from './src/CameraManagerHelper'; diff --git a/viewer/packages/camera-manager/src/DefaultCameraManager.ts b/viewer/packages/camera-manager/src/DefaultCameraManager.ts index f42f882a250..b9478305514 100644 --- a/viewer/packages/camera-manager/src/DefaultCameraManager.ts +++ b/viewer/packages/camera-manager/src/DefaultCameraManager.ts @@ -668,3 +668,10 @@ export class DefaultCameraManager implements CameraManager { return clamp(duration, DefaultCameraManager.MinAnimationDuration, DefaultCameraManager.MaxAnimationDuration); } } + +/** + * type guard which determines if the provided camera manager is a @see { DefaultCameraManager } + */ +export function isDefaultCameraManager(cameraManager: CameraManager): cameraManager is DefaultCameraManager { + return cameraManager instanceof DefaultCameraManager; +} diff --git a/viewer/reveal.api.md b/viewer/reveal.api.md index b8df6ec12bc..7ca02503634 100644 --- a/viewer/reveal.api.md +++ b/viewer/reveal.api.md @@ -1332,6 +1332,9 @@ export class InvertedNodeCollection extends NodeCollection { serialize(): SerializedNodeCollection; } +// @public +export function isDefaultCameraManager(cameraManager: CameraManager): cameraManager is DefaultCameraManager; + // @beta export function isFlexibleCameraManager(manager: CameraManager): manager is IFlexibleCameraManager;