{"version":3,"sources":["webpack:///./node_modules/es-abstract/es5.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/string.prototype.trim/polyfill.js","webpack:///./node_modules/tsml/tsml.js","webpack:///./node_modules/es-abstract/helpers/isNaN.js","webpack:///./node_modules/is-callable/index.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/es-to-primitive/es5.js","webpack:///./node_modules/video.js/dist/video.cjs.js","webpack:///./node_modules/es-to-primitive/helpers/isPrimitive.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/string.prototype.trim/implementation.js","webpack:///./node_modules/es-abstract/helpers/sign.js","webpack:///./node_modules/parse-headers/parse-headers.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./src/assets/js/analyticsData.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/object-keys/implementation.js","webpack:///./node_modules/string.prototype.trim/shim.js","webpack:///./node_modules/es-abstract/helpers/mod.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/es-abstract/helpers/assertRecord.js","webpack:///./node_modules/es-abstract/helpers/isFinite.js","webpack:///./node_modules/string.prototype.trim/index.js","webpack:///./node_modules/for-each/index.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/vue-video-player/dist/vue-video-player.js","webpack:///./node_modules/es-abstract/GetIntrinsic.js","webpack:///./node_modules/xhr/index.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js"],"names":["GetIntrinsic","$Object","$TypeError","$String","assertRecord","$isNaN","$isFinite","sign","mod","IsCallable","toPrimitive","has","ES5","ToPrimitive","ToBoolean","value","ToNumber","ToInteger","number","this","Math","floor","abs","ToInt32","x","ToUint32","ToUint16","posInt","ToString","ToObject","CheckObjectCoercible","optMessage","SameValue","y","Type","IsPropertyDescriptor","Desc","allowed","key","isData","IsAccessor","IsAccessorDescriptor","IsDataDescriptor","IsGenericDescriptor","FromPropertyDescriptor","writable","enumerable","configurable","get","set","ToPropertyDescriptor","Obj","desc","getter","TypeError","setter","module","exports","implementation","Function","prototype","bind","zeroWidthSpace","String","trim","clean","s","replace","sa","i","arguments","length","Number","isNaN","a","fnToStr","toString","constructorRegex","isES6ClassFn","fnStr","call","test","e","tryFunctionObject","toStr","Object","fnClass","genClass","hasToStringTag","Symbol","toStringTag","strClass","window","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","isPrimitive","isCallable","ES5internalSlots","O","actualHint","methods","input","_interopDefault","ex","document","tsml","safeParseTuple","xhr","vtt","version","USER_AGENT","navigator","userAgent","webkitVersionMap","exec","appleWebkitVersion","parseFloat","pop","IS_IPAD","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","freeze","_typeof","iterator","obj","constructor","classCallCheck","instance","Constructor","inherits","subClass","superClass","create","setPrototypeOf","__proto__","possibleConstructorReturn","self","ReferenceError","taggedTemplateLiteralLoose","strings","raw","keys","object","isObject","each","fn","forEach","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","isArray","JSON","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","removeClass","classToRemove","remove","split","c","toggleClass","classToToggle","predicate","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","round","getPointerPosition","event","position","boxW","offsetWidth","boxH","offsetHeight","boxY","boxX","pageY","pageX","changedTouches","max","min","isTextNode","emptyEl","removeChild","normalizeContent","createTextNode","node","insertContent","isSingleLeftClick","button","buttons","$","$$","Dom","_guid","newGUID","elData","elIdAttr","Date","getTime","getData","id","hasData","removeData","_cleanUpEvents","elem","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","addEventListener","passiveEvents","on","guid","hash","handlersCopy","slice","m","n","options","passive","attachEvent","removeType","t","splice","trigger","elemData","ownerDocument","bubbles","targetData","one","func","Events","_windowLoaded","videojs$2","autoSetup","vids","getElementsByTagName","audios","divs","mediaEls","_i","_e","_i2","_e2","_i3","_e3","mediaEl","autoSetupTimeout","player","wait","vjs","setTimeout","readyState","createStyleElement","setTextContent","styleSheet","cssText","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","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","TextTrackList","nonLanguageTextTrackKind","kind","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","captions","main","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","h","gm","gh","Infinity","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","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","getEventHash","Plugin","VERSION","isBasic","p","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","usingPlugin","hasPlugin","_inherits","super_","extendFn","subClassMethods","HTMLVideoElement","normalizeId","getPlayer","hooks","hookFunction","PlayerComponent","hooks_","hook","hookOnce","original","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","comp","writeable","extend","addLanguage","_mergeOptions","createTimeRange","dom","ES","leftWhitespace","rightWhitespace","S","headers","row","ERROR_MESSAGE","funcType","that","binder","boundLength","boundArgs","Empty","siteTraffic","series","chartOptions","grid","padding","chart","dropShadow","toolbar","sparkline","stroke","curve","xaxis","colors","gradient","shade","gradientToColors","shadeIntensity","opacityFrom","opacityTo","stops","markers","size","hover","tooltip","activeUsers","newsletter","revenueComparisonLine","dashArray","borderColor","legend","inverseColors","labels","cssClass","axisTicks","categories","axisBorder","yaxis","tickAmount","formatter","subscribersGained","dataLabels","lines","offsetX","offsetY","quarterlySales","revenueGenerated","ordersRecevied","salesBar","states","plotOptions","columnWidth","distributed","endingShape","goalOverviewRadialBar","radialBar","startAngle","endAngle","hollow","background","strokeWidth","lineCap","supportTrackerRadialBar","chartData","totalTickets","openTickets","lastResponse","statisticsRadar","radar","polygons","strokeColors","connectorColors","sessionsByDeviceDonut","analyticsData","device","icon","sessionsPercentgae","comparedResultPercentage","comparedResult","productOrdersRadialBar","margin","total","breakpoint","customersPie","salesLine","clientRetentionBar","stacked","browserAnalytics","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","keysShim","isArgs","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","isArguments","isString","theKeys","skipProto","skipConstructor","define","getPolyfill","polyfill","modulo","remain","win","global","$SyntaxError","predicates","recordType","argumentName","isFinite","boundTrim","forEachArray","array","receiver","len","forEachString","forEachObject","thisArg","_objCreate","F","ParsingError","errorData","parseTimeStamp","computeSeconds","f","Settings","parseOptions","keyValueDelim","groupDelim","groups","kv","parseCue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","region","alt","vals","vals0","integer","line","lineAlign","snapToLines","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","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","decoder","buffer","TextDecoder","reportOrThrowError","collectNextLine","pos","parseRegion","xy","anchor","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","ontimestampmap","parseHeader","stream","alreadyCollectedLine","hasSubstring","callee","origKeys","originalKeys","keysWorksWithArguments","d","__esModule","default","customEventName","required","events","globalOptions","progressControl","fullscreenToggle","volumeMenuButton","globalEvents","reseted","mounted","initialize","beforeDestroy","$refs","$emit","__ob__","$nextTick","watch","deep","install","videoPlayer","render","staticRenderFns","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","beforeCreate","_injectStyles","esModule","$createElement","_self","_c","staticClass","ref","generator","asyncFn","asyncGen","ThrowTypeError","hasSymbols","getProto","getPrototypeOf","generatorFunction","asyncFunction","asyncGenFunction","asyncGenIterator","TypedArray","Uint8Array","INTRINSICS","ArrayBuffer","entries","asyncIterator","Atomics","DataView","decodeURI","encodeURI","eval","EvalError","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Map","valueOf","reject","Proxy","RangeError","Reflect","Set","SharedArrayBuffer","Uint8ClampedArray","Uint16Array","Uint32Array","URIError","WeakMap","WeakSet","allowMissing","parseHeaders","xtend","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","origDefineProperty","arePropertyDescriptorsSupported","_","supportsDescriptors","defineProperties","getOwnPropertySymbols","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll"],"mappings":"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","file":"js/chunk-35e03589.371ec97e.js","sourcesContent":["'use strict';\n\nvar GetIntrinsic = require('./GetIntrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $String = GetIntrinsic('%String%');\n\nvar assertRecord = require('./helpers/assertRecord');\nvar $isNaN = require('./helpers/isNaN');\nvar $isFinite = require('./helpers/isFinite');\n\nvar sign = require('./helpers/sign');\nvar mod = require('./helpers/mod');\n\nvar IsCallable = require('is-callable');\nvar toPrimitive = require('es-to-primitive/es5');\n\nvar has = require('has');\n\n// https://es5.github.io/#x9\nvar ES5 = {\n\tToPrimitive: toPrimitive,\n\n\tToBoolean: function ToBoolean(value) {\n\t\treturn !!value;\n\t},\n\tToNumber: function ToNumber(value) {\n\t\treturn +value; // eslint-disable-line no-implicit-coercion\n\t},\n\tToInteger: function ToInteger(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number)) { return 0; }\n\t\tif (number === 0 || !$isFinite(number)) { return number; }\n\t\treturn sign(number) * Math.floor(Math.abs(number));\n\t},\n\tToInt32: function ToInt32(x) {\n\t\treturn this.ToNumber(x) >> 0;\n\t},\n\tToUint32: function ToUint32(x) {\n\t\treturn this.ToNumber(x) >>> 0;\n\t},\n\tToUint16: function ToUint16(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }\n\t\tvar posInt = sign(number) * Math.floor(Math.abs(number));\n\t\treturn mod(posInt, 0x10000);\n\t},\n\tToString: function ToString(value) {\n\t\treturn $String(value);\n\t},\n\tToObject: function ToObject(value) {\n\t\tthis.CheckObjectCoercible(value);\n\t\treturn $Object(value);\n\t},\n\tCheckObjectCoercible: function CheckObjectCoercible(value, optMessage) {\n\t\t/* jshint eqnull:true */\n\t\tif (value == null) {\n\t\t\tthrow new $TypeError(optMessage || 'Cannot call method on ' + value);\n\t\t}\n\t\treturn value;\n\t},\n\tIsCallable: IsCallable,\n\tSameValue: function SameValue(x, y) {\n\t\tif (x === y) { // 0 === -0, but they are not identical.\n\t\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\t\treturn true;\n\t\t}\n\t\treturn $isNaN(x) && $isNaN(y);\n\t},\n\n\t// https://www.ecma-international.org/ecma-262/5.1/#sec-8\n\tType: function Type(x) {\n\t\tif (x === null) {\n\t\t\treturn 'Null';\n\t\t}\n\t\tif (typeof x === 'undefined') {\n\t\t\treturn 'Undefined';\n\t\t}\n\t\tif (typeof x === 'function' || typeof x === 'object') {\n\t\t\treturn 'Object';\n\t\t}\n\t\tif (typeof x === 'number') {\n\t\t\treturn 'Number';\n\t\t}\n\t\tif (typeof x === 'boolean') {\n\t\t\treturn 'Boolean';\n\t\t}\n\t\tif (typeof x === 'string') {\n\t\t\treturn 'String';\n\t\t}\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type\n\tIsPropertyDescriptor: function IsPropertyDescriptor(Desc) {\n\t\tif (this.Type(Desc) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tvar allowed = {\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Get]]': true,\n\t\t\t'[[Set]]': true,\n\t\t\t'[[Value]]': true,\n\t\t\t'[[Writable]]': true\n\t\t};\n\n\t\tfor (var key in Desc) { // eslint-disable-line\n\t\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tvar isData = has(Desc, '[[Value]]');\n\t\tvar IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');\n\t\tif (isData && IsAccessor) {\n\t\t\tthrow new $TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t\t}\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.1\n\tIsAccessorDescriptor: function IsAccessorDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.2\n\tIsDataDescriptor: function IsDataDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.3\n\tIsGenericDescriptor: function IsGenericDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (!this.IsAccessorDescriptor(Desc) && !this.IsDataDescriptor(Desc)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.4\n\tFromPropertyDescriptor: function FromPropertyDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn Desc;\n\t\t}\n\n\t\tassertRecord(this, 'Property Descriptor', 'Desc', Desc);\n\n\t\tif (this.IsDataDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tvalue: Desc['[[Value]]'],\n\t\t\t\twritable: !!Desc['[[Writable]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else if (this.IsAccessorDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tget: Desc['[[Get]]'],\n\t\t\t\tset: Desc['[[Set]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new $TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor');\n\t\t}\n\t},\n\n\t// https://ecma-international.org/ecma-262/5.1/#sec-8.10.5\n\tToPropertyDescriptor: function ToPropertyDescriptor(Obj) {\n\t\tif (this.Type(Obj) !== 'Object') {\n\t\t\tthrow new $TypeError('ToPropertyDescriptor requires an object');\n\t\t}\n\n\t\tvar desc = {};\n\t\tif (has(Obj, 'enumerable')) {\n\t\t\tdesc['[[Enumerable]]'] = this.ToBoolean(Obj.enumerable);\n\t\t}\n\t\tif (has(Obj, 'configurable')) {\n\t\t\tdesc['[[Configurable]]'] = this.ToBoolean(Obj.configurable);\n\t\t}\n\t\tif (has(Obj, 'value')) {\n\t\t\tdesc['[[Value]]'] = Obj.value;\n\t\t}\n\t\tif (has(Obj, 'writable')) {\n\t\t\tdesc['[[Writable]]'] = this.ToBoolean(Obj.writable);\n\t\t}\n\t\tif (has(Obj, 'get')) {\n\t\t\tvar getter = Obj.get;\n\t\t\tif (typeof getter !== 'undefined' && !this.IsCallable(getter)) {\n\t\t\t\tthrow new TypeError('getter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Get]]'] = getter;\n\t\t}\n\t\tif (has(Obj, 'set')) {\n\t\t\tvar setter = Obj.set;\n\t\t\tif (typeof setter !== 'undefined' && !this.IsCallable(setter)) {\n\t\t\t\tthrow new $TypeError('setter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Set]]'] = setter;\n\t\t}\n\n\t\tif ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {\n\t\t\tthrow new $TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t\t}\n\t\treturn desc;\n\t}\n};\n\nmodule.exports = ES5;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar zeroWidthSpace = '\\u200b';\n\nmodule.exports = function getPolyfill() {\n\tif (String.prototype.trim && zeroWidthSpace.trim() === zeroWidthSpace) {\n\t\treturn String.prototype.trim;\n\t}\n\treturn implementation;\n};\n","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 = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isCallable(value) {\n\tif (!value) { return false; }\n\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\tif (typeof value === 'function' && !value.prototype) { return true; }\n\tif (hasToStringTag) { return tryFunctionObject(value); }\n\tif (isES6ClassFn(value)) { return false; }\n\tvar strClass = toStr.call(value);\n\treturn strClass === fnClass || strClass === genClass;\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = require('./helpers/isPrimitive');\n\nvar isCallable = require('is-callable');\n\n// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function (O) {\n\t\tvar actualHint;\n\t\tif (arguments.length > 1) {\n\t\t\tactualHint = arguments[1];\n\t\t} else {\n\t\t\tactualHint = toStr.call(O) === '[object Date]' ? String : Number;\n\t\t}\n\n\t\tif (actualHint === String || actualHint === Number) {\n\t\t\tvar methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\t\t\tvar value, i;\n\t\t\tfor (i = 0; i < methods.length; ++i) {\n\t\t\t\tif (isCallable(O[methods[i]])) {\n\t\t\t\t\tvalue = O[methods[i]]();\n\t\t\t\t\tif (isPrimitive(value)) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new TypeError('No default value');\n\t\t}\n\t\tthrow new TypeError('invalid [[DefaultValue]] hint supplied');\n\t}\n};\n\n// http://ecma-international.org/ecma-262/5.1/#sec-9.1\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tif (arguments.length > 1) {\n\t\treturn ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input);\n};\n","/**\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'