# `PartActions`

> 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 { PartActions } from '@holostep-configurators/runtime-client/contract';` · stable · since 2.0.0 · section 6. Queries, rules and parts

The actions that exist on one part and on a set of parts. `C`: the writer's commit options.

## Members

| Member | Kind | Summary |
| --- | --- | --- |
| <a id="set"></a>[`set`](PartActions.set.md) | method | Through [`Parts`](Parts.md): a persistent rule in the [`find()`](Writer.find.md) block (through a nested [`find`](Writer.find.md), one rule per match, see [`find`](Writer.find.md)). |
| <a id="bounds"></a>[`bounds`](PartActions.bounds.md) | method | Read class: derived. |
| <a id="find"></a>[`find`](PartActions.find.md) | method | Searches inside these parts. |
| <a id="follow"></a>[`follow`](PartActions.follow.md) | method | Rides `target` (one part: a part or bone) every frame, after animations, until disposed. |

## Declaration

```ts
export interface PartActions<C extends object = NoCommitOptions> {
  set(patch: PartState, options?: C & PartWriteOptions): Promise<Report>;
  bounds(options?: {
    includeHidden?: boolean;
  }): Bounds | null;
  find(query: Query): Parts<C>;
  follow(target: Query, options?: FollowOptions): () => void;
}
```

## Generic-API test (spec 3.1)

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