PrivatecompletePrivateplaySnap the dimension to its minimum value, register the "play complete → onComplete()" listener, then schedule the actual play call after a short delay so the snap propagates before playback starts.
playDelayMs defaults to 100 ms.
isAlive is consulted right before play() so a dispose during
the delay window short-circuits cleanly.
Cancel a pending start delay and unhook the complete listener. Idempotent — safe to call from dispose, on stop, and on a fresh start before re-arming.
Owns the slider-sync lifecycle: registers an animation-complete listener and a play-after-delay timeout, and tears both down cleanly. Pulled into its own class because the panel had two mirrored half-states (
syncCompleteHandler,syncPlayTimeout) each needing its own cleanup branch.