{"version":3,"file":"js/videoplayer.a93971ff25ab390fab27.js","mappings":"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","sources":["webpack://netzkern.am/./src/Foundation/Common/code/Frontend/General/global-js/SelfInitComponent.js","webpack://netzkern.am/./src/Foundation/ContentElements/code/MediaPlayer/VideoPlayer/Scripts/videoplayer.js","webpack://netzkern.am/./src/Foundation/ContentElements/code/MediaPlayer/VideoPlayer/Scripts/videoplayer.cmp.js"],"sourcesContent":["import _debounce from \"lodash.debounce/index\";\r\n\r\n\r\nconst readyStates = {\r\n loading: 0,\r\n interactive: 1,\r\n complete: 2\r\n}\r\n\r\n/**\r\n *\r\n * SelfInitComponent - for every class / component deriving from it and overriding init, init will be executed on DOMReady\r\n * @module SelfInitComponent\r\n */\r\n\r\n/** The class SelfInitComponent*/\r\nexport default class SelfInitComponent {\r\n\r\n /**\r\n * constructor: Creates an instance of SelfInitComponent.\r\n * @param {string} selector selector to find corresponding element in DOM\r\n * @param {Object} [implementedEvents=null] the options object\r\n * @param {boolean} [implementedEvents.leading=true] specify invoking on the leading edge of the timeout (setting false: trailing edge of timeout)\r\n * @param {boolean} [implementedEvents.executeImmediate=false] execute function immediately, then listen for event\r\n * @param {number} [implementedEvents.debounceTime=50] number of milliseconds to delay\r\n * @memberof SelfInitComponent\r\n */\r\n constructor(selector, implementedEvents = null) {\r\n\r\n const callEvents = () => {\r\n if (document.querySelectorAll(selector) != null && document.querySelectorAll(selector).length > 0) {\r\n this.init();\r\n }\r\n if (implementedEvents) {\r\n for (const eventKey in implementedEvents) {\r\n if (this.__proto__[eventKey]) {\r\n if (implementedEvents[eventKey]) {\r\n if (typeof implementedEvents[eventKey] == \"object\") {\r\n if (!implementedEvents[eventKey][\"debounce\"]) {\r\n window.addEventListener(eventKey, this.__proto__[eventKey]);\r\n } else {\r\n debounce(eventKey, this.__proto__[eventKey], implementedEvents[eventKey].debounceTime, implementedEvents[eventKey].trailing);\r\n }\r\n if (implementedEvents[eventKey][\"executeImmediate\"]) {\r\n this.__proto__[eventKey]();\r\n }\r\n } else {\r\n debounce(eventKey, this.__proto__[eventKey]);\r\n }\r\n } else {\r\n window.addEventListener(eventKey, this.__proto__[eventKey]);\r\n }\r\n // eslint-disable-next-line no-undef\r\n } else if ((`${BUILDMODE}`) == \"development\") {\r\n //render an error-message in the browser-console in development mode, if there is an event in the given parameter object with no corresponding method\r\n // eslint-disable-next-line no-console\r\n console.warn(`trying to assign an non-existing function to the event '${eventKey}'`);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n if (readyStates[document.readyState] < readyStates.interactive) {\r\n window.addEventListener(\"load\", callEvents);\r\n } else {\r\n callEvents();\r\n }\r\n }\r\n // default init method to be overriden by child components\r\n init() { }\r\n}\r\n\r\nfunction debounce(eventKey, givenFunction, debounceTime = 50, leading = true) {\r\n const debounced_func = _debounce(givenFunction, debounceTime, {\r\n leading: leading,\r\n trailing: !leading\r\n });\r\n window.addEventListener(eventKey, debounced_func);\r\n}","import \"mediaelement\";\r\nimport \"mediaelement/src/js/languages/de\";\r\nimport \"mediaelement-plugins-custom-akme/dist/a11y/a11y-i18n\";\r\nimport \"mediaelement-plugins-custom-akme/dist/a11y/a11y\";\r\nimport \"bootstrap/js/dist/modal\";\r\n\r\nvar VideoPlayer = (() => {\r\n\r\n class AMVideoPlayer {\r\n constructor(element) {\r\n this.element = element;\r\n this.settings = {\r\n mejs: {\r\n features: [\r\n \"current\",\r\n \"progress\",\r\n \"duration\",\r\n \"playpause\",\r\n \"tracks\",\r\n \"a11y\",\r\n \"volume\",\r\n \"fullscreen\",\r\n ],\r\n toggleCaptionsButtonWhenOnlyOne: true\r\n }\r\n };\r\n\r\n this.player = {\r\n mejs: null,\r\n video: this.element.querySelector(\"video\"),\r\n captioncontrolsBtn: null,\r\n captioncontrolsInput: null,\r\n captions: null,\r\n audiodescription: null,\r\n videodescription: null,\r\n modal: null,\r\n playBtn: null,\r\n suggestions: null,\r\n fullscreenBtn: null,\r\n fullscreenActive: false,\r\n replayBtn: null,\r\n };\r\n\r\n this.videoTrackingName = this.element.getAttribute(\"stylelabs-id\") || \"videotracking-name-missing\";\r\n\r\n this.state = {\r\n hadTimeSliderInteraction: false,\r\n trackingKeysToFireOnceOnly: {\r\n [TrackingKeys.VIDEO_25_PERCENT]: false,\r\n [TrackingKeys.VIDEO_50_PERCENT]: false,\r\n [TrackingKeys.VIDEO_75_PERCENT]: false,\r\n [TrackingKeys.VIDEO_FULL]: false,\r\n [TrackingKeys.VIDEO_WATCHED_10_SEC]: false,\r\n [TrackingKeys.VIDEO_WATCHED_30_SEC]: false,\r\n [TrackingKeys.VIDEO_WATCHED_60_SEC]: false,\r\n [TrackingKeys.VIDEO_WATCHED_1_MIN_30_SEC]: false,\r\n },\r\n ignoreNextTwoConsecutivePlayingEventsForTracking: false,\r\n ignoredPlayingEventsCount: 0,\r\n playCount: 0,\r\n currentTime: 10,\r\n firstTimePlayVideo: true\r\n };\r\n\r\n this.displayVideo();\r\n }\r\n\r\n bindEvents() {\r\n var that = this;\r\n\r\n this.player.suggestions = this.player.suggestions || $(this.element).find(\".videoPlayer__suggestions\");\r\n this.player.captioncontrolsBtn = this.player.captioncontrolsBtn || $(this.element).find(\".mejs__captions-button\");\r\n this.player.captioncontrolsInput = this.player.captioncontrolsInput || $(this.element).find(\".mejs__captions-selector-list input\");\r\n this.player.fullscreenBtn = this.player.fullscreenBtn || $(this.element).find(\".mejs__fullscreen-button\");\r\n this.player.replayBtn = this.player.replayBtn || $(this.element).find(\".videoPlayer--replay\");\r\n\r\n if (this.player.replayBtn) {\r\n this.player.replayBtn.on('click', () => {\r\n if (this.player.fullscreenActive) {\r\n this.player.fullscreenBtn.click();\r\n }\r\n });\r\n }\r\n\r\n if (this.player.fullscreenBtn) {\r\n this.player.fullscreenBtn.on('click', () => {\r\n if ($(this.element).find(\".mejs__container-fullscreen\").length > 0) {\r\n this.player.fullscreenActive = true;\r\n }\r\n else {\r\n this.player.fullscreenActive = false;\r\n }\r\n });\r\n }\r\n\r\n this.player.mejs.node.addEventListener(\"ended\", () => {\r\n this.displaySuggestions();\r\n }, {\r\n once: true,\r\n });\r\n\r\n //Remove Tabstob from hidden Captions input\r\n if (this.player.captioncontrolsInput) {\r\n this.player.captioncontrolsInput.attr(\"tabindex\", \"-1\");\r\n }\r\n\r\n this.player.captioncontrolsBtn.on(\"keydown\", e => {\r\n if (e.which === 13) {\r\n e.preventDefault();\r\n this.player.captioncontrolsBtn.trigger(\"click\");\r\n }\r\n });\r\n\r\n if ($(this.element).hasClass(\"videoPlayer__modal--active\")) {\r\n this.handleModal();\r\n }\r\n\r\n const remotePlayEl = document.querySelector('[mejs-remote-play=\"' + this.player.mejs.media.id + '\"]');\r\n\r\n if (remotePlayEl) {\r\n $(remotePlayEl).click(\"click\", () => {\r\n this.player.mejs.play();\r\n });\r\n }\r\n\r\n $(window).on(\"resize\", function () {\r\n that.adjustPlayerHeight(that.element);\r\n });\r\n\r\n that.adjustPlayerHeight(that.element);\r\n\r\n\r\n document.addEventListener('fullscreenchange', (e) => {\r\n if ($(this.element).find(\".mejs__container-fullscreen\").length > 0) {\r\n this.player.fullscreenActive = false;\r\n }\r\n });\r\n\r\n document.addEventListener('webkitfullscreenchange', (e) => {\r\n if ($(this.element).find(\".mejs__container-fullscreen\").length > 0) {\r\n this.player.fullscreenActive = false;\r\n }\r\n });\r\n\r\n document.addEventListener('mozfullscreenchange', (e) => {\r\n if ($(this.element).find(\".mejs__container-fullscreen\").length > 0) {\r\n this.player.fullscreenActive = false;\r\n }\r\n });\r\n\r\n document.addEventListener('MSFullscreenChange', (e) => {\r\n if ($(this.element).find(\".mejs__container-fullscreen\").length > 0) {\r\n this.player.fullscreenActive = false;\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adjusts the video player size if the controls are displayed in two rows.\r\n * Needs to call after a resize event happened to calculate the new height of the video.\r\n * Video player height is always the height of the player itself because the controls are usually inside the video (overlayed)\r\n * This function is only because two row'd controls are spaned over the actual video player height. :(\r\n * @param {any} element\r\n * \r\n * This code must be the same as in the solution of the lightbox project lightbox.js !!!\r\n * Workaround because we have not access between both projects\r\n * \r\n */\r\n adjustPlayerHeight(element) {\r\n window.setTimeout(function () {\r\n var controls = element.querySelector(\".mejs__controls\");\r\n var videoContainer = element.querySelector(\".videoPlayer__video\");\r\n var style = null;\r\n\r\n if (window.getComputedStyle) {\r\n style = getComputedStyle(controls, null);\r\n } else {\r\n style = controls.currentStyle;\r\n }\r\n\r\n var bottomVal = parseFloat(style.bottom);\r\n var heightVal = parseFloat(style.height);\r\n\r\n if (bottomVal > 0 && !isNaN(heightVal)) {\r\n /* Set height on video container - previously we set the value on the element but then it conflicted with the parent margin (was ignored) */\r\n videoContainer.style.marginBottom = (heightVal - bottomVal) + \"px\";\r\n } else {\r\n videoContainer.style.removeProperty(\"margin-bottom\");\r\n }\r\n }, 500); /* Timeout is only for the case: Fullscreen --> Press ESC - Weird behavior without a delay (wrong height) */\r\n }\r\n\r\n throttled(limit, callback) {\r\n var waiting = false;\r\n return function () {\r\n if (!waiting) {\r\n callback.apply(this, arguments);\r\n waiting = true;\r\n setTimeout(function () {\r\n waiting = false;\r\n }, limit);\r\n }\r\n };\r\n }\r\n\r\n detectTouch() {\r\n return ((\"ontouchstart\" in window) ||\r\n (navigator.maxTouchPoints > 0) ||\r\n (navigator.msMaxTouchPoints > 0));\r\n }\r\n\r\n displayVideo(startPlayback = false) {\r\n //eslint-disable-next-line\r\n mejs.i18n.language(\"de\"); // Setting German language\r\n //eslint-disable-next-line\r\n this.player.mejs = new MediaElementPlayer(this.player.video, this.settings.mejs);\r\n\r\n $(this.element).removeClass(\"ended\");\r\n\r\n if (startPlayback) {\r\n this.player.mejs.play();\r\n }\r\n\r\n if (this.player.mejs.node) {\r\n const timeSliderDownEventType = this.detectTouch() ? \"touchstart\" : \"mousedown\";\r\n this.player.mejs.node.addEventListener(timeSliderDownEventType, () => {\r\n this.state.hadTimeSliderInteraction = true;\r\n });\r\n\r\n const timeSliderUpEventType = this.detectTouch() ? \"touchend\" : \"mouseup\";\r\n this.player.mejs.node.addEventListener(timeSliderUpEventType, () => {\r\n // Use setTimout here, because mobile browsers trigger the pause event twice after touchstart!\r\n window.setTimeout(() => {\r\n this.state.hadTimeSliderInteraction = false;\r\n }, 500);\r\n });\r\n\r\n this.player.mejs.node.addEventListener(\"playing\", () => {\r\n if (this.state.hadTimeSliderInteraction) {\r\n this.state.hadTimeSliderInteraction = false;\r\n } else {\r\n handlePlayingEventTracking();\r\n this.state.isPaused = false;\r\n }\r\n });\r\n\r\n this.player.mejs.node.addEventListener(\"pause\", () => {\r\n if (!this.state.hadTimeSliderInteraction) {\r\n if (this.player.currentTime < this.player.video.duration) {\r\n this.trackEvent(TrackingKeys.VIDEO_PAUSE);\r\n }\r\n this.state.isPaused = true;\r\n }\r\n });\r\n\r\n const handlePlayingEventTracking = () => {\r\n if (this.state.ignoreNextTwoConsecutivePlayingEventsForTracking && !this.state.firstTimePlayVideo) {\r\n this.state.ignoredPlayingEventsCount++;\r\n if (this.state.ignoredPlayingEventsCount === 2) {\r\n this.state.ignoreNextTwoConsecutivePlayingEventsForTracking = false;\r\n this.state.ignoredPlayingEventsCount = 0;\r\n }\r\n } else {\r\n if (this.state.isPaused) {\r\n this.trackEvent(TrackingKeys.VIDEO_CONTINUE);\r\n } else {\r\n //this.trackEvent(TrackingKeys.VIDEO_PLAY);\r\n this.state.playCount = this.state.playCount + 1;\r\n this.state.firstTimePlayVideo = false;\r\n this.trackEvent(TrackingKeys.VIDEO_PLAY_COUNT + this.state.playCount);\r\n }\r\n }\r\n };\r\n\r\n const timeUpdateHandler = () => {\r\n if (this.player.video.duration) {\r\n const percent = parseInt((100 / this.player.video.duration) * this.player.video.currentTime);\r\n if (percent >= 99) {\r\n this.trackEvent(TrackingKeys.VIDEO_FULL);\r\n } else if (this.player.video.currentTime > this.state.currentTime) {\r\n this.trackEvent(\"video_\" + this.state.currentTime + \"sek_gesehen\");\r\n this.state.currentTime = this.state.currentTime == 10 ?\r\n this.state.currentTime = this.state.currentTime + 20\r\n : this.state.currentTime = this.state.currentTime + 30;\r\n }\r\n }\r\n };\r\n\r\n const tTimeUpdateHandler = this.throttled(1000, timeUpdateHandler);\r\n this.player.mejs.node.addEventListener(\"timeupdate\", tTimeUpdateHandler);\r\n\r\n // set duration in ms from attributes\r\n if (this.player.video.dataset.durationMs &&\r\n this.player.video.dataset.durationMs > 0) {\r\n var durationS = this.player.video.dataset.durationMs / 1000;\r\n\r\n if (durationS > 0) {\r\n var minutes = Math.floor(durationS / 60);\r\n var seconds = Math.floor(durationS - 60 * minutes);\r\n this.element.querySelector('.mejs__duration').innerText = minutes.toString().padStart(2, \"0\") + \":\" + seconds.toString().padStart(2, \"0\");\r\n }\r\n }\r\n\r\n this.player.captionsButton = this.player.captions || $(this.element).find(\".mejs__captions-button\");\r\n this.player.videoDescriptionButton = this.player.videodescription || $(this.element).find(\".mejs__video-description-button\");\r\n this.player.audioDescriptionButton = this.player.audiodescription || $(this.element).find(\".mejs__audio-description-button\");\r\n // Tracking UI clicks:\r\n if (this.player.captionsButton) {\r\n this.player.captionsButton.on(\"click\", () => {\r\n if (this.player.captionsButton[0].classList.contains(\"mejs__captions-enabled\")) {\r\n this.trackEvent(TrackingKeys.VIDEO_CAPTIONS_ON);\r\n } else {\r\n this.trackEvent(TrackingKeys.VIDEO_CAPTIONS_OFF);\r\n }\r\n });\r\n }\r\n\r\n if (this.player.audioDescriptionButton) {\r\n this.player.audioDescriptionButton.on(\"click\", () => {\r\n if (this.player.audioDescriptionButton[0].classList.contains(\"audio-description-on\")) {\r\n this.trackEvent(TrackingKeys.VIDEO_AUDIO_DESCRIPTION_ON);\r\n } else {\r\n this.trackEvent(TrackingKeys.VIDEO_AUDIO_DESCRIPTION_OFF);\r\n }\r\n });\r\n }\r\n\r\n if (this.player.videoDescriptionButton) {\r\n this.player.videoDescriptionButton.on(\"click\", () => {\r\n // MediaElement triggers two consecutive \"playing\" events after changing source to DGS-video while in Playing-State, set flag to handle accordingly in tracking event-handler:\r\n if (!this.state.isPaused) {\r\n this.state.ignoreNextTwoConsecutivePlayingEventsForTracking = true;\r\n }\r\n\r\n if (this.player.videoDescriptionButton[0].classList.contains(\"video-description-on\")) {\r\n this.trackEvent(TrackingKeys.VIDEO_VIDEO_DESCRIPTION_ON);\r\n } else {\r\n this.trackEvent(TrackingKeys.VIDEO_VIDEO_DESCRIPTION_OFF);\r\n }\r\n });\r\n }\r\n }\r\n\r\n // Set the poster attribute manually to prevent double loaded thumbnail images\r\n var videoTag = $(this.element).find('video');\r\n\r\n if (videoTag) {\r\n videoTag.attr('poster', videoTag.attr('data-poster'))\r\n }\r\n\r\n this.bindEvents();\r\n }\r\n\r\n /*\r\n * Die Methode trackEvent() führt das eigentliche Tracking aus und setzt das Config-Objekt mit den Tracking Parametern zusammen.\r\n * Zusätzlich wird geprüft, ob der übergebene Key überhaupt (nochmals) getrackt werden darf.\r\n */\r\n\r\n trackEvent(key) {\r\n if (this.trackingKeyIsAllowedToFire(key)) {\r\n if (utag != undefined) {\r\n utag.link &&\r\n utag.link({\r\n event_id: \"video_namen_\" + this.videoTrackingName,\r\n event_id2: key,\r\n etracker_event_action: \"video\",\r\n });\r\n }\r\n }\r\n }\r\n\r\n /*\r\n * Die Methode trackingKeyIsAllowedToFire() überprüft, ob der übergebene Key (nochmals) getrackt werden darf.\r\n */\r\n\r\n trackingKeyIsAllowedToFire(key) {\r\n if (hasOwnProperty.call(this.state.trackingKeysToFireOnceOnly, key)) {\r\n if (this.state.trackingKeysToFireOnceOnly[key]) {\r\n return false;\r\n } else {\r\n this.state.trackingKeysToFireOnceOnly[key] = true;\r\n return true;\r\n }\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n // ...\r\n\r\n displaySuggestions() {\r\n this.player.suggestions.removeClass(\"videoPlayer__suggestions--hide\");\r\n $(this.element).addClass(\"ended\");\r\n $(this.player.suggestions).find(\".videoPlayer--replay\").one(\"click\", () => {\r\n this.player.suggestions.addClass(\"videoPlayer__suggestions--hide\");\r\n this.displayVideo(true);\r\n });\r\n\r\n if ($(this.element).find(\".mejs__container-fullscreen\").length > 0) {\r\n this.player.fullscreenBtn.click();\r\n this.player.fullscreenActive = true;\r\n }\r\n }\r\n\r\n handleModal() {\r\n this.player.modal = this.player.modal || $(this.element).closest(\".videoTeaser__modal\");\r\n this.player.playBtn = this.player.playBtn || $(this.element).find(\".mejs__overlay-button\");\r\n this.player.captions = this.player.captions || $(this.element).find(\".mejs__captions-button\");\r\n this.player.audiodescription = this.player.audiodescription || $(this.element).find(\".mejs__audio-description-button\");\r\n this.player.videodescription = this.player.videodescription || $(this.element).find(\".mejs__video-description-button\");\r\n\r\n this.player.modal.on(\"shown.bs.modal\", () => {\r\n this.player.playBtn.focus();\r\n }).on(\"hide.bs.modal\", () => {\r\n if (this.player.captions.hasClass(\"mejs__captions-enabled\")) {\r\n this.player.captions.trigger(\"click\");\r\n }\r\n if (this.player.audiodescription.hasClass(\"audio-description-on\")) {\r\n this.player.audiodescription.trigger(\"click\");\r\n }\r\n if (this.player.videodescription.hasClass(\"video-description-on\")) {\r\n this.player.videodescription.trigger(\"click\");\r\n }\r\n this.player.mejs.pause();\r\n this.player.mejs.setCurrentTime(0);\r\n this.player.mejs.setVolume(1);\r\n this.player.mejs.setMuted(false);\r\n });\r\n }\r\n }\r\n\r\n function init() {\r\n $players = $(\"[data-js-videoplayer]\");\r\n\r\n $.each($players, (i, element) => new AMVideoPlayer(element));\r\n }\r\n\r\n var $players;\r\n\r\n return {\r\n init: init,\r\n };\r\n\r\n})();\r\n\r\nclass TrackingKeys {\r\n static get VIDEO_PLAY() { return \"video_play\"; }\r\n static get VIDEO_PLAY_COUNT() { return \"video_play_\"; }\r\n static get VIDEO_PAUSE() { return \"video_pause\"; }\r\n static get VIDEO_CONTINUE() { return \"video_weiter\"; }\r\n static get VIDEO_FORWARD_REWIND() { return \"video_spulen\"; }\r\n static get VIDEO_REPLAY() { return \"video_erneut_ansehen\"; }\r\n\r\n static get VIDEO_FULLSCREEN_ON() { return \"video_vollbild_on\"; }\r\n static get VIDEO_FULLSCREEN_OFF() { return \"video_vollbild_off\"; }\r\n static get VIDEO_CAPTIONS_ON() { return \"video_untertitel_on\"; }\r\n static get VIDEO_CAPTIONS_OFF() { return \"video_untertitel_off\"; }\r\n static get VIDEO_AUDIO_DESCRIPTION_ON() { return \"video_vorlesen_on\"; }\r\n static get VIDEO_AUDIO_DESCRIPTION_OFF() { return \"video_vorlesen_off\"; }\r\n static get VIDEO_VIDEO_DESCRIPTION_ON() { return \"video_dgs_on\"; }\r\n static get VIDEO_VIDEO_DESCRIPTION_OFF() { return \"video_dgs_off\"; }\r\n static get VIDEO_MUTE_ON() { return \"video_stumm_on\"; }\r\n static get VIDEO_MUTE_OFF() { return \"video_stumm_off\"; }\r\n\r\n static get VIDEO_25_PERCENT() { return \"video_25%\"; }\r\n static get VIDEO_50_PERCENT() { return \"video_50%\"; }\r\n static get VIDEO_75_PERCENT() { return \"video_75%\"; }\r\n static get VIDEO_FULL() { return \"video_full\"; }\r\n static get VIDEO_WATCHED_10_SEC() { return \"video_10sek_gesehen\"; }\r\n static get VIDEO_WATCHED_30_SEC() { return \"video_30sek_gesehen\"; }\r\n static get VIDEO_WATCHED_60_SEC() { return \"video_60sek_gesehen\"; }\r\n static get VIDEO_WATCHED_1_MIN_30_SEC() { return \"video_1min_30sek_gesehen\"; }\r\n\r\n static get VIDEO_SHARER_FACEBOOK() { return \"video_teilen_facebook\"; }\r\n static get VIDEO_SHARER_TWITTER() { return \"video_teilen_twitter\"; }\r\n static get VIDEO_SHARER_MAIL() { return \"video_teilen_mail-formular\"; }\r\n}\r\n\r\nexport { VideoPlayer };\r\n","import SelfInitComponent from \"./../../../../../Common/code/Frontend/General/global-js/SelfInitComponent\";\r\nimport { VideoPlayer } from \"./../Scripts/videoplayer\";\r\n\r\nimport \"./../../Player/Styles/mejs.scss\";\r\nimport \"./../Styles/videoplayer.scss\";\r\n\r\nclass VideoPlayerComponent extends SelfInitComponent {\r\n constructor(selector) {\r\n super(selector);\r\n }\r\n\r\n init() {\r\n VideoPlayer.init();\r\n }\r\n}\r\n\r\nnew VideoPlayerComponent(\".videoPlayer\");"],"names":["readyStates","loading","interactive","complete","SelfInitComponent","constructor","selector","implementedEvents","callEvents","document","querySelectorAll","length","this","init","eventKey","__proto__","debounce","debounceTime","trailing","window","addEventListener","BUILDMODE","console","warn","readyState","givenFunction","leading","debounced_func","_debounce","VideoPlayer","AMVideoPlayer","element","settings","mejs","features","toggleCaptionsButtonWhenOnlyOne","player","video","querySelector","captioncontrolsBtn","captioncontrolsInput","captions","audiodescription","videodescription","modal","playBtn","suggestions","fullscreenBtn","fullscreenActive","replayBtn","videoTrackingName","getAttribute","state","hadTimeSliderInteraction","trackingKeysToFireOnceOnly","TrackingKeys","VIDEO_25_PERCENT","VIDEO_50_PERCENT","VIDEO_75_PERCENT","VIDEO_FULL","VIDEO_WATCHED_10_SEC","VIDEO_WATCHED_30_SEC","VIDEO_WATCHED_60_SEC","VIDEO_WATCHED_1_MIN_30_SEC","ignoreNextTwoConsecutivePlayingEventsForTracking","ignoredPlayingEventsCount","playCount","currentTime","firstTimePlayVideo","displayVideo","bindEvents","that","$","find","on","click","node","displaySuggestions","once","attr","e","which","preventDefault","trigger","hasClass","handleModal","remotePlayEl","media","id","play","adjustPlayerHeight","setTimeout","controls","videoContainer","style","getComputedStyle","currentStyle","bottomVal","parseFloat","bottom","heightVal","height","isNaN","marginBottom","removeProperty","throttled","limit","callback","waiting","apply","arguments","detectTouch","navigator","maxTouchPoints","msMaxTouchPoints","startPlayback","i18n","language","MediaElementPlayer","removeClass","timeSliderDownEventType","timeSliderUpEventType","handlePlayingEventTracking","isPaused","duration","trackEvent","VIDEO_PAUSE","VIDEO_CONTINUE","VIDEO_PLAY_COUNT","timeUpdateHandler","parseInt","tTimeUpdateHandler","dataset","durationMs","durationS","minutes","Math","floor","seconds","innerText","toString","padStart","captionsButton","videoDescriptionButton","audioDescriptionButton","classList","contains","VIDEO_CAPTIONS_ON","VIDEO_CAPTIONS_OFF","VIDEO_AUDIO_DESCRIPTION_ON","VIDEO_AUDIO_DESCRIPTION_OFF","VIDEO_VIDEO_DESCRIPTION_ON","VIDEO_VIDEO_DESCRIPTION_OFF","videoTag","key","trackingKeyIsAllowedToFire","undefined","utag","link","event_id","event_id2","etracker_event_action","hasOwnProperty","call","addClass","one","closest","focus","pause","setCurrentTime","setVolume","setMuted","$players","each","i","VIDEO_PLAY","VIDEO_FORWARD_REWIND","VIDEO_REPLAY","VIDEO_FULLSCREEN_ON","VIDEO_FULLSCREEN_OFF","VIDEO_MUTE_ON","VIDEO_MUTE_OFF","VIDEO_SHARER_FACEBOOK","VIDEO_SHARER_TWITTER","VIDEO_SHARER_MAIL","VideoPlayerComponent","super"],"sourceRoot":""}