# `CameraMoveOptions`

> Contract 2.0.0 · package sha256 `a857eca95b35921109faf997094bb4192f12527d9d0fcd4be7e97f06425bad6e` · generated from `configurator-runtime.d.ts` by `services/onsite-scripter/scripts/build-contract-docs.mjs`; edit the source, not this file.

Interface · `import type { CameraMoveOptions } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 10. Camera

The member options of a camera move. They pass through a `tx`. An abort of [`signal`](SignalOption.signal.md) drops a
move deferred through a `tx` that has not started (spec section 6.2); a running move stops
where the last frame drew it or, when no frame has drawn it yet, at its start value (the drawn
view, or the value of a `durationMs: 0` write it starts from, as [`durationMs`](CameraMoveOptions.durationMs.md) says), so nothing rolls
back, and an autocommit call rejects AbortError.
`autoRotate` resumes from there unless a gesture still pauses it.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="durationms"></a>[`durationMs?`](CameraMoveOptions.durationMs.md) | property | 0 lands exactly, without damping, before the next frame. |
| <a id="easing"></a>[`easing?`](CameraMoveOptions.easing.md) | property | The move's time curve: an [`Easing`](Easing.md), or `'damped'`, a critically damped spring with no overshoot, which is 1.x's `transition: true` glide. |

Inherited from [`SignalOption`](SignalOption.md): [`signal`](SignalOption.signal.md).

## Declaration

```ts
export interface CameraMoveOptions extends SignalOption {
  durationMs?: number;
  easing?: Easing | 'damped';
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `CameraMoveOptions` names no product |
| 2. A precedent | not recorded: no ledger row (coverage.json) names this member or its owner |
| 3. Two apps, or labs | not recorded: no ledger row names this member or its owner |
| 4. The cheaper fix first | not recorded per member (Appendix B decides it per need) |
