import { UINode } from "./node"; export class Video extends UINode { private videoElement: HTMLVideoElement; public constructor(title: string, src: string | MediaStream = "") { super(title); this.videoElement = document.createElement("video"); if (typeof src === "string") { this.videoElement.src = src; // Set src if it's a string URL } else if (src instanceof MediaStream) { this.videoElement.srcObject = src; // Set srcObject if it's a MediaStream } this.videoElement.setAttribute("aria-label", title); this.element.appendChild(this.videoElement); this.setRole("video"); } public getElement(): HTMLElement { return this.videoElement; } public setSource(src: string | MediaStream) { if (typeof src === "string") { this.videoElement.src = src; } else if (src instanceof MediaStream) { this.videoElement.srcObject = src; } return this; } public play() { this.videoElement.play(); return this; } public pause() { this.videoElement.pause(); return this; } public setControls(show: boolean) { this.videoElement.controls = show; return this; } public setLoop(loop: boolean) { this.videoElement.loop = loop; return this; } public setMuted(muted: boolean) { this.videoElement.muted = muted; return this; } public setAutoplay(autoplay: boolean) { this.videoElement.autoplay = autoplay; return this; } }