The lightbox's close animation needs the original thumbnail ref/dims to know
where to animate back to. The peek-commit path was passing null, so the
lightbox dropped to a fade instead of the usual return-to-thumb animation.
Rework each embed path so the tap handler and the peek-commit handler
invoke the same openLightbox call with the same ref + dims:
- Grid and scrollable Gallery: derive `openLightboxAtIndex` once per cell
and hand it to both Pressable.onPress and ContextMenu.onPreviewPress.
- Single image: add onContainerRef / onDimsChange callbacks to
AutoSizedImage, capture them in ImageEmbed, and use them for the peek
commit. Drops the now-redundant onPreviewPress prop chain.
https://claude.ai/code/session_015REmux3R9uuEMMJUHxTyQT
Thread onPreviewPress(index) through ImageLayoutGrid / GalleryItem and the
Gallery scroll item so multi-image embeds get the same iOS peek behaviour as
single-image embeds. Each grid cell wraps its Pressable in ImageContextMenu
with the image's true aspect ratio, so the preview lifts to the full
uncropped image even when the cell is cropped to square.
https://claude.ai/code/session_015REmux3R9uuEMMJUHxTyQT