@adrianarroyoc/mediaplayer
Version:
Proyecto del Curso Profesional de JavaScript en Platzi
74 lines (63 loc) • 1.58 kB
text/typescript
class MediaPlayer {
media: HTMLMediaElement;
plugins: Array<any>;
container: HTMLElement;
constructor(config) {
this.media = config.el;
this.plugins = config.plugins || [];
this.initPlayer();
this.initiPlugins();
}
initPlayer() {
this.container = document.createElement('div');
this.container.style.position = 'relative';
this.media.parentNode.insertBefore(this.container, this.media);
this.container.appendChild(this.media);
}
private initiPlugins() {
/*const player = {
play: () => this.play(),
pause: () => this.pause(),
media: this.media,
get muted() {
return this.media.muted;
},
set muted(value) {
this.media.muted = value;
}
};*/
this.plugins.forEach(plugin => {
plugin.run(this);
});
}
play() {
this.media.play();
}
pause() {
this.media.pause();
}
togglePlay() {
if (this.media.paused) {
this.play();
}
else {
this.pause();
}
}
mute() {
this.media.muted = true;
}
unmute() {
this.media.muted = false;
}
toggleMute() {
if (this.media.muted) {
this.unmute();
}
else {
this.mute();
}
}
}
export default MediaPlayer;
//export const foo = "foo";