{"version":3,"sources":["src/js/utils/is.js","src/js/utils/events.js","src/js/utils/elements.js","src/js/utils/animation.js","src/js/utils/browser.js","src/js/support.js","src/js/html5.js","src/js/utils/arrays.js","src/js/utils/objects.js","src/js/utils/strings.js","src/js/utils/i18n.js","src/js/storage.js","src/js/utils/fetch.js","src/js/utils/loadSprite.js","src/js/utils/time.js","src/js/controls.js","src/js/utils/urls.js","src/js/captions.js","src/js/config/defaults.js","src/js/config/states.js","src/js/config/types.js","src/js/console.js","src/js/fullscreen.js","src/js/utils/loadImage.js","src/js/ui.js","src/js/utils/style.js","src/js/listeners.js","node_modules/loadjs/dist/loadjs.umd.js","src/js/utils/loadScript.js","src/js/plugins/vimeo.js","src/js/plugins/youtube.js","src/js/media.js","src/js/plugins/ads.js","src/js/plugins/previewThumbnails.js","src/js/source.js","src/js/plyr.js"],"names":["getConstructor","input","constructor","instanceOf","Boolean","isNullOrUndefined","isObject","Object","isString","String","isArray","Array","isNodeList","NodeList","isEmpty","length","keys","is","nullOrUndefined","object","number","Number","isNaN","string","boolean","function","Function","array","weakMap","WeakMap","nodeList","element","Element","textNode","Text","event","Event","keyboardEvent","KeyboardEvent","cue","window","TextTrackCue","VTTCue","track","TextTrack","kind","promise","Promise","url","URL","startsWith","concat","hostname","e","empty","supportsPassiveListeners","supported","options","defineProperty","get","addEventListener","removeEventListener","toggleListener","callback","_this","this","toggle","arguments","undefined","passive","capture","events","split","forEach","type","eventListeners","push","on","call","off","once","_this2","onceCallback","_len","args","_key","apply","triggerEvent","bubbles","detail","CustomEvent","assign","plyr","dispatchEvent","wrap","elements","wrapper","targets","from","reverse","index","child","cloneNode","parent","parentNode","sibling","nextSibling","appendChild","insertBefore","setAttributes","attributes","entries","filter","_ref","value","_slicedToArray","_ref3","_ref4","key","setAttribute","createElement","text","document","innerText","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","s","selector","trim","className","replace","parts","charAt","class","id","toggleHidden","hidden","hide","removeAttribute","toggleClass","force","map","method","classList","contains","hasClass","matches","querySelectorAll","includes","getElements","container","getElement","querySelector","setFocus","tabFocus","focus","preventScroll","config","classNames","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","find","style","repaint","setTimeout","offsetHeight","range","browser","isIE","documentMode","isEdge","navigator","userAgent","isWebkit","documentElement","test","isIPhone","platform","isIos","defaultCodecs","audio/ogg","audio/wav","video/webm","video/mp4","video/ogg","support","audio","video","check","provider","playsinline","canPlayInline","api","ui","rangeInput","pip","webkitSetPresentationMode","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","mediaType","isHTML5","media","canPlayType","textTracks","touch","transitions","reducedMotion","matchMedia","html5","getSources","source","getAttribute","getQualityOptions","extend","player","set","_player$media","currentTime","paused","preload","readyState","src","play","load","quality","cancelRequests","blankVideo","debug","log","dedupe","item","indexOf","getDeep","path","reduce","obj","target","sources","shift","_defineProperty","format","toString","match","i","replaceAll","RegExp","toTitleCase","toUpperCase","substr","toLowerCase","toCamelCase","toPascalCase","slice","getHTML","innerHTML","resources","vimeo","youtube","i18n","{seektime}","seekTime","{title}","title","_ref2","Storage","_classCallCheck","enabled","storage","store","localStorage","getItem","json","JSON","parse","setItem","stringify","removeItem","fetch","responseType","resolve","reject","request","XMLHttpRequest","responseText","response","Error","status","open","send","loadSprite","hasId","exists","getElementById","update","data","body","insertAdjacentElement","useStorage","cached","content","then","result","catch","getHours","Math","trunc","getMinutes","getSeconds","formatTime","time","displayHours","inverted","hours","mins","secs","controls","getIconUrl","cors","iconUrl","location","host","svg4everybody","findElements","selectors","buttons","pause","restart","rewind","fastForward","mute","settings","captions","fullscreen","progress","inputs","seek","volume","display","buffer","duration","seekTooltip","tooltip","error","warn","toggleNativeControls","createIcon","iconPath","iconPrefix","icon","createElementNS","role","focusable","use","setAttributeNS","createLabel","attr","join","createBadge","badge","menu","createButton","buttonType","props","label","labelPressed","iconPressed","control","button","createRange","min","max","step","autocomplete","aria-label","aria-valuemin","aria-valuemax","aria-valuenow","updateRangeFill","createProgress","aria-hidden","suffixKey","played","suffix","createTime","bindMenuItemShortcuts","menuItem","which","preventDefault","stopPropagation","isRadioButton","showMenuPanel","nextElementSibling","firstElementChild","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","list","_ref$badge","_ref$checked","checked","aria-checked","flex","enumerable","children","node","listeners","bind","currentTrack","speed","parseFloat","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","_this3","current","toFixed","getElementsByTagName","nodeValue","setProgress","buffered","percent","setProperty","updateSeekTooltip","_this4","tooltips","clientRect","getBoundingClientRect","visible","width","pageX","left","timeUpdate","invert","invertTime","seeking","durationUpdate","pow","hasDuration","displayDuration","toggleMenuButton","setting","updateSetting","pane","panels","default","getLabel","setQualityMenu","_this5","checkMenu","getBadge","sort","a","b","sorting","setCaptionsMenu","_this6","tracks","getTracks","toggled","language","unshift","setSpeedMenu","_this7","isVimeo","values","some","popup","firstItem","toggleMenu","show","isMenuItem","getMenuSize","tab","clone","position","opacity","scrollWidth","height","scrollHeight","_this8","size","restore","propertyName","setDownloadLink","download","create","_this9","aria-haspopup","aria-controls","aria-expanded","inner","home","backButton","href","urls","isEmbed","inject","_this10","floor","random","seektime","addProperty","controlPressed","_this$config","labels","parseUrl","parser","buildUrlParams","params","URLSearchParams","setup","isVideo","isYouTube","protocol","blob","createObjectURL","languages","userLanguage","active","trackEvents","_this$captions","meta","currentTrackNode","languageExists","mode","updateCues","setLanguage","activeClass","findTrack","_toConsumableArray","embed","enableTextTrack","has","sortIsDefault","sorted","every","getCurrentTrack","cues","activeCues","getCueAsHTML","cueText","caption","defaults","autoplay","autopause","toggleInvert","ratio","clickToPlay","hideControls","resetOnEnd","disableContextMenu","loop","selected","keyboard","focused","global","fallback","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","start","end","all","reset","disabled","advertisement","qualityBadge","2160","1440","1080","720","576","480","sdk","iframe","googleIMA","editable","embedContainer","poster","posterEnabled","ads","playing","stopped","loading","hover","isTouch","uiSupported","noTransition","previewThumbnails","thumbContainer","thumbContainerShown","imageContainer","timeContainer","scrubbingContainer","scrubbingContainerShown","google","publisherId","tagUrl","byline","portrait","transparent","noCookie","rel","showinfo","iv_load_policy","modestbranding","providers","types","noop","Console","console","prototype","onChange","first","last","keyCode","activeElement","shiftKey","toggleFallback","scrollPosition","x","scrollX","y","scrollY","scrollTo","overflow","viewport","head","property","hasProperty","cleanupViewport","part","Fullscreen","prefix","forceFallback","native","webkitEnterFullscreen","requestFullscreen","webkitExitFullscreen","action","cancelFullScreen","exit","enter","fullscreenElement","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","pre","loadImage","minWidth","image","Image","handler","onload","onerror","naturalWidth","addStyleHook","build","checkPlaying","ready","setTitle","setPoster","togglePoster","enable","err","backgroundImage","backgroundSize","toggleControls","checkLoading","clearTimeout","timers","recentTouchSeek","lastSeekTime","Date","now","setAspectRatio","_ratio$split$map2","padding","paddingBottom","offset","transform","Listeners","lastKey","focusTimer","lastKeyDown","handleKey","setTabFocus","firstTouch","code","repeat","altKey","ctrlKey","metaKey","togglePlay","increaseVolume","decreaseVolume","forward","toggleCaptions","usingNative","timeStamp","wasKeyDown","delay","setPlayerSize","measure","rect","resized","_player$fullscreen","isEnter","_setPlayerSize","firstChild","_player$embed$ratio$s2","videoWidth","videoHeight","maxWidth","margin","setGutter","hasAudio","isAudio","ended","proxy","proxyEvents","_event$detail","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","currentTarget","hasAttribute","done","seekTo","loaded","startMove","endMove","startScrubbing","endScrubbing","webkitDirectionInvertedFromDevice","_map2","deltaX","deltaY","direction","sign","abs","module","exports","devnull","bundleIdCache","bundleResultCache","bundleCallbackQueue","publish","bundleId","pathsNotFound","q","splice","executeCallbacks","depsNotFound","success","loadFile","callbackFn","numTries","isCss","doc","async","maxTries","numRetries","beforeCallbackFn","before","pathStripped","onbeforeload","ev","sheet","cssText","defaultPrevented","loadjs","paths","arg1","arg2","fn","numWaiting","loadFiles","deps","bundleIds","r","subscribe","isDefined","factory","loadScript","assurePlaybackState","hasPlayed","Vimeo","gesture","$2","thumbnail_large","pathname","Player","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","setPlaybackRate","name","currentSrc","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","_dimensions","setAutopause","state","getVideoTitle","getCurrentTime","getDuration","getTextTracks","_ref$cues","strippedCues","fragment","createDocumentFragment","getPaused","seconds","parseInt","YT","onYouTubeReadyCallbacks","onYouTubeIframeAPIReady","getTitle","videoId","getVideoData","items","snippet","currentId","posterSrc","playerVars","hl","disablekb","cc_load_policy","cc_lang_pref","widget_referrer","onError","message","2","5","100","101","150","onPlaybackRateChange","instance","playbackRate","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","getAvailablePlaybackRates","clearInterval","buffering","setInterval","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","Ads","initialized","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","managerPromise","ima","trigger","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","setDisableCustomPlaybackForIOS10Plus","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","AdEvent","onAdEvent","cuePoint","seekElement","cuePercentage","ad","getAd","adData","getAdData","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","LOG","adError","getMessage","cancel","addCuePoints","contentComplete","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","init","zIndex","_this11","destroy","_this12","handlers","_this13","AV_PUBLISHERID","AV_CHANNELID","AV_URL","cb","AV_WIDTH","AV_HEIGHT","AV_CDIM2","PreviewThumbnails","thumbnails","lastMouseMoveTime","mouseDown","loadedImages","thumb","scrubbing","getThumbnails","render","determineContainerAutoSizing","promises","u","getThumbnail","vttDataString","processedList","thumbnail","frames","frame","line","startTime","lineSplit","_lineSplit","_lineSplit$1$split2","w","h","matchTimes","endTime","urlPrefix","substring","lastIndexOf","tempImage","naturalHeight","percentage","mousePosX","showImageAtCurrentTime","toggleThumbContainer","toggleScrubbingContainer","ceil","lastTime","setScrubbingContainerSize","setThumbContainerSizeAndPos","thumbNum","findIndex","hasThumb","qualityIndex","showingThumb","thumbFilename","thumbUrl","currentImageElement","dataset","filename","showImage","removeOldImages","loadingImage","usingSprites","previewImage","showingThumbFilename","newImage","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","currentImage","tagName","removeDelay","deleting","oldThumbFilename","thumbnailsClone","foundOne","newThumbFilename","thumbURL","currentQualityIndex","previewImageHeight","thumbContainerHeight","clearShowing","clientHeight","sizeSpecifiedInCSS","thumbWidth","thumbAspectRatio","setThumbContainerPos","seekbarRect","plyrRect","minVal","maxVal","right","clientWidth","previewPos","multiplier","top","currentScrubbingImageElement","currentThumbnailImageElement","insertElements","attribute","change","_sources$","_sources$$provider","crossorigin","Plyr","failed","jQuery","original","getProviderByUrl","search","truthy","searchParams","tabindex","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","fauxDuration","realDuration","Infinity","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","updateStorage","prev","curr","closest","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","inline","t"],"mappings":"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","file":"plyr.min.js","sourcesContent":["// ==========================================================================\n// Type checking utils\n// ==========================================================================\n\nconst getConstructor = input => (input !== null && typeof input !== 'undefined' ? input.constructor : null);\nconst instanceOf = (input, constructor) => Boolean(input && constructor && input instanceof constructor);\nconst isNullOrUndefined = input => input === null || typeof input === 'undefined';\nconst isObject = input => getConstructor(input) === Object;\nconst isNumber = input => getConstructor(input) === Number && !Number.isNaN(input);\nconst isString = input => getConstructor(input) === String;\nconst isBoolean = input => getConstructor(input) === Boolean;\nconst isFunction = input => getConstructor(input) === Function;\nconst isArray = input => Array.isArray(input);\nconst isWeakMap = input => instanceOf(input, WeakMap);\nconst isNodeList = input => instanceOf(input, NodeList);\nconst isElement = input => instanceOf(input, Element);\nconst isTextNode = input => getConstructor(input) === Text;\nconst isEvent = input => instanceOf(input, Event);\nconst isKeyboardEvent = input => instanceOf(input, KeyboardEvent);\nconst isCue = input => instanceOf(input, window.TextTrackCue) || instanceOf(input, window.VTTCue);\nconst isTrack = input => instanceOf(input, TextTrack) || (!isNullOrUndefined(input) && isString(input.kind));\nconst isPromise = input => instanceOf(input, Promise);\n\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\n\nconst isUrl = input => {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n } catch (e) {\n return false;\n }\n};\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n promise: isPromise,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\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\nconst supportsPassiveListeners = (() => {\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 window.removeEventListener('test', null, options);\n } catch (e) {\n // Do nothing\n }\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach(type => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: Object.assign({}, detail, {\n plyr: this,\n }),\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach(item => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport { toggleListener } from './events';\nimport is from './is';\n\n// Wrap an element\nexport function 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// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) {\n return;\n }\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.innerText = text;\n }\n\n // Return built element\n return element;\n}\n\n// Inaert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) {\n return;\n }\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) {\n return;\n }\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) {\n return;\n }\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) {\n return null;\n }\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function 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 (!is.string(sel) || 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 (is.object(existing) && 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 hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) {\n return;\n }\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n if (hide) {\n element.setAttribute('hidden', '');\n } else {\n element.removeAttribute('hidden');\n }\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function 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 =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return matches.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Trap focus inside container\nexport function trapFocus(element = null, toggle = false) {\n if (!is.element(element)) {\n return;\n }\n\n const focusable = 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 = document.activeElement;\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 toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, tabFocus = false) {\n if (!is.element(element)) {\n return;\n }\n\n // Set regular focus\n element.focus({ preventScroll: true });\n\n // If we want to mimic keyboard focus via tab\n if (tabFocus) {\n toggleClass(element, this.config.classNames.tabFocus);\n }\n}\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport { toggleHidden } from './elements';\nimport is from './is';\n\nexport const 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 is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element) {\n setTimeout(() => {\n try {\n toggleHidden(element, true);\n element.offsetHeight; // eslint-disable-line\n toggleHidden(element, false);\n } catch (e) {\n // Do nothing\n }\n }, 0);\n}\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst browser = {\n isIE: /* @cc_on!@ */ false || !!document.documentMode,\n isEdge: window.navigator.userAgent.includes('Edge'),\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\nexport default browser;\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport browser from './utils/browser';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\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, playsinline) {\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari & Chrome only currently\n pip: (() => {\n if (browser.isIPhone) {\n return false;\n }\n\n // Safari\n // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n if (is.function(createElement('video').webkitSetPresentationMode)) {\n return true;\n }\n\n // Chrome\n // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) {\n return true;\n }\n\n return false;\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: '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(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n } catch (e) {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\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 // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: 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// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter(source => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Get sizes from elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n extend() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(source => source.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n // Get sources\n const sources = html5.getSources.call(player);\n\n // Get first match for requested size\n const source = sources.find(source => Number(source.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n player.play();\n }\n });\n\n // Load new source\n player.media.load();\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach(key => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) {\n return input;\n }\n\n return input.toString().replace(/{(\\d+)}/g, (match, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurances of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(\n new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'),\n replace.toString(),\n );\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function 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// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([key, value]) => {\n string = replaceAll(string, key, value);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\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 try {\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 window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n get(key) {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n\n const store = window.localStorage.getItem(this.key);\n\n if (is.empty(store)) {\n return null;\n }\n\n const json = JSON.parse(store);\n\n return 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 (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text') {\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 if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n } catch (e) {\n resolve(request.responseText);\n }\n } else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n\n // Set the required response type\n request.responseType = responseType;\n\n request.send();\n } catch (e) {\n reject(e);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then(result => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return 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 = getHours(time);\n const mins = getMinutes(time);\n const secs = 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 && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/loadSprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const cors = url.host !== window.location.host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(\n `.${this.config.classNames.tooltip}`,\n );\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 // 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.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n role: 'presentation',\n focusable: 'false',\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 }\n\n // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(key, attr = {}) {\n const text = i18n.get(key, this.config);\n\n const attributes = Object.assign({}, attr, {\n class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' '),\n });\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n 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
to hide the standard controls and UI\n if (this.isVimeo && this.supported.ui) {\n const height = 240;\n const offset = (height - padding) / (height / 50);\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n\n return { padding, ratio };\n}\n\nexport default { setAspectRatio };\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport { repaint } from './utils/animation';\nimport browser from './utils/browser';\nimport { getElement, getElements, matches, toggleClass, toggleHidden } from './utils/elements';\nimport { off, on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { setAspectRatio } from './utils/style';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n this.focusTimer = null;\n this.lastKeyDown = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.setTabFocus = this.setTabFocus.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const { player } = this;\n const { elements } = player;\n const code = event.keyCode ? event.keyCode : event.which;\n const pressed = event.type === 'keydown';\n const repeat = pressed && code === this.lastKey;\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 (!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 player.currentTime = (player.duration / 10) * (code - 48);\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\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 = document.activeElement;\n if (is.element(focused)) {\n const { editable } = player.config.selectors;\n const { seek } = elements.inputs;\n\n if (focused !== seek && matches(focused, editable)) {\n return;\n }\n\n if (event.which === 32 && matches(focused, 'button, [role^=\"menuitem\"]')) {\n return;\n }\n }\n\n // Which keycodes should we prevent default\n const preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79];\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 player.togglePlay();\n }\n break;\n\n case 38:\n // Arrow up\n player.increaseVolume(0.1);\n break;\n\n case 40:\n // Arrow down\n player.decreaseVolume(0.1);\n break;\n\n case 77:\n // M key\n if (!repeat) {\n player.muted = !player.muted;\n }\n break;\n\n case 39:\n // Arrow forward\n player.forward();\n break;\n\n case 37:\n // Arrow back\n player.rewind();\n break;\n\n case 70:\n // F key\n player.fullscreen.toggle();\n break;\n\n case 67:\n // C key\n if (!repeat) {\n player.toggleCaptions();\n }\n break;\n\n case 76:\n // L key\n player.loop = !player.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 (code === 27 && !player.fullscreen.usingNative && player.fullscreen.active) {\n player.fullscreen.toggle();\n }\n\n // Store last code for next cycle\n this.lastKey = code;\n } else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch() {\n const { player } = this;\n const { elements } = player;\n\n player.touch = true;\n\n // Add touch class\n toggleClass(elements.container, player.config.classNames.isTouch, true);\n }\n\n setTabFocus(event) {\n const { player } = this;\n const { elements } = player;\n\n clearTimeout(this.focusTimer);\n\n // Ignore any key other than tab\n if (event.type === 'keydown' && event.which !== 9) {\n return;\n }\n\n // Store reference to event timeStamp\n if (event.type === 'keydown') {\n this.lastKeyDown = event.timeStamp;\n }\n\n // Remove current classes\n const removeCurrent = () => {\n const className = player.config.classNames.tabFocus;\n const current = getElements.call(player, `.${className}`);\n toggleClass(current, className, false);\n };\n\n // Determine if a key was pressed to trigger this event\n const wasKeyDown = event.timeStamp - this.lastKeyDown <= 20;\n\n // Ignore focus events if a key was pressed prior\n if (event.type === 'focus' && !wasKeyDown) {\n return;\n }\n\n // Remove all current\n removeCurrent();\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n this.focusTimer = setTimeout(() => {\n const focused = document.activeElement;\n\n // Ignore if current focus element isn't inside the player\n if (!elements.container.contains(focused)) {\n return;\n }\n\n toggleClass(document.activeElement, player.config.classNames.tabFocus, true);\n }, 10);\n }\n\n // Global window & document listeners\n global(toggle = true) {\n const { player } = this;\n\n // Keyboard shortcuts\n if (player.config.keyboard.global) {\n toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(player, document.body, 'touchstart', this.firstTouch);\n\n // Tab focus detection\n toggleListener.call(player, document.body, 'keydown focus blur', this.setTabFocus, toggle, false, true);\n }\n\n // Container listeners\n container() {\n const { player } = this;\n const { config, elements, timers } = player;\n\n // Keyboard shortcuts\n if (!config.keyboard.global && config.keyboard.focused) {\n on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n player,\n elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n event => {\n const { controls } = elements;\n\n // Remove button states for fullscreen\n if (controls && event.type === 'enterfullscreen') {\n controls.pressed = false;\n controls.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(player, true);\n // Use longer timeout for touch devices\n delay = player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Set new timer to prevent flicker when seeking\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n },\n );\n\n // Force edge to repaint on exit fullscreen\n // TODO: Fix weird bug where Edge doesn't re-draw when exiting fullscreen\n /* if (browser.isEdge) {\n on.call(player, elements.container, 'exitfullscreen', () => {\n setTimeout(() => repaint(elements.container), 100);\n });\n } */\n\n // Set a gutter for Vimeo\n const setGutter = (ratio, padding, toggle) => {\n if (!player.isVimeo) {\n return;\n }\n\n const target = player.elements.wrapper.firstChild;\n const [, height] = ratio.split(':').map(Number);\n const [videoWidth, videoHeight] = player.embed.ratio.split(':').map(Number);\n\n target.style.maxWidth = toggle ? `${(height / videoHeight) * videoWidth}px` : null;\n target.style.margin = toggle ? '0 auto' : null;\n };\n\n // Resize on fullscreen change\n const setPlayerSize = measure => {\n // If we don't need to measure the viewport\n if (!measure) {\n return setAspectRatio.call(player);\n }\n\n const rect = elements.container.getBoundingClientRect();\n const { width, height } = rect;\n\n return setAspectRatio.call(player, `${width}:${height}`);\n };\n\n const resized = () => {\n window.clearTimeout(timers.resized);\n timers.resized = window.setTimeout(setPlayerSize, 50);\n };\n\n on.call(player, elements.container, 'enterfullscreen exitfullscreen', event => {\n const { target, usingNative } = player.fullscreen;\n\n // Ignore for iOS native\n if (!player.isEmbed || target !== elements.container) {\n return;\n }\n\n const isEnter = event.type === 'enterfullscreen';\n\n // Set the player size when entering fullscreen to viewport size\n const { padding, ratio } = setPlayerSize(isEnter);\n\n // Set Vimeo gutter\n setGutter(ratio, padding, isEnter);\n\n // If not using native fullscreen, we need to check for resizes of viewport\n if (!usingNative) {\n if (isEnter) {\n on.call(player, window, 'resize', resized);\n } else {\n off.call(player, window, 'resize', resized);\n }\n }\n });\n }\n\n // Listen for media events\n media() {\n const { player } = this;\n const { elements } = player;\n\n // Time change on media\n on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event));\n\n // Display duration\n on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(player, event),\n );\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 on.call(player, player.media, 'canplay loadeddata', () => {\n toggleHidden(elements.volume, !player.hasAudio);\n toggleHidden(elements.buttons.mute, !player.hasAudio);\n });\n\n // Handle the media finishing\n on.call(player, player.media, 'ended', () => {\n // Show poster on end\n if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n // Restart\n player.restart();\n }\n });\n\n // Check for buffer progress\n on.call(player, player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(player, event),\n );\n\n // Handle volume changes\n on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event));\n\n // Handle play/pause\n on.call(player, player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(player, event),\n );\n\n // Loading state\n on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event));\n\n // Click video\n if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause or restart\n on.call(player, elements.container, 'click', event => {\n const targets = [elements.container, wrapper];\n\n // Ignore if click if not container or in video wrapper\n if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n return;\n }\n\n // Touch devices will just show controls (if hidden)\n if (player.touch && player.config.hideControls) {\n return;\n }\n\n if (player.ended) {\n this.proxy(event, player.restart, 'restart');\n this.proxy(event, player.play, 'play');\n } else {\n this.proxy(event, player.togglePlay, 'play');\n }\n });\n }\n\n // Disable right click\n if (player.supported.ui && player.config.disableContextMenu) {\n on.call(\n player,\n elements.wrapper,\n 'contextmenu',\n event => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(player, player.media, 'volumechange', () => {\n // Save to storage\n player.storage.set({\n volume: player.volume,\n muted: player.muted,\n });\n });\n\n // Speed change\n on.call(player, player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(player, 'speed');\n\n // Save to storage\n player.storage.set({ speed: player.speed });\n });\n\n // Quality change\n on.call(player, player.media, 'qualitychange', event => {\n // Update UI\n controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n });\n\n // Update download link when ready and if quality changes\n on.call(player, player.media, 'ready qualitychange', () => {\n controls.setDownloadLink.call(player);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\n on.call(player, player.media, proxyEvents, event => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = player.media.error;\n }\n\n triggerEvent.call(player, elements.container, event.type, true, detail);\n });\n }\n\n // Run default and custom handlers\n proxy(event, defaultHandler, customHandlerKey) {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned && is.function(defaultHandler)) {\n defaultHandler.call(player, event);\n }\n }\n\n // Trigger custom and default handlers\n bind(element, type, defaultHandler, customHandlerKey, passive = true) {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n player,\n element,\n type,\n event => this.proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n }\n\n // Listen for control events\n controls() {\n const { player } = this;\n const { elements } = player;\n\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Play/pause toggle\n if (elements.buttons.play) {\n Array.from(elements.buttons.play).forEach(button => {\n this.bind(button, 'click', player.togglePlay, 'play');\n });\n }\n\n // Pause\n this.bind(elements.buttons.restart, 'click', player.restart, 'restart');\n\n // Rewind\n this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind');\n\n // Rewind\n this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward');\n\n // Mute toggle\n this.bind(\n elements.buttons.mute,\n 'click',\n () => {\n player.muted = !player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions());\n\n // Download\n this.bind(\n elements.buttons.download,\n 'click',\n () => {\n triggerEvent.call(player, player.media, 'download');\n },\n 'download',\n );\n\n // Fullscreen toggle\n this.bind(\n elements.buttons.fullscreen,\n 'click',\n () => {\n player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n this.bind(\n elements.buttons.pip,\n 'click',\n () => {\n player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay');\n\n // Settings menu - click toggle\n this.bind(elements.buttons.settings, 'click', event => {\n // Prevent the document click listener closing the menu\n event.stopPropagation();\n\n controls.toggleMenu.call(player, event);\n });\n\n // Settings menu - keyboard toggle\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n this.bind(\n elements.buttons.settings,\n 'keyup',\n event => {\n const code = event.which;\n\n // We only care about space and return\n if (![13, 32].includes(code)) {\n return;\n }\n\n // Because return triggers a click anyway, all we need to do is set focus\n if (code === 13) {\n controls.focusFirstMenuItem.call(player, null, true);\n return;\n }\n\n // Prevent scroll\n event.preventDefault();\n\n // Prevent playing video (Firefox)\n event.stopPropagation();\n\n // Toggle menu\n controls.toggleMenu.call(player, event);\n },\n null,\n false, // Can't be passive as we're preventing default\n );\n\n // Escape closes menu\n this.bind(elements.settings.menu, 'keydown', event => {\n if (event.which === 27) {\n controls.toggleMenu.call(player, event);\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n this.bind(elements.inputs.seek, 'mousedown mousemove', event => {\n const rect = elements.progress.getBoundingClientRect();\n const percent = (100 / rect.width) * (event.pageX - rect.left);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', event => {\n const seek = event.currentTarget;\n const code = event.keyCode ? event.keyCode : event.which;\n const attribute = 'play-on-seeked';\n\n if (is.keyboardEvent(event) && (code !== 39 && code !== 37)) {\n return;\n }\n\n // Record seek time so we can prevent hiding controls for a few seconds after seek\n player.lastSeekTime = Date.now();\n\n // Was playing before?\n const play = seek.hasAttribute(attribute);\n\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute(attribute);\n player.play();\n } else if (!done && player.playing) {\n seek.setAttribute(attribute, '');\n player.pause();\n }\n });\n\n // Fix range inputs on iOS\n // Super weird iOS bug where after you interact with an ,\n // it takes over further interactions on the page. This is a hack\n if (browser.isIos) {\n const inputs = getElements.call(player, 'input[type=\"range\"]');\n Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target)));\n }\n\n // Seek\n this.bind(\n elements.inputs.seek,\n inputEvent,\n event => {\n const seek = event.currentTarget;\n\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n player.currentTime = (seekTo / seek.max) * player.duration;\n },\n 'seek',\n );\n\n // Seek tooltip\n this.bind(elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(player, event),\n );\n\n // Preview thumbnails plugin\n // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n this.bind(elements.progress, 'mousemove touchmove', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startMove(event);\n }\n });\n\n // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n this.bind(elements.progress, 'mouseleave click', () => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endMove(false, true);\n }\n });\n\n // Show scrubbing preview\n this.bind(elements.progress, 'mousedown touchstart', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startScrubbing(event);\n }\n });\n\n this.bind(elements.progress, 'mouseup touchend', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endScrubbing(event);\n }\n });\n\n // Polyfill for lower fill in for webkit\n if (browser.isWebkit) {\n Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach(element => {\n this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target));\n });\n }\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (player.config.toggleInvert && !is.element(elements.display.duration)) {\n this.bind(elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (player.currentTime === 0) {\n return;\n }\n\n player.config.invertTime = !player.config.invertTime;\n\n controls.timeUpdate.call(player);\n });\n }\n\n // Volume\n this.bind(\n elements.inputs.volume,\n inputEvent,\n event => {\n player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mouseenter mouseleave', event => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => {\n elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Show controls when they receive focus (e.g., when using keyboard tab key)\n this.bind(elements.controls, 'focusin', () => {\n const { config, elements, timers } = player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, true);\n\n // Toggle\n ui.toggleControls.call(player, true);\n\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for mouse users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Hide again after delay\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n });\n\n // Mouse wheel for volume\n this.bind(\n elements.inputs.volume,\n 'wheel',\n event => {\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\n // Get delta from event. Invert if `inverted` is true\n const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value));\n\n // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\n // Change the volume by 2%\n player.increaseVolume(direction / 50);\n\n // Don't break page scrolling at max and min\n const { volume } = player.media;\n if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n }\n}\n\nexport default Listeners;\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathStripped = path.replace(/^(css|img)!/, ''),\n isCss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(path)) {\n isCss = true;\n\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped; //.replace(/^css!/, ''); // remove \"css!\" prefix\n } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // Note: The following code isolates IE using `hideFocus` and treats empty\n // stylesheets as failures to get around lack of onerror support\n if (isCss && 'hideFocus' in e) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n }\n\n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function)} [arg1] - The bundleId or success callback\n * @param {Function} [arg2] - The success or error callback\n * @param {Function} [arg3] - The error callback\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n // load scripts\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from '../captions';\nimport controls from '../controls';\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadScript from '../utils/loadScript';\nimport { extend } from '../utils/objects';\nimport { format, stripHTML } from '../utils/strings';\nimport { setAspectRatio } from '../utils/style';\nimport { buildUrlParams } from '../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (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// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set intial ratio\n setAspectRatio.call(this);\n\n // Load the API if not already\n if (!is.object(window.Vimeo)) {\n loadScript(this.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(this);\n })\n .catch(error => {\n this.debug.warn('Vimeo API failed to load', error);\n });\n } else {\n vimeo.ready.call(this);\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n const config = player.config.vimeo;\n\n // Get Vimeo params for the iframe\n const params = buildUrlParams(\n extend(\n {},\n {\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n muted: player.muted,\n gesture: 'media',\n playsinline: !this.config.fullscreen.iosNative,\n },\n config,\n ),\n );\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n }\n\n const id = parseId(source);\n\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute('allowtransparency', '');\n iframe.setAttribute('allow', 'autoplay');\n\n // Get poster, if already set\n const { poster } = player;\n\n // Inject the package\n const wrapper = createElement('div', { poster, class: player.config.classNames.embedContainer });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n\n // Get poster image\n fetch(format(player.config.urls.vimeo.api, id), 'json').then(response => {\n if (is.empty(response)) {\n return;\n }\n\n // Get the URL for thumbnail\n const url = new URL(response[0].thumbnail_large);\n\n // Get original image\n url.pathname = `${url.pathname.split('_')[0]}.jpg`;\n\n // Set and show poster\n ui.setPoster.call(player, url.href).catch(() => {});\n });\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(error => {\n // Hide menu item (and menu if empty)\n if (error.name === 'Error') {\n controls.setSpeedMenu.call(player, []);\n }\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then(value => {\n currentSrc = value;\n controls.setDownloadLink.call(player);\n })\n .catch(error => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(dimensions => {\n const [width, height] = dimensions;\n player.embed.ratio = `${width}:${height}`;\n setAspectRatio.call(this, player.embed.ratio);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then(state => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then(title => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then(value => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then(value => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then(tracks => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then(paused => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', data => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', data => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then(value => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', detail => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 0);\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadImage from '../utils/loadImage';\nimport loadScript from '../utils/loadScript';\nimport { extend } from '../utils/objects';\nimport { format, generateId } from '../utils/strings';\nimport { setAspectRatio } from '../utils/style';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (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// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set aspect ratio\n setAspectRatio.call(this);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n } else {\n // Load the API\n loadScript(this.config.urls.youtube.sdk).catch(error => {\n this.debug.warn('YouTube API failed to load', error);\n });\n\n // Setup callback for the API\n // YouTube has it's own system of course...\n window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || [];\n\n // Add to queue\n window.onYouTubeReadyCallbacks.push(() => {\n youtube.ready.call(this);\n });\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n window.onYouTubeReadyCallbacks.forEach(callback => {\n callback();\n });\n };\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n // Try via undocumented API method first\n // This method disappears now and then though...\n // https://github.com/sampotts/plyr/issues/709\n if (is.function(this.embed.getVideoData)) {\n const { title } = this.embed.getVideoData();\n\n if (is.empty(title)) {\n this.config.title = title;\n ui.setTitle.call(this);\n return;\n }\n }\n\n // Or via Google API\n const key = this.config.keys.google;\n if (is.string(key) && !is.empty(key)) {\n const url = format(this.config.urls.youtube.api, videoId, key);\n\n fetch(url)\n .then(result => {\n if (is.object(result)) {\n this.config.title = result.items[0].snippet.title;\n ui.setTitle.call(this);\n }\n })\n .catch(() => {});\n }\n },\n\n // API ready\n ready() {\n const player = this;\n\n // Ignore already setup (race condition)\n const currentId = player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the