{"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","isNumber","Number","isNaN","isString","String","isBoolean","isFunction","Function","isArray","Array","isWeakMap","WeakMap","isNodeList","NodeList","isElement","Element","isTextNode","Text","isEvent","Event","isKeyboardEvent","KeyboardEvent","isCue","window","TextTrackCue","VTTCue","isTrack","TextTrack","kind","isEmpty","length","keys","isUrl","URL","string","startsWith","concat","hostname","e","is","nullOrUndefined","object","number","boolean","function","array","weakMap","nodeList","element","textNode","event","keyboardEvent","cue","track","url","empty","supportsPassiveListeners","supported","options","defineProperty","get","addEventListener","removeEventListener","toggleListener","callback","toggle","arguments","undefined","passive","capture","events","split","forEach","type","_this","eventListeners","push","on","call","this","off","once","onceCallback","args","_len","_key","apply","_this2","triggerEvent","bubbles","detail","CustomEvent","assign","plyr","dispatchEvent","unbindListeners","item","ready","Promise","resolve","_this3","setTimeout","elements","container","then","wrap","wrapper","targets","from","reverse","index","child","cloneNode","parent","parentNode","sibling","nextSibling","appendChild","insertBefore","setAttributes","attributes","entries","filter","_ref","value","_ref3","key","_ref4","setAttribute","createElement","text","document","innerText","insertAfter","target","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","getElement","querySelector","trapFocus","focusable","first","last","keyCode","focused","activeElement","shiftKey","focus","preventDefault","setFocus","tabFocus","preventScroll","config","classNames","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","find","style","repaint","offsetHeight","browser","isIE","documentMode","isEdge","navigator","userAgent","isWebkit","documentElement","test","isIPhone","platform","isIos","defaultCodecs","support","audio","video","check","provider","playsinline","canPlayInline","api","ui","rangeInput","pip","webkitSetPresentationMode","pictureInPictureEnabled","disablePictureInPicture","airplay","WebKitPlaybackTargetAvailabilityEvent","mime","mediaType","isHTML5","media","canPlayType","textTracks","range","touch","transitions","reducedMotion","matchMedia","html5","getSources","source","getAttribute","getQualityOptions","extend","player","set","currentTime","_player$media","paused","preload","readyState","src","play","load","quality","cancelRequests","blankVideo","debug","log","dedupe","indexOf","closest","reduce","prev","curr","Math","abs","cloneDeep","JSON","parse","stringify","getDeep","path","obj","sources","shift","_defineProperty","generateId","prefix","floor","random","format","toString","match","i","getPercentage","current","max","toFixed","replaceAll","RegExp","toTitleCase","toUpperCase","substr","toLowerCase","toPascalCase","toCamelCase","slice","stripHTML","fragment","createDocumentFragment","innerHTML","firstChild","getHTML","resources","vimeo","youtube","i18n","seekTime","title","_ref2","Storage","enabled","storage","store","localStorage","getItem","json","setItem","removeItem","fetch","responseType","reject","request","XMLHttpRequest","responseText","response","Error","status","open","send","loadSprite","hasId","exists","getElementById","update","data","body","insertAdjacentElement","useStorage","cached","content","result","catch","getHours","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","use","setAttributeNS","createLabel","attr","join","createBadge","badge","menu","createButton","buttonType","props","label","labelPressed","iconPressed","control","button","createRange","min","step","autocomplete","updateRangeFill","createProgress","suffixKey","played","suffix","createTime","bindMenuItemShortcuts","menuItem","which","stopPropagation","isRadioButton","showMenuPanel","nextElementSibling","firstElementChild","previousElementSibling","lastElementChild","focusFirstMenuItem","createMenuItem","list","_ref$badge","checked","_ref$checked","flex","enumerable","children","node","listeners","bind","currentTrack","speed","parseFloat","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","getElementsByTagName","nodeValue","setProgress","buffered","percent","setProperty","updateSeekTooltip","tooltips","clientRect","getBoundingClientRect","visible","_this4","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","tracks","getTracks","_this6","toggled","language","unshift","setSpeedMenu","isVimeo","_this7","values","some","popup","firstItem","toggleMenu","show","isMenuItem","getMenuSize","tab","clone","position","opacity","scrollWidth","height","scrollHeight","size","restore","propertyName","_this8","setDownloadLink","download","create","inner","home","_this9","backButton","href","urls","isEmbed","inject","seektime","addProperty","_this10","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","global","fallback","iosNative","seekLabel","unmute","enableCaptions","disableCaptions","enterFullscreen","exitFullscreen","frameTitle","menuBack","normal","start","end","all","reset","disabled","advertisement","qualityBadge","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","inactive","providers","types","getProviderByUrl","noop","Console","console","prototype","onChange","toggleFallback","scrollPosition","x","scrollX","y","scrollY","scrollTo","overflow","viewport","head","property","hasProperty","cleanupViewport","part","Fullscreen","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","setTitle","setPoster","togglePoster","enable","err","backgroundImage","backgroundSize","toggleControls","checkLoading","clearTimeout","timers","recentTouchSeek","lastSeekTime","Date","now","setAspectRatio","padding","_ratio$split$map2","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","videoWidth","_player$embed$ratio$s2","videoHeight","maxWidth","margin","setGutter","hasAudio","initialized","managerPromise","isAudio","ended","proxy","proxyEvents","_event$detail","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","currentTarget","hasAttribute","done","seekTo","webkitDirectionInvertedFromDevice","deltaX","deltaY","_map2","direction","sign","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","parseId","$2","assurePlaybackState","hasPlayed","Vimeo","gesture","thumbnail_large","pathname","Player","disableTextTrack","stop","restorePause","setVolume","setCurrentTime","setPlaybackRate","name","currentSrc","setLoop","getVideoUrl","getVideoWidth","getVideoHeight","dimensions","_dimensions","setAutopause","state","getVideoTitle","getCurrentTime","getDuration","getTextTracks","strippedCues","_ref$cues","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","onPlaybackRateChange","instance","playbackRate","getPlaybackRate","onReady","playVideo","pauseVideo","stopVideo","getAvailablePlaybackRates","clearInterval","buffering","setInterval","getVideoLoadedFraction","lastBuffered","onStateChange","unMute","Ads","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","ima","trigger","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","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","cuePoint","seekElement","cuePercentage","AdEvent","onAdEvent","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","contentComplete","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","init","zIndex","destroy","handlers","_this11","_this12","AV_PUBLISHERID","AV_CHANNELID","AV_URL","cb","AV_WIDTH","AV_HEIGHT","AV_CDIM2","parseVtt","vttDataString","processedList","frame","line","startTime","lineSplit","_lineSplit","_lineSplit$1$split2","w","h","matchTimes","endTime","PreviewThumbnails","thumbnails","lastMousemoveEventTime","mouseDown","loadedImages","thumb","scrubbing","getThumbnails","render","determineContainerAutoSizing","promises","u","getThumbnail","thumbnail","frames","urlPrefix","substring","lastIndexOf","tempImage","naturalHeight","percentage","mousePosX","showImageAtCurrentTime","toggleThumbContainer","toggleScrubbingContainer","timeAtLastTimeupdate","ceil","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$$provider","_sources$","crossorigin","Plyr","failed","jQuery","original","search","truthy","searchParams","tabindex","webkitShowPlaybackTargetPicker","isHidden","hiding","eventName","soft","unload","inputIsValid","fauxDuration","realDuration","Infinity","mozHasAudio","webkitAudioDecodedByteCount","audioTracks","updateStorage","requestPictureInPicture","exitPictureInPicture","webkitPresentationMode","pictureInPictureElement","inline","t"],"mappings":"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","file":"plyr.min.mjs","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));\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 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 // If autoplay, then load advertisement if required\n // TODO: Show some sort of loading state while the ad manager loads else there's a delay before ad shows\n on.call(player, player.media, 'playing', () => {\n if (!player.ads) {\n return;\n }\n\n // If ads are enabled, wait for them first\n if (player.ads.enabled && !player.ads.initialized) {\n // Wait for manager response\n player.ads.managerPromise.then(() => player.ads.play()).catch(() => player.play());\n }\n });\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 // 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