Panopto Annoyances Remover

Fixes many annoyances in Panopto. Space button now always controls the video.

// ==UserScript==
// @name         Panopto Annoyances Remover
// @namespace    http://github.com/jaytohe/
// @version      1.2.0
// @description  Fixes many annoyances in Panopto. Space button now always controls the video.
// @author       jaytohe
// @match        https://*.panopto.eu/Panopto/Pages/Viewer.aspx?id=*
// @grant        none
// @run-at       document-start
// ==/UserScript==

(function() {
    'use strict';
    const BlackListIDs = ['quickRewindButton','quickFastForwardButton','volumeControl', 'captionsButton', 'playButton', 'playSpeedButton', 'qualityButton', 'captionStyleOptions'];

    function checkID(val) {
     if (typeof val !== 'undefined') {
         const thumb_regex = /thumbnail\d+thumbnailList/g;
         const event_regex = /^event\d+$/g;
         const transcript_regex = /^UserCreatedTranscript-\d+$/g;
        if ( BlackListIDs.includes(val)
            || thumb_regex.test(val)
            || event_regex.test(val)
            || transcript_regex.test(val)
           ) {
                 return true;
        }
     }
     return false;
    }
    if (EventTarget.prototype.original_addEventListener == null) {
        EventTarget.prototype.original_addEventListener = EventTarget.prototype.addEventListener;
        EventTarget.prototype.addEventListener =function override_listener(typ, fn, opt) {

            if (checkID(this.id) && typ === 'keydown') {
                const tmp_func = function(e) {
                    const original = fn;
                    if (e.keyCode === 32) {
                        e.stopImmediatePropagation();
                        e.preventDefault(); //prevent scrolling of sidebar.
                        document.getElementById('playButton').click();
                        return;
                    }
                    original(e);
                }
                this.original_addEventListener(typ, tmp_func, opt);
            }

            this.original_addEventListener(typ, fn, opt);
        }
        }
})();