From 24b4220de5708e95c909fa28add772ed05c19c17 Mon Sep 17 00:00:00 2001 From: Sam Potts Date: Mon, 19 Feb 2018 09:52:46 +1100 Subject: [PATCH] Fix IE CORS captions --- dist/plyr.js | 58 +- dist/plyr.js.map | 2 +- dist/plyr.min.js | 2 +- dist/plyr.min.js.map | 2 +- dist/plyr.polyfilled.js | 2711 ++++++++++++++++++++----------- dist/plyr.polyfilled.js.map | 2 +- dist/plyr.polyfilled.min.js | 2 +- dist/plyr.polyfilled.min.js.map | 2 +- src/js/captions.js | 35 +- src/js/utils.js | 19 +- 10 files changed, 1820 insertions(+), 1015 deletions(-) diff --git a/dist/plyr.js b/dist/plyr.js index 66af3a2f..8f557aa9 100644 --- a/dist/plyr.js +++ b/dist/plyr.js @@ -649,6 +649,8 @@ var utils = { // Fetch wrapper // Using XHR to avoid issues with older browsers fetch: function fetch(url) { + var responseType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'text'; + return new Promise(function (resolve, reject) { try { var request = new XMLHttpRequest(); @@ -659,10 +661,14 @@ var utils = { } request.addEventListener('load', function () { - try { - resolve(JSON.parse(request.responseText)); - } catch (e) { - resolve(request.responseText); + if (responseType === 'text') { + try { + resolve(JSON.parse(request.responseText)); + } catch (e) { + resolve(request.responseText); + } + } else { + resolve(request.response); } }); @@ -671,6 +677,10 @@ var utils = { }); request.open('GET', url, true); + + // Set the required response type + request.responseType = responseType; + request.send(); } catch (e) { reject(e); @@ -1474,7 +1484,6 @@ var utils = { // Plyr support checks // ========================================================================== -// Check for feature support var support = { // Basic support audio: 'canPlayType' in document.createElement('audio'), @@ -1992,7 +2001,6 @@ var Storage = function () { /* global google */ -// Build the default tag URL var getTagUrl = function getTagUrl() { var params = { AV_PUBLISHERID: '58c25bb0073ef448b1087ad6', @@ -2653,7 +2661,6 @@ var Ads = function () { // Plyr Event Listeners // ========================================================================== -// Sniff out the browser var browser$2 = utils.getBrowser(); var listeners = { @@ -3565,7 +3572,6 @@ var ui = { // Plyr controls // ========================================================================== -// Sniff out the browser var browser$1 = utils.getBrowser(); var controls = { @@ -4741,6 +4747,7 @@ var controls = { // ========================================================================== // Plyr Captions +// TODO: Create as class // ========================================================================== var captions = { @@ -4782,7 +4789,6 @@ var captions = { return; } - // Inject the container if (!utils.is.element(this.elements.captions)) { this.elements.captions = utils.createElement('div', utils.getAttributesFromSelector(this.config.selectors.captions)); @@ -4793,11 +4799,36 @@ var captions = { // Set the class hook utils.toggleClass(this.elements.container, this.config.classNames.captions.enabled, !utils.is.empty(captions.getTracks.call(this))); + // Get tracks + var tracks = captions.getTracks.call(this); + // If no caption file exists, hide container for caption text - if (utils.is.empty(captions.getTracks.call(this))) { + if (utils.is.empty(tracks)) { return; } + // Get browser info + var browser = utils.getBrowser(); + + // Fix IE captions if CORS is used + // Fetch captions and inject as blobs instead (data URIs not supported!) + if (browser.isIE && window.URL) { + var elements = this.media.querySelectorAll('track'); + + Array.from(elements).forEach(function (track) { + var src = track.getAttribute('src'); + var href = utils.parseUrl(src); + + if (href.hostname !== window.location.href.hostname && ['http:', 'https:'].includes(href.protocol)) { + utils.fetch(src, 'blob').then(function (blob) { + track.setAttribute('src', window.URL.createObjectURL(blob)); + }).catch(function () { + utils.removeElement(track); + }); + } + }); + } + // Set language captions.setLanguage.call(this); @@ -5694,7 +5725,6 @@ var vimeo = { // Plyr Media // ========================================================================== -// Sniff out the browser var browser$3 = utils.getBrowser(); var media = { @@ -5939,12 +5969,6 @@ var source = { // License: The MIT License (MIT) // ========================================================================== -// Private properties -// TODO: Use a WeakMap for private globals -// const globals = new WeakMap(); - -// Plyr instance - var Plyr = function () { function Plyr(target, options) { var _this = this; diff --git a/dist/plyr.js.map b/dist/plyr.js.map index e730632b..96e679c7 100644 --- a/dist/plyr.js.map +++ b/dist/plyr.js.map @@ -1 +1 @@ -{"version":3,"sources":["src/js/types.js","src/js/defaults.js","src/js/utils.js","src/js/support.js","src/js/console.js","src/js/fullscreen.js","src/js/storage.js","src/js/plugins/ads.js","src/js/listeners.js","src/js/ui.js","src/js/controls.js","src/js/captions.js","src/js/plugins/youtube.js","src/js/plugins/vimeo.js","src/js/media.js","src/js/source.js","src/js/plyr.js"],"names":["providers","types","defaults","window","navigator","language","split","utils","input","instanceof","Plyr","getConstructor","Object","Number","isNaN","String","Boolean","Function","nullOrUndefined","Array","isArray","WeakMap","NodeList","Element","Text","Event","TextTrackCue","VTTCue","TextTrack","string","kind","test","array","nodeList","length","object","keys","constructor","document","documentMode","documentElement","style","userAgent","platform","url","Promise","resolve","reject","request","XMLHttpRequest","addEventListener","JSON","parse","responseText","e","Error","statusText","open","send","callback","error","current","querySelector","callbacks","push","element","createElement","errors","is","function","forEach","cb","call","event","err","src","first","getElementsByTagName","parentNode","insertBefore","id","prefix","hasId","isCached","updateSprite","data","innerHTML","body","childNodes","querySelectorAll","container","toggleHidden","setAttribute","support","storage","cached","localStorage","getItem","content","fetch","then","empty","result","setItem","stringify","catch","Math","floor","random","self","top","elements","wrapper","targets","from","reverse","index","child","cloneNode","parent","sibling","nextSibling","appendChild","type","attributes","text","setAttributes","textContent","target","removeElement","removeChild","lastChild","newChild","oldChild","replaceChild","key","sel","existingAttributes","existing","selector","s","trim","className","replace","stripped","parts","value","start","charAt","class","toggle","contains","classList","removeAttribute","prototype","match","includes","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","controls","getElement","config","selectors","buttons","getElements","play","pause","restart","rewind","forward","mute","pip","airplay","settings","captions","fullscreen","progress","inputs","seek","volume","display","buffer","duration","currentTime","seekTooltip","classNames","tooltip","debug","warn","toggleNativeControls","focused","activeElement","focusable","last","trap","keyCode","getFocusElement","shiftKey","focus","preventDefault","on","off","passive","capture","Node","toggleListener","events","options","boolean","passiveListeners","bubbles","detail","CustomEvent","assign","plyr","dispatchEvent","toggleState","pressed","getAttribute","state","max","toFixed","parseInt","time","displayHours","inverted","number","formatTime","format","slice","hours","getHours","mins","getMinutes","secs","getSeconds","sources","source","shift","extend","youtube","vimeo","regex","RegExp","$2","parser","href","search","startsWith","parseUrl","hashes","indexOf","reduce","params","hash","val","decodeURIComponent","map","encodeURIComponent","join","fragment","createDocumentFragment","firstChild","innerText","width","height","getRatio","w","h","ratio","transitionEndEvent","find","undefined","setTimeout","offsetHeight","provider","inline","api","ui","browser","getBrowser","playsInline","isIPhone","video","rangeInput","audio","webkitSetPresentationMode","WebKitPlaybackTargetAvailabilityEvent","media","isHTML5","canPlayType","isVideo","isAudio","supported","defineProperty","range","matchMedia","noop","Console","enabled","console","log","bind","onChange","button","player","active","isIos","trapFocus","toggleFallback","scrollPosition","scrollX","scrollY","scrollTo","x","y","overflow","toggleClass","fallback","Fullscreen","stopPropagation","update","native","iosNative","playing","webkitEnterFullscreen","requestFullScreen","webkitExitFullscreen","cancelFullScreen","enter","exit","inFrame","hasClass","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","prefixes","some","pre","msExitFullscreen","Storage","store","json","get","removeItem","getTagUrl","base","buildUrlParams","Ads","ads","initialized","blocked","tag","google","loadScript","urls","googleIMA","ready","manager","loader","cuePoints","safetyTimer","countdownTimer","listeners","startSafetyTimer","loaderPromise","managerPromise","clearSafetyTimer","setupIMA","ima","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","displayContainer","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","handleEventListeners","clearInterval","getRemainingTime","label","i18n","advertisment","setInterval","adsManagerLoadedEvent","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","cuePoint","seekElement","cuePercentage","cue","cues","left","toString","setVolume","AdEvent","onAdEvent","ad","getAd","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","cancel","contentComplete","seekedTime","discardAdBreak","splice","resize","ViewMode","NORMAL","initialize","init","adError","destroy","getKeyCode","which","handleKey","code","repeat","altKey","ctrlKey","metaKey","seekByKey","editable","togglePlay","increaseVolume","decreaseVolume","muted","toggleCaptions","loop","keyboard","global","tabFocus","hideControls","toggleControls","timeUpdate","durationUpdate","hasAudio","showPosterOnEnd","load","updateProgress","updateVolume","checkPlaying","checkLoading","clickToPlay","touch","paused","ended","disableContextMenu","set","updateSetting","speed","quality","concat","inputEvent","isIE","proxy","handlerKey","defaultHandler","customHandler","defaultPrevented","toggleMenu","form","parseFloat","showTab","toggleInvert","invertTime","isWebkit","updateRangeFill","updateSeekTooltip","hover","webkitDirectionInvertedFromDevice","step","direction","deltaY","deltaX","uiSupported","inject","setup","setTitle","title","isEmbed","iframe","frameTitle","stopped","loading","timers","failed","networkState","setRange","nodeValue","getPercentage","buffered","end","setProgress","invert","updateTimeDisplay","seeking","hasDuration","displayDuration","setProperty","iconUrl","svg4everybody","namespace","getIconUrl","iconPath","absolute","iconPrefix","icon","createElementNS","use","path","setAttributeNS","attr","hidden","badge","menu","buttonType","labelPressed","iconPressed","control","createIcon","createLabel","getAttributesFromSelector","suffix","played","toLowerCase","list","checked","item","radio","faux","insertAdjacentHTML","tooltips","percent","clientRect","getBoundingClientRect","visible","pageX","setting","tab","tabs","pane","panes","filter","isYouTube","toggleTab","emptyElement","getBadge","createBadge","createMenuItem","getLabel","getLanguage","default","textTracks","getTracks","none","currentTrack","getCurrentTrack","track","disabled","hasTracks","tracks","toUpperCase","unshift","show","isMenuItem","isButton","clone","position","opacity","name","scrollWidth","scrollHeight","getElementById","isTab","transitions","reducedMotion","size","getTabSize","restore","propertyName","createButton","createRange","createProgress","createTime","inner","home","back","setSpeedMenu","loadSprite","seekTime","create","findElements","repaint","labels","stored","setCaptionsMenu","insertAfter","setLanguage","setCue","mode","activeCues","isVimeo","embed","enableTextTrack","setText","getCueAsHTML","caption","setAspectRatio","YT","Player","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","videoId","getVideoData","items","snippet","paddingBottom","currentId","parseYouTubeId","generateId","replaceElement","autoplay","location","message","instance","getPlaybackQuality","playbackRate","getPlaybackRate","getTitle","playVideo","pauseVideo","stop","stopVideo","getDuration","getCurrentTime","seekTo","setPlaybackRate","setPlaybackQuality","getVideoUrl","getAvailablePlaybackRates","buffering","getVideoLoadedFraction","lastBuffered","build","setQualityMenu","getAvailableQualityLevels","Vimeo","padding","offset","transform","parseVimeoId","setCurrentTime","selected","setLoop","currentSrc","all","getVideoWidth","getVideoHeight","getAspectRatio","dimensions","setAutopause","autopause","getVideoTitle","getTextTracks","stripHTML","frame","seconds","isTouch","wrap","blankVideo","insertElement","attribute","cancelRequests","html5","check","crossorigin","poster","addStyleHook","insertElements","jQuery","original","tagName","getProviderByUrl","getUrlParams","truthy","playsinline","hasAttribute","webkitShowPlaybackTargetPicker","delay","isEnterFullscreen","noTransition","clearTimeout","toggled","soft","done","unload","mime","readyState","targetTime","fauxDuration","realDuration","min","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","change","states","webkitPresentationMode"],"mappings":"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","file":"plyr.js","sourcesContent":["// ==========================================================================\n// Plyr supported types and providers\n// ==========================================================================\n\nexport const providers = {\n html5: 'html5',\n youtube: 'youtube',\n vimeo: 'vimeo',\n};\n\nexport const types = {\n audio: 'audio',\n video: 'video',\n};\n\nexport default { providers, types };\n","// ==========================================================================\n// Plyr default config\n// ==========================================================================\n\nconst defaults = {\n // Disable\n enabled: true,\n\n // Custom media title\n title: '',\n\n // Logging to console\n debug: false,\n\n // Auto play (if supported)\n autoplay: false,\n\n // Only allow one media playing at once (vimeo only)\n autopause: true,\n\n // Default time to skip when rewind/fast forward\n seekTime: 10,\n\n // Default volume\n volume: 1,\n muted: false,\n\n // Pass a custom duration\n duration: null,\n\n // Display the media duration on load in the current time position\n // If you have opted to display both duration and currentTime, this is ignored\n displayDuration: true,\n\n // Invert the current time to be a countdown\n invertTime: true,\n\n // Clicking the currentTime inverts it's value to show time left rather than elapsed\n toggleInvert: true,\n\n // Aspect ratio (for embeds)\n ratio: '16:9',\n\n // Click video container to play/pause\n clickToPlay: true,\n\n // Auto hide the controls\n hideControls: true,\n\n // Revert to poster on finish (HTML5 - will cause reload)\n showPosterOnEnd: false,\n\n // Disable the standard context menu\n disableContextMenu: true,\n\n // Sprite (for icons)\n loadSprite: true,\n iconPrefix: 'plyr',\n iconUrl: 'https://cdn.plyr.io/3.0.0-beta.14/plyr.svg',\n\n // Blank video (used to prevent errors on source change)\n blankVideo: 'https://cdn.plyr.io/static/blank.mp4',\n\n // Quality default\n quality: {\n default: 'default',\n options: [\n 'hd2160',\n 'hd1440',\n 'hd1080',\n 'hd720',\n 'large',\n 'medium',\n 'small',\n 'tiny',\n 'default',\n ],\n },\n\n // Set loops\n loop: {\n active: false,\n // start: null,\n // end: null,\n },\n\n // Speed default and options to display\n speed: {\n selected: 1,\n options: [\n 0.5,\n 0.75,\n 1,\n 1.25,\n 1.5,\n 1.75,\n 2,\n ],\n },\n\n // Keyboard shortcut settings\n keyboard: {\n focused: true,\n global: false,\n },\n\n // Display tooltips\n tooltips: {\n controls: false,\n seek: true,\n },\n\n // Captions settings\n captions: {\n active: false,\n language: window.navigator.language.split('-')[0],\n },\n\n // Fullscreen settings\n fullscreen: {\n enabled: true, // Allow fullscreen?\n fallback: true, // Fallback for vintage browsers\n iosNative: false, // Use the native fullscreen in iOS (disables custom controls)\n },\n\n // Local storage\n storage: {\n enabled: true,\n key: 'plyr',\n },\n\n // Default controls\n controls: [\n 'play-large',\n 'play',\n 'progress',\n 'current-time',\n 'mute',\n 'volume',\n 'captions',\n 'settings',\n 'pip',\n 'airplay',\n 'fullscreen',\n ],\n settings: [\n 'captions',\n 'quality',\n 'speed',\n ],\n\n // Localisation\n i18n: {\n restart: 'Restart',\n rewind: 'Rewind {seektime} secs',\n play: 'Play',\n pause: 'Pause',\n forward: 'Forward {seektime} secs',\n seek: 'Seek',\n played: 'Played',\n buffered: 'Buffered',\n currentTime: 'Current time',\n duration: 'Duration',\n volume: 'Volume',\n mute: 'Mute',\n unmute: 'Unmute',\n enableCaptions: 'Enable captions',\n disableCaptions: 'Disable captions',\n enterFullscreen: 'Enter fullscreen',\n exitFullscreen: 'Exit fullscreen',\n frameTitle: 'Player for {title}',\n captions: 'Captions',\n settings: 'Settings',\n speed: 'Speed',\n quality: 'Quality',\n loop: 'Loop',\n start: 'Start',\n end: 'End',\n all: 'All',\n reset: 'Reset',\n none: 'None',\n disabled: 'Disabled',\n advertisment: 'Ad',\n },\n\n // URLs\n urls: {\n vimeo: {\n api: 'https://player.vimeo.com/api/player.js',\n },\n youtube: {\n api: 'https://www.youtube.com/iframe_api',\n },\n googleIMA: {\n api: 'https://imasdk.googleapis.com/js/sdkloader/ima3.js',\n },\n },\n\n // Custom control listeners\n listeners: {\n seek: null,\n play: null,\n pause: null,\n restart: null,\n rewind: null,\n forward: null,\n mute: null,\n volume: null,\n captions: null,\n fullscreen: null,\n pip: null,\n airplay: null,\n speed: null,\n quality: null,\n loop: null,\n language: null,\n },\n\n // Events to watch and bubble\n events: [\n // Events to watch on HTML5 media elements and bubble\n // https://developer.mozilla.org/en/docs/Web/Guide/Events/Media_events\n 'ended',\n 'progress',\n 'stalled',\n 'playing',\n 'waiting',\n 'canplay',\n 'canplaythrough',\n 'loadstart',\n 'loadeddata',\n 'loadedmetadata',\n 'timeupdate',\n 'volumechange',\n 'play',\n 'pause',\n 'error',\n 'seeking',\n 'seeked',\n 'emptied',\n 'ratechange',\n 'cuechange',\n\n // Custom events\n 'enterfullscreen',\n 'exitfullscreen',\n 'captionsenabled',\n 'captionsdisabled',\n 'languagechange',\n 'controlshidden',\n 'controlsshown',\n 'ready',\n\n // YouTube\n 'statechange',\n 'qualitychange',\n 'qualityrequested',\n\n // Ads\n 'adsloaded',\n 'adscontentpause',\n 'adsconentresume',\n 'adstarted',\n 'adsmidpoint',\n 'adscomplete',\n 'adsallcomplete',\n 'adsimpression',\n 'adsclick',\n ],\n\n // Selectors\n // Change these to match your template if using custom HTML\n selectors: {\n editable: 'input, textarea, select, [contenteditable]',\n container: '.plyr',\n controls: {\n container: null,\n wrapper: '.plyr__controls',\n },\n labels: '[data-plyr]',\n buttons: {\n play: '[data-plyr=\"play\"]',\n pause: '[data-plyr=\"pause\"]',\n restart: '[data-plyr=\"restart\"]',\n rewind: '[data-plyr=\"rewind\"]',\n forward: '[data-plyr=\"fast-forward\"]',\n mute: '[data-plyr=\"mute\"]',\n captions: '[data-plyr=\"captions\"]',\n fullscreen: '[data-plyr=\"fullscreen\"]',\n pip: '[data-plyr=\"pip\"]',\n airplay: '[data-plyr=\"airplay\"]',\n settings: '[data-plyr=\"settings\"]',\n loop: '[data-plyr=\"loop\"]',\n },\n inputs: {\n seek: '[data-plyr=\"seek\"]',\n volume: '[data-plyr=\"volume\"]',\n speed: '[data-plyr=\"speed\"]',\n language: '[data-plyr=\"language\"]',\n quality: '[data-plyr=\"quality\"]',\n },\n display: {\n currentTime: '.plyr__time--current',\n duration: '.plyr__time--duration',\n buffer: '.plyr__progress--buffer',\n played: '.plyr__progress--played',\n loop: '.plyr__progress--loop',\n volume: '.plyr__volume--display',\n },\n progress: '.plyr__progress',\n captions: '.plyr__captions',\n menu: {\n quality: '.js-plyr__menu__list--quality',\n },\n },\n\n // Class hooks added to the player in different states\n classNames: {\n video: 'plyr__video-wrapper',\n embed: 'plyr__video-embed',\n ads: 'plyr__ads',\n control: 'plyr__control',\n type: 'plyr--{0}',\n provider: 'plyr--{0}',\n stopped: 'plyr--stopped',\n playing: 'plyr--playing',\n loading: 'plyr--loading',\n error: 'plyr--has-error',\n hover: 'plyr--hover',\n tooltip: 'plyr__tooltip',\n cues: 'plyr__cues',\n hidden: 'plyr__sr-only',\n hideControls: 'plyr--hide-controls',\n isIos: 'plyr--is-ios',\n isTouch: 'plyr--is-touch',\n uiSupported: 'plyr--full-ui',\n noTransition: 'plyr--no-transition',\n menu: {\n value: 'plyr__menu__value',\n badge: 'plyr__badge',\n open: 'plyr--menu-open',\n },\n captions: {\n enabled: 'plyr--captions-enabled',\n active: 'plyr--captions-active',\n },\n fullscreen: {\n enabled: 'plyr--fullscreen-enabled',\n fallback: 'plyr--fullscreen-fallback',\n },\n pip: {\n supported: 'plyr--pip-supported',\n active: 'plyr--pip-active',\n },\n airplay: {\n supported: 'plyr--airplay-supported',\n active: 'plyr--airplay-active',\n },\n tabFocus: 'plyr__tab-focus',\n },\n\n // Embed attributes\n attributes: {\n embed: {\n provider: 'data-plyr-provider',\n id: 'data-plyr-embed-id',\n },\n },\n\n // API keys\n keys: {\n google: null,\n },\n\n // Advertisements plugin\n // Tag is not required as publisher is determined by vi.ai using the domain\n ads: {\n enabled: false,\n },\n};\n\nexport default defaults;\n","// ==========================================================================\n// Plyr utils\n// ==========================================================================\n\nimport support from './support';\nimport { providers } from './types';\n\nconst utils = {\n // Check variable types\n is: {\n plyr(input) {\n return this.instanceof(input, window.Plyr);\n },\n object(input) {\n return this.getConstructor(input) === Object;\n },\n number(input) {\n return this.getConstructor(input) === Number && !Number.isNaN(input);\n },\n string(input) {\n return this.getConstructor(input) === String;\n },\n boolean(input) {\n return this.getConstructor(input) === Boolean;\n },\n function(input) {\n return this.getConstructor(input) === Function;\n },\n array(input) {\n return !this.nullOrUndefined(input) && Array.isArray(input);\n },\n weakMap(input) {\n return this.instanceof(input, window.WeakMap);\n },\n nodeList(input) {\n return this.instanceof(input, window.NodeList);\n },\n element(input) {\n return this.instanceof(input, window.Element);\n },\n textNode(input) {\n return this.getConstructor(input) === Text;\n },\n event(input) {\n return this.instanceof(input, window.Event);\n },\n cue(input) {\n return this.instanceof(input, window.TextTrackCue) || this.instanceof(input, window.VTTCue);\n },\n track(input) {\n return this.instanceof(input, TextTrack) || (!this.nullOrUndefined(input) && this.string(input.kind));\n },\n url(input) {\n return !this.nullOrUndefined(input) && /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-/]))?/.test(input);\n },\n nullOrUndefined(input) {\n return input === null || typeof input === 'undefined';\n },\n empty(input) {\n return (\n this.nullOrUndefined(input) ||\n ((this.string(input) || this.array(input) || this.nodeList(input)) && !input.length) ||\n (this.object(input) && !Object.keys(input).length)\n );\n },\n instanceof(input, constructor) {\n return Boolean(input && constructor && input instanceof constructor);\n },\n getConstructor(input) {\n return !this.nullOrUndefined(input) ? input.constructor : null;\n },\n },\n\n // Unfortunately, due to mixed support, UA sniffing is required\n getBrowser() {\n return {\n isIE: /* @cc_on!@ */ false || !!document.documentMode,\n isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform),\n };\n },\n\n // Fetch wrapper\n // Using XHR to avoid issues with older browsers\n fetch(url) {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) {\n return;\n }\n\n request.addEventListener('load', () => {\n try {\n resolve(JSON.parse(request.responseText));\n } catch(e) {\n resolve(request.responseText);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.statusText);\n });\n\n request.open('GET', url, true);\n request.send();\n } catch (e) {\n reject(e);\n }\n });\n },\n\n // Load an external script\n loadScript(url, callback, error) {\n const current = document.querySelector(`script[src=\"${url}\"]`);\n\n // Check script is not already referenced, if so wait for load\n if (current !== null) {\n current.callbacks = current.callbacks || [];\n current.callbacks.push(callback);\n return;\n }\n\n // Build the element\n const element = document.createElement('script');\n\n // Callback queue\n element.callbacks = element.callbacks || [];\n element.callbacks.push(callback);\n\n // Error queue\n element.errors = element.errors || [];\n element.errors.push(error);\n\n // Bind callback\n if (utils.is.function(callback)) {\n element.addEventListener(\n 'load',\n event => {\n element.callbacks.forEach(cb => cb.call(null, event));\n element.callbacks = null;\n },\n false,\n );\n }\n\n // Bind error handling\n element.addEventListener(\n 'error',\n event => {\n element.errors.forEach(err => err.call(null, event));\n element.errors = null;\n },\n false,\n );\n\n // Set the URL after binding callback\n element.src = url;\n\n // Inject\n const first = document.getElementsByTagName('script')[0];\n first.parentNode.insertBefore(element, first);\n },\n\n // Load an external SVG sprite\n loadSprite(url, id) {\n if (!utils.is.string(url)) {\n return;\n }\n\n const prefix = 'cache-';\n const hasId = utils.is.string(id);\n let isCached = false;\n\n function updateSprite(data) {\n // Inject content\n this.innerHTML = data;\n\n // Inject the SVG to the body\n document.body.insertBefore(this, document.body.childNodes[0]);\n }\n\n // Only load once\n if (!hasId || !document.querySelectorAll(`#${id}`).length) {\n // Create container\n const container = document.createElement('div');\n utils.toggleHidden(container, true);\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (support.storage) {\n const cached = window.localStorage.getItem(prefix + id);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n updateSprite.call(container, data.content);\n return;\n }\n }\n\n // Get the sprite\n utils\n .fetch(url)\n .then(result => {\n if (utils.is.empty(result)) {\n return;\n }\n\n if (support.storage) {\n window.localStorage.setItem(\n prefix + id,\n JSON.stringify({\n content: result,\n }),\n );\n }\n\n updateSprite.call(container, result);\n })\n .catch(() => {});\n }\n },\n\n // Generate a random ID\n generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n },\n\n // Determine if we're in an iframe\n inFrame() {\n try {\n return window.self !== window.top;\n } catch (e) {\n return true;\n }\n },\n\n // Wrap an element\n wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n } else {\n parent.appendChild(child);\n }\n });\n },\n\n // Create a DocumentFragment\n createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (utils.is.object(attributes)) {\n utils.setAttributes(element, attributes);\n }\n\n // Add text node\n if (utils.is.string(text)) {\n element.textContent = text;\n }\n\n // Return built element\n return element;\n },\n\n // Inaert an element after another\n insertAfter(element, target) {\n target.parentNode.insertBefore(element, target.nextSibling);\n },\n\n // Insert a DocumentFragment\n insertElement(type, parent, attributes, text) {\n // Inject the new \n parent.appendChild(utils.createElement(type, attributes, text));\n },\n\n // Remove an element\n removeElement(element) {\n if (!utils.is.element(element) || !utils.is.element(element.parentNode)) {\n return;\n }\n\n if (utils.is.nodeList(element) || utils.is.array(element)) {\n Array.from(element).forEach(utils.removeElement);\n return;\n }\n\n element.parentNode.removeChild(element);\n },\n\n // Remove all child elements\n emptyElement(element) {\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n },\n\n // Replace element\n replaceElement(newChild, oldChild) {\n if (!utils.is.element(oldChild) || !utils.is.element(oldChild.parentNode) || !utils.is.element(newChild)) {\n return null;\n }\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n },\n\n // Set attributes\n setAttributes(element, attributes) {\n if (!utils.is.element(element) || utils.is.empty(attributes)) {\n return;\n }\n\n Object.keys(attributes).forEach(key => {\n element.setAttribute(key, attributes[key]);\n });\n },\n\n // Get an attribute object from a string selector\n getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!utils.is.string(sel) || utils.is.empty(sel)) {\n return {};\n }\n\n const attributes = {};\n const existing = existingAttributes;\n\n sel.split(',').forEach(s => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n\n // Get the parts and value\n const parts = stripped.split('=');\n const key = parts[0];\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (utils.is.object(existing) && utils.is.string(existing.class)) {\n existing.class += ` ${className}`;\n }\n\n attributes.class = className;\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return attributes;\n },\n\n // Toggle class on an element\n toggleClass(element, className, toggle) {\n if (utils.is.element(element)) {\n const contains = element.classList.contains(className);\n\n element.classList[toggle ? 'add' : 'remove'](className);\n\n return (toggle && !contains) || (!toggle && contains);\n }\n\n return null;\n },\n\n // Has class name\n hasClass(element, className) {\n return utils.is.element(element) && element.classList.contains(className);\n },\n\n // Toggle hidden attribute on an element\n toggleHidden(element, toggle) {\n if (!utils.is.element(element)) {\n return;\n }\n\n if (toggle) {\n element.setAttribute('hidden', '');\n } else {\n element.removeAttribute('hidden');\n }\n },\n\n // Element matches selector\n matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const matches = prototype.matches || prototype.webkitMatchesSelector || prototype.mozMatchesSelector || prototype.msMatchesSelector || match;\n\n return matches.call(element, selector);\n },\n\n // Find all elements\n getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n },\n\n // Find a single element\n getElement(selector) {\n return this.elements.container.querySelector(selector);\n },\n\n // Find the UI controls and store references in custom controls\n // TODO: Allow settings menus with custom controls\n findElements() {\n try {\n this.elements.controls = utils.getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: utils.getElements.call(this, this.config.selectors.buttons.play),\n pause: utils.getElement.call(this, this.config.selectors.buttons.pause),\n restart: utils.getElement.call(this, this.config.selectors.buttons.restart),\n rewind: utils.getElement.call(this, this.config.selectors.buttons.rewind),\n forward: utils.getElement.call(this, this.config.selectors.buttons.forward),\n mute: utils.getElement.call(this, this.config.selectors.buttons.mute),\n pip: utils.getElement.call(this, this.config.selectors.buttons.pip),\n airplay: utils.getElement.call(this, this.config.selectors.buttons.airplay),\n settings: utils.getElement.call(this, this.config.selectors.buttons.settings),\n captions: utils.getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: utils.getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = utils.getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: utils.getElement.call(this, this.config.selectors.inputs.seek),\n volume: utils.getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: utils.getElement.call(this, this.config.selectors.display.buffer),\n duration: utils.getElement.call(this, this.config.selectors.display.duration),\n currentTime: utils.getElement.call(this, this.config.selectors.display.currentTime),\n };\n\n // Seek tooltip\n if (utils.is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(`.${this.config.classNames.tooltip}`);\n }\n\n return true;\n } catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Get the focused element\n getFocusElement() {\n let focused = document.activeElement;\n\n if (!focused || focused === document.body) {\n focused = null;\n } else {\n focused = document.querySelector(':focus');\n }\n\n return focused;\n },\n\n // Trap focus inside container\n trapFocus(element = null, toggle = false) {\n if (!utils.is.element(element)) {\n return;\n }\n\n const focusable = utils.getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]');\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n const trap = event => {\n // Bail if not tab key or not fullscreen\n if (event.key !== 'Tab' || event.keyCode !== 9) {\n return;\n }\n\n // Get the current focused element\n const focused = utils.getFocusElement();\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n } else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n if (toggle) {\n utils.on(this.elements.container, 'keydown', trap, false);\n } else {\n utils.off(this.elements.container, 'keydown', trap, false);\n }\n },\n\n // Toggle event listener\n toggleListener(elements, event, callback, toggle, passive, capture) {\n // Bail if no elemetns, event, or callback\n if (utils.is.empty(elements) || utils.is.empty(event) || !utils.is.function(callback)) {\n return;\n }\n\n // If a nodelist is passed, call itself on each node\n if (utils.is.nodeList(elements) || utils.is.array(elements)) {\n // Create listener for each node\n Array.from(elements).forEach(element => {\n if (element instanceof Node) {\n utils.toggleListener.call(null, element, event, callback, toggle, passive, capture);\n }\n });\n\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n\n // Build options\n // Default to just capture boolean\n let options = utils.is.boolean(capture) ? capture : false;\n\n // If passive events listeners are supported\n if (support.passiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive: utils.is.boolean(passive) ? passive : true,\n // Whether the listener is a capturing listener or not\n capture: utils.is.boolean(capture) ? capture : false,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach(type => {\n elements[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n },\n\n // Bind event handler\n on(element, events, callback, passive, capture) {\n utils.toggleListener(element, events, callback, true, passive, capture);\n },\n\n // Unbind event handler\n off(element, events, callback, passive, capture) {\n utils.toggleListener(element, events, callback, false, passive, capture);\n },\n\n // Trigger event\n dispatchEvent(element, type, bubbles, detail) {\n // Bail if no element\n if (!utils.is.element(element) || !utils.is.string(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles: utils.is.boolean(bubbles) ? bubbles : false,\n detail: Object.assign({}, detail, {\n plyr: utils.is.plyr(this) ? this : null,\n }),\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n },\n\n // Toggle aria-pressed state on a toggle button\n // http://www.ssbbartgroup.com/blog/how-not-to-misuse-aria-states-properties-and-roles\n toggleState(element, input) {\n // If multiple elements passed\n if (utils.is.array(element) || utils.is.nodeList(element)) {\n Array.from(element).forEach(target => utils.toggleState(target, input));\n return;\n }\n\n // Bail if no target\n if (!utils.is.element(element)) {\n return;\n }\n\n // Get state\n const pressed = element.getAttribute('aria-pressed') === 'true';\n const state = utils.is.boolean(input) ? input : !pressed;\n\n // Set the attribute on target\n element.setAttribute('aria-pressed', state);\n },\n\n // Get percentage\n getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n return (current / max * 100).toFixed(2);\n },\n\n // Time helpers\n getHours(value) {\n return parseInt((value / 60 / 60) % 60, 10);\n },\n getMinutes(value) {\n return parseInt((value / 60) % 60, 10);\n },\n getSeconds(value) {\n return parseInt(value % 60, 10);\n },\n\n // Format time to UI friendly string\n formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!utils.is.number(time)) {\n return this.formatTime(null, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n\n // Breakdown to hours, mins, secs\n let hours = this.getHours(time);\n const mins = this.getMinutes(time);\n const secs = this.getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n } else {\n hours = '';\n }\n\n // Render\n return `${inverted ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n },\n\n // Deep extend destination object with N more objects\n extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!utils.is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach(key => {\n if (utils.is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n utils.extend(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return utils.extend(target, ...sources);\n },\n\n // Get the provider for a given URL\n getProviderByUrl(url) {\n // YouTube\n if (/^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtu\\.?be)\\/.+$/.test(url)) {\n return providers.youtube;\n }\n\n // Vimeo\n if (/^https?:\\/\\/player.vimeo.com\\/video\\/\\d{8,}(?=\\b|\\/)/.test(url)) {\n return providers.vimeo;\n }\n\n return null;\n },\n\n // Parse YouTube ID from URL\n parseYouTubeId(url) {\n if (utils.is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n return url.match(regex) ? RegExp.$2 : url;\n },\n\n // Parse Vimeo ID from URL\n parseVimeoId(url) {\n if (utils.is.empty(url)) {\n return null;\n }\n\n if (utils.is.number(Number(url))) {\n return url;\n }\n\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n return url.match(regex) ? RegExp.$2 : url;\n },\n\n // Convert a URL to a location object\n parseUrl(url) {\n const parser = document.createElement('a');\n parser.href = url;\n return parser;\n },\n\n // Get URL query parameters\n getUrlParams(input) {\n let search = input;\n\n // Parse URL if needed\n if (input.startsWith('http://') || input.startsWith('https://')) {\n ({ search } = this.parseUrl(input));\n }\n\n if (this.is.empty(search)) {\n return null;\n }\n\n const hashes = search.slice(search.indexOf('?') + 1).split('&');\n\n return hashes.reduce((params, hash) => {\n const [\n key,\n val,\n ] = hash.split('=');\n\n return Object.assign(params, { [key]: decodeURIComponent(val) });\n }, {});\n },\n\n // Convert object to URL parameters\n buildUrlParams(input) {\n if (!utils.is.object(input)) {\n return '';\n }\n\n return Object.keys(input)\n .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(input[key])}`)\n .join('&');\n },\n\n // Remove HTML from a string\n stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.innerText;\n },\n\n // Get aspect ratio for dimensions\n getAspectRatio(width, height) {\n const getRatio = (w, h) => (h === 0 ? w : getRatio(h, w % h));\n const ratio = getRatio(width, height);\n return `${width / ratio}:${height / ratio}`;\n },\n\n // Get the transition end event\n get transitionEndEvent() {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return utils.is.string(type) ? events[type] : false;\n },\n\n // Force repaint of element\n repaint(element) {\n window.setTimeout(() => {\n utils.toggleHidden(element, true);\n element.offsetHeight; // eslint-disable-line\n utils.toggleHidden(element, false);\n }, 0);\n },\n};\n\nexport default utils;\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport utils from './utils';\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider, inline) {\n let api = false;\n let ui = false;\n const browser = utils.getBrowser();\n const playsInline = browser.isIPhone && inline && support.inline;\n\n switch (`${provider}:${type}`) {\n case 'html5:video':\n api = support.video;\n ui = api && support.rangeInput && (!browser.isIPhone || playsInline);\n break;\n\n case 'html5:audio':\n api = support.audio;\n ui = api && support.rangeInput;\n break;\n\n case 'youtube:video':\n api = true;\n ui = support.rangeInput && (!browser.isIPhone || playsInline);\n break;\n\n case 'vimeo:video':\n api = true;\n ui = support.rangeInput && !browser.isIPhone;\n break;\n\n default:\n api = support.audio && support.video;\n ui = api && support.rangeInput;\n }\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari only currently\n pip: (() => {\n const browser = utils.getBrowser();\n return !browser.isIPhone && utils.is.function(utils.createElement('video').webkitSetPresentationMode);\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: utils.is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n inline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(type) {\n const { media } = this;\n\n try {\n // Bail if no checking function\n if (!this.isHTML5 || !utils.is.function(media.canPlayType)) {\n return false;\n }\n\n // Type specific checks\n if (this.isVideo) {\n switch (type) {\n case 'video/webm':\n return media.canPlayType('video/webm; codecs=\"vp8, vorbis\"').replace(/no/, '');\n\n case 'video/mp4':\n return media.canPlayType('video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"').replace(/no/, '');\n\n case 'video/ogg':\n return media.canPlayType('video/ogg; codecs=\"theora\"').replace(/no/, '');\n\n default:\n return false;\n }\n } else if (this.isAudio) {\n switch (type) {\n case 'audio/mpeg':\n return media.canPlayType('audio/mpeg;').replace(/no/, '');\n\n case 'audio/ogg':\n return media.canPlayType('audio/ogg; codecs=\"vorbis\"').replace(/no/, '');\n\n case 'audio/wav':\n return media.canPlayType('audio/wav; codecs=\"1\"').replace(/no/, '');\n\n default:\n return false;\n }\n }\n } catch (e) {\n return false;\n }\n\n // If we got this far, we're stuffed\n return false;\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Check for passive event listener support\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n // https://www.youtube.com/watch?v=NPM6172J22g\n passiveListeners: (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n } catch (e) {\n // Do nothing\n }\n\n return supported;\n })(),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // Remember a device can be moust + touch enabled\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: utils.transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Console wrapper\n// ==========================================================================\n\nconst noop = () => {};\n\nexport default class Console {\n constructor(enabled = false) {\n this.enabled = window.console && enabled;\n\n if (this.enabled) {\n this.log('Debugging enabled');\n }\n }\n\n get log() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.log, console) : noop;\n }\n get warn() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.warn, console) : noop;\n }\n get error() {\n // eslint-disable-next-line no-console\n return this.enabled ? Function.prototype.bind.call(console.error, console) : noop;\n }\n}\n","// ==========================================================================\n// Fullscreen wrapper\n// ==========================================================================\n\nimport utils from './utils';\n\nconst browser = utils.getBrowser();\n\nfunction onChange() {\n if (!this.enabled) {\n return;\n }\n\n // Update toggle button\n const button = this.player.elements.buttons.fullscreen;\n if (utils.is.element(button)) {\n utils.toggleState(button, this.active);\n }\n\n // Trigger an event\n utils.dispatchEvent(this.target, this.active ? 'enterfullscreen' : 'exitfullscreen', true);\n\n // Trap focus in container\n if (!browser.isIos) {\n utils.trapFocus.call(this.player, this.target, this.active);\n }\n}\n\nfunction toggleFallback(toggle = false) {\n // Store or restore scroll position\n if (toggle) {\n this.scrollPosition = {\n x: window.scrollX || 0,\n y: window.scrollY || 0,\n };\n } else {\n window.scrollTo(this.scrollPosition.x, this.scrollPosition.y);\n }\n\n // Toggle scroll\n document.body.style.overflow = toggle ? 'hidden' : '';\n\n // Toggle class hook\n utils.toggleClass(this.target, this.player.config.classNames.fullscreen.fallback, toggle);\n\n // Toggle button and fire events\n onChange.call(this);\n}\n\nclass Fullscreen {\n constructor(player) {\n // Keep reference to parent\n this.player = player;\n\n // Get prefix\n this.prefix = Fullscreen.prefix;\n\n // Scroll position\n this.scrollPosition = { x: 0, y: 0 };\n\n // Register event listeners\n // Handle event (incase user presses escape etc)\n utils.on(document, this.prefix === 'ms' ? 'MSFullscreenChange' : `${this.prefix}fullscreenchange`, () => {\n // TODO: Filter for target??\n onChange.call(this);\n });\n\n // Fullscreen toggle on double click\n utils.on(this.player.elements.container, 'dblclick', () => {\n this.toggle();\n });\n\n // Prevent double click on controls bubbling up\n utils.on(this.player.elements.controls, 'dblclick', event => event.stopPropagation());\n\n // Update the UI\n this.update();\n }\n\n // Determine if native supported\n static get native() {\n return !!(document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled);\n }\n\n // Get the prefix for handlers\n static get prefix() {\n // No prefix\n if (utils.is.function(document.cancelFullScreen)) {\n return false;\n }\n\n // Check for fullscreen support by vendor prefix\n let value = '';\n const prefixes = [\n 'webkit',\n 'moz',\n 'ms',\n ];\n\n prefixes.some(pre => {\n if (utils.is.function(document[`${pre}CancelFullScreen`])) {\n value = pre;\n return true;\n } else if (utils.is.function(document.msExitFullscreen)) {\n value = 'ms';\n return true;\n }\n\n return false;\n });\n\n return value;\n }\n\n // Determine if fullscreen is enabled\n get enabled() {\n const fallback = this.player.config.fullscreen.fallback && !utils.inFrame();\n\n return (Fullscreen.native || fallback) && this.player.config.fullscreen.enabled && this.player.supported.ui && this.player.isVideo;\n }\n\n // Get active state\n get active() {\n if (!this.enabled) {\n return false;\n }\n\n // Fallback using classname\n if (!Fullscreen.native) {\n return utils.hasClass(this.target, this.player.config.classNames.fullscreen.fallback);\n }\n\n const element = !this.prefix ? document.fullscreenElement : document[`${this.prefix}FullscreenElement`];\n\n return element === this.target;\n }\n\n // Get target element\n get target() {\n return browser.isIos && this.player.config.fullscreen.iosNative ? this.player.media : this.player.elements.container;\n }\n\n // Update UI\n update() {\n if (this.enabled) {\n this.player.debug.log(`${Fullscreen.native ? 'Native' : 'Fallback'} fullscreen enabled`);\n } else {\n this.player.debug.log('Fullscreen not supported and fallback disabled');\n }\n\n // Add styling hook to show button\n utils.toggleClass(this.player.elements.container, this.player.config.classNames.fullscreen.enabled, this.enabled);\n }\n\n // Make an element fullscreen\n enter() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen doesn't need the request step\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n if (this.player.playing) {\n this.target.webkitEnterFullscreen();\n }\n } else if (!Fullscreen.native) {\n toggleFallback.call(this, true);\n } else if (!this.prefix) {\n this.target.requestFullScreen();\n } else if (!utils.is.empty(this.prefix)) {\n this.target[`${this.prefix}${this.prefix === 'ms' ? 'RequestFullscreen' : 'RequestFullScreen'}`]();\n }\n }\n\n // Bail from fullscreen\n exit() {\n if (!this.enabled) {\n return;\n }\n\n // iOS native fullscreen\n if (browser.isIos && this.player.config.fullscreen.iosNative) {\n this.target.webkitExitFullscreen();\n this.player.play();\n } else if (!Fullscreen.native) {\n toggleFallback.call(this, false);\n } else if (!this.prefix) {\n document.cancelFullScreen();\n } else if (!utils.is.empty(this.prefix)) {\n document[`${this.prefix}${this.prefix === 'ms' ? 'ExitFullscreen' : 'CancelFullScreen'}`]();\n }\n }\n\n // Toggle state\n toggle() {\n if (!this.active) {\n this.enter();\n } else {\n this.exit();\n }\n }\n}\n\nexport default Fullscreen;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport utils from './utils';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n if (!('localStorage' in window)) {\n return false;\n }\n\n const test = '___test';\n\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n try {\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n get(key) {\n const store = window.localStorage.getItem(this.key);\n\n if (!Storage.supported || utils.is.empty(store)) {\n return null;\n }\n\n const json = JSON.parse(store);\n\n return utils.is.string(key) && key.length ? json[key] : json;\n }\n\n set(object) {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objectst\n if (!utils.is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (utils.is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n utils.extend(storage, object);\n\n // Update storage\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n}\n\nexport default Storage;\n","// ==========================================================================\n// Advertisement plugin using Google IMA HTML5 SDK\n// Create an account with our ad partner, vi here:\n// https://www.vi.ai/publisher-video-monetization/\n// ==========================================================================\n\n/* global google */\n\nimport utils from '../utils';\n\n// Build the default tag URL\nconst getTagUrl = () => {\n const params = {\n AV_PUBLISHERID: '58c25bb0073ef448b1087ad6',\n AV_CHANNELID: '5a0458dc28a06145e4519d21',\n AV_URL: '127.0.0.1:3000',\n cb: 1,\n AV_WIDTH: 640,\n AV_HEIGHT: 480,\n };\n\n const base = 'https://go.aniview.com/api/adserver6/vast/';\n\n return `${base}?${utils.buildUrlParams(params)}`;\n};\n\nclass Ads {\n /**\n * Ads constructor.\n * @param {object} player\n * @return {Ads}\n */\n constructor(player) {\n this.player = player;\n this.enabled = player.config.ads.enabled;\n this.playing = false;\n this.initialized = false;\n this.blocked = false;\n this.enabled = utils.is.url(player.config.ads.tag);\n\n // Check if a tag URL is provided.\n if (!this.enabled) {\n return;\n }\n\n // Check if the Google IMA3 SDK is loaded or load it ourselves\n if (!utils.is.object(window.google)) {\n utils.loadScript(\n player.config.urls.googleIMA.api,\n () => {\n this.ready();\n },\n () => {\n // Script failed to load or is blocked\n this.blocked = true;\n this.player.debug.log('Ads error: Google IMA SDK failed to load');\n },\n );\n } else {\n this.ready();\n }\n }\n\n /**\n * Get the ads instance ready.\n */\n ready() {\n this.elements = {\n container: null,\n displayContainer: null,\n };\n this.manager = null;\n this.loader = null;\n this.cuePoints = null;\n this.events = {};\n this.safetyTimer = null;\n this.countdownTimer = null;\n\n // Set listeners on the Plyr instance\n this.listeners();\n\n // Start ticking our safety timer. If the whole advertisement\n // thing doesn't resolve within our set time; we bail\n this.startSafetyTimer(12000, 'ready()');\n\n // Setup a simple promise to resolve if the IMA loader is ready\n this.loaderPromise = new Promise(resolve => {\n this.on('ADS_LOADER_LOADED', () => resolve());\n });\n\n // Setup a promise to resolve if the IMA manager is ready\n this.managerPromise = new Promise(resolve => {\n this.on('ADS_MANAGER_LOADED', () => resolve());\n });\n\n // Clear the safety timer\n this.managerPromise.then(() => {\n this.clearSafetyTimer('onAdsManagerLoaded()');\n });\n\n // Setup the IMA SDK\n this.setupIMA();\n }\n\n /**\n * In order for the SDK to display ads for our video, we need to tell it where to put them,\n * so here we define our ad container. This div is set up to render on top of the video player.\n * Using the code below, we tell the SDK to render ads within that div. We also provide a\n * handle to the content video player - the SDK will poll the current time of our player to\n * properly place mid-rolls. After we create the ad display container, we initialize it. On\n * mobile devices, this initialization is done as the result of a user action.\n */\n setupIMA() {\n // Create the container for our advertisements\n this.elements.container = utils.createElement('div', {\n class: this.player.config.classNames.ads,\n hidden: '',\n });\n this.player.elements.container.appendChild(this.elements.container);\n\n // So we can run VPAID2\n google.ima.settings.setVpaidMode(google.ima.ImaSdkSettings.VpaidMode.ENABLED);\n\n // Set language\n google.ima.settings.setLocale(this.player.config.ads.language);\n\n // We assume the adContainer is the video container of the plyr element\n // that will house the ads\n this.elements.displayContainer = new google.ima.AdDisplayContainer(this.elements.container);\n\n // Request video ads to be pre-loaded\n this.requestAds();\n }\n\n /**\n * Request advertisements\n */\n requestAds() {\n const { container } = this.player.elements;\n\n try {\n // Create ads loader\n this.loader = new google.ima.AdsLoader(this.elements.displayContainer);\n\n // Listen and respond to ads loaded and error events\n this.loader.addEventListener(google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED, event => this.onAdsManagerLoaded(event), false);\n this.loader.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error), false);\n\n // Request video ads\n const request = new google.ima.AdsRequest();\n request.adTagUrl = getTagUrl();\n\n // Specify the linear and nonlinear slot sizes. This helps the SDK\n // to select the correct creative if multiple are returned\n request.linearAdSlotWidth = container.offsetWidth;\n request.linearAdSlotHeight = container.offsetHeight;\n request.nonLinearAdSlotWidth = container.offsetWidth;\n request.nonLinearAdSlotHeight = container.offsetHeight;\n\n // We only overlay ads as we only support video.\n request.forceNonLinearFullSlot = false;\n\n this.loader.requestAds(request);\n\n this.handleEventListeners('ADS_LOADER_LOADED');\n } catch (e) {\n this.onAdError(e);\n }\n }\n\n /**\n * Update the ad countdown\n * @param {boolean} start\n */\n pollCountdown(start = false) {\n if (!start) {\n window.clearInterval(this.countdownTimer);\n this.elements.container.removeAttribute('data-badge-text');\n return;\n }\n\n const update = () => {\n const time = utils.formatTime(this.manager.getRemainingTime());\n const label = `${this.player.config.i18n.advertisment} - ${time}`;\n this.elements.container.setAttribute('data-badge-text', label);\n };\n\n this.countdownTimer = window.setInterval(update, 100);\n }\n\n /**\n * This method is called whenever the ads are ready inside the AdDisplayContainer\n * @param {Event} adsManagerLoadedEvent\n */\n onAdsManagerLoaded(adsManagerLoadedEvent) {\n // Get the ads manager\n const settings = new google.ima.AdsRenderingSettings();\n\n // Tell the SDK to save and restore content video state on our behalf\n settings.restoreCustomPlaybackStateOnAdBreakComplete = true;\n settings.enablePreloading = true;\n\n // The SDK is polling currentTime on the contentPlayback. And needs a duration\n // so it can determine when to start the mid- and post-roll\n this.manager = adsManagerLoadedEvent.getAdsManager(this.player, settings);\n\n // Get the cue points for any mid-rolls by filtering out the pre- and post-roll\n this.cuePoints = this.manager.getCuePoints();\n\n // Add advertisement cue's within the time line if available\n this.cuePoints.forEach(cuePoint => {\n if (cuePoint !== 0 && cuePoint !== -1) {\n const seekElement = this.player.elements.progress;\n\n if (seekElement) {\n const cuePercentage = 100 / this.player.duration * cuePoint;\n const cue = utils.createElement('span', {\n class: this.player.config.classNames.cues,\n });\n\n cue.style.left = `${cuePercentage.toString()}%`;\n seekElement.appendChild(cue);\n }\n }\n });\n\n // Get skippable state\n // TODO: Skip button\n // this.manager.getAdSkippableState();\n\n // Set volume to match player\n this.manager.setVolume(this.player.volume);\n\n // Add listeners to the required events\n // Advertisement error events\n this.manager.addEventListener(google.ima.AdErrorEvent.Type.AD_ERROR, error => this.onAdError(error));\n\n // Advertisement regular events\n Object.keys(google.ima.AdEvent.Type).forEach(type => {\n this.manager.addEventListener(google.ima.AdEvent.Type[type], event => this.onAdEvent(event));\n });\n\n // Resolve our adsManager\n this.handleEventListeners('ADS_MANAGER_LOADED');\n }\n\n /**\n * This is where all the event handling takes place. Retrieve the ad from the event. Some\n * events (e.g. ALL_ADS_COMPLETED) don't have the ad object associated\n * https://developers.google.com/interactive-media-ads/docs/sdks/html5/v3/apis#ima.AdEvent.Type\n * @param {Event} event\n */\n onAdEvent(event) {\n const { container } = this.player.elements;\n\n // Retrieve the ad from the event. Some events (e.g. ALL_ADS_COMPLETED)\n // don't have ad object associated\n const ad = event.getAd();\n\n // Proxy event\n const dispatchEvent = type => {\n utils.dispatchEvent.call(this.player, this.player.media, `ads${type}`);\n };\n\n switch (event.type) {\n case google.ima.AdEvent.Type.LOADED:\n // This is the first event sent for an ad - it is possible to determine whether the\n // ad is a video ad or an overlay\n this.handleEventListeners('LOADED');\n\n // Bubble event\n dispatchEvent('loaded');\n\n // Start countdown\n this.pollCountdown(true);\n\n if (!ad.isLinear()) {\n // Position AdDisplayContainer correctly for overlay\n ad.width = container.offsetWidth;\n ad.height = container.offsetHeight;\n }\n\n // console.info('Ad type: ' + event.getAd().getAdPodInfo().getPodIndex());\n // console.info('Ad time: ' + event.getAd().getAdPodInfo().getTimeOffset());\n break;\n\n case google.ima.AdEvent.Type.ALL_ADS_COMPLETED:\n // All ads for the current videos are done. We can now request new advertisements\n // in case the video is re-played\n this.handleEventListeners('ALL_ADS_COMPLETED');\n\n // Fire event\n dispatchEvent('allcomplete');\n\n // TODO: Example for what happens when a next video in a playlist would be loaded.\n // So here we load a new video when all ads are done.\n // Then we load new ads within a new adsManager. When the video\n // Is started - after - the ads are loaded, then we get ads.\n // You can also easily test cancelling and reloading by running\n // player.ads.cancel() and player.ads.play from the console I guess.\n // this.player.source = {\n // type: 'video',\n // title: 'View From A Blue Moon',\n // sources: [{\n // src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.mp4', type:\n // 'video/mp4', }], poster:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.jpg', tracks:\n // [ { kind: 'captions', label: 'English', srclang: 'en', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.en.vtt',\n // default: true, }, { kind: 'captions', label: 'French', srclang: 'fr', src:\n // 'https://cdn.plyr.io/static/demo/View_From_A_Blue_Moon_Trailer-HD.fr.vtt', }, ],\n // };\n\n // TODO: So there is still this thing where a video should only be allowed to start\n // playing when the IMA SDK is ready or has failed\n\n this.loadAds();\n break;\n\n case google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED:\n // This event indicates the ad has started - the video player can adjust the UI,\n // for example display a pause button and remaining time. Fired when content should\n // be paused. This usually happens right before an ad is about to cover the content\n this.handleEventListeners('CONTENT_PAUSE_REQUESTED');\n\n dispatchEvent('contentpause');\n\n this.pauseContent();\n\n break;\n\n case google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED:\n // This event indicates the ad has finished - the video player can perform\n // appropriate UI actions, such as removing the timer for remaining time detection.\n // Fired when content should be resumed. This usually happens when an ad finishes\n // or collapses\n this.handleEventListeners('CONTENT_RESUME_REQUESTED');\n\n dispatchEvent('contentresume');\n\n this.pollCountdown();\n\n this.resumeContent();\n\n break;\n\n case google.ima.AdEvent.Type.STARTED:\n dispatchEvent('started');\n break;\n\n case google.ima.AdEvent.Type.MIDPOINT:\n dispatchEvent('midpoint');\n break;\n\n case google.ima.AdEvent.Type.COMPLETE:\n dispatchEvent('complete');\n break;\n\n case google.ima.AdEvent.Type.IMPRESSION:\n dispatchEvent('impression');\n break;\n\n case google.ima.AdEvent.Type.CLICK:\n dispatchEvent('click');\n break;\n\n default:\n break;\n }\n }\n\n /**\n * Any ad error handling comes through here\n * @param {Event} event\n */\n onAdError(event) {\n this.cancel();\n this.player.debug.log('Ads error', event);\n }\n\n /**\n * Setup hooks for Plyr and window events. This ensures\n * the mid- and post-roll launch at the correct time. And\n * resize the advertisement when the player resizes\n */\n listeners() {\n const { container } = this.player.elements;\n let time;\n\n // Add listeners to the required events\n this.player.on('ended', () => {\n this.loader.contentComplete();\n });\n\n this.player.on('seeking', () => {\n time = this.player.currentTime;\n return time;\n });\n\n this.player.on('seeked', () => {\n const seekedTime = this.player.currentTime;\n\n this.cuePoints.forEach((cuePoint, index) => {\n if (time < cuePoint && cuePoint < seekedTime) {\n this.manager.discardAdBreak();\n this.cuePoints.splice(index, 1);\n }\n });\n });\n\n // Listen to the resizing of the window. And resize ad accordingly\n // TODO: eventually implement ResizeObserver\n window.addEventListener('resize', () => {\n this.manager.resize(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n });\n }\n\n /**\n * Initialize the adsManager and start playing advertisements\n */\n play() {\n const { container } = this.player.elements;\n\n if (!this.managerPromise) {\n return;\n }\n\n // Play the requested advertisement whenever the adsManager is ready\n this.managerPromise.then(() => {\n // Initialize the container. Must be done via a user action on mobile devices\n this.elements.displayContainer.initialize();\n\n try {\n if (!this.initialized) {\n // Initialize the ads manager. Ad rules playlist will start at this time\n this.manager.init(container.offsetWidth, container.offsetHeight, google.ima.ViewMode.NORMAL);\n\n // Call play to start showing the ad. Single video and overlay ads will\n // start at this time; the call will be ignored for ad rules\n this.manager.start();\n }\n\n this.initialized = true;\n } catch (adError) {\n // An error may be thrown if there was a problem with the\n // VAST response\n this.onAdError(adError);\n }\n });\n }\n\n /**\n * Resume our video.\n */\n resumeContent() {\n // Hide our ad container\n utils.toggleHidden(this.elements.container, true);\n\n // Ad is stopped\n this.playing = false;\n\n // Play our video\n if (this.player.currentTime < this.player.duration) {\n this.player.play();\n }\n }\n\n /**\n * Pause our video\n */\n pauseContent() {\n // Show our ad container.\n utils.toggleHidden(this.elements.container, false);\n\n // Ad is playing.\n this.playing = true;\n\n // Pause our video.\n this.player.pause();\n }\n\n /**\n * Destroy the adsManager so we can grab new ads after this. If we don't then we're not\n * allowed to call new ads based on google policies, as they interpret this as an accidental\n * video requests. https://developers.google.com/interactive-\n * media-ads/docs/sdks/android/faq#8\n */\n cancel() {\n // Pause our video\n if (this.initialized) {\n this.resumeContent();\n }\n\n // Tell our instance that we're done for now\n this.handleEventListeners('ERROR');\n\n // Re-create our adsManager\n this.loadAds();\n }\n\n /**\n * Re-create our adsManager\n */\n loadAds() {\n // Tell our adsManager to go bye bye\n this.managerPromise.then(() => {\n // Destroy our adsManager\n if (this.manager) {\n this.manager.destroy();\n }\n\n // Re-set our adsManager promises\n this.managerPromise = new Promise(resolve => {\n this.on('ADS_MANAGER_LOADED', () => resolve());\n this.player.debug.log(this.manager);\n });\n\n // Now request some new advertisements\n this.requestAds();\n });\n }\n\n /**\n * Handles callbacks after an ad event was invoked\n * @param {string} event - Event type\n */\n handleEventListeners(event) {\n if (utils.is.function(this.events[event])) {\n this.events[event].call(this);\n }\n }\n\n /**\n * Add event listeners\n * @param {string} event - Event type\n * @param {function} callback - Callback for when event occurs\n * @return {Ads}\n */\n on(event, callback) {\n this.events[event] = callback;\n return this;\n }\n\n /**\n * Setup a safety timer for when the ad network doesn't respond for whatever reason.\n * The advertisement has 12 seconds to get its things together. We stop this timer when the\n * advertisement is playing, or when a user action is required to start, then we clear the\n * timer on ad ready\n * @param {number} time\n * @param {string} from\n */\n startSafetyTimer(time, from) {\n this.player.debug.log(`Safety timer invoked from: ${from}`);\n\n this.safetyTimer = window.setTimeout(() => {\n this.cancel();\n this.clearSafetyTimer('startSafetyTimer()');\n }, time);\n }\n\n /**\n * Clear our safety timer(s)\n * @param {string} from\n */\n clearSafetyTimer(from) {\n if (!utils.is.nullOrUndefined(this.safetyTimer)) {\n this.player.debug.log(`Safety timer cleared from: ${from}`);\n\n clearTimeout(this.safetyTimer);\n this.safetyTimer = null;\n }\n }\n}\n\nexport default Ads;\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport support from './support';\nimport utils from './utils';\nimport controls from './controls';\nimport ui from './ui';\n\n// Sniff out the browser\nconst browser = utils.getBrowser();\n\nconst listeners = {\n // Global listeners\n global() {\n let last = null;\n\n // Get the key code for an event\n const getKeyCode = event => (event.keyCode ? event.keyCode : event.which);\n\n // Handle key press\n const handleKey = event => {\n const code = getKeyCode(event);\n const pressed = event.type === 'keydown';\n const repeat = pressed && code === last;\n\n // Bail if a modifier key is set\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the keycode for whatever reason\n if (!utils.is.number(code)) {\n return;\n }\n\n // Seek by the number keys\n const seekByKey = () => {\n // Divide the max duration into 10th's and times by the number value\n this.currentTime = this.duration / 10 * (code - 48);\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Which keycodes should we prevent default\n const preventDefault = [\n 48,\n 49,\n 50,\n 51,\n 52,\n 53,\n 54,\n 56,\n 57,\n 32,\n 75,\n 38,\n 40,\n 77,\n 39,\n 37,\n 70,\n 67,\n 73,\n 76,\n 79,\n ];\n\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = utils.getFocusElement();\n if (utils.is.element(focused) && utils.matches(focused, this.config.selectors.editable)) {\n return;\n }\n\n // If the code is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(code)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (code) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n // 0-9\n if (!repeat) {\n seekByKey();\n }\n break;\n\n case 32:\n case 75:\n // Space and K key\n if (!repeat) {\n this.togglePlay();\n }\n break;\n\n case 38:\n // Arrow up\n this.increaseVolume(0.1);\n break;\n\n case 40:\n // Arrow down\n this.decreaseVolume(0.1);\n break;\n\n case 77:\n // M key\n if (!repeat) {\n this.muted = !this.muted;\n }\n break;\n\n case 39:\n // Arrow forward\n this.forward();\n break;\n\n case 37:\n // Arrow back\n this.rewind();\n break;\n\n case 70:\n // F key\n this.fullscreen.toggle();\n break;\n\n case 67:\n // C key\n if (!repeat) {\n this.toggleCaptions();\n }\n break;\n\n case 76:\n // L key\n this.loop = !this.loop;\n break;\n\n /* case 73:\n this.setLoop('start');\n break;\n\n case 76:\n this.setLoop();\n break;\n\n case 79:\n this.setLoop('end');\n break; */\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (!this.fullscreen.enabled && this.fullscreen.active && code === 27) {\n this.fullscreen.toggle();\n }\n\n // Store last code for next cycle\n last = code;\n } else {\n last = null;\n }\n };\n\n // Keyboard shortcuts\n if (this.config.keyboard.global) {\n utils.on(window, 'keydown keyup', handleKey, false);\n } else if (this.config.keyboard.focused) {\n utils.on(this.elements.container, 'keydown keyup', handleKey, false);\n }\n\n // Detect tab focus\n // Remove class on blur/focusout\n utils.on(this.elements.container, 'focusout', event => {\n utils.toggleClass(event.target, this.config.classNames.tabFocus, false);\n });\n\n // Add classname to tabbed elements\n utils.on(this.elements.container, 'keydown', event => {\n if (event.keyCode !== 9) {\n return;\n }\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n window.setTimeout(() => {\n utils.toggleClass(utils.getFocusElement(), this.config.classNames.tabFocus, true);\n }, 0);\n });\n\n // Toggle controls visibility based on mouse movement\n if (this.config.hideControls) {\n // Toggle controls on mouse events and entering fullscreen\n utils.on(this.elements.container, 'mouseenter mouseleave mousemove touchstart touchend touchmove enterfullscreen exitfullscreen', event => {\n this.toggleControls(event);\n });\n }\n },\n\n // Listen for media events\n media() {\n // Time change on media\n utils.on(this.media, 'timeupdate seeking', event => ui.timeUpdate.call(this, event));\n\n // Display duration\n utils.on(this.media, 'durationchange loadedmetadata', event => ui.durationUpdate.call(this, event));\n\n // Check for audio tracks on load\n // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point\n utils.on(this.media, 'loadeddata', () => {\n utils.toggleHidden(this.elements.volume, !this.hasAudio);\n utils.toggleHidden(this.elements.buttons.mute, !this.hasAudio);\n });\n\n // Handle the media finishing\n utils.on(this.media, 'ended', () => {\n // Show poster on end\n if (this.isHTML5 && this.isVideo && this.config.showPosterOnEnd) {\n // Restart\n this.restart();\n\n // Re-load media\n this.media.load();\n }\n });\n\n // Check for buffer progress\n utils.on(this.media, 'progress playing', event => ui.updateProgress.call(this, event));\n\n // Handle native mute\n utils.on(this.media, 'volumechange', event => ui.updateVolume.call(this, event));\n\n // Handle native play/pause\n utils.on(this.media, 'playing play pause ended', event => ui.checkPlaying.call(this, event));\n\n // Loading\n utils.on(this.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(this, event));\n\n // Check if media failed to load\n // utils.on(this.media, 'play', event => ui.checkFailed.call(this, event));\n\n // Click video\n if (this.supported.ui && this.config.clickToPlay && !this.isAudio) {\n // Re-fetch the wrapper\n const wrapper = utils.getElement.call(this, `.${this.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!utils.is.element(wrapper)) {\n return;\n }\n\n // On click play, pause ore restart\n utils.on(wrapper, 'click', () => {\n // Touch devices will just show controls (if we're hiding controls)\n if (this.config.hideControls && support.touch && !this.paused) {\n return;\n }\n\n if (this.paused) {\n this.play();\n } else if (this.ended) {\n this.restart();\n this.play();\n } else {\n this.pause();\n }\n });\n }\n\n // Disable right click\n if (this.supported.ui && this.config.disableContextMenu) {\n utils.on(\n this.media,\n 'contextmenu',\n event => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n utils.on(this.media, 'volumechange', () => {\n // Save to storage\n this.storage.set({ volume: this.volume, muted: this.muted });\n });\n\n // Speed change\n utils.on(this.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(this, 'speed');\n\n // Save to storage\n this.storage.set({ speed: this.speed });\n });\n\n // Quality change\n utils.on(this.media, 'qualitychange', () => {\n // Update UI\n controls.updateSetting.call(this, 'quality');\n\n // Save to storage\n this.storage.set({ quality: this.quality });\n });\n\n // Caption language change\n utils.on(this.media, 'languagechange', () => {\n // Update UI\n controls.updateSetting.call(this, 'captions');\n\n // Save to storage\n this.storage.set({ language: this.language });\n });\n\n // Captions toggle\n utils.on(this.media, 'captionsenabled captionsdisabled', () => {\n // Update UI\n controls.updateSetting.call(this, 'captions');\n\n // Save to storage\n this.storage.set({ captions: this.captions.active });\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n utils.on(this.media, this.config.events.concat([\n 'keyup',\n 'keydown',\n ]).join(' '), event => {\n let detail = {};\n\n // Get error details from media\n if (event.type === 'error') {\n detail = this.media.error;\n }\n\n utils.dispatchEvent.call(this, this.elements.container, event.type, true, detail);\n });\n },\n\n // Listen for control events\n controls() {\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Trigger custom and default handlers\n const proxy = (event, handlerKey, defaultHandler) => {\n const customHandler = this.config.listeners[handlerKey];\n\n // Execute custom handler\n if (utils.is.function(customHandler)) {\n customHandler.call(this, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (!event.defaultPrevented && utils.is.function(defaultHandler)) {\n defaultHandler.call(this, event);\n }\n };\n\n // Play/pause toggle\n utils.on(this.elements.buttons.play, 'click', event =>\n proxy(event, 'play', () => {\n this.togglePlay();\n }),\n );\n\n // Pause\n utils.on(this.elements.buttons.restart, 'click', event =>\n proxy(event, 'restart', () => {\n this.restart();\n }),\n );\n\n // Rewind\n utils.on(this.elements.buttons.rewind, 'click', event =>\n proxy(event, 'rewind', () => {\n this.rewind();\n }),\n );\n\n // Rewind\n utils.on(this.elements.buttons.forward, 'click', event =>\n proxy(event, 'forward', () => {\n this.forward();\n }),\n );\n\n // Mute toggle\n utils.on(this.elements.buttons.mute, 'click', event =>\n proxy(event, 'mute', () => {\n this.muted = !this.muted;\n }),\n );\n\n // Captions toggle\n utils.on(this.elements.buttons.captions, 'click', event =>\n proxy(event, 'captions', () => {\n this.toggleCaptions();\n }),\n );\n\n // Fullscreen toggle\n utils.on(this.elements.buttons.fullscreen, 'click', event =>\n proxy(event, 'fullscreen', () => {\n this.fullscreen.toggle();\n }),\n );\n\n // Picture-in-Picture\n utils.on(this.elements.buttons.pip, 'click', event =>\n proxy(event, 'pip', () => {\n this.pip = 'toggle';\n }),\n );\n\n // Airplay\n utils.on(this.elements.buttons.airplay, 'click', event =>\n proxy(event, 'airplay', () => {\n this.airplay();\n }),\n );\n\n // Settings menu\n utils.on(this.elements.buttons.settings, 'click', event => {\n controls.toggleMenu.call(this, event);\n });\n\n // Click anywhere closes menu\n utils.on(document.documentElement, 'click', event => {\n controls.toggleMenu.call(this, event);\n });\n\n // Settings menu\n utils.on(this.elements.settings.form, 'click', event => {\n event.stopPropagation();\n\n // Settings menu items - use event delegation as items are added/removed\n if (utils.matches(event.target, this.config.selectors.inputs.language)) {\n proxy(event, 'language', () => {\n this.language = event.target.value;\n });\n } else if (utils.matches(event.target, this.config.selectors.inputs.quality)) {\n proxy(event, 'quality', () => {\n this.quality = event.target.value;\n });\n } else if (utils.matches(event.target, this.config.selectors.inputs.speed)) {\n proxy(event, 'speed', () => {\n this.speed = parseFloat(event.target.value);\n });\n } else {\n controls.showTab.call(this, event);\n }\n });\n\n // Seek\n utils.on(this.elements.inputs.seek, inputEvent, event =>\n proxy(event, 'seek', () => {\n this.currentTime = event.target.value / event.target.max * this.duration;\n }),\n );\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (this.config.toggleInvert && !utils.is.element(this.elements.display.duration)) {\n utils.on(this.elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (this.currentTime === 0) {\n return;\n }\n\n this.config.invertTime = !this.config.invertTime;\n ui.timeUpdate.call(this);\n });\n }\n\n // Volume\n utils.on(this.elements.inputs.volume, inputEvent, event =>\n proxy(event, 'volume', () => {\n this.volume = event.target.value;\n }),\n );\n\n // Polyfill for lower fill in for webkit\n if (browser.isWebkit) {\n utils.on(utils.getElements.call(this, 'input[type=\"range\"]'), 'input', event => {\n controls.updateRangeFill.call(this, event.target);\n });\n }\n\n // Seek tooltip\n utils.on(this.elements.progress, 'mouseenter mouseleave mousemove', event => controls.updateSeekTooltip.call(this, event));\n\n // Toggle controls visibility based on mouse movement\n if (this.config.hideControls) {\n // Watch for cursor over controls so they don't hide when trying to interact\n utils.on(this.elements.controls, 'mouseenter mouseleave', event => {\n this.elements.controls.hover = event.type === 'mouseenter';\n });\n\n // Watch for cursor over controls so they don't hide when trying to interact\n utils.on(this.elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => {\n this.elements.controls.pressed = [\n 'mousedown',\n 'touchstart',\n ].includes(event.type);\n });\n\n // Focus in/out on controls\n utils.on(this.elements.controls, 'focusin focusout', event => {\n this.toggleControls(event);\n });\n }\n\n // Mouse wheel for volume\n utils.on(\n this.elements.inputs.volume,\n 'wheel',\n event =>\n proxy(event, 'volume', () => {\n // Detect \"natural\" scroll - suppored on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n const step = 1 / 50;\n let direction = 0;\n\n // Scroll down (or up on natural) to decrease\n if (event.deltaY < 0 || event.deltaX > 0) {\n if (inverted) {\n this.decreaseVolume(step);\n direction = -1;\n } else {\n this.increaseVolume(step);\n direction = 1;\n }\n }\n\n // Scroll up (or down on natural) to increase\n if (event.deltaY > 0 || event.deltaX < 0) {\n if (inverted) {\n this.increaseVolume(step);\n direction = 1;\n } else {\n this.decreaseVolume(step);\n direction = -1;\n }\n }\n\n // Don't break page scrolling at max and min\n if ((direction === 1 && this.media.volume < 1) || (direction === -1 && this.media.volume > 0)) {\n event.preventDefault();\n }\n }),\n false,\n );\n },\n};\n\nexport default listeners;\n","// ==========================================================================\n// Plyr UI\n// ==========================================================================\n\nimport utils from './utils';\nimport captions from './captions';\nimport controls from './controls';\nimport listeners from './listeners';\n\nconst ui = {\n addStyleHook() {\n utils.toggleClass(this.elements.container, this.config.selectors.container.replace('.', ''), true);\n utils.toggleClass(this.elements.container, this.config.classNames.uiSupported, this.supported.ui);\n },\n\n // Toggle native HTML5 media controls\n toggleNativeControls(toggle = false) {\n if (toggle && this.isHTML5) {\n this.media.setAttribute('controls', '');\n } else {\n this.media.removeAttribute('controls');\n }\n },\n\n // Setup the UI\n build() {\n // Re-attach media element listeners\n // TODO: Use event bubbling\n listeners.media.call(this);\n\n // Don't setup interface if no support\n if (!this.supported.ui) {\n this.debug.warn(`Basic support only for ${this.provider} ${this.type}`);\n\n // Restore native controls\n ui.toggleNativeControls.call(this, true);\n\n // Bail\n return;\n }\n\n // Inject custom controls if not present\n if (!utils.is.element(this.elements.controls)) {\n // Inject custom controls\n controls.inject.call(this);\n\n // Re-attach control listeners\n listeners.controls.call(this);\n }\n\n // If there's no controls, bail\n if (!utils.is.element(this.elements.controls)) {\n return;\n }\n\n // Remove native controls\n ui.toggleNativeControls.call(this);\n\n // Captions\n captions.setup.call(this);\n\n // Reset volume\n this.volume = null;\n\n // Reset mute state\n this.muted = null;\n\n // Reset speed\n this.speed = null;\n\n // Reset loop state\n this.loop = null;\n\n // Reset quality options\n this.options.quality = [];\n\n // Reset time display\n ui.timeUpdate.call(this);\n\n // Update the UI\n ui.checkPlaying.call(this);\n\n // Ready for API calls\n this.ready = true;\n\n // Ready event at end of execution stack\n utils.dispatchEvent.call(this, this.media, 'ready');\n\n // Set the title\n ui.setTitle.call(this);\n },\n\n // Setup aria attribute for play and iframe title\n setTitle() {\n // Find the current text\n let label = this.config.i18n.play;\n\n // If there's a media title set, use that for the label\n if (utils.is.string(this.config.title) && !utils.is.empty(this.config.title)) {\n label += `, ${this.config.title}`;\n\n // Set container label\n this.elements.container.setAttribute('aria-label', this.config.title);\n }\n\n // If there's a play button, set label\n if (utils.is.nodeList(this.elements.buttons.play)) {\n Array.from(this.elements.buttons.play).forEach(button => {\n button.setAttribute('aria-label', label);\n });\n }\n\n // Set iframe title\n // https://github.com/sampotts/plyr/issues/124\n if (this.isEmbed) {\n const iframe = utils.getElement.call(this, 'iframe');\n\n if (!utils.is.element(iframe)) {\n return;\n }\n\n // Default to media type\n const title = !utils.is.empty(this.config.title) ? this.config.title : 'video';\n\n iframe.setAttribute('title', this.config.i18n.frameTitle.replace('{title}', title));\n }\n },\n\n // Check playing state\n checkPlaying() {\n // Class hooks\n utils.toggleClass(this.elements.container, this.config.classNames.playing, this.playing);\n utils.toggleClass(this.elements.container, this.config.classNames.stopped, this.paused);\n\n // Set ARIA state\n utils.toggleState(this.elements.buttons.play, this.playing);\n\n // Toggle controls\n this.toggleControls(!this.playing);\n },\n\n // Check if media is loading\n checkLoading(event) {\n this.loading = [\n 'stalled',\n 'waiting',\n ].includes(event.type);\n\n // Clear timer\n clearTimeout(this.timers.loading);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(() => {\n // Toggle container class hook\n utils.toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Show controls if loading, hide if done\n this.toggleControls(this.loading);\n }, this.loading ? 250 : 0);\n },\n\n // Check if media failed to load\n checkFailed() {\n // https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/networkState\n this.failed = this.media.networkState === 3;\n\n if (this.failed) {\n utils.toggleClass(this.elements.container, this.config.classNames.loading, false);\n utils.toggleClass(this.elements.container, this.config.classNames.error, true);\n }\n\n // Clear timer\n clearTimeout(this.timers.failed);\n\n // Timer to prevent flicker when seeking\n this.timers.loading = setTimeout(() => {\n // Toggle container class hook\n utils.toggleClass(this.elements.container, this.config.classNames.loading, this.loading);\n\n // Show controls if loading, hide if done\n this.toggleControls(this.loading);\n }, this.loading ? 250 : 0);\n },\n\n // Update volume UI and storage\n updateVolume() {\n if (!this.supported.ui) {\n return;\n }\n\n // Update range\n if (utils.is.element(this.elements.inputs.volume)) {\n ui.setRange.call(this, this.elements.inputs.volume, this.muted ? 0 : this.volume);\n }\n\n // Update mute state\n if (utils.is.element(this.elements.buttons.mute)) {\n utils.toggleState(this.elements.buttons.mute, this.muted || this.volume === 0);\n }\n },\n\n // Update seek value and lower fill\n setRange(target, value = 0) {\n if (!utils.is.element(target)) {\n return;\n }\n\n // eslint-disable-next-line\n target.value = value;\n\n // Webkit range fill\n controls.updateRangeFill.call(this, target);\n },\n\n // Set value\n setProgress(target, input) {\n const value = utils.is.number(input) ? input : 0;\n const progress = utils.is.element(target) ? target : this.elements.display.buffer;\n\n // Update value and label\n if (utils.is.element(progress)) {\n progress.value = value;\n\n // Update text label inside\n const label = progress.getElementsByTagName('span')[0];\n if (utils.is.element(label)) {\n label.childNodes[0].nodeValue = value;\n }\n }\n },\n\n // Update elements\n updateProgress(event) {\n if (!this.supported.ui || !utils.is.event(event)) {\n return;\n }\n\n let value = 0;\n\n if (event) {\n switch (event.type) {\n // Video playing\n case 'timeupdate':\n case 'seeking':\n value = utils.getPercentage(this.currentTime, this.duration);\n\n // Set seek range value only if it's a 'natural' time event\n if (event.type === 'timeupdate') {\n ui.setRange.call(this, this.elements.inputs.seek, value);\n }\n\n break;\n\n // Check buffer status\n case 'playing':\n case 'progress':\n value = (() => {\n const { buffered } = this.media;\n\n if (buffered && buffered.length) {\n // HTML5\n return utils.getPercentage(buffered.end(0), this.duration);\n } else if (utils.is.number(buffered)) {\n // YouTube returns between 0 and 1\n return buffered * 100;\n }\n\n return 0;\n })();\n\n ui.setProgress.call(this, this.elements.display.buffer, value);\n\n break;\n\n default:\n break;\n }\n }\n },\n\n // Update the displayed time\n updateTimeDisplay(target = null, time = 0, inverted = false) {\n // Bail if there's no element to display or the value isn't a number\n if (!utils.is.element(target) || !utils.is.number(time)) {\n return;\n }\n\n // Always display hours if duration is over an hour\n const displayHours = utils.getHours(this.duration) > 0;\n\n // eslint-disable-next-line no-param-reassign\n target.textContent = utils.formatTime(time, displayHours, inverted);\n },\n\n // Handle time change event\n timeUpdate(event) {\n // Only invert if only one time element is displayed and used for both duration and currentTime\n const invert = !utils.is.element(this.elements.display.duration) && this.config.invertTime;\n\n // Duration\n ui.updateTimeDisplay.call(this, this.elements.display.currentTime, invert ? this.duration - this.currentTime : this.currentTime, invert);\n\n // Ignore updates while seeking\n if (event && event.type === 'timeupdate' && this.media.seeking) {\n return;\n }\n\n // Playing progress\n ui.updateProgress.call(this, event);\n },\n\n // Show the duration on metadataloaded\n durationUpdate() {\n if (!this.supported.ui) {\n return;\n }\n\n // If there's a spot to display duration\n const hasDuration = utils.is.element(this.elements.display.duration);\n\n // If there's only one time display, display duration there\n if (!hasDuration && this.config.displayDuration && this.paused) {\n ui.updateTimeDisplay.call(this, this.elements.display.currentTime, this.duration);\n }\n\n // If there's a duration element, update content\n if (hasDuration) {\n ui.updateTimeDisplay.call(this, this.elements.display.duration, this.duration);\n }\n\n // Update the tooltip (if visible)\n controls.updateSeekTooltip.call(this);\n },\n};\n\nexport default ui;\n","// ==========================================================================\n// Plyr controls\n// ==========================================================================\n\nimport support from './support';\nimport utils from './utils';\nimport ui from './ui';\nimport captions from './captions';\n\n// Sniff out the browser\nconst browser = utils.getBrowser();\n\nconst controls = {\n // Webkit polyfill for lower fill range\n updateRangeFill(target) {\n // WebKit only\n if (!browser.isWebkit) {\n return;\n }\n\n // Get range from event if event passed\n const range = utils.is.event(target) ? target.target : target;\n\n // Needs to be a valid \n if (!utils.is.element(range) || range.getAttribute('type') !== 'range') {\n return;\n }\n\n // Set CSS custom property\n range.style.setProperty('--value', `${range.value / range.max * 100}%`);\n },\n\n // Get icon URL\n getIconUrl() {\n return {\n url: this.config.iconUrl,\n absolute: this.config.iconUrl.indexOf('http') === 0 || (browser.isIE && !window.svg4everybody),\n };\n },\n\n // Create icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.absolute ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n utils.setAttributes(\n icon,\n utils.extend(attributes, {\n role: 'presentation',\n })\n );\n\n // Create the to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n } else {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n }\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(type, attr) {\n let text = this.config.i18n[type];\n const attributes = Object.assign({}, attr);\n\n switch (type) {\n case 'pip':\n text = 'PIP';\n break;\n\n case 'airplay':\n text = 'AirPlay';\n break;\n\n default:\n break;\n }\n\n if ('class' in attributes) {\n attributes.class += ` ${this.config.classNames.hidden}`;\n } else {\n attributes.class = this.config.classNames.hidden;\n }\n\n return utils.createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (utils.is.empty(text)) {\n return null;\n }\n\n const badge = utils.createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n utils.createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text\n )\n );\n\n return badge;\n },\n\n // Create a
if needed\n if (utils.is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the