import { RefObject, useMemo } from "react"; import { Icon, Icons } from "@/components/Icon"; import { formatSeconds } from "@/utils/formatSeconds"; import { useVideoPlayerDescriptor } from "@/video/state/hooks"; import { VideoProgressEvent } from "@/video/state/logic/progress"; import { useSource } from "@/video/state/logic/source"; const THUMBNAIL_HEIGHT = 100; function position( rectLeft: number, rectWidth: number, thumbnailWidth: number, hoverPos: number ): number { const relativePosition = hoverPos - rectLeft; if (relativePosition <= thumbnailWidth / 2) { return rectLeft; } if (relativePosition >= rectWidth - thumbnailWidth / 2) { return rectWidth + rectLeft - thumbnailWidth; } return relativePosition + rectLeft - thumbnailWidth / 2; } function useThumbnailWidth() { const videoEl = useMemo(() => document.getElementsByTagName("video")[0], []); const aspectRatio = videoEl.videoWidth / videoEl.videoHeight; return THUMBNAIL_HEIGHT * aspectRatio; } function LoadingThumbnail({ pos }: { pos: number }) { const videoEl = useMemo(() => document.getElementsByTagName("video")[0], []); const aspectRatio = videoEl.videoWidth / videoEl.videoHeight; const thumbnailWidth = THUMBNAIL_HEIGHT * aspectRatio; return (