Skip to content

CreativeState

Defined in: state.ts:108

backgroundImage: string | null

Defined in: state.ts:114


contentSource: "generated" | "cached" | "static"

Defined in: state.ts:127

Provenance of the copy on the canvas, stream-wide: the strongest any field declared while live, the server’s terminal word once settled, and static whenever no adapted copy actually reached the canvas. Decide a disclosure mark per field (field.source), not from this.


ctaAction: string | null

Defined in: state.ts:118


ctaStyle: unknown

Defined in: state.ts:117


degraded: string | null

Defined in: state.ts:129

Set when the server served a deterministic winner instead.


error: string | null

Defined in: state.ts:133

Human-readable failure, if any. Never blanks painted copy.


experienceManifest: unknown

Defined in: state.ts:113


fields: Record<CopyField, FieldState>

Defined in: state.ts:110


optional held?: Partial<Record<CopyField, string>> | null

Defined in: state.ts:142

What the hold reserved, per field: the copy that will land if the hold runs out. A renderer draws it invisibly so a blank field keeps its exact geometry. Null when no hold armed in this view.

Optional so a hand-built CreativeState (a test mock, a story fixture) still compiles: read it as state.held?..


layout: string | null

Defined in: state.ts:112


meta: Record<string, unknown> | null

Defined in: state.ts:120

Terminal done.meta, verbatim.


phase: Phase

Defined in: state.ts:109


rewrites: number

Defined in: state.ts:149

How many times text the visitor could see was replaced. Always 0 from a single stream: the hold, the stream’s entrance and the fallback’s landing all write into blank slots. useIsland adds one per cross-fade after a campaign or context change, the only replacement there is.


sequence: { fps: number; frames: string[]; heroIndex: number; } | null

Defined in: state.ts:115


theme: { colors: Record<string, string>; sources: Record<string, string>; } | null

Defined in: state.ts:111


variantId: string | null

Defined in: state.ts:131

Resolved variant, for pinning subsequent calls in this page view.


videoUrl: string | null

Defined in: state.ts:116