{"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","isPromise","Promise","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","promise","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","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","isAudio","ended","proxy","proxyEvents","_event$detail","defaultHandler","customHandlerKey","customHandler","returned","hasCustomHandler","inputEvent","currentTarget","hasAttribute","done","seekTo","loaded","startMove","endMove","startScrubbing","endScrubbing","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","initialized","displayContainer","manager","loader","cuePoints","safetyTimer","countdownTimer","managerPromise","ima","trigger","startSafetyTimer","clearSafetyTimer","setupIMA","setVpaidMode","ImaSdkSettings","VpaidMode","ENABLED","setLocale","setDisableCustomPlaybackForIOS10Plus","AdDisplayContainer","requestAds","AdsLoader","AdsManagerLoadedEvent","Type","ADS_MANAGER_LOADED","onAdsManagerLoaded","AdErrorEvent","AD_ERROR","onAdError","AdsRequest","adTagUrl","linearAdSlotWidth","offsetWidth","linearAdSlotHeight","nonLinearAdSlotWidth","nonLinearAdSlotHeight","forceNonLinearFullSlot","setAdWillPlayMuted","getRemainingTime","AdsRenderingSettings","restoreCustomPlaybackStateOnAdBreakComplete","enablePreloading","getAdsManager","getCuePoints","AdEvent","onAdEvent","cuePoint","seekElement","cuePercentage","ad","getAd","adData","getAdData","LOADED","pollCountdown","isLinear","ALL_ADS_COMPLETED","loadAds","CONTENT_PAUSE_REQUESTED","pauseContent","CONTENT_RESUME_REQUESTED","resumeContent","STARTED","MIDPOINT","COMPLETE","IMPRESSION","CLICK","LOG","adError","getMessage","cancel","addCuePoints","contentComplete","seekedTime","discardAdBreak","resize","ViewMode","NORMAL","initialize","init","zIndex","_this11","destroy","handlers","_this12","_this13","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","lastMouseMoveTime","mouseDown","loadedImages","thumb","scrubbing","getThumbnails","render","determineContainerAutoSizing","promises","u","getThumbnail","thumbnail","frames","urlPrefix","substring","lastIndexOf","tempImage","naturalHeight","percentage","mousePosX","showImageAtCurrentTime","toggleThumbContainer","toggleScrubbingContainer","ceil","lastTime","setScrubbingContainerSize","setThumbContainerSizeAndPos","thumbNum","findIndex","hasThumb","qualityIndex","showingThumb","thumbFilename","thumbUrl","currentImageElement","dataset","filename","showImage","removeOldImages","loadingImage","usingSprites","previewImage","showingThumbFilename","newImage","setImageSizeAndOffset","currentImageContainer","preloadNearby","getHigherQuality","currentImage","tagName","removeDelay","deleting","oldThumbFilename","thumbnailsClone","foundOne","newThumbFilename","thumbURL","currentQualityIndex","previewImageHeight","thumbContainerHeight","clearShowing","clientHeight","sizeSpecifiedInCSS","thumbWidth","thumbAspectRatio","setThumbContainerPos","seekbarRect","plyrRect","minVal","maxVal","right","clientWidth","previewPos","multiplier","top","currentScrubbingImageElement","currentThumbnailImageElement","insertElements","attribute","change","_sources$$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));\nconst isPromise = input => instanceOf(input, Promise);\n\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\n\nconst isUrl = input => {\n // Accept a URL object\n if (instanceOf(input, window.URL)) {\n return true;\n }\n\n // Must be string from here\n if (!isString(input)) {\n return false;\n }\n\n // Add the protocol if required\n let string = input;\n if (!input.startsWith('http://') || !input.startsWith('https://')) {\n string = `http://${input}`;\n }\n\n try {\n return !isEmpty(new URL(string).hostname);\n } catch (e) {\n return false;\n }\n};\n\nexport default {\n nullOrUndefined: isNullOrUndefined,\n object: isObject,\n number: isNumber,\n string: isString,\n boolean: isBoolean,\n function: isFunction,\n array: isArray,\n weakMap: isWeakMap,\n nodeList: isNodeList,\n element: isElement,\n textNode: isTextNode,\n event: isEvent,\n keyboardEvent: isKeyboardEvent,\n cue: isCue,\n track: isTrack,\n promise: isPromise,\n url: isUrl,\n empty: isEmpty,\n};\n","// ==========================================================================\n// Event utils\n// ==========================================================================\n\nimport is from './is';\n\n// Check for passive event listener support\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n// https://www.youtube.com/watch?v=NPM6172J22g\nconst supportsPassiveListeners = (() => {\n // Test via a getter in the options object to see if the passive property is accessed\n let supported = false;\n try {\n const options = Object.defineProperty({}, 'passive', {\n get() {\n supported = true;\n return null;\n },\n });\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n } catch (e) {\n // Do nothing\n }\n\n return supported;\n})();\n\n// Toggle event listener\nexport function toggleListener(element, event, callback, toggle = false, passive = true, capture = false) {\n // Bail if no element, event, or callback\n if (!element || !('addEventListener' in element) || is.empty(event) || !is.function(callback)) {\n return;\n }\n\n // Allow multiple events\n const events = event.split(' ');\n\n // Build options\n // Default to just the capture boolean for browsers with no passive listener support\n let options = capture;\n\n // If passive events listeners are supported\n if (supportsPassiveListeners) {\n options = {\n // Whether the listener can be passive (i.e. default never prevented)\n passive,\n // Whether the listener is a capturing listener or not\n capture,\n };\n }\n\n // If a single node is passed, bind the event listener\n events.forEach(type => {\n if (this && this.eventListeners && toggle) {\n // Cache event listener\n this.eventListeners.push({ element, type, callback, options });\n }\n\n element[toggle ? 'addEventListener' : 'removeEventListener'](type, callback, options);\n });\n}\n\n// Bind event handler\nexport function on(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, true, passive, capture);\n}\n\n// Unbind event handler\nexport function off(element, events = '', callback, passive = true, capture = false) {\n toggleListener.call(this, element, events, callback, false, passive, capture);\n}\n\n// Bind once-only event handler\nexport function once(element, events = '', callback, passive = true, capture = false) {\n const onceCallback = (...args) => {\n off(element, events, onceCallback, passive, capture);\n callback.apply(this, args);\n };\n\n toggleListener.call(this, element, events, onceCallback, true, passive, capture);\n}\n\n// Trigger event\nexport function triggerEvent(element, type = '', bubbles = false, detail = {}) {\n // Bail if no element\n if (!is.element(element) || is.empty(type)) {\n return;\n }\n\n // Create and dispatch the event\n const event = new CustomEvent(type, {\n bubbles,\n detail: Object.assign({}, detail, {\n plyr: this,\n }),\n });\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\n// Unbind all cached event listeners\nexport function unbindListeners() {\n if (this && this.eventListeners) {\n this.eventListeners.forEach(item => {\n const { element, type, callback, options } = item;\n element.removeEventListener(type, callback, options);\n });\n\n this.eventListeners = [];\n }\n}\n\n// Run method when / if player is ready\nexport function ready() {\n return new Promise(resolve =>\n this.ready ? setTimeout(resolve, 0) : on.call(this, this.elements.container, 'ready', resolve),\n ).then(() => {});\n}\n","// ==========================================================================\n// Element utils\n// ==========================================================================\n\nimport { toggleListener } from './events';\nimport is from './is';\n\n// Wrap an element\nexport function wrap(elements, wrapper) {\n // Convert `elements` to an array, if necessary.\n const targets = elements.length ? elements : [elements];\n\n // Loops backwards to prevent having to clone the wrapper on the\n // first element (see `child` below).\n Array.from(targets)\n .reverse()\n .forEach((element, index) => {\n const child = index > 0 ? wrapper.cloneNode(true) : wrapper;\n\n // Cache the current parent and sibling.\n const parent = element.parentNode;\n const sibling = element.nextSibling;\n\n // Wrap the element (is automatically removed from its current\n // parent).\n child.appendChild(element);\n\n // If the element had a sibling, insert the wrapper before\n // the sibling to maintain the HTML structure; otherwise, just\n // append it to the parent.\n if (sibling) {\n parent.insertBefore(child, sibling);\n } else {\n parent.appendChild(child);\n }\n });\n}\n\n// Set attributes\nexport function setAttributes(element, attributes) {\n if (!is.element(element) || is.empty(attributes)) {\n return;\n }\n\n // Assume null and undefined attributes should be left out,\n // Setting them would otherwise convert them to \"null\" and \"undefined\"\n Object.entries(attributes)\n .filter(([, value]) => !is.nullOrUndefined(value))\n .forEach(([key, value]) => element.setAttribute(key, value));\n}\n\n// Create a DocumentFragment\nexport function createElement(type, attributes, text) {\n // Create a new \n const element = document.createElement(type);\n\n // Set all passed attributes\n if (is.object(attributes)) {\n setAttributes(element, attributes);\n }\n\n // Add text node\n if (is.string(text)) {\n element.innerText = text;\n }\n\n // Return built element\n return element;\n}\n\n// Inaert an element after another\nexport function insertAfter(element, target) {\n if (!is.element(element) || !is.element(target)) {\n return;\n }\n\n target.parentNode.insertBefore(element, target.nextSibling);\n}\n\n// Insert a DocumentFragment\nexport function insertElement(type, parent, attributes, text) {\n if (!is.element(parent)) {\n return;\n }\n\n parent.appendChild(createElement(type, attributes, text));\n}\n\n// Remove element(s)\nexport function removeElement(element) {\n if (is.nodeList(element) || is.array(element)) {\n Array.from(element).forEach(removeElement);\n return;\n }\n\n if (!is.element(element) || !is.element(element.parentNode)) {\n return;\n }\n\n element.parentNode.removeChild(element);\n}\n\n// Remove all child elements\nexport function emptyElement(element) {\n if (!is.element(element)) {\n return;\n }\n\n let { length } = element.childNodes;\n\n while (length > 0) {\n element.removeChild(element.lastChild);\n length -= 1;\n }\n}\n\n// Replace element\nexport function replaceElement(newChild, oldChild) {\n if (!is.element(oldChild) || !is.element(oldChild.parentNode) || !is.element(newChild)) {\n return null;\n }\n\n oldChild.parentNode.replaceChild(newChild, oldChild);\n\n return newChild;\n}\n\n// Get an attribute object from a string selector\nexport function getAttributesFromSelector(sel, existingAttributes) {\n // For example:\n // '.test' to { class: 'test' }\n // '#test' to { id: 'test' }\n // '[data-test=\"test\"]' to { 'data-test': 'test' }\n\n if (!is.string(sel) || is.empty(sel)) {\n return {};\n }\n\n const attributes = {};\n const existing = existingAttributes;\n\n sel.split(',').forEach(s => {\n // Remove whitespace\n const selector = s.trim();\n const className = selector.replace('.', '');\n const stripped = selector.replace(/[[\\]]/g, '');\n\n // Get the parts and value\n const parts = stripped.split('=');\n const key = parts[0];\n const value = parts.length > 1 ? parts[1].replace(/[\"']/g, '') : '';\n\n // Get the first character\n const start = selector.charAt(0);\n\n switch (start) {\n case '.':\n // Add to existing classname\n if (is.object(existing) && is.string(existing.class)) {\n existing.class += ` ${className}`;\n }\n\n attributes.class = className;\n break;\n\n case '#':\n // ID selector\n attributes.id = selector.replace('#', '');\n break;\n\n case '[':\n // Attribute selector\n attributes[key] = value;\n\n break;\n\n default:\n break;\n }\n });\n\n return attributes;\n}\n\n// Toggle hidden\nexport function toggleHidden(element, hidden) {\n if (!is.element(element)) {\n return;\n }\n\n let hide = hidden;\n\n if (!is.boolean(hide)) {\n hide = !element.hidden;\n }\n\n if (hide) {\n element.setAttribute('hidden', '');\n } else {\n element.removeAttribute('hidden');\n }\n}\n\n// Mirror Element.classList.toggle, with IE compatibility for \"force\" argument\nexport function toggleClass(element, className, force) {\n if (is.nodeList(element)) {\n return Array.from(element).map(e => toggleClass(e, className, force));\n }\n\n if (is.element(element)) {\n let method = 'toggle';\n if (typeof force !== 'undefined') {\n method = force ? 'add' : 'remove';\n }\n\n element.classList[method](className);\n return element.classList.contains(className);\n }\n\n return false;\n}\n\n// Has class name\nexport function hasClass(element, className) {\n return is.element(element) && element.classList.contains(className);\n}\n\n// Element matches selector\nexport function matches(element, selector) {\n const prototype = { Element };\n\n function match() {\n return Array.from(document.querySelectorAll(selector)).includes(this);\n }\n\n const matches =\n prototype.matches ||\n prototype.webkitMatchesSelector ||\n prototype.mozMatchesSelector ||\n prototype.msMatchesSelector ||\n match;\n\n return matches.call(element, selector);\n}\n\n// Find all elements\nexport function getElements(selector) {\n return this.elements.container.querySelectorAll(selector);\n}\n\n// Find a single element\nexport function getElement(selector) {\n return this.elements.container.querySelector(selector);\n}\n\n// Trap focus inside container\nexport function trapFocus(element = null, toggle = false) {\n if (!is.element(element)) {\n return;\n }\n\n const focusable = getElements.call(this, 'button:not(:disabled), input:not(:disabled), [tabindex]');\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n\n const trap = event => {\n // Bail if not tab key or not fullscreen\n if (event.key !== 'Tab' || event.keyCode !== 9) {\n return;\n }\n\n // Get the current focused element\n const focused = document.activeElement;\n\n if (focused === last && !event.shiftKey) {\n // Move focus to first element that can be tabbed if Shift isn't used\n first.focus();\n event.preventDefault();\n } else if (focused === first && event.shiftKey) {\n // Move focus to last element that can be tabbed if Shift is used\n last.focus();\n event.preventDefault();\n }\n };\n\n toggleListener.call(this, this.elements.container, 'keydown', trap, toggle, false);\n}\n\n// Set focus and tab focus class\nexport function setFocus(element = null, tabFocus = false) {\n if (!is.element(element)) {\n return;\n }\n\n // Set regular focus\n element.focus({ preventScroll: true });\n\n // If we want to mimic keyboard focus via tab\n if (tabFocus) {\n toggleClass(element, this.config.classNames.tabFocus);\n }\n}\n","// ==========================================================================\n// Animation utils\n// ==========================================================================\n\nimport { toggleHidden } from './elements';\nimport is from './is';\n\nexport const transitionEndEvent = (() => {\n const element = document.createElement('span');\n\n const events = {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend',\n transition: 'transitionend',\n };\n\n const type = Object.keys(events).find(event => element.style[event] !== undefined);\n\n return is.string(type) ? events[type] : false;\n})();\n\n// Force repaint of element\nexport function repaint(element) {\n setTimeout(() => {\n try {\n toggleHidden(element, true);\n element.offsetHeight; // eslint-disable-line\n toggleHidden(element, false);\n } catch (e) {\n // Do nothing\n }\n }, 0);\n}\n","// ==========================================================================\n// Browser sniffing\n// Unfortunately, due to mixed support, UA sniffing is required\n// ==========================================================================\n\nconst browser = {\n isIE: /* @cc_on!@ */ false || !!document.documentMode,\n isEdge: window.navigator.userAgent.includes('Edge'),\n isWebkit: 'WebkitAppearance' in document.documentElement.style && !/Edge/.test(navigator.userAgent),\n isIPhone: /(iPhone|iPod)/gi.test(navigator.platform),\n isIos: /(iPad|iPhone|iPod)/gi.test(navigator.platform),\n};\n\nexport default browser;\n","// ==========================================================================\n// Plyr support checks\n// ==========================================================================\n\nimport { transitionEndEvent } from './utils/animation';\nimport browser from './utils/browser';\nimport { createElement } from './utils/elements';\nimport is from './utils/is';\n\n// Default codecs for checking mimetype support\nconst defaultCodecs = {\n 'audio/ogg': 'vorbis',\n 'audio/wav': '1',\n 'video/webm': 'vp8, vorbis',\n 'video/mp4': 'avc1.42E01E, mp4a.40.2',\n 'video/ogg': 'theora',\n};\n\n// Check for feature support\nconst support = {\n // Basic support\n audio: 'canPlayType' in document.createElement('audio'),\n video: 'canPlayType' in document.createElement('video'),\n\n // Check for support\n // Basic functionality vs full UI\n check(type, provider, playsinline) {\n const canPlayInline = browser.isIPhone && playsinline && support.playsinline;\n const api = support[type] || provider !== 'html5';\n const ui = api && support.rangeInput && (type !== 'video' || !browser.isIPhone || canPlayInline);\n\n return {\n api,\n ui,\n };\n },\n\n // Picture-in-picture support\n // Safari & Chrome only currently\n pip: (() => {\n if (browser.isIPhone) {\n return false;\n }\n\n // Safari\n // https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n if (is.function(createElement('video').webkitSetPresentationMode)) {\n return true;\n }\n\n // Chrome\n // https://developers.google.com/web/updates/2018/10/watch-video-using-picture-in-picture\n if (document.pictureInPictureEnabled && !createElement('video').disablePictureInPicture) {\n return true;\n }\n\n return false;\n })(),\n\n // Airplay support\n // Safari only currently\n airplay: is.function(window.WebKitPlaybackTargetAvailabilityEvent),\n\n // Inline playback support\n // https://webkit.org/blog/6784/new-video-policies-for-ios/\n playsinline: 'playsInline' in document.createElement('video'),\n\n // Check for mime type support against a player instance\n // Credits: http://diveintohtml5.info/everything.html\n // Related: http://www.leanbackplayer.com/test/h5mt.html\n mime(input) {\n if (is.empty(input)) {\n return false;\n }\n\n const [mediaType] = input.split('/');\n let type = input;\n\n // Verify we're using HTML5 and there's no media type mismatch\n if (!this.isHTML5 || mediaType !== this.type) {\n return false;\n }\n\n // Add codec if required\n if (Object.keys(defaultCodecs).includes(type)) {\n type += `; codecs=\"${defaultCodecs[input]}\"`;\n }\n\n try {\n return Boolean(type && this.media.canPlayType(type).replace(/no/, ''));\n } catch (e) {\n return false;\n }\n },\n\n // Check for textTracks support\n textTracks: 'textTracks' in document.createElement('video'),\n\n // Sliders\n rangeInput: (() => {\n const range = document.createElement('input');\n range.type = 'range';\n return range.type === 'range';\n })(),\n\n // Touch\n // NOTE: Remember a device can be mouse + touch enabled so we check on first touch event\n touch: 'ontouchstart' in document.documentElement,\n\n // Detect transitions support\n transitions: transitionEndEvent !== false,\n\n // Reduced motion iOS & MacOS setting\n // https://webkit.org/blog/7551/responsive-design-for-motion/\n reducedMotion: 'matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches,\n};\n\nexport default support;\n","// ==========================================================================\n// Plyr HTML5 helpers\n// ==========================================================================\n\nimport support from './support';\nimport { removeElement } from './utils/elements';\nimport { triggerEvent } from './utils/events';\nimport is from './utils/is';\n\nconst html5 = {\n getSources() {\n if (!this.isHTML5) {\n return [];\n }\n\n const sources = Array.from(this.media.querySelectorAll('source'));\n\n // Filter out unsupported sources (if type is specified)\n return sources.filter(source => {\n const type = source.getAttribute('type');\n\n if (is.empty(type)) {\n return true;\n }\n\n return support.mime.call(this, type);\n });\n },\n\n // Get quality levels\n getQualityOptions() {\n // Get sizes from elements\n return html5.getSources\n .call(this)\n .map(source => Number(source.getAttribute('size')))\n .filter(Boolean);\n },\n\n extend() {\n if (!this.isHTML5) {\n return;\n }\n\n const player = this;\n\n // Quality\n Object.defineProperty(player.media, 'quality', {\n get() {\n // Get sources\n const sources = html5.getSources.call(player);\n const source = sources.find(source => source.getAttribute('src') === player.source);\n\n // Return size, if match is found\n return source && Number(source.getAttribute('size'));\n },\n set(input) {\n // Get sources\n const sources = html5.getSources.call(player);\n\n // Get first match for requested size\n const source = sources.find(source => Number(source.getAttribute('size')) === input);\n\n // No matching source found\n if (!source) {\n return;\n }\n\n // Get current state\n const { currentTime, paused, preload, readyState } = player.media;\n\n // Set new source\n player.media.src = source.getAttribute('src');\n\n // Prevent loading if preload=\"none\" and the current source isn't loaded (#1044)\n if (preload !== 'none' || readyState) {\n // Restore time\n player.once('loadedmetadata', () => {\n player.currentTime = currentTime;\n\n // Resume playing\n if (!paused) {\n player.play();\n }\n });\n\n // Load new source\n player.media.load();\n }\n\n // Trigger change event\n triggerEvent.call(player, player.media, 'qualitychange', false, {\n quality: input,\n });\n },\n });\n },\n\n // Cancel current network requests\n // See https://github.com/sampotts/plyr/issues/174\n cancelRequests() {\n if (!this.isHTML5) {\n return;\n }\n\n // Remove child sources\n removeElement(html5.getSources.call(this));\n\n // Set blank video src attribute\n // This is to prevent a MEDIA_ERR_SRC_NOT_SUPPORTED error\n // Info: http://stackoverflow.com/questions/32231579/how-to-properly-dispose-of-an-html5-video-and-close-socket-or-connection\n this.media.setAttribute('src', this.config.blankVideo);\n\n // Load the new empty source\n // This will cancel existing requests\n // See https://github.com/sampotts/plyr/issues/174\n this.media.load();\n\n // Debugging\n this.debug.log('Cancelled network requests');\n },\n};\n\nexport default html5;\n","// ==========================================================================\n// Array utils\n// ==========================================================================\n\nimport is from './is';\n\n// Remove duplicates in an array\nexport function dedupe(array) {\n if (!is.array(array)) {\n return array;\n }\n\n return array.filter((item, index) => array.indexOf(item) === index);\n}\n\n// Get the closest value in an array\nexport function closest(array, value) {\n if (!is.array(array) || !array.length) {\n return null;\n }\n\n return array.reduce((prev, curr) => (Math.abs(curr - value) < Math.abs(prev - value) ? curr : prev));\n}\n","// ==========================================================================\n// Object utils\n// ==========================================================================\n\nimport is from './is';\n\n// Clone nested objects\nexport function cloneDeep(object) {\n return JSON.parse(JSON.stringify(object));\n}\n\n// Get a nested value in an object\nexport function getDeep(object, path) {\n return path.split('.').reduce((obj, key) => obj && obj[key], object);\n}\n\n// Deep extend destination object with N more objects\nexport function extend(target = {}, ...sources) {\n if (!sources.length) {\n return target;\n }\n\n const source = sources.shift();\n\n if (!is.object(source)) {\n return target;\n }\n\n Object.keys(source).forEach(key => {\n if (is.object(source[key])) {\n if (!Object.keys(target).includes(key)) {\n Object.assign(target, { [key]: {} });\n }\n\n extend(target[key], source[key]);\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n });\n\n return extend(target, ...sources);\n}\n","// ==========================================================================\n// String utils\n// ==========================================================================\n\nimport is from './is';\n\n// Generate a random ID\nexport function generateId(prefix) {\n return `${prefix}-${Math.floor(Math.random() * 10000)}`;\n}\n\n// Format string\nexport function format(input, ...args) {\n if (is.empty(input)) {\n return input;\n }\n\n return input.toString().replace(/{(\\d+)}/g, (match, i) => args[i].toString());\n}\n\n// Get percentage\nexport function getPercentage(current, max) {\n if (current === 0 || max === 0 || Number.isNaN(current) || Number.isNaN(max)) {\n return 0;\n }\n\n return ((current / max) * 100).toFixed(2);\n}\n\n// Replace all occurances of a string in a string\nexport function replaceAll(input = '', find = '', replace = '') {\n return input.replace(\n new RegExp(find.toString().replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1'), 'g'),\n replace.toString(),\n );\n}\n\n// Convert to title case\nexport function toTitleCase(input = '') {\n return input.toString().replace(/\\w\\S*/g, text => text.charAt(0).toUpperCase() + text.substr(1).toLowerCase());\n}\n\n// Convert string to pascalCase\nexport function toPascalCase(input = '') {\n let string = input.toString();\n\n // Convert kebab case\n string = replaceAll(string, '-', ' ');\n\n // Convert snake case\n string = replaceAll(string, '_', ' ');\n\n // Convert to title case\n string = toTitleCase(string);\n\n // Convert to pascal case\n return replaceAll(string, ' ', '');\n}\n\n// Convert string to pascalCase\nexport function toCamelCase(input = '') {\n let string = input.toString();\n\n // Convert to pascal case\n string = toPascalCase(string);\n\n // Convert first character to lowercase\n return string.charAt(0).toLowerCase() + string.slice(1);\n}\n\n// Remove HTML from a string\nexport function stripHTML(source) {\n const fragment = document.createDocumentFragment();\n const element = document.createElement('div');\n fragment.appendChild(element);\n element.innerHTML = source;\n return fragment.firstChild.innerText;\n}\n\n// Like outerHTML, but also works for DocumentFragment\nexport function getHTML(element) {\n const wrapper = document.createElement('div');\n wrapper.appendChild(element);\n return wrapper.innerHTML;\n}\n","// ==========================================================================\n// Plyr internationalization\n// ==========================================================================\n\nimport is from './is';\nimport { getDeep } from './objects';\nimport { replaceAll } from './strings';\n\n// Skip i18n for abbreviations and brand names\nconst resources = {\n pip: 'PIP',\n airplay: 'AirPlay',\n html5: 'HTML5',\n vimeo: 'Vimeo',\n youtube: 'YouTube',\n};\n\nconst i18n = {\n get(key = '', config = {}) {\n if (is.empty(key) || is.empty(config)) {\n return '';\n }\n\n let string = getDeep(config.i18n, key);\n\n if (is.empty(string)) {\n if (Object.keys(resources).includes(key)) {\n return resources[key];\n }\n\n return '';\n }\n\n const replace = {\n '{seektime}': config.seekTime,\n '{title}': config.title,\n };\n\n Object.entries(replace).forEach(([key, value]) => {\n string = replaceAll(string, key, value);\n });\n\n return string;\n },\n};\n\nexport default i18n;\n","// ==========================================================================\n// Plyr storage\n// ==========================================================================\n\nimport is from './utils/is';\nimport { extend } from './utils/objects';\n\nclass Storage {\n constructor(player) {\n this.enabled = player.config.storage.enabled;\n this.key = player.config.storage.key;\n }\n\n // Check for actual support (see if we can use it)\n static get supported() {\n try {\n if (!('localStorage' in window)) {\n return false;\n }\n\n const test = '___test';\n\n // Try to use it (it might be disabled, e.g. user is in private mode)\n // see: https://github.com/sampotts/plyr/issues/131\n window.localStorage.setItem(test, test);\n window.localStorage.removeItem(test);\n\n return true;\n } catch (e) {\n return false;\n }\n }\n\n get(key) {\n if (!Storage.supported || !this.enabled) {\n return null;\n }\n\n const store = window.localStorage.getItem(this.key);\n\n if (is.empty(store)) {\n return null;\n }\n\n const json = JSON.parse(store);\n\n return is.string(key) && key.length ? json[key] : json;\n }\n\n set(object) {\n // Bail if we don't have localStorage support or it's disabled\n if (!Storage.supported || !this.enabled) {\n return;\n }\n\n // Can only store objectst\n if (!is.object(object)) {\n return;\n }\n\n // Get current storage\n let storage = this.get();\n\n // Default to empty object\n if (is.empty(storage)) {\n storage = {};\n }\n\n // Update the working copy of the values\n extend(storage, object);\n\n // Update storage\n window.localStorage.setItem(this.key, JSON.stringify(storage));\n }\n}\n\nexport default Storage;\n","// ==========================================================================\n// Fetch wrapper\n// Using XHR to avoid issues with older browsers\n// ==========================================================================\n\nexport default function fetch(url, responseType = 'text') {\n return new Promise((resolve, reject) => {\n try {\n const request = new XMLHttpRequest();\n\n // Check for CORS support\n if (!('withCredentials' in request)) {\n return;\n }\n\n request.addEventListener('load', () => {\n if (responseType === 'text') {\n try {\n resolve(JSON.parse(request.responseText));\n } catch (e) {\n resolve(request.responseText);\n }\n } else {\n resolve(request.response);\n }\n });\n\n request.addEventListener('error', () => {\n throw new Error(request.status);\n });\n\n request.open('GET', url, true);\n\n // Set the required response type\n request.responseType = responseType;\n\n request.send();\n } catch (e) {\n reject(e);\n }\n });\n}\n","// ==========================================================================\n// Sprite loader\n// ==========================================================================\n\nimport Storage from '../storage';\nimport fetch from './fetch';\nimport is from './is';\n\n// Load an external SVG sprite\nexport default function loadSprite(url, id) {\n if (!is.string(url)) {\n return;\n }\n\n const prefix = 'cache';\n const hasId = is.string(id);\n let isCached = false;\n\n const exists = () => document.getElementById(id) !== null;\n\n const update = (container, data) => {\n container.innerHTML = data;\n\n // Check again incase of race condition\n if (hasId && exists()) {\n return;\n }\n\n // Inject the SVG to the body\n document.body.insertAdjacentElement('afterbegin', container);\n };\n\n // Only load once if ID set\n if (!hasId || !exists()) {\n const useStorage = Storage.supported;\n\n // Create container\n const container = document.createElement('div');\n container.setAttribute('hidden', '');\n\n if (hasId) {\n container.setAttribute('id', id);\n }\n\n // Check in cache\n if (useStorage) {\n const cached = window.localStorage.getItem(`${prefix}-${id}`);\n isCached = cached !== null;\n\n if (isCached) {\n const data = JSON.parse(cached);\n update(container, data.content);\n }\n }\n\n // Get the sprite\n fetch(url)\n .then(result => {\n if (is.empty(result)) {\n return;\n }\n\n if (useStorage) {\n window.localStorage.setItem(\n `${prefix}-${id}`,\n JSON.stringify({\n content: result,\n }),\n );\n }\n\n update(container, result);\n })\n .catch(() => {});\n }\n}\n","// ==========================================================================\n// Time utils\n// ==========================================================================\n\nimport is from './is';\n\n// Time helpers\nexport const getHours = value => Math.trunc((value / 60 / 60) % 60, 10);\nexport const getMinutes = value => Math.trunc((value / 60) % 60, 10);\nexport const getSeconds = value => Math.trunc(value % 60, 10);\n\n// Format time to UI friendly string\nexport function formatTime(time = 0, displayHours = false, inverted = false) {\n // Bail if the value isn't a number\n if (!is.number(time)) {\n return formatTime(null, displayHours, inverted);\n }\n\n // Format time component to add leading zero\n const format = value => `0${value}`.slice(-2);\n\n // Breakdown to hours, mins, secs\n let hours = getHours(time);\n const mins = getMinutes(time);\n const secs = getSeconds(time);\n\n // Do we need to display hours?\n if (displayHours || hours > 0) {\n hours = `${hours}:`;\n } else {\n hours = '';\n }\n\n // Render\n return `${inverted && time > 0 ? '-' : ''}${hours}${format(mins)}:${format(secs)}`;\n}\n","// ==========================================================================\n// Plyr controls\n// TODO: This needs to be split into smaller files and cleaned up\n// ==========================================================================\n\nimport captions from './captions';\nimport html5 from './html5';\nimport support from './support';\nimport { repaint, transitionEndEvent } from './utils/animation';\nimport { dedupe } from './utils/arrays';\nimport browser from './utils/browser';\nimport {\n createElement,\n emptyElement,\n getAttributesFromSelector,\n getElement,\n getElements,\n hasClass,\n matches,\n removeElement,\n setAttributes,\n setFocus,\n toggleClass,\n toggleHidden,\n} from './utils/elements';\nimport { off, on } from './utils/events';\nimport i18n from './utils/i18n';\nimport is from './utils/is';\nimport loadSprite from './utils/loadSprite';\nimport { extend } from './utils/objects';\nimport { getPercentage, replaceAll, toCamelCase, toTitleCase } from './utils/strings';\nimport { formatTime, getHours } from './utils/time';\n\n// TODO: Don't export a massive object - break down and create class\nconst controls = {\n // Get icon URL\n getIconUrl() {\n const url = new URL(this.config.iconUrl, window.location);\n const cors = url.host !== window.location.host || (browser.isIE && !window.svg4everybody);\n\n return {\n url: this.config.iconUrl,\n cors,\n };\n },\n\n // Find the UI controls\n findElements() {\n try {\n this.elements.controls = getElement.call(this, this.config.selectors.controls.wrapper);\n\n // Buttons\n this.elements.buttons = {\n play: getElements.call(this, this.config.selectors.buttons.play),\n pause: getElement.call(this, this.config.selectors.buttons.pause),\n restart: getElement.call(this, this.config.selectors.buttons.restart),\n rewind: getElement.call(this, this.config.selectors.buttons.rewind),\n fastForward: getElement.call(this, this.config.selectors.buttons.fastForward),\n mute: getElement.call(this, this.config.selectors.buttons.mute),\n pip: getElement.call(this, this.config.selectors.buttons.pip),\n airplay: getElement.call(this, this.config.selectors.buttons.airplay),\n settings: getElement.call(this, this.config.selectors.buttons.settings),\n captions: getElement.call(this, this.config.selectors.buttons.captions),\n fullscreen: getElement.call(this, this.config.selectors.buttons.fullscreen),\n };\n\n // Progress\n this.elements.progress = getElement.call(this, this.config.selectors.progress);\n\n // Inputs\n this.elements.inputs = {\n seek: getElement.call(this, this.config.selectors.inputs.seek),\n volume: getElement.call(this, this.config.selectors.inputs.volume),\n };\n\n // Display\n this.elements.display = {\n buffer: getElement.call(this, this.config.selectors.display.buffer),\n currentTime: getElement.call(this, this.config.selectors.display.currentTime),\n duration: getElement.call(this, this.config.selectors.display.duration),\n };\n\n // Seek tooltip\n if (is.element(this.elements.progress)) {\n this.elements.display.seekTooltip = this.elements.progress.querySelector(\n `.${this.config.classNames.tooltip}`,\n );\n }\n\n return true;\n } catch (error) {\n // Log it\n this.debug.warn('It looks like there is a problem with your custom controls HTML', error);\n\n // Restore native video controls\n this.toggleNativeControls(true);\n\n return false;\n }\n },\n\n // Create icon\n createIcon(type, attributes) {\n const namespace = 'http://www.w3.org/2000/svg';\n const iconUrl = controls.getIconUrl.call(this);\n const iconPath = `${!iconUrl.cors ? iconUrl.url : ''}#${this.config.iconPrefix}`;\n\n // Create \n const icon = document.createElementNS(namespace, 'svg');\n setAttributes(\n icon,\n extend(attributes, {\n role: 'presentation',\n focusable: 'false',\n }),\n );\n\n // Create the to reference sprite\n const use = document.createElementNS(namespace, 'use');\n const path = `${iconPath}-${type}`;\n\n // Set `href` attributes\n // https://github.com/sampotts/plyr/issues/460\n // https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/xlink:href\n if ('href' in use) {\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n }\n\n // Always set the older attribute even though it's \"deprecated\" (it'll be around for ages)\n use.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', path);\n\n // Add to \n icon.appendChild(use);\n\n return icon;\n },\n\n // Create hidden text label\n createLabel(key, attr = {}) {\n const text = i18n.get(key, this.config);\n\n const attributes = Object.assign({}, attr, {\n class: [attr.class, this.config.classNames.hidden].filter(Boolean).join(' '),\n });\n\n return createElement('span', attributes, text);\n },\n\n // Create a badge\n createBadge(text) {\n if (is.empty(text)) {\n return null;\n }\n\n const badge = createElement('span', {\n class: this.config.classNames.menu.value,\n });\n\n badge.appendChild(\n createElement(\n 'span',\n {\n class: this.config.classNames.menu.badge,\n },\n text,\n ),\n );\n\n return badge;\n },\n\n // Create a
to hide the standard controls and UI\n if (this.isVimeo && this.supported.ui) {\n const height = 240;\n const offset = (height - padding) / (height / 50);\n this.media.style.transform = `translateY(-${offset}%)`;\n }\n\n return { padding, ratio };\n}\n\nexport default { setAspectRatio };\n","// ==========================================================================\n// Plyr Event Listeners\n// ==========================================================================\n\nimport controls from './controls';\nimport ui from './ui';\nimport { repaint } from './utils/animation';\nimport browser from './utils/browser';\nimport { getElement, getElements, matches, toggleClass, toggleHidden } from './utils/elements';\nimport { off, on, once, toggleListener, triggerEvent } from './utils/events';\nimport is from './utils/is';\nimport { setAspectRatio } from './utils/style';\n\nclass Listeners {\n constructor(player) {\n this.player = player;\n this.lastKey = null;\n this.focusTimer = null;\n this.lastKeyDown = null;\n\n this.handleKey = this.handleKey.bind(this);\n this.toggleMenu = this.toggleMenu.bind(this);\n this.setTabFocus = this.setTabFocus.bind(this);\n this.firstTouch = this.firstTouch.bind(this);\n }\n\n // Handle key presses\n handleKey(event) {\n const { player } = this;\n const { elements } = player;\n const code = event.keyCode ? event.keyCode : event.which;\n const pressed = event.type === 'keydown';\n const repeat = pressed && code === this.lastKey;\n\n // Bail if a modifier key is set\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {\n return;\n }\n\n // If the event is bubbled from the media element\n // Firefox doesn't get the keycode for whatever reason\n if (!is.number(code)) {\n return;\n }\n\n // Seek by the number keys\n const seekByKey = () => {\n // Divide the max duration into 10th's and times by the number value\n player.currentTime = (player.duration / 10) * (code - 48);\n };\n\n // Handle the key on keydown\n // Reset on keyup\n if (pressed) {\n // Check focused element\n // and if the focused element is not editable (e.g. text input)\n // and any that accept key input http://webaim.org/techniques/keyboard/\n const focused = document.activeElement;\n if (is.element(focused)) {\n const { editable } = player.config.selectors;\n const { seek } = elements.inputs;\n\n if (focused !== seek && matches(focused, editable)) {\n return;\n }\n\n if (event.which === 32 && matches(focused, 'button, [role^=\"menuitem\"]')) {\n return;\n }\n }\n\n // Which keycodes should we prevent default\n const preventDefault = [32, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 56, 57, 67, 70, 73, 75, 76, 77, 79];\n\n // If the code is found prevent default (e.g. prevent scrolling for arrows)\n if (preventDefault.includes(code)) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n switch (code) {\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n // 0-9\n if (!repeat) {\n seekByKey();\n }\n break;\n\n case 32:\n case 75:\n // Space and K key\n if (!repeat) {\n player.togglePlay();\n }\n break;\n\n case 38:\n // Arrow up\n player.increaseVolume(0.1);\n break;\n\n case 40:\n // Arrow down\n player.decreaseVolume(0.1);\n break;\n\n case 77:\n // M key\n if (!repeat) {\n player.muted = !player.muted;\n }\n break;\n\n case 39:\n // Arrow forward\n player.forward();\n break;\n\n case 37:\n // Arrow back\n player.rewind();\n break;\n\n case 70:\n // F key\n player.fullscreen.toggle();\n break;\n\n case 67:\n // C key\n if (!repeat) {\n player.toggleCaptions();\n }\n break;\n\n case 76:\n // L key\n player.loop = !player.loop;\n break;\n\n /* case 73:\n this.setLoop('start');\n break;\n\n case 76:\n this.setLoop();\n break;\n\n case 79:\n this.setLoop('end');\n break; */\n\n default:\n break;\n }\n\n // Escape is handle natively when in full screen\n // So we only need to worry about non native\n if (code === 27 && !player.fullscreen.usingNative && player.fullscreen.active) {\n player.fullscreen.toggle();\n }\n\n // Store last code for next cycle\n this.lastKey = code;\n } else {\n this.lastKey = null;\n }\n }\n\n // Toggle menu\n toggleMenu(event) {\n controls.toggleMenu.call(this.player, event);\n }\n\n // Device is touch enabled\n firstTouch() {\n const { player } = this;\n const { elements } = player;\n\n player.touch = true;\n\n // Add touch class\n toggleClass(elements.container, player.config.classNames.isTouch, true);\n }\n\n setTabFocus(event) {\n const { player } = this;\n const { elements } = player;\n\n clearTimeout(this.focusTimer);\n\n // Ignore any key other than tab\n if (event.type === 'keydown' && event.which !== 9) {\n return;\n }\n\n // Store reference to event timeStamp\n if (event.type === 'keydown') {\n this.lastKeyDown = event.timeStamp;\n }\n\n // Remove current classes\n const removeCurrent = () => {\n const className = player.config.classNames.tabFocus;\n const current = getElements.call(player, `.${className}`);\n toggleClass(current, className, false);\n };\n\n // Determine if a key was pressed to trigger this event\n const wasKeyDown = event.timeStamp - this.lastKeyDown <= 20;\n\n // Ignore focus events if a key was pressed prior\n if (event.type === 'focus' && !wasKeyDown) {\n return;\n }\n\n // Remove all current\n removeCurrent();\n\n // Delay the adding of classname until the focus has changed\n // This event fires before the focusin event\n this.focusTimer = setTimeout(() => {\n const focused = document.activeElement;\n\n // Ignore if current focus element isn't inside the player\n if (!elements.container.contains(focused)) {\n return;\n }\n\n toggleClass(document.activeElement, player.config.classNames.tabFocus, true);\n }, 10);\n }\n\n // Global window & document listeners\n global(toggle = true) {\n const { player } = this;\n\n // Keyboard shortcuts\n if (player.config.keyboard.global) {\n toggleListener.call(player, window, 'keydown keyup', this.handleKey, toggle, false);\n }\n\n // Click anywhere closes menu\n toggleListener.call(player, document.body, 'click', this.toggleMenu, toggle);\n\n // Detect touch by events\n once.call(player, document.body, 'touchstart', this.firstTouch);\n\n // Tab focus detection\n toggleListener.call(player, document.body, 'keydown focus blur', this.setTabFocus, toggle, false, true);\n }\n\n // Container listeners\n container() {\n const { player } = this;\n const { config, elements, timers } = player;\n\n // Keyboard shortcuts\n if (!config.keyboard.global && config.keyboard.focused) {\n on.call(player, elements.container, 'keydown keyup', this.handleKey, false);\n }\n\n // Toggle controls on mouse events and entering fullscreen\n on.call(\n player,\n elements.container,\n 'mousemove mouseleave touchstart touchmove enterfullscreen exitfullscreen',\n event => {\n const { controls } = elements;\n\n // Remove button states for fullscreen\n if (controls && event.type === 'enterfullscreen') {\n controls.pressed = false;\n controls.hover = false;\n }\n\n // Show, then hide after a timeout unless another control event occurs\n const show = ['touchstart', 'touchmove', 'mousemove'].includes(event.type);\n\n let delay = 0;\n\n if (show) {\n ui.toggleControls.call(player, true);\n // Use longer timeout for touch devices\n delay = player.touch ? 3000 : 2000;\n }\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Set new timer to prevent flicker when seeking\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n },\n );\n\n // Force edge to repaint on exit fullscreen\n // TODO: Fix weird bug where Edge doesn't re-draw when exiting fullscreen\n /* if (browser.isEdge) {\n on.call(player, elements.container, 'exitfullscreen', () => {\n setTimeout(() => repaint(elements.container), 100);\n });\n } */\n\n // Set a gutter for Vimeo\n const setGutter = (ratio, padding, toggle) => {\n if (!player.isVimeo) {\n return;\n }\n\n const target = player.elements.wrapper.firstChild;\n const [, height] = ratio.split(':').map(Number);\n const [videoWidth, videoHeight] = player.embed.ratio.split(':').map(Number);\n\n target.style.maxWidth = toggle ? `${(height / videoHeight) * videoWidth}px` : null;\n target.style.margin = toggle ? '0 auto' : null;\n };\n\n // Resize on fullscreen change\n const setPlayerSize = measure => {\n // If we don't need to measure the viewport\n if (!measure) {\n return setAspectRatio.call(player);\n }\n\n const rect = elements.container.getBoundingClientRect();\n const { width, height } = rect;\n\n return setAspectRatio.call(player, `${width}:${height}`);\n };\n\n const resized = () => {\n window.clearTimeout(timers.resized);\n timers.resized = window.setTimeout(setPlayerSize, 50);\n };\n\n on.call(player, elements.container, 'enterfullscreen exitfullscreen', event => {\n const { target, usingNative } = player.fullscreen;\n\n // Ignore for iOS native\n if (!player.isEmbed || target !== elements.container) {\n return;\n }\n\n const isEnter = event.type === 'enterfullscreen';\n\n // Set the player size when entering fullscreen to viewport size\n const { padding, ratio } = setPlayerSize(isEnter);\n\n // Set Vimeo gutter\n setGutter(ratio, padding, isEnter);\n\n // If not using native fullscreen, we need to check for resizes of viewport\n if (!usingNative) {\n if (isEnter) {\n on.call(player, window, 'resize', resized);\n } else {\n off.call(player, window, 'resize', resized);\n }\n }\n });\n }\n\n // Listen for media events\n media() {\n const { player } = this;\n const { elements } = player;\n\n // Time change on media\n on.call(player, player.media, 'timeupdate seeking seeked', event => controls.timeUpdate.call(player, event));\n\n // Display duration\n on.call(player, player.media, 'durationchange loadeddata loadedmetadata', event =>\n controls.durationUpdate.call(player, event),\n );\n\n // Check for audio tracks on load\n // We can't use `loadedmetadata` as it doesn't seem to have audio tracks at that point\n on.call(player, player.media, 'canplay loadeddata', () => {\n toggleHidden(elements.volume, !player.hasAudio);\n toggleHidden(elements.buttons.mute, !player.hasAudio);\n });\n\n // Handle the media finishing\n on.call(player, player.media, 'ended', () => {\n // Show poster on end\n if (player.isHTML5 && player.isVideo && player.config.resetOnEnd) {\n // Restart\n player.restart();\n }\n });\n\n // Check for buffer progress\n on.call(player, player.media, 'progress playing seeking seeked', event =>\n controls.updateProgress.call(player, event),\n );\n\n // Handle volume changes\n on.call(player, player.media, 'volumechange', event => controls.updateVolume.call(player, event));\n\n // Handle play/pause\n on.call(player, player.media, 'playing play pause ended emptied timeupdate', event =>\n ui.checkPlaying.call(player, event),\n );\n\n // Loading state\n on.call(player, player.media, 'waiting canplay seeked playing', event => ui.checkLoading.call(player, event));\n\n // Click video\n if (player.supported.ui && player.config.clickToPlay && !player.isAudio) {\n // Re-fetch the wrapper\n const wrapper = getElement.call(player, `.${player.config.classNames.video}`);\n\n // Bail if there's no wrapper (this should never happen)\n if (!is.element(wrapper)) {\n return;\n }\n\n // On click play, pause or restart\n on.call(player, elements.container, 'click', event => {\n const targets = [elements.container, wrapper];\n\n // Ignore if click if not container or in video wrapper\n if (!targets.includes(event.target) && !wrapper.contains(event.target)) {\n return;\n }\n\n // Touch devices will just show controls (if hidden)\n if (player.touch && player.config.hideControls) {\n return;\n }\n\n if (player.ended) {\n this.proxy(event, player.restart, 'restart');\n this.proxy(event, player.play, 'play');\n } else {\n this.proxy(event, player.togglePlay, 'play');\n }\n });\n }\n\n // Disable right click\n if (player.supported.ui && player.config.disableContextMenu) {\n on.call(\n player,\n elements.wrapper,\n 'contextmenu',\n event => {\n event.preventDefault();\n },\n false,\n );\n }\n\n // Volume change\n on.call(player, player.media, 'volumechange', () => {\n // Save to storage\n player.storage.set({\n volume: player.volume,\n muted: player.muted,\n });\n });\n\n // Speed change\n on.call(player, player.media, 'ratechange', () => {\n // Update UI\n controls.updateSetting.call(player, 'speed');\n\n // Save to storage\n player.storage.set({ speed: player.speed });\n });\n\n // Quality change\n on.call(player, player.media, 'qualitychange', event => {\n // Update UI\n controls.updateSetting.call(player, 'quality', null, event.detail.quality);\n });\n\n // Update download link when ready and if quality changes\n on.call(player, player.media, 'ready qualitychange', () => {\n controls.setDownloadLink.call(player);\n });\n\n // Proxy events to container\n // Bubble up key events for Edge\n const proxyEvents = player.config.events.concat(['keyup', 'keydown']).join(' ');\n\n on.call(player, player.media, proxyEvents, event => {\n let { detail = {} } = event;\n\n // Get error details from media\n if (event.type === 'error') {\n detail = player.media.error;\n }\n\n triggerEvent.call(player, elements.container, event.type, true, detail);\n });\n }\n\n // Run default and custom handlers\n proxy(event, defaultHandler, customHandlerKey) {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n let returned = true;\n\n // Execute custom handler\n if (hasCustomHandler) {\n returned = customHandler.call(player, event);\n }\n\n // Only call default handler if not prevented in custom handler\n if (returned && is.function(defaultHandler)) {\n defaultHandler.call(player, event);\n }\n }\n\n // Trigger custom and default handlers\n bind(element, type, defaultHandler, customHandlerKey, passive = true) {\n const { player } = this;\n const customHandler = player.config.listeners[customHandlerKey];\n const hasCustomHandler = is.function(customHandler);\n\n on.call(\n player,\n element,\n type,\n event => this.proxy(event, defaultHandler, customHandlerKey),\n passive && !hasCustomHandler,\n );\n }\n\n // Listen for control events\n controls() {\n const { player } = this;\n const { elements } = player;\n\n // IE doesn't support input event, so we fallback to change\n const inputEvent = browser.isIE ? 'change' : 'input';\n\n // Play/pause toggle\n if (elements.buttons.play) {\n Array.from(elements.buttons.play).forEach(button => {\n this.bind(button, 'click', player.togglePlay, 'play');\n });\n }\n\n // Pause\n this.bind(elements.buttons.restart, 'click', player.restart, 'restart');\n\n // Rewind\n this.bind(elements.buttons.rewind, 'click', player.rewind, 'rewind');\n\n // Rewind\n this.bind(elements.buttons.fastForward, 'click', player.forward, 'fastForward');\n\n // Mute toggle\n this.bind(\n elements.buttons.mute,\n 'click',\n () => {\n player.muted = !player.muted;\n },\n 'mute',\n );\n\n // Captions toggle\n this.bind(elements.buttons.captions, 'click', () => player.toggleCaptions());\n\n // Download\n this.bind(\n elements.buttons.download,\n 'click',\n () => {\n triggerEvent.call(player, player.media, 'download');\n },\n 'download',\n );\n\n // Fullscreen toggle\n this.bind(\n elements.buttons.fullscreen,\n 'click',\n () => {\n player.fullscreen.toggle();\n },\n 'fullscreen',\n );\n\n // Picture-in-Picture\n this.bind(\n elements.buttons.pip,\n 'click',\n () => {\n player.pip = 'toggle';\n },\n 'pip',\n );\n\n // Airplay\n this.bind(elements.buttons.airplay, 'click', player.airplay, 'airplay');\n\n // Settings menu - click toggle\n this.bind(elements.buttons.settings, 'click', event => {\n // Prevent the document click listener closing the menu\n event.stopPropagation();\n\n controls.toggleMenu.call(player, event);\n });\n\n // Settings menu - keyboard toggle\n // We have to bind to keyup otherwise Firefox triggers a click when a keydown event handler shifts focus\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1220143\n this.bind(\n elements.buttons.settings,\n 'keyup',\n event => {\n const code = event.which;\n\n // We only care about space and return\n if (![13, 32].includes(code)) {\n return;\n }\n\n // Because return triggers a click anyway, all we need to do is set focus\n if (code === 13) {\n controls.focusFirstMenuItem.call(player, null, true);\n return;\n }\n\n // Prevent scroll\n event.preventDefault();\n\n // Prevent playing video (Firefox)\n event.stopPropagation();\n\n // Toggle menu\n controls.toggleMenu.call(player, event);\n },\n null,\n false, // Can't be passive as we're preventing default\n );\n\n // Escape closes menu\n this.bind(elements.settings.menu, 'keydown', event => {\n if (event.which === 27) {\n controls.toggleMenu.call(player, event);\n }\n });\n\n // Set range input alternative \"value\", which matches the tooltip time (#954)\n this.bind(elements.inputs.seek, 'mousedown mousemove', event => {\n const rect = elements.progress.getBoundingClientRect();\n const percent = (100 / rect.width) * (event.pageX - rect.left);\n event.currentTarget.setAttribute('seek-value', percent);\n });\n\n // Pause while seeking\n this.bind(elements.inputs.seek, 'mousedown mouseup keydown keyup touchstart touchend', event => {\n const seek = event.currentTarget;\n const code = event.keyCode ? event.keyCode : event.which;\n const attribute = 'play-on-seeked';\n\n if (is.keyboardEvent(event) && (code !== 39 && code !== 37)) {\n return;\n }\n\n // Record seek time so we can prevent hiding controls for a few seconds after seek\n player.lastSeekTime = Date.now();\n\n // Was playing before?\n const play = seek.hasAttribute(attribute);\n\n // Done seeking\n const done = ['mouseup', 'touchend', 'keyup'].includes(event.type);\n\n // If we're done seeking and it was playing, resume playback\n if (play && done) {\n seek.removeAttribute(attribute);\n player.play();\n } else if (!done && player.playing) {\n seek.setAttribute(attribute, '');\n player.pause();\n }\n });\n\n // Fix range inputs on iOS\n // Super weird iOS bug where after you interact with an ,\n // it takes over further interactions on the page. This is a hack\n if (browser.isIos) {\n const inputs = getElements.call(player, 'input[type=\"range\"]');\n Array.from(inputs).forEach(input => this.bind(input, inputEvent, event => repaint(event.target)));\n }\n\n // Seek\n this.bind(\n elements.inputs.seek,\n inputEvent,\n event => {\n const seek = event.currentTarget;\n\n // If it exists, use seek-value instead of \"value\" for consistency with tooltip time (#954)\n let seekTo = seek.getAttribute('seek-value');\n\n if (is.empty(seekTo)) {\n seekTo = seek.value;\n }\n\n seek.removeAttribute('seek-value');\n\n player.currentTime = (seekTo / seek.max) * player.duration;\n },\n 'seek',\n );\n\n // Seek tooltip\n this.bind(elements.progress, 'mouseenter mouseleave mousemove', event =>\n controls.updateSeekTooltip.call(player, event),\n );\n\n // Preview thumbnails plugin\n // TODO: Really need to work on some sort of plug-in wide event bus or pub-sub for this\n this.bind(elements.progress, 'mousemove touchmove', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startMove(event);\n }\n });\n\n // Hide thumbnail preview - on mouse click, mouse leave, and video play/seek. All four are required, e.g., for buffering\n this.bind(elements.progress, 'mouseleave click', () => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endMove(false, true);\n }\n });\n\n // Show scrubbing preview\n this.bind(elements.progress, 'mousedown touchstart', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.startScrubbing(event);\n }\n });\n\n this.bind(elements.progress, 'mouseup touchend', event => {\n const { previewThumbnails } = player;\n\n if (previewThumbnails && previewThumbnails.loaded) {\n previewThumbnails.endScrubbing(event);\n }\n });\n\n // Polyfill for lower fill in for webkit\n if (browser.isWebkit) {\n Array.from(getElements.call(player, 'input[type=\"range\"]')).forEach(element => {\n this.bind(element, 'input', event => controls.updateRangeFill.call(player, event.target));\n });\n }\n\n // Current time invert\n // Only if one time element is used for both currentTime and duration\n if (player.config.toggleInvert && !is.element(elements.display.duration)) {\n this.bind(elements.display.currentTime, 'click', () => {\n // Do nothing if we're at the start\n if (player.currentTime === 0) {\n return;\n }\n\n player.config.invertTime = !player.config.invertTime;\n\n controls.timeUpdate.call(player);\n });\n }\n\n // Volume\n this.bind(\n elements.inputs.volume,\n inputEvent,\n event => {\n player.volume = event.target.value;\n },\n 'volume',\n );\n\n // Update controls.hover state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mouseenter mouseleave', event => {\n elements.controls.hover = !player.touch && event.type === 'mouseenter';\n });\n\n // Update controls.pressed state (used for ui.toggleControls to avoid hiding when interacting)\n this.bind(elements.controls, 'mousedown mouseup touchstart touchend touchcancel', event => {\n elements.controls.pressed = ['mousedown', 'touchstart'].includes(event.type);\n });\n\n // Show controls when they receive focus (e.g., when using keyboard tab key)\n this.bind(elements.controls, 'focusin', () => {\n const { config, elements, timers } = player;\n\n // Skip transition to prevent focus from scrolling the parent element\n toggleClass(elements.controls, config.classNames.noTransition, true);\n\n // Toggle\n ui.toggleControls.call(player, true);\n\n // Restore transition\n setTimeout(() => {\n toggleClass(elements.controls, config.classNames.noTransition, false);\n }, 0);\n\n // Delay a little more for mouse users\n const delay = this.touch ? 3000 : 4000;\n\n // Clear timer\n clearTimeout(timers.controls);\n\n // Hide again after delay\n timers.controls = setTimeout(() => ui.toggleControls.call(player, false), delay);\n });\n\n // Mouse wheel for volume\n this.bind(\n elements.inputs.volume,\n 'wheel',\n event => {\n // Detect \"natural\" scroll - suppored on OS X Safari only\n // Other browsers on OS X will be inverted until support improves\n const inverted = event.webkitDirectionInvertedFromDevice;\n\n // Get delta from event. Invert if `inverted` is true\n const [x, y] = [event.deltaX, -event.deltaY].map(value => (inverted ? -value : value));\n\n // Using the biggest delta, normalize to 1 or -1 (or 0 if no delta)\n const direction = Math.sign(Math.abs(x) > Math.abs(y) ? x : y);\n\n // Change the volume by 2%\n player.increaseVolume(direction / 50);\n\n // Don't break page scrolling at max and min\n const { volume } = player.media;\n if ((direction === 1 && volume < 1) || (direction === -1 && volume > 0)) {\n event.preventDefault();\n }\n },\n 'volume',\n false,\n );\n }\n}\n\nexport default Listeners;\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.loadjs = factory();\n }\n}(this, function() {\n/**\n * Global dependencies.\n * @global {Object} document - DOM\n */\n\nvar devnull = function() {},\n bundleIdCache = {},\n bundleResultCache = {},\n bundleCallbackQueue = {};\n\n\n/**\n * Subscribe to bundle load event.\n * @param {string[]} bundleIds - Bundle ids\n * @param {Function} callbackFn - The callback function\n */\nfunction subscribe(bundleIds, callbackFn) {\n // listify\n bundleIds = bundleIds.push ? bundleIds : [bundleIds];\n\n var depsNotFound = [],\n i = bundleIds.length,\n numWaiting = i,\n fn,\n bundleId,\n r,\n q;\n\n // define callback function\n fn = function (bundleId, pathsNotFound) {\n if (pathsNotFound.length) depsNotFound.push(bundleId);\n\n numWaiting--;\n if (!numWaiting) callbackFn(depsNotFound);\n };\n\n // register callback\n while (i--) {\n bundleId = bundleIds[i];\n\n // execute callback if in result cache\n r = bundleResultCache[bundleId];\n if (r) {\n fn(bundleId, r);\n continue;\n }\n\n // add to callback queue\n q = bundleCallbackQueue[bundleId] = bundleCallbackQueue[bundleId] || [];\n q.push(fn);\n }\n}\n\n\n/**\n * Publish bundle load event.\n * @param {string} bundleId - Bundle id\n * @param {string[]} pathsNotFound - List of files not found\n */\nfunction publish(bundleId, pathsNotFound) {\n // exit if id isn't defined\n if (!bundleId) return;\n\n var q = bundleCallbackQueue[bundleId];\n\n // cache result\n bundleResultCache[bundleId] = pathsNotFound;\n\n // exit if queue is empty\n if (!q) return;\n\n // empty callback queue\n while (q.length) {\n q[0](bundleId, pathsNotFound);\n q.splice(0, 1);\n }\n}\n\n\n/**\n * Execute callbacks.\n * @param {Object or Function} args - The callback args\n * @param {string[]} depsNotFound - List of dependencies not found\n */\nfunction executeCallbacks(args, depsNotFound) {\n // accept function as argument\n if (args.call) args = {success: args};\n\n // success and error callbacks\n if (depsNotFound.length) (args.error || devnull)(depsNotFound);\n else (args.success || devnull)(args);\n}\n\n\n/**\n * Load individual file.\n * @param {string} path - The file path\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFile(path, callbackFn, args, numTries) {\n var doc = document,\n async = args.async,\n maxTries = (args.numRetries || 0) + 1,\n beforeCallbackFn = args.before || devnull,\n pathStripped = path.replace(/^(css|img)!/, ''),\n isCss,\n e;\n\n numTries = numTries || 0;\n\n if (/(^css!|\\.css$)/.test(path)) {\n isCss = true;\n\n // css\n e = doc.createElement('link');\n e.rel = 'stylesheet';\n e.href = pathStripped; //.replace(/^css!/, ''); // remove \"css!\" prefix\n } else if (/(^img!|\\.(png|gif|jpg|svg)$)/.test(path)) {\n // image\n e = doc.createElement('img');\n e.src = pathStripped; \n } else {\n // javascript\n e = doc.createElement('script');\n e.src = path;\n e.async = async === undefined ? true : async;\n }\n\n e.onload = e.onerror = e.onbeforeload = function (ev) {\n var result = ev.type[0];\n\n // Note: The following code isolates IE using `hideFocus` and treats empty\n // stylesheets as failures to get around lack of onerror support\n if (isCss && 'hideFocus' in e) {\n try {\n if (!e.sheet.cssText.length) result = 'e';\n } catch (x) {\n // sheets objects created from load errors don't allow access to\n // `cssText` (unless error is Code:18 SecurityError)\n if (x.code != 18) result = 'e';\n }\n }\n\n // handle retries in case of load failure\n if (result == 'e') {\n // increment counter\n numTries += 1;\n\n // exit function and try again\n if (numTries < maxTries) {\n return loadFile(path, callbackFn, args, numTries);\n }\n }\n\n // execute callback\n callbackFn(path, result, ev.defaultPrevented);\n };\n\n // add to document (unless callback returns `false`)\n if (beforeCallbackFn(path, e) !== false) doc.head.appendChild(e);\n}\n\n\n/**\n * Load multiple files.\n * @param {string[]} paths - The file paths\n * @param {Function} callbackFn - The callback function\n */\nfunction loadFiles(paths, callbackFn, args) {\n // listify paths\n paths = paths.push ? paths : [paths];\n\n var numWaiting = paths.length,\n x = numWaiting,\n pathsNotFound = [],\n fn,\n i;\n\n // define callback function\n fn = function(path, result, defaultPrevented) {\n // handle error\n if (result == 'e') pathsNotFound.push(path);\n\n // handle beforeload event. If defaultPrevented then that means the load\n // will be blocked (ex. Ghostery/ABP on Safari)\n if (result == 'b') {\n if (defaultPrevented) pathsNotFound.push(path);\n else return;\n }\n\n numWaiting--;\n if (!numWaiting) callbackFn(pathsNotFound);\n };\n\n // load scripts\n for (i=0; i < x; i++) loadFile(paths[i], fn, args);\n}\n\n\n/**\n * Initiate script load and register bundle.\n * @param {(string|string[])} paths - The file paths\n * @param {(string|Function)} [arg1] - The bundleId or success callback\n * @param {Function} [arg2] - The success or error callback\n * @param {Function} [arg3] - The error callback\n */\nfunction loadjs(paths, arg1, arg2) {\n var bundleId,\n args;\n\n // bundleId (if string)\n if (arg1 && arg1.trim) bundleId = arg1;\n\n // args (default is {})\n args = (bundleId ? arg2 : arg1) || {};\n\n // throw error if bundle is already defined\n if (bundleId) {\n if (bundleId in bundleIdCache) {\n throw \"LoadJS\";\n } else {\n bundleIdCache[bundleId] = true;\n }\n }\n\n // load scripts\n loadFiles(paths, function (pathsNotFound) {\n // execute callbacks\n executeCallbacks(args, pathsNotFound);\n\n // publish bundle load event\n publish(bundleId, pathsNotFound);\n }, args);\n}\n\n\n/**\n * Execute callbacks when dependencies have been satisfied.\n * @param {(string|string[])} deps - List of bundle ids\n * @param {Object} args - success/error arguments\n */\nloadjs.ready = function ready(deps, args) {\n // subscribe to bundle load event\n subscribe(deps, function (depsNotFound) {\n // execute callbacks\n executeCallbacks(args, depsNotFound);\n });\n\n return loadjs;\n};\n\n\n/**\n * Manually satisfy bundle dependencies.\n * @param {string} bundleId - The bundle id\n */\nloadjs.done = function done(bundleId) {\n publish(bundleId, []);\n};\n\n\n/**\n * Reset loadjs dependencies statuses\n */\nloadjs.reset = function reset() {\n bundleIdCache = {};\n bundleResultCache = {};\n bundleCallbackQueue = {};\n};\n\n\n/**\n * Determine if bundle has already been defined\n * @param String} bundleId - The bundle id\n */\nloadjs.isDefined = function isDefined(bundleId) {\n return bundleId in bundleIdCache;\n};\n\n\n// export\nreturn loadjs;\n\n}));\n","// ==========================================================================\n// Load an external script\n// ==========================================================================\n\nimport loadjs from 'loadjs';\n\nexport default function loadScript(url) {\n return new Promise((resolve, reject) => {\n loadjs(url, {\n success: resolve,\n error: reject,\n });\n });\n}\n","// ==========================================================================\n// Vimeo plugin\n// ==========================================================================\n\nimport captions from '../captions';\nimport controls from '../controls';\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadScript from '../utils/loadScript';\nimport { extend } from '../utils/objects';\nimport { format, stripHTML } from '../utils/strings';\nimport { setAspectRatio } from '../utils/style';\nimport { buildUrlParams } from '../utils/urls';\n\n// Parse Vimeo ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n if (is.number(Number(url))) {\n return url;\n }\n\n const regex = /^.*(vimeo.com\\/|video\\/)(\\d+).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst vimeo = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set intial ratio\n setAspectRatio.call(this);\n\n // Load the API if not already\n if (!is.object(window.Vimeo)) {\n loadScript(this.config.urls.vimeo.sdk)\n .then(() => {\n vimeo.ready.call(this);\n })\n .catch(error => {\n this.debug.warn('Vimeo API failed to load', error);\n });\n } else {\n vimeo.ready.call(this);\n }\n },\n\n // API Ready\n ready() {\n const player = this;\n const config = player.config.vimeo;\n\n // Get Vimeo params for the iframe\n const params = buildUrlParams(\n extend(\n {},\n {\n loop: player.config.loop.active,\n autoplay: player.autoplay,\n muted: player.muted,\n gesture: 'media',\n playsinline: !this.config.fullscreen.iosNative,\n },\n config,\n ),\n );\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(player.config.attributes.embed.id);\n }\n\n const id = parseId(source);\n\n // Build an iframe\n const iframe = createElement('iframe');\n const src = format(player.config.urls.vimeo.iframe, id, params);\n iframe.setAttribute('src', src);\n iframe.setAttribute('allowfullscreen', '');\n iframe.setAttribute('allowtransparency', '');\n iframe.setAttribute('allow', 'autoplay');\n\n // Get poster, if already set\n const { poster } = player;\n\n // Inject the package\n const wrapper = createElement('div', { poster, class: player.config.classNames.embedContainer });\n wrapper.appendChild(iframe);\n player.media = replaceElement(wrapper, player.media);\n\n // Get poster image\n fetch(format(player.config.urls.vimeo.api, id), 'json').then(response => {\n if (is.empty(response)) {\n return;\n }\n\n // Get the URL for thumbnail\n const url = new URL(response[0].thumbnail_large);\n\n // Get original image\n url.pathname = `${url.pathname.split('_')[0]}.jpg`;\n\n // Set and show poster\n ui.setPoster.call(player, url.href).catch(() => {});\n });\n\n // Setup instance\n // https://github.com/vimeo/player.js\n player.embed = new window.Vimeo.Player(iframe, {\n autopause: player.config.autopause,\n muted: player.muted,\n });\n\n player.media.paused = true;\n player.media.currentTime = 0;\n\n // Disable native text track rendering\n if (player.supported.ui) {\n player.embed.disableTextTrack();\n }\n\n // Create a faux HTML5 API using the Vimeo API\n player.media.play = () => {\n assurePlaybackState.call(player, true);\n return player.embed.play();\n };\n\n player.media.pause = () => {\n assurePlaybackState.call(player, false);\n return player.embed.pause();\n };\n\n player.media.stop = () => {\n player.pause();\n player.currentTime = 0;\n };\n\n // Seeking\n let { currentTime } = player.media;\n Object.defineProperty(player.media, 'currentTime', {\n get() {\n return currentTime;\n },\n set(time) {\n // Vimeo will automatically play on seek if the video hasn't been played before\n\n // Get current paused state and volume etc\n const { embed, media, paused, volume } = player;\n const restorePause = paused && !embed.hasPlayed;\n\n // Set seeking state and trigger event\n media.seeking = true;\n triggerEvent.call(player, media, 'seeking');\n\n // If paused, mute until seek is complete\n Promise.resolve(restorePause && embed.setVolume(0))\n // Seek\n .then(() => embed.setCurrentTime(time))\n // Restore paused\n .then(() => restorePause && embed.pause())\n // Restore volume\n .then(() => restorePause && embed.setVolume(volume))\n .catch(() => {\n // Do nothing\n });\n },\n });\n\n // Playback speed\n let speed = player.config.speed.selected;\n Object.defineProperty(player.media, 'playbackRate', {\n get() {\n return speed;\n },\n set(input) {\n player.embed\n .setPlaybackRate(input)\n .then(() => {\n speed = input;\n triggerEvent.call(player, player.media, 'ratechange');\n })\n .catch(error => {\n // Hide menu item (and menu if empty)\n if (error.name === 'Error') {\n controls.setSpeedMenu.call(player, []);\n }\n });\n },\n });\n\n // Volume\n let { volume } = player.config;\n Object.defineProperty(player.media, 'volume', {\n get() {\n return volume;\n },\n set(input) {\n player.embed.setVolume(input).then(() => {\n volume = input;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Muted\n let { muted } = player.config;\n Object.defineProperty(player.media, 'muted', {\n get() {\n return muted;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : false;\n\n player.embed.setVolume(toggle ? 0 : player.config.volume).then(() => {\n muted = toggle;\n triggerEvent.call(player, player.media, 'volumechange');\n });\n },\n });\n\n // Loop\n let { loop } = player.config;\n Object.defineProperty(player.media, 'loop', {\n get() {\n return loop;\n },\n set(input) {\n const toggle = is.boolean(input) ? input : player.config.loop.active;\n\n player.embed.setLoop(toggle).then(() => {\n loop = toggle;\n });\n },\n });\n\n // Source\n let currentSrc;\n player.embed\n .getVideoUrl()\n .then(value => {\n currentSrc = value;\n controls.setDownloadLink.call(player);\n })\n .catch(error => {\n this.debug.warn(error);\n });\n\n Object.defineProperty(player.media, 'currentSrc', {\n get() {\n return currentSrc;\n },\n });\n\n // Ended\n Object.defineProperty(player.media, 'ended', {\n get() {\n return player.currentTime === player.duration;\n },\n });\n\n // Set aspect ratio based on video size\n Promise.all([player.embed.getVideoWidth(), player.embed.getVideoHeight()]).then(dimensions => {\n const [width, height] = dimensions;\n player.embed.ratio = `${width}:${height}`;\n setAspectRatio.call(this, player.embed.ratio);\n });\n\n // Set autopause\n player.embed.setAutopause(player.config.autopause).then(state => {\n player.config.autopause = state;\n });\n\n // Get title\n player.embed.getVideoTitle().then(title => {\n player.config.title = title;\n ui.setTitle.call(this);\n });\n\n // Get current time\n player.embed.getCurrentTime().then(value => {\n currentTime = value;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n // Get duration\n player.embed.getDuration().then(value => {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n });\n\n // Get captions\n player.embed.getTextTracks().then(tracks => {\n player.media.textTracks = tracks;\n captions.setup.call(player);\n });\n\n player.embed.on('cuechange', ({ cues = [] }) => {\n const strippedCues = cues.map(cue => stripHTML(cue.text));\n captions.updateCues.call(player, strippedCues);\n });\n\n player.embed.on('loaded', () => {\n // Assure state and events are updated on autoplay\n player.embed.getPaused().then(paused => {\n assurePlaybackState.call(player, !paused);\n if (!paused) {\n triggerEvent.call(player, player.media, 'playing');\n }\n });\n\n if (is.element(player.embed.element) && player.supported.ui) {\n const frame = player.embed.element;\n\n // Fix keyboard focus issues\n // https://github.com/sampotts/plyr/issues/317\n frame.setAttribute('tabindex', -1);\n }\n });\n\n player.embed.on('play', () => {\n assurePlaybackState.call(player, true);\n triggerEvent.call(player, player.media, 'playing');\n });\n\n player.embed.on('pause', () => {\n assurePlaybackState.call(player, false);\n });\n\n player.embed.on('timeupdate', data => {\n player.media.seeking = false;\n currentTime = data.seconds;\n triggerEvent.call(player, player.media, 'timeupdate');\n });\n\n player.embed.on('progress', data => {\n player.media.buffered = data.percent;\n triggerEvent.call(player, player.media, 'progress');\n\n // Check all loaded\n if (parseInt(data.percent, 10) === 1) {\n triggerEvent.call(player, player.media, 'canplaythrough');\n }\n\n // Get duration as if we do it before load, it gives an incorrect value\n // https://github.com/sampotts/plyr/issues/891\n player.embed.getDuration().then(value => {\n if (value !== player.media.duration) {\n player.media.duration = value;\n triggerEvent.call(player, player.media, 'durationchange');\n }\n });\n });\n\n player.embed.on('seeked', () => {\n player.media.seeking = false;\n triggerEvent.call(player, player.media, 'seeked');\n });\n\n player.embed.on('ended', () => {\n player.media.paused = true;\n triggerEvent.call(player, player.media, 'ended');\n });\n\n player.embed.on('error', detail => {\n player.media.error = detail;\n triggerEvent.call(player, player.media, 'error');\n });\n\n // Rebuild UI\n setTimeout(() => ui.build.call(player), 0);\n },\n};\n\nexport default vimeo;\n","// ==========================================================================\n// YouTube plugin\n// ==========================================================================\n\nimport ui from '../ui';\nimport { createElement, replaceElement, toggleClass } from '../utils/elements';\nimport { triggerEvent } from '../utils/events';\nimport fetch from '../utils/fetch';\nimport is from '../utils/is';\nimport loadImage from '../utils/loadImage';\nimport loadScript from '../utils/loadScript';\nimport { extend } from '../utils/objects';\nimport { format, generateId } from '../utils/strings';\nimport { setAspectRatio } from '../utils/style';\n\n// Parse YouTube ID from URL\nfunction parseId(url) {\n if (is.empty(url)) {\n return null;\n }\n\n const regex = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|&v=)([^#&?]*).*/;\n return url.match(regex) ? RegExp.$2 : url;\n}\n\n// Set playback state and trigger change (only on actual change)\nfunction assurePlaybackState(play) {\n if (play && !this.embed.hasPlayed) {\n this.embed.hasPlayed = true;\n }\n if (this.media.paused === play) {\n this.media.paused = !play;\n triggerEvent.call(this, this.media, play ? 'play' : 'pause');\n }\n}\n\nconst youtube = {\n setup() {\n // Add embed class for responsive\n toggleClass(this.elements.wrapper, this.config.classNames.embed, true);\n\n // Set aspect ratio\n setAspectRatio.call(this);\n\n // Setup API\n if (is.object(window.YT) && is.function(window.YT.Player)) {\n youtube.ready.call(this);\n } else {\n // Load the API\n loadScript(this.config.urls.youtube.sdk).catch(error => {\n this.debug.warn('YouTube API failed to load', error);\n });\n\n // Setup callback for the API\n // YouTube has it's own system of course...\n window.onYouTubeReadyCallbacks = window.onYouTubeReadyCallbacks || [];\n\n // Add to queue\n window.onYouTubeReadyCallbacks.push(() => {\n youtube.ready.call(this);\n });\n\n // Set callback to process queue\n window.onYouTubeIframeAPIReady = () => {\n window.onYouTubeReadyCallbacks.forEach(callback => {\n callback();\n });\n };\n }\n },\n\n // Get the media title\n getTitle(videoId) {\n // Try via undocumented API method first\n // This method disappears now and then though...\n // https://github.com/sampotts/plyr/issues/709\n if (is.function(this.embed.getVideoData)) {\n const { title } = this.embed.getVideoData();\n\n if (is.empty(title)) {\n this.config.title = title;\n ui.setTitle.call(this);\n return;\n }\n }\n\n // Or via Google API\n const key = this.config.keys.google;\n if (is.string(key) && !is.empty(key)) {\n const url = format(this.config.urls.youtube.api, videoId, key);\n\n fetch(url)\n .then(result => {\n if (is.object(result)) {\n this.config.title = result.items[0].snippet.title;\n ui.setTitle.call(this);\n }\n })\n .catch(() => {});\n }\n },\n\n // API ready\n ready() {\n const player = this;\n\n // Ignore already setup (race condition)\n const currentId = player.media.getAttribute('id');\n if (!is.empty(currentId) && currentId.startsWith('youtube-')) {\n return;\n }\n\n // Get the source URL or ID\n let source = player.media.getAttribute('src');\n\n // Get from
if needed\n if (is.empty(source)) {\n source = player.media.getAttribute(this.config.attributes.embed.id);\n }\n\n // Replace the