{"version":3,"sources":["webpack:///./node_modules/tsml/tsml.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./src/components/PublicSite/Footer.vue?8478","webpack:///./src/components/PublicSite/Footer.vue?75b9","webpack:///./node_modules/video.js/dist/video.cjs.js","webpack:///./src/views/PublicSite/home.vue?b536","webpack:///./src/components/PublicSite/DialogRelease.vue?a4e4","webpack:///src/components/PublicSite/DialogRelease.vue","webpack:///./src/components/PublicSite/DialogRelease.vue?a6de","webpack:///./src/components/PublicSite/DialogRelease.vue?ef11","webpack:///./src/components/PublicSite/Video.vue?6db3","webpack:///src/components/PublicSite/Video.vue","webpack:///./src/components/PublicSite/Video.vue?b986","webpack:///./src/components/PublicSite/Video.vue","webpack:///src/views/PublicSite/home.vue","webpack:///./src/views/PublicSite/home.vue?dd00","webpack:///./src/views/PublicSite/home.vue?8509","webpack:///./node_modules/xtend/immutable.js","webpack:///./src/components/PublicSite/Footer.vue?da5a","webpack:///./node_modules/parse-headers/parse-headers.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./src/views/PublicSite/home.vue?eee1","webpack:///./src/components/PublicSite/Banks.vue?3d24","webpack:///src/components/PublicSite/Banks.vue","webpack:///./src/components/PublicSite/Banks.vue?6aac","webpack:///./src/components/PublicSite/Banks.vue","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/vue-video-player/dist/vue-video-player.js","webpack:///./src/components/PublicSite/DialogRelease.vue?a55b","webpack:///./node_modules/xhr/index.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js"],"names":["clean","s","replace","module","exports","sa","i","arguments","length","window","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","render","_vm","this","_h","$createElement","_self","_c","_m","staticRenderFns","staticClass","_v","attrs","script","component","_interopDefault","ex","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","match","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","Object","freeze","_typeof","Symbol","iterator","obj","constructor","prototype","classCallCheck","instance","Constructor","TypeError","inherits","subClass","superClass","create","value","enumerable","writable","configurable","setPrototypeOf","__proto__","possibleConstructorReturn","self","call","ReferenceError","taggedTemplateLiteralLoose","strings","raw","toString","keys","object","isObject","each","fn","forEach","key","reduce","initial","undefined","accum","assign","target","_len","sources","Array","_key","apply","concat","source","isPlain","history","LogByTypeFactory","name","log","type","level","args","stringify","lvl","levels","lvlRegExp","RegExp","unshift","toUpperCase","push","console","info","map","a","isArray","JSON","x","String","join","createLogger$1","logByType","createLogger","subname","all","off","debug","warn","error","DEFAULT","hasOwnProperty","Error","filter","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","computedStyle","el","prop","getComputedStyle","cs","currentStyle","_templateObject","isNonBlankString","str","throwIfWhitespace","classRegExp","className","isEl","nodeType","isInFrame","parent","createQuerier","method","selector","context","querySelector","ctx","createEl","tagName","properties","attributes","content","getOwnPropertyNames","propName","val","indexOf","setAttribute","textContent","attrName","appendContent","text","innerText","prependTo","child","firstChild","insertBefore","appendChild","hasClass","element","classToCheck","classList","contains","addClass","classToAdd","add","trim","removeClass","classToRemove","remove","split","c","toggleClass","classToToggle","predicate","has","setAttributes","attrValue","removeAttribute","getAttributes","tag","knownBooleans","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","e","_cleanUpEvents","elem","data","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","defineProperty","get","addEventListener","passiveEvents","on","guid","hash","handlersCopy","slice","m","n","options","passive","attachEvent","removeType","t","splice","trigger","elemData","ownerDocument","bubbles","targetData","one","func","Events","_windowLoaded","videojs$2","autoSetup","vids","getElementsByTagName","audios","divs","mediaEls","_i","_e","_i2","_e2","_i3","_e3","mediaEl","autoSetupTimeout","player","wait","vjs","setTimeout","readyState","createStyleElement","setTextContent","styleSheet","cssText","bind","uid","bound","throttle","last","now","throttled","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","titleCaseEquals","str1","str2","mergeOptions","Component","ready","play","player_","options_","id_","name_","el_","children_","childIndex_","childNameIndex_","initChildren","reportTouchActivity","enableTouchActivity","dispose","localize","tokens","defaultValue","code","language","languages","primaryCode","primaryLang","localizedString","index","ret","contentEl","contentEl_","children","getChildById","getChild","addChild","componentName","componentClassName","componentClass","ComponentClass","getComponent","childNodes","refNode","childFound","compEl","parentOptions","handleAdd","playerOptions","newChild","workingChildren","Tech","some","wchild","isTech","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","tapMovementThreshold","touchTimeThreshold","couldBeTap","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","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","Boolean","rangeCheck","fnName","maxIndex","getRange","valueIndex","ranges","rangeIndex","createTimeRangesObj","start","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","acc","cues","cue","startTime","endTime","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","json","src","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ESC","ModalDialog","_Component","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","role","descEl_","description","tabIndex","label","previouslyActiveEl_","handleKeyPress","close","desc","open","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","controls","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","_ret","list","tracks_","addTrack","removeTrack","rtrack","l","getTrackById","change","addtrack","removetrack","disableOthers","enabled","AudioTrackList","_TrackList","_prop","changing_","disableOthers$1","selected","VideoTrackList","set","TextTrackList","nonLanguageTextTrackKind","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","props","href","addToBody","host","protocol","div","innerHTML","details","location","getAbsoluteURL","getFileExtension","path","splitPathRe","pathParts","toLowerCase","isCrossOrigin","winLoc","urlInfo","srcProtocol","crossOrigin","Url","parseCues","srcContent","parser","Parser","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","currentTime","active","originalCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADING","LOADED","ERROR","HTMLTrackElement","load","NORMAL","audio","ListClass","TrackClass","capitalName","video","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","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","onload","onerror","_this6","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createRemoteTextTrack","_this7","manualCleanup","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","setPoster","playsinline","setPlaysinline","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","videojs","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","disposeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","use","middleware","next","setSourceHelper","setTech","mw","get$1","reduceRight","middlewareIterator","set$1","arg","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","seekable","allowedSetters","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","_mws$i","mwf","mwi","lastRun","mwrest","_src","MimetypesKind","opus","ogv","mp4","mov","m4v","mkv","mp3","aac","oga","m3u8","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","MediaLoader","j","techOrder","techName","isSupported","loadTech_","ClickableComponent","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","enabled_","handleClick","handleFocus","handleBlur","PosterImage","_ClickableComponent","update","fallbackImg_","poster","setSrc","backgroundImage","darkGray","lightGray","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","playToggle","playFocus","CloseButton","PlayToggle","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","seconds","guide","floor","h","gm","gh","isNaN","Infinity","implementation","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","throttledUpdateContent","updateContent","plainName","labelText_","updateTextNode_","textNode_","formattedTime_","formatTime_","time","updateFormattedTime_","formattedTime","CurrentTimeDisplay","_TimeDisplay","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","Slider","bar","barName","vertical","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","STEP_SECONDS","UPDATE_REFRESH_INTERVAL","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_","soundOff","VolumePanel","inline","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","LOCAL_STORAGE_KEY","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","v","Number","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","config","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","o","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","setValues","values","localStorage","getItem","setItem","removeItem","ttDisplay","controlBar","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","getInnerHTMLDescriptor","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","getSrcDescriptor","setupSourceset","resetSourceset_","srcDescriptor","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","tagAttributes","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","r","_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_","languagesToLower","name$$1","languages_","poster_","controls_","autoplay","scrubbing_","lastPlaybackRate","defaultPlaybackRate","playerOptionsCopy","plugins","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","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","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","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","foundSourceAndTech","flip","b","finder","_ref2","sourceOrder","_this10","middlewareSource","src_","notSupportedMessage","_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","maxWidth","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","current","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","html5","flash","userLanguage","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","createPluginFactory","PluginSubClass","Function","getEventHash","Plugin","VERSION","isBasic","p","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","usingPlugin","hasPlugin","_inherits","super_","extendFn","subClassMethods","methods","HTMLVideoElement","normalizeId","getPlayer","hooks","hookFunction","PlayerComponent","hooks_","hook","hookOnce","original","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","comp","writeable","extend","addLanguage","_mergeOptions","createTimeRange","dom","staticStyle","_s","currentUserInfo","nativeOn","$event","showDialogLogin","$route","model","$$v","dialog","expression","goToQuestions","VBtn","VDialog","VIcon","openVideo","ref","comoRegistrarse","comoIngresarReclamo","comoHacerSeguimiento","components","videoPlayer","computed","$refs","VCard","VCardActions","VCardText","VCardTitle","VSpacer","mixins","baseView","Login","Banks","Footer","DialogRelease","Video","showConsult","showDialogConsult","mounted","scrollTo","beforeMount","updated","headers","headersArr","row","isFunction","alert","confirm","prompt","SafeParseTuple","reviver","showBankPage","autoKeyword","directionSetting","alignSetting","findDirectionSetting","findAlignSetting","align","cobj","isIE8","baseObj","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","SyntaxError","getCueAsHTML","convertCueToDOMTree","win","global","_objCreate","F","ParsingError","errorData","parseTimeStamp","input","computeSeconds","f","Settings","parseOptions","keyValueDelim","groupDelim","groups","kv","parseCue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","region","alt","vals","vals0","integer","line","lineAlign","snapToLines","size","middle","positionAlign","skipWhitespace","substr","BadSignature","dflt","defaultKey","ESCAPE","TAG_NAME","u","ruby","rt","lang","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","unescape1","unescape","shouldAdd","localName","annotation","rootDiv","tagStack","createProcessingInstruction","strongRTLRanges","isStrongRTLChar","currentRange","determineBidi","nodeStack","pushNodes","nextTextNode","charCodeAt","computeLinePos","textTrackList","mediaElement","count","StyleBox","CueStyleBox","styleOptions","styles","display","writingMode","unicodeBidi","applyStyles","textAlign","font","whiteSpace","direction","stylesunicodeBidi","textPos","formatStyle","move","BoxPosition","lh","offsetTop","rects","getClientRects","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","step","maxPosition","initialAxis","abs","ceil","reverse","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","container","intersectArea","reference","getSimpleBoxPosition","decode","decodeURIComponent","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","overlay","paddedOverlay","shouldCompute","margin","decoder","buffer","TextDecoder","reportOrThrowError","collectNextLine","pos","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","ontimestampmap","parseHeader","stream","alreadyCollectedLine","hasSubstring","d","__esModule","default","customEventName","required","events","globalOptions","progressControl","fullscreenToggle","volumeMenuButton","globalEvents","reseted","initialize","beforeDestroy","$emit","__ob__","$nextTick","watch","deep","install","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","esModule","parseHeaders","xtend","forEachArray","array","isEmpty","initParams","params","createXHR","_createXHR","called","readystatechange","loadFunc","getBody","responseText","getXml","isJson","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","useXDR","rawRequest","getAllResponseHeaders","XDomainRequest","XMLHttpRequest","onreadystatechange","onprogress","onabort","ontimeout","username","password","withCredentials","abort","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","doccy","minDoc","topLevel","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","defineProperties"],"mappings":"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","file":"js/chunk-127c345b.eb2799a1.js","sourcesContent":["function clean (s) {\n return s.replace(/\\n\\r?\\s*/g, '')\n}\n\n\nmodule.exports = function tsml (sa) {\n var s = ''\n , i = 0\n\n for (; i < arguments.length; i++)\n s += clean(sa[i]) + (arguments[i + 1] || '')\n\n return s\n}","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _vm._m(0)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{staticClass:\"g-bg-gray-dark-v1 g-color-white-opacity-0_8 g-py-20\"},[_c('div',{staticClass:\"container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-md-8 text-center text-md-left g-mb-10 g-mb-0--md\"},[_c('h5',{staticClass:\"font-color-subtitle\"},[_vm._v(\"Contáctanos:\")]),_c('div',{staticClass:\"d-lg-flex\"},[_c('ul',{staticClass:\"u-list-inline\"},[_c('li',{staticClass:\"list-inline-item\"},[_c('span',{staticClass:\"g-color-white-opacity-0_8 g-color-white--hover font-color-subtitlename\",attrs:{\"href\":\"#\"}},[_vm._v(\"+56(2) 2892 2891\")])]),_c('li',{staticClass:\"list-inline-item\"},[_c('span',[_vm._v(\"|\")])]),_c('li',{staticClass:\"list-inline-item\"},[_c('span',{staticClass:\"g-color-white-opacity-0_8 g-color-white--hover font-color-subtitlename\",attrs:{\"href\":\"#\"}},[_vm._v(\"contacto@defensoriadelcliente.cl\")])])])])]),_c('div',{staticClass:\"col-md-4 align-self-center\"})])])])}]\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./Footer.vue?vue&type=template&id=4cd04540&scoped=true&\"\nvar script = {}\nimport style0 from \"./Footer.vue?vue&type=style&index=0&id=4cd04540&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4cd04540\",\n null\n \n)\n\nexport default component.exports","/**\n * @license\n * Video.js 6.13.0 \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'