VideoController

Primitive #40

🔍 Problem it solves

Custom video players need consistent control over play, pause, volume, seek, and fullscreen across different browsers. The native HTML5 video API is inconsistent (e.g., fullscreen methods vary).

✅ Solution

VideoController wraps the native video element with a consistent interface: play(), pause(), togglePlay(), setVolume(), setCurrentTime(), enterFullscreen(), etc. It also provides reactive properties (isPlaying, currentTime, duration) and subscriptions for UI updates.

🧩 Used by components

VideoPlayer, MediaPlayer, CoursePlayer, WebinarViewer

🎮 Interactive demo