sliver_tree/_animation_coordinator library

Internal: facade over the five animation sources (standalone, per-operation groups, bulk, slide, make-room preview), plus the cross-source state that spans them.

The first three drive layout and are unioned by hasActiveAnimations; slide and preview are paint-only and are read through the slide-delta getters instead.

Owns the cross-source per-nid state (full extents, pending deletion, the animating and exiting union mirrors), the broad animation generation counter (the bulk-specific one lives on BulkAnimator), the animating-keys cache, and the animation-listener channel. The five sub-coordinators are held by composition, not inheritance.

Implements AnimationReader so RenderSliverTree can hold an abstract reference instead of the concrete coordinator (or the controller).

Status-change handlers and the standalone tick body stay on TreeController: they cross structure, order and structural notification concerns, and are wired in here as callbacks.

Classes

AnimationCoordinator<TKey>
AnimationReader<TKey>
Narrow read interface that the render layer depends on instead of TreeController. Allows render-layer tests to stub animation reads without standing up a full controller.