From 14b2a7e2d0f879ee57795103adde65dbc769c54c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Thu, 25 Jul 2024 16:49:59 +0200 Subject: [PATCH 1/5] docs: make note of necessary cast in camera manager settings --- documentation/docs/examples/controlsmodes.mdx | 2 ++ .../versioned_docs/version-4.x/examples/controlsmodes.mdx | 2 ++ 2 files changed, 4 insertions(+) diff --git a/documentation/docs/examples/controlsmodes.mdx b/documentation/docs/examples/controlsmodes.mdx index 22c9b128a18..5c8d50b1ac0 100644 --- a/documentation/docs/examples/controlsmodes.mdx +++ b/documentation/docs/examples/controlsmodes.mdx @@ -38,3 +38,5 @@ const newControlsOptions = { viewer.cameraManager.setCameraControlsOptions(newControlsOptions); ``` + +**Note**: If using TypeScript, you will need to cast `viewer.cameraManager` to the `DefaultCameraManager` type before setting the options. diff --git a/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx b/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx index 3603d0dced5..23c73caaf47 100644 --- a/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx +++ b/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx @@ -38,3 +38,5 @@ const newControlsOptions = { viewer.cameraManager.setCameraControlsOptions(newControlsOptions); ``` + +**Note**: If using TypeScript, you will need to cast `viewer.cameraManager` to the `DefaultCameraManager` type before setting the options. From 6bd6a585a293ff216925cfddf9577423ee3f8fd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Fri, 26 Jul 2024 10:26:30 +0200 Subject: [PATCH 2/5] chore: add type guard for DefaultCameraManager --- viewer/api-entry-points/core.ts | 1 + viewer/packages/camera-manager/index.ts | 2 +- viewer/packages/camera-manager/src/DefaultCameraManager.ts | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) 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/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..d95458b3f67 100644 --- a/viewer/packages/camera-manager/src/DefaultCameraManager.ts +++ b/viewer/packages/camera-manager/src/DefaultCameraManager.ts @@ -668,3 +668,7 @@ export class DefaultCameraManager implements CameraManager { return clamp(duration, DefaultCameraManager.MinAnimationDuration, DefaultCameraManager.MaxAnimationDuration); } } + +export function isDefaultCameraManager(cameraManager: CameraManager): cameraManager is DefaultCameraManager { + return cameraManager instanceof DefaultCameraManager; +} From 0b04b34694e6e96db025bdb2cd1da840f343e10f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Fri, 26 Jul 2024 10:35:45 +0200 Subject: [PATCH 3/5] docs: add to docs --- documentation/docs/examples/controlsmodes.mdx | 8 +++++--- .../versioned_docs/version-4.x/examples/controlsmodes.mdx | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/documentation/docs/examples/controlsmodes.mdx b/documentation/docs/examples/controlsmodes.mdx index 5c8d50b1ac0..9154976f802 100644 --- a/documentation/docs/examples/controlsmodes.mdx +++ b/documentation/docs/examples/controlsmodes.mdx @@ -31,12 +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); +} ``` - -**Note**: If using TypeScript, you will need to cast `viewer.cameraManager` to the `DefaultCameraManager` type before setting the options. diff --git a/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx b/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx index 23c73caaf47..00a380ef051 100644 --- a/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx +++ b/documentation/versioned_docs/version-4.x/examples/controlsmodes.mdx @@ -31,12 +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); +} ``` - -**Note**: If using TypeScript, you will need to cast `viewer.cameraManager` to the `DefaultCameraManager` type before setting the options. From bc008e8662d9a3e788ece90b4b9241066f8ce76f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Fri, 26 Jul 2024 10:47:31 +0200 Subject: [PATCH 4/5] chore: add tsdoc --- viewer/packages/camera-manager/src/DefaultCameraManager.ts | 3 +++ viewer/reveal.api.md | 3 +++ 2 files changed, 6 insertions(+) diff --git a/viewer/packages/camera-manager/src/DefaultCameraManager.ts b/viewer/packages/camera-manager/src/DefaultCameraManager.ts index d95458b3f67..b9478305514 100644 --- a/viewer/packages/camera-manager/src/DefaultCameraManager.ts +++ b/viewer/packages/camera-manager/src/DefaultCameraManager.ts @@ -669,6 +669,9 @@ export class DefaultCameraManager implements CameraManager { } } +/** + * 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; From bbd89117a99ecf65320307afb23d89388d2ff3e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Flatval?= Date: Fri, 26 Jul 2024 10:56:50 +0200 Subject: [PATCH 5/5] chore: bump reveal version to 4.16.0 --- viewer/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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": {