# `DragOptions`

> 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 { DragOptions } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 11. Input and drag

What [`input.drag`](Input.drag.md) takes.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="on"></a>[`on`](DragOptions.on.md) | property | The surface the proposed pose lies on; a function picks it per part at press time. |
| <a id="constrain"></a>[`constrain?`](DragOptions.constrain.md) | function property · labs | Synchronous. |
| <a id="commit"></a>[`commit?`](DragOptions.commit.md) | property | 'runtime': at release the runtime writes the pose to the scene model (one recorded commit, actor 'shopper'), which enters the write queue then, behind any scene write called before (spec section 6.1, O2a); it counts as… |
| <a id="undo"></a>[`undo?`](DragOptions.undo.md) | property | Undo label of a runtime commit, as [`CommitOptions.undo`](CommitOptions.undo.md) ('rebase' erases every earlier step). |
| <a id="signal"></a>[`signal?`](DragOptions.signal.md) | property | Aborting removes this registration; a drag in progress completes. |

## Declaration

```ts
export interface DragOptions {
  on: 'floor' | Query | ((part: Part) => 'floor' | Query);
  constrain?: (move: DragMove, frame: Frame) => PoseInput | null;
  commit?: 'runtime' | 'app';
  undo?: CommitOptions['undo'];
  signal?: AbortSignal;
}
```

## Generic-API test (spec 3.1)

| Rule | Result |
| --- | --- |
| 1. Neutral name | pass: `DragOptions` 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) |
