import Player from "@vimeo/player"; import { type VimeoEmbedParameters } from "@vimeo/player"; export default class LazyVimeoPlayer { VideoContainerId: string; VideoId: string; private _player?: Player; constructor(videoId: string, videoContainerId: string) { this.VideoContainerId = videoContainerId; this.VideoId = videoId; } get Player(): Player { if (!this._player) { console.log("Initiating video player") this._player = new Player(this.VideoContainerId, this.VideoOptions); } return this._player; } get VideoOptions(): VimeoEmbedParameters { return { id: this.VideoId, airplay: false, autoplay: false, chromecast: false, fullscreen: false, pip: false, portrait: false, vimeo_logo: false, responsive: true, }; } get VideoContainerEl(): HTMLElement | null { return document.getElementById(this.VideoContainerId); } showVideo(): void { console.log("Playing video"); this.VideoContainerEl?.style.removeProperty("display"); this.Player.play(); } hideVideo(): void { console.log("Stopping video"); this.VideoContainerEl?.style.setProperty("display", "none"); this.Player.pause(); this.Player.setCurrentTime(0); } }