{"version":3,"sources":["node_modules/rangetouch/src/js/config.js","node_modules/rangetouch/src/js/utils/css.js","node_modules/rangetouch/src/js/utils/events.js","node_modules/rangetouch/src/js/utils/is.js","node_modules/rangetouch/src/js/utils/numbers.js","node_modules/rangetouch/src/js/rangetouch.js","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":["defaults","addCSS","thumbWidth","watch","matches","element","selector","Array","from","document","querySelectorAll","includes","this","call","trigger","type","event","Event","dispatchEvent","getConstructor","input","constructor","instanceOf","Boolean","isNullOrUndefined","isObject","Object","isNumber","Number","isNaN","isString","String","isBoolean","isFunction","Function","isArray","isNodeList","NodeList","isElement","Element","isEvent","isEmpty","length","keys","is","nullOrUndefined","object","number","string","boolean","function","array","nodeList","empty","getDecimalPlaces","value","match","Math","max","round","step","places","parseFloat","toFixed","RangeTouch","[object Object]","target","options","querySelector","rangeTouch","config","assign","init","enabled","documentElement","targets","filter","MutationObserver","mutations","forEach","mutation","addedNodes","node","observe","body","childList","subtree","map","t","style","userSelect","webKitUserSelect","touchAction","listeners","toggle","method","set","touch","changedTouches","min","getAttribute","delta","percent","clientRect","getBoundingClientRect","width","clientX","left","disabled","preventDefault","get","isWeakMap","WeakMap","isTextNode","Text","isKeyboardEvent","KeyboardEvent","isCue","window","TextTrackCue","VTTCue","isTrack","TextTrack","kind","isPromise","Promise","isUrl","URL","startsWith","concat","hostname","e","is$1","weakMap","textNode","keyboardEvent","cue","track","promise","url","supportsPassiveListeners","supported","defineProperty","addEventListener","removeEventListener","toggleListener","callback","arguments","undefined","passive","capture","events","split","_this","eventListeners","push","on","off","once","onceCallback","args","_len","_key","apply","_this2","triggerEvent","bubbles","detail","CustomEvent","plyr","unbindListeners","item","ready","resolve","_this3","setTimeout","elements","container","then","wrap","wrapper","reverse","index","child","cloneNode","parent","parentNode","sibling","nextSibling","appendChild","insertBefore","setAttributes","attributes","entries","_ref","_ref3","key","_ref4","setAttribute","createElement","text","innerText","insertAfter","insertElement","removeElement","removeChild","emptyElement","childNodes","lastChild","replaceElement","newChild","oldChild","replaceChild","getAttributesFromSelector","sel","existingAttributes","existing","s","trim","className","replace","parts","charAt","class","id","toggleHidden","hidden","hide","removeAttribute","toggleClass","force","classList","contains","hasClass","getElements","getElement","trapFocus","focusable","first","last","keyCode","focused","activeElement","shiftKey","focus","setFocus","tabFocus","preventScroll","classNames","transitionEndEvent","WebkitTransition","MozTransition","OTransition","transition","find","repaint","offsetHeight","browser","isIE","documentMode","isEdge","navigator","userAgent","isWebkit","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","transitions","reducedMotion","matchMedia","html5","getSources","source","getQualityOptions","extend","player","currentTime","_player$media","paused","preload","readyState","src","play","load","quality","cancelRequests","blankVideo","debug","log","dedupe","indexOf","closest","reduce","prev","curr","abs","cloneDeep","JSON","parse","stringify","getDeep","path","obj","sources","shift","_defineProperty","generateId","prefix","floor","random","format","toString","i","getPercentage","current","replaceAll","RegExp","toTitleCase","toUpperCase","substr","toLowerCase","toPascalCase","toCamelCase","slice","stripHTML","fragment","createDocumentFragment","innerHTML","firstChild","getHTML","resources","vimeo","youtube","i18n","seekTime","title","_ref2","Storage","storage","store","localStorage","getItem","json","setItem","removeItem","fetch","responseType","reject","request","XMLHttpRequest","responseText","response","Error","status","open","send","loadSprite","hasId","exists","getElementById","update","data","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","autocomplete","updateRangeFill","setup","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","bind","currentTrack","speed","updateTimeDisplay","updateVolume","setRange","muted","pressed","updateProgress","getElementsByTagName","nodeValue","setProgress","buffered","setProperty","updateSeekTooltip","tooltips","visible","_this4","pageX","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","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","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","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","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","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","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"],"mappings":"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","file":"plyr.min.mjs","sourcesContent":["const defaults = {\n addCSS: true, // Add CSS to the element to improve usability (required here or in your CSS!)\n thumbWidth: 15, // The width of the thumb handle\n watch: true, // Watch for new elements that match a string target\n};\n\nexport default defaults;","// Element matches a 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\nexport default {};\n","// Trigger event\nexport function trigger(element, type) {\n if (!element || !type) {\n return;\n }\n\n // Create and dispatch the event\n const event = new Event(type);\n\n // Dispatch the event\n element.dispatchEvent(event);\n}\n\nexport default {};\n","// ==========================================================================\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);\n\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 isNodeList = input => instanceOf(input, NodeList);\nconst isElement = input => instanceOf(input, Element);\nconst isEvent = input => instanceOf(input, Event);\nconst isEmpty = input =>\n isNullOrUndefined(input) ||\n ((isString(input) || isArray(input) || isNodeList(input)) && !input.length) ||\n (isObject(input) && !Object.keys(input).length);\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 nodeList: isNodeList,\n element: isElement,\n event: isEvent,\n empty: isEmpty,\n};\n","// Get the number of decimal places\nexport function getDecimalPlaces(value) {\n const match = `${value}`.match(/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/);\n\n if (!match) {\n return 0;\n }\n\n return Math.max(\n 0,\n // Number of digits right of decimal point.\n (match[1] ? match[1].length : 0) -\n // Adjust for scientific notation.\n (match[2] ? +match[2] : 0),\n );\n}\n\n// Round to the nearest step\nexport function round(number, step) {\n if (step < 1) {\n const places = getDecimalPlaces(step);\n return parseFloat(number.toFixed(places));\n }\n return Math.round(number / step) * step;\n}\n\nexport default {};\n","// ==========================================================================\n// rangetouch.js v2.0.0\n// Making work on touch devices\n// https://github.com/sampotts/rangetouch\n// License: The MIT License (MIT)\n// ==========================================================================\n\nimport defaults from './config';\nimport { matches } from './utils/css';\nimport { trigger } from './utils/events';\nimport is from './utils/is';\nimport { round } from './utils/numbers';\n\nclass RangeTouch {\n /**\n * Setup a new instance\n * @param {String|Element} target\n * @param {Object} options\n */\n constructor(target, options) {\n if (is.element(target)) {\n // An Element is passed, use it directly\n this.element = target;\n } else if (is.string(target)) {\n // A CSS Selector is passed, fetch it from the DOM\n this.element = document.querySelector(target);\n }\n\n if (!is.element(this.element) || !is.empty(this.element.rangeTouch)) {\n return;\n }\n\n this.config = Object.assign({}, defaults, options);\n\n this.init();\n }\n\n static get enabled() {\n return 'ontouchstart' in document.documentElement;\n }\n\n /**\n * Setup multiple instances\n * @param {String|Element|NodeList|Array} target\n * @param {Object} options\n */\n static setup(target, options = {}) {\n let targets = null;\n\n if (is.empty(target) || is.string(target)) {\n targets = Array.from(document.querySelectorAll(is.string(target) ? target : 'input[type=\"range\"]'));\n } else if (is.element(target)) {\n targets = [target];\n } else if (is.nodeList(target)) {\n targets = Array.from(target);\n } else if (is.array(target)) {\n targets = target.filter(is.element);\n }\n\n if (is.empty(targets)) {\n return null;\n }\n\n const config = Object.assign({}, defaults, options);\n\n if (is.string(target) && config.watch) {\n // Create an observer instance\n const observer = new MutationObserver(mutations => {\n Array.from(mutations).forEach(mutation => {\n Array.from(mutation.addedNodes).forEach(node => {\n if (!is.element(node) || !matches(node, target)) {\n return;\n }\n\n // eslint-disable-next-line no-unused-vars\n const range = new RangeTouch(node, config);\n });\n });\n });\n\n // Pass in the target node, as well as the observer options\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n }\n\n return targets.map(t => new RangeTouch(t, options));\n }\n\n init() {\n // Bail if not a touch enabled device\n if (!RangeTouch.enabled) {\n return;\n }\n\n // Add useful CSS\n if (this.config.addCSS) {\n // TODO: Restore original values on destroy\n this.element.style.userSelect = 'none';\n this.element.style.webKitUserSelect = 'none';\n this.element.style.touchAction = 'manipulation';\n }\n\n this.listeners(true);\n\n this.element.rangeTouch = this;\n }\n\n destroy() {\n // Bail if not a touch enabled device\n if (!RangeTouch.enabled) {\n return;\n }\n\n this.listeners(false);\n\n this.element.rangeTouch = null;\n }\n\n listeners(toggle) {\n const method = toggle ? 'addEventListener' : 'removeEventListener';\n\n // Listen for events\n ['touchstart', 'touchmove', 'touchend'].forEach(type => {\n this.element[method](type, event => this.set(event), false);\n });\n }\n\n /**\n * Get the value based on touch position\n * @param {Event} event\n */\n get(event) {\n if (!RangeTouch.enabled || !is.event(event)) {\n return null;\n }\n\n const input = event.target;\n const touch = event.changedTouches[0];\n const min = parseFloat(input.getAttribute('min')) || 0;\n const max = parseFloat(input.getAttribute('max')) || 100;\n const step = parseFloat(input.getAttribute('step')) || 1;\n const delta = max - min;\n\n // Calculate percentage\n let percent;\n const clientRect = input.getBoundingClientRect();\n const thumbWidth = ((100 / clientRect.width) * (this.config.thumbWidth / 2)) / 100;\n\n // Determine left percentage\n percent = (100 / clientRect.width) * (touch.clientX - clientRect.left);\n\n // Don't allow outside bounds\n if (percent < 0) {\n percent = 0;\n } else if (percent > 100) {\n percent = 100;\n }\n\n // Factor in the thumb offset\n if (percent < 50) {\n percent -= (100 - percent * 2) * thumbWidth;\n } else if (percent > 50) {\n percent += (percent - 50) * 2 * thumbWidth;\n }\n\n // Find the closest step to the mouse position\n return min + round(delta * (percent / 100), step);\n }\n\n /**\n * Update range value based on position\n * @param {Event} event\n */\n set(event) {\n if (!RangeTouch.enabled || !is.event(event) || event.target.disabled) {\n return;\n }\n\n // Prevent text highlight on iOS\n event.preventDefault();\n\n // Set value\n event.target.value = this.get(event);\n\n // Trigger event\n trigger(event.target, event.type === 'touchend' ? 'change' : 'input');\n }\n}\n\nexport default RangeTouch;\n","// ==========================================================================\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 RangeTouch from 'rangetouch';\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