@remotion/player
Version:
React component for embedding a Remotion preview into your app
115 lines (114 loc) • 2.98 kB
JavaScript
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);
}
}