UNPKG

@remotion/player

Version:

React component for embedding a Remotion preview into your app

115 lines (114 loc) 2.98 kB
export class PlayerEmitter { constructor() { this.listeners = { ended: [], error: [], pause: [], play: [], ratechange: [], scalechange: [], seeked: [], timeupdate: [], frameupdate: [], fullscreenchange: [], volumechange: [], mutechange: [], waiting: [], resume: [], }; } addEventListener(name, callback) { this.listeners[name].push(callback); } removeEventListener(name, callback) { this.listeners[name] = this.listeners[name].filter((l) => l !== callback); } dispatchEvent(dispatchName, context) { this.listeners[dispatchName].forEach((callback) => { callback({ detail: context }); }); } dispatchSeek(frame) { this.dispatchEvent('seeked', { frame, }); } dispatchVolumeChange(volume) { this.dispatchEvent('volumechange', { volume, }); } dispatchPause() { this.dispatchEvent('pause', undefined); } dispatchPlay() { this.dispatchEvent('play', undefined); } dispatchEnded() { this.dispatchEvent('ended', undefined); } dispatchRateChange(playbackRate) { this.dispatchEvent('ratechange', { playbackRate, }); } dispatchScaleChange(scale) { this.dispatchEvent('scalechange', { scale, }); } dispatchError(error) { this.dispatchEvent('error', { error, }); } dispatchTimeUpdate(event) { this.dispatchEvent('timeupdate', event); } dispatchFrameUpdate(event) { this.dispatchEvent('frameupdate', event); } dispatchFullscreenChange(event) { this.dispatchEvent('fullscreenchange', event); } dispatchMuteChange(event) { this.dispatchEvent('mutechange', event); } dispatchWaiting(event) { this.dispatchEvent('waiting', event); } dispatchResume(event) { this.dispatchEvent('resume', event); } } export class ThumbnailEmitter { constructor() { this.listeners = { error: [], waiting: [], resume: [], }; } addEventListener(name, callback) { this.listeners[name].push(callback); } removeEventListener(name, callback) { this.listeners[name] = this.listeners[name].filter((l) => l !== callback); } dispatchEvent(dispatchName, context) { this.listeners[dispatchName].forEach((callback) => { callback({ detail: context }); }); } dispatchError(error) { this.dispatchEvent('error', { error, }); } dispatchWaiting(event) { this.dispatchEvent('waiting', event); } dispatchResume(event) { this.dispatchEvent('resume', event); } }