{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/js/widget/v1/video.js","webpack:///./src/js/widget/v1/overlays.js","webpack:///./src/js/widget/v1/e-learner-question.js","webpack:///./src/js/widget/v1/e-learner.js","webpack:///./src/js/widget/v1/widget.js","webpack:///./node_modules/formdata-polyfill/formdata.min.js","webpack:///(webpack)/buildin/global.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Video","constructor","target","this","video","onTimeUpdateMethods","overlays","lastTimepoint","volume","gotoLastChapterAfterCurrent","addEventListener","e","forEach","method","currentTime","duration","style","visibility","goto","time","parseFloat","play","pause","paused","onTimeUpdate","push","updateOverlay","keys","layer","start","end","dataset","display","attachOverlay","overlay","querySelectorAll","element","undefined","onclickgoto","gotochapter","chapters","document","listElement","firstElementChild","parseInt","console","log","FEEDBACK_URL","Overlay","window","request","XMLHttpRequest","open","querySelector","pauze","form","FormData","append","send","ELearnerQuestion","nextButton","question","number","container","questionText","question_text","questionMediaUrl","question_media_url","location","hostname","questionExtension","question_media_extension","questionChoices","choices","amountOfCorrectChoices","filter","obj","is_correct","length","show","innerText","showMedia","showChoices","classList","add","disabled","mediaSection","mediaSectionRow","createElement","className","appendChild","questionMedia","Image","src","setAttribute","questionMediaSource","Audio","questionChoice","elearnForm","row","onCheckmarkClicked","rowContent","choiceTextLabel","createTextNode","answer_text","choiceInput","checkmark","remove","isAnswerCorrect","radioInputs","indexesOfCorrectChoices","item","map","indexOf","indexesOfChosenChoices","Array","from","checked","every","reset","buttonBackgroundElement","choiceFeedbackElement","mediaQuestionElement","a","styleSheets","deleteRule","addRule","showFeedback","radioInputsBody","buttonBackground","choiceFeedback","disableRadioButtons","feedback","Error","checkedRadioInput","x","indexOfCheckedRadioInput","chosenAnswer","feedbackClass","feedbackColor","radioInputsContainer","ButtonStatus","freeze","next","viewScore","ELearner","apiVideoKey","questions","currentQuestion","amountOfCorrectAnswers","buttonStatus","finished","amountOfQuestions","initialize","toggleLoadingScreen","getQuestions","then","showQuestion","isAnswerCorrrect","goToNextQuestion","finish","contains","toggle","getElementById","id","baseUrl","href","fetch","res","json","data","catch","fetchQuestionSet","elearnMediaSection","elearnBody","eLearnerFinishedElement","insertBefore","finishedText","finishedElement","WIDGET_URL","RVG_CHECK_URL","Widget","options","arguments","isFullscreen","eLearner","currentChapter","widgetEdentifier","api_video_key","questionSet","render","widgetCss","rel","type","head","fontawesomeCss","googlyticsscript","dataLayer","gtag","_len","args","_key","Date","changeVideo","ex","error","self","template","innerHTML","responseText","mouseOverVideoControls","event","videoControls","videoCursor","timeout","fullscreenElement","setTimeout","height","cursor","clearTimeout","backgroundImage","cancelFullScreen","mozCancelFullScreen","webkitCancelFullScreen","msExitFullscreen","requestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","max","elem","muted","textTracks","subtitleMenu","attachListener","button","track","preventDefault","tracks","language","visualleaflet","page_path","handle","stopPropagation","localStorage","getItem","attributes","noRVG","maxHeight","mainModalDiv","sendRVG","videoId","code","rvgCode","formValues","formData","JSON","parse","success","overflowY","parentElement","removeChild","nextYear","setYear","getYear","setItem","rvgField","getAttribute","focus","modalScrollController","inputItems","activeElement","which","previousElementSibling","input","Number","isInteger","nextElementSibling","videoTenpercent","videoTwentypercent","videoThirtypercent","videoFortypercent","videoFiftypercent","videoSixtypercent","videoSeventypercent","videoEightypercent","videoNinetypercent","videoHunderdpercent","bs_dataLayer","Math","floor","dataLayerObject","widget_video_name","widget_video_current_time","chapterButton","languageButton","faqButton","chapter","click","chapter_name","faq","set","video_widget_language_button_name","dispatchEvent","Event","chosen","chapterNo","f","learnerButton","removeElement","elementClass","elements","getElementsByClassName","parentNode","resetColors","elearnButton","exitHandler","webkitIsFullScreen","mozFullScreen","msFullscreenElement","targetElement","match","msRequestFullscreen","top","body","gotoOverlay","sec","scrollWidth","split","prefixes","fullscreenchange","exitFullScreen","NodeList","info","callback","thisArg","h","b","done","defineProperties","w","q","globalThis","global","configurable","writable","u","iterator","v","g","A","toString","random","TypeError","setPrototypeOf","y","__proto__","B","C","j","D","E","F","G","H","return","J","throw","I","K","String","L","Blob","M","N","replace","O","File","P","Q","R","S","T","Request","U","navigator","sendBeacon","V","Element","W","lastModified","escape","X","matches","files","selected","delete","entries","getAll","has","k","values","_asNative","_blob","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","ownerDocument","Y","setRequestHeader","toLowerCase","Function"],"mappings":"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","file":"widget/widget.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 4);\n","/*\n * Video.js ~ Code that initializes and sets up the Video Player.\n */\n\nexport default class Video {\n constructor(target) {\n this.video = target;\n this.onTimeUpdateMethods = [];\n this.overlays = [];\n this.lastTimepoint = -1;\n this.volume = 100;\n this.gotoLastChapterAfterCurrent = false;\n this.video.addEventListener('timeupdate', (e) => {\n this.onTimeUpdateMethods.forEach((method) => {\n method(this.video.currentTime, this.video.duration, e.target, this);\n });\n });\n\n this.video.addEventListener('loadeddata', () => {\n this.video.style.visibility = 'visible';\n });\n }\n\n goto(time) {\n this.video.currentTime = parseFloat(time);\n }\n\n // Video controls -----------------\n\n play() {\n this.video.play();\n }\n\n pause() {\n this.video.pause();\n }\n\n paused() {\n return this.video.paused;\n }\n\n onTimeUpdate(method) {\n this.onTimeUpdateMethods.push(method);\n }\n\n // -------------------------------\n\n updateOverlay(time) {\n const overlayKeys = Object.keys(this.overlays);\n\n overlayKeys.forEach((key) => {\n const layer = this.overlays[key];\n const {start, end} = layer.dataset;\n\n // Every time the player \"Enters\" the overlay, display overlay.\n if (start <= time && end >= time && end >= this.lastTimepoint) {\n layer.style.display = 'inline-block';\n this.lastTimepoint = time;\n }\n else {\n layer.style.display = 'none';\n }\n this.lastTimepoint = time;\n });\n }\n\n // Overlay -----------------------\n\n attachOverlay(overlay) {\n this.overlays.push(overlay);\n\n this.onTimeUpdate(this.updateOverlay);\n this.updateOverlay(0, null, null, this);\n\n overlay.querySelectorAll('div').forEach((element) => {\n if (element.dataset.onclickgoto !== undefined\n || element.dataset.gotochapter !== undefined) {\n element.addEventListener('click', () => {\n if (element.dataset.onclickgoto !== undefined) {\n this.goto(element.dataset.onclickgoto);\n this.video.play();\n }\n\n if (element.dataset.gotochapter !== undefined) {\n const chapters = [];\n\n document.querySelectorAll('.widget .js--chapters li').forEach((listElement) => {\n chapters.push(listElement.firstElementChild);\n });\n\n this.goto(chapters[parseInt(element.dataset.gotochapter, 10)].dataset.time);\n console.log('goto chapter', parseInt(element.dataset.gotochapter, 10), chapters[parseInt(element.dataset.gotochapter, 10)].dataset.time);\n this.video.play();\n }\n });\n }\n });\n }\n\n // -------------------------------\n}\n","const FEEDBACK_URL = `${HOST_URL}/endpoint/feedback/`;\n\nexport default class Overlay {\n constructor(target) {\n // Event listener on Positive feedback\n window.addEventListener('Visualleaflet|Feedback|Positive', () => {\n const request = new XMLHttpRequest();\n request.open('POST', FEEDBACK_URL);\n request.addEventListener('load', () => {\n document.querySelector(`${target} .feedback-overlay`).dataset.start = -1;\n document.querySelector(`${target} .feedback-overlay`).dataset.end = -1;\n document.querySelector(`${target} .feedback-overlay`).dataset.pauze = 'false';\n document.querySelector(`${target} .player`).play();\n });\n\n const form = new FormData();\n form.append('feedback', 'P');\n form.append('video', document.querySelector(`${target} .widget`).dataset.video);\n request.send(form);\n });\n\n // Event listener on Negative feedback\n window.addEventListener('Visualleaflet|Feedback|Negative', () => {\n const request = new XMLHttpRequest();\n request.open('POST', FEEDBACK_URL);\n request.addEventListener('load', () => {\n document.querySelector(`${target} .feedback-overlay`).dataset.start = -1;\n document.querySelector(`${target} .feedback-overlay`).dataset.end = -1;\n document.querySelector(`${target} .feedback-overlay`).dataset.pauze = 'false';\n document.querySelector(`${target} .player`).play();\n });\n\n const form = new FormData();\n form.append('feedback', 'N');\n form.append('video', document.querySelector(`${target} .widget`).dataset.video);\n request.send(form);\n });\n }\n}\n","/**\n * An E learner question.\n */\nexport default class ELearnerQuestion {\n /**\n * Initializes an E learner question.\n * @param {any} target The target element.\n * @param {any} nextButton The next button.\n * @param {any} question The question.\n * @param {number} number The question number.\n */\n constructor(target, nextButton, question, number) {\n this.container = target;\n this.nextButton = nextButton;\n this.question = question;\n this.number = number;\n\n this.questionText = question.question_text;\n this.questionMediaUrl = question.question_media_url != null ? `https://${window.location.hostname}${question.question_media_url}` : null;\n this.questionExtension = question.question_media_extension;\n this.questionChoices = question.choices;\n\n this.amountOfCorrectChoices = this.questionChoices.filter((obj) => obj.is_correct).length;\n }\n\n /**\n * Shows the question.\n */\n show() {\n // Show the question text.\n this.container.querySelector('.elearn-question-text').innerText = `${this.questionText}`;\n\n // Show the media.\n this.showMedia();\n\n // Show the choices.\n this.showChoices();\n\n // Disable the next button.\n this.nextButton.classList.add('disabled', 'disabled-input');\n this.nextButton.disabled = true;\n }\n\n /**\n * Shows the media for the question.\n */\n showMedia() {\n // Get the media section.\n const mediaSection = this.container.querySelector('.elearn-media-section');\n\n // Add a row div.\n const mediaSectionRow = document.createElement('div');\n mediaSectionRow.className = 'row elearn-question-media';\n\n // Add the row div to the media section.\n mediaSection.appendChild(mediaSectionRow);\n\n // If the question media url, return.\n if (this.questionMediaUrl === null) {\n return;\n }\n\n let questionMedia;\n\n // If it's an image.\n if (this.questionExtension === 'png' || this.questionExtension === 'jpg' || this.questionExtension === 'jpeg') {\n questionMedia = new Image();\n questionMedia.src = this.questionMediaUrl;\n // If it's a video.\n }\n else if (this.questionExtension === 'mp4') {\n questionMedia = document.createElement('video');\n questionMedia.setAttribute('controls', '');\n\n const questionMediaSource = document.createElement('source');\n questionMediaSource.setAttribute('type', 'video/mp4');\n questionMediaSource.src = this.questionMediaUrl;\n\n questionMedia.appendChild(questionMediaSource);\n // If it's a sound fragment.\n }\n else if (this.questionExtension === 'mp3') {\n questionMedia = new Audio();\n questionMedia.src = this.questionMediaUrl;\n questionMedia.setAttribute('controls', true);\n questionMedia.setAttribute('preload', 'none');\n }\n\n // Add the question media to the media section row.\n mediaSectionRow.appendChild(questionMedia);\n }\n\n /**\n * Shows the choices of the question.\n */\n showChoices() {\n // Loop over every question choice.\n for (let i = 0; i < this.questionChoices.length; i++) {\n const questionChoice = this.questionChoices[i];\n\n // Get the form.\n const elearnForm = this.container.querySelector('.elearn-form');\n\n // Create a row div.\n const row = document.createElement('div');\n row.className = 'row choice-row';\n row.addEventListener('click', () => this.onCheckmarkClicked(), false);\n\n // Add it to the form.\n elearnForm.appendChild(row);\n\n // Create a row content div.\n const rowContent = document.createElement('div');\n rowContent.className = 'elearn-choice-body';\n\n // Add the row content to the row.\n row.appendChild(rowContent);\n\n // Create a choice text label.\n const choiceTextLabel = document.createElement('label');\n choiceTextLabel.className = 'elearn-choice-container';\n\n // Add the answer text to the choice text label.\n choiceTextLabel.appendChild(document.createTextNode(questionChoice.answer_text));\n\n // Add the choice text label to the row content.\n rowContent.appendChild(choiceTextLabel);\n\n // Create a choice input element.\n const choiceInput = document.createElement('input');\n choiceInput.setAttribute('type', this.amountOfCorrectChoices > 1 ? 'checkbox' : 'radio');\n choiceInput.setAttribute('id', `q${i}`);\n choiceInput.name = 'elearn-question';\n choiceInput.value = i;\n choiceInput.className = 'elearn-choice';\n\n // Create a checkmark span.\n const checkmark = document.createElement('span');\n checkmark.className = 'elearn-checkmark';\n checkmark.className += this.amountOfCorrectChoices > 1 ? '-box' : '';\n\n // Add the choice input element and the checkmark span to row content div.\n choiceTextLabel.appendChild(choiceInput);\n choiceTextLabel.appendChild(checkmark);\n }\n }\n\n /**\n * Called when a checkmark is clicked.\n */\n onCheckmarkClicked() {\n this.nextButton.classList.remove('disabled', 'disabled-input');\n this.nextButton.disabled = false;\n }\n\n /**\n * Checks if the question is answered correctly.\n * @returns {Boolean} True if the question is answered correctly, false otherwise.\n */\n isAnswerCorrect() {\n const radioInputs = this.container.querySelectorAll('.elearn-choice');\n\n const indexesOfCorrectChoices = this.questionChoices\n .filter((item) => item.is_correct)\n .map((item) => this.questionChoices.indexOf(item));\n\n const indexesOfChosenChoices = Array.from(radioInputs)\n .filter((item) => item.checked)\n .map((item) => Array.from(radioInputs).indexOf(item));\n\n // eslint-disable-next-line max-len\n return indexesOfCorrectChoices.every((item) => item === indexesOfChosenChoices[indexesOfCorrectChoices.indexOf(item)]);\n }\n\n /**\n * Resets the question.\n */\n reset() {\n // Get the elements that will reset.\n const buttonBackgroundElement = this.container.querySelector('.elearn-button-background');\n const choiceFeedbackElement = this.container.querySelector('.elearn-choice-feedback');\n const mediaQuestionElement = this.container.querySelector('.elearn-question-media');\n\n // Reset the background.\n buttonBackgroundElement.classList.remove('elearn-button-background-correct');\n buttonBackgroundElement.classList.remove('elearn-button-background-wrong');\n\n // Reset the choice feedback.\n choiceFeedbackElement.innerText = '';\n choiceFeedbackElement.classList.remove('elearn-choice-feedback-correct');\n choiceFeedbackElement.classList.remove('elearn-choice-feedback-wrong');\n\n // Remove the media.\n mediaQuestionElement.remove();\n\n // Reset the next button.\n this.nextButton.classList.remove('elearn-button-correct');\n this.nextButton.classList.remove('elearn-button-wrong');\n\n // Remove all rows.\n this.container.querySelectorAll('.choice-row').forEach((a) => {\n a.remove();\n });\n\n document.styleSheets[0].deleteRule('.elearn-choice-container .elearn-checkmark::after');\n document.styleSheets[0].addRule('.elearn-choice-container .elearn-checkmark::after', 'background: #719fb2 !important;');\n\n document.styleSheets[0].deleteRule('.elearn-choice-container input:checked ~ .elearn-checkmark-box');\n document.styleSheets[0].addRule('.elearn-choice-container input:checked ~ .elearn-checkmark-box', 'background: #719fb2 !important;');\n }\n\n /**\n * Shows the feedback of the question.\n */\n showFeedback() {\n // Get the elements.\n const radioInputs = this.container.querySelectorAll('.elearn-choice');\n const radioInputsBody = this.container.querySelectorAll('.elearn-choice-body');\n const buttonBackground = this.container.querySelector('.elearn-button-background');\n const choiceFeedback = this.container.querySelector('.elearn-choice-feedback');\n\n // Disable the radio buttons.\n this.disableRadioButtons();\n\n // If there are multiple correct answers.\n if (this.amountOfCorrectChoices > 1) {\n // Just show a message if the answers are correct or not.\n const feedback = this.container.querySelector('.elearn-choice-feedback');\n\n if (feedback === null) {\n throw new Error('Could not find .elearn-choice-feedback');\n }\n\n if (this.isAnswerCorrect()) {\n feedback.innerText = 'De gekozen antwoorden zijn correct!';\n }\n else {\n feedback.innerText = 'De gekozen antwoorden zijn niet correct!';\n }\n }\n // If there is only 1 correct answers.\n else {\n const checkedRadioInput = Array.from(radioInputs).filter((x) => x.checked)[0];\n\n const radioInputArray = Array.from(radioInputs);\n const indexOfCheckedRadioInput = radioInputArray.indexOf(checkedRadioInput);\n const chosenAnswer = this.questionChoices[indexOfCheckedRadioInput];\n // Show the feedback message for the chosen answer.\n this.container.querySelector('.elearn-choice-feedback').innerText = `${chosenAnswer.feedback}`;\n }\n\n // The class and color values depend on if the answer is correct or not.\n const feedbackClass = this.isAnswerCorrect() ? 'correct' : 'wrong';\n const feedbackColor = this.isAnswerCorrect() ? '#709a0b' : '#ca3b2c';\n\n // Add the class to all radio inputs.\n for (let i = 0; i < radioInputs.length; i++) {\n radioInputsBody[i].classList.add(`elearn-choice-body-${feedbackClass}`);\n radioInputsBody[i].classList.add(`elearn-choice-body-${feedbackClass}:hover`);\n\n radioInputsBody[i].classList.remove('elearn-choice-body:hover');\n }\n\n // Update the choice feedback and button background elements.\n choiceFeedback.classList.add(`elearn-choice-feedback-${feedbackClass}`);\n buttonBackground.classList.add(`elearn-button-background-${feedbackClass}`);\n\n // Update the next button.\n this.nextButton.classList.add(`elearn-button-${feedbackClass}`);\n\n // Show the correct color for the feedback.\n document.styleSheets[0].addRule('.elearn-choice-container .elearn-checkmark::after', `background: ${feedbackColor} !important;`);\n }\n\n /**\n * Disables the radio buttons.\n */\n disableRadioButtons() {\n const radioInputs = this.container.querySelectorAll('.elearn-choice');\n const radioInputsBody = this.container.querySelectorAll('.elearn-choice-body');\n const radioInputsContainer = this.container.querySelectorAll('.elearn-choice-container');\n\n // Disable all radio buttons.\n for (let i = 0; i < radioInputs.length; i++) {\n radioInputs[i].disabled = true;\n\n radioInputsBody[i].classList.add('disabled');\n radioInputsContainer[i].classList.add('disabled-input');\n }\n }\n}\n","/*\n * e-learner.js ~ Code that initializes and sets up the e-learning environment.\n */\n\nimport ELearnerQuestion from './e-learner-question';\n\nconst ButtonStatus = Object.freeze({send: 0, next: 1, viewScore: 2});\n\n/**\n * An E learner.\n */\nexport default class ELearner {\n /**\n * Initializes an E learner.\n * @param {any} target The target element.\n * @param {string} apiVideoKey The API video key.\n */\n constructor(target, apiVideoKey) {\n if (target === null || apiVideoKey === 0) {\n return;\n }\n\n this.container = target;\n this.questions = [];\n this.currentQuestion = null;\n this.apiVideoKey = apiVideoKey;\n this.amountOfCorrectAnswers = 0;\n this.buttonStatus = ButtonStatus.send;\n this.nextButton = this.container.querySelector('.next-button');\n this.finished = false;\n\n this.amountOfQuestions = this.questions.length;\n\n this.initialize();\n }\n\n /**\n * Initializes the E Learner.\n */\n initialize() {\n this.toggleLoadingScreen(true);\n\n this.getQuestions().then(() => {\n this.showQuestion(this.questions[0]);\n });\n\n this.nextButton.addEventListener('click', () => {\n switch (this.buttonStatus) {\n case ButtonStatus.send:\n if (this.currentQuestion.isAnswerCorrrect()) {\n this.amountOfCorrectAnswers += 1;\n }\n\n this.currentQuestion.showFeedback();\n\n if (this.finished) {\n this.nextButton.value = 'Bekijk score';\n this.buttonStatus = ButtonStatus.viewScore;\n }\n else {\n this.nextButton.value = 'Volgende';\n this.buttonStatus = ButtonStatus.next;\n }\n\n break;\n\n case ButtonStatus.next:\n this.goToNextQuestion();\n\n this.nextButton.value = 'Verstuur';\n this.buttonStatus = ButtonStatus.send;\n\n break;\n\n case ButtonStatus.viewScore:\n this.finish();\n\n break;\n\n default:\n }\n });\n\n if (this.container.contains(this.container.querySelector('.elearn-finished'))) {\n this.container.querySelector('.elearn-finished').remove();\n }\n }\n\n /**\n * Toggles the loading screen.\n * @param {Boolean} toggle Boolean value indicating,\n * if the loading screen should be shown or not.\n */\n static toggleLoadingScreen(toggle) {\n const loaderDiv = document.getElementById('elearn-pre');\n loaderDiv.style.display = toggle ? 'block' : 'none';\n }\n\n static fetchQuestionSet(id) {\n const baseUrl = window.location.href;\n return fetch(`${baseUrl}api/videoquestionset/?video=${id}`, {method: 'GET'})\n .then((res) => res.json().then((data) => data).catch(() => { }));\n }\n\n /**\n * Gets the questions.\n */\n getQuestions() {\n return this.fetchQuestionSet(this.apiVideoKey).then(((data) => {\n for (let i = 0; i < this.amountOfQuestions; i++) {\n const question = data[0].question[i];\n\n this.questions.push(\n new ELearnerQuestion(\n this.container,\n this.nextButton,\n question,\n i + 1,\n ),\n );\n }\n\n this.toggleLoadingScreen(false);\n }));\n }\n\n /**\n * Shows the given E learner question.\n * @param {ELearnerQuestion} question The E learner question to show.\n */\n showQuestion(question) {\n this.currentQuestion = question;\n\n question.show();\n\n this.container.querySelector('.elearn-question-count').innerText = `Vraag ${this.currentQuestion.number} van ${this.amountOfQuestions}`;\n\n if (this.currentQuestion.number === this.amountOfQuestions) {\n this.finished = true;\n }\n }\n\n /**\n * Finished the E learner.\n */\n finish() {\n const elearnMediaSection = this.container.querySelector('.elearn-media-section');\n const elearnBody = this.container.querySelector('.elearn-body');\n\n const eLearnerFinishedElement = document.createElement('div');\n eLearnerFinishedElement.className = 'elearn-finished';\n elearnBody.insertBefore(eLearnerFinishedElement, elearnMediaSection);\n\n const finishedText = document.createTextNode(`Je bent klaar! Je hebt ${this.amountOfCorrectAnswers} van de ${this.amountOfQuestions} vragen goed beantwoord.`);\n\n const finishedElement = document.createElement('p');\n finishedElement.className = 'elearn-finished-text';\n finishedElement.appendChild(finishedText);\n\n eLearnerFinishedElement.appendChild(finishedElement);\n\n this.currentQuestion.reset();\n }\n\n /**\n * Goes to the next question.\n */\n goToNextQuestion() {\n this.currentQuestion.reset();\n\n this.showQuestion(this.questions[this.currentQuestion.number]);\n }\n}\n","/*\n * Widget.js ~ Each instance represents a Widget.\n * TODO:\n * - Validate the settings that were provided to the Widget constructor.\n */\nimport 'formdata-polyfill';\nimport 'core-js/es/object';\nimport 'core-js/es/map';\n\nimport Video from './video';\nimport Overlay from './overlays';\nimport ELearner from './e-learner';\n\nexport const WIDGET_URL = `//${HOST_URL}/widget/v1/`;\nexport const RVG_CHECK_URL = `//${HOST_URL}/widget/v1/check-rvg/`;\n// export const AUTHENTICATION_URL = 'https://www.beeldsluiter.nl/endpoint/authenticate';\n\nexport default class Widget {\n // Constructs a Widget which is the starting point of the API.\n constructor(target, options = {}) {\n // Holds the ID onto which the widget is rendered.\n this.target = typeof (target) === 'string' ? document.querySelector(target) : target;\n\n // Mapping with the configuration of the Widget.\n this.map = new FormData();\n Object.keys(options).forEach((key) => {\n this.map.append(key, options[key]);\n });\n\n // Used to keep track of fullscreen of the player.\n this.isFullscreen = false;\n\n // Reference to the Video object.\n this.video = null;\n\n // Reference to the overlays over the Widget.\n this.overlays = [];\n\n // Reference to the eLearner.\n this.eLearner = null;\n\n // Reference to the current Chapter playing.\n this.currentChapter = null;\n\n // To edentify if the widget is a video or leaflet as rvg check\n this.widgetEdentifier = null;\n\n // Reference for getting the api video key, to use it in the elearner\n this.api_video_key = null;\n\n // Reference for the questionset retrieved from the api, used by the elearner\n this.questionSet = [];\n }\n\n // Renders the Video in the target provided.\n render() {\n // Attach the Widget stylesheet to the element .\n const widgetCss = document.createElement('link');\n // widgetCss.href = 'https://www.beeldsluiter.nl/static/assets/dist/widget.bundle.css';\n widgetCss.href = `//${HOST_URL}/static/widget/css/widget.css`;\n widgetCss.rel = 'stylesheet';\n widgetCss.type = 'text/css';\n document.head.appendChild(widgetCss);\n\n const fontawesomeCss = document.createElement('link');\n fontawesomeCss.href = '//maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css';\n fontawesomeCss.rel = 'stylesheet';\n fontawesomeCss.type = 'text/css';\n document.head.appendChild(fontawesomeCss);\n\n if (!document.querySelector('#bs_gtm')) {\n const googlyticsscript = document.createElement('script');\n googlyticsscript.id = 'bs_gtm';\n googlyticsscript.src = '//www.googletagmanager.com/gtag/js?id=UA-61752485-1';\n googlyticsscript.type = 'text/javascript';\n document.head.appendChild(googlyticsscript);\n\n window.dataLayer = window.dataLayer || [];\n window.gtag = function gtag(...args) {\n window.dataLayer.push(args);\n };\n window.gtag('js', new Date());\n window.gtag('config', 'UA-61752485-1');\n }\n\n try {\n // Generate video using the configuration provided.\n this.changeVideo(this.map);\n }\n catch (ex) {\n console.error(`An error has occurred: ${ex}`);\n }\n\n const self = this;\n\n window.addEventListener('resize', () => {\n self.widgetCss();\n });\n\n // document.querySelector(this.target).addEventListener(\"resize\", function(){\n // console.log('widget video resize');\n // });\n }\n\n static validateSettings() {\n throw new Error('Not implemented.');\n }\n\n changeVideo(form) {\n // Send a POST request and retrieve the Widget\n const request = new XMLHttpRequest();\n request.open('POST', WIDGET_URL);\n request.addEventListener('load', () => {\n // Render as a template so we can add offline event listeners.\n const template = document.createElement('div');\n template.innerHTML = request.responseText;\n const target = template.firstElementChild;\n // Create a new Video object.\n this.video = new Video(target.querySelector('video'));\n /**\n * Append EventListeners to the DOM\n * */\n\n const self = this;\n let mouseOverVideoControls = false;\n // ------------------------------------------------------------\n\n // Video controls ---------------------------------------------\n target.querySelector('.js--play-pause').addEventListener('click', () => {\n if (self.video.video.paused === true) {\n // Play the video\n self.video.video.play();\n }\n else {\n // Pause the video\n self.video.video.pause();\n }\n }, true);\n\n target.querySelector('#video').addEventListener('click', (event) => {\n const videoControls = document.getElementById('video-controls');\n const videoCursor = document.getElementById('video');\n\n if (event.target.classList.contains('player') || event.target.classList.contains('video')\n || event.target.classList.contains('overlay-container')) {\n if (self.video.video.paused === true) {\n // Play the video\n self.video.video.play();\n if (self.timeout == null && (document.fullscreenElement != null && document.fullscreenElement.classList.contains('video-container'))) {\n self.timeout = setTimeout(() => {\n videoControls.style.height = '0px';\n videoCursor.style.cursor = 'none';\n clearTimeout(self.timeout);\n self.timeout = null;\n }, 3000);\n }\n }\n else {\n // Pause the video\n self.video.video.pause();\n videoCursor.style.cursor = 'default';\n videoControls.style.height = 'auto';\n clearTimeout(self.timeout);\n self.timeout = null;\n }\n }\n }, true);\n\n target.querySelector('#video').addEventListener('mousemove', () => {\n const videoControls = document.getElementById('video-controls');\n const videoCursor = document.getElementById('video');\n videoControls.style.height = 'auto';\n videoCursor.style.cursor = 'default';\n if (self.timeout == null) {\n self.timeout = setTimeout(() => {\n if (!mouseOverVideoControls) {\n videoControls.style.height = '0px';\n videoCursor.style.cursor = 'none';\n }\n clearTimeout(self.timeout);\n self.timeout = null;\n }, 2000);\n }\n }, true);\n\n target.querySelector('#video-controls').addEventListener('mouseover', () => {\n mouseOverVideoControls = true;\n }, true);\n\n target.querySelector('#video-controls').addEventListener('mouseout', () => {\n mouseOverVideoControls = false;\n }, true);\n\n self.video.video.addEventListener('play', () => {\n // when the video plays it changes the play button\n target.querySelector('.js--play-pause').style.backgroundImage = `url('//${HOST_URL}/static/widget/image/pause_BS-blue.svg')`;\n }, true);\n\n self.video.video.addEventListener('pause', () => {\n target.querySelector('.js--play-pause').style.backgroundImage = `url('//${HOST_URL}/static/widget/image/play_BS-blue.svg')`;\n }, true);\n\n document.addEventListener('fullscreenchange', () => {\n // change fullscreen button\n if (document.fullscreenElement) {\n target.querySelector('.js--full-screen').style.backgroundImage = `url('//${HOST_URL}/static/widget/image/exit-fullscreen_BS-blue.svg')`;\n }\n else {\n target.querySelector('.js--full-screen').style.backgroundImage = `url('//${HOST_URL}/static/widget/image/fullscreen_BS-blue.svg')`;\n }\n });\n\n // makes the video go fullscreen\n target.querySelector('.js--full-screen').addEventListener('click', () => {\n if (document.fullscreenElement) {\n if (document.cancelFullScreen) {\n document.cancelFullScreen();\n }\n else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n }\n else if (document.webkitCancelFullScreen) {\n document.webkitCancelFullScreen();\n }\n else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n }\n }\n else if (self.video.video.requestFullscreen) {\n self.target.querySelector('.video-container').requestFullscreen();\n }\n else if (self.video.video.mozRequestFullScreen) {\n self.target.querySelector('.video-container').mozRequestFullScreen(); // Firefox\n }\n else if (self.video.video.webkitRequestFullscreen) {\n self.target.querySelector('.video-container').webkitRequestFullscreen(); // Chrome and Safari\n }\n }, true);\n\n // Creating calls for seek-bar\n target.querySelector(`#${this.video.video.id}`).addEventListener('loadeddata', () => {\n // Video is loaded and can be played\n target.querySelector('.js--seek-bar').max = parseInt(self.video.video.duration, 10) / 5;\n }, false);\n\n target.querySelector('.js--seek-bar').addEventListener('input', (elem) => {\n // Calculate the new time\n const time = elem.target.value * 5;\n // Update the video time\n self.video.video.currentTime = time;\n }, true);\n\n this.video.onTimeUpdate(() => {\n // Calculate the slider value\n const value = self.video.video.currentTime / 5;\n // Update the slider value\n target.querySelector('.js--seek-bar').value = value;\n }, true);\n\n target.querySelector('.js--volume-bar').addEventListener('input', () => {\n self.video.video.muted = false;\n target.querySelector('.js--mute').style.backgroundImage = `url('//${HOST_URL}/static/widget/image/volume_BS-blue.svg')`;\n\n if (target.querySelector('.js--volume-bar').value <= 0) {\n target.querySelector('.js--mute').style.backgroundImage = `url('//${HOST_URL}/static/widget/image/no-volume_BS-blue.svg')`;\n }\n\n // Update the video volume\n self.video.video.volume = target.querySelector('.js--volume-bar').value;\n }, true);\n\n target.querySelector('.js--mute').addEventListener('click', () => {\n if (self.video.video.muted) {\n // change mute button\n target.querySelector('.js--mute').style.backgroundImage = `url('//${HOST_URL}/static/widget/image/volume_BS-blue.svg')`;\n }\n else {\n target.querySelector('.js--mute').style.backgroundImage = `url('//${HOST_URL}/static/widget/image/no-volume_BS-blue.svg')`;\n }\n\n self.video.video.muted = !self.video.video.muted;\n }, true);\n\n // subtitles\n\n // turn all subtitle mode to hidden\n for (let i = 0; i < self.video.video.textTracks.length; i++) {\n self.video.video.textTracks[i].mode = 'hidden';\n }\n\n // when clicking on the subtitle button it shows the subtitle menu\n target.querySelector('.js--subtitle').addEventListener('click', () => {\n const subtitleMenu = document.getElementById('subtitle_ul');\n if (subtitleMenu.style.display === 'block') {\n subtitleMenu.style.display = 'none';\n }\n else {\n subtitleMenu.style.display = 'block';\n }\n }, true);\n\n target.querySelector('#subtitle_ul').addEventListener('click', () => {\n const subtitleMenu = document.getElementById('subtitle_ul');\n if (subtitleMenu.style.display === 'block') {\n subtitleMenu.style.display = 'none';\n }\n else {\n subtitleMenu.style.display = 'block';\n }\n }, true);\n\n // if there is no subtitle it doesnt show the subtitle button\n const subtitleMenu = target.querySelector('.js--subtitle');\n if (self.video.video.textTracks.length === 0) {\n subtitleMenu.style.display = 'none';\n }\n\n // when clicking on the off button it turns off the subtitle that is showing\n target.querySelector('.js--button_off').addEventListener('click', () => {\n const tracks = self.video.video.textTracks;\n for (let i = 0; i < tracks.length; i++) {\n tracks[i].mode = 'hidden';\n }\n }, true);\n\n // when clicking on a language button it changes the track mode to showing\n function attachListener(button, track) {\n button.addEventListener('click', (event) => {\n event.preventDefault();\n const tracks = self.video.video.textTracks;\n for (let i = 0; i < tracks.length; i++) {\n tracks[i].mode = 'hidden';\n }\n // eslint-disable-next-line no-param-reassign\n track.mode = 'showing';\n });\n }\n\n // when a subtitle is added it shows it in the subtitle menu\n const tracks = self.video.video.textTracks;\n for (let i = 0; i < tracks.length; i++) {\n const button = target.querySelector(`.js--button_${tracks[i].language}`);\n attachListener(button, tracks[i]);\n }\n // -----------------------------------------------------------\n\n // Registration Code overlay\n if (target.dataset.visualleaflet !== '') {\n this.widgetEdentifier = `_WDGT_LEAFLET_${target.dataset.visualleaflet}`;\n\n // GA add post\n window.gtag('config', 'UA-61752485-1', {\n page_path: `/leaflet/${target.dataset.visualleaflet}`,\n });\n }\n else {\n this.widgetEdentifier = `_WDGT__VIDEO_${target.dataset.video}`;\n }\n\n // GA add post\n window.gtag('config', 'UA-61752485-1', {\n page_path: `/video/${target.dataset.video}`,\n });\n\n // window.gtag('create', 'UA-61752485-1', 'auto', 'bs_gtm');\n // window.gtag('bs_gtm.set', 'page', '/video/' + target.dataset.video);\n // window.gtag('bs_gtm.send', 'pageview');\n\n // Attach Registration Code overlay. Capture and Stop event propagation.\n const handle = (event) => {\n if (!event.target.classList.contains('exempt-click-prevention')) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n if (this.map.get('authentication') === 'true') {\n target.querySelector('.widget').addEventListener('click', handle, true);\n }\n\n // Attach Overlay bindings\n target.querySelectorAll('.overlay > div').forEach((overlay) => {\n this.video.attachOverlay(overlay);\n });\n\n // Attach the click-play onclick handler\n target.querySelector('video').addEventListener('play', (e) => {\n e.preventDefault();\n if (localStorage.getItem(this.widgetEdentifier) != null || this.target.querySelector('video').attributes.noRVG) {\n this.video.play();\n }\n else {\n this.video.pause();\n }\n });\n\n // Attach the click-play onclick handler\n target.querySelector('video').addEventListener('click', () => {\n if (this.video.video.paused) {\n if ((localStorage.getItem(this.widgetEdentifier) != null || this.target.querySelector('video').attributes.noRVG)) {\n this.video.play();\n return;\n }\n }\n this.video.pause();\n });\n\n if (target.querySelector('.widget .js--button--fing-rvg-code') !== null) {\n target.querySelector('.widget .js--button--fing-rvg-code').addEventListener('click', (e) => {\n e.preventDefault();\n target.querySelector('.widget .js--rvg-info-text').style.maxHeight = target.querySelector('.widget .js--rvg-info-text').style.maxHeight === '0px' ? '150px' : '0px';\n });\n }\n\n const mainModalDiv = document.querySelector('.modal');\n\n // check the RVG code input\n const sendRVG = (videoId, code) => {\n const rvgCode = new XMLHttpRequest();\n const formValues = this.target.querySelector(`.widget #rvg_code_form_${this.video.video.id}`);\n const formData = new FormData(formValues);\n\n formData.append(`user_rvg_code_${videoId}`, code);\n\n rvgCode.open('POST', RVG_CHECK_URL);\n rvgCode.addEventListener('load', () => {\n if (JSON.parse(rvgCode.responseText).success === true) {\n if (mainModalDiv != null) {\n mainModalDiv.style.overflowY = 'auto';\n }\n this.target.querySelector(`.widget #widget-rvg-${this.video.video.id}`).parentElement.removeChild(this.target.querySelector(`.widget #widget-rvg-${this.video.video.id}`));\n\n const nextYear = new Date();\n nextYear.setYear(nextYear.getYear() + 1);\n localStorage.setItem(this.widgetEdentifier, true);\n this.video.play();\n return true;\n }\n const rvgField = this.target.querySelector(`#user_rvg_code_${this.video.video.id}`) !== null\n ? this.target.querySelector(`#user_rvg_code_${this.video.video.id}`)\n : this.target.querySelector(`#user_rvg_code_${this.video.video.id}_0`);\n\n // if(rvg_code !== null && rvg_code.value.length >= 1){\n if (code.length >= parseInt(formValues.getAttribute('data-rvg-length'), 10)) {\n rvgField.parentElement.classList.remove('wrong-rvg');\n this.target.querySelector(`#rvg_code_form_${this.video.video.id}_wrong_message`).style.display = 'none';\n }\n\n if (code.length >= parseInt(formValues.getAttribute('data-rvg-length'), 10)) {\n if (this.target.querySelector(`#user_rvg_code_${this.video.video.id}`) !== null) {\n this.target.querySelector(`#user_rvg_code_${this.video.video.id}`).value = '';\n }\n else {\n target.querySelectorAll('.new-rvg-input').forEach((e) => {\n e.value = '';\n });\n\n target.querySelector('.new-rvg-input').focus();\n }\n\n console.log('Wrong Rvg/Eu code.');\n rvgField.parentElement.classList.add('wrong-rvg');\n this.target.querySelector(`#rvg_code_form_${this.video.video.id}_wrong_message`).style.display = 'block';\n }\n return false;\n });\n rvgCode.send(formData);\n };\n\n if (localStorage.getItem(this.widgetEdentifier) != null || target.querySelector('video').attributes.noRVG) {\n target.querySelector(`.widget #widget-rvg-${this.video.video.id}`).parentElement.removeChild(target.querySelector(`.widget #widget-rvg-${this.video.video.id}`));\n }\n else {\n target.querySelectorAll('.new-rvg-input').forEach((e) => {\n e.addEventListener('keydown', (event) => {\n // If the backspace key is pressed, or the value is empty.\n if (event.which === 8 && event.target.value === '') {\n event.target.previousElementSibling.focus();\n }\n });\n /* eslint-disable no-param-reassign */\n e.addEventListener('input', (event) => {\n const input = event.target.value;\n\n /*\n If the user presses and holds the key,\n prevent the input field from showing more than one character.\n */\n if (input.length > 1 || !Number.isInteger(parseInt(input, 10))) {\n event.target.value = event.target.value[0] || '';\n }\n else if (event.target.nextElementSibling !== null && input !== '') {\n event.target.nextElementSibling.focus();\n }\n });\n /* eslint-enable no-param-reassign */\n e.addEventListener('keyup', () => {\n let code = '';\n\n target.querySelectorAll('.new-rvg-input').forEach((event) => {\n code += event.value;\n });\n\n sendRVG(this.video.video.id, code);\n });\n\n e.addEventListener('focus', () => {\n if (document.querySelector('.modal') != null) {\n document.querySelector('.modal').style.overflowY = 'hidden';\n }\n });\n });\n }\n\n function modalScrollController() {\n const inputItems = document.querySelectorAll('.new-rvg-input');\n for (let i = 0; i < inputItems.length; i++) {\n if (inputItems[i] === document.activeElement) {\n mainModalDiv.style.overflowY = 'hidden';\n break;\n }\n mainModalDiv.style.overflowY = 'auto';\n }\n }\n\n if (mainModalDiv != null) {\n mainModalDiv.addEventListener('click', () => {\n modalScrollController();\n });\n mainModalDiv.addEventListener('keydown', () => {\n modalScrollController();\n });\n }\n // ------------------------------------------------------------\n\n // Google tag manager -----------------------------------------\n let videoTenpercent = false;\n let videoTwentypercent = false;\n let videoThirtypercent = false;\n let videoFortypercent = false;\n let videoFiftypercent = false;\n let videoSixtypercent = false;\n let videoSeventypercent = false;\n let videoEightypercent = false;\n let videoNinetypercent = false;\n let videoHunderdpercent = false;\n\n this.video.onTimeUpdate((time, duration, video) => {\n if (window.bs_dataLayer) {\n const currentTime = Math.floor((time / duration) * 100);\n const dataLayerObject = {\n event: 'widget_video_playing',\n widget_video_name: `Widget_Video_${video.getAttribute('visualleafletname')}_${video.getAttribute('languagename')}`,\n widget_video_current_time: `${currentTime} %`,\n };\n\n if (currentTime === 10 && !videoTenpercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoTenpercent = true;\n videoHunderdpercent = false;\n }\n else if (currentTime === 20 && !videoTwentypercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoTwentypercent = true;\n videoTenpercent = false;\n }\n else if (currentTime === 30 && !videoThirtypercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoThirtypercent = true;\n videoTwentypercent = false;\n }\n else if (currentTime === 40 && !videoFortypercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoFortypercent = true;\n videoThirtypercent = false;\n }\n else if (currentTime === 50 && !videoFiftypercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoFiftypercent = true;\n videoFortypercent = false;\n }\n else if (currentTime === 60 && !videoSixtypercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoSixtypercent = true;\n videoFiftypercent = false;\n }\n else if (currentTime === 70 && !videoSeventypercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoSeventypercent = true;\n videoSixtypercent = false;\n }\n else if (currentTime === 80 && !videoEightypercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoEightypercent = true;\n videoSeventypercent = false;\n console.log(currentTime);\n }\n else if (currentTime === 90 && !videoNinetypercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoNinetypercent = true;\n videoEightypercent = false;\n }\n else if (currentTime === 100 && !videoHunderdpercent) {\n window.bs_dataLayer.push(dataLayerObject);\n videoHunderdpercent = true;\n videoNinetypercent = false;\n }\n }\n });\n\n // Chapter, FAQ and Language events ----------------------------\n\n const modalContent = document.querySelector('.modal-content');\n modalContent.addEventListener('click', (event) => {\n const chapterButton = this.target.querySelector('.widget .js--chapter_btn');\n const languageButton = this.target.querySelector('.widget .js--language_btn');\n const faqButton = this.target.querySelector('.widget .js--faq_btn');\n\n if (chapterButton.classList.contains('active') && !chapterButton.contains(event.target)) {\n chapterButton.classList.remove('active');\n this.target.querySelector('.widget .js--chapters').classList.add('hide');\n this.video.video.classList.toggle('blur');\n }\n else if (languageButton.classList.contains('active') && !languageButton.contains(event.target)) {\n languageButton.classList.remove('active');\n this.target.querySelector('.widget .js--languages').classList.add('hide');\n }\n else if (faqButton.classList.contains('active') && !faqButton.contains(event.target)) {\n faqButton.classList.remove('active');\n this.target.querySelector('.widget .js--faqs').classList.add('hide');\n }\n // Add blur on video\n this.video.video.classList.toggle('blur');\n });\n\n target.querySelector('.js--chapter_btn').addEventListener('click', () => {\n if (this.target.querySelector('.widget .js--chapters').classList.contains('hide')) {\n this.target.querySelector('.widget .js--chapters').classList.remove('hide');\n this.target.querySelector('.widget .js--chapter_btn').classList.add('active');\n\n if (target.querySelector('.js--faq_btn') != null) {\n this.target.querySelector('.widget .js--faqs').classList.add('hide');\n this.target.querySelector('.widget .js--faq_btn').classList.remove('active');\n }\n this.video.pause();\n }\n else {\n this.target.querySelector('.widget .js--chapters').classList.add('hide');\n this.target.querySelector('.widget .js--chapter_btn').classList.remove('active');\n this.video.play();\n }\n\n // turn off other tabs when clicked on chapter\n const languageButton = this.target.querySelector('.js--language_btn');\n if (languageButton) {\n if (languageButton.classList.contains('active')) {\n languageButton.classList.toggle('active');\n this.target.querySelector('.widget .js--languages').classList.toggle('hide');\n }\n }\n // Add blur on video\n this.video.video.classList.toggle('blur');\n });\n\n if (target.querySelector('.js--faq_btn') != null) {\n target.querySelector('.js--faq_btn').addEventListener('click', () => {\n if (this.target.querySelector('.widget .js--faqs').classList.contains('hide')) {\n this.target.querySelector('.widget .js--faqs').classList.remove('hide');\n this.target.querySelector('.widget .js--faq_btn').classList.add('active');\n\n const chapterButton = this.target.querySelector('.widget .js--chapter_btn');\n if (chapterButton) {\n if (chapterButton.classList.contains('active')) {\n chapterButton.classList.remove('active');\n this.target.querySelector('.widget .js--chapters').classList.add('hide');\n this.video.video.classList.toggle('blur');\n }\n }\n\n const languageButton = this.target.querySelector('.widget .js--language_btn');\n if (languageButton) {\n if (languageButton.classList.contains('active')) {\n languageButton.classList.remove('active');\n this.target.querySelector('.widget .js--languages').classList.add('hide');\n this.video.video.classList.toggle('blur');\n }\n }\n }\n else {\n this.target.querySelector('.widget .js--faqs').classList.add('hide');\n this.target.querySelector('.widget .js--faq_btn').classList.remove('active');\n }\n });\n }\n\n target.querySelector('.js--language_btn').addEventListener('click', () => {\n const chapterButton = this.target.querySelector('.widget .js--chapter_btn');\n if (chapterButton) {\n if (chapterButton.classList.contains('active')) {\n chapterButton.classList.remove('active');\n this.target.querySelector('.widget .js--chapters').classList.add('hide');\n this.video.video.classList.toggle('blur');\n }\n }\n\n const faqButton = this.target.querySelector('.widget .js--faq_btn');\n if (faqButton) {\n if (faqButton.classList.contains('active')) {\n faqButton.classList.remove('active');\n this.target.querySelector('.widget .js--faqs').classList.add('hide');\n }\n }\n\n this.target.querySelector('.widget .js--languages').classList.toggle('hide');\n this.target.querySelector('.widget .js--language_btn').classList.toggle('active');\n });\n\n // Attach Chapter onclick handlers.\n target.querySelectorAll('.js--chapters li a').forEach((chapter) => {\n chapter.addEventListener('click', (e) => {\n this.video.goto(e.target.dataset.time);\n this.video.play();\n this.target.querySelector('.js--chapter_btn').click();\n if (window.bs_dataLayer) {\n window.bs_dataLayer.push({\n event: 'chapter_button',\n chapter_name: e.target.getAttribute('chapter-title'),\n widget_video_name: `Widget_Video_${e.target.getAttribute('visualleafletname')}_${e.target.getAttribute('languagename')}`,\n });\n }\n });\n });\n\n // Attach FAQ onclick handlers.\n target.querySelectorAll('.js--faqs li a').forEach((faq) => {\n faq.addEventListener('click', (e) => {\n this.video.goto(e.target.dataset.time);\n this.target.querySelector('.widget .js--faqs').classList.add('hide');\n this.target.querySelector('.widget .js--faq_btn').classList.remove('active');\n });\n });\n\n // Attach Language onclick handlers.\n target.querySelectorAll('.js--languages li:not(.active)').forEach((language) => {\n language.addEventListener('click', (e) => {\n this.map.set('video', e.target.dataset.video);\n this.map.set('language_change', true);\n this.map.set('authentication', false);\n this.changeVideo(this.map);\n if (e.target.getAttribute('language-name') !== null && window.bs_dataLayer) {\n window.bs_dataLayer.push({\n event: 'video_widget_language_selected',\n video_widget_language_button_name: e.target.getAttribute('language-name'),\n widget_video_name: `Widget_Video_${e.target.getAttribute('visualleafletname')}_${e.target.getAttribute('languagename')}`,\n });\n }\n });\n });\n\n // Attach Videobutton onclick handlers.\n target.querySelectorAll('.video-recommendation').forEach((button) => {\n button.addEventListener('click', () => {\n this.map.set('video', button.dataset.video);\n this.map.set('authentication', false);\n this.changeVideo(this.map);\n });\n });\n\n // Attach Eventbutton onclick handlers.\n target.querySelectorAll('.event-button').forEach((button) => {\n button.addEventListener('click', (e) => {\n target.dispatchEvent(new Event(e.target.dataset.event));\n });\n });\n\n this.target.innerHTML = '';\n this.target.appendChild(target);\n\n /**\n * Append EventListeners to the DOM after the DOM is inserted\n * */\n\n // Dynamically update the chapter menu.\n this.currentChapter = null;\n this.video.onTimeUpdate((time) => {\n let chosen = null;\n let chapterNo = 0;\n\n const chapters = Array.prototype.filter.call(this.target.querySelectorAll('.js--chapters li a'), (f) => !f.classList.contains('hidden'));\n\n chapters.forEach((chapter) => {\n if (chapter.dataset.time <= time) {\n chosen = chapter;\n chapterNo += 1;\n }\n });\n\n if (chapterNo === chapters.length && chapters[chapterNo - 1].classList.contains('hidden')) {\n this.video.gotoLastChapterAfterCurrent = true;\n }\n\n if (this.currentChapter !== chosen && chosen !== null) {\n if (this.currentChapter != null) {\n this.currentChapter.classList.remove('active');\n }\n /*\n Check if video should go to the last chapter\n after the current chapter has ended\n */\n if (this.video.gotoLastChapterAfterCurrent) {\n chosen = chapters[chapters.length - 1];\n this.video.goto(chosen.dataset.time);\n }\n\n this.currentChapter = chosen;\n this.currentChapter.classList.add('active');\n }\n });\n // --------------------------------\n\n // Learning initialization --------\n\n const learnerButton = this.target.querySelector('.video-learner-button');\n let elem = this.target.querySelector('.video-learning-container');\n\n function removeElement(elementClass) {\n const elements = document.getElementsByClassName(elementClass);\n\n while (elements[0]) {\n elements[0].parentNode.removeChild(elements[0]);\n }\n }\n\n function resetColors() {\n const buttonBackground = document.querySelector('.elearn-button-background');\n const choiceFeedback = document.querySelector('.elearn-choice-feedback');\n const elearnButton = document.querySelector('.elearn-button');\n document.querySelector('.elearn-choice-feedback').innerText = '';\n\n choiceFeedback.classList.remove('elearn-choice-feedback-correct');\n buttonBackground.classList.remove('elearn-button-background-correct');\n elearnButton.classList.remove('elearn-button-correct');\n\n choiceFeedback.classList.remove('elearn-choice-feedback-wrong');\n buttonBackground.classList.remove('elearn-button-background-wrong');\n\n elearnButton.classList.remove('elearn-button-wrong');\n\n document.styleSheets[0].deleteRule('.elearn-choice-container .elearn-checkmark::after');\n document.styleSheets[0].addRule('.elearn-choice-container .elearn-checkmark::after', 'background: #719fb2 !important;');\n\n document.styleSheets[0].deleteRule('.elearn-choice-container input:checked ~ .elearn-checkmark-box');\n document.styleSheets[0].addRule('.elearn-choice-container input:checked ~ .elearn-checkmark-box', 'background: #719fb2 !important;');\n }\n\n function exitHandler() {\n if (document.webkitIsFullScreen === false) {\n elem.style.display = 'none';\n removeElement('choice-row');\n removeElement('elearn-choice-body');\n removeElement('elearn-choice-container');\n removeElement('elearn-choice');\n removeElement('elearn-checkmark');\n removeElement('elearn-question-media');\n\n resetColors();\n }\n else if (document.mozFullScreen === false) {\n elem.style.display = 'none';\n removeElement('choice-row');\n removeElement('elearn-choice-body');\n removeElement('elearn-choice-container');\n removeElement('elearn-choice');\n removeElement('elearn-checkmark');\n removeElement('elearn-question-media');\n\n resetColors();\n }\n else if (document.msFullscreenElement === false) {\n elem.style.display = 'none';\n removeElement('choice-row');\n removeElement('elearn-choice-body');\n removeElement('elearn-choice-container');\n removeElement('elearn-choice');\n removeElement('elearn-checkmark');\n removeElement('elearn-question-media');\n\n resetColors();\n }\n }\n\n // Open fullscreen of e-learner overlay on button click\n if (learnerButton != null) {\n if (learnerButton.getAttribute('listener') !== 'true') {\n learnerButton.addEventListener('click', () => {\n if (elem != null) {\n elem.classList.toggle('hidden');\n }\n\n const targetElement = this.target.querySelector('.video-learning-container');\n\n this.eLearner = new ELearner(targetElement, this.video.video.id.match(/\\d+/)[0], 0);\n\n if (elem.requestFullscreen) {\n this.video.pause();\n targetElement.style.display = 'block';\n elem.requestFullscreen();\n }\n else if (elem.mozRequestFullScreen) {\n /* Firefox */\n this.video.pause();\n elem.style.display = 'block';\n elem.mozRequestFullScreen();\n }\n else if (elem.webkitRequestFullscreen) {\n /* Chrome, Safari & Opera */\n this.video.pause();\n elem.style.display = 'block';\n elem.webkitRequestFullscreen();\n }\n else if (elem.msRequestFullscreen) {\n /* IE/Edge */\n this.video.pause();\n elem.style.display = 'block';\n elem = window.top.document.body; // To break out of frame in IE\n elem.msRequestFullscreen();\n }\n });\n\n learnerButton.setAttribute('listener', 'true');\n }\n }\n\n // Check if fullscreen is active, close elearner on fullscreenExit\n if (document.addEventListener) {\n document.addEventListener('fullscreenchange', exitHandler, false);\n document.addEventListener('mozfullscreenchange', exitHandler, false);\n document.addEventListener('MSFullscreenChange', exitHandler, false);\n document.addEventListener('webkitfullscreenchange', exitHandler, false);\n }\n // ---------------------------------\n\n // Overlay Initialization ----------\n this.overlay = new Overlay(this.target);\n this.widgetCss();\n });\n request.send(form);\n }\n\n gotoOverlay(sec) {\n if (sec !== -1) {\n this.video.goto(sec);\n }\n this.video.play();\n }\n\n // function that checks the size of the widget and assigns the appropriate class.\n widgetCss() {\n if (this.target.scrollWidth >= 800) {\n this.target.querySelector('.widget #CFAQLV').setAttribute('class', 'flex direction-row justify-content-center wrap-break');\n this.target.querySelector('.widget').classList.remove('widget--small');\n }\n else {\n this.target.querySelector('.widget #CFAQLV').setAttribute('class', 'flex direction-row justify-content-center wrap-break-wrap');\n this.target.querySelector('.widget').classList.add('widget--small');\n }\n }\n\n static getFullscreenProps() {\n const keys = 'fullscreenElement mozFullScreenElement msFullscreenElement webkitFullscreenElement'.split(' ');\n const prefixes = ' moz ms webkit'.split(' ');\n for (let i = 0; i < keys.length; i++) {\n if (keys[i] in document) {\n return {\n fullscreenElement: keys[i],\n fullscreenchange: `${prefixes[i]}fullscreenchange`,\n exitFullScreen: prefixes[i] + (prefixes[i] === 'moz' ? 'CancelFullScreen' : 'ExitFullscreen'),\n };\n }\n }\n return {\n fullscreenElement: keys[0],\n fullscreenchange: 'fullscreenchange',\n exitFullScreen: 'ExitFullscreen',\n };\n }\n}\n\n// ---------------------------------------\n\n// For each polyfill, internet explorer 11\nif ('NodeList' in window && !NodeList.prototype.forEach) {\n console.info('polyfill for IE11');\n NodeList.prototype.forEach = function (callback, thisArg) {\n const self = thisArg || window;\n for (let i = 0; i < this.length; i++) {\n callback.call(self, this[i], i, this);\n }\n };\n}\n\nwindow.Widget = Widget;\n","/*! formdata-polyfill. MIT License. Jimmy W?rting */\n;(function(){var h;function l(a){var b=0;return function(){return b>>0)+\"_\",e=0;return b});\nr(\"Symbol.iterator\",function(a){if(a)return a;a=Symbol(\"Symbol.iterator\");for(var b=\"Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array\".split(\" \"),c=0;c