Skip to content
Snippets Groups Projects
Select Git revision
  • 16d9329faf97f541eaa284eb1e42dd6a4049909e
  • main default protected
2 results

PreviewViewer.tsx

Blame
  • PreviewViewer.tsx 956 B
    import React, {useMemo} from "react";
    import {useImage} from "../../util/media/useImage";
    import {useTextTrackCues} from "../../util/media/useTextTrackCues";
    import {parseImageSprite} from "../../util/sprite/parseImageSprite";
    import {useImageSprite} from "../../util/sprite/useImageSprite";
    
    interface Props {
        previewTrack: HTMLTrackElement,
        position: number,
    }
    
    export function PreviewViewer({previewTrack, position}: Props) {
        const cues = useTextTrackCues(previewTrack);
        const activeCue = cues.find(it => it.startTime <= position && it.endTime >= position)
        const activeUrl = activeCue ? new URL(activeCue.text, previewTrack.src).toString() : null;
        const imageSprite = useMemo(() => parseImageSprite(activeUrl), [activeUrl]);
        const image = useImage(imageSprite?.src || null);
        const sprite = useImageSprite(imageSprite, image);
        return useMemo(() => (
            <img alt="" src={sprite || undefined}/>
        ), [sprite]);
    }