{"version":3,"sources":["webpack:///./node_modules/core-js/internals/same-value.js","webpack:///./node_modules/tsml/tsml.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./src/components/iBeauty/Customer/CustomerNursingLog.vue?4e85","webpack:///src/components/iBeauty/Customer/CustomerNursingLog.vue","webpack:///./src/components/iBeauty/Customer/CustomerNursingLog.vue?9554","webpack:///./src/components/iBeauty/Customer/CustomerNursingLog.vue","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/video.js/dist/video.cjs.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/parse-headers/parse-headers.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/core-js/modules/es.string.search.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./src/api/CRM/Customer/customerNursingLog.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack:///./node_modules/global/window.js","webpack:///./src/components/iBeauty/Customer/CustomerNursingLog.vue?0fde","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/vue-video-player/dist/vue-video-player.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/@vue/babel-preset-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/xhr/index.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/core-js/modules/es.array.slice.js"],"names":["module","exports","Object","is","x","y","clean","s","replace","sa","i","arguments","length","window","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","render","_vm","this","_h","$createElement","_c","_self","directives","name","rawName","value","expression","staticClass","staticStyle","_l","item","index","key","attrs","_v","_s","CreatedByName","JobName","CreatedOn","NursingLogContent","media","mIndex","MediaType","MediaURL","srcList","slot","_e","on","$event","onVideoPlayer","ThumbnailUrl","isLike","likeLoading","giveLikeClick","thumbName","Comment","comment","model","callback","$$v","commentContent","commentLoading","commentClick","videoVisible","openedVideo","videoClosed","ref","playerOptions","staticRenderFns","Enumerable","props","customerID","Number","components","videoPlayer","data","loading","PageNum","nursingTotal","nursingLostList","currentEmpID","storage","playbackRates","autoplay","muted","loop","preload","language","aspectRatio","fluid","sources","hls","poster","width","document","documentElement","clientWidth","notSupportedMessage","controlBar","timeDivider","durationDisplay","remainingTimeDisplay","progressControl","fullscreenToggle","computed","methods","scrollbar_loadmore","that","getNursingLogList","src","url","$nextTick","$refs","player","play","pause","getNursingLogAddThumbsUp","getNursingLogAddComment","$message","error","params","Name","StartDate","EndDate","CustomerID","NursingLogID","ID","CommentType","AudioURL","ReplyID","clearListData","watch","beforeCreate","created","beforeMount","mounted","JSON","parse","localStorage","getItem","EmployeeID","beforeUpdate","updated","beforeDestroy","destroyed","component","charAt","InternalStateModule","defineIterator","STRING_ITERATOR","setInternalState","set","getInternalState","getterFor","String","iterated","type","string","point","state","undefined","done","_interopDefault","ex","tsml","safeParseTuple","xhr","vtt","version","USER_AGENT","navigator","userAgent","webkitVersionMap","exec","appleWebkitVersion","parseFloat","pop","IS_IPAD","test","IS_IPHONE","IS_IPOD","IS_IOS","IOS_VERSION","match","IS_ANDROID","ANDROID_VERSION","major","minor","IS_OLD_ANDROID","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IS_IE8","IE_VERSION","result","IS_SAFARI","IS_ANY_SAFARI","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","BACKGROUND_SIZE_SUPPORTED","createElement","style","browser","freeze","_typeof","Symbol","iterator","obj","constructor","prototype","classCallCheck","instance","Constructor","TypeError","inherits","subClass","superClass","create","enumerable","writable","configurable","setPrototypeOf","__proto__","possibleConstructorReturn","self","call","ReferenceError","taggedTemplateLiteralLoose","strings","raw","toString","keys","object","isObject","each","fn","forEach","reduce","initial","accum","assign","target","_len","Array","_key","apply","concat","source","isPlain","history","LogByTypeFactory","log","level","args","stringify","lvl","levels","lvlRegExp","RegExp","unshift","toUpperCase","push","console","info","map","a","isArray","join","createLogger$1","logByType","createLogger","subname","all","off","debug","warn","DEFAULT","hasOwnProperty","Error","filter","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","computedStyle","el","prop","getComputedStyle","cs","currentStyle","_templateObject","isNonBlankString","str","throwIfWhitespace","classRegExp","className","isEl","nodeType","isInFrame","parent","createQuerier","method","selector","context","querySelector","ctx","createEl","tagName","properties","attributes","content","getOwnPropertyNames","propName","val","indexOf","setAttribute","textContent","attrName","appendContent","text","innerText","prependTo","child","firstChild","insertBefore","appendChild","hasClass","element","classToCheck","classList","contains","addClass","classToAdd","add","trim","removeClass","classToRemove","remove","split","c","toggleClass","classToToggle","predicate","has","setAttributes","attrValue","removeAttribute","getAttributes","tag","knownBooleans","attrVal","getAttribute","attribute","blockTextSelection","body","focus","onselectstart","unblockTextSelection","getBoundingClientRect","parentNode","rect","k","height","findPosition","box","left","top","docEl","clientLeft","scrollLeft","pageXOffset","clientTop","scrollTop","pageYOffset","Math","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","e","_cleanUpEvents","elem","handlers","removeEventListener","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","returnTrue","returnFalse","isPropagationStopped","old","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","isImmediatePropagationStopped","clientX","doc","clientY","which","charCode","keyCode","_supportsPassive","opts","defineProperty","get","addEventListener","passiveEvents","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","_i2","_e2","_i3","_e3","mediaEl","autoSetupTimeout","wait","vjs","setTimeout","readyState","createStyleElement","setTextContent","styleSheet","cssText","bind","uid","bound","throttle","last","now","throttled","debounce","immediate","timeout","cancel","clearTimeout","debounced","_later","EventTarget","allowedEvents_","ael","dispatchEvent","isEvented","eventBusEl_","every","isValidEventType","validateTarget","nodeName","validateEventType","validateListener","listener","normalizeListenArgs","isTargetingSelf","shift","listen","EventedMixin","_this","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_this2","_normalizeListenArgs2","wrapper","largs","targetOrType","typeOrListener","evented","eventBusKey","StatefulMixin","setState","stateUpdates","changes","from","to","stateful","defaultState","handleStateChanged","toTitleCase","titleCaseEquals","str1","str2","mergeOptions","Component","ready","player_","options_","id_","name_","el_","children_","childIndex_","childNameIndex_","initChildren","reportTouchActivity","enableTouchActivity","dispose","localize","tokens","defaultValue","code","languages","primaryCode","primaryLang","localizedString","ret","contentEl","contentEl_","children","getChildById","getChild","addChild","componentName","componentClassName","componentClass","ComponentClass","getComponent","childNodes","refNode","childFound","compEl","parentOptions","handleAdd","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","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ESC","ModalDialog","_Component","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","role","descEl_","description","tabIndex","label","previouslyActiveEl_","handleKeyPress","close","desc","open","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","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","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","parseUrl","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","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_","setSrc","backgroundImage","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","color","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","modes","trackList","userPref","selectedLanguage","firstDesc","firstCaptions","preferredTrack","clearDisplay","processCues","descriptionsTrack","captionsSubtitlesTrack","updateForTrack","textTrackSettings","overrides","getValues","cueDiv","displayState","textOpacity","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","LoadingSpinner","isAudio","playerType","dir","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","cb","playToggle","playFocus","CloseButton","PlayToggle","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","seconds","guide","floor","h","gm","gh","isNaN","Infinity","implementation","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","throttledUpdateContent","updateContent","plainName","labelText_","updateTextNode_","textNode_","formattedTime_","formatTime_","time","updateFormattedTime_","formattedTime","CurrentTimeDisplay","_TimeDisplay","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","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","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","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","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","setItem","removeItem","ttDisplay","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unobserve","disconnect","resizeObserver","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","cloneNode","dummy","docFrag","createDocumentFragment","Element","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","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","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_","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_","links","linkEl","_dimension","privDimension","updateStyleEl_","parsedVal","ratio","aspectRatio_","idClass","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","techOptions","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_","_this11","sourceTech","currentSources","currentType","techAutoplay","newPoster","usingNativeControls_","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","inactivityTimeout","isAudio_","_ref3","_ref3$track","toJSON","createModal","_this12","modal","updateCurrentBreakpoint_","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","current","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","html5","flash","userLanguage","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","createPluginFactory","PluginSubClass","Function","getEventHash","Plugin","VERSION","isBasic","p","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","usingPlugin","hasPlugin","_inherits","super_","extendFn","subClassMethods","HTMLVideoElement","normalizeId","getPlayer","hooks","hookFunction","PlayerComponent","hooks_","hook","hookOnce","original","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","comp","writeable","extend","addLanguage","_mergeOptions","createTimeRange","dom","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","toLength","createProperty","getIteratorMethod","arrayLike","step","O","C","argumentsLength","mapfn","mapping","iteratorMethod","headers","headersArr","row","isFunction","alert","confirm","prompt","fixRegExpWellKnownSymbolLogic","anObject","requireObjectCoercible","sameValue","regExpExec","SEARCH","nativeSearch","maybeCallNative","regexp","searcher","res","rx","S","previousLastIndex","lastIndex","SafeParseTuple","reviver","iteratorClose","ENTRIES","IndexedObject","toIndexedObject","arrayMethodIsStrict","nativeJoin","ES3_STRINGS","STRICT_METHOD","proto","forced","separator","checkCorrectnessOfIteration","INCORRECT_ITERATION","iterable","stat","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","DESCRIPTORS","f","FunctionPrototype","FunctionPrototypeToString","nameRE","NAME","getCustomerNursingLog","API","_arrayLikeToArray","arr","len","arr2","win","global","_objCreate","F","ParsingError","errorData","parseTimeStamp","input","computeSeconds","Settings","parseOptions","keyValueDelim","groupDelim","groups","kv","parseCue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","region","alt","vals","vals0","integer","line","lineAlign","snapToLines","size","middle","positionAlign","skipWhitespace","substr","BadSignature","dflt","defaultKey","ESCAPE","TAG_NAME","u","ruby","rt","lang","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","unescape1","unescape","shouldAdd","localName","annotation","rootDiv","tagStack","createProcessingInstruction","strongRTLRanges","isStrongRTLChar","currentRange","determineBidi","nodeStack","pushNodes","nextTextNode","charCodeAt","computeLinePos","textTrackList","mediaElement","count","StyleBox","CueStyleBox","styleOptions","styles","display","writingMode","unicodeBidi","applyStyles","textAlign","font","whiteSpace","direction","stylesunicodeBidi","textPos","formatStyle","move","BoxPosition","lh","offsetTop","rects","getClientRects","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","maxPosition","initialAxis","abs","ceil","reverse","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","b2","boxes","container","intersectArea","reference","getSimpleBoxPosition","decode","decodeURIComponent","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","overlay","paddedOverlay","shouldCompute","margin","decoder","buffer","TextDecoder","reportOrThrowError","collectNextLine","pos","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","ontimestampmap","parseHeader","stream","alreadyCollectedLine","hasSubstring","_arrayWithoutHoles","arrayLikeToArray","_iterableToArray","iter","_nonIterableSpread","_toConsumableArray","arrayWithoutHoles","iterableToArray","unsupportedIterableToArray","nonIterableSpread","defineWellKnownSymbol","d","__esModule","default","customEventName","required","events","globalOptions","volumeMenuButton","globalEvents","reseted","initialize","$emit","__ob__","deep","install","_compiled","functional","_scopeId","$vnode","ssrContext","__VUE_SSR_CONTEXT__","_registeredComponents","_ssrRegister","_injectStyles","esModule","DOMIterables","ArrayIteratorMethods","createNonEnumerableProperty","wellKnownSymbol","ITERATOR","TO_STRING_TAG","ArrayValues","COLLECTION_NAME","Collection","CollectionPrototype","METHOD_NAME","_unsupportedIterableToArray","minLen","copyConstructorProperties","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","symbolPrototype","symbolToString","native","symbol","valueOf","parseHeaders","xtend","forEachArray","array","isEmpty","initParams","createXHR","_createXHR","called","readystatechange","loadFunc","getBody","responseText","getXml","isJson","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","useXDR","rawRequest","getAllResponseHeaders","XDomainRequest","XMLHttpRequest","onreadystatechange","onprogress","onabort","ontimeout","username","password","withCredentials","abort","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","doccy","minDoc","topLevel","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","defineProperties","toAbsoluteIndex","arrayMethodHasSpeciesSupport","arrayMethodUsesToLength","HAS_SPECIES_SUPPORT","USES_TO_LENGTH","ACCESSORS","0","SPECIES","nativeSlice","fin"],"mappings":"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","file":"chunk-153125be.1739001309915.js","sourcesContent":["// `SameValue` abstract operation\n// https://tc39.es/ecma262/#sec-samevalue\nmodule.exports = Object.is || function is(x, y) {\n // eslint-disable-next-line no-self-compare\n return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;\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}","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"loading\",rawName:\"v-loading\",value:(_vm.loading),expression:\"loading\"}],staticClass:\"CustomerNursingLog\"},[_c('el-scrollbar',{directives:[{name:\"scrollbar_loadmore\",rawName:\"v-scrollbar_loadmore\",value:(_vm.scrollbar_loadmore),expression:\"scrollbar_loadmore\"}],staticStyle:{\"height\":\"460px\"}},_vm._l((_vm.nursingLostList),function(item,index){return _c('div',{key:index},[_c('el-row',{staticClass:\"pad_5 backf5f7fa dis_flex flex_y_center\"},[_c('el-col',{staticClass:\"dis_flex flex_dir_row flex_y_center\",attrs:{\"span\":16}},[_c('div',{staticClass:\" font_14 color_333\"},[_c('div',[_vm._v(_vm._s(item.CreatedByName))]),_c('div',{staticClass:\"martp_5 color_666 \"},[_c('i',{staticClass:\"el-icon-s-custom color_999 marrt_5\"}),_vm._v(_vm._s(item.JobName))])])]),_c('el-col',{staticClass:\"text_right \",staticStyle:{\"height\":\"100%\"},attrs:{\"span\":8}},[_vm._v(_vm._s(item.CreatedOn))])],1),_c('el-row',{staticClass:\"pad_5\"},[_c('el-col',{attrs:{\"span\":24}},[_vm._v(_vm._s(item.NursingLogContent))])],1),_c('el-row',{staticClass:\"pad_5\"},[_c('el-col',{staticClass:\"dis_flex flex_dir_row \",attrs:{\"span\":24}},_vm._l((item.Media),function(media,mIndex){return _c('div',{key:'media' + mIndex,staticClass:\"marrt_10\",staticStyle:{\"width\":\"100px\",\"height\":\"100px\"}},[(media.MediaType == 10)?_c('el-image',{staticClass:\"marrt_10\",staticStyle:{\"width\":\"100px\",\"height\":\"100px\"},attrs:{\"src\":media.MediaURL,\"preview-src-list\":item.srcList,\"fit\":\"cover\",\"z-index\":5000}},[_c('div',{staticClass:\"image-slot\",attrs:{\"slot\":\"placeholder\"},slot:\"placeholder\"},[_c('i',{staticClass:\"el-icon-picture\",staticStyle:{\"width\":\"100px\",\"height\":\"100px\"}})])]):_vm._e(),(media.MediaType == 20)?_c('div',{staticClass:\"position_relative\",on:{\"click\":function($event){return _vm.onVideoPlayer(media.MediaURL)}}},[_c('el-image',{staticClass:\"marrt_10\",staticStyle:{\"width\":\"100px\",\"height\":\"100px\"},attrs:{\"src\":media.ThumbnailUrl,\"fit\":\"cover\",\"z-index\":5000}},[_c('div',{staticClass:\"image-slot\",attrs:{\"slot\":\"placeholder\"},slot:\"placeholder\"},[_c('i',{staticClass:\"el-icon-picture\",staticStyle:{\"width\":\"100px\",\"height\":\"100px\"}})])]),_c('i',{staticClass:\"el-icon-video-play position_absolute\",staticStyle:{\"font-size\":\"40px\",\"left\":\"50%\",\"top\":\"50%\",\"transform\":\"translate(-50%, -50%)\"}})],1):_vm._e()],1)}),0)],1),_c('el-row',{staticClass:\"pad_5\"},[_c('el-col',{attrs:{\"span\":24}},[_c('el-button',{attrs:{\"type\":item.isLike?'primary':'',\"icon\":\"el-icon-thumb\",\"size\":\"small\",\"loading\":_vm.likeLoading},on:{\"click\":function($event){return _vm.giveLikeClick(item)}}},[_vm._v(\"赞\")])],1)],1),(item.thumbName)?_c('el-row',{staticClass:\"pad_5\"},[_c('el-col',{attrs:{\"span\":24}},[_c('i',{staticClass:\"el-icon-thumb color_main\"}),_c('span',{staticClass:\"marlt_5 font_14 color_main\"},[_vm._v(_vm._s(item.thumbName)+\" 赞了该日志\")])])],1):_vm._e(),(item.Comment.length > 0)?_c('el-row',{staticClass:\"pad_5\"},_vm._l((item.Comment),function(comment){return _c('el-col',{key:'comment' + \"\" + (comment.CommentID),attrs:{\"span\":24}},[_c('span',{staticClass:\"color_main font_14\"},[_vm._v(_vm._s(comment.CreatedByName)+\":\")]),_c('span',{staticClass:\"marlt_5 font_14 color_666\"},[_vm._v(_vm._s(comment.Comment))])])}),1):_vm._e(),_c('el-row',{staticClass:\"pad_5\"},[_c('el-col',{attrs:{\"span\":15}},[_c('el-input',{attrs:{\"placeholder\":\"请输入评论内容\",\"size\":\"small\"},model:{value:(_vm.commentContent),callback:function ($$v) {_vm.commentContent=$$v},expression:\"commentContent\"}},[_c('template',{slot:\"append\"},[_c('el-button',{attrs:{\"size\":\"small\",\"loading\":_vm.commentLoading},on:{\"click\":function($event){return _vm.commentClick(item)}}},[_vm._v(\"发送\")])],1)],2)],1)],1)],1)}),0),_c('el-dialog',{attrs:{\"visible\":_vm.videoVisible,\"width\":\"1100px\",\"append-to-body\":\"\",\"show-close\":false,\"custom-class\":\"videoDialog\"},on:{\"update:visible\":function($event){_vm.videoVisible=$event},\"opened\":_vm.openedVideo,\"closed\":_vm.videoClosed}},[_c('div',{staticClass:\"demo\"},[_c('videoPlayer',{ref:\"videoPlayer\",staticClass:\"video-player vjs-custom-skin\",attrs:{\"playsinline\":true,\"options\":_vm.playerOptions}})],1)])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomerNursingLog.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomerNursingLog.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./CustomerNursingLog.vue?vue&type=template&id=7969fc26&\"\nimport script from \"./CustomerNursingLog.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomerNursingLog.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomerNursingLog.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\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'