class MediaPlayer {
    media: HTMLMediaElement;
    plugins: any[];
    container: HTMLElement;

    constructor(config) {
        this.media = config.el;
        this.plugins = config.plugins || [];
        this.initPlayer();
        this.initPlugins();
    }

    play() {
        this.media.play();
    }
    
    pause() {
        this.media.pause();
    }
    
    togglePlay() {
        (this.media.paused) ? this.media.play() : this.media.pause();
    }
    
    initPlayer() {
        this.container = document.createElement('div');

        this.media.parentNode.insertBefore(this.container, this.media);
        this.container.appendChild(this.media);
        this.container.style.position = 'relative';
        
    }

    private initPlugins() {
        this.plugins.forEach(plugin => {
            plugin.run(this); 
        });
    }
    
    mute() {
        this.media.muted = true;
    }
    
    unmute() {
        this.media.muted = false;
    }
    
    toggleMute() {
        // (this.media.muted)? this.media.muted = false : this.media.muted = true;
        (this.media.muted) ? this.unmute() : this.mute();
    }
}

export default MediaPlayer;