{"version":3,"sources":["webpack:///./src/assets/images/suite4.png","webpack:///./src/assets/images/activesuite6.jpg","webpack:///./src/assets/images/cotentsuite13.png","webpack:///./src/assets/images/coreModule5.jpg","webpack:///./src/assets/images/coreModule2.jpg","webpack:///./src/assets/images/car.png","webpack:///./src/assets/images/advantage16.jpg","webpack:///./node_modules/tsml/tsml.js","webpack:///./src/assets/images/suite13.png","webpack:///./src/assets/images/activesuite8.jpg","webpack:///./src/assets/images/coreModule9.jpg","webpack:///./src/assets/images/suite5.png","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./src/assets/images/cotentsuite7.png","webpack:///./src/assets/images/advantage13.jpg","webpack:///./src/assets/images/cotentsuite9.png","webpack:///./src/assets/images/activesuite9.jpg","webpack:///./src/assets/images/parameter3.png","webpack:///./node_modules/video.js/dist/video.cjs.js","webpack:///./src/assets/images/suite3.png","webpack:///./src/assets/images sync ^\\.\\/advantage1.*\\.jpg$","webpack:///./src/assets/images sync ^\\.\\/cotentsuite.*\\.png$","webpack:///./src/assets/images/suite6.png","webpack:///./src/assets/images/advantage11.jpg","webpack:///./src/assets/images/activesuite13.jpg","webpack:///./node_modules/xtend/immutable.js","webpack:///./src/assets/images/coreModule1.jpg","webpack:///./src/assets/images/cotentsuite1.png","webpack:///./src/assets/images/cotentsuite8.png","webpack:///./src/assets/images/advantage17.jpg","webpack:///./src/assets/images/advantage18.jpg","webpack:///./node_modules/parse-headers/parse-headers.js","webpack:///./src/assets/images/advantage1.jpg","webpack:///./src/assets/images/activesuite14.jpg","webpack:///./src/assets/video/developerVideo.mp4","webpack:///./src/assets/images/activesuite4.jpg","webpack:///./src/assets/images/advantage3.jpg","webpack:///./src/assets/images/advantage6.jpg","webpack:///./src/assets/images/suite9.png","webpack:///./src/assets/images/cotentsuite2.png","webpack:///./src/assets/images/advantage5.jpg","webpack:///./src/assets/images/cotentsuite11.png","webpack:///./src/views/developer/index.vue?2378","webpack:///./src/components/companyType.vue?d4f8","webpack:///src/components/companyType.vue","webpack:///./src/components/companyType.vue?d0c8","webpack:///./src/components/companyType.vue","webpack:///src/views/developer/index.vue","webpack:///./src/views/developer/index.vue?82a2","webpack:///./src/views/developer/index.vue","webpack:///./node_modules/is-function/index.js","webpack:///./src/assets/images/advantage12.jpg","webpack:///./src/assets/images/cotentsuite10.png","webpack:///./src/assets/images/coreModule6.jpg","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./src/assets/images/parameter2.png","webpack:///./src/assets/images/advantage8.jpg","webpack:///./src/assets/images/suite10.png","webpack:///./src/assets/images/suite12.png","webpack:///./src/assets/images/activesuite12.jpg","webpack:///./src/assets/images/activesuite10.jpg","webpack:///./src/assets/images/activesuite2.jpg","webpack:///./src/assets/images/suitebg.png","webpack:///./src/assets/images/cotentsuite12.png","webpack:///./src/assets/images/suite1.png","webpack:///./src/assets/images/advantage2.jpg","webpack:///./src/assets/images/coreModule8.jpg","webpack:///./src/assets/images/coreModule4.jpg","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./src/assets/images/suite11.png","webpack:///./src/assets/images sync ^\\.\\/coreModule.*\\.jpg$","webpack:///./src/assets/images sync ^\\.\\/advantage.*\\.jpg$","webpack:///./src/assets/images/coreModule7.jpg","webpack:///./src/assets/images/activesuite3.jpg","webpack:///./src/assets/images/advantage14.jpg","webpack:///./src/assets/images/activesuite5.jpg","webpack:///./src/assets/images/advantage7.jpg","webpack:///./src/assets/images/advantage4.jpg","webpack:///./node_modules/global/window.js","webpack:///./src/assets/images/cotentsuite14.png","webpack:///./src/assets/images sync ^\\.\\/parameter.*\\.png$","webpack:///./src/assets/images/coreModule11.jpg","webpack:///./src/assets/images/cotentsuite3.png","webpack:///./src/views/developer/index.vue?50cb","webpack:///./src/assets/images sync ^\\.\\/activesuite.*\\.jpg$","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./src/assets/images/coreModule12.jpg","webpack:///./src/assets/images/cotentsuite5.png","webpack:///./node_modules/vue-video-player/dist/vue-video-player.js","webpack:///./src/assets/images/activesuite1.jpg","webpack:///./src/assets/images/coreModule3.jpg","webpack:///./src/assets/images/cotentsuite6.png","webpack:///./src/assets/images/suite8.png","webpack:///./src/assets/images/cotentsuite4.png","webpack:///./src/assets/images sync ^\\.\\/suite.*\\.png$","webpack:///./src/assets/images/parameter1.png","webpack:///./src/assets/images/suite14.png","webpack:///./src/assets/images/activesuite11.jpg","webpack:///./src/assets/images/coreModule10.jpg","webpack:///./src/assets/images/suite7.png","webpack:///./node_modules/xhr/index.js","webpack:///./node_modules/global/document.js","webpack:///./src/assets/images/activesuite7.jpg","webpack:///./src/assets/images/advantage15.jpg","webpack:///./src/assets/images/suite2.png","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js"],"names":["module","exports","clean","s","replace","sa","i","arguments","length","window","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","_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","attrs","attrVal","getAttribute","attribute","blockTextSelection","body","focus","onselectstart","unblockTextSelection","getBoundingClientRect","parentNode","rect","k","height","width","findPosition","box","left","top","docEl","documentElement","clientLeft","scrollLeft","pageXOffset","clientTop","scrollTop","pageYOffset","Math","round","getPointerPosition","event","position","boxW","offsetWidth","boxH","offsetHeight","boxY","boxX","pageY","pageX","changedTouches","y","max","min","isTextNode","emptyEl","removeChild","normalizeContent","createTextNode","node","insertContent","isSingleLeftClick","button","buttons","$","$$","Dom","_guid","newGUID","elData","elIdAttr","Date","getTime","getData","id","hasData","removeData","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","this","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","component","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","script","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","webpackContext","req","webpackContextResolve","__webpack_require__","headers","headersArr","row","render","_vm","_h","$createElement","_c","_self","staticClass","_v","openVideo","dialogVisible","$event","closeVideo","ref","_m","_l","directives","rawName","suiteIndex","expression","class","suiteStatus","clearfix","prev","advantageIndex","_s","parameterIndex","coreModuleIndex","form","rules","model","$$v","$set","CompanyType","isLoading","handleSubmit","staticRenderFns","updateValue","Name","Value","created","$emit","timeDivider","durationDisplay","fullscreenToggle","advantageList","parameterList","coreModuleList","Phone","Email","CompanyName","PuchaseCount","checkEmail","reg","checkPhone","checkTelephone","$refs","formName","validate","valid","loadAddOrder","requestApi","res","Code","computed","videoPlayer","components","isFunction","alert","confirm","prompt","SafeParseTuple","reviver","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","volumeMenuButton","globalEvents","reseted","mounted","initialize","beforeDestroy","__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-259feb7f.8327146f.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/suite4.9207db3b.png\";","module.exports = \"data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QObaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0NSA3OS4xNjM0OTksIDIwMTgvMDgvMTMtMTY6NDA6MjIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9ImFkb2JlOmRvY2lkOnBob3Rvc2hvcDo3YjgzNzJiZS00NmE3LTBkNDQtYjBkYi0xOThkMzRiOTg2MTYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NERDMkIyRkYyNjA1MTFFQTlEOTA5QjkzNkU2NDM0ODAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NERDMkIyRkUyNjA1MTFFQTlEOTA5QjkzNkU2NDM0ODAiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTkgKFdpbmRvd3MpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZjFlNmJlMTQtNmFiYy04ZTRlLWE2MGMtMDA1ZGM4YmZiZDIyIiBzdFJlZjpkb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6N2I4MzcyYmUtNDZhNy0wZDQ0LWIwZGItMTk4ZDM0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\"","module.exports = __webpack_public_path__ + \"img/cotentsuite13.b7298b67.png\";","module.exports = __webpack_public_path__ + \"img/coreModule5.e99e18c4.jpg\";","module.exports = __webpack_public_path__ + \"img/coreModule2.d429599f.jpg\";","module.exports = __webpack_public_path__ + \"img/car.6e0794b7.png\";","module.exports = __webpack_public_path__ + \"img/advantage16.6c8ba5b8.jpg\";","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}","module.exports = __webpack_public_path__ + \"img/suite13.f32de94d.png\";","module.exports = __webpack_public_path__ + \"img/activesuite8.ef3dced4.jpg\";","module.exports = __webpack_public_path__ + \"img/coreModule9.1912bdef.jpg\";","module.exports = __webpack_public_path__ + \"img/suite5.900594bf.png\";","/**\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","module.exports = __webpack_public_path__ + \"img/cotentsuite7.871275d9.png\";","module.exports = __webpack_public_path__ + \"img/advantage13.bc7003cf.jpg\";","module.exports = __webpack_public_path__ + \"img/cotentsuite9.02ca6184.png\";","module.exports = __webpack_public_path__ + \"img/activesuite9.6bd60bcf.jpg\";","module.exports = __webpack_public_path__ + \"img/parameter3.fa966d44.png\";","/**\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'