{"version":3,"sources":["webpack:///./node_modules/vue-video-player/dist/vue-video-player.js","webpack:///./node_modules/video.js/dist/video.cjs.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/is-callable/index.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/string.prototype.trim/implementation.js","webpack:///./node_modules/es-abstract/GetIntrinsic.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/string.prototype.trim/polyfill.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/tsml/tsml.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/xhr/index.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/parse-headers/parse-headers.js","webpack:///./node_modules/string.prototype.trim/index.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/object-keys/implementation.js","webpack:///./node_modules/es-abstract/es5.js","webpack:///./node_modules/es-abstract/helpers/assertRecord.js","webpack:///./node_modules/es-abstract/helpers/isNaN.js","webpack:///./node_modules/es-abstract/helpers/isFinite.js","webpack:///./node_modules/es-abstract/helpers/sign.js","webpack:///./node_modules/es-abstract/helpers/mod.js","webpack:///./node_modules/es-to-primitive/es5.js","webpack:///./node_modules/es-to-primitive/helpers/isPrimitive.js","webpack:///./node_modules/string.prototype.trim/shim.js","webpack:///./node_modules/for-each/index.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js"],"names":["e","module","exports","t","i","n","r","l","call","m","c","d","o","Object","defineProperty","configurable","enumerable","get","__esModule","default","prototype","hasOwnProperty","p","s","value","window","videojs","assign","TypeError","arguments","length","writable","a","name","props","start","type","Number","crossOrigin","String","playsinline","Boolean","customEventName","options","required","events","Array","globalOptions","controls","controlBar","remainingTimeDisplay","playToggle","progressControl","fullscreenToggle","volumeMenuButton","inline","vertical","techOrder","plugins","globalEvents","data","player","reseted","mounted","this","initialize","beforeDestroy","dispose","methods","$refs","video","setAttribute","$emit","__ob__","concat","on","currentTime","techName_","pause","$nextTick","watch","deep","handler","sources","indexOf","install","videoPlayer","u","component","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","f","beforeCreate","_injectStyles","esModule","$createElement","_self","_c","staticClass","ref","_e","_interopDefault","ex","match","document","tsml","safeParseTuple","xhr","vtt","version","USER_AGENT","navigator","userAgent","webkitVersionMap","exec","appleWebkitVersion","parseFloat","pop","IS_IPAD","test","IS_IPHONE","IS_IPOD","IS_IOS","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_OLD_ANDROID","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IS_IE8","IE_VERSION","result","IS_SAFARI","IS_ANY_SAFARI","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","BACKGROUND_SIZE_SUPPORTED","createElement","style","browser","freeze","_typeof","Symbol","iterator","obj","constructor","classCallCheck","instance","Constructor","inherits","subClass","superClass","create","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","taggedTemplateLiteralLoose","strings","raw","toString","keys","object","isObject","each","fn","forEach","key","target","_len","_key","apply","source","isPlain","history","LogByTypeFactory","log","level","args","stringify","lvl","levels","lvlRegExp","RegExp","unshift","toUpperCase","push","console","info","map","isArray","JSON","x","join","createLogger$1","logByType","createLogger","subname","all","off","debug","warn","error","DEFAULT","Error","filter","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","computedStyle","el","prop","getComputedStyle","cs","currentStyle","_templateObject","isNonBlankString","str","throwIfWhitespace","isEl","nodeType","isInFrame","createQuerier","method","selector","context","querySelector","ctx","createEl","tagName","undefined","properties","attributes","content","getOwnPropertyNames","propName","val","textContent","attrName","appendContent","text","innerText","prependTo","child","firstChild","insertBefore","appendChild","hasClass","element","classToCheck","classList","contains","className","addClass","classToAdd","trim","removeClass","classToRemove","remove","split","toggleClass","classToToggle","predicate","has","setAttributes","attrValue","removeAttribute","getAttributes","tag","knownBooleans","attrs","attrVal","getAttribute","attribute","blockTextSelection","body","focus","onselectstart","unblockTextSelection","getBoundingClientRect","parentNode","rect","k","height","width","findPosition","box","left","top","docEl","documentElement","clientLeft","scrollLeft","pageXOffset","clientTop","scrollTop","pageYOffset","Math","round","getPointerPosition","event","position","boxW","offsetWidth","boxH","offsetHeight","boxY","boxX","pageY","pageX","changedTouches","y","max","min","isTextNode","emptyEl","removeChild","normalizeContent","createTextNode","node","insertContent","isSingleLeftClick","button","buttons","$","$$","Dom","_guid","newGUID","elData","elIdAttr","Date","getTime","getData","id","hasData","removeData","_cleanUpEvents","elem","handlers","removeEventListener","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","callback","fixEvent","returnTrue","returnFalse","isPropagationStopped","old","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","clientX","doc","clientY","which","charCode","keyCode","_supportsPassive","opts","addEventListener","passiveEvents","guid","hash","handlersCopy","slice","passive","attachEvent","removeType","splice","trigger","elemData","ownerDocument","bubbles","targetData","one","func","Events","_windowLoaded","videojs$2","autoSetup","vids","getElementsByTagName","audios","divs","mediaEls","_i","_i2","_e2","_i3","_e3","mediaEl","autoSetupTimeout","wait","vjs","setTimeout","readyState","createStyleElement","setTextContent","styleSheet","cssText","bind","uid","bound","throttle","last","now","debounce","immediate","timeout","cancel","clearTimeout","debounced","_later","EventTarget","allowedEvents_","ael","dispatchEvent","isEvented","eventBusEl_","every","isValidEventType","validateTarget","nodeName","validateEventType","validateListener","listener","normalizeListenArgs","isTargetingSelf","shift","listen","EventedMixin","_this","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_this2","_normalizeListenArgs2","wrapper","largs","targetOrType","typeOrListener","evented","eventBusKey","StatefulMixin","state","setState","stateUpdates","changes","from","to","stateful","defaultState","handleStateChanged","toTitleCase","string","charAt","mergeOptions","Component","ready","play","player_","options_","id_","name_","el_","children_","childIndex_","childNameIndex_","initChildren","reportTouchActivity","enableTouchActivity","localize","tokens","defaultValue","code","language","languages","primaryCode","primaryLang","localizedString","replace","index","ret","contentEl","contentEl_","children","getChildById","getChild","addChild","componentName","componentClassName","componentClass","ComponentClass","getComponent","childNodes","refNode","childFound","compEl","parentOptions","workingChildren","Tech","some","wchild","isTech","playerOptions","newChild","buildCSSClass","sync","isReady_","readyQueue_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","num","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","parseInt","currentDimension","computedWidthOrHeight","getPropertyValue","rule","currentDimensions","currentWidth","currentHeight","blur","emitTapEvents","touchStart","firstTouch","couldBeTap","touches","xdiff","ydiff","sqrt","noTap","reportUserActivity","report","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","disposeFn","interval","_this3","intervalId","requestAnimationFrame","_this4","supportsRaf_","cancelAnimationFrame","registerComponent","ComponentToRegister","isComp","isPrototypeOf","reason","components_","Player","players","playerNames","pname","getRange","fnName","valueIndex","ranges","rangeIndex","maxIndex","rangeCheck","createTimeRangesObj","end","createTimeRanges","bufferedPercent","buffered","duration","bufferedDuration","FullscreenApi","apiMap","specApi","browserApi","MediaError","message","defaultMessages","status","errorTypes","1","2","3","4","5","errNum","isPromise","then","silencePromise","trackToJson_","track","reduce","acc","cues","cue","startTime","endTime","textTrackConverter","tech","trackEls","trackObjs","trackEl","json","src","textTracks","addedTrack","addRemoteTextTrack","addCue","MODAL_CLASS_NAME","ModalDialog","_Component","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","role","descEl_","description","tabIndex","label","previouslyActiveEl_","handleKeyPress","close","desc","open","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","hadControls_","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","nextSibling","empty","closeButton","content_","activeEl","activeElement","playerEl","handleKeyDown","focusableEls","focusableEls_","focusIndex","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","hasAttribute","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","tracks","list","tracks_","addTrack","removeTrack","rtrack","getTrackById","change","addtrack","removetrack","disableOthers","enabled","AudioTrackList","_TrackList","_prop","changing_","disableOthers$1","selected","VideoTrackList","set","TextTrackList","kind","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","captions","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","parseUrl","url","href","addToBody","host","protocol","div","innerHTML","details","location","getAbsoluteURL","getFileExtension","path","pathParts","toLowerCase","isCrossOrigin","winLoc","urlInfo","Url","parseCues","srcContent","parser","WebVTT","Parser","vttjs","StringDecoder","errors","oncue","onparsingerror","onflush","parse","groupCollapsed","groupEnd","flush","loadTrack","uri","cors","err","response","responseBody","loaded_","tech_","loadHandler","TextTrack","_Track","settings","srclang","mode","default_","tt","activeCues_","activeCues","changed","timeupdateHandler","newMode","ct","active","originalCue","VTTCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADED","HTMLTrackElement","load","LOADING","ERROR","NORMAL","audio","ListClass","TrackClass","capitalName","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","names","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","onDurationChange","manualProgress","trackProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","reset","error_","played","setCurrentTime","trackListChanges","addWebVttScript_","_this5","script","onload","onerror","_this6","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createTrackHelper","createRemoteTextTrack","_this7","manualCleanup","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","setPoster","setPlaysinline","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","withSourceHandlers","_Tech","registerSourceHandler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","originalFn","sourceHandler_","setSource","nativeSourceHandler","disposeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","next","setSourceHelper","middleware","lastRun","mwFactory","mwrest","mw","mws","_mws$i","mwf","mwi","getOrCreateFactory","_src","mediate","arg","callMethod","middlewareValue","middlewareIterator","terminated","executeRight","allowedGetters","seekable","allowedSetters","allowedMediators","MimetypesKind","opus","ogv","mp4","mov","m4v","mkv","mp3","aac","oga","m3u8","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","fixSource","MediaLoader","j","techName","isSupported","loadTech_","ClickableComponent","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","enabled_","handleClick","handleFocus","handleBlur","PosterImage","_ClickableComponent","update","fallbackImg_","poster","setSrc","backgroundImage","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","color","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","modes","trackList","userPref","selectedLanguage","firstDesc","firstCaptions","preferredTrack","clearDisplay","processCues","descriptionsTrack","captionsSubtitlesTrack","updateForTrack","textTrackSettings","overrides","getValues","cueDiv","displayState","textOpacity","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","LoadingSpinner","isAudio","playerType","dir","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","cb","playFocus","CloseButton","PlayToggle","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","seconds","guide","floor","h","gm","gh","isNaN","Infinity","implementation","formatTime","TimeDisplay","throttledUpdateContent","updateContent","plainName","labelText_","updateTextNode_","textNode_","formattedTime_","formatTime_","time","updateFormattedTime_","formattedTime","CurrentTimeDisplay","_TimeDisplay","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","Slider","bar","barName","playerEvent","handleMouseMove","handleMouseUp","progress","getPercent","percentage","toFixed","calculateDistance","stepBack","stepForward","bool","vertical_","LoadProgressBar","partEls_","bufferedEnd","percentify","percent","part","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","right","pullTooltipBy","PlayProgressBar","rafId_","timeTooltip","MouseTimeDisplay","SeekBar","_Slider","setEventHandlers_","updateInterval","update_","getCurrentTime_","videoWasPlaying","newTime","mouseTimeDisplay","handleAction","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","seekBar","seekBarEl","FullscreenToggle","handleFullscreenChange","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeBar","updateLastVolume_","updateARIAAttributes","checkMuted","volume","muted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","VolumePanel","volumeControl","volumePanelState_","sliderActive_","sliderInactive_","muteToggle","Menu","menuButton_","menuButton","focusedChild_","addItem","unpressButton","contentElType","append","stepChild","item","haveTitle","MenuButton","buttonClass","handleSubmenuKeyPress","menu","createMenu","buttonPressed_","items","hideThreshold_","title","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","TrackButton","_MenuButton","updateHandler","MenuItem","selectable","isSelected_","multiSelectable","_selected","TextTrackMenuItem","_MenuItem","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","kinds","shouldBeSelected","OffTextTrackMenuItem","_TextTrackMenuItem","allHidden","TextTrackButton","_TrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","_TextTrackButton","track_","setTrack","findChaptersTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","updateVisibility","updateLabel","labelEl_","rates","playbackRates","currentRate","newRate","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","v","parseOptionValue","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","config","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","initial","accum","selectedIndex","setValues","values","setSelectedOption","localStorage","getItem","setItem","removeItem","ttDisplay","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unobserve","disconnect","resizeObserver","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","cloneNode","dummy","docFrag","createDocumentFragment","Element","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","firstSourceWatch","resetSourceWatch_","innerDescriptor","HTMLMediaElement","getInnerHTMLDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","setupSourceset","resetSourceset_","srcDescriptor","getSrcDescriptor","oldSetAttribute","oldLoad","currentSrc","_templateObject$2","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","hasChildNodes","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","elTracks","techTracks","listeners","currentTarget","removeOldTracks","removeTracks","found","eventName","playerElIngest","movingMediaElementInDOM","clone","techId","playerId","preload","settingsAttrs","attr","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","checkProgress","NaN","endFn","beginFn","webkitPresentationMode","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitExitFullScreen","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","performance","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","noop","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","featuresNativeVideoTracks","featuresNativeAudioTracks","mpegurlRE","mp4RE","patchCanPlayType","unpatchCanPlayType","_templateObject$1","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","substring","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","closest","isPosterFromTech_","queuedCallbacks_","userActive_","tagAttributes","languagesToLower","name$$1","languages_","poster_","controls_","autoplay","scrubbing_","lastPlaybackRate","defaultPlaybackRate","playerOptionsCopy","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleFullscreenChange_","handleStageClick_","breakpoints","responsive","changingSrc_","playWaitingForReady_","playOnLoadstart_","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","fluid_","fluid","aspectRatio","links","linkEl","_dimension","privDimension","updateStyleEl_","parsedVal","ratio","aspectRatio_","idClass","ratioParts","videoWidth","videoHeight","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techOptions","loop","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","techGet_","addTechControlsListeners_","safety","removeTechControlsListeners_","handleTechClick_","handleTechTouchStart_","handleTechTouchMove_","handleTechTouchEnd_","handleTechTap_","techCall_","hasStarted","manualAutoplay_","previouslyMuted","promise","updateSourceCaches_","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","updateCache","techSrc","techGet","request","queued","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userWasActive","set$1","reduceRight","get$1","PromiseClass","Promise","resolve","play_","_this8","isScrubbing","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","isFullscreen_","fsApi","fullscreenchange","documentFullscreenChange","fullscreenElement","enterFullWindow","exitFullWindow","isFullWindow","docOrigOverflow","overflow","fullWindowOnEscKey","selectSource","_this9","techs","_ref","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","finder","_ref2","sourceOrder","b","_this10","filterSource","newsrc","srcobj","middlewareSource","src_","notSupportedMessage","setTech","str1","str2","_this11","sourceTech","currentSources","currentType","techAutoplay","newPoster","usingNativeControls_","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","inactivityTimeout","isAudio_","_ref3","_ref3$track","toJSON","createModal","_this12","modal","updateCurrentBreakpoint_","currentBreakpoint","candidateBreakpoint","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","html5","flash","userLanguage","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createPluginFactory","PluginSubClass","plugin","Function","getEventHash","Plugin","VERSION","isBasic","registerPlugin","basicPluginWrapper","createBasicPlugin","deregisterPlugin","getPlugins","getPluginVersion","BASE_PLUGIN_NAME","usingPlugin","hasPlugin","_inherits","super_","HTMLVideoElement","normalizeId","getPlayer","hooks","hookFunction","PlayerComponent","hooks_","hook","hookOnce","original","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","comp","use","writeable","extend","subClassMethods","addLanguage","_mergeOptions","createTimeRange","setFormatTime","customImplementation","resetFormatTime","dom","win","global","fnToStr","constructorRegex","isES6ClassFn","fnStr","toStr","hasToStringTag","toStringTag","tryFunctionObject","strClass","hasSymbols","origDefineProperty","supportsDescriptors","_","arePropertyDescriptorsSupported","defineProperties","predicates","getOwnPropertySymbols","isArgs","callee","ES","leftWhitespace","rightWhitespace","S","ToString","CheckObjectCoercible","ThrowTypeError","getProto","getPrototypeOf","asyncGenIterator","TypedArray","Uint8Array","INTRINSICS","ArrayBuffer","entries","asyncIterator","Atomics","DataView","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","eval","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","isFinite","Map","valueOf","reject","Proxy","RangeError","Reflect","Set","SharedArrayBuffer","SyntaxError","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakSet","allowMissing","doccy","minDoc","topLevel","clean","sa","reviver","isFunction","parseHeaders","xtend","initParams","params","createXHR","_createXHR","called","getBody","responseText","responseType","responseXML","firefoxBugTakenEffect","getXml","isJson","errorFunc","evt","timeoutTimer","statusCode","failureResponse","loadFunc","aborted","useXDR","headers","rawRequest","getAllResponseHeaders","XDomainRequest","XMLHttpRequest","onreadystatechange","onprogress","onabort","ontimeout","username","password","withCredentials","abort","setRequestHeader","isEmpty","beforeSend","send","array","forEachArray","alert","confirm","prompt","row","define","getPolyfill","shim","boundTrim","ERROR_MESSAGE","that","binder","boundLength","boundArgs","Empty","origKeys","keysShim","originalKeys","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","isArguments","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","GetIntrinsic","$Object","$TypeError","$String","assertRecord","$isNaN","$isFinite","mod","IsCallable","toPrimitive","ES5","ToPrimitive","ToBoolean","ToNumber","ToInteger","number","abs","ToInt32","ToUint32","ToUint16","posInt","ToObject","optMessage","SameValue","Type","IsPropertyDescriptor","Desc","allowed","isData","IsAccessor","IsAccessorDescriptor","IsDataDescriptor","IsGenericDescriptor","FromPropertyDescriptor","ToPropertyDescriptor","Obj","getter","setter","$SyntaxError","recordType","argumentName","modulo","remain","isPrimitive","isCallable","ES5internalSlots","O","actualHint","input","polyfill","receiver","len","forEachString","forEachObject","thisArg","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","restore","_objCreate","F","ParsingError","errorData","parseTimeStamp","computeSeconds","Settings","parseOptions","keyValueDelim","groupDelim","groups","kv","parseCue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","skipWhitespace","substr","region","alt","vals","vals0","integer","line","lineAlign","snapToLines","size","align","middle","positionAlign","consumeCueSettings","BadSignature","dflt","defaultKey","ESCAPE","TAG_NAME","ruby","rt","lang","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","unescape1","unescape","shouldAdd","current","localName","annotation","rootDiv","tagStack","createProcessingInstruction","strongRTLRanges","isStrongRTLChar","currentRange","StyleBox","CueStyleBox","styleOptions","isIE8","styles","display","writingMode","unicodeBidi","applyStyles","textAlign","font","whiteSpace","direction","nodeStack","pushNodes","nextTextNode","charCodeAt","determineBidi","stylesunicodeBidi","textPos","formatStyle","move","BoxPosition","lh","offsetTop","rects","getClientRects","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","boxPosition","linePos","textTrackList","mediaElement","count","computeLinePos","axis","step","maxPosition","initialAxis","ceil","reverse","calculatedPercentage","bestPosition","specifiedPosition","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","findBestPosition","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","container","reference","getSimpleBoxPosition","decode","convertCueToDOMTree","cuetext","overlay","paddedOverlay","margin","hasBeenReset","shouldCompute","decoder","buffer","TextDecoder","reportOrThrowError","collectNextLine","pos","parseHeader","ontimestampmap","parseTimestampMap","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseRegion","stream","alreadyCollectedLine","hasSubstring","autoKeyword","directionSetting","alignSetting","findAlignSetting","cobj","baseObj","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","findDirectionSetting","getCueAsHTML","scrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","findScrollSetting"],"mappings":"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","file":"5.d6be46c5950caeb7047f.js","sourcesContent":["!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"video.js\")):\"function\"==typeof define&&define.amd?define([\"videojs\"],t):\"object\"==typeof exports?exports.VueVideoPlayer=t(require(\"video.js\")):e.VueVideoPlayer=t(e.videojs)}(this,function(e){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),s=window.videojs||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),i=1;i\n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar window = _interopDefault(require('global/window'));\nvar document = _interopDefault(require('global/document'));\nvar tsml = _interopDefault(require('tsml'));\nvar safeParseTuple = _interopDefault(require('safe-json-parse/tuple'));\nvar xhr = _interopDefault(require('xhr'));\nvar vtt = _interopDefault(require('videojs-vtt.js'));\n\nvar version = \"6.13.0\";\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window.navigator && window.navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nvar IS_IPAD = /iPad/i.test(USER_AGENT);\n\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n return null;\n}();\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\nvar ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n return null;\n}();\n\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nvar IS_OLD_ANDROID = IS_ANDROID && /webkit/i.test(USER_AGENT) && ANDROID_VERSION < 2.3;\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\nvar IS_EDGE = /Edge/i.test(USER_AGENT);\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n return null;\n}();\nvar IS_IE8 = /MSIE\\s8\\.0/.test(USER_AGENT);\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar TOUCH_ENABLED = isReal() && ('ontouchstart' in window || window.navigator.maxTouchPoints || window.DocumentTouch && window.document instanceof window.DocumentTouch);\n\nvar BACKGROUND_SIZE_SUPPORTED = isReal() && 'backgroundSize' in window.document.createElement('video').style;\n\nvar browser = (Object.freeze || Object)({\n\tIS_IPAD: IS_IPAD,\n\tIS_IPHONE: IS_IPHONE,\n\tIS_IPOD: IS_IPOD,\n\tIS_IOS: IS_IOS,\n\tIOS_VERSION: IOS_VERSION,\n\tIS_ANDROID: IS_ANDROID,\n\tANDROID_VERSION: ANDROID_VERSION,\n\tIS_OLD_ANDROID: IS_OLD_ANDROID,\n\tIS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n\tIS_FIREFOX: IS_FIREFOX,\n\tIS_EDGE: IS_EDGE,\n\tIS_CHROME: IS_CHROME,\n\tCHROME_VERSION: CHROME_VERSION,\n\tIS_IE8: IS_IE8,\n\tIE_VERSION: IE_VERSION,\n\tIS_SAFARI: IS_SAFARI,\n\tIS_ANY_SAFARI: IS_ANY_SAFARI,\n\tTOUCH_ENABLED: TOUCH_ENABLED,\n\tBACKGROUND_SIZE_SUPPORTED: BACKGROUND_SIZE_SUPPORTED\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar taggedTemplateLiteralLoose = function (strings, raw) {\n strings.raw = raw;\n return strings;\n};\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\nfunction reduce(object, fn) {\n var initial = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\nfunction assign(target) {\n for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return Object.assign.apply(Object, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n\n return target;\n}\n\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nfunction isObject(value) {\n return !!value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object';\n}\n\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n// This is the private tracking variable for the logging history.\nvar history = [];\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args, stringify) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp('^(' + lvl + ')$');\n\n if (type !== 'log') {\n\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n }\n\n // Add console prefix after adding to history.\n args.unshift(name + ':');\n\n // Add a clone of the args at this point to history.\n if (history) {\n history.push([].concat(args));\n }\n\n // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n if (!window.console) {\n return;\n }\n\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n var fn = window.console[type];\n\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window.console.info || window.console.log;\n }\n\n // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n\n // IEs previous to 11 log objects uselessly as \"[object Object]\"; so, JSONify\n // objects and arrays for those less-capable browsers.\n if (stringify) {\n args = args.map(function (a) {\n if (isObject(a) || Array.isArray(a)) {\n try {\n return JSON.stringify(a);\n } catch (x) {\n return String(a);\n }\n }\n\n // Cast to string before joining, so we get null and undefined explicitly\n // included in output (as we would in a modern console).\n return String(a);\n }).join(' ');\n }\n\n // Old IE versions do not allow .apply() for console methods (they are\n // reported as objects rather than functions).\n if (!fn.apply) {\n fn(args);\n } else {\n fn[Array.isArray(args) ? 'apply' : 'call'](window.console, args);\n }\n };\n};\n\nfunction createLogger$1(name) {\n // This is the private tracking variable for logging level.\n var level = 'info';\n\n // the curried logByType bound to the specific log and history\n var logByType = void 0;\n\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * Mixed[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n var log = function log() {\n var stringify = log.stringify || IE_VERSION && IE_VERSION < 11;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args, stringify);\n };\n\n // This is the logByType helper that the logging methods below use\n logByType = LogByTypeFactory(name, log);\n\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} name\n * The name to add call the new logger\n * @return {Object}\n */\n log.createLogger = function (subname) {\n return createLogger$1(name + ': ' + subname);\n };\n\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {string} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n log.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error('\"' + lvl + '\" in not a valid log level');\n }\n level = lvl;\n }\n return level;\n };\n\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n log.history = function () {\n return history ? [].concat(history) : [];\n };\n\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n log.history.filter = function (fname) {\n return (history || []).filter(function (historyItem) {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp('.*' + fname + '.*').test(historyItem[0]);\n });\n };\n\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n log.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n };\n\n /**\n * Disable history tracking if it is currently enabled.\n */\n log.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n\n /**\n * Enable history tracking if it is currently disabled.\n */\n log.history.enable = function () {\n if (history === null) {\n history = [];\n }\n };\n\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n log.error = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n log.warn = function () {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\n\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n log.debug = function () {\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log = createLogger$1('VIDEOJS');\nvar createLogger = log.createLogger;\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle with an IE8 fallback.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a null-check to\n * make sure that the player doesn't break in these cases.\n *\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n *\n * @static\n * @const\n */\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window.getComputedStyle === 'function') {\n var cs = window.getComputedStyle(el);\n\n return cs ? cs[prop] : '';\n }\n\n return el.currentStyle[prop] || '';\n}\n\nvar _templateObject = taggedTemplateLiteralLoose(['Setting attributes in the second argument of createEl()\\n has been deprecated. Use the third argument instead.\\n createEl(type, properties, attributes). Attempting to set ', ' to ', '.'], ['Setting attributes in the second argument of createEl()\\n has been deprecated. Use the third argument instead.\\n createEl(type, properties, attributes). Attempting to set ', ' to ', '.']);\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * - True if the string is non-blank\n * - False otherwise\n *\n */\nfunction isNonBlankString(str) {\n return typeof str === 'string' && /\\S/.test(str);\n}\n\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n *\n */\nfunction throwIfWhitespace(str) {\n if (/\\s/.test(str)) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n\n/**\n * Whether the current DOM interface appears to be real.\n *\n * @return {Boolean}\n */\nfunction isReal() {\n return (\n\n // Both document and window will never be undefined thanks to `global`.\n document === window.document &&\n\n // In IE < 9, DOM methods return \"object\" as their type, so all we can\n // confidently check is that it exists.\n typeof document.createElement !== 'undefined'\n );\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The thing to check\n *\n * @return {boolean}\n * - True if it is a DOM element\n * - False otherwise\n */\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n *\n */\nfunction isInFrame() {\n\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window.parent !== window.self;\n } catch (x) {\n return true;\n }\n}\n\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document[method](null);\n }\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document;\n\n return ctx[method] && ctx[method](selector);\n };\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {String|Element|TextNode|Array|Function} [content]\n * Contents for the element (see: {@link dom:normalizeContent})\n *\n * @return {Element}\n * The element that was created.\n */\nfunction createEl() {\n var tagName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'div';\n var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = arguments[3];\n\n var el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log.warn(tsml(_templateObject, propName, val));\n el.setAttribute(propName, val);\n\n // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * - True if the element had the class\n * - False otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n return classRegExp(classToCheck).test(element.className);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The dom element with the added class name.\n */\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd);\n\n // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The dom element with class name removed.\n */\nfunction removeClass(element, classToRemove) {\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n\n/**\n * The callback definition for toggleElClass.\n *\n * @callback Dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * - If true the `classToToggle` will get added to `element`.\n * - If false the `classToToggle` will get removed from `element`.\n * - If undefined this callback will be ignored\n */\n\n/**\n * Adds or removes a CSS class name on an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled\n *\n * @param {boolean|PredicateCallback} [predicate]\n * See the return value for {@link Dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\nfunction toggleClass(element, classToToggle, predicate) {\n\n // This CANNOT use `classList` internally because IE does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n }\n\n // If the necessary class operation matches the current state of the\n // element, no action is required.\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element.\n */\nfunction getAttributes(tag) {\n var obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Get the value of an element's attribute\n *\n * @param {Element} el\n * A DOM element\n *\n * @param {string} attribute\n * Attribute to get the value of\n *\n * @return {string}\n * value of the attribute\n */\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n\n/**\n * Set the value of an element's attribute\n *\n * @param {Element} el\n * A DOM element\n *\n * @param {string} attribute\n * Attribute to set\n *\n * @param {string} value\n * Value to set the attribute to\n */\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n\n/**\n * Remove an element's attribute\n *\n * @param {Element} el\n * A DOM element\n *\n * @param {string} attribute\n * Attribute to remove\n */\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n */\nfunction blockTextSelection() {\n document.body.focus();\n document.onselectstart = function () {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n */\nfunction unblockTextSelection() {\n document.onselectstart = function () {\n return true;\n };\n}\n\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain\n */\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n\n/**\n * The postion of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left\n *\n * @property {number} top\n * Pixels on top\n */\n\n/**\n * Offset Left.\n * getBoundingClientRect technique from\n * John Resig\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\nfunction findPosition(el) {\n var box = void 0;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var docEl = document.documentElement;\n var body = document.body;\n\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var scrollLeft = window.pageXOffset || body.scrollLeft;\n var left = box.left + scrollLeft - clientLeft;\n\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var scrollTop = window.pageYOffset || body.scrollTop;\n var top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * x and y coordinates for a dom element or mouse pointer\n *\n * @typedef {Object} Dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on\n *\n * @param {EventTarget~Event} event\n * Event object\n *\n * @return {Dom~Coordinates}\n * A Coordinates object corresponding to the mouse position.\n *\n */\nfunction getPointerPosition(el, event) {\n var position = {};\n var box = findPosition(el);\n var boxW = el.offsetWidth;\n var boxH = el.offsetHeight;\n\n var boxY = box.top;\n var boxX = box.left;\n var pageY = event.pageY;\n var pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * - True if it is a text node\n * - False otherwise\n */\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n return el;\n}\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but protects\n * from falling into the trap of simply writing to `innerHTML`, which is\n * an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {String|Element|TextNode|Array|Function} content\n * - String: Normalized into a text node.\n * - Element/TextNode: Passed through.\n * - Array: A one-dimensional array of strings, elements, nodes, or functions\n * (which return single strings, elements, or nodes).\n * - Function: If the sole argument, is expected to produce a string, element,\n * node, or array as defined above.\n *\n * @return {Array}\n * All of the content that was passed in normalized.\n */\nfunction normalizeContent(content) {\n\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n }\n\n // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n *\n * @param {String|Element|TextNode|Array|Function} content\n * See the `content` argument of {@link dom:normalizeContent}\n *\n * @return {Element}\n * The element with appended normalized content.\n */\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {String|Element|TextNode|Array|Function} content\n * See the `content` argument of {@link dom:normalizeContent}\n *\n * @return {Element}\n * The element with inserted normalized content.\n *\n */\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n\n/**\n * Check if event was a single left click\n *\n * @param {EventTarget~Event} event\n * Event object\n *\n * @return {boolean}\n * - True if a left click\n * - False if not a left click\n */\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n\n return true;\n }\n\n if (IE_VERSION === 9) {\n // Ignore IE9\n\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n\n return false;\n }\n\n return true;\n}\n\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\nvar $ = createQuerier('querySelector');\n\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none were found.\n *\n */\nvar $$ = createQuerier('querySelectorAll');\n\n\n\nvar Dom = (Object.freeze || Object)({\n\tisReal: isReal,\n\tisEl: isEl,\n\tisInFrame: isInFrame,\n\tcreateEl: createEl,\n\ttextContent: textContent,\n\tprependTo: prependTo,\n\thasClass: hasClass,\n\taddClass: addClass,\n\tremoveClass: removeClass,\n\ttoggleClass: toggleClass,\n\tsetAttributes: setAttributes,\n\tgetAttributes: getAttributes,\n\tgetAttribute: getAttribute,\n\tsetAttribute: setAttribute,\n\tremoveAttribute: removeAttribute,\n\tblockTextSelection: blockTextSelection,\n\tunblockTextSelection: unblockTextSelection,\n\tgetBoundingClientRect: getBoundingClientRect,\n\tfindPosition: findPosition,\n\tgetPointerPosition: getPointerPosition,\n\tisTextNode: isTextNode,\n\temptyEl: emptyEl,\n\tnormalizeContent: normalizeContent,\n\tappendContent: appendContent,\n\tinsertContent: insertContent,\n\tisSingleLeftClick: isSingleLeftClick,\n\t$: $,\n\t$$: $$\n});\n\n/**\n * @file guid.js\n * @module guid\n */\n\n/**\n * Unique ID for an element or function\n * @type {Number}\n */\nvar _guid = 1;\n\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nvar elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nvar elIdAttr = 'vdata' + new Date().getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el\n * Element to store data for.\n *\n * @return {Object}\n * The cache object for that el that was passed in.\n */\nfunction getData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el\n * Check if this element has cached data.\n *\n * @return {boolean}\n * - True if the DOM element has cached data.\n * - False otherwise.\n */\nfunction hasData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el\n * Remove cached data for this element.\n */\nfunction removeData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch (e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @module events\n */\n\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\nfunction _cleanUpEvents(elem, type) {\n var data = getData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n removeData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\nfunction fixEvent(event) {\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button !== null && event.button !== undefined) {\n\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Whether passive event listeners are supported\n */\nvar _supportsPassive = false;\n\n(function () {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n\n window.addEventListener('test', null, opts);\n window.removeEventListener('test', null, opts);\n } catch (e) {\n // disregard\n }\n})();\n\n/**\n * Touch events Chrome expects to be passive\n */\nvar passiveEvents = ['touchstart', 'touchmove'];\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n var data = getData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (_supportsPassive && passiveEvents.indexOf(type) > -1) {\n options = { passive: true };\n }\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!hasData(elem)) {\n return;\n }\n\n var data = getData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n _cleanUpEvents(el, t);\n };\n\n // Are we removing all bound events?\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) {\n return;\n }\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(elem, type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * - Returns the opposite of `defaultPrevented` if default was prevented\n * - Otherwise returns undefined\n */\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = hasData(elem) ? getData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type: event, target: elem };\n } else if (!event.target) {\n event.target = elem;\n }\n\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = getData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event Listener function\n */\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n\nvar Events = (Object.freeze || Object)({\n\tfixEvent: fixEvent,\n\ton: on,\n\toff: off,\n\ttrigger: trigger,\n\tone: one\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs$2 = void 0;\n\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\nvar autoSetup = function autoSetup() {\n\n // Protect against breakage in non-browser environments and check global autoSetup option.\n if (!isReal() || videojs$2.options.autoSetup === false) {\n return;\n }\n\n // One day, when we stop supporting IE8, go back to this, but in the meantime...*hack hack hack*\n // var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n // var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n // var mediaEls = vids.concat(audios);\n\n // Because IE8 doesn't support calling slice on a node list, we need to loop\n // through each list of elements to build up a new, combined list of elements.\n var vids = document.getElementsByTagName('video');\n var audios = document.getElementsByTagName('audio');\n var divs = document.getElementsByTagName('video-js');\n var mediaEls = [];\n\n if (vids && vids.length > 0) {\n for (var i = 0, e = vids.length; i < e; i++) {\n mediaEls.push(vids[i]);\n }\n }\n\n if (audios && audios.length > 0) {\n for (var _i = 0, _e = audios.length; _i < _e; _i++) {\n mediaEls.push(audios[_i]);\n }\n }\n\n if (divs && divs.length > 0) {\n for (var _i2 = 0, _e2 = divs.length; _i2 < _e2; _i2++) {\n mediaEls.push(divs[_i2]);\n }\n }\n\n // Check if any media elements exist\n if (mediaEls && mediaEls.length > 0) {\n\n for (var _i3 = 0, _e3 = mediaEls.length; _i3 < _e3; _i3++) {\n var mediaEl = mediaEls[_i3];\n\n // Check if element exists, has getAttribute func.\n // IE seems to consider typeof el.getAttribute == 'object' instead of\n // 'function' like expected, at least when loading the player immediately.\n if (mediaEl && mediaEl.getAttribute) {\n\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup');\n\n // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n if (options !== null) {\n // Create new video.js instance.\n videojs$2(mediaEl);\n }\n }\n\n // If getAttribute isn't defined, we need to wait for the DOM.\n } else {\n autoSetupTimeout(1);\n break;\n }\n }\n\n // No videos were found, so keep looping unless page is finished loading.\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\nfunction autoSetupTimeout(wait, vjs) {\n if (vjs) {\n videojs$2 = vjs;\n }\n\n window.setTimeout(autoSetup, wait);\n}\n\nif (isReal() && document.readyState === 'complete') {\n _windowLoaded = true;\n} else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * @listens load\n */\n one(window, 'load', function () {\n _windowLoaded = true;\n });\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\nvar createStyleElement = function createStyleElement(className) {\n var style = document.createElement('style');\n\n style.className = className;\n\n return style;\n};\n\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file fn.js\n * @module fn\n */\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events.\n *\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n // Create the new function that changes the context\n var bound = function bound() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n\n return bound;\n};\n\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {Number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\nvar throttle = function throttle(fn, wait) {\n var last = Date.now();\n\n var throttled = function throttled() {\n var now = Date.now();\n\n if (now - last >= wait) {\n fn.apply(undefined, arguments);\n last = now;\n }\n };\n\n return throttled;\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\nvar debounce = function debounce(func, wait, immediate) {\n var context = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : window;\n\n var timeout = void 0;\n\n var cancel = function cancel() {\n context.clearTimeout(timeout);\n timeout = null;\n };\n\n /* eslint-disable consistent-this */\n var debounced = function debounced() {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n\n debounced.cancel = cancel;\n\n return debounced;\n};\n\n/**\n * @file src/js/event-target.js\n */\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\nvar EventTarget = function EventTarget() {};\n\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\nEventTarget.prototype.allowedEvents_ = {};\n\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\nEventTarget.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n on(this, type, fn);\n this.addEventListener = ael;\n};\n\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\nEventTarget.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\nEventTarget.prototype.one = function (type, fn) {\n // Remove the addEventListener alialing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\nEventTarget.prototype.trigger = function (event) {\n var type = event.type || event;\n\n if (typeof event === 'string') {\n event = { type: type };\n }\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\nvar isValidEventType = function isValidEventType(type) {\n return (\n // The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n */\nvar validateTarget = function validateTarget(target) {\n if (!target.nodeName && !isEvented(target)) {\n throw new Error('Invalid target; must be a DOM node or evented object.');\n }\n};\n\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n */\nvar validateEventType = function validateEventType(type) {\n if (!isValidEventType(type)) {\n throw new Error('Invalid event type; must be a non-empty string or array.');\n }\n};\n\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n */\nvar validateListener = function validateListener(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Invalid listener; must be a function.');\n }\n};\n\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\nvar normalizeListenArgs = function normalizeListenArgs(self, args) {\n\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target = void 0;\n var type = void 0;\n var listener = void 0;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_;\n\n // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target);\n validateEventType(type);\n validateListener(listener);\n\n listener = bind(self, listener);\n\n return { isTargetingSelf: isTargetingSelf, target: target, type: type, listener: listener };\n};\n\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n\n/**\n * Contains methods that provide event capabilites to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\nvar EventedMixin = {\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on$$1() {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener);\n\n // If this object is listening to another evented object.\n if (!isTargetingSelf) {\n\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n };\n\n // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n removeListenerOnDispose.guid = listener.guid;\n\n // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n };\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n removeRemoverOnTargetDispose.guid = listener.guid;\n\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one$$1() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener;\n\n // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener);\n\n // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n for (var _len3 = arguments.length, largs = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n _this2.off(target, type, wrapper);\n listener.apply(null, largs);\n };\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$$1(targetOrType, typeOrListener, listener) {\n\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener);\n\n // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener;\n\n // Fail fast and in a meaningful way!\n validateTarget(target);\n validateEventType(type);\n validateListener(listener);\n\n // Ensure there's at least a guid, even if the function hasn't been used\n listener = bind(this, listener);\n\n // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @returns {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$$1(event, hash) {\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {String} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\nfunction evented(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var eventBusKey = options.eventBusKey;\n\n // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error('The eventBusKey \"' + eventBusKey + '\" does not refer to an element.');\n }\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', { className: 'vjs-event-bus' });\n }\n\n assign(target, EventedMixin);\n\n // When any evented object is disposed, it removes all its listeners.\n target.on('dispose', function () {\n target.off();\n window.setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\nvar StatefulMixin = {\n\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @returns {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes = void 0;\n\n each(stateUpdates, function (value, key) {\n\n // Record the change if the value is different from what's in the\n // current state.\n if (_this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: _this.state[key],\n to: value\n };\n }\n\n _this.state[key] = value;\n });\n\n // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n if (changes && isEvented(this)) {\n\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes: changes,\n type: 'statechanged'\n });\n }\n\n return changes;\n }\n};\n\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @returns {Object}\n * Returns the `target`.\n */\nfunction stateful(target, defaultState) {\n assign(target, StatefulMixin);\n\n // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n target.state = assign({}, target.state, defaultState);\n\n // Auto-bind the `handleStateChanged` method of the target object if it exists.\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n\n return target;\n}\n\n/**\n * @file to-title-case.js\n * @module to-title-case\n */\n\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\nfunction toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\nfunction titleCaseEquals(str1, str2) {\n return toTitleCase(str1) === toTitleCase(str2);\n}\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Deep-merge one or more options objects, recursively merging **only** plain\n * object properties.\n *\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @returns {Object}\n * A new object that is the merged result of all sources.\n */\nfunction mergeOptions() {\n var result = {};\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions(result[key], value);\n });\n });\n\n return result;\n}\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component = function () {\n\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to intialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n classCallCheck(this, Component);\n\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || options.el && options.el.id;\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n\n this.id_ = id + '_component_' + newGUID();\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n // if evented is anything except false, we want to mixin in evented\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, { eventBusKey: this.el_ ? 'el_' : null });\n }\n stateful(this, this.constructor.defaultState);\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n */\n\n\n Component.prototype.dispose = function dispose() {\n\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the close event does not\n * bubble up\n */\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n removeData(this.el_);\n this.el_ = null;\n }\n\n // remove reference to the player after disposing of the element\n this.player_ = null;\n };\n\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n\n\n Component.prototype.player = function player() {\n return this.player_;\n };\n\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n *\n * @deprecated since version 5\n */\n\n\n Component.prototype.options = function options(obj) {\n log.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n };\n\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n\n\n Component.prototype.el = function el() {\n return this.el_;\n };\n\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n\n\n Component.prototype.createEl = function createEl$$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n };\n\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n\n\n Component.prototype.localize = function localize(string, tokens) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : string;\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n };\n\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n\n\n Component.prototype.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n };\n\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n\n\n Component.prototype.id = function id() {\n return this.id_;\n };\n\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n\n\n Component.prototype.name = function name() {\n return this.name_;\n };\n\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n\n\n Component.prototype.children = function children() {\n return this.children_;\n };\n\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n\n\n Component.prototype.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n };\n\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n\n\n Component.prototype.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n name = toTitleCase(name);\n\n return this.childNameIndex_[name];\n };\n\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n\n\n Component.prototype.addChild = function addChild(child) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.children_.length;\n\n var component = void 0;\n var componentName = void 0;\n\n // If child is a string, create component with options\n if (typeof child === 'string') {\n componentName = toTitleCase(child);\n\n var componentClassName = options.componentClass || componentName;\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error('Component ' + componentClassName + ' does not exist');\n }\n\n // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.splice(index, 0, component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || component.name && toTitleCase(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n var childNodes = this.contentEl().children;\n var refNode = childNodes[index] || null;\n\n this.contentEl().insertBefore(component.el(), refNode);\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n };\n\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n\n\n Component.prototype.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n };\n\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n\n\n Component.prototype.initChildren = function initChildren() {\n var _this = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts;\n\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = _this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n var newChild = _this.addChild(name, opts);\n\n if (newChild) {\n _this[name] = newChild;\n }\n };\n\n // Allow for an array of children details to passed in the options\n var workingChildren = void 0;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren\n // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n return child === wchild.name;\n });\n })).map(function (child) {\n var name = void 0;\n var opts = void 0;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return { name: name, opts: opts };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase(child.name));\n\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n };\n\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n\n\n Component.prototype.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n };\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n\n\n Component.prototype.ready = function ready(fn) {\n var sync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n };\n\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n\n\n Component.prototype.triggerReady = function triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggered asynchronously\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n this.trigger('ready');\n }, 1);\n };\n\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n\n\n Component.prototype.$ = function $$$1(selector, context) {\n return $(selector, context || this.contentEl());\n };\n\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n\n\n Component.prototype.$$ = function $$$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n };\n\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n\n\n Component.prototype.hasClass = function hasClass$$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n };\n\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n\n\n Component.prototype.addClass = function addClass$$1(classToAdd) {\n addClass(this.el_, classToAdd);\n };\n\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n\n\n Component.prototype.removeClass = function removeClass$$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n };\n\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n\n\n Component.prototype.toggleClass = function toggleClass$$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n };\n\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n\n\n Component.prototype.show = function show() {\n this.removeClass('vjs-hidden');\n };\n\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n\n\n Component.prototype.hide = function hide() {\n this.addClass('vjs-hidden');\n };\n\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n\n\n Component.prototype.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n };\n\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n\n\n Component.prototype.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n };\n\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n\n\n Component.prototype.getAttribute = function getAttribute$$1(attribute) {\n return getAttribute(this.el_, attribute);\n };\n\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n\n\n Component.prototype.setAttribute = function setAttribute$$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n };\n\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n\n\n Component.prototype.removeAttribute = function removeAttribute$$1(attribute) {\n removeAttribute(this.el_, attribute);\n };\n\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n\n\n Component.prototype.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n };\n\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n\n\n Component.prototype.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n };\n\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n\n\n Component.prototype.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n };\n\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n\n\n Component.prototype.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n };\n\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n\n\n Component.prototype.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n if (typeof window.getComputedStyle === 'function') {\n var computedStyle = window.getComputedStyle(this.el_);\n\n computedWidthOrHeight = computedStyle.getPropertyValue(widthOrHeight) || computedStyle[widthOrHeight];\n }\n\n // remove 'px' from variable and parse as integer\n computedWidthOrHeight = parseFloat(computedWidthOrHeight);\n\n // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs on IE8 and wherever getComputedStyle doesn't exist.\n if (computedWidthOrHeight === 0) {\n var rule = 'offset' + toTitleCase(widthOrHeight);\n\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n };\n\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n\n\n Component.prototype.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n };\n\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n\n\n Component.prototype.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n };\n\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n\n\n Component.prototype.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n };\n\n /**\n * Set the focus to this component\n */\n\n\n Component.prototype.focus = function focus() {\n this.el_.focus();\n };\n\n /**\n * Remove the focus from this component\n */\n\n\n Component.prototype.blur = function blur() {\n this.el_.blur();\n };\n\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @private\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n\n\n Component.prototype.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n var tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n var touchTimeThreshold = 200;\n\n var couldBeTap = void 0;\n\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n };\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function (event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {EventTarget~Event}\n */\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n };\n\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n\n\n Component.prototype.enableTouchActivity = function enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n var report = bind(this.player(), this.player().reportUserActivity);\n\n var touchHolding = void 0;\n\n this.on('touchstart', function () {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n };\n\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n\n\n Component.prototype.setTimeout = function setTimeout(fn, timeout) {\n var _this2 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId, disposeFn;\n\n fn = bind(this, fn);\n\n timeoutId = window.setTimeout(function () {\n _this2.off('dispose', disposeFn);\n fn();\n }, timeout);\n\n disposeFn = function disposeFn() {\n return _this2.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = 'vjs-timeout-' + timeoutId;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n };\n\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n\n\n Component.prototype.clearTimeout = function clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-timeout-' + timeoutId;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n };\n\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n\n\n Component.prototype.setInterval = function setInterval(fn, interval) {\n var _this3 = this;\n\n fn = bind(this, fn);\n\n var intervalId = window.setInterval(fn, interval);\n\n var disposeFn = function disposeFn() {\n return _this3.clearInterval(intervalId);\n };\n\n disposeFn.guid = 'vjs-interval-' + intervalId;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n };\n\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n\n\n Component.prototype.clearInterval = function clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-interval-' + intervalId;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n };\n\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n\n\n Component.prototype.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this4 = this;\n\n // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n var id, disposeFn;\n\n if (this.supportsRaf_) {\n fn = bind(this, fn);\n\n id = window.requestAnimationFrame(function () {\n _this4.off('dispose', disposeFn);\n fn();\n });\n\n disposeFn = function disposeFn() {\n return _this4.cancelAnimationFrame(id);\n };\n\n disposeFn.guid = 'vjs-raf-' + id;\n this.on('dispose', disposeFn);\n\n return id;\n }\n\n // Fall back to using a timer.\n return this.setTimeout(fn, 1000 / 60);\n };\n\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n\n\n Component.prototype.cancelAnimationFrame = function cancelAnimationFrame(id) {\n if (this.supportsRaf_) {\n window.cancelAnimationFrame(id);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-raf-' + id;\n\n this.off('dispose', disposeFn);\n\n return id;\n }\n\n // Fall back to using a timer.\n return this.clearTimeout(id);\n };\n\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error('Illegal component name, \"' + name + '\"; must be a non-empty string.');\n }\n\n var Tech = Component.getComponent('Tech');\n\n // We need to make sure this check is only done if Tech has been registered.\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason = void 0;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error('Illegal component, \"' + name + '\"; ' + reason + '.');\n }\n\n name = toTitleCase(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players);\n\n // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n\n return ComponentToRegister;\n };\n\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n *\n * @deprecated In `videojs` 6 this will not return `Component`s that were not\n * registered using {@link Component.registerComponent}. Currently we\n * check the global `videojs` object for a `Component` name and\n * return that if it exists.\n */\n\n\n Component.getComponent = function getComponent(name) {\n if (!name) {\n return;\n }\n\n name = toTitleCase(name);\n\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n };\n\n return Component;\n}();\n\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent.prototype.supportsRaf_ = typeof window.requestAnimationFrame === 'function' && typeof window.cancelAnimationFrame === 'function';\n\nComponent.registerComponent('Component', Component);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @function time-ranges:indexFunction\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @depricated index must be set to a value, in the future this will throw an error.\n */\n\n/**\n * An object that contains ranges of time for various reasons.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this Object\n *\n * @property {time-ranges:indexFunction} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {time-ranges:indexFunction} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error('Failed to execute \\'' + fnName + '\\' on \\'TimeRanges\\': The index provided (' + index + ') is non-numeric or out of bounds (0-' + maxIndex + ').');\n }\n}\n\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The proprety that should be used to get the time. should be 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n *\n * @depricated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\n/**\n * Create a time range object given ranges of time.\n *\n * @param {Array} [ranges]\n * An array of time ranges.\n */\nfunction createTimeRangesObj(ranges) {\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\n/**\n * Should create a fake `TimeRange` object which mimics an HTML5 time range instance.\n *\n * @param {number|Array} start\n * The start of a single range or an array of ranges\n *\n * @param {number} end\n * The end of a single range.\n *\n * @private\n */\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start = void 0;\n var end = void 0;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\n */\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\nvar FullscreenApi = {};\n\n// browser API methods\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n// WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n// Old WebKit (Safari 5.1)\n['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n// Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'],\n// Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n\nvar specApi = apiMap[0];\nvar browserApi = void 0;\n\n// determine the supported set of functions\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\nfunction MediaError(value) {\n\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\nMediaError.prototype.code = 0;\n\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\nMediaError.prototype.message = '';\n\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\nMediaError.prototype.status = null;\n\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_CUSTOM\n * @property {string} 2 - MEDIA_ERR_ABORTED\n * @property {string} 3 - MEDIA_ERR_NETWORK\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n};\n\n// Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum;\n // values should be accessible on both the class and instance\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n}\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {Boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n\n return ret;\n};\n\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\nvar textTracksToJson = function textTracksToJson(tech) {\n\n var trackEls = tech.$$('track');\n\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n\n return tech.textTracks();\n};\n\nvar textTrackConverter = { textTracksToJson: textTracksToJson, jsonToTextTracks: jsonToTextTracks, trackToJson_: trackToJson_ };\n\n/**\n * @file modal-dialog.js\n */\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\nvar ESC = 27;\n\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = function (_Component) {\n inherits(ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n classCallCheck(this, ModalDialog);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n _this.content(_this.options_.content);\n\n // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + '-content'\n }, {\n role: 'document'\n });\n\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + '-description vjs-control-text',\n id: _this.el().getAttribute('aria-describedby')\n });\n\n textContent(_this.descEl_, _this.description());\n _this.el_.appendChild(_this.descEl_);\n _this.el_.appendChild(_this.contentEl_);\n return _this;\n }\n\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n ModalDialog.prototype.createEl = function createEl$$1() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + '_description',\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n ModalDialog.prototype.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n ModalDialog.prototype.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + ' vjs-hidden ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Handles `keydown` events on the document, looking for ESC, which closes\n * the modal.\n *\n * @param {EventTarget~Event} e\n * The keypress that triggered this event.\n *\n * @listens keydown\n */\n\n\n ModalDialog.prototype.handleKeyPress = function handleKeyPress(e) {\n if (e.which === ESC && this.closeable()) {\n this.close();\n }\n };\n\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n\n\n ModalDialog.prototype.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n };\n\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n\n\n ModalDialog.prototype.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.');\n\n // Append a universal closeability message if the modal is closeable.\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n };\n\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n\n\n ModalDialog.prototype.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalopen');\n this.opened_ = true;\n\n // Fill content if the modal has never opened before and\n // never been filled.\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n }\n\n // If the player was playing, pause it and take note of its previously\n // playing state.\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n if (this.closeable()) {\n this.on(this.el_.ownerDocument, 'keydown', bind(this, this.handleKeyPress));\n }\n\n // Hide controls and note if they were enabled.\n this.hadControls_ = player.controls();\n player.controls(false);\n\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n };\n\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n\n\n ModalDialog.prototype.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n return this.opened_;\n };\n\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n\n\n ModalDialog.prototype.close = function close() {\n if (!this.opened_) {\n return;\n }\n var player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n if (this.closeable()) {\n this.off(this.el_.ownerDocument, 'keydown', bind(this, this.handleKeyPress));\n }\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n };\n\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n\n\n ModalDialog.prototype.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton');\n\n // If this is being made closeable and has no close button, add one.\n if (closeable && !close) {\n\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', { controlText: 'Close Modal Dialog' });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close);\n }\n\n // If this is being made uncloseable and has a close button, remove it.\n if (!closeable && close) {\n this.off(close, 'close', this.close);\n this.removeChild(close);\n close.dispose();\n }\n }\n return this.closeable_;\n };\n\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n\n\n ModalDialog.prototype.fill = function fill() {\n this.fillWith(this.content());\n };\n\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n\n\n ModalDialog.prototype.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true;\n\n // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n this.trigger('modalfill');\n\n // Re-inject the re-filled content element.\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n }\n\n // make sure that the close button is last in the dialog DOM\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n };\n\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n\n\n ModalDialog.prototype.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n this.trigger('modalempty');\n };\n\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n\n\n ModalDialog.prototype.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n return this.content_;\n };\n\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n\n\n ModalDialog.prototype.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n\n this.focus();\n\n this.on(document, 'keydown', this.handleKeyDown);\n }\n };\n\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n\n\n ModalDialog.prototype.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n\n this.off(document, 'keydown', this.handleKeyDown);\n };\n\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n\n\n ModalDialog.prototype.handleKeyDown = function handleKeyDown(event) {\n // exit early if it isn't a tab key\n if (event.which !== 9) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex = void 0;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n };\n\n /**\n * get all focusable elements\n *\n * @private\n */\n\n\n ModalDialog.prototype.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window.HTMLAnchorElement || child instanceof window.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window.HTMLInputElement || child instanceof window.HTMLSelectElement || child instanceof window.HTMLTextAreaElement || child instanceof window.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window.HTMLIFrameElement || child instanceof window.HTMLObjectElement || child instanceof window.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component);\n\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\n\nComponent.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * @file track-list.js\n */\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = function (_EventTarget) {\n inherits(TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @param {Object} [list]\n * The child object with inheritance done manually for ie8.\n *\n * @abstract\n */\n function TrackList() {\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var _ret;\n\n var list = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n classCallCheck(this, TrackList);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n if (!list) {\n list = _this; // eslint-disable-line\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n }\n }\n\n list.tracks_ = [];\n\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(list, 'length', {\n get: function get$$1() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n list.addTrack(tracks[i]);\n }\n\n // must return the object, as for ie8 it will not be this\n // but a reference to a document object\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n TrackList.prototype.addTrack = function addTrack(track) {\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get$$1() {\n return this.tracks_[index];\n }\n });\n }\n\n // Do not add duplicate tracks\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n this.trigger({\n track: track,\n type: 'addtrack'\n });\n }\n };\n\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n\n\n TrackList.prototype.removeTrack = function removeTrack(rtrack) {\n var track = void 0;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n\n break;\n }\n }\n\n if (!track) {\n return;\n }\n\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n this.trigger({\n track: track,\n type: 'removetrack'\n });\n };\n\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {String} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n\n\n TrackList.prototype.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget);\n\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * @file audio-track-list.js\n */\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another audio track is enabled, disable it\n list[i].enabled = false;\n }\n};\n\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\nvar AudioTrackList = function (_TrackList) {\n inherits(AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, AudioTrackList);\n\n var list = void 0;\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in AudioTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = AudioTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n list.changing_ = false;\n\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n AudioTrackList.prototype.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n track.addEventListener('enabledchange', function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n _this2.trigger('change');\n });\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * @file video-track-list.js\n */\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another video track is enabled, disable it\n list[i].selected = false;\n }\n};\n\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\nvar VideoTrackList = function (_TrackList) {\n inherits(VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, VideoTrackList);\n\n var list = void 0;\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in VideoTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = VideoTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n list.changing_ = false;\n\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n Object.defineProperty(list, 'selectedIndex', {\n get: function get$$1() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n return -1;\n },\n set: function set$$1() {}\n });\n\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n VideoTrackList.prototype.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n track.addEventListener('selectedchange', function () {\n if (_this2.changing_) {\n return;\n }\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n _this2.trigger('change');\n });\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * @file text-track-list.js\n */\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = function (_TrackList) {\n inherits(TextTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {TextTrack[]} [tracks=[]]\n * A list of `TextTrack` to instantiate the list with.\n */\n function TextTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, TextTrackList);\n\n var list = void 0;\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in TextTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = TextTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n TextTrackList.prototype.addTrack = function addTrack(track) {\n _TrackList.prototype.addTrack.call(this, track);\n\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n track.addEventListener('modechange', bind(this, function () {\n this.trigger('change');\n }));\n\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', bind(this, function () {\n this.trigger('selectedlanguagechange');\n }));\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\n\nvar HtmlTrackElementList = function () {\n\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList() {\n var trackElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, HtmlTrackElementList);\n\n var list = this; // eslint-disable-line\n\n if (IS_IE8) {\n list = document.createElement('custom');\n\n for (var prop in HtmlTrackElementList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = HtmlTrackElementList.prototype[prop];\n }\n }\n }\n\n list.trackElements_ = [];\n\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(list, 'length', {\n get: function get$$1() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n list.addTrackElement_(trackElements[i]);\n }\n\n if (IS_IE8) {\n return list;\n }\n }\n\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n HtmlTrackElementList.prototype.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get$$1() {\n return this.trackElements_[index];\n }\n });\n }\n\n // Do not add duplicate elements\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n };\n\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n\n\n HtmlTrackElementList.prototype.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_ = void 0;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n\n break;\n }\n }\n\n return trackElement_;\n };\n\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n\n\n HtmlTrackElementList.prototype.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n this.trackElements_.splice(i, 1);\n\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\n\nvar TextTrackCueList = function () {\n\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n classCallCheck(this, TextTrackCueList);\n\n var list = this; // eslint-disable-line\n\n if (IS_IE8) {\n list = document.createElement('custom');\n\n for (var prop in TextTrackCueList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n Object.defineProperty(list, 'length', {\n get: function get$$1() {\n return this.length_;\n }\n });\n\n if (IS_IE8) {\n return list;\n }\n }\n\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n TextTrackCueList.prototype.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get$$1() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n };\n\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n\n\n TextTrackCueList.prototype.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * @file track.js\n */\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = function (_EventTarget) {\n inherits(Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track() {\n var _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Track);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n var track = _this; // eslint-disable-line\n\n if (IS_IE8) {\n track = document.createElement('custom');\n for (var prop in Track.prototype) {\n if (prop !== 'constructor') {\n track[prop] = Track.prototype[prop];\n }\n }\n }\n\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n label: options.label || '',\n language: options.language || ''\n };\n\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(track, key, {\n get: function get$$1() {\n return trackProps[key];\n },\n set: function set$$1() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return Track;\n}(EventTarget);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\nvar parseUrl = function parseUrl(url) {\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n var a = document.createElement('a');\n\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n var addToBody = a.host === '' && a.protocol !== 'file:';\n var div = void 0;\n\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = '';\n a = div.firstChild;\n // prevent the div from affecting layout\n div.setAttribute('style', 'display:none; position:absolute;');\n document.body.appendChild(div);\n }\n\n // Copy the specific URL properties to a new object\n // This is also needed for IE8 because the anchor loses its\n // properties when it's removed from the dom\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window.location.protocol;\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n *\n *\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n var div = document.createElement('div');\n\n div.innerHTML = 'x';\n url = div.firstChild.href;\n }\n\n return url;\n};\n\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @returns {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {string} url\n * The url to check.\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\nvar isCrossOrigin = function isCrossOrigin(url) {\n var winLoc = window.location;\n var urlInfo = parseUrl(url);\n\n // IE8 protocol relative urls will return ':' for protocol\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n\n return crossOrigin;\n};\n\nvar Url = (Object.freeze || Object)({\n\tparseUrl: parseUrl,\n\tgetAbsoluteURL: getAbsoluteURL,\n\tgetFileExtension: getFileExtension,\n\tisCrossOrigin: isCrossOrigin\n});\n\n/**\n * @file text-track.js\n */\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window.WebVTT.Parser(window, window.vttjs, window.WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n if (errors.length > 0) {\n if (window.console && window.console.groupCollapsed) {\n window.console.groupCollapsed('Text Track parsing errors for ' + track.src);\n }\n errors.forEach(function (error) {\n return log.error(error);\n });\n if (window.console && window.console.groupEnd) {\n window.console.groupEnd();\n }\n }\n\n parser.flush();\n};\n\n/**\n * Load a `TextTrack` from a specifed url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n xhr(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log.error(err, response);\n }\n\n track.loaded_ = true;\n\n // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n if (typeof window.WebVTT !== 'function') {\n if (track.tech_) {\n var loadHandler = function loadHandler() {\n return parseCues(responseBody, track);\n };\n\n track.tech_.on('vttjsloaded', loadHandler);\n track.tech_.on('vttjserror', function () {\n log.error('vttjs failed to load, stopping trying to process ' + track.src);\n track.tech_.off('vttjsloaded', loadHandler);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\nvar TextTrack = function (_Track) {\n inherits(TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * vesion of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, TextTrack);\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings['default'];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var tt = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n\n tt.tech_ = settings.tech;\n\n if (IS_IE8) {\n for (var prop in TextTrack.prototype) {\n if (prop !== 'constructor') {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n var cues = new TextTrackCueList(tt.cues_);\n var activeCues = new TextTrackCueList(tt.activeCues_);\n var changed = false;\n var timeupdateHandler = bind(tt, function () {\n\n // Accessing this.activeCues for the side-effects of updating itself\n // due to it's nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n this.activeCues = this.activeCues;\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n });\n\n if (mode !== 'disabled') {\n tt.tech_.ready(function () {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n }\n\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n Object.defineProperty(tt, 'default', {\n get: function get$$1() {\n return default_;\n },\n set: function set$$1() {}\n });\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n Object.defineProperty(tt, 'mode', {\n get: function get$$1() {\n return mode;\n },\n set: function set$$1(newMode) {\n var _this2 = this;\n\n if (!TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode !== 'disabled') {\n\n this.tech_.ready(function () {\n _this2.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n } else {\n this.tech_.off('timeupdate', timeupdateHandler);\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n this.trigger('modechange');\n }\n });\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n Object.defineProperty(tt, 'cues', {\n get: function get$$1() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set$$1() {}\n });\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n Object.defineProperty(tt, 'activeCues', {\n get: function get$$1() {\n if (!this.loaded_) {\n return null;\n }\n\n // nothing to do\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n\n\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set$$1() {}\n });\n\n if (settings.src) {\n tt.src = settings.src;\n loadTrack(settings.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n return _ret = tt, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n\n\n TextTrack.prototype.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window.vttjs && !(originalCue instanceof window.vttjs.VTTCue)) {\n cue = new window.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n }\n\n // make sure that `id` is copied over\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n };\n\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n\n\n TextTrack.prototype.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n };\n\n return TextTrack;\n}(Track);\n\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\n\nvar AudioTrack = function (_Track) {\n inherits(AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, AudioTrack);\n\n var settings = mergeOptions(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var track = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n var enabled = false;\n\n if (IS_IE8) {\n for (var prop in AudioTrack.prototype) {\n if (prop !== 'constructor') {\n track[prop] = AudioTrack.prototype[prop];\n }\n }\n }\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n Object.defineProperty(track, 'enabled', {\n get: function get$$1() {\n return enabled;\n },\n set: function set$$1(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n enabled = newEnabled;\n\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n this.trigger('enabledchange');\n }\n });\n\n // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n if (settings.enabled) {\n track.enabled = settings.enabled;\n }\n track.loaded_ = true;\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = function (_Track) {\n inherits(VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, VideoTrack);\n\n var settings = mergeOptions(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var track = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n var selected = false;\n\n if (IS_IE8) {\n for (var prop in VideoTrack.prototype) {\n if (prop !== 'constructor') {\n track[prop] = VideoTrack.prototype[prop];\n }\n }\n }\n\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n Object.defineProperty(track, 'selected', {\n get: function get$$1() {\n return selected;\n },\n set: function set$$1(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n selected = newSelected;\n\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n this.trigger('selectedchange');\n }\n });\n\n // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n if (settings.selected) {\n track.selected = settings.selected;\n }\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @file html-track-element.js\n */\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = function (_EventTarget) {\n inherits(HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * vesion of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function HTMLTrackElement() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, HTMLTrackElement);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n var readyState = void 0;\n var trackElement = _this; // eslint-disable-line\n\n if (IS_IE8) {\n trackElement = document.createElement('custom');\n\n for (var prop in HTMLTrackElement.prototype) {\n if (prop !== 'constructor') {\n trackElement[prop] = HTMLTrackElement.prototype[prop];\n }\n }\n }\n\n var track = new TextTrack(options);\n\n trackElement.kind = track.kind;\n trackElement.src = track.src;\n trackElement.srclang = track.language;\n trackElement.label = track.label;\n trackElement['default'] = track['default'];\n\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n Object.defineProperty(trackElement, 'readyState', {\n get: function get$$1() {\n return readyState;\n }\n });\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n Object.defineProperty(trackElement, 'track', {\n get: function get$$1() {\n return track;\n }\n });\n\n readyState = NONE;\n\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n trackElement.trigger({\n type: 'load',\n target: trackElement\n });\n });\n\n if (IS_IE8) {\n var _ret;\n\n return _ret = trackElement, possibleConstructorReturn(_this, _ret);\n }\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\n\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\n\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + 'Tracks';\n NORMAL[type].privateName = type + 'Tracks_';\n});\n\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = mergeOptions(NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * @file tech.js\n */\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\nfunction createTrackHelper(self, kind, label, language) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n\n var tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n var track = new ALL.text.TrackClass(options);\n\n tracks.addTrack(track);\n\n return track;\n}\n\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link Flash} and {@link HTML5}\n *\n * @extends Component\n */\n\nvar Tech = function (_Component) {\n inherits(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var ready = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n classCallCheck(this, Tech);\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\n var _this = possibleConstructorReturn(this, _Component.call(this, null, options, ready));\n\n _this.hasStarted_ = false;\n _this.on('playing', function () {\n this.hasStarted_ = true;\n });\n _this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\n if (options && options[props.getterName]) {\n _this[props.privateName] = options[props.getterName];\n }\n });\n\n // Manually track progress in cases where the browser/flash player doesn't report it.\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n }\n\n // Manually track timeupdates in cases where the browser/flash player doesn't report it.\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options['native' + track + 'Tracks'] === false) {\n _this['featuresNative' + track + 'Tracks'] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners();\n\n // Turn on component tap events only if not using native controls\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n return _this;\n }\n\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n Tech.prototype.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n };\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n\n\n Tech.prototype.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n };\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n\n\n Tech.prototype.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n };\n\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n\n\n Tech.prototype.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n };\n\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n\n\n Tech.prototype.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n };\n\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n\n\n Tech.prototype.buffered = function buffered() {\n return createTimeRanges(0, 0);\n };\n\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n\n\n Tech.prototype.bufferedPercent = function bufferedPercent$$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n };\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n\n\n Tech.prototype.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n };\n\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n\n\n Tech.prototype.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n };\n\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n\n\n Tech.prototype.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n };\n\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n\n\n Tech.prototype.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n\n // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n };\n\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n\n\n Tech.prototype.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n };\n\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n\n\n Tech.prototype.dispose = function dispose() {\n\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names);\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n\n\n Tech.prototype.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types);\n // clear out all tracks because we can't reuse them between techs\n types.forEach(function (type) {\n var list = _this3[type + 'Tracks']() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n list.removeTrack(track);\n }\n });\n };\n\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n\n\n Tech.prototype.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n this.removeRemoteTextTrack(track);\n }\n };\n\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n\n\n Tech.prototype.reset = function reset() {};\n\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n\n\n Tech.prototype.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n return this.error_;\n };\n\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks wether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n\n\n Tech.prototype.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n return createTimeRanges();\n };\n\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n\n\n Tech.prototype.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n };\n\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n\n\n Tech.prototype.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + 'trackchange');\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n };\n\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n\n\n Tech.prototype.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window.WebVTT) {\n return;\n }\n\n // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n if (document.body.contains(this.el())) {\n\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n }\n\n // load vtt.js via the script location option or the cdn of no location was\n // passed in\n var script = document.createElement('script');\n\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.12.4/vtt.min.js';\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n });\n // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n window.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n };\n\n /**\n * Emulate texttracks\n *\n */\n\n\n Tech.prototype.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n };\n\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n\n\n Tech.prototype.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n };\n\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n\n\n Tech.prototype.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions(options, {\n tech: this\n });\n\n return new REMOTE.remoteTextEl.TrackClass(track);\n };\n\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n\n\n Tech.prototype.addRemoteTextTrack = function addRemoteTextTrack() {\n var _this7 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var manualCleanup = arguments[1];\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n }\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n };\n\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n\n\n Tech.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track);\n\n // remove HTMLTrackElement and TextTrack from remote list\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n };\n\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n\n\n Tech.prototype.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n };\n\n /**\n * A method to set a poster from a `Tech`.\n *\n * @abstract\n */\n\n\n Tech.prototype.setPoster = function setPoster() {};\n\n /**\n * A method to check for the presence of the 'playsinine'