interface ThumbnailPreviewPage { evaluate( fn: (arg: TArg) => TResult | Promise, arg: TArg, ): Promise; } type SeekResult = "player" | "timelines" | "none"; export async function seekThumbnailPreview( page: ThumbnailPreviewPage, seekTime: number, ): Promise { return page.evaluate((t: number): SeekResult => { const w = window as Window & { __player?: { seek?: (time: number) => void }; __timelines?: Record void }>; gsap?: { ticker?: { tick?: () => void } }; }; if (typeof w.__player?.seek === "function") { w.__player.seek(t); return "player"; } if (w.__timelines) { for (const tl of Object.values(w.__timelines)) { tl?.pause?.(t); } w.gsap?.ticker?.tick?.(); return "timelines"; } return "none"; }, seekTime); }