first commit
Some checks failed
Build / run (push) Has been cancelled

This commit is contained in:
maher
2025-10-29 11:42:25 +01:00
commit 703f50a09d
4595 changed files with 385164 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
import {usePlayerStore} from '@common/player/hooks/use-player-store';
import {useContext, useEffect, useRef} from 'react';
import {PlayerStoreContext} from '@common/player/player-context';
import {useHtmlMediaInternalState} from '@common/player/providers/html-media/use-html-media-internal-state';
import {useHtmlMediaEvents} from '@common/player/providers/html-media/use-html-media-events';
import {useHtmlMediaApi} from '@common/player/providers/html-media/use-html-media-api';
export function HtmlVideoProvider() {
const ref = useRef<HTMLVideoElement>(null);
const autoPlay = usePlayerStore(s => s.options.autoPlay);
const muted = usePlayerStore(s => s.muted);
const cuedMedia = usePlayerStore(s => s.cuedMedia);
const store = useContext(PlayerStoreContext);
const state = useHtmlMediaInternalState(ref);
const events = useHtmlMediaEvents(state);
const providerApi = useHtmlMediaApi(state);
useEffect(() => {
store.setState({
providerApi,
});
}, [store, providerApi]);
let src = cuedMedia?.src;
if (src && cuedMedia?.initialTime) {
src = `${src}#t=${cuedMedia.initialTime}`;
}
return (
<video
className="w-full h-full"
ref={ref}
src={src}
playsInline
poster={cuedMedia?.poster}
autoPlay={autoPlay}
muted={muted}
{...events}
>
{cuedMedia?.captions?.map((caption, index) => (
<track
key={caption.id}
label={caption.label}
kind="subtitles"
srcLang={caption.language || 'en'}
src={caption.src}
default={index === 0}
/>
))}
</video>
);
}