Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
1 result

useTextTrackCues.ts

Blame
  • useTextTrackCues.ts 915 B
    import {useEffect, useState} from "react";
    
    export const useTextTrackCues = (track: HTMLTrackElement) => {
        const [cues, setCues] = useState<TextTrackCue[]>([]);
        useEffect(() => {
            track.track.mode = "hidden";
            if (track.readyState >= 1) {
                setCues(Array.from(track.track.cues || []))
            } else {
                let animationFrame: number | null = null;
                const listener = () => {
                    animationFrame = window.requestAnimationFrame(() => {
                        setCues(Array.from(track.track.cues || []))
                    })
                };
                track.addEventListener("load", listener)
                return () => {
                    track.removeEventListener("load", listener);
                    if (animationFrame) {
                        window.cancelAnimationFrame(animationFrame);
                    }
                }
            }
        }, [track]);
        return cues;
    }