Move animation, effect, mask, and param value shapes into model decorations so element data no longer depends on decoration domains.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move project entity shapes into the model layer so sibling domains no longer depend on timeline for core data types.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move timeline and preview gestures into dedicated controllers so hooks stay thin around editor state and DOM events.
This also routes drag and playback synchronization through manager APIs and reuses persistent wasm surfaces so scrubbing, seeking, and preview rendering stay in sync.
Made-with: Cursor