{"version":3,"file":"video.min.js","sources":["node_modules/browser-pack/_prelude.js","node_modules/browser-resolve/empty.js","node_modules/define-properties/index.js","node_modules/for-each/index.js","node_modules/foreach/index.js","node_modules/function-bind/implementation.js","node_modules/function-bind/index.js","node_modules/global/document.js","node_modules/global/window.js","node_modules/is-function/index.js","node_modules/lodash-compat/date/now.js","node_modules/lodash-compat/function/debounce.js","node_modules/lodash-compat/function/restParam.js","node_modules/lodash-compat/function/throttle.js","node_modules/lodash-compat/internal/arrayCopy.js","node_modules/lodash-compat/internal/arrayEach.js","node_modules/lodash-compat/internal/baseCopy.js","node_modules/lodash-compat/internal/baseFor.js","node_modules/lodash-compat/internal/baseForIn.js","node_modules/lodash-compat/internal/baseMerge.js","node_modules/lodash-compat/internal/baseMergeDeep.js","node_modules/lodash-compat/internal/baseProperty.js","node_modules/lodash-compat/internal/bindCallback.js","node_modules/lodash-compat/internal/createAssigner.js","node_modules/lodash-compat/internal/createBaseFor.js","node_modules/lodash-compat/internal/getLength.js","node_modules/lodash-compat/internal/getNative.js","node_modules/lodash-compat/internal/isArrayLike.js","node_modules/lodash-compat/internal/isHostObject.js","node_modules/lodash-compat/internal/isIndex.js","node_modules/lodash-compat/internal/isIterateeCall.js","node_modules/lodash-compat/internal/isLength.js","node_modules/lodash-compat/internal/isObjectLike.js","node_modules/lodash-compat/internal/shimKeys.js","node_modules/lodash-compat/internal/toObject.js","node_modules/lodash-compat/lang/isArguments.js","node_modules/lodash-compat/lang/isArray.js","node_modules/lodash-compat/lang/isFunction.js","node_modules/lodash-compat/lang/isNative.js","node_modules/lodash-compat/lang/isObject.js","node_modules/lodash-compat/lang/isPlainObject.js","node_modules/lodash-compat/lang/isString.js","node_modules/lodash-compat/lang/isTypedArray.js","node_modules/lodash-compat/lang/toPlainObject.js","node_modules/lodash-compat/object/keys.js","node_modules/lodash-compat/object/keysIn.js","node_modules/lodash-compat/object/merge.js","node_modules/lodash-compat/support.js","node_modules/lodash-compat/utility/identity.js","node_modules/object-keys/index.js","node_modules/object-keys/isArguments.js","node_modules/object.assign/hasSymbols.js","node_modules/object.assign/implementation.js","node_modules/object.assign/index.js","node_modules/object.assign/polyfill.js","node_modules/object.assign/shim.js","node_modules/once/once.js","node_modules/parse-headers/parse-headers.js","node_modules/safe-json-parse/tuple.js","node_modules/trim/index.js","node_modules/tsml/tsml.js","node_modules/xhr/index.js","node_modules/xtend/immutable.js","src/js/big-play-button.js","src/js/button.js","src/js/clickable-component.js","src/js/close-button.js","src/js/component.js","src/js/control-bar/audio-track-controls/audio-track-button.js","src/js/control-bar/audio-track-controls/audio-track-menu-item.js","src/js/control-bar/control-bar.js","src/js/control-bar/fullscreen-toggle.js","src/js/control-bar/live-display.js","src/js/control-bar/mute-toggle.js","src/js/control-bar/play-toggle.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-button.js","src/js/control-bar/playback-rate-menu/playback-rate-menu-item.js","src/js/control-bar/progress-control/load-progress-bar.js","src/js/control-bar/progress-control/mouse-time-display.js","src/js/control-bar/progress-control/play-progress-bar.js","src/js/control-bar/progress-control/progress-control.js","src/js/control-bar/progress-control/seek-bar.js","src/js/control-bar/progress-control/tooltip-progress-bar.js","src/js/control-bar/spacer-controls/custom-control-spacer.js","src/js/control-bar/spacer-controls/spacer.js","src/js/control-bar/text-track-controls/caption-settings-menu-item.js","src/js/control-bar/text-track-controls/captions-button.js","src/js/control-bar/text-track-controls/chapters-button.js","src/js/control-bar/text-track-controls/chapters-track-menu-item.js","src/js/control-bar/text-track-controls/descriptions-button.js","src/js/control-bar/text-track-controls/off-text-track-menu-item.js","src/js/control-bar/text-track-controls/subtitles-button.js","src/js/control-bar/text-track-controls/text-track-button.js","src/js/control-bar/text-track-controls/text-track-menu-item.js","src/js/control-bar/time-controls/current-time-display.js","src/js/control-bar/time-controls/duration-display.js","src/js/control-bar/time-controls/remaining-time-display.js","src/js/control-bar/time-controls/time-divider.js","src/js/control-bar/track-button.js","src/js/control-bar/volume-control/volume-bar.js","src/js/control-bar/volume-control/volume-control.js","src/js/control-bar/volume-control/volume-level.js","src/js/control-bar/volume-menu-button.js","src/js/error-display.js","src/js/event-target.js","src/js/extend.js","src/js/fullscreen-api.js","src/js/loading-spinner.js","src/js/media-error.js","src/js/menu/menu-button.js","src/js/menu/menu-item.js","src/js/menu/menu.js","src/js/modal-dialog.js","src/js/player.js","src/js/plugins.js","src/js/popup/popup-button.js","src/js/popup/popup.js","src/js/poster-image.js","src/js/setup.js","src/js/slider/slider.js","src/js/tech/flash-rtmp.js","src/js/tech/flash.js","src/js/tech/html5.js","src/js/tech/loader.js","src/js/tech/tech.js","src/js/tracks/audio-track-list.js","src/js/tracks/audio-track.js","src/js/tracks/html-track-element-list.js","src/js/tracks/html-track-element.js","src/js/tracks/text-track-cue-list.js","src/js/tracks/text-track-display.js","src/js/tracks/text-track-list-converter.js","src/js/tracks/text-track-list.js","src/js/tracks/text-track-settings.js","src/js/tracks/text-track.js","src/js/tracks/track-enums.js","src/js/tracks/track-list.js","src/js/tracks/track.js","src/js/tracks/video-track-list.js","src/js/tracks/video-track.js","src/js/utils/browser.js","src/js/utils/buffer.js","src/js/utils/dom.js","src/js/utils/events.js","src/js/utils/fn.js","src/js/utils/format-time.js","src/js/utils/guid.js","src/js/utils/log.js","src/js/utils/merge-options.js","src/js/utils/stylesheet.js","src/js/utils/time-ranges.js","src/js/utils/to-title-case.js","src/js/utils/url.js","src/js/video.js"],"names":["f","exports","module","define","amd","g","window","global","self","this","videojs","e","t","n","r","s","o","u","a","require","i","Error","code","l","call","length",1,2,"_dereq_","keys","foreach","hasSymbols","Symbol","toStr","Object","prototype","toString","isFunction","fn","arePropertyDescriptorsSupported","obj","defineProperty","enumerable","value","_","x","supportsDescriptors","object","name","predicate","configurable","writable","defineProperties","map","predicates","arguments","props","concat","getOwnPropertySymbols","object-keys",3,"forEach","list","iterator","context","TypeError","forEachArray","forEachString","forEachObject","array","len","hasOwnProperty","string","k","is-function",4,"hasOwn","ctx",5,"ERROR_MESSAGE","slice","Array","funcType","that","target","bound","args","binder","result","apply","boundLength","Math","max","boundArgs","push","Empty",6,"implementation","Function","bind","./implementation",7,"topLevel","minDoc","document","doccy","min-document",8,9,"setTimeout","alert","confirm","prompt",10,"getNative","nativeNow","Date","now","getTime","../internal/getNative",11,"debounce","func","wait","options","cancel","timeoutId","clearTimeout","maxTimeoutId","lastCalled","trailingCall","undefined","complete","isCalled","id","thisArg","delayed","remaining","stamp","maxDelayed","trailing","debounced","leading","maxWait","leadingCall","FUNC_ERROR_TEXT","isObject","nativeMax","../date/now","../lang/isObject",12,"restParam","start","index","rest","otherArgs",13,"throttle","./debounce",14,"arrayCopy","source",15,"arrayEach","iteratee",16,"baseCopy","key",17,"createBaseFor","baseFor","./createBaseFor",18,"baseForIn","keysIn","../object/keysIn","./baseFor",19,"baseMerge","customizer","stackA","stackB","isSrcArr","isArrayLike","isArray","isTypedArray","srcValue","isObjectLike","baseMergeDeep","isCommon","../lang/isArray","../lang/isTypedArray","../object/keys","./arrayEach","./baseMergeDeep","./isArrayLike","./isObjectLike",20,"mergeFunc","isPlainObject","isArguments","toPlainObject","../lang/isArguments","../lang/isPlainObject","../lang/toPlainObject","./arrayCopy",21,"baseProperty","toObject","./toObject",22,"bindCallback","argCount","identity","collection","accumulator","other","../utility/identity",23,"createAssigner","assigner","sources","guard","isIterateeCall","../function/restParam","./bindCallback","./isIterateeCall",24,"fromRight","keysFunc","iterable",25,"getLength","./baseProperty",26,"isNative","../lang/isNative",27,"isLength","./getLength","./isLength",28,"isHostObject",29,"isIndex","reIsUint","test","MAX_SAFE_INTEGER",30,"type","./isIndex",31,32,33,"shimKeys","propsLength","allowIndexes","isString","objectProto","../lang/isString",34,"support","unindexedChars","charAt","../support",35,"propertyIsEnumerable","../internal/isArrayLike","../internal/isObjectLike",36,"arrayTag","objToString","nativeIsArray","../internal/isLength",37,"funcTag","./isObject",38,"reIsNative","fnToString","reIsHostCtor","RegExp","replace","../internal/isHostObject","./isFunction",39,40,"Ctor","objectTag","constructor","ownLast","subValue","../internal/baseForIn","./isArguments",41,"stringTag",42,"typedArrayTags","argsTag","boolTag","dateTag","errorTag","mapTag","numberTag","regexpTag","setTag","weakMapTag","arrayBufferTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag",43,"../internal/baseCopy",44,"nativeKeys","enumPrototypes","../internal/shimKeys",45,"proto","isProto","skipIndexes","skipErrorProps","enumErrorProps","errorProto","skipProto","nonEnumShadows","tag","stringProto","nonEnums","nonEnumProps","shadowProps","nonEnum","String","toLocaleString","valueOf","../internal/arrayEach","../internal/isIndex","../lang/isFunction",46,"merge","../internal/baseMerge","../internal/createAssigner",47,"arrayProto","splice","0","y","spliceObjects",48,49,"has","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","theKeys","j","skipConstructor","shim","keysWorksWithArguments","originalKeys",50,"str","callee",51,"sym","symVal","getOwnPropertyNames","syms","getOwnPropertyDescriptor","descriptor",52,"canBeObject","propIsEnumerable","objTarget","./hasSymbols","function-bind",53,"getPolyfill","./polyfill","./shim","define-properties",54,"lacksProperEnumerationOrder","assign","letters","split","actual","assignHasPendingExceptions","preventExtensions","thrower",55,"polyfill",56,"once","called",57,"trim","arg","headers","row","indexOf","toLowerCase","for-each",58,"SafeParseTuple","reviver","error","json","JSON","parse","err",59,"left","right",60,"clean","sa",61,"isEmpty","initParams","uri","callback","params","xtend","createXHR","_createXHR","readystatechange","xhr","readyState","loadFunc","getBody","body","response","responseType","responseText","responseXML","isJson","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","url","rawRequest","getAllResponseHeaders","parseHeaders","cors","XDomainRequest","XMLHttpRequest","data","sync","stringify","onreadystatechange","onload","onerror","onprogress","ontimeout","open","username","password","withCredentials","timeout","abort","setRequestHeader","beforeSend","send","noop","toUpperCase","global/window","parse-headers",62,"extend","_componentJs2","_interopRequireDefault","_componentJs","_classCallCheck","BigPlayButton","_Button","player","buildCSSClass","__esModule","newObj","Constructor","instance","_inherits","subClass","superClass","create","setPrototypeOf","__proto__","_clickableComponentJs2","_clickableComponentJs","_objectAssign","attributes","className","_objectAssign2","tabIndex","role","_utilsLogJs2","warn","_component2","addChild","child","default","_component","ClickableComponent","_Component","createEl","el","createControlTextEl","controlTextEl_","controlText","text","setAttribute","localizedText","removeClass","el_","disable","handleFocus","Events","on","_globalDocument2","Fn","handleKeyPress","handleClick","event","CloseButton","_interopRequireWildcard","_globalWindow2","_globalWindow","Dom","_utilsDomJs","Component","player_","id_","Guid","newGUID","childIndex_","childNameIndex_","reportTouchActivity","trigger","bubbles","children_","dispose","removeElData","tagName","properties","localize","languages","language","children","getChildById","componentName","ComponentClass","getComponent","componentClassName","component","removeChild","getChild","childFound","initChildren","opts","parentOptions","newChild","_this","workingChildren","Tech","options_","filter","some","wchild","handleAdd","first","second","removeOnDispose","_this2","off","cleanRemover","guid","third","nodeName","one","_this3","_arguments","newFunc","ready","isReady_","triggerReady","readyQueue","readyQueue_","$$","selector","contentEl","hasClass","classToCheck","hasElClass","addElClass","classToAdd","toggleClass","classToToggle","toggleElClass","show","dimension","num","skipListeners","widthOrHeight","val","style","computedWidthOrHeight","getComputedStyle","computedStyle","parseFloat","width","currentDimension","height","currentWidth","emitTapEvents","touchStart","touchTimeThreshold","couldBeTap","touches","firstTouch","xdiff","pageX","touchDistance","tapMovementThreshold","noTap","touchTime","enableTouchActivity","report","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","intervalId","comp","init","subObj","_name","_audioTrackMenuItemJs","AudioTrackButton","_TrackButton","createItems","tracks","audioTracks","track","_utilsFnJs","AudioTrackMenuItem","_MenuItem","label","selected","enabled","removeEventListener","changeHandler","_spacerControlsCustomControlSpacerJs","ControlBar","FullscreenToggle","isFullscreen","updateShowing","LiveDisplay","contentEl_","innerHTML","aria-live","MuteToggle","update","tech_","addClass","vol","muted","level","handlePlay","handlePause","PlayToggle","play","pause","_menuMenuJs2","_menuMenuJs","PlaybackRateMenuButton","_MenuButton","updateVisibility","appendChild","labelEl_","menu","playbackRate","currentRate","newRate","playbackRates","playerOptions","playbackRateSupported","updateLabel","PlaybackRateMenuItem","rate","buffered","percentify","time","end","percent","part","bufferedEnd","_lodashCompatFunctionThrottle2","_lodashCompatFunctionThrottle","MouseTimeDisplay","controlBar","progressControl","keepTooltipsInside","handleMouseMove","newTime","calculateDistance","duration","position","findElPosition","parentNode","_utilsFormatTimeJs2","clampedPosition","clampPosition_","playerWidth","tooltipWidth","tooltipWidthHalf","ceil","_utilsFormatTimeJs","PlayProgressBar","_mouseTimeDisplayJs","ProgressControl","_loadProgressBarJs","SeekBar","_Slider","tooltipProgressBar","updateProgress","updateAriaAttributes","tooltip","tooltipStyle","scrubbing","getCache","currentTime","getPercent","toFixed","videoWasPlaying","stepForward","stepBack","updateDataAttr","TooltipProgressBar","querySelector","CustomControlSpacer","_Spacer","Spacer","CaptionSettingsMenuItem","_TextTrackMenuItem","kind","_captionSettingsMenuItemJs2","_captionSettingsMenuItemJs","_TextTrackButton","CaptionsButton","threshold","hide","items","kind_","_textTrackMenuItemJs2","_textTrackMenuItemJs","_chaptersTrackMenuItemJs2","_chaptersTrackMenuItemJs","ChaptersButton","textTracks","createMenu","chaptersTrack","title","_utilsToTitleCaseJs2","unshift","insertElFirst","item","cues","remoteTextTrackEl","cue","mi","ChaptersTrackMenuItem","addEventListener","startTime","DescriptionsButton","disabled","enable","OffTextTrackMenuItem","handleTracksChange","_offTextTrackMenuItemJs","TextTrackButton","_offTextTrackMenuItemJs2","selectable","_globalDocument","TextTrackMenuItem","onchange","Event","dispatchEvent","updateContent","DurationDisplay","duration_","formattedTime","remainingTime","TimeDivider","TrackButton","updateHandler","_sliderSliderJs","_volumeLevelJs","updateARIAAttributes","aria-label","volume","VolumeBar","checkMuted","VolumeControl","_volumeBarJs","VolumeLevel","_volumeControlVolumeBarJs","VolumeMenuButton","inline","vertical","volumeBar","volumeUpdate","_PopupButton","orientationClass","createPopup","contentElType","attachVolumeBarEvents","popup","menuContent","handleMouseDown","ErrorDisplay","_ModalDialog","content","message","./modal-dialog","./utils/dom","./utils/merge-options",104,"_utilsEventsJs","EventTarget","allowedEvents_","ael","_utilsLog","_utilsLog2","subClassMethods","methods","FullscreenApi","apiMap","browserApi","LoadingSpinner","MediaError","errorTypes","_utilsToTitleCaseJs","MenuButton","_ClickableComponent","handleSubmenuKeyPress","which","buttonPressed_","unpressButton","preventDefault","lockShowing","focus","enabled_","MenuItem","_selected","focusedChild_","unlockShowing","stepChild","Menu","shift","ModalDialog","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","MODAL_CLASS_NAME","ESC","close","desc","fillAlways","fill","wasPlaying_","paused","ownerDocument","closeable_","_close","temp","fillWith","parentEl","empty","content_","_utilsBrowserJs","_utilsLogJs","_tracksTextTrackListConverterJs","_tracksAudioTrackListJs","_tracksVideoTrackListJs","_errorDisplayJs","_tracksTextTrackSettingsJs","tagAttributes","getElAttributes","languagesToLower","_utilsMergeOptionsJs2","plugins","playerOptionsCopy","isAudio","controls","flexNotSupported_","Player","styleEl_","players","removeAttribute","attr","attrs","playerId","defaultsStyleEl","$","head","insertBefore","nextSibling","firstChild","aspectRatio","links","getElementsByTagName","linkEl","privDimension","_dimension","parsedVal","updateStyleEl_","fluid","bool","ratio","VIDEOJS_NO_DYNAMIC_STYLE","_height","height_","techEl","_width","idClass","aspectRatio_","videoWidth","videoHeight","ratioParts","width_","ratioMultiplier","loadTech_","techName","_techTechJs2","getTech","disposeMediaElement","techName_","techOptions","nativeControlsForTouch","videoTracks","videoTracks_","textTracks_","audioTracks_","preload","loop","poster","currentType_","src","cache_","techComponent","handleTechReady_","_tracksTextTrackListConverterJs2","jsonToTextTracks","textTracksJson_","handleTechLoadStart_","handleTechWaiting_","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechEnded_","handleTechSeeking_","handleTechSeeked_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechProgress_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechError_","handleTechAbort_","handleTechStalled_","handleTechLoadedMetaData_","handleTechLoadedData_","handleTechTextTrackChange_","handleTechPosterChange_","usingNativeControls","addTechControlsListeners_","unloadTech_","removeTechControlsListeners_","handleTechClick_","handleTechTouchMove_","handleTechTouchEnd_","hasStarted","_hasStarted","hasStarted_","handleTechTap_","userActive","handleTechTouchStart_","userWasActive","handleStageClick_","handleTechSuspend_","handleTechEmptied_","handleTechTimeUpdate_","handleTechRateChange_","handleTechVolumeChange_","techCall_","techGet_","currentSrc","isScrubbing","scrubbing_","seconds","bufferedPercent","_utilsBufferJs","percentAsDecimal","fsApi","fullscreenchange","documentFullscreenChange","requestFullscreen","supportsFullScreen","exitFullscreen","isFullWindow","docOrigOverflow","documentElement","overflow","exitFullWindow","canPlayType","techOrder","tech","selectSource","techs","_ref","found","innerArray","innerChoice","tester","outerChoice","foundSourceAndTech","flip","_ref2","canPlaySource","currentTech","sourceList_","load","sourceTech","controls_","usingNativeControls_","error_","errorDisplay","ended","seeking","seekable","userActivity_","userActive_","stopPropagation","listenForUserActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseUp","inactivityTimeout","remoteTextTracks","addTextTrack","_ref3$track","languages_","toJSON","modal","tagOptions","dataSetup","_safeParseTuple","baseOptions","hasChildNodes","childNodes","childName","_playerJs","Popup","append","PosterImage","fallbackImg_","setSrc","_windowLoaded","autoSetup","vids","mediaEls","audios","mediaEl","getAttribute","autoSetupTimeout","vjs","Slider","bar","barName","playerEvent","doc","progress","percentage","handleBlur","stopImmediatePropagation","vertical_","registerComponent","FlashRtmpDecorator","Flash","streamingFormats","streamToParts","parts","connection","stream","connEnd","search","streamBegin","lastIndexOf","substring","rtmpSourceHandler","canHandleSource","attrUpper","_api","vjs_setProperty","vjs_getProperty","_tech","_utilsUrlJs","_Tech","setSource","swf","objId","techId","eventProxyFunction","errorEventProxyFunction","flashVars","wmode","embed","setCurrentTime","vjs_pause","lastSeekTarget_","currentSource_","setPoster","_utilsTimeRangesJs","createTimeRange","ranges","enterFullScreen","_tech2","_readWrite","_readOnly","_createGetter","nativeSourceHandler","guessMimeType","ext","Url","getFileExtension","video/flv","video/mp4","checkReady","onEvent","swfID","eventName","getEl","version","navigator","description","match","getEmbedCode","flashVarsString","paramsString","attrsString","flashvars","_taggedTemplateLiteralLoose","strings","raw","_techJs2","_techJs","Html5","crossoriginTracks","initNetworkState_","removeNodes","node","nodes","nodesLength","featuresNativeTextTracks","remoteTextTrackEls","addTrackElement_","hasAttribute","isCrossOrigin","trackTypes","capitalType","tl","handleTextTrackChange_","handleTextTrackChange","handleTextTrackRemove_","handleTextTrackRemove","proxyNativeTextTracks_","clone","cloneNode","createElement","browser","TOUCH_ENABLED","setElAttributes","class","settingsAttrs","overwriteAttrs","_ret","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","tt","addTrack_","handleTextTrackAdd_","removeOldTextTracks_","srcElement","handleTextTrackAdd","handleVideoTrackChange_","vt","handleVideoTrackAdd_","handleVideoTrackRemove_","handleAudioTrackChange_","audioTrackList","handleAudioTrackRemove_","removeOldTracks_","techTracks","elTracks","removeTracks","techTrack","_track","removeTrack_","removeOldVideoTracks_","setVolume","setMuted","offsetWidth","offsetHeight","video","networkState","HAVE_METADATA","webkitEnterFullScreen","exitFullScreen","webkitExitFullScreen","_src","reset","resetMediaElement","setPreload","autoplay","setAutoplay","setControls","setLoop","defaultMuted","played","addRemoteTextTrack","htmlTrackElement","srclang","removeRemoteTextTrack","trackElement","getTrackElementByTrack_","TEST_VID","isSupported","registerSourceHandler","canControlPlaybackRate","supportsNativeTextTracks","supportsTextTracks","supportsNativeVideoTracks","supportsVideoTracks","supportsNativeAudioTracks","mpegurlRE","patchCanPlayType","IS_OLD_ANDROID","mp4RE","unpatchCanPlayType","querySelectorAll","MediaLoader","_tracksVideoTrackList2","_tracksVideoTrackList","_tracksAudioTrack","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","manualProgress","stopTrackingProgress","progressInterval","numBufferedPercent","onDurationChange","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","currentTimeInterval","manuallyTriggered","clearTracks","types","initTextTrackListeners","textTrackListChanges","initTrackListeners","trackListChanges","emulateTextTracks","script","updateDisplay","textTracksChanges","mode","_tracksTextTrackList2","remoteTextTracks_","createTrackHelper","removeTrackElement_","techs_","withSourceHandlers","handler","handlers","sourceHandlers","selectSourceHandler","sh","srcObj","fnName","originalFn","disposeSourceHandler","firstLoadStartListener_","successiveLoadStartListener_","sourceHandler_","handleSource","AudioTrackList","_TrackList","IS_IE8","prop","_trackList2","changing_","disableOthers","_trackEnums","AudioTrack","_utilsMergeOptions2","AudioTrackKind","_Track","settings","newEnabled","HtmlTrackElementList","trackElements_","get","trackElements","_length2","trackElement_","_length3","HTMLTrackElement","_tracksTextTrack2","NONE","_EventTarget","TextTrackCueList","setCues_","length_","cues_","getCueById","parseInt","color","opacity","darkGray","lightGray","TextTrackDisplay","modes","captions","subtitles","firstCaptions","firstDesc","aria-atomic","clearDisplay","descriptionsTrack","captionsSubtitlesTrack","updateForTrack","overrides","getValues","_i","cueDiv","displayState","textOpacity","tryUpdateStyle","constructColor","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","fontMap","trackToJson_","ret","reduce","acc","textTracksToJson","trackObjs","trackEls","TextTrackList","rtrack","tracks_","getTrackById","getSelectedOptionValue","selectedOption","selectedOptions","selectedIndex","option","TextTrackSettings","persistTextTrackSettings","saveSettings","restoreSettings","textEdge","fgColor","bgColor","bgOpacity","setValues","values","setSelectedOption","_safeJsonParseTuple2","localStorage","getItem","ttDisplay","_textTrackCueList","_trackJs","_utilsMergeOptions","parseCues","srcContent","parser","WebVTT","Parser","vttjs","StringDecoder","errors","oncue","addCue","onparsingerror","onflush","console","groupCollapsed","flush","loadTrack","crossOrigin","_xhr2","responseBody","loaded_","loadHandler","TextTrack","TextTrackKind","TextTrackMode","default_","_textTrackCueList2","activeCues","activeCues_","timeupdateHandler","changed","set","newMode","active","ct","endTime","removeCue","_removeCue","removed","descriptions","chapters","metadata","TrackList","_eventTarget2","_eventTarget","Track","trackProps","VideoTrackList","VideoTrack","VideoTrackKind","newSelected","IS_IPAD","IS_IPHONE","USER_AGENT","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","appleWebkitVersion","bufferedDuration","_timeRangesJs","isNonBlankString","throwIfWhitespace","classRegExp","propName","_logJs2","_tsml2","_templateObject","parent","getElData","elData","elIdAttr","element","knownBooleans","attrName","attrVal","onselectstart","getBoundingClientRect","box","top","docEl","clientLeft","scrollLeft","pageXOffset","getPointerPosition","boxH","boxX","pageY","isEl","nodeType","isTextNode","_logJs","_tsml","elem","_handleMultipleEvents","dispatcher","hash","fixEvent","m","handlersCopy","isImmediatePropagationStopped","removeType","isPropagationStopped","defaultPrevented","targetData","returnTrue","returnFalse","old","relatedTarget","returnValue","cancelBubble","clientX","_cleanUpEvents","detachEvent","h","floor",146,"_logType","log","history","argsArray","isPlain","mergeOptions","destination","lodash-compat/object/merge",149,"createStyleElement","createTimeRanges","createTimeRangesObj","getRange","valueIndex","rangeIndex","parseUrl","href","addToBody","div","details","protocol",153,"getPlayers","_player2","stylesheet","_utilsStylesheetJs","_player","_tracksTextTrackJs","_tracksAudioTrackJs","_tracksVideoTrackJs","_extendJs","_lodashCompatObjectMerge","_xhr","_techTechJs","_techHtml5Js","addLanguage","setAttributes","insertContent"],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChDA;AACA;AACA;AACA;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACxIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})",null,"'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","var isFunction = require('is-function')\n\nmodule.exports = forEach\n\nvar toString = Object.prototype.toString\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction forEach(list, iterator, context) {\n if (!isFunction(iterator)) {\n throw new TypeError('iterator must be a function')\n }\n\n if (arguments.length < 3) {\n context = this\n }\n \n if (toString.call(list) === '[object Array]')\n forEachArray(list, iterator, context)\n else if (typeof list === 'string')\n forEachString(list, iterator, context)\n else\n forEachObject(list, iterator, context)\n}\n\nfunction forEachArray(array, iterator, context) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n iterator.call(context, array[i], i, array)\n }\n }\n}\n\nfunction forEachString(string, iterator, context) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n iterator.call(context, string.charAt(i), i, string)\n }\n}\n\nfunction forEachObject(object, iterator, context) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n iterator.call(context, object[k], k, object)\n }\n }\n}\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","var implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","(function (global){\nvar topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nif (typeof document !== 'undefined') {\n module.exports = document;\n} else {\n var doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n\n module.exports = doccy;\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9nbG9iYWwvZG9jdW1lbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgdG9wTGV2ZWwgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyA/IGdsb2JhbCA6XG4gICAgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cgOiB7fVxudmFyIG1pbkRvYyA9IHJlcXVpcmUoJ21pbi1kb2N1bWVudCcpO1xuXG5pZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZG9jdW1lbnQ7XG59IGVsc2Uge1xuICAgIHZhciBkb2NjeSA9IHRvcExldmVsWydfX0dMT0JBTF9ET0NVTUVOVF9DQUNIRUA0J107XG5cbiAgICBpZiAoIWRvY2N5KSB7XG4gICAgICAgIGRvY2N5ID0gdG9wTGV2ZWxbJ19fR0xPQkFMX0RPQ1VNRU5UX0NBQ0hFQDQnXSA9IG1pbkRvYztcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGRvY2N5O1xufVxuIl19","(function (global){\nif (typeof window !== \"undefined\") {\n module.exports = window;\n} else if (typeof global !== \"undefined\") {\n module.exports = global;\n} else if (typeof self !== \"undefined\"){\n module.exports = self;\n} else {\n module.exports = {};\n}\n\n}).call(this,typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {})\n//# sourceMappingURL=data:application/json;charset:utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9nbG9iYWwvd2luZG93LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIG1vZHVsZS5leHBvcnRzID0gZ2xvYmFsO1xufSBlbHNlIGlmICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIil7XG4gICAgbW9kdWxlLmV4cG9ydHMgPSBzZWxmO1xufSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IHt9O1xufVxuIl19","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","var getNative = require('../internal/getNative');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeNow = getNative(Date, 'now');\n\n/**\n * Gets the number of milliseconds that have elapsed since the Unix epoch\n * (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @category Date\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => logs the number of milliseconds it took for the deferred function to be invoked\n */\nvar now = nativeNow || function() {\n return new Date().getTime();\n};\n\nmodule.exports = now;\n","var isObject = require('../lang/isObject'),\n now = require('../date/now');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\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. The debounced function comes with a `cancel` method to cancel\n * delayed invocations. Provide an options object to indicate that `func`\n * should be invoked on the leading and/or trailing edge of the `wait` timeout.\n * Subsequent calls to the debounced function return the result of the last\n * `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the debounced function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=false] Specify invoking on the leading\n * edge of the timeout.\n * @param {number} [options.maxWait] The maximum time `func` is allowed to be\n * delayed before it's invoked.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // avoid costly calculations while the window size is in flux\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // invoke `sendMail` when the click event is fired, debouncing subsequent calls\n * jQuery('#postbox').on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // ensure `batchLog` is invoked once after 1 second of debounced calls\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', _.debounce(batchLog, 250, {\n * 'maxWait': 1000\n * }));\n *\n * // cancel a debounced call\n * var todoChanges = _.debounce(batchLog, 1000);\n * Object.observe(models.todo, todoChanges);\n *\n * Object.observe(models, function(changes) {\n * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) {\n * todoChanges.cancel();\n * }\n * }, ['delete']);\n *\n * // ...at some point `models.todo` is changed\n * models.todo.completed = true;\n *\n * // ...before 1 second has passed `models.todo` is deleted\n * // which cancels the debounced `todoChanges` call\n * delete models.todo;\n */\nfunction debounce(func, wait, options) {\n var args,\n maxTimeoutId,\n result,\n stamp,\n thisArg,\n timeoutId,\n trailingCall,\n lastCalled = 0,\n maxWait = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = wait < 0 ? 0 : (+wait || 0);\n if (options === true) {\n var leading = true;\n trailing = false;\n } else if (isObject(options)) {\n leading = !!options.leading;\n maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait);\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function cancel() {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n if (maxTimeoutId) {\n clearTimeout(maxTimeoutId);\n }\n lastCalled = 0;\n maxTimeoutId = timeoutId = trailingCall = undefined;\n }\n\n function complete(isCalled, id) {\n if (id) {\n clearTimeout(id);\n }\n maxTimeoutId = timeoutId = trailingCall = undefined;\n if (isCalled) {\n lastCalled = now();\n result = func.apply(thisArg, args);\n if (!timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n }\n }\n\n function delayed() {\n var remaining = wait - (now() - stamp);\n if (remaining <= 0 || remaining > wait) {\n complete(trailingCall, maxTimeoutId);\n } else {\n timeoutId = setTimeout(delayed, remaining);\n }\n }\n\n function maxDelayed() {\n complete(trailing, timeoutId);\n }\n\n function debounced() {\n args = arguments;\n stamp = now();\n thisArg = this;\n trailingCall = trailing && (timeoutId || !leading);\n\n if (maxWait === false) {\n var leadingCall = leading && !timeoutId;\n } else {\n if (!maxTimeoutId && !leading) {\n lastCalled = stamp;\n }\n var remaining = maxWait - (stamp - lastCalled),\n isCalled = remaining <= 0 || remaining > maxWait;\n\n if (isCalled) {\n if (maxTimeoutId) {\n maxTimeoutId = clearTimeout(maxTimeoutId);\n }\n lastCalled = stamp;\n result = func.apply(thisArg, args);\n }\n else if (!maxTimeoutId) {\n maxTimeoutId = setTimeout(maxDelayed, remaining);\n }\n }\n if (isCalled && timeoutId) {\n timeoutId = clearTimeout(timeoutId);\n }\n else if (!timeoutId && wait !== maxWait) {\n timeoutId = setTimeout(delayed, wait);\n }\n if (leadingCall) {\n isCalled = true;\n result = func.apply(thisArg, args);\n }\n if (isCalled && !timeoutId && !maxTimeoutId) {\n args = thisArg = undefined;\n }\n return result;\n }\n debounced.cancel = cancel;\n return debounced;\n}\n\nmodule.exports = debounce;\n","/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as an array.\n *\n * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/Web/JavaScript/Reference/Functions/rest_parameters).\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.restParam(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\nfunction restParam(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n rest = Array(length);\n\n while (++index < length) {\n rest[index] = args[start + index];\n }\n switch (start) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, args[0], rest);\n case 2: return func.call(this, args[0], args[1], rest);\n }\n var otherArgs = Array(start + 1);\n index = -1;\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = rest;\n return func.apply(this, otherArgs);\n };\n}\n\nmodule.exports = restParam;\n","var debounce = require('./debounce'),\n isObject = require('../lang/isObject');\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed invocations. Provide an options object to indicate\n * that `func` should be invoked on the leading and/or trailing edge of the\n * `wait` timeout. Subsequent calls to the throttled function return the\n * result of the last `func` call.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked\n * on the trailing edge of the timeout only if the the throttled function is\n * invoked more than once during the `wait` timeout.\n *\n * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.leading=true] Specify invoking on the leading\n * edge of the timeout.\n * @param {boolean} [options.trailing=true] Specify invoking on the trailing\n * edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // avoid excessively updating the position while scrolling\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes\n * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, {\n * 'trailing': false\n * }));\n *\n * // cancel a trailing throttled call\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (options === false) {\n leading = false;\n } else if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, { 'leading': leading, 'maxWait': +wait, 'trailing': trailing });\n}\n\nmodule.exports = throttle;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction arrayCopy(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = arrayCopy;\n","/**\n * A specialized version of `_.forEach` for arrays without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property names to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @returns {Object} Returns `object`.\n */\nfunction baseCopy(source, props, object) {\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n object[key] = source[key];\n }\n return object;\n}\n\nmodule.exports = baseCopy;\n","var createBaseFor = require('./createBaseFor');\n\n/**\n * The base implementation of `baseForIn` and `baseForOwn` which iterates\n * over `object` properties returned by `keysFunc` invoking `iteratee` for\n * each property. Iteratee functions may exit iteration early by explicitly\n * returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./baseFor'),\n keysIn = require('../object/keysIn');\n\n/**\n * The base implementation of `_.forIn` without support for callback\n * shorthands and `this` binding.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForIn(object, iteratee) {\n return baseFor(object, iteratee, keysIn);\n}\n\nmodule.exports = baseForIn;\n","var arrayEach = require('./arrayEach'),\n baseMergeDeep = require('./baseMergeDeep'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isObject = require('../lang/isObject'),\n isObjectLike = require('./isObjectLike'),\n isTypedArray = require('../lang/isTypedArray'),\n keys = require('../object/keys');\n\n/**\n * The base implementation of `_.merge` without support for argument juggling,\n * multiple sources, and `this` binding `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {Object} Returns `object`.\n */\nfunction baseMerge(object, source, customizer, stackA, stackB) {\n if (!isObject(object)) {\n return object;\n }\n var isSrcArr = isArrayLike(source) && (isArray(source) || isTypedArray(source)),\n props = isSrcArr ? undefined : keys(source);\n\n arrayEach(props || source, function(srcValue, key) {\n if (props) {\n key = srcValue;\n srcValue = source[key];\n }\n if (isObjectLike(srcValue)) {\n stackA || (stackA = []);\n stackB || (stackB = []);\n baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB);\n }\n else {\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n }\n if ((result !== undefined || (isSrcArr && !(key in object))) &&\n (isCommon || (result === result ? (result !== value) : (value === value)))) {\n object[key] = result;\n }\n }\n });\n return object;\n}\n\nmodule.exports = baseMerge;\n","var arrayCopy = require('./arrayCopy'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isArrayLike = require('./isArrayLike'),\n isPlainObject = require('../lang/isPlainObject'),\n isTypedArray = require('../lang/isTypedArray'),\n toPlainObject = require('../lang/toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Array} [stackA=[]] Tracks traversed source objects.\n * @param {Array} [stackB=[]] Associates values with source counterparts.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) {\n var length = stackA.length,\n srcValue = source[key];\n\n while (length--) {\n if (stackA[length] == srcValue) {\n object[key] = stackB[length];\n return;\n }\n }\n var value = object[key],\n result = customizer ? customizer(value, srcValue, key, object, source) : undefined,\n isCommon = result === undefined;\n\n if (isCommon) {\n result = srcValue;\n if (isArrayLike(srcValue) && (isArray(srcValue) || isTypedArray(srcValue))) {\n result = isArray(value)\n ? value\n : (isArrayLike(value) ? arrayCopy(value) : []);\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n result = isArguments(value)\n ? toPlainObject(value)\n : (isPlainObject(value) ? value : {});\n }\n else {\n isCommon = false;\n }\n }\n // Add the source value to the stack of traversed objects and associate\n // it with its merged value.\n stackA.push(srcValue);\n stackB.push(result);\n\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB);\n } else if (result === result ? (result !== value) : (value === value)) {\n object[key] = result;\n }\n}\n\nmodule.exports = baseMergeDeep;\n","var toObject = require('./toObject');\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : toObject(object)[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var identity = require('../utility/identity');\n\n/**\n * A specialized version of `baseCallback` which only supports `this` binding\n * and specifying the number of arguments to provide to `func`.\n *\n * @private\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {number} [argCount] The number of arguments to provide to `func`.\n * @returns {Function} Returns the callback.\n */\nfunction bindCallback(func, thisArg, argCount) {\n if (typeof func != 'function') {\n return identity;\n }\n if (thisArg === undefined) {\n return func;\n }\n switch (argCount) {\n case 1: return function(value) {\n return func.call(thisArg, value);\n };\n case 3: return function(value, index, collection) {\n return func.call(thisArg, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(thisArg, accumulator, value, index, collection);\n };\n case 5: return function(value, other, key, object, source) {\n return func.call(thisArg, value, other, key, object, source);\n };\n }\n return function() {\n return func.apply(thisArg, arguments);\n };\n}\n\nmodule.exports = bindCallback;\n","var bindCallback = require('./bindCallback'),\n isIterateeCall = require('./isIterateeCall'),\n restParam = require('../function/restParam');\n\n/**\n * Creates a `_.assign`, `_.defaults`, or `_.merge` function.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return restParam(function(object, sources) {\n var index = -1,\n length = object == null ? 0 : sources.length,\n customizer = length > 2 ? sources[length - 2] : undefined,\n guard = length > 2 ? sources[2] : undefined,\n thisArg = length > 1 ? sources[length - 1] : undefined;\n\n if (typeof customizer == 'function') {\n customizer = bindCallback(customizer, thisArg, 5);\n length -= 2;\n } else {\n customizer = typeof thisArg == 'function' ? thisArg : undefined;\n length -= (customizer ? 1 : 0);\n }\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var toObject = require('./toObject');\n\n/**\n * Creates a base function for `_.forIn` or `_.forInRight`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var iterable = toObject(object),\n props = keysFunc(object),\n length = props.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length)) {\n var key = props[index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var baseProperty = require('./baseProperty');\n\n/**\n * Gets the \"length\" property value of `object`.\n *\n * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)\n * that affects Safari on at least iOS 8.1-8.3 ARM64.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {*} Returns the \"length\" value.\n */\nvar getLength = baseProperty('length');\n\nmodule.exports = getLength;\n","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var getLength = require('./getLength'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n */\nfunction isArrayLike(value) {\n return value != null && isLength(getLength(value));\n}\n\nmodule.exports = isArrayLike;\n","/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nvar isHostObject = (function() {\n try {\n Object({ 'toString': 0 } + '');\n } catch(e) {\n return function() { return false; };\n }\n return function(value) {\n // IE < 9 presents many host objects as `Object` objects that can coerce\n // to strings despite having improperly defined `toString` methods.\n return typeof value.toString != 'function' && typeof (value + '') == 'string';\n };\n}());\n\nmodule.exports = isHostObject;\n","/** Used to detect unsigned integer values. */\nvar reIsUint = /^\\d+$/;\n\n/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;\n length = length == null ? MAX_SAFE_INTEGER : length;\n return value > -1 && value % 1 == 0 && value < length;\n}\n\nmodule.exports = isIndex;\n","var isArrayLike = require('./isArrayLike'),\n isIndex = require('./isIndex'),\n isObject = require('../lang/isObject');\n\n/**\n * Checks if the provided arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)) {\n var other = object[index];\n return value === value ? (value === other) : (other !== other);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isIndex = require('./isIndex'),\n isLength = require('./isLength'),\n isString = require('../lang/isString'),\n keysIn = require('../object/keysIn');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A fallback implementation of `Object.keys` which creates an array of the\n * own enumerable property names of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction shimKeys(object) {\n var props = keysIn(object),\n propsLength = props.length,\n length = propsLength && object.length;\n\n var allowIndexes = !!length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object));\n\n var index = -1,\n result = [];\n\n while (++index < propsLength) {\n var key = props[index];\n if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = shimKeys;\n","var isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n if (support.unindexedChars && isString(value)) {\n var index = -1,\n length = value.length,\n result = Object(value);\n\n while (++index < length) {\n result[index] = value.charAt(index);\n }\n return result;\n }\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n","var isArrayLike = require('../internal/isArrayLike'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is classified as an `arguments` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n return isObjectLike(value) && isArrayLike(value) &&\n hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee');\n}\n\nmodule.exports = isArguments;\n","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n","var isFunction = require('./isFunction'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && (isHostObject(value) ? reIsNative : reIsHostCtor).test(value);\n}\n\nmodule.exports = isNative;\n","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var baseForIn = require('../internal/baseForIn'),\n isArguments = require('./isArguments'),\n isHostObject = require('../internal/isHostObject'),\n isObjectLike = require('../internal/isObjectLike'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * **Note:** This method assumes objects created by the `Object` constructor\n * have no inherited enumerable properties.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n var Ctor;\n\n // Exit early for non `Object` objects.\n if (!(isObjectLike(value) && objToString.call(value) == objectTag && !isHostObject(value) && !isArguments(value)) ||\n (!hasOwnProperty.call(value, 'constructor') && (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) {\n return false;\n }\n // IE < 9 iterates inherited properties before own properties. If the first\n // iterated property is an object's own property then there are no inherited\n // enumerable properties.\n var result;\n if (support.ownLast) {\n baseForIn(value, function(subValue, key, object) {\n result = hasOwnProperty.call(object, key);\n return false;\n });\n return result !== false;\n }\n // In most environments an object's own properties are iterated before\n // its inherited properties. If the last iterated property is an object's\n // own property then there are no inherited enumerable properties.\n baseForIn(value, function(subValue, key) {\n result = key;\n });\n return result === undefined || hasOwnProperty.call(value, result);\n}\n\nmodule.exports = isPlainObject;\n","var isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar stringTag = '[object String]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\nfunction isString(value) {\n return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag);\n}\n\nmodule.exports = isString;\n","var isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dateTag] = typedArrayTags[errorTag] =\ntypedArrayTags[funcTag] = typedArrayTags[mapTag] =\ntypedArrayTags[numberTag] = typedArrayTags[objectTag] =\ntypedArrayTags[regexpTag] = typedArrayTags[setTag] =\ntypedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nfunction isTypedArray(value) {\n return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objToString.call(value)];\n}\n\nmodule.exports = isTypedArray;\n","var baseCopy = require('../internal/baseCopy'),\n keysIn = require('../object/keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable\n * properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return baseCopy(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var getNative = require('../internal/getNative'),\n isArrayLike = require('../internal/isArrayLike'),\n isObject = require('../lang/isObject'),\n shimKeys = require('../internal/shimKeys'),\n support = require('../support');\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = getNative(Object, 'keys');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nvar keys = !nativeKeys ? shimKeys : function(object) {\n var Ctor = object == null ? undefined : object.constructor;\n if ((typeof Ctor == 'function' && Ctor.prototype === object) ||\n (typeof object == 'function' ? support.enumPrototypes : isArrayLike(object))) {\n return shimKeys(object);\n }\n return isObject(object) ? nativeKeys(object) : [];\n};\n\nmodule.exports = keys;\n","var arrayEach = require('../internal/arrayEach'),\n isArguments = require('../lang/isArguments'),\n isArray = require('../lang/isArray'),\n isFunction = require('../lang/isFunction'),\n isIndex = require('../internal/isIndex'),\n isLength = require('../internal/isLength'),\n isObject = require('../lang/isObject'),\n isString = require('../lang/isString'),\n support = require('../support');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n stringTag = '[object String]';\n\n/** Used to fix the JScript `[[DontEnum]]` bug. */\nvar shadowProps = [\n 'constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable',\n 'toLocaleString', 'toString', 'valueOf'\n];\n\n/** Used for native method references. */\nvar errorProto = Error.prototype,\n objectProto = Object.prototype,\n stringProto = String.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/** Used to avoid iterating over non-enumerable properties in IE < 9. */\nvar nonEnumProps = {};\nnonEnumProps[arrayTag] = nonEnumProps[dateTag] = nonEnumProps[numberTag] = { 'constructor': true, 'toLocaleString': true, 'toString': true, 'valueOf': true };\nnonEnumProps[boolTag] = nonEnumProps[stringTag] = { 'constructor': true, 'toString': true, 'valueOf': true };\nnonEnumProps[errorTag] = nonEnumProps[funcTag] = nonEnumProps[regexpTag] = { 'constructor': true, 'toString': true };\nnonEnumProps[objectTag] = { 'constructor': true };\n\narrayEach(shadowProps, function(key) {\n for (var tag in nonEnumProps) {\n if (hasOwnProperty.call(nonEnumProps, tag)) {\n var props = nonEnumProps[tag];\n props[key] = hasOwnProperty.call(props, key);\n }\n }\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n if (object == null) {\n return [];\n }\n if (!isObject(object)) {\n object = Object(object);\n }\n var length = object.length;\n\n length = (length && isLength(length) &&\n (isArray(object) || isArguments(object) || isString(object)) && length) || 0;\n\n var Ctor = object.constructor,\n index = -1,\n proto = (isFunction(Ctor) && Ctor.prototype) || objectProto,\n isProto = proto === object,\n result = Array(length),\n skipIndexes = length > 0,\n skipErrorProps = support.enumErrorProps && (object === errorProto || object instanceof Error),\n skipProto = support.enumPrototypes && isFunction(object);\n\n while (++index < length) {\n result[index] = (index + '');\n }\n // lodash skips the `constructor` property when it infers it's iterating\n // over a `prototype` object because IE < 9 can't set the `[[Enumerable]]`\n // attribute of an existing property and the `constructor` property of a\n // prototype defaults to non-enumerable.\n for (var key in object) {\n if (!(skipProto && key == 'prototype') &&\n !(skipErrorProps && (key == 'message' || key == 'name')) &&\n !(skipIndexes && isIndex(key, length)) &&\n !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n if (support.nonEnumShadows && object !== objectProto) {\n var tag = object === stringProto ? stringTag : (object === errorProto ? errorTag : objToString.call(object)),\n nonEnums = nonEnumProps[tag] || nonEnumProps[objectTag];\n\n if (tag == objectTag) {\n proto = objectProto;\n }\n length = shadowProps.length;\n while (length--) {\n key = shadowProps[length];\n var nonEnum = nonEnums[key];\n if (!(isProto && nonEnum) &&\n (nonEnum ? hasOwnProperty.call(object, key) : object[key] !== proto[key])) {\n result.push(key);\n }\n }\n }\n return result;\n}\n\nmodule.exports = keysIn;\n","var baseMerge = require('../internal/baseMerge'),\n createAssigner = require('../internal/createAssigner');\n\n/**\n * Recursively merges own enumerable properties of the source object(s), that\n * don't resolve to `undefined` into the destination object. Subsequent sources\n * overwrite property assignments of previous sources. If `customizer` is\n * provided it's invoked to produce the merged values of the destination and\n * source properties. If `customizer` returns `undefined` merging is handled\n * by the method instead. The `customizer` is bound to `thisArg` and invoked\n * with five arguments: (objectValue, sourceValue, key, object, source).\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {*} [thisArg] The `this` binding of `customizer`.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var users = {\n * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }]\n * };\n *\n * var ages = {\n * 'data': [{ 'age': 36 }, { 'age': 40 }]\n * };\n *\n * _.merge(users, ages);\n * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] }\n *\n * // using a customizer callback\n * var object = {\n * 'fruits': ['apple'],\n * 'vegetables': ['beet']\n * };\n *\n * var other = {\n * 'fruits': ['banana'],\n * 'vegetables': ['carrot']\n * };\n *\n * _.merge(object, other, function(a, b) {\n * if (_.isArray(a)) {\n * return a.concat(b);\n * }\n * });\n * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] }\n */\nvar merge = createAssigner(baseMerge);\n\nmodule.exports = merge;\n","/** Used for native method references. */\nvar arrayProto = Array.prototype,\n errorProto = Error.prototype,\n objectProto = Object.prototype;\n\n/** Native method references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/**\n * An object environment feature flags.\n *\n * @static\n * @memberOf _\n * @type Object\n */\nvar support = {};\n\n(function(x) {\n var Ctor = function() { this.x = x; },\n object = { '0': x, 'length': x },\n props = [];\n\n Ctor.prototype = { 'valueOf': x, 'y': x };\n for (var key in new Ctor) { props.push(key); }\n\n /**\n * Detect if `name` or `message` properties of `Error.prototype` are\n * enumerable by default (IE < 9, Safari < 5.1).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumErrorProps = propertyIsEnumerable.call(errorProto, 'message') ||\n propertyIsEnumerable.call(errorProto, 'name');\n\n /**\n * Detect if `prototype` properties are enumerable by default.\n *\n * Firefox < 3.6, Opera > 9.50 - Opera < 11.60, and Safari < 5.1\n * (if the prototype or a property on the prototype has been set)\n * incorrectly set the `[[Enumerable]]` value of a function's `prototype`\n * property to `true`.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.enumPrototypes = propertyIsEnumerable.call(Ctor, 'prototype');\n\n /**\n * Detect if properties shadowing those on `Object.prototype` are non-enumerable.\n *\n * In IE < 9 an object's own properties, shadowing non-enumerable ones,\n * are made non-enumerable as well (a.k.a the JScript `[[DontEnum]]` bug).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.nonEnumShadows = !/valueOf/.test(props);\n\n /**\n * Detect if own properties are iterated after inherited properties (IE < 9).\n *\n * @memberOf _.support\n * @type boolean\n */\n support.ownLast = props[0] != 'x';\n\n /**\n * Detect if `Array#shift` and `Array#splice` augment array-like objects\n * correctly.\n *\n * Firefox < 10, compatibility modes of IE 8, and IE < 9 have buggy Array\n * `shift()` and `splice()` functions that fail to remove the last element,\n * `value[0]`, of array-like objects even though the \"length\" property is\n * set to `0`. The `shift()` method is buggy in compatibility modes of IE 8,\n * while `splice()` is buggy regardless of mode in IE < 9.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.spliceObjects = (splice.call(object, 0, 1), !object[0]);\n\n /**\n * Detect lack of support for accessing string characters by index.\n *\n * IE < 8 can't access characters by index. IE 8 can only access characters\n * by index on string literals, not string objects.\n *\n * @memberOf _.support\n * @type boolean\n */\n support.unindexedChars = ('x'[0] + Object('x')[0]) != 'xx';\n}(1, 0));\n\nmodule.exports = support;\n","/**\n * This method returns the first argument provided to it.\n *\n * @static\n * @memberOf _\n * @category Utility\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'user': 'fred' };\n *\n * _.identity(object) === object;\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$console: true,\n\t$external: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$innerHeight: true,\n\t$innerWidth: true,\n\t$outerHeight: true,\n\t$outerWidth: true,\n\t$pageXOffset: true,\n\t$pageYOffset: true,\n\t$parent: true,\n\t$scrollLeft: true,\n\t$scrollTop: true,\n\t$scrollX: true,\n\t$scrollY: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","'use strict';\n\nvar keys = require('object-keys');\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tif (typeof sym === 'string') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(Object(sym) instanceof Symbol)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; }\n\tif (keys(obj).length !== 0) { return false; }\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar keys = require('object-keys');\nvar bind = require('function-bind');\nvar canBeObject = function (obj) {\n\treturn typeof obj !== 'undefined' && obj !== null;\n};\nvar hasSymbols = require('./hasSymbols')();\nvar toObject = Object;\nvar push = bind.call(Function.call, Array.prototype.push);\nvar propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable);\n\nmodule.exports = function assign(target, source1) {\n\tif (!canBeObject(target)) { throw new TypeError('target must be an object'); }\n\tvar objTarget = toObject(target);\n\tvar s, source, i, props, syms, value, key;\n\tfor (s = 1; s < arguments.length; ++s) {\n\t\tsource = toObject(arguments[s]);\n\t\tprops = keys(source);\n\t\tif (hasSymbols && Object.getOwnPropertySymbols) {\n\t\t\tsyms = Object.getOwnPropertySymbols(source);\n\t\t\tfor (i = 0; i < syms.length; ++i) {\n\t\t\t\tkey = syms[i];\n\t\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\t\tpush(props, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tfor (i = 0; i < props.length; ++i) {\n\t\t\tkey = props[i];\n\t\t\tvalue = source[key];\n\t\t\tif (propIsEnumerable(source, key)) {\n\t\t\t\tobjTarget[key] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn objTarget;\n};\n","'use strict';\n\nvar defineProperties = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\ndefineProperties(implementation, {\n\timplementation: implementation,\n\tgetPolyfill: getPolyfill,\n\tshim: shim\n});\n\nmodule.exports = implementation;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t// v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t// note: this does not detect the bug unless there's 20 characters\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t// Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t// which is 72% slower than our shim, and Firefox 40's native implementation.\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n","module.exports = once\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var called = false\n return function () {\n if (called) return\n called = true\n return fn.apply(this, arguments)\n }\n}\n","var trim = require('trim')\n , forEach = require('for-each')\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n forEach(\n trim(headers).split('\\n')\n , function (row) {\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n )\n\n return result\n}","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","\nexports = module.exports = trim;\n\nfunction trim(str){\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function(str){\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function(str){\n return str.replace(/\\s*$/, '');\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}","\"use strict\";\nvar window = require(\"global/window\")\nvar once = require(\"once\")\nvar isFunction = require(\"is-function\")\nvar parseHeaders = require(\"parse-headers\")\nvar xtend = require(\"xtend\")\n\nmodule.exports = createXHR\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop\ncreateXHR.XDomainRequest = \"withCredentials\" in (new createXHR.XMLHttpRequest()) ? createXHR.XMLHttpRequest : window.XDomainRequest\n\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function(method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function(uri, options, callback) {\n options = initParams(uri, options, callback)\n options.method = method.toUpperCase()\n return _createXHR(options)\n }\n})\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i])\n }\n}\n\nfunction isEmpty(obj){\n for(var i in obj){\n if(obj.hasOwnProperty(i)) return false\n }\n return true\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri\n\n if (isFunction(options)) {\n callback = options\n if (typeof uri === \"string\") {\n params = {uri:uri}\n }\n } else {\n params = xtend(options, {uri: uri})\n }\n\n params.callback = callback\n return params\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback)\n return _createXHR(options)\n}\n\nfunction _createXHR(options) {\n var callback = options.callback\n if(typeof callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n callback = once(callback)\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n loadFunc()\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined\n\n if (xhr.response) {\n body = xhr.response\n } else if (xhr.responseType === \"text\" || !xhr.responseType) {\n body = xhr.responseText || xhr.responseXML\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\n }\n\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer)\n if(!(evt instanceof Error)){\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\") )\n }\n evt.statusCode = 0\n callback(evt, failureResponse)\n }\n\n // will load the data & process the response in a special response object\n function loadFunc() {\n if (aborted) return\n var status\n clearTimeout(timeoutTimer)\n if(options.useXDR && xhr.status===undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200\n } else {\n status = (xhr.status === 1223 ? 204 : xhr.status)\n }\n var response = failureResponse\n var err = null\n\n if (status !== 0){\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n }\n if(xhr.getAllResponseHeaders){ //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders())\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\")\n }\n callback(err, response, response.body)\n\n }\n\n var xhr = options.xhr || null\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest()\n }else{\n xhr = new createXHR.XMLHttpRequest()\n }\n }\n\n var key\n var aborted\n var uri = xhr.url = options.uri || options.url\n var method = xhr.method = options.method || \"GET\"\n var body = options.body || options.data || null\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n\n if (\"json\" in options) {\n isJson = true\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\") //Don't override existing accept header declared by user\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\") //Don't override existing accept header declared by user\n body = JSON.stringify(options.json)\n }\n }\n\n xhr.onreadystatechange = readystatechange\n xhr.onload = loadFunc\n xhr.onerror = errorFunc\n // IE9 must have onprogress be set to a unique function.\n xhr.onprogress = function () {\n // IE must die\n }\n xhr.ontimeout = errorFunc\n xhr.open(method, uri, !sync, options.username, options.password)\n //has to be after open\n if(!sync) {\n xhr.withCredentials = !!options.withCredentials\n }\n // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n if (!sync && options.timeout > 0 ) {\n timeoutTimer = setTimeout(function(){\n aborted=true//IE9 may still call readystatechange\n xhr.abort(\"timeout\")\n var e = new Error(\"XMLHttpRequest timeout\")\n e.code = \"ETIMEDOUT\"\n errorFunc(e)\n }, options.timeout )\n }\n\n if (xhr.setRequestHeader) {\n for(key in headers){\n if(headers.hasOwnProperty(key)){\n xhr.setRequestHeader(key, headers[key])\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\")\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType\n }\n\n if (\"beforeSend\" in options &&\n typeof options.beforeSend === \"function\"\n ) {\n options.beforeSend(xhr)\n }\n\n xhr.send(body)\n\n return xhr\n\n\n}\n\nfunction noop() {}\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","/**\n * @file big-play-button.js\n */\nimport Button from './button.js';\nimport Component from './component.js';\n\n/**\n * Initial play button. Shows before the video has played. The hiding of the\n * big play button is done via CSS and player states.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Button\n * @class BigPlayButton\n */\nclass BigPlayButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return 'vjs-big-play-button';\n }\n\n /**\n * Handles click for play\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.play();\n }\n\n}\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\nexport default BigPlayButton;\n","/**\n * @file button.js\n */\nimport ClickableComponent from './clickable-component.js';\nimport Component from './component';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport log from './utils/log.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Base class for all buttons\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends ClickableComponent\n * @class Button\n */\nclass Button extends ClickableComponent {\n\n constructor(player, options) {\n super(player, options);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of properties that should be set on the element\n * @param {Object=} attributes An object of attributes that should be set on the element\n * @return {Element}\n * @method createEl\n */\n createEl(tag='button', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass()\n }, props);\n\n if (tag !== 'button') {\n log.warn(`Creating a Button with an HTML element of ${tag} is deprecated; use ClickableComponent instead.`);\n\n // Add properties for clickable element which is not a native HTML button\n props = assign({\n tabIndex: 0\n }, props);\n\n // Add ARIA attributes for clickable element which is not a native HTML button\n attributes = assign({\n role: 'button'\n }, attributes);\n }\n\n // Add attributes for button element\n attributes = assign({\n type: 'button', // Necessary since the default button type is \"submit\"\n 'aria-live': 'polite' // let the screen reader user know that the text of the button may change\n }, attributes);\n\n let el = Component.prototype.createEl.call(this, tag, props, attributes);\n\n this.createControlTextEl(el);\n\n return el;\n }\n\n /**\n * Adds a child component inside this button\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @deprecated\n * @method addChild\n */\n addChild(child, options={}) {\n let className = this.constructor.name;\n log.warn(`Adding an actionable (user controllable) child to a Button (${className}) is not supported; use a ClickableComponent instead.`);\n\n // Avoid the error message generated by ClickableComponent's addChild method\n return Component.prototype.addChild.call(this, child, options);\n }\n\n /**\n * Handle KeyPress (document level) - Extend with specific functionality for button\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Ignore Space (32) or Enter (13) key operation, which is handled by the browser for a button.\n if (event.which === 32 || event.which === 13) {\n } else {\n super.handleKeyPress(event); // Pass keypress handling up for unsupported keys\n }\n }\n\n}\n\nComponent.registerComponent('Button', Button);\nexport default Button;\n","/**\n * @file button.js\n */\nimport Component from './component';\nimport * as Dom from './utils/dom.js';\nimport * as Events from './utils/events.js';\nimport * as Fn from './utils/fn.js';\nimport log from './utils/log.js';\nimport document from 'global/document';\nimport assign from 'object.assign';\n\n/**\n * Clickable Component which is clickable or keyboard actionable, but is not a native HTML button\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class ClickableComponent\n */\nclass ClickableComponent extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.emitTapEvents();\n\n this.on('tap', this.handleClick);\n this.on('click', this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Element's node type. e.g. 'div'\n * @param {Object=} props An object of properties that should be set on the element\n * @param {Object=} attributes An object of attributes that should be set on the element\n * @return {Element}\n * @method createEl\n */\n createEl(tag='div', props={}, attributes={}) {\n props = assign({\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n if (tag === 'button') {\n log.error(`Creating a ClickableComponent with an HTML element of ${tag} is not supported; use a Button instead.`);\n }\n\n // Add ARIA attributes for clickable element which is not a native HTML button\n attributes = assign({\n role: 'button',\n 'aria-live': 'polite' // let the screen reader user know that the text of the element may change\n }, attributes);\n\n let el = super.createEl(tag, props, attributes);\n\n this.createControlTextEl(el);\n\n return el;\n }\n\n /**\n * create control text\n *\n * @param {Element} el Parent element for the control text\n * @return {Element}\n * @method controlText\n */\n createControlTextEl(el) {\n this.controlTextEl_ = Dom.createEl('span', {\n className: 'vjs-control-text'\n });\n\n if (el) {\n el.appendChild(this.controlTextEl_);\n }\n\n this.controlText(this.controlText_, el);\n\n return this.controlTextEl_;\n }\n\n /**\n * Controls text - both request and localize\n *\n * @param {String} text Text for element\n * @param {Element=} el Element to set the title on\n * @return {String}\n * @method controlText\n */\n controlText(text, el=this.el()) {\n if (!text) return this.controlText_ || 'Need Text';\n \n const localizedText = this.localize(text);\n\n this.controlText_ = text;\n this.controlTextEl_.innerHTML = localizedText;\n el.setAttribute('title', localizedText);\n\n return this;\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String}\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-control vjs-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Adds a child component inside this clickable-component\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}) {\n // TODO: Fix adding an actionable child to a ClickableComponent; currently\n // it will cause issues with assistive technology (e.g. screen readers)\n // which support ARIA, since an element with role=\"button\" cannot have\n // actionable child elements.\n\n //let className = this.constructor.name;\n //log.warn(`Adding a child to a ClickableComponent (${className}) can cause issues with assistive technology which supports ARIA, since an element with role=\"button\" cannot have actionable child elements.`);\n\n return super.addChild(child, options);\n }\n\n /**\n * Enable the component element\n *\n * @return {Component}\n * @method enable\n */\n enable() {\n this.removeClass('vjs-disabled');\n this.el_.setAttribute('aria-disabled', 'false');\n return this;\n }\n\n /**\n * Disable the component element\n *\n * @return {Component}\n * @method disable\n */\n disable() {\n this.addClass('vjs-disabled');\n this.el_.setAttribute('aria-disabled', 'true');\n return this;\n }\n\n /**\n * Handle Click - Override with specific functionality for component\n *\n * @method handleClick\n */\n handleClick() {}\n\n /**\n * Handle Focus - Add keyboard functionality to element\n *\n * @method handleFocus\n */\n handleFocus() {\n Events.on(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n /**\n * Handle KeyPress (document level) - Trigger click when Space or Enter key is pressed\n *\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n // Support Space (32) or Enter (13) key operation to fire a click event\n if (event.which === 32 || event.which === 13) {\n event.preventDefault();\n this.handleClick(event);\n } else if (super.handleKeyPress) {\n super.handleKeyPress(event); // Pass keypress handling up for unsupported keys\n }\n }\n\n /**\n * Handle Blur - Remove keyboard triggers\n *\n * @method handleBlur\n */\n handleBlur() {\n Events.off(document, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n}\n\nComponent.registerComponent('ClickableComponent', ClickableComponent);\nexport default ClickableComponent;\n","import Button from './button';\nimport Component from './component';\n\n/**\n * The `CloseButton` component is a button which fires a \"close\" event\n * when it is activated.\n *\n * @extends Button\n * @class CloseButton\n */\nclass CloseButton extends Button {\n\n constructor(player, options) {\n super(player, options);\n this.controlText(options && options.controlText || this.localize('Close'));\n }\n\n buildCSSClass() {\n return `vjs-close-button ${super.buildCSSClass()}`;\n }\n\n handleClick() {\n this.trigger({type: 'close', bubbles: false});\n }\n}\n\nComponent.registerComponent('CloseButton', CloseButton);\nexport default CloseButton;\n","/**\n * @file component.js\n *\n * Player Component - Base class for all UI objects\n */\n\nimport window from 'global/window';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as Events from './utils/events.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\n\n\n/**\n * Base UI Component class\n * Components are embeddable UI objects that are represented by both a\n * javascript object and an element in the DOM. They can be children of other\n * components, and can have many children themselves.\n * ```js\n * // adding a button to the player\n * var button = player.addChild('button');\n * button.el(); // -> button element\n * ```\n * ```html\n * <div class=\"video-js\">\n * <div class=\"vjs-button\">Button</div>\n * </div>\n * ```\n * Components are also event targets.\n * ```js\n * button.on('click', function(){\n * console.log('Button Clicked!');\n * });\n * button.trigger('customevent');\n * ```\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @class Component\n */\nclass Component {\n\n constructor(player, options, ready) {\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 let id = player && player.id && player.id() || 'no_player';\n\n this.id_ = `${id}_component_${Guid.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 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 * @method dispose\n */\n dispose() {\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (let 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 // Remove all event listeners.\n this.off();\n\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n Dom.removeElData(this.el_);\n this.el_ = null;\n }\n\n /**\n * Return the component's player\n *\n * @return {Player}\n * @method player\n */\n player() {\n return this.player_;\n }\n\n /**\n * Deep merge of options objects\n * Whenever a property is an object on both options objects\n * the two properties will be merged using mergeOptions.\n *\n * ```js\n * Parent.prototype.options_ = {\n * optionSet: {\n * 'childOne': { 'foo': 'bar', 'asdf': 'fdsa' },\n * 'childTwo': {},\n * 'childThree': {}\n * }\n * }\n * newOptions = {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'abc': '123' }\n * 'childTwo': null,\n * 'childFour': {}\n * }\n * }\n *\n * this.options(newOptions);\n * ```\n * RESULT\n * ```js\n * {\n * optionSet: {\n * 'childOne': { 'foo': 'baz', 'asdf': 'fdsa', 'abc': '123' },\n * 'childTwo': null, // Disabled. Won't be initialized.\n * 'childThree': {},\n * 'childFour': {}\n * }\n * }\n * ```\n *\n * @param {Object} obj Object of new option values\n * @return {Object} A NEW object of this.options_ and obj merged\n * @method options\n */\n 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 * ```js\n * var domEl = myComponent.el();\n * ```\n *\n * @return {Element}\n * @method el\n */\n el() {\n return this.el_;\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} tagName Element's node type. e.g. 'div'\n * @param {Object=} properties An object of properties that should be set\n * @param {Object=} attributes An object of attributes that should be set\n * @return {Element}\n * @method createEl\n */\n createEl(tagName, properties, attributes) {\n return Dom.createEl(tagName, properties, attributes);\n }\n\n localize(string) {\n let code = this.player_.language && this.player_.language();\n let languages = this.player_.languages && this.player_.languages();\n\n if (!code || !languages) {\n return string;\n }\n\n let language = languages[code];\n\n if (language && language[string]) {\n return language[string];\n }\n\n let primaryCode = code.split('-')[0];\n let primaryLang = languages[primaryCode];\n\n if (primaryLang && primaryLang[string]) {\n return primaryLang[string];\n }\n\n return string;\n }\n\n /**\n * Return the component's DOM element where children are inserted.\n * Will either be the same as el() or a new element defined in createEl().\n *\n * @return {Element}\n * @method contentEl\n */\n contentEl() {\n return this.contentEl_ || this.el_;\n }\n\n /**\n * Get the component's ID\n * ```js\n * var id = myComponent.id();\n * ```\n *\n * @return {String}\n * @method id\n */\n id() {\n return this.id_;\n }\n\n /**\n * Get the component's name. The name is often used to reference the component.\n * ```js\n * var name = myComponent.name();\n * ```\n *\n * @return {String}\n * @method name\n */\n name() {\n return this.name_;\n }\n\n /**\n * Get an array of all child components\n * ```js\n * var kids = myComponent.children();\n * ```\n *\n * @return {Array} The children\n * @method children\n */\n children() {\n return this.children_;\n }\n\n /**\n * Returns a child component with the provided ID\n *\n * @return {Component}\n * @method getChildById\n */\n getChildById(id) {\n return this.childIndex_[id];\n }\n\n /**\n * Returns a child component with the provided name\n *\n * @return {Component}\n * @method getChild\n */\n getChild(name) {\n return this.childNameIndex_[name];\n }\n\n /**\n * Adds a child component inside this component\n * ```js\n * myComponent.el();\n * // -> <div class='my-component'></div>\n * myComponent.children();\n * // [empty array]\n *\n * var myButton = myComponent.addChild('MyButton');\n * // -> <div class='my-component'><div class=\"my-button\">myButton<div></div>\n * // -> myButton === myComponent.children()[0];\n * ```\n * Pass in options for child constructors and options for children of the child\n * ```js\n * var myButton = myComponent.addChild('MyButton', {\n * text: 'Press Me',\n * buttonChildExample: {\n * buttonChildOption: true\n * }\n * });\n * ```\n *\n * @param {String|Component} child The class name or instance of a child to add\n * @param {Object=} options Options, including options to be passed to children of the child.\n * @param {Number} index into our children array to attempt to add the child\n * @return {Component} The child component (created by this process if a string was used)\n * @method addChild\n */\n addChild(child, options={}, index=this.children_.length) {\n let component;\n let componentName;\n\n // If child is a string, create nt with options\n if (typeof child === 'string') {\n componentName = child;\n\n // Options can also be specified as a boolean, so convert to an empty object if false.\n if (!options) {\n options = {};\n }\n\n // Same as above, but true is deprecated so show a warning.\n if (options === true) {\n log.warn('Initializing a child component with `true` is deprecated. Children should be defined in an array when possible, but if necessary use an object instead of `true`.');\n options = {};\n }\n\n // If no componentClass in options, assume componentClass is the name lowercased\n // (e.g. playButton)\n let componentClassName = options.componentClass || toTitleCase(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 let 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 && 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 let childNodes = this.contentEl().children;\n let refNode = childNodes[index] || null;\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, and the\n * child component's element from this component's element\n *\n * @param {Component} component Component to remove\n * @method removeChild\n */\n removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n let childFound = false;\n\n for (let 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 let 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 components from options\n * ```js\n * // when an instance of MyComponent is created, all children in options\n * // will be added to the instance by their name strings and options\n * MyComponent.prototype.options_ = {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * };\n *\n * // Or when creating the component\n * var myComp = new MyComponent(player, {\n * children: [\n * 'myChildComponent'\n * ],\n * myChildComponent: {\n * myChildOption: true\n * }\n * });\n * ```\n * The children option can also be an array of\n * child options objects (that also include a 'name' key).\n * This can be used if you have two child components of the\n * same type that need different options.\n * ```js\n * var myComp = new MyComponent(player, {\n * children: [\n * 'button',\n * {\n * name: 'button',\n * someOtherOption: true\n * },\n * {\n * name: 'button',\n * someOtherOption: false\n * }\n * ]\n * });\n * ```\n *\n * @method initChildren\n */\n initChildren() {\n let children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n let parentOptions = this.options_;\n\n let handleAdd = (child) => {\n let name = child.name;\n let 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 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 let newChild = this.addChild(name, opts);\n if (newChild) {\n this[name] = newChild;\n }\n };\n\n // Allow for an array of children details to passed in the options\n let workingChildren;\n let 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_)\n .filter(function(child) {\n return !workingChildren.some(function(wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n } else {\n return child === wchild.name;\n }\n });\n }))\n .map((child) => {\n let name, opts;\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, opts};\n })\n .filter((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 let c = Component.getComponent(child.opts.componentClass ||\n toTitleCase(child.name));\n return c && !Tech.isTech(c);\n })\n .forEach(handleAdd);\n }\n }\n\n /**\n * Allows sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n\n /**\n * Add an event listener to this component's element\n * ```js\n * var myFunc = function(){\n * var myComponent = this;\n * // Do something when the event is fired\n * };\n *\n * myComponent.on('eventType', myFunc);\n * ```\n * The context of myFunc will be myComponent unless previously bound.\n * Alternatively, you can add a listener to another element or component.\n * ```js\n * myComponent.on(otherElement, 'eventName', myFunc);\n * myComponent.on(otherComponent, 'eventName', myFunc);\n * ```\n * The benefit of using this over `VjsEvents.on(otherElement, 'eventName', myFunc)`\n * and `otherComponent.on('eventName', myFunc)` is that this way the listeners\n * will be automatically cleaned up when either component is disposed.\n * It will also bind myComponent as the context of myFunc.\n * **NOTE**: When using this on elements in the page other than window\n * and document (both permanent), if you remove the element from the DOM\n * you need to call `myComponent.trigger(el, 'dispose')` on it to clean up\n * references to it and allow the browser to garbage collect it.\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The event handler or event type\n * @param {Function} third The event handler\n * @return {Component}\n * @method on\n */\n on(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.on(this.el_, first, Fn.bind(this, second));\n\n // Targeting another component or element\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n // When this component is disposed, remove the listener from the other component\n const removeOnDispose = () => this.off(target, type, fn);\n\n // Use the same function ID so we can remove it later it using the ID\n // of the original listener\n removeOnDispose.guid = fn.guid;\n this.on('dispose', removeOnDispose);\n\n // If the other component is disposed first we need to clean the reference\n // to the other component in this component's removeOnDispose listener\n // Otherwise we create a memory leak.\n const cleanRemover = () => this.off('dispose', removeOnDispose);\n\n // Add the same function ID so we can easily remove it later\n cleanRemover.guid = fn.guid;\n\n // Check if this is a DOM node\n if (first.nodeName) {\n // Add the listener to the other element\n Events.on(target, type, fn);\n Events.on(target, 'dispose', cleanRemover);\n\n // Should be a component\n // Not using `instanceof Component` because it makes mock players difficult\n } else if (typeof first.on === 'function') {\n // Add the listener to the other component\n target.on(type, fn);\n target.on('dispose', cleanRemover);\n }\n }\n\n return this;\n }\n\n /**\n * Remove an event listener from this component's element\n * ```js\n * myComponent.off('eventType', myFunc);\n * ```\n * If myFunc is excluded, ALL listeners for the event type will be removed.\n * If eventType is excluded, ALL listeners will be removed from the component.\n * Alternatively you can use `off` to remove listeners that were added to other\n * elements or components using `myComponent.on(otherComponent...`.\n * In this case both the event type and listener function are REQUIRED.\n * ```js\n * myComponent.off(otherElement, 'eventType', myFunc);\n * myComponent.off(otherComponent, 'eventType', myFunc);\n * ```\n *\n * @param {String=|Component} first The event type or other component\n * @param {Function=|String} second The listener function or event type\n * @param {Function=} third The listener for other component\n * @return {Component}\n * @method off\n */\n off(first, second, third) {\n if (!first || typeof first === 'string' || Array.isArray(first)) {\n Events.off(this.el_, first, second);\n } else {\n const target = first;\n const type = second;\n // Ensure there's at least a guid, even if the function hasn't been used\n const fn = Fn.bind(this, third);\n\n // Remove the dispose listener on this component,\n // which was given the same guid as the event listener\n this.off('dispose', fn);\n\n if (first.nodeName) {\n // Remove the listener\n Events.off(target, type, fn);\n // Remove the listener for cleaning the dispose listener\n Events.off(target, 'dispose', fn);\n } else {\n target.off(type, fn);\n target.off('dispose', fn);\n }\n }\n\n return this;\n }\n\n /**\n * Add an event listener to be triggered only once and then removed\n * ```js\n * myComponent.one('eventName', myFunc);\n * ```\n * Alternatively you can add a listener to another element or component\n * that will be triggered only once.\n * ```js\n * myComponent.one(otherElement, 'eventName', myFunc);\n * myComponent.one(otherComponent, 'eventName', myFunc);\n * ```\n *\n * @param {String|Component} first The event type or other component\n * @param {Function|String} second The listener function or event type\n * @param {Function=} third The listener function for other component\n * @return {Component}\n * @method one\n */\n one(first, second, third) {\n if (typeof first === 'string' || Array.isArray(first)) {\n Events.one(this.el_, first, Fn.bind(this, second));\n } else {\n const target = first;\n const type = second;\n const fn = Fn.bind(this, third);\n\n const newFunc = () => {\n this.off(target, type, newFunc);\n fn.apply(null, arguments);\n };\n\n // Keep the same function ID so we can remove it later\n newFunc.guid = fn.guid;\n\n this.on(target, type, newFunc);\n }\n\n return this;\n }\n\n /**\n * Trigger an event on an element\n * ```js\n * myComponent.trigger('eventName');\n * myComponent.trigger({'type':'eventName'});\n * myComponent.trigger('eventName', {data: 'some data'});\n * myComponent.trigger({'type':'eventName'}, {data: 'some data'});\n * ```\n *\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Component} self\n * @method trigger\n */\n trigger(event, hash) {\n Events.trigger(this.el_, event, hash);\n return this;\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 * @param {Function} fn Ready listener\n * @param {Boolean} sync Exec the listener synchronously if component is ready\n * @return {Component}\n * @method ready\n */\n ready(fn, sync=false) {\n if (fn) {\n if (this.isReady_) {\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 } else {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n }\n }\n return this;\n }\n\n /**\n * Trigger the ready listeners\n *\n * @return {Component}\n * @method triggerReady\n */\n triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggerd asynchronously\n this.setTimeout(function(){\n let 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 this.trigger('ready');\n }, 1);\n }\n\n /**\n * Finds a single DOM element matching `selector` within the component's\n * `contentEl` or another custom context.\n *\n * @method $\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 */\n $(selector, context) {\n return Dom.$(selector, context || this.contentEl());\n }\n\n /**\n * Finds a all DOM elements matching `selector` within the component's\n * `contentEl` or another custom context.\n *\n * @method $$\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 */\n $$(selector, context) {\n return Dom.$$(selector, context || this.contentEl());\n }\n\n /**\n * Check if a component's element has a CSS class name\n *\n * @param {String} classToCheck Classname to check\n * @return {Component}\n * @method hasClass\n */\n hasClass(classToCheck) {\n return Dom.hasElClass(this.el_, classToCheck);\n }\n\n /**\n * Add a CSS class name to the component's element\n *\n * @param {String} classToAdd Classname to add\n * @return {Component}\n * @method addClass\n */\n addClass(classToAdd) {\n Dom.addElClass(this.el_, classToAdd);\n return this;\n }\n\n /**\n * Remove a CSS class name from the component's element\n *\n * @param {String} classToRemove Classname to remove\n * @return {Component}\n * @method removeClass\n */\n removeClass(classToRemove) {\n Dom.removeElClass(this.el_, classToRemove);\n return this;\n }\n\n /**\n * Add or remove a CSS class name from the component's element\n *\n * @param {String} classToToggle\n * @param {Boolean|Function} [predicate]\n * Can be a function that returns a Boolean. If `true`, the class\n * will be added; if `false`, the class will be removed. If not\n * given, the class will be added if not present and vice versa.\n *\n * @return {Component}\n * @method toggleClass\n */\n toggleClass(classToToggle, predicate) {\n Dom.toggleElClass(this.el_, classToToggle, predicate);\n return this;\n }\n\n /**\n * Show the component element if hidden\n *\n * @return {Component}\n * @method show\n */\n show() {\n this.removeClass('vjs-hidden');\n return this;\n }\n\n /**\n * Hide the component element if currently showing\n *\n * @return {Component}\n * @method hide\n */\n hide() {\n this.addClass('vjs-hidden');\n return this;\n }\n\n /**\n * Lock an item in its visible state\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method lockShowing\n */\n lockShowing() {\n this.addClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Unlock an item to be hidden\n * To be used with fadeIn/fadeOut.\n *\n * @return {Component}\n * @private\n * @method unlockShowing\n */\n unlockShowing() {\n this.removeClass('vjs-lock-showing');\n return this;\n }\n\n /**\n * Set or get the width of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num Optional width number\n * @param {Boolean} skipListeners Skip the 'resize' event trigger\n * @return {Component} This component, when setting the width\n * @return {Number|String} The width, when getting\n * @method width\n */\n width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n\n /**\n * Get or set the height of the component (CSS values)\n * Setting the video tag dimension values only works with values in pixels.\n * Percent values will not work.\n * Some percents can be used, but width()/height() will return the number + %,\n * not the actual computed width/height.\n *\n * @param {Number|String=} num New component height\n * @param {Boolean=} skipListeners Skip the resize event trigger\n * @return {Component} This component, when setting the height\n * @return {Number|String} The height, when getting\n * @method height\n */\n height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n\n /**\n * Set both width and height at the same time\n *\n * @param {Number|String} width Width of player\n * @param {Number|String} height Height of player\n * @return {Component} The component\n * @method dimensions\n */\n dimensions(width, height) {\n // Skip resize listeners on width for optimization\n return this.width(width, true).height(height);\n }\n\n /**\n * Get or set width or height\n * This is the shared code for the width() and height() methods.\n * All for an integer, integer + 'px' or integer + '%';\n * Known issue: Hidden elements officially have a width of 0. We're defaulting\n * to the style.width value and falling back to computedStyle which has the\n * hidden element issue. Info, but probably not an efficient fix:\n * http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/\n *\n * @param {String} widthOrHeight 'width' or 'height'\n * @param {Number|String=} num New dimension\n * @param {Boolean=} skipListeners Skip resize event trigger\n * @return {Component} The component if a dimension was set\n * @return {Number|String} The dimension if nothing was set\n * @private\n * @method dimension\n */\n 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 this.trigger('resize');\n }\n\n // Return component\n return this;\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 let val = this.el_.style[widthOrHeight];\n let 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 width or height of computed style\n * @param {String} widthOrHeight 'width' or 'height'\n * @return {Number|Boolean} The bolean false if nothing was set\n * @method currentDimension\n */\n currentDimension(widthOrHeight) {\n let 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 const computedStyle = window.getComputedStyle(this.el_);\n computedWidthOrHeight = computedStyle.getPropertyValue(widthOrHeight) || computedStyle[widthOrHeight];\n } else if (this.el_.currentStyle) {\n // ie 8 doesn't support computed style, shim it\n // return clientWidth or clientHeight instead for better accuracy\n const rule = `offset${toTitleCase(widthOrHeight)}`;\n computedWidthOrHeight = this.el_[rule];\n }\n\n // remove 'px' from variable and parse as integer\n computedWidthOrHeight = parseFloat(computedWidthOrHeight);\n return computedWidthOrHeight;\n }\n\n /**\n * Get an object which contains width and height values of computed style\n * @return {Object} The dimensions of element\n * @method currentDimensions\n */\n currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n\n /**\n * Get width of computed style\n * @return {Integer}\n * @method currentWidth\n */\n currentWidth() {\n return this.currentDimension('width');\n }\n\n /**\n * Get height of computed style\n * @return {Integer}\n * @method currentHeight\n */\n currentHeight() {\n return this.currentDimension('height');\n }\n\n /**\n * Emit 'tap' events when touch events are supported\n * This is used to support toggling the controls through a tap on the video.\n * We're requiring them to be enabled because otherwise every component would\n * have this extra overhead unnecessarily, on mobile devices where extra\n * overhead is especially bad.\n *\n * @private\n * @method emitTapEvents\n */\n emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n let touchStart = 0;\n let 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, so 10 seems like a nice, round number.\n const tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n const touchTimeThreshold = 200;\n\n let couldBeTap;\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 the touches object to prevent modifying the original\n firstTouch = assign({}, event.touches[0]);\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 const xdiff = event.touches[0].pageX - firstTouch.pageX;\n const ydiff = event.touches[0].pageY - firstTouch.pageY;\n const touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n const noTap = function() {\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 const 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 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 * Report user touch activity when touch events occur\n * User activity is used to determine when controls should show/hide. It's\n * relatively simple when it comes to mouse events, because any mouse event\n * should show the controls. So we capture mouse events that bubble up to the\n * player and report activity when that happens.\n * With touch events it isn't as easy. We can't rely on touch events at the\n * player level, because a tap (touchstart + touchend) on the video itself on\n * mobile devices is meant to turn controls off (and on). User activity is\n * checked asynchronously, so what could happen is a tap event on the video\n * turns the controls off, then the touchend event bubbles up to the player,\n * which if it reported user activity, would turn the controls right back on.\n * (We also don't want to completely block touch events from bubbling up)\n * Also a touchmove, touch+hold, and anything other than a tap is not supposed\n * to turn the controls back on on a mobile device.\n * Here we're setting the default component behavior to report user activity\n * whenever touch events happen, and this can be turned off by components that\n * want touch events to act differently.\n *\n * @method enableTouchActivity\n */\n 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 const report = Fn.bind(this.player(), this.player().reportUserActivity);\n\n let touchHolding;\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 const touchEnd = function(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 * Creates timeout and sets up disposal automatically.\n *\n * @param {Function} fn The function to run after the timeout.\n * @param {Number} timeout Number of ms to delay before executing specified function.\n * @return {Number} Returns the timeout ID\n * @method setTimeout\n */\n setTimeout(fn, timeout) {\n fn = Fn.bind(this, fn);\n\n // window.setTimeout would be preferable here, but due to some bizarre issue with Sinon and/or Phantomjs, we can't.\n let timeoutId = window.setTimeout(fn, timeout);\n\n const disposeFn = function() {\n this.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 and removes the associated dispose listener\n *\n * @param {Number} timeoutId The id of the timeout to clear\n * @return {Number} Returns the timeout ID\n * @method clearTimeout\n */\n clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-timeout-${timeoutId}`;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n }\n\n /**\n * Creates an interval and sets up disposal automatically.\n *\n * @param {Function} fn The function to run every N seconds.\n * @param {Number} interval Number of ms to delay before executing specified function.\n * @return {Number} Returns the interval ID\n * @method setInterval\n */\n setInterval(fn, interval) {\n fn = Fn.bind(this, fn);\n\n let intervalId = window.setInterval(fn, interval);\n\n const disposeFn = function() {\n this.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 and removes the associated dispose listener\n *\n * @param {Number} intervalId The id of the interval to clear\n * @return {Number} Returns the interval ID\n * @method clearInterval\n */\n clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n const disposeFn = function() {};\n\n disposeFn.guid = `vjs-interval-${intervalId}`;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n }\n\n /**\n * Registers a component\n *\n * @param {String} name Name of the component to register\n * @param {Object} comp The component to register\n * @static\n * @method registerComponent\n */\n static registerComponent(name, comp) {\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n Component.components_[name] = comp;\n return comp;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getComponent(name) {\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} component was added to the videojs object when it should be registered using videojs.registerComponent(name, component)`);\n return window.videojs[name];\n }\n }\n\n /**\n * Sets up the constructor using the supplied init method\n * or uses the init of the parent object\n *\n * @param {Object} props An object of properties\n * @static\n * @deprecated\n * @method extend\n */\n static extend(props) {\n props = props || {};\n\n log.warn('Component.extend({}) has been deprecated, use videojs.extend(Component, {}) instead');\n\n // Set up the constructor using the supplied init method\n // or using the init of the parent object\n // Make sure to check the unobfuscated version for external libs\n let init = props.init || props.init || this.prototype.init || this.prototype.init || function() {};\n // In Resig's simple class inheritance (previously used) the constructor\n // is a function that calls `this.init.apply(arguments)`\n // However that would prevent us from using `ParentObject.call(this);`\n // in a Child constructor because the `this` in `this.init`\n // would still refer to the Child and cause an infinite loop.\n // We would instead have to do\n // `ParentObject.prototype.init.apply(this, arguments);`\n // Bleh. We're not creating a _super() function, so it's good to keep\n // the parent constructor reference simple.\n let subObj = function() {\n init.apply(this, arguments);\n };\n\n // Inherit from this object's prototype\n subObj.prototype = Object.create(this.prototype);\n // Reset the constructor property for subObj otherwise\n // instances of subObj would have the constructor of the parent Object\n subObj.prototype.constructor = subObj;\n\n // Make the class extendable\n subObj.extend = Component.extend;\n\n // Extend subObj's prototype with functions and other properties from props\n for (let name in props) {\n if (props.hasOwnProperty(name)) {\n subObj.prototype[name] = props[name];\n }\n }\n\n return subObj;\n }\n}\n\nComponent.registerComponent('Component', Component);\nexport default Component;\n","/**\n * @file audio-track-button.js\n */\nimport TrackButton from '../track-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport AudioTrackMenuItem from './audio-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TrackButton\n * @class AudioTrackButton\n */\nclass AudioTrackButton extends TrackButton {\n constructor(player, options = {}) {\n options.tracks = player.audioTracks && player.audioTracks();\n\n super(player, options);\n\n this.el_.setAttribute('aria-label', 'Audio Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-audio-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each audio track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems(items = []) {\n let tracks = this.player_.audioTracks && this.player_.audioTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n items.push(new AudioTrackMenuItem(this.player_, {\n // MenuItem is selectable\n 'selectable': true,\n 'track': track\n }));\n }\n\n return items;\n }\n}\n\nComponent.registerComponent('AudioTrackButton', AudioTrackButton);\nexport default AudioTrackButton;\n","/**\n * @file audio-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The audio track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class AudioTrackMenuItem\n */\nclass AudioTrackMenuItem extends MenuItem {\n constructor(player, options) {\n let track = options.track;\n let tracks = player.audioTracks();\n\n // Modify options for parent MenuItem class's init.\n options.label = track.label || track.language || 'Unknown';\n options.selected = track.enabled;\n\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', () => {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n }\n\n /**\n * Handle click on audio track\n *\n * @method handleClick\n */\n handleClick(event) {\n let tracks = this.player_.audioTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track === this.track) {\n track.enabled = true;\n }\n }\n }\n\n /**\n * Handle audio track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event) {\n this.selected(this.track.enabled);\n }\n}\n\nComponent.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem);\nexport default AudioTrackMenuItem;\n","/**\n * @file control-bar.js\n */\nimport Component from '../component.js';\n\n// Required children\nimport PlayToggle from './play-toggle.js';\nimport CurrentTimeDisplay from './time-controls/current-time-display.js';\nimport DurationDisplay from './time-controls/duration-display.js';\nimport TimeDivider from './time-controls/time-divider.js';\nimport RemainingTimeDisplay from './time-controls/remaining-time-display.js';\nimport LiveDisplay from './live-display.js';\nimport ProgressControl from './progress-control/progress-control.js';\nimport FullscreenToggle from './fullscreen-toggle.js';\nimport VolumeControl from './volume-control/volume-control.js';\nimport VolumeMenuButton from './volume-menu-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport ChaptersButton from './text-track-controls/chapters-button.js';\nimport DescriptionsButton from './text-track-controls/descriptions-button.js';\nimport SubtitlesButton from './text-track-controls/subtitles-button.js';\nimport CaptionsButton from './text-track-controls/captions-button.js';\nimport AudioTrackButton from './audio-track-controls/audio-track-button.js';\nimport PlaybackRateMenuButton from './playback-rate-menu/playback-rate-menu-button.js';\nimport CustomControlSpacer from './spacer-controls/custom-control-spacer.js';\n\n/**\n * Container of main controls\n *\n * @extends Component\n * @class ControlBar\n */\nclass ControlBar extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-control-bar',\n dir: 'ltr'\n }, {\n 'role': 'group' // The control bar is a group, so it can contain menuitems\n });\n }\n}\n\nControlBar.prototype.options_ = {\n children: [\n 'playToggle',\n 'volumeMenuButton',\n 'currentTimeDisplay',\n 'timeDivider',\n 'durationDisplay',\n 'progressControl',\n 'liveDisplay',\n 'remainingTimeDisplay',\n 'customControlSpacer',\n 'playbackRateMenuButton',\n 'chaptersButton',\n 'descriptionsButton',\n 'subtitlesButton',\n 'captionsButton',\n 'audioTrackButton',\n 'fullscreenToggle'\n ]\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\nexport default ControlBar;\n","/**\n * @file fullscreen-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n * @class FullscreenToggle\n */\nclass FullscreenToggle extends Button {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-fullscreen-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles click for full screen\n *\n * @method handleClick\n */\n handleClick() {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n this.controlText('Non-Fullscreen');\n } else {\n this.player_.exitFullscreen();\n this.controlText('Fullscreen');\n }\n }\n\n}\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\nexport default FullscreenToggle;\n","/**\n * @file live-display.js\n */\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * Displays the live indicator\n * TODO - Future make it click to snap to live\n *\n * @extends Component\n * @class LiveDisplay\n */\nclass LiveDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n this.updateShowing();\n this.on(this.player(), 'durationchange', this.updateShowing);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n var el = super.createEl('div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-live-display',\n innerHTML: `<span class=\"vjs-control-text\">${this.localize('Stream Type')}</span>${this.localize('LIVE')}`\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n updateShowing() {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n}\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\nexport default LiveDisplay;\n","/**\n * @file mute-toggle.js\n */\nimport Button from '../button';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\n\n/**\n * A button component for muting the audio\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MuteToggle\n */\nclass MuteToggle extends Button {\n\n constructor(player, options) {\n super(player, options);\n\n this.on(player, 'volumechange', this.update);\n\n // hide mute toggle if the current tech doesn't support volume control\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n\n this.on(player, 'loadstart', function() {\n this.update(); // We need to update the button to account for a default muted state.\n\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-mute-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click on mute\n *\n * @method handleClick\n */\n handleClick() {\n this.player_.muted( this.player_.muted() ? false : true );\n }\n\n /**\n * Update volume\n *\n * @method update\n */\n update() {\n var vol = this.player_.volume(),\n level = 3;\n\n if (vol === 0 || this.player_.muted()) {\n level = 0;\n } else if (vol < 0.33) {\n level = 1;\n } else if (vol < 0.67) {\n level = 2;\n }\n\n // Don't rewrite the button text if the actual text doesn't change.\n // This causes unnecessary and confusing information for screen reader users.\n // This check is needed because this function gets called every time the volume level is changed.\n let toMute = this.player_.muted() ? 'Unmute' : 'Mute';\n if (this.controlText() !== toMute) {\n this.controlText(toMute);\n }\n\n /* TODO improve muted icon classes */\n for (var i = 0; i < 4; i++) {\n Dom.removeElClass(this.el_, `vjs-vol-${i}`);\n }\n Dom.addElClass(this.el_, `vjs-vol-${level}`);\n }\n\n}\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\nexport default MuteToggle;\n","/**\n * @file play-toggle.js\n */\nimport Button from '../button.js';\nimport Component from '../component.js';\n\n/**\n * Button to toggle between play and pause\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PlayToggle\n */\nclass PlayToggle extends Button {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'play', this.handlePlay);\n this.on(player, 'pause', this.handlePause);\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-play-control ${super.buildCSSClass()}`;\n }\n\n /**\n * Handle click to toggle between play and pause\n *\n * @method handleClick\n */\n handleClick() {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n /**\n * Add the vjs-playing class to the element so it can change appearance\n *\n * @method handlePlay\n */\n handlePlay() {\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n this.controlText('Pause'); // change the button text to \"Pause\"\n }\n\n /**\n * Add the vjs-paused class to the element so it can change appearance\n *\n * @method handlePause\n */\n handlePause() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.controlText('Play'); // change the button text to \"Play\"\n }\n\n}\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\nexport default PlayToggle;\n","/**\n * @file playback-rate-menu-button.js\n */\nimport MenuButton from '../../menu/menu-button.js';\nimport Menu from '../../menu/menu.js';\nimport PlaybackRateMenuItem from './playback-rate-menu-item.js';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * The component for controlling the playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class PlaybackRateMenuButton\n */\nclass PlaybackRateMenuButton extends MenuButton {\n\n constructor(player, options){\n super(player, options);\n\n this.updateVisibility();\n this.updateLabel();\n\n this.on(player, 'loadstart', this.updateVisibility);\n this.on(player, 'ratechange', this.updateLabel);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl();\n\n this.labelEl_ = Dom.createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: 1.0\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-playback-rate ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu} Menu object populated with items\n * @method createMenu\n */\n createMenu() {\n let menu = new Menu(this.player());\n let rates = this.playbackRates();\n\n if (rates) {\n for (let i = rates.length - 1; i >= 0; i--) {\n menu.addChild(\n new PlaybackRateMenuItem(this.player(), { 'rate': rates[i] + 'x'})\n );\n }\n }\n\n return menu;\n }\n\n /**\n * Updates ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n }\n\n /**\n * Handle menu item click\n *\n * @method handleClick\n */\n handleClick() {\n // select next rate option\n let currentRate = this.player().playbackRate();\n let rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n let newRate = rates[0];\n for (let i = 0; i < rates.length ; i++) {\n if (rates[i] > currentRate) {\n newRate = rates[i];\n break;\n }\n }\n this.player().playbackRate(newRate);\n }\n\n /**\n * Get possible playback rates\n *\n * @return {Array} Possible playback rates\n * @method playbackRates\n */\n playbackRates() {\n return this.options_['playbackRates'] || (this.options_.playerOptions && this.options_.playerOptions['playbackRates']);\n }\n\n /**\n * Get whether playback rates is supported by the tech\n * and an array of playback rates exists\n *\n * @return {Boolean} Whether changing playback rate is supported\n * @method playbackRateSupported\n */\n playbackRateSupported() {\n return this.player().tech_\n && this.player().tech_['featuresPlaybackRate']\n && this.playbackRates()\n && this.playbackRates().length > 0\n ;\n }\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @method updateVisibility\n */\n updateVisibility() {\n if (this.playbackRateSupported()) {\n this.removeClass('vjs-hidden');\n } else {\n this.addClass('vjs-hidden');\n }\n }\n\n /**\n * Update button label when rate changed\n *\n * @method updateLabel\n */\n updateLabel() {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n }\n\n}\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\nexport default PlaybackRateMenuButton;\n","/**\n * @file playback-rate-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The specific menu item type for selecting a playback rate\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class PlaybackRateMenuItem\n */\nclass PlaybackRateMenuItem extends MenuItem {\n\n constructor(player, options){\n let label = options['rate'];\n let rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options['label'] = label;\n options['selected'] = rate === 1;\n super(player, options);\n\n this.label = label;\n this.rate = rate;\n\n this.on(player, 'ratechange', this.update);\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player().playbackRate(this.rate);\n }\n\n /**\n * Update playback rate with selected rate\n *\n * @method update\n */\n update() {\n this.selected(this.player().playbackRate() === this.rate);\n }\n\n}\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\nexport default PlaybackRateMenuItem;\n","/**\n * @file load-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\n\n/**\n * Shows load progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class LoadProgressBar\n */\nclass LoadProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'progress', this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-load-progress',\n innerHTML: `<span class=\"vjs-control-text\"><span>${this.localize('Loaded')}</span>: 0%</span>`\n });\n }\n\n /**\n * Update progress bar\n *\n * @method update\n */\n update() {\n let buffered = this.player_.buffered();\n let duration = this.player_.duration();\n let bufferedEnd = this.player_.bufferedEnd();\n let children = this.el_.children;\n\n // get the percent width of a time compared to the total end\n let percentify = function (time, end){\n let percent = (time / end) || 0; // no NaN\n return ((percent >= 1 ? 1 : percent) * 100) + '%';\n };\n\n // update the width of the progress bar\n this.el_.style.width = percentify(bufferedEnd, duration);\n\n // add child elements to represent the individual buffered time ranges\n for (let i = 0; i < buffered.length; i++) {\n let start = buffered.start(i);\n let end = buffered.end(i);\n let part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(Dom.createEl());\n }\n\n // set the percent based on the width of the progress bar (bufferedEnd)\n part.style.left = percentify(start, bufferedEnd);\n part.style.width = percentify(end - start, bufferedEnd);\n }\n\n // remove unused buffered range elements\n for (let i = children.length; i > buffered.length; i--) {\n this.el_.removeChild(children[i-1]);\n }\n }\n\n}\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\nexport default LoadProgressBar;\n","/**\n * @file mouse-time-display.js\n */\nimport window from 'global/window';\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport throttle from 'lodash-compat/function/throttle';\n\n/**\n * The Mouse Time Display component shows the time you will seek to\n * when hovering over the progress bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class MouseTimeDisplay\n */\nclass MouseTimeDisplay extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n if (options.playerOptions &&\n options.playerOptions.controlBar &&\n options.playerOptions.controlBar.progressControl &&\n options.playerOptions.controlBar.progressControl.keepTooltipsInside) {\n this.keepTooltipsInside = options.playerOptions.controlBar.progressControl.keepTooltipsInside;\n }\n\n if (this.keepTooltipsInside) {\n this.tooltip = Dom.createEl('div', {className: 'vjs-time-tooltip'});\n this.el().appendChild(this.tooltip);\n this.addClass('vjs-keep-tooltips-inside');\n }\n\n this.update(0, 0);\n\n player.on('ready', () => {\n this.on(player.controlBar.progressControl.el(), 'mousemove', throttle(Fn.bind(this, this.handleMouseMove), 25));\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-mouse-display'\n });\n }\n\n handleMouseMove(event) {\n let duration = this.player_.duration();\n let newTime = this.calculateDistance(event) * duration;\n let position = event.pageX - Dom.findElPosition(this.el().parentNode).left;\n\n this.update(newTime, position);\n }\n\n update(newTime, position) {\n let time = formatTime(newTime, this.player_.duration());\n\n this.el().style.left = position + 'px';\n this.el().setAttribute('data-current-time', time);\n\n if (this.keepTooltipsInside) {\n let clampedPosition = this.clampPosition_(position);\n let difference = position - clampedPosition + 1;\n let tooltipWidth = parseFloat(window.getComputedStyle(this.tooltip).width);\n let tooltipWidthHalf = tooltipWidth / 2;\n\n this.tooltip.innerHTML = time;\n this.tooltip.style.right = `-${tooltipWidthHalf - difference}px`;\n }\n }\n\n calculateDistance(event) {\n return Dom.getPointerPosition(this.el().parentNode, event).x;\n }\n\n /**\n * This takes in a horizontal position for the bar and returns a clamped position.\n * Clamped position means that it will keep the position greater than half the width\n * of the tooltip and smaller than the player width minus half the width o the tooltip.\n * It will only clamp the position if `keepTooltipsInside` option is set.\n *\n * @param {Number} position the position the bar wants to be\n * @return {Number} newPosition the (potentially) clamped position\n * @method clampPosition_\n */\n clampPosition_(position) {\n if (!this.keepTooltipsInside) {\n return position;\n }\n\n let playerWidth = parseFloat(window.getComputedStyle(this.player().el()).width);\n let tooltipWidth = parseFloat(window.getComputedStyle(this.tooltip).width);\n let tooltipWidthHalf = tooltipWidth / 2;\n let actualPosition = position;\n\n if (position < tooltipWidthHalf) {\n actualPosition = Math.ceil(tooltipWidthHalf);\n } else if (position > (playerWidth - tooltipWidthHalf)) {\n actualPosition = Math.floor(playerWidth - tooltipWidthHalf);\n }\n\n return actualPosition;\n }\n}\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\nexport default MouseTimeDisplay;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass PlayProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n\n if (options.playerOptions &&\n options.playerOptions.controlBar &&\n options.playerOptions.controlBar.progressControl &&\n options.playerOptions.controlBar.progressControl.keepTooltipsInside) {\n this.keepTooltipsInside = options.playerOptions.controlBar.progressControl.keepTooltipsInside;\n }\n\n if (this.keepTooltipsInside) {\n this.addClass('vjs-keep-tooltips-inside');\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-play-progress vjs-slider-bar',\n innerHTML: `<span class=\"vjs-control-text\"><span>${this.localize('Progress')}</span>: 0%</span>`\n });\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n this.el_.setAttribute('data-current-time', formatTime(time, this.player_.duration()));\n }\n\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\nexport default PlayProgressBar;\n","/**\n * @file progress-control.js\n */\nimport Component from '../../component.js';\nimport SeekBar from './seek-bar.js';\nimport MouseTimeDisplay from './mouse-time-display.js';\n\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class ProgressControl\n */\nclass ProgressControl extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-control vjs-control'\n });\n }\n}\n\nProgressControl.prototype.options_ = {\n children: [\n 'seekBar'\n ]\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\nexport default ProgressControl;\n","/**\n * @file seek-bar.js\n */\nimport window from 'global/window';\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport LoadProgressBar from './load-progress-bar.js';\nimport PlayProgressBar from './play-progress-bar.js';\nimport TooltipProgressBar from './tooltip-progress-bar.js';\nimport * as Fn from '../../utils/fn.js';\nimport formatTime from '../../utils/format-time.js';\nimport assign from 'object.assign';\n\n/**\n * Seek Bar and holder for the progress bars\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class SeekBar\n */\nclass SeekBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'timeupdate', this.updateProgress);\n this.on(player, 'ended', this.updateProgress);\n player.ready(Fn.bind(this, this.updateProgress));\n\n if (options.playerOptions &&\n options.playerOptions.controlBar &&\n options.playerOptions.controlBar.progressControl &&\n options.playerOptions.controlBar.progressControl.keepTooltipsInside) {\n this.keepTooltipsInside = options.playerOptions.controlBar.progressControl.keepTooltipsInside;\n }\n\n if (this.keepTooltipsInside) {\n this.tooltipProgressBar = this.addChild('TooltipProgressBar');\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': 'progress bar'\n });\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateProgress() {\n this.updateAriaAttributes(this.el_);\n\n if (this.keepTooltipsInside) {\n this.updateAriaAttributes(this.tooltipProgressBar.el_);\n this.tooltipProgressBar.el_.style.width = this.bar.el_.style.width;\n\n let playerWidth = parseFloat(window.getComputedStyle(this.player().el()).width);\n let tooltipWidth = parseFloat(window.getComputedStyle(this.tooltipProgressBar.tooltip).width);\n let tooltipStyle = this.tooltipProgressBar.el().style;\n tooltipStyle.maxWidth = Math.floor(playerWidth - (tooltipWidth / 2)) + 'px';\n tooltipStyle.minWidth = Math.ceil(tooltipWidth / 2) + 'px';\n tooltipStyle.right = `-${tooltipWidth / 2}px`;\n }\n }\n\n updateAriaAttributes(el) {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n el.setAttribute('aria-valuenow', (this.getPercent() * 100).toFixed(2)); // machine readable value of progress bar (percentage complete)\n el.setAttribute('aria-valuetext', formatTime(time, this.player_.duration())); // human readable value of progress bar (time complete)\n }\n\n /**\n * Get percentage of video played\n *\n * @return {Number} Percentage played\n * @method getPercent\n */\n getPercent() {\n let percent = this.player_.currentTime() / this.player_.duration();\n return percent >= 1 ? 1 : percent;\n }\n\n /**\n * Handle mouse down on seek bar\n *\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n super.handleMouseDown(event);\n\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n }\n\n /**\n * Handle mouse move on seek bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n let newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) { newTime = newTime - 0.1; }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n }\n\n /**\n * Handle mouse up on seek bar\n *\n * @method handleMouseUp\n */\n handleMouseUp(event) {\n super.handleMouseUp(event);\n\n this.player_.scrubbing(false);\n if (this.videoWasPlaying) {\n this.player_.play();\n }\n }\n\n /**\n * Move more quickly fast forward for keyboard-only users\n *\n * @method stepForward\n */\n stepForward() {\n this.player_.currentTime(this.player_.currentTime() + 5); // more quickly fast forward for keyboard-only users\n }\n\n /**\n * Move more quickly rewind for keyboard-only users\n *\n * @method stepBack\n */\n stepBack() {\n this.player_.currentTime(this.player_.currentTime() - 5); // more quickly rewind for keyboard-only users\n }\n\n}\n\nSeekBar.prototype.options_ = {\n children: [\n 'loadProgressBar',\n 'mouseTimeDisplay',\n 'playProgressBar'\n ],\n 'barName': 'playProgressBar'\n};\n\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\nexport default SeekBar;\n","/**\n * @file play-progress-bar.js\n */\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Shows play progress\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class PlayProgressBar\n */\nclass TooltipProgressBar extends Component {\n\n constructor(player, options){\n super(player, options);\n this.updateDataAttr();\n this.on(player, 'timeupdate', this.updateDataAttr);\n player.ready(Fn.bind(this, this.updateDataAttr));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-tooltip-progress-bar vjs-slider-bar',\n innerHTML: `<div class=\"vjs-time-tooltip\"></div>\n <span class=\"vjs-control-text\"><span>${this.localize('Progress')}</span>: 0%</span>`\n });\n\n this.tooltip = el.querySelector('.vjs-time-tooltip');\n\n return el;\n }\n\n updateDataAttr() {\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let formattedTime = formatTime(time, this.player_.duration());\n this.el_.setAttribute('data-current-time', formattedTime);\n this.tooltip.innerHTML = formattedTime;\n }\n\n}\n\nComponent.registerComponent('TooltipProgressBar', TooltipProgressBar);\nexport default TooltipProgressBar;\n","/**\n * @file custom-control-spacer.js\n */\nimport Spacer from './spacer.js';\nimport Component from '../../component.js';\n\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n * @class CustomControlSpacer\n */\nclass CustomControlSpacer extends Spacer {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-custom-control-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl({\n className: this.buildCSSClass(),\n });\n\n // No-flex/table-cell mode requires there be some content\n // in the cell to fill the remaining space of the table.\n el.innerHTML = ' ';\n return el;\n }\n}\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\nexport default CustomControlSpacer;\n","/**\n * @file spacer.js\n */\nimport Component from '../../component.js';\n\n/**\n * Just an empty spacer element that can be used as an append point for plugins, etc.\n * Also can be used to create space between elements when necessary.\n *\n * @extends Component\n * @class Spacer\n */\nclass Spacer extends Component {\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-spacer ${super.buildCSSClass()}`;\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n}\n\nComponent.registerComponent('Spacer', Spacer);\n\nexport default Spacer;\n","/**\n * @file caption-settings-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * The menu item for caption track settings menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class CaptionSettingsMenuItem\n */\n class CaptionSettingsMenuItem extends TextTrackMenuItem {\n\n constructor(player, options) {\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' settings',\n 'selectable': false,\n 'default': false,\n mode: 'disabled'\n };\n\n // CaptionSettingsMenuItem has no concept of 'selected'\n options['selectable'] = false;\n\n super(player, options);\n this.addClass('vjs-texttrack-settings');\n this.controlText(', opens ' + options['kind'] + ' settings dialog');\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n this.player().getChild('textTrackSettings').show();\n this.player().getChild('textTrackSettings').el_.focus();\n }\n\n}\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\nexport default CaptionSettingsMenuItem;\n","/**\n * @file captions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport CaptionSettingsMenuItem from './caption-settings-menu-item.js';\n\n/**\n * The button component for toggling and selecting captions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class CaptionsButton\n */\nclass CaptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Captions Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-captions-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Update caption menu items\n *\n * @method update\n */\n update() {\n let threshold = 2;\n super.update();\n\n // if native, then threshold is 1 because no settings button\n if (this.player().tech_ && this.player().tech_['featuresNativeTextTracks']) {\n threshold = 1;\n }\n\n if (this.items && this.items.length > threshold) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Create caption menu items\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n if (!(this.player().tech_ && this.player().tech_['featuresNativeTextTracks'])) {\n items.push(new CaptionSettingsMenuItem(this.player_, { 'kind': this.kind_ }));\n }\n\n return super.createItems(items);\n }\n\n}\n\nCaptionsButton.prototype.kind_ = 'captions';\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\nexport default CaptionsButton;\n","/**\n * @file chapters-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport ChaptersTrackMenuItem from './chapters-track-menu-item.js';\nimport Menu from '../../menu/menu.js';\nimport * as Dom from '../../utils/dom.js';\nimport * as Fn from '../../utils/fn.js';\nimport toTitleCase from '../../utils/to-title-case.js';\nimport window from 'global/window';\n\n/**\n * The button component for toggling and selecting chapters\n * Chapters act much differently than other text tracks\n * Cues are navigation vs. other tracks of alternative languages\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class ChaptersButton\n */\nclass ChaptersButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Chapters Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-chapters-button ${super.buildCSSClass()}`;\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems() {\n let items = [];\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n /**\n * Create menu from chapter buttons\n *\n * @return {Menu} Menu of chapter buttons\n * @method createMenu\n */\n createMenu() {\n let tracks = this.player_.textTracks() || [];\n let chaptersTrack;\n let items = this.items || [];\n\n for (let i = tracks.length - 1; i >= 0; i--) {\n\n // We will always choose the last track as our chaptersTrack\n let track = tracks[i];\n\n if (track['kind'] === this.kind_) {\n chaptersTrack = track;\n\n break;\n }\n }\n\n let menu = this.menu;\n if (menu === undefined) {\n menu = new Menu(this.player_);\n let title = Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.kind_),\n tabIndex: -1\n });\n menu.children_.unshift(title);\n Dom.insertElFirst(title, menu.contentEl());\n } else {\n // We will empty out the menu children each time because we want a \n // fresh new menu child list each time\n items.forEach(item => menu.removeChild(item));\n // Empty out the ChaptersButton menu items because we no longer need them\n items = [];\n }\n\n if (chaptersTrack && chaptersTrack.cues == null) {\n chaptersTrack['mode'] = 'hidden';\n\n let remoteTextTrackEl = this.player_.remoteTextTrackEls().getTrackElementByTrack_(chaptersTrack);\n\n if (remoteTextTrackEl) {\n remoteTextTrackEl.addEventListener('load', (event) => this.update());\n }\n }\n\n if (chaptersTrack && chaptersTrack.cues && chaptersTrack.cues.length > 0) {\n let cues = chaptersTrack['cues'], cue;\n\n for (let i = 0, l = cues.length; i < l; i++) {\n cue = cues[i];\n\n let mi = new ChaptersTrackMenuItem(this.player_, {\n 'track': chaptersTrack,\n 'cue': cue\n });\n\n items.push(mi);\n\n menu.addChild(mi);\n }\n }\n\n if (items.length > 0) {\n this.show();\n }\n // Assigning the value of items back to this.items for next iteration\n this.items = items;\n return menu;\n }\n}\n\nChaptersButton.prototype.kind_ = 'chapters';\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\nexport default ChaptersButton;\n","/**\n * @file chapters-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The chapter track menu item\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class ChaptersTrackMenuItem\n */\nclass ChaptersTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let cue = options['cue'];\n let currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = cue.text;\n options['selected'] = (cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n super(player, options);\n\n this.track = track;\n this.cue = cue;\n track.addEventListener('cuechange', Fn.bind(this, this.update));\n }\n\n /**\n * Handle click on menu item\n *\n * @method handleClick\n */\n handleClick() {\n super.handleClick();\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n }\n\n /**\n * Update chapter menu item\n *\n * @method update\n */\n update() {\n let cue = this.cue;\n let currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue['startTime'] <= currentTime && currentTime < cue['endTime']);\n }\n\n}\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\nexport default ChaptersTrackMenuItem;\n","/**\n * @file descriptions-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n/**\n * The button component for toggling and selecting descriptions\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class DescriptionsButton\n */\nclass DescriptionsButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label', 'Descriptions Menu');\n\n let tracks = player.textTracks();\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let disabled = false;\n\n // Check whether a track of a different kind is showing\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] !== this.kind_ && track['mode'] === 'showing') {\n disabled = true;\n break;\n }\n }\n\n // If another track is showing, disable this menu button\n if (disabled) {\n this.disable();\n } else {\n this.enable();\n }\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-descriptions-button ${super.buildCSSClass()}`;\n }\n\n}\n\nDescriptionsButton.prototype.kind_ = 'descriptions';\nDescriptionsButton.prototype.controlText_ = 'Descriptions';\n\nComponent.registerComponent('DescriptionsButton', DescriptionsButton);\nexport default DescriptionsButton;\n","/**\n * @file off-text-track-menu-item.js\n */\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport Component from '../../component.js';\n\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends TextTrackMenuItem\n * @class OffTextTrackMenuItem\n */\nclass OffTextTrackMenuItem extends TextTrackMenuItem {\n\n constructor(player, options){\n // Create pseudo track info\n // Requires options['kind']\n options['track'] = {\n 'kind': options['kind'],\n 'player': player,\n 'label': options['kind'] + ' off',\n 'default': false,\n 'mode': 'disabled'\n };\n\n // MenuItem is selectable\n options['selectable'] = true;\n\n super(player, options);\n this.selected(true);\n }\n\n /**\n * Handle text track change\n *\n * @param {Object} event Event object\n * @method handleTracksChange\n */\n handleTracksChange(event){\n let tracks = this.player().textTracks();\n let selected = true;\n\n for (let i = 0, l = tracks.length; i < l; i++) {\n let track = tracks[i];\n if (track['kind'] === this.track['kind'] && track['mode'] === 'showing') {\n selected = false;\n break;\n }\n }\n\n this.selected(selected);\n }\n\n}\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\nexport default OffTextTrackMenuItem;\n","/**\n * @file subtitles-button.js\n */\nimport TextTrackButton from './text-track-button.js';\nimport Component from '../../component.js';\n\n/**\n * The button component for toggling and selecting subtitles\n *\n * @param {Object} player Player object\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends TextTrackButton\n * @class SubtitlesButton\n */\nclass SubtitlesButton extends TextTrackButton {\n\n constructor(player, options, ready){\n super(player, options, ready);\n this.el_.setAttribute('aria-label','Subtitles Menu');\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n return `vjs-subtitles-button ${super.buildCSSClass()}`;\n }\n\n}\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\nexport default SubtitlesButton;\n","/**\n * @file text-track-button.js\n */\nimport TrackButton from '../track-button.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport TextTrackMenuItem from './text-track-menu-item.js';\nimport OffTextTrackMenuItem from './off-text-track-menu-item.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TextTrackButton\n */\nclass TextTrackButton extends TrackButton {\n\n constructor(player, options = {}){\n options.tracks = player.textTracks();\n\n super(player, options);\n }\n\n /**\n * Create a menu item for each text track\n *\n * @return {Array} Array of menu items\n * @method createItems\n */\n createItems(items=[]) {\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, { 'kind': this.kind_ }));\n\n let tracks = this.player_.textTracks();\n\n if (!tracks) {\n return items;\n }\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // only add tracks that are of the appropriate kind and have a label\n if (track['kind'] === this.kind_) {\n items.push(new TextTrackMenuItem(this.player_, {\n // MenuItem is selectable\n 'selectable': true,\n 'track': track\n }));\n }\n }\n\n return items;\n }\n\n}\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\nexport default TextTrackButton;\n","/**\n * @file text-track-menu-item.js\n */\nimport MenuItem from '../../menu/menu-item.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuItem\n * @class TextTrackMenuItem\n */\nclass TextTrackMenuItem extends MenuItem {\n\n constructor(player, options){\n let track = options['track'];\n let tracks = player.textTracks();\n\n // Modify options for parent MenuItem class's init.\n options['label'] = track['label'] || track['language'] || 'Unknown';\n options['selected'] = track['default'] || track['mode'] === 'showing';\n\n super(player, options);\n\n this.track = track;\n\n if (tracks) {\n let changeHandler = Fn.bind(this, this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n this.on('dispose', function() {\n tracks.removeEventListener('change', changeHandler);\n });\n }\n\n // iOS7 doesn't dispatch change events to TextTrackLists when an\n // associated track's mode changes. Without something like\n // Object.observe() (also not present on iOS7), it's not\n // possible to detect changes to the mode attribute and polyfill\n // the change event. As a poor substitute, we manually dispatch\n // change events whenever the controls modify the mode.\n if (tracks && tracks.onchange === undefined) {\n let event;\n\n this.on(['tap', 'click'], function() {\n if (typeof window.Event !== 'object') {\n // Android 2.3 throws an Illegal Constructor error for window.Event\n try {\n event = new window.Event('change');\n } catch(err){}\n }\n\n if (!event) {\n event = document.createEvent('Event');\n event.initEvent('change', true, true);\n }\n\n tracks.dispatchEvent(event);\n });\n }\n }\n\n /**\n * Handle click on text track\n *\n * @method handleClick\n */\n handleClick(event) {\n let kind = this.track['kind'];\n let tracks = this.player_.textTracks();\n\n super.handleClick(event);\n\n if (!tracks) return;\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n if (track['kind'] !== kind) {\n continue;\n }\n\n if (track === this.track) {\n track['mode'] = 'showing';\n } else {\n track['mode'] = 'disabled';\n }\n }\n }\n\n /**\n * Handle text track change\n *\n * @method handleTracksChange\n */\n handleTracksChange(event){\n this.selected(this.track['mode'] === 'showing');\n }\n\n}\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\nexport default TextTrackMenuItem;\n","/**\n * @file current-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the current time\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class CurrentTimeDisplay\n */\nclass CurrentTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-current-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-current-time-display',\n // label the current time for screen reader users\n innerHTML: '<span class=\"vjs-control-text\">Current Time </span>' + '0:00',\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update current time display\n *\n * @method updateContent\n */\n updateContent() {\n // Allows for smooth scrubbing, when player can't keep up.\n let time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n let localizedText = this.localize('Current Time');\n let formattedTime = formatTime(time, this.player_.duration());\n if (formattedTime !== this.formattedTime_) {\n this.formattedTime_ = formattedTime;\n this.contentEl_.innerHTML = `<span class=\"vjs-control-text\">${localizedText}</span> ${formattedTime}`;\n }\n }\n\n}\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\nexport default CurrentTimeDisplay;\n","/**\n * @file duration-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the duration\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class DurationDisplay\n */\nclass DurationDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // this might need to be changed to 'durationchange' instead of 'timeupdate' eventually,\n // however the durationchange event fires before this.player_.duration() is set,\n // so the value cannot be written out using this method.\n // Once the order of durationchange and this.player_.duration() being set is figured out,\n // this can be updated.\n this.on(player, 'timeupdate', this.updateContent);\n this.on(player, 'loadedmetadata', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-duration vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-duration-display',\n // label the duration time for screen reader users\n innerHTML: `<span class=\"vjs-control-text\">${this.localize('Duration Time')}</span> 0:00`\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update duration time display\n *\n * @method updateContent\n */\n updateContent() {\n let duration = this.player_.duration();\n if (duration && this.duration_ !== duration) {\n this.duration_ = duration;\n let localizedText = this.localize('Duration Time');\n let formattedTime = formatTime(duration);\n this.contentEl_.innerHTML = `<span class=\"vjs-control-text\">${localizedText}</span> ${formattedTime}`; // label the duration time for screen reader users\n }\n }\n\n}\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\nexport default DurationDisplay;\n","/**\n * @file remaining-time-display.js\n */\nimport Component from '../../component.js';\nimport * as Dom from '../../utils/dom.js';\nimport formatTime from '../../utils/format-time.js';\n\n/**\n * Displays the time left in the video\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class RemainingTimeDisplay\n */\nclass RemainingTimeDisplay extends Component {\n\n constructor(player, options){\n super(player, options);\n\n this.on(player, 'timeupdate', this.updateContent);\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = super.createEl('div', {\n className: 'vjs-remaining-time vjs-time-control vjs-control'\n });\n\n this.contentEl_ = Dom.createEl('div', {\n className: 'vjs-remaining-time-display',\n // label the remaining time for screen reader users\n innerHTML: `<span class=\"vjs-control-text\">${this.localize('Remaining Time')}</span> -0:00`,\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n }\n\n /**\n * Update remaining time display\n *\n * @method updateContent\n */\n updateContent() {\n if (this.player_.duration()) {\n const localizedText = this.localize('Remaining Time');\n const formattedTime = formatTime(this.player_.remainingTime());\n if (formattedTime !== this.formattedTime_) {\n this.formattedTime_ = formattedTime;\n this.contentEl_.innerHTML = `<span class=\"vjs-control-text\">${localizedText}</span> -${formattedTime}`;\n }\n }\n\n // Allows for smooth scrubbing, when player can't keep up.\n // var time = (this.player_.scrubbing()) ? this.player_.getCache().currentTime : this.player_.currentTime();\n // this.contentEl_.innerHTML = vjs.formatTime(time, this.player_.duration());\n }\n\n}\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\nexport default RemainingTimeDisplay;\n","/**\n * @file time-divider.js\n */\nimport Component from '../../component.js';\n\n/**\n * The separator between the current time and duration.\n * Can be hidden if it's not needed in the design.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class TimeDivider\n */\nclass TimeDivider extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '<div><span>/</span></div>'\n });\n }\n\n}\n\nComponent.registerComponent('TimeDivider', TimeDivider);\nexport default TimeDivider;\n","/**\n * @file track-button.js\n */\nimport MenuButton from '../menu/menu-button.js';\nimport Component from '../component.js';\nimport * as Fn from '../utils/fn.js';\n\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends MenuButton\n * @class TrackButton\n */\nclass TrackButton extends MenuButton {\n\n constructor(player, options){\n let tracks = options.tracks;\n\n super(player, options);\n\n if (this.items.length <= 1) {\n this.hide();\n }\n\n if (!tracks) {\n return;\n }\n\n let updateHandler = Fn.bind(this, this.update);\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n\n this.player_.on('dispose', function() {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n }\n\n}\n\nComponent.registerComponent('TrackButton', TrackButton);\nexport default TrackButton;\n","/**\n * @file volume-bar.js\n */\nimport Slider from '../../slider/slider.js';\nimport Component from '../../component.js';\nimport * as Fn from '../../utils/fn.js';\n\n// Required children\nimport VolumeLevel from './volume-level.js';\n\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Slider\n * @class VolumeBar\n */\nclass VolumeBar extends Slider {\n\n constructor(player, options){\n super(player, options);\n this.on(player, 'volumechange', this.updateARIAAttributes);\n player.ready(Fn.bind(this, this.updateARIAAttributes));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': 'volume level'\n });\n }\n\n /**\n * Handle mouse move on volume bar\n *\n * @method handleMouseMove\n */\n handleMouseMove(event) {\n this.checkMuted();\n this.player_.volume(this.calculateDistance(event));\n }\n\n checkMuted() {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n }\n\n /**\n * Get percent of volume level\n *\n * @retun {Number} Volume level percent\n * @method getPercent\n */\n getPercent() {\n if (this.player_.muted()) {\n return 0;\n } else {\n return this.player_.volume();\n }\n }\n\n /**\n * Increase volume level for keyboard users\n *\n * @method stepForward\n */\n stepForward() {\n this.checkMuted();\n this.player_.volume(this.player_.volume() + 0.1);\n }\n\n /**\n * Decrease volume level for keyboard users\n *\n * @method stepBack\n */\n stepBack() {\n this.checkMuted();\n this.player_.volume(this.player_.volume() - 0.1);\n }\n\n /**\n * Update ARIA accessibility attributes\n *\n * @method updateARIAAttributes\n */\n updateARIAAttributes() {\n // Current value of volume bar as a percentage\n let volume = (this.player_.volume() * 100).toFixed(2);\n this.el_.setAttribute('aria-valuenow', volume);\n this.el_.setAttribute('aria-valuetext', volume + '%');\n }\n\n}\n\nVolumeBar.prototype.options_ = {\n children: [\n 'volumeLevel'\n ],\n 'barName': 'volumeLevel'\n};\n\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\nexport default VolumeBar;\n","/**\n * @file volume-control.js\n */\nimport Component from '../../component.js';\n\n// Required children\nimport VolumeBar from './volume-bar.js';\n\n/**\n * The component for controlling the volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeControl\n */\nclass VolumeControl extends Component {\n\n constructor(player, options){\n super(player, options);\n\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n }\n this.on(player, 'loadstart', function(){\n if (player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-control vjs-control'\n });\n }\n\n}\n\nVolumeControl.prototype.options_ = {\n children: [\n 'volumeBar'\n ]\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\nexport default VolumeControl;\n","/**\n * @file volume-level.js\n */\nimport Component from '../../component.js';\n\n/**\n * Shows volume level\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class VolumeLevel\n */\nclass VolumeLevel extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-volume-level',\n innerHTML: '<span class=\"vjs-control-text\"></span>'\n });\n }\n\n}\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\nexport default VolumeLevel;\n","/**\n * @file volume-menu-button.js\n */\nimport * as Fn from '../utils/fn.js';\nimport Component from '../component.js';\nimport Popup from '../popup/popup.js';\nimport PopupButton from '../popup/popup-button.js';\nimport MuteToggle from './mute-toggle.js';\nimport VolumeBar from './volume-control/volume-bar.js';\n\n/**\n * Button for volume popup\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends PopupButton\n * @class VolumeMenuButton\n */\nclass VolumeMenuButton extends PopupButton {\n\n constructor(player, options={}){\n // Default to inline\n if (options.inline === undefined) {\n options.inline = true;\n }\n\n // If the vertical option isn't passed at all, default to true.\n if (options.vertical === undefined) {\n // If an inline volumeMenuButton is used, we should default to using\n // a horizontal slider for obvious reasons.\n if (options.inline) {\n options.vertical = false;\n } else {\n options.vertical = true;\n }\n }\n\n // The vertical option needs to be set on the volumeBar as well,\n // since that will need to be passed along to the VolumeBar constructor\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = !!options.vertical;\n\n super(player, options);\n\n // Same listeners as MuteToggle\n this.on(player, 'volumechange', this.volumeUpdate);\n this.on(player, 'loadstart', this.volumeUpdate);\n\n // hide mute toggle if the current tech doesn't support volume control\n function updateVisibility() {\n if (player.tech_ && player.tech_['featuresVolumeControl'] === false) {\n this.addClass('vjs-hidden');\n } else {\n this.removeClass('vjs-hidden');\n }\n }\n\n updateVisibility.call(this);\n this.on(player, 'loadstart', updateVisibility);\n\n this.on(this.volumeBar, ['slideractive', 'focus'], function(){\n this.addClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['sliderinactive', 'blur'], function(){\n this.removeClass('vjs-slider-active');\n });\n\n this.on(this.volumeBar, ['focus'], function(){\n this.addClass('vjs-lock-showing');\n });\n\n this.on(this.volumeBar, ['blur'], function(){\n this.removeClass('vjs-lock-showing');\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n let orientationClass = '';\n if (!!this.options_.vertical) {\n orientationClass = 'vjs-volume-menu-button-vertical';\n } else {\n orientationClass = 'vjs-volume-menu-button-horizontal';\n }\n\n return `vjs-volume-menu-button ${super.buildCSSClass()} ${orientationClass}`;\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {Popup} The volume popup button\n * @method createPopup\n */\n createPopup() {\n let popup = new Popup(this.player_, {\n contentElType: 'div'\n });\n\n let vb = new VolumeBar(this.player_, this.options_.volumeBar);\n\n popup.addChild(vb);\n\n this.menuContent = popup;\n this.volumeBar = vb;\n\n this.attachVolumeBarEvents();\n\n return popup;\n }\n\n /**\n * Handle click on volume popup and calls super\n *\n * @method handleClick\n */\n handleClick() {\n MuteToggle.prototype.handleClick.call(this);\n super.handleClick();\n }\n\n attachVolumeBarEvents() {\n this.menuContent.on(['mousedown', 'touchdown'], Fn.bind(this, this.handleMouseDown));\n }\n\n handleMouseDown(event) {\n this.on(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));\n this.on(this.el_.ownerDocument, ['mouseup', 'touchend'], this.handleMouseUp);\n }\n\n handleMouseUp(event) {\n this.off(['mousemove', 'touchmove'], Fn.bind(this.volumeBar, this.volumeBar.handleMouseMove));\n }\n}\n\nVolumeMenuButton.prototype.volumeUpdate = MuteToggle.prototype.update;\nVolumeMenuButton.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('VolumeMenuButton', VolumeMenuButton);\nexport default VolumeMenuButton;\n","/**\n * @file error-display.js\n */\nimport Component from './component';\nimport ModalDialog from './modal-dialog';\n\nimport * as Dom from './utils/dom';\nimport mergeOptions from './utils/merge-options';\n\n/**\n * Display that an error has occurred making the video unplayable.\n *\n * @extends ModalDialog\n * @class ErrorDisplay\n */\nclass ErrorDisplay extends ModalDialog {\n\n /**\n * Constructor for error display modal.\n *\n * @param {Player} player\n * @param {Object} [options]\n */\n constructor(player, options) {\n super(player, options);\n this.on(player, 'error', this.open);\n }\n\n /**\n * Include the old class for backward-compatibility.\n *\n * This can be removed in 6.0.\n *\n * @method buildCSSClass\n * @deprecated\n * @return {String}\n */\n buildCSSClass() {\n return `vjs-error-display ${super.buildCSSClass()}`;\n }\n\n /**\n * Generates the modal content based on the player error.\n *\n * @return {String|Null}\n */\n content() {\n let error = this.player().error();\n return error ? this.localize(error.message) : '';\n }\n}\n\nErrorDisplay.prototype.options_ = mergeOptions(ModalDialog.prototype.options_, {\n fillAlways: true,\n temporary: false,\n uncloseable: true\n});\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\nexport default ErrorDisplay;\n","/**\n * @file event-target.js\n */\nimport * as Events from './utils/events.js';\n\nvar EventTarget = function() {};\n\nEventTarget.prototype.allowedEvents_ = {};\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 let ael = this.addEventListener;\n this.addEventListener = () => {};\n Events.on(this, type, fn);\n this.addEventListener = ael;\n};\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\nEventTarget.prototype.off = function(type, fn) {\n Events.off(this, type, fn);\n};\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\nEventTarget.prototype.one = function(type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n let ael = this.addEventListener;\n this.addEventListener = () => {};\n Events.one(this, type, fn);\n this.addEventListener = ael;\n};\n\nEventTarget.prototype.trigger = function(event) {\n let type = event.type || event;\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n event = Events.fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n Events.trigger(this, event);\n};\n// The standard DOM EventTarget.dispatchEvent() is aliased to trigger()\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\nexport default EventTarget;\n","import log from './utils/log';\n\n/*\n * @file extend.js\n *\n * A combination of node inherits and babel's inherits (after transpile).\n * Both work the same but node adds `super_` to the subClass\n * and Bable adds the superClass as __proto__. Both seem useful.\n */\nconst _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\n if (superClass) {\n // node\n subClass.super_ = superClass;\n }\n};\n\n/*\n * Function for subclassing using the same inheritance that\n * videojs uses internally\n * ```js\n * var Button = videojs.getComponent('Button');\n * ```\n * ```js\n * var MyButton = videojs.extend(Button, {\n * constructor: function(player, options) {\n * Button.call(this, player, options);\n * },\n * onClick: function() {\n * // doSomething\n * }\n * });\n * ```\n */\nconst extendFn = function(superClass, subClassMethods={}) {\n let subClass = function() {\n superClass.apply(this, arguments);\n };\n let methods = {};\n\n if (typeof subClassMethods === 'object') {\n if (typeof subClassMethods.init === 'function') {\n log.warn('Constructor logic via init() is deprecated; please use constructor() instead.');\n subClassMethods.constructor = subClassMethods.init;\n }\n if (subClassMethods.constructor !== Object.prototype.constructor) {\n subClass = subClassMethods.constructor;\n }\n methods = subClassMethods;\n } else if (typeof subClassMethods === 'function') {\n subClass = subClassMethods;\n }\n\n _inherits(subClass, superClass);\n\n // Extend subObj's prototype with functions and other properties from props\n for (var name in methods) {\n if (methods.hasOwnProperty(name)) {\n subClass.prototype[name] = methods[name];\n }\n }\n\n return subClass;\n};\n\nexport default extendFn;\n","/**\n * @file fullscreen-api.js\n */\nimport document from 'global/document';\n\n/*\n * Store the browser-specific methods for the fullscreen API\n * @type {Object|undefined}\n * @private\n */\nlet FullscreenApi = {};\n\n// browser API methods\n// map approach from Screenful.js - https://github.com/sindresorhus/screenfull.js\nconst apiMap = [\n // Spec: https://dvcs.w3.org/hg/fullscreen/raw-file/tip/Overview.html\n [\n 'requestFullscreen',\n 'exitFullscreen',\n 'fullscreenElement',\n 'fullscreenEnabled',\n 'fullscreenchange',\n 'fullscreenerror'\n ],\n // WebKit\n [\n 'webkitRequestFullscreen',\n 'webkitExitFullscreen',\n 'webkitFullscreenElement',\n 'webkitFullscreenEnabled',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Old WebKit (Safari 5.1)\n [\n 'webkitRequestFullScreen',\n 'webkitCancelFullScreen',\n 'webkitCurrentFullScreenElement',\n 'webkitCancelFullScreen',\n 'webkitfullscreenchange',\n 'webkitfullscreenerror'\n ],\n // Mozilla\n [\n 'mozRequestFullScreen',\n 'mozCancelFullScreen',\n 'mozFullScreenElement',\n 'mozFullScreenEnabled',\n 'mozfullscreenchange',\n 'mozfullscreenerror'\n ],\n // Microsoft\n [\n 'msRequestFullscreen',\n 'msExitFullscreen',\n 'msFullscreenElement',\n 'msFullscreenEnabled',\n 'MSFullscreenChange',\n 'MSFullscreenError'\n ]\n];\n\nlet specApi = apiMap[0];\nlet browserApi;\n\n// determine the supported set of functions\nfor (let 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 (let i=0; i<browserApi.length; i++) {\n FullscreenApi[specApi[i]] = browserApi[i];\n }\n}\n\nexport default FullscreenApi;\n","/**\n * @file loading-spinner.js\n */\nimport Component from './component';\n\n/* Loading Spinner\n================================================================================ */\n/**\n * Loading spinner for waiting events\n *\n * @extends Component\n * @class LoadingSpinner\n */\nclass LoadingSpinner extends Component {\n\n /**\n * Create the component's DOM element\n *\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-loading-spinner',\n dir: 'ltr'\n });\n }\n}\n\nComponent.registerComponent('LoadingSpinner', LoadingSpinner);\nexport default LoadingSpinner;\n","/**\n * @file media-error.js\n */\nimport assign from 'object.assign';\n\n/*\n * Custom MediaError to mimic the HTML5 MediaError\n *\n * @param {Number} code The media error code\n */\nlet MediaError = function(code){\n if (typeof code === 'number') {\n this.code = code;\n } else if (typeof code === 'string') {\n // default code is zero, so this is a custom error\n this.message = code;\n } else if (typeof code === 'object') { // object\n assign(this, code);\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\n * MediaError types\n *\n * @type {Number}\n */\nMediaError.prototype.code = 0;\n\n/*\n * An optional message to be shown with the error.\n * Message is not part of the HTML5 video spec\n * 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\n * to allow even more detail about the error.\n * For example the HLS plugin might provide the specific\n * HTTP status code that was returned when the error\n * occurred, then allowing a custom error overlay\n * to display more information.\n *\n * @type {Array}\n */\nMediaError.prototype.status = null;\n\nMediaError.errorTypes = [\n 'MEDIA_ERR_CUSTOM', // = 0\n 'MEDIA_ERR_ABORTED', // = 1\n 'MEDIA_ERR_NETWORK', // = 2\n 'MEDIA_ERR_DECODE', // = 3\n 'MEDIA_ERR_SRC_NOT_SUPPORTED', // = 4\n 'MEDIA_ERR_ENCRYPTED' // = 5\n];\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\nexport default MediaError;\n","/**\n * @file menu-button.js\n */\nimport ClickableComponent from '../clickable-component.js';\nimport Component from '../component.js';\nimport Menu from './menu.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * A button class with a popup menu\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuButton\n */\nclass MenuButton extends ClickableComponent {\n\n constructor(player, options={}){\n super(player, options);\n\n this.update();\n\n this.enabled_ = true;\n\n this.el_.setAttribute('aria-haspopup', 'true');\n this.el_.setAttribute('role', 'menuitem');\n this.on('keydown', this.handleSubmenuKeyPress);\n }\n\n /**\n * Update menu\n *\n * @method update\n */\n update() {\n let menu = this.createMenu();\n\n if (this.menu) {\n this.removeChild(this.menu);\n }\n\n this.menu = menu;\n this.addChild(menu);\n\n /**\n * Track the state of the menu button\n *\n * @type {Boolean}\n * @private\n */\n this.buttonPressed_ = false;\n this.el_.setAttribute('aria-expanded', 'false');\n\n if (this.items && this.items.length === 0) {\n this.hide();\n } else if (this.items && this.items.length > 1) {\n this.show();\n }\n }\n\n /**\n * Create menu\n *\n * @return {Menu} The constructed menu\n * @method createMenu\n */\n createMenu() {\n var menu = new Menu(this.player_);\n\n // Add a title list item to the top\n if (this.options_.title) {\n let title = Dom.createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n });\n menu.children_.unshift(title);\n Dom.insertElFirst(title, menu.contentEl());\n }\n\n this.items = this['createItems']();\n\n if (this.items) {\n // Add menu items to the menu\n for (var i = 0; i < this.items.length; i++) {\n menu.addItem(this.items[i]);\n }\n }\n\n return menu;\n }\n\n /**\n * Create the list of menu items. Specific to each subclass.\n *\n * @method createItems\n */\n createItems(){}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n /**\n * When you click the button it adds focus, which\n * will show the menu indefinitely.\n * So we'll remove focus when the mouse leaves the button.\n * Focus is needed for tab navigation.\n * Allow sub components to stack CSS class names\n *\n * @method handleClick\n */\n handleClick() {\n this.one('mouseout', Fn.bind(this, function(){\n this.menu.unlockShowing();\n this.el_.blur();\n }));\n if (this.buttonPressed_){\n this.unpressButton();\n } else {\n this.pressButton();\n }\n }\n\n /**\n * Handle key press on menu\n *\n * @param {Object} event Key press event\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n\n // Escape (27) key or Tab (9) key unpress the 'button'\n if (event.which === 27 || event.which === 9) {\n if (this.buttonPressed_) {\n this.unpressButton();\n }\n // Don't preventDefault for Tab key - we still want to lose focus\n if (event.which !== 9) {\n event.preventDefault();\n }\n // Up (38) key or Down (40) key press the 'button'\n } else if (event.which === 38 || event.which === 40) {\n if (!this.buttonPressed_) {\n this.pressButton();\n event.preventDefault();\n }\n } else {\n super.handleKeyPress(event);\n }\n }\n\n /**\n * Handle key press on submenu\n *\n * @param {Object} event Key press event\n * @method handleSubmenuKeyPress\n */\n handleSubmenuKeyPress(event) {\n\n // Escape (27) key or Tab (9) key unpress the 'button'\n if (event.which === 27 || event.which === 9){\n if (this.buttonPressed_){\n this.unpressButton();\n }\n // Don't preventDefault for Tab key - we still want to lose focus\n if (event.which !== 9) {\n event.preventDefault();\n }\n }\n }\n\n /**\n * Makes changes based on button pressed\n *\n * @method pressButton\n */\n pressButton() {\n if (this.enabled_) {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.el_.setAttribute('aria-expanded', 'true');\n this.menu.focus(); // set the focus into the submenu\n }\n }\n\n /**\n * Makes changes based on button unpressed\n *\n * @method unpressButton\n */\n unpressButton() {\n if (this.enabled_) {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-expanded', 'false');\n this.el_.focus(); // Set focus back to this menu button\n }\n }\n\n /**\n * Disable the menu button\n *\n * @return {Component}\n * @method disable\n */\n disable() {\n // Unpress, but don't force focus on this button\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.el_.setAttribute('aria-expanded', 'false');\n\n this.enabled_ = false;\n\n return super.disable();\n }\n\n /**\n * Enable the menu button\n *\n * @return {Component}\n * @method disable\n */\n enable() {\n this.enabled_ = true;\n\n return super.enable();\n }\n}\n\nComponent.registerComponent('MenuButton', MenuButton);\nexport default MenuButton;\n","/**\n * @file menu-item.js\n */\nimport ClickableComponent from '../clickable-component.js';\nimport Component from '../component.js';\nimport assign from 'object.assign';\n\n/**\n * The component for a menu item. `<li>`\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class MenuItem\n */\nclass MenuItem extends ClickableComponent {\n\n constructor(player, options) {\n super(player, options);\n\n this.selectable = options['selectable'];\n\n this.selected(options['selected']);\n\n if (this.selectable) {\n // TODO: May need to be either menuitemcheckbox or menuitemradio,\n // and may need logical grouping of menu items.\n this.el_.setAttribute('role', 'menuitemcheckbox');\n } else {\n this.el_.setAttribute('role', 'menuitem');\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String=} type Desc\n * @param {Object=} props Desc\n * @return {Element}\n * @method createEl\n */\n createEl(type, props, attrs) {\n return super.createEl('li', assign({\n className: 'vjs-menu-item',\n innerHTML: this.localize(this.options_['label']),\n tabIndex: -1\n }, props), attrs);\n }\n\n /**\n * Handle a click on the menu item, and set it to selected\n *\n * @method handleClick\n */\n handleClick() {\n this.selected(true);\n }\n\n /**\n * Set this menu item as selected or not\n *\n * @param {Boolean} selected\n * @method selected\n */\n selected(selected) {\n if (this.selectable) {\n if (selected) {\n this.addClass('vjs-selected');\n this.el_.setAttribute('aria-checked','true');\n // aria-checked isn't fully supported by browsers/screen readers,\n // so indicate selected state to screen reader in the control text.\n this.controlText(', selected');\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-checked','false');\n // Indicate un-selected state to screen reader\n // Note that a space clears out the selected state text\n this.controlText(' ');\n }\n }\n }\n}\n\nComponent.registerComponent('MenuItem', MenuItem);\nexport default MenuItem;\n","/**\n * @file menu.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Menu component is used to build pop up menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n * @class Menu\n */\nclass Menu extends Component {\n\n constructor (player, options) {\n super(player, options);\n\n this.focusedChild_ = -1;\n\n this.on('keydown', this.handleKeyPress);\n }\n\n /**\n * Add a menu item to the menu\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n //TODO: Need to set keyboard focus back to the menuButton\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n this.contentEl_.setAttribute('role', 'menu');\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.setAttribute('role', 'presentation');\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Menu Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n\n /**\n * Handle key press for menu\n *\n * @param {Object} event Event object\n * @method handleKeyPress\n */\n handleKeyPress (event) {\n if (event.which === 37 || event.which === 40) { // Left and Down Arrows\n event.preventDefault();\n this.stepForward();\n } else if (event.which === 38 || event.which === 39) { // Up and Right Arrows\n event.preventDefault();\n this.stepBack();\n }\n }\n\n /**\n * Move to next (lower) menu item for keyboard users\n *\n * @method stepForward\n */\n stepForward () {\n let stepChild = 0;\n\n if (this.focusedChild_ !== undefined) {\n stepChild = this.focusedChild_ + 1;\n }\n this.focus(stepChild);\n }\n\n /**\n * Move to previous (higher) menu item for keyboard users\n *\n * @method stepBack\n */\n stepBack () {\n let stepChild = 0;\n\n if (this.focusedChild_ !== undefined) {\n stepChild = this.focusedChild_ - 1;\n }\n this.focus(stepChild);\n }\n\n /**\n * Set focus on a menu item in the menu\n *\n * @param {Object|String} item Index of child item set focus on\n * @method focus\n */\n focus (item = 0) {\n let children = this.children().slice();\n let haveTitle = children.length && children[0].className &&\n /vjs-menu-title/.test(children[0].className);\n\n if (haveTitle) {\n children.shift();\n }\n\n if (children.length > 0) {\n if (item < 0) {\n item = 0;\n } else if (item >= children.length) {\n item = children.length - 1;\n }\n\n this.focusedChild_ = item;\n\n children[item].el_.focus();\n }\n }\n}\n\nComponent.registerComponent('Menu', Menu);\nexport default Menu;\n","/**\n * @file modal-dialog.js\n */\nimport * as Dom from './utils/dom';\nimport * as Fn from './utils/fn';\nimport log from './utils/log';\n\nimport Component from './component';\nimport CloseButton from './close-button';\n\nconst MODAL_CLASS_NAME = 'vjs-modal-dialog';\nconst 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 * @class ModalDialog\n */\nclass ModalDialog extends Component {\n\n /**\n * Constructor for modals.\n *\n * @param {Player} player\n * @param {Object} [options]\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 */\n constructor(player, options) {\n super(player, options);\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_ = Dom.createEl('div', {\n className: `${MODAL_CLASS_NAME}-content`\n }, {\n role: 'document'\n });\n\n this.descEl_ = Dom.createEl('p', {\n className: `${MODAL_CLASS_NAME}-description vjs-offscreen`,\n id: this.el().getAttribute('aria-describedby')\n });\n\n Dom.textContent(this.descEl_, this.description());\n this.el_.appendChild(this.descEl_);\n this.el_.appendChild(this.contentEl_);\n }\n\n /**\n * Create the modal's DOM element\n *\n * @method createEl\n * @return {Element}\n */\n createEl() {\n return super.createEl('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 /**\n * Build the modal's CSS class.\n *\n * @method buildCSSClass\n * @return {String}\n */\n buildCSSClass() {\n return `${MODAL_CLASS_NAME} vjs-hidden ${super.buildCSSClass()}`;\n }\n\n /**\n * Handles key presses on the document, looking for ESC, which closes\n * the modal.\n *\n * @method handleKeyPress\n * @param {Event} e\n */\n 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 */\n label() {\n return this.options_.label || this.localize('Modal Window');\n }\n\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {String}\n */\n description() {\n let 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 * @method open\n * @return {ModalDialog}\n */\n open() {\n if (!this.opened_) {\n let player = this.player();\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.wasPlaying_) {\n player.pause();\n }\n\n if (this.closeable()) {\n this.on(this.el_.ownerDocument, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n player.controls(false);\n this.show();\n this.el().setAttribute('aria-hidden', 'false');\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n return this;\n }\n\n /**\n * Whether or not the modal is opened currently.\n *\n * @method opened\n * @param {Boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {Boolean}\n */\n opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n return this.opened_;\n }\n\n /**\n * Closes the modal.\n *\n * @method close\n * @return {ModalDialog}\n */\n close() {\n if (this.opened_) {\n let player = this.player();\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_) {\n player.play();\n }\n\n if (this.closeable()) {\n this.off(this.el_.ownerDocument, 'keydown', Fn.bind(this, this.handleKeyPress));\n }\n\n player.controls(true);\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n this.trigger('modalclose');\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n return this;\n }\n\n /**\n * Whether or not the modal is closeable via the UI.\n *\n * @method closeable\n * @param {Boolean} [value]\n * If given as a Boolean, it will set the `closeable` option.\n *\n * @return {Boolean}\n */\n closeable(value) {\n if (typeof value === 'boolean') {\n let closeable = this.closeable_ = !!value;\n let 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 let temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton');\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 *\n * The content element will be emptied before this change takes place.\n *\n * @method fill\n * @return {ModalDialog}\n */\n fill() {\n return this.fillWith(this.content());\n }\n\n /**\n * Fill the modal's content element with arbitrary content.\n *\n * The content element will be emptied before this change takes place.\n *\n * @method fillWith\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n *\n * @return {ModalDialog}\n */\n fillWith(content) {\n let contentEl = this.contentEl();\n let parentEl = contentEl.parentNode;\n let nextSiblingEl = contentEl.nextSibling;\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 Dom.insertContent(contentEl, content);\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 return this;\n }\n\n /**\n * Empties the content element.\n *\n * This happens automatically anytime the modal is filled.\n *\n * @method empty\n * @return {ModalDialog}\n */\n empty() {\n this.trigger('beforemodalempty');\n Dom.emptyEl(this.contentEl());\n this.trigger('modalempty');\n return this;\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 * @method content\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 */\n content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n return this.content_;\n }\n}\n\n/*\n * Modal dialog default options.\n *\n * @type {Object}\n * @private\n */\nModalDialog.prototype.options_ = {\n temporary: true\n};\n\nComponent.registerComponent('ModalDialog', ModalDialog);\nexport default ModalDialog;\n","/**\n * @file player.js\n */\n // Subclasses Component\nimport Component from './component.js';\n\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Events from './utils/events.js';\nimport * as Dom from './utils/dom.js';\nimport * as Fn from './utils/fn.js';\nimport * as Guid from './utils/guid.js';\nimport * as browser from './utils/browser.js';\nimport log from './utils/log.js';\nimport toTitleCase from './utils/to-title-case.js';\nimport { createTimeRange } from './utils/time-ranges.js';\nimport { bufferedPercent } from './utils/buffer.js';\nimport * as stylesheet from './utils/stylesheet.js';\nimport FullscreenApi from './fullscreen-api.js';\nimport MediaError from './media-error.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport assign from 'object.assign';\nimport mergeOptions from './utils/merge-options.js';\nimport textTrackConverter from './tracks/text-track-list-converter.js';\nimport AudioTrackList from './tracks/audio-track-list.js';\nimport VideoTrackList from './tracks/video-track-list.js';\n\n// Include required child components (importing also registers them)\nimport MediaLoader from './tech/loader.js';\nimport PosterImage from './poster-image.js';\nimport TextTrackDisplay from './tracks/text-track-display.js';\nimport LoadingSpinner from './loading-spinner.js';\nimport BigPlayButton from './big-play-button.js';\nimport ControlBar from './control-bar/control-bar.js';\nimport ErrorDisplay from './error-display.js';\nimport TextTrackSettings from './tracks/text-track-settings.js';\nimport ModalDialog from './modal-dialog';\n\n// Require html5 tech, at least for disposing the original video tag\nimport Tech from './tech/tech.js';\nimport Html5 from './tech/html5.js';\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods are used to initialize a video.\n * ```js\n * var myPlayer = videojs('example_video_1');\n * ```\n * In the following example, the `data-setup` attribute tells the Video.js library to create a player instance when the library is ready.\n * ```html\n * <video id=\"example_video_1\" data-setup='{}' controls>\n * <source src=\"my-source.mp4\" type=\"video/mp4\">\n * </video>\n * ```\n * After an instance has been created it can be accessed globally using `Video('example_video_1')`.\n *\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Player\n */\nclass Player extends Component {\n\n /**\n * player's constructor function\n *\n * @constructs\n * @method init\n * @param {Element} tag The original video tag used for configuring options\n * @param {Object=} options Player options\n * @param {Function=} ready Ready callback function\n */\n constructor(tag, options, ready){\n // Make sure tag ID exists\n tag.id = tag.id || `vjs_video_${Guid.newGUID()}`;\n\n // Set Options\n // The options argument overrides options set in the video tag\n // which overrides globally set options.\n // This latter part coincides with the load order\n // (tag must exist before Player)\n options = assign(Player.getTagSettings(tag), options);\n\n // Delay the initialization of children because we need to set up\n // player properties first, and can't use `this` before `super()`\n options.initChildren = false;\n\n // Same with creating the element\n options.createEl = false;\n\n // we don't want the player to report touch activity on itself\n // see enableTouchActivity in Component\n options.reportTouchActivity = false;\n\n // Run base component initializing with new options\n super(null, options, ready);\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!this.options_ ||\n !this.options_.techOrder ||\n !this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' +\n 'videojs.options instead of just changing the ' +\n 'properties you want to override?');\n }\n\n this.tag = tag; // Store the original tag used to set options\n\n // Store the tag attributes used to restore html5 element\n this.tagAttributes = tag && Dom.getElAttributes(tag);\n\n // Update current language\n this.language(this.options_.language);\n\n // Update Supported Languages\n if (options.languages) {\n // Normalise player option languages to lowercase\n let languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function(name) {\n languagesToLower[name.toLowerCase()] = options.languages[name];\n });\n this.languages_ = languagesToLower;\n } else {\n this.languages_ = Player.prototype.options_.languages;\n }\n\n // Cache for video property values.\n this.cache_ = {};\n\n // Set poster\n this.poster_ = options.poster || '';\n\n // Set controls\n this.controls_ = !!options.controls;\n\n // Original tag settings stored in options\n // now remove immediately so native controls don't flash.\n // May be turned back on by HTML5 tech if nativeControlsForTouch is true\n tag.controls = false;\n\n /*\n * Store the internal state of scrubbing\n *\n * @private\n * @return {Boolean} True if the user is scrubbing\n */\n this.scrubbing_ = false;\n\n this.el_ = this.createEl();\n\n // We also want to pass the original player options to each component and plugin\n // as well so they don't need to reach back into the player for options later.\n // We also need to do another copy of this.options_ so we don't end up with\n // an infinite loop.\n let playerOptionsCopy = mergeOptions(this.options_);\n\n // Load plugins\n if (options.plugins) {\n let plugins = options.plugins;\n\n Object.getOwnPropertyNames(plugins).forEach(function(name){\n if (typeof this[name] === 'function') {\n this[name](plugins[name]);\n } else {\n log.error('Unable to find plugin:', name);\n }\n }, this);\n }\n\n this.options_.playerOptions = playerOptionsCopy;\n\n this.initChildren();\n\n // Set isAudio based on whether or not an audio tag was used\n this.isAudio(tag.nodeName.toLowerCase() === 'audio');\n\n // Update controls className. Can't do this when the controls are initially\n // set because the element doesn't exist yet.\n if (this.controls()) {\n this.addClass('vjs-controls-enabled');\n } else {\n this.addClass('vjs-controls-disabled');\n }\n\n // Set ARIA label and region role depending on player type\n this.el_.setAttribute('role', 'region');\n if (this.isAudio()) {\n this.el_.setAttribute('aria-label', 'audio player');\n } else {\n this.el_.setAttribute('aria-label', 'video player');\n }\n\n if (this.isAudio()) {\n this.addClass('vjs-audio');\n }\n\n if (this.flexNotSupported_()) {\n this.addClass('vjs-no-flex');\n }\n\n // TODO: Make this smarter. Toggle user state between touching/mousing\n // using events, since devices can have both touch and mouse events.\n // if (browser.TOUCH_ENABLED) {\n // this.addClass('vjs-touch-enabled');\n // }\n\n // iOS Safari has broken hover handling\n if (!browser.IS_IOS) {\n this.addClass('vjs-workinghover');\n }\n\n // Make player easily findable by ID\n Player.players[this.id_] = this;\n\n // When the player is first initialized, trigger activity so components\n // like the control bar show themselves if needed\n this.userActive(true);\n this.reportUserActivity();\n this.listenForUserActivity_();\n\n this.on('fullscreenchange', this.handleFullscreenChange_);\n this.on('stageclick', this.handleStageClick_);\n }\n\n /**\n * Destroys the video player and does any necessary cleanup\n * ```js\n * myPlayer.dispose();\n * ```\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @method dispose\n */\n dispose() {\n this.trigger('dispose');\n // prevent dispose from being called twice\n this.off('dispose');\n\n if (this.styleEl_ && this.styleEl_.parentNode) {\n this.styleEl_.parentNode.removeChild(this.styleEl_);\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n if (this.tag && this.tag.player) { this.tag.player = null; }\n if (this.el_ && this.el_.player) { this.el_.player = null; }\n\n if (this.tech_) { this.tech_.dispose(); }\n\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.el_ = super.createEl('div');\n let tag = this.tag;\n\n // Remove width/height attrs from tag so CSS can make it 100% width/height\n tag.removeAttribute('width');\n tag.removeAttribute('height');\n\n // Copy over all the attributes from the tag, including ID and class\n // ID will now reference player box, not the video tag\n const attrs = Dom.getElAttributes(tag);\n\n Object.getOwnPropertyNames(attrs).forEach(function(attr){\n // workaround so we don't totally break IE7\n // http://stackoverflow.com/questions/3653444/css-styles-not-applied-on-dynamic-elements-in-internet-explorer-7\n if (attr === 'class') {\n el.className = attrs[attr];\n } else {\n el.setAttribute(attr, attrs[attr]);\n }\n });\n\n // Update tag id/class for use as HTML5 playback tech\n // Might think we should do this after embedding in container so .vjs-tech class\n // doesn't flash 100% width/height, but class only applies with .video-js parent\n tag.playerId = tag.id;\n tag.id += '_html5_api';\n tag.className = 'vjs-tech';\n\n // Make player findable on elements\n tag.player = el.player = this;\n // Default state of video is paused\n this.addClass('vjs-paused');\n\n // Add a style element in the player that we'll use to set the width/height\n // of the player in a way that's still overrideable by CSS, just like the\n // video element\n if (window.VIDEOJS_NO_DYNAMIC_STYLE !== true) {\n this.styleEl_ = stylesheet.createStyleElement('vjs-styles-dimensions');\n let defaultsStyleEl = Dom.$('.vjs-styles-defaults');\n let head = Dom.$('head');\n head.insertBefore(this.styleEl_, defaultsStyleEl ? defaultsStyleEl.nextSibling : head.firstChild);\n }\n\n // Pass in the width/height/aspectRatio options which will update the style el\n this.width(this.options_.width);\n this.height(this.options_.height);\n this.fluid(this.options_.fluid);\n this.aspectRatio(this.options_.aspectRatio);\n\n // Hide any links within the video/audio tag, because IE doesn't hide them completely.\n let links = tag.getElementsByTagName('a');\n for (let i = 0; i < links.length; i++) {\n let linkEl = links.item(i);\n Dom.addElClass(linkEl, 'vjs-hidden');\n linkEl.setAttribute('hidden', 'hidden');\n }\n\n // insertElFirst seems to cause the networkState to flicker from 3 to 2, so\n // keep track of the original for later so we can know if the source originally failed\n tag.initNetworkState_ = tag.networkState;\n\n // Wrap video tag in div (el/box) container\n if (tag.parentNode) {\n tag.parentNode.insertBefore(el, tag);\n }\n\n // insert the tag as the first child of the player element\n // then manually add it to the children array so that this.addChild\n // will work properly for other components\n Dom.insertElFirst(tag, el); // Breaks iPhone, fixed in HTML5 setup.\n this.children_.unshift(tag);\n\n this.el_ = el;\n\n return el;\n }\n\n /**\n * Get/set player width\n *\n * @param {Number=} value Value for width\n * @return {Number} Width when getting\n * @method width\n */\n width(value) {\n return this.dimension('width', value);\n }\n\n /**\n * Get/set player height\n *\n * @param {Number=} value Value for height\n * @return {Number} Height when getting\n * @method height\n */\n height(value) {\n return this.dimension('height', value);\n }\n\n /**\n * Get/set dimension for player\n *\n * @param {String} dimension Either width or height\n * @param {Number=} value Value for dimension\n * @return {Component}\n * @method dimension\n */\n dimension(dimension, value) {\n let privDimension = dimension + '_';\n\n if (value === undefined) {\n return this[privDimension] || 0;\n }\n\n if (value === '') {\n // If an empty string is given, reset the dimension to be automatic\n this[privDimension] = undefined;\n } else {\n let parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log.error(`Improper value \"${value}\" supplied for for ${dimension}`);\n return this;\n }\n\n this[privDimension] = parsedVal;\n }\n\n this.updateStyleEl_();\n return this;\n }\n\n /**\n * Add/remove the vjs-fluid class\n *\n * @param {Boolean} bool Value of true adds the class, value of false removes the class\n * @method fluid\n */\n fluid(bool) {\n if (bool === undefined) {\n return !!this.fluid_;\n }\n\n this.fluid_ = !!bool;\n\n if (bool) {\n this.addClass('vjs-fluid');\n } else {\n this.removeClass('vjs-fluid');\n }\n }\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {String=} ratio Aspect ratio for player\n * @return aspectRatio\n * @method aspectRatio\n */\n aspectRatio(ratio) {\n if (ratio === undefined) {\n return this.aspectRatio_;\n }\n\n // Check for width:height format\n if (!/^\\d+\\:\\d+$/.test(ratio)) {\n throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.');\n }\n this.aspectRatio_ = ratio;\n\n // We're assuming if you set an aspect ratio you want fluid mode,\n // because in fixed mode you could calculate width and height yourself.\n this.fluid(true);\n\n this.updateStyleEl_();\n }\n\n /**\n * Update styles of the player element (height, width and aspect ratio)\n *\n * @method updateStyleEl_\n */\n updateStyleEl_() {\n if (window.VIDEOJS_NO_DYNAMIC_STYLE === true) {\n const width = typeof this.width_ === 'number' ? this.width_ : this.options_.width;\n const height = typeof this.height_ === 'number' ? this.height_ : this.options_.height;\n let techEl = this.tech_ && this.tech_.el();\n\n if (techEl) {\n if (width >= 0) {\n techEl.width = width;\n }\n if (height >= 0) {\n techEl.height = height;\n }\n }\n\n return;\n }\n\n let width;\n let height;\n let aspectRatio;\n let idClass;\n\n // The aspect ratio is either used directly or to calculate width and height.\n if (this.aspectRatio_ !== undefined && this.aspectRatio_ !== 'auto') {\n // Use any aspectRatio that's been specifically set\n aspectRatio = this.aspectRatio_;\n } else if (this.videoWidth()) {\n // Otherwise try to get the aspect ratio from the video metadata\n aspectRatio = this.videoWidth() + ':' + this.videoHeight();\n } else {\n // Or use a default. The video element's is 2:1, but 16:9 is more common.\n aspectRatio = '16:9';\n }\n\n // Get the ratio as a decimal we can use to calculate dimensions\n let ratioParts = aspectRatio.split(':');\n let ratioMultiplier = ratioParts[1] / ratioParts[0];\n\n if (this.width_ !== undefined) {\n // Use any width that's been specifically set\n width = this.width_;\n } else if (this.height_ !== undefined) {\n // Or calulate the width from the aspect ratio if a height has been set\n width = this.height_ / ratioMultiplier;\n } else {\n // Or use the video's metadata, or use the video el's default of 300\n width = this.videoWidth() || 300;\n }\n\n if (this.height_ !== undefined) {\n // Use any height that's been specifically set\n height = this.height_;\n } else {\n // Otherwise calculate the height from the ratio and the width\n height = width * ratioMultiplier;\n }\n\n // Ensure the CSS class is valid by starting with an alpha character\n if (/^[^a-zA-Z]/.test(this.id())) {\n idClass = 'dimensions-'+this.id();\n } else {\n idClass = this.id()+'-dimensions';\n }\n\n // Ensure the right class is still on the player for the style element\n this.addClass(idClass);\n\n stylesheet.setTextContent(this.styleEl_, `\n .${idClass} {\n width: ${width}px;\n height: ${height}px;\n }\n\n .${idClass}.vjs-fluid {\n padding-top: ${ratioMultiplier * 100}%;\n }\n `);\n }\n\n /**\n * Load the Media Playback Technology (tech)\n * Load/Create an instance of playback technology including element and API methods\n * And append playback element in player div.\n *\n * @param {String} techName Name of the playback technology\n * @param {String} source Video source\n * @method loadTech_\n * @private\n */\n loadTech_(techName, source) {\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (techName !== 'Html5' && this.tag) {\n Tech.getTech('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = techName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = assign({\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'source': source,\n 'playerId': this.id(),\n 'techId': `${this.id()}_${techName}_api`,\n 'videoTracks': this.videoTracks_,\n 'textTracks': this.textTracks_,\n 'audioTracks': this.audioTracks_,\n 'autoplay': this.options_.autoplay,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'vtt.js': this.options_['vtt.js']\n }, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source) {\n this.currentType_ = source.type;\n if (source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n this.cache_.src = source.src;\n }\n\n // Initialize tech instance\n let techComponent = Tech.getTech(techName);\n // Support old behavior of techs being registered as components.\n // Remove once that deprecated behavior is removed.\n if (!techComponent) {\n techComponent = Component.getComponent(techName);\n }\n this.tech_ = new techComponent(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(Fn.bind(this, this.handleTechReady_), true);\n\n textTrackConverter.jsonToTextTracks(this.textTracksJson_ || [], this.tech_);\n\n // Listen to all HTML5-defined events and trigger them on the player\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'canplay', this.handleTechCanPlay_);\n this.on(this.tech_, 'canplaythrough', this.handleTechCanPlayThrough_);\n this.on(this.tech_, 'playing', this.handleTechPlaying_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\n this.on(this.tech_, 'seeked', this.handleTechSeeked_);\n this.on(this.tech_, 'play', this.handleTechPlay_);\n this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_);\n this.on(this.tech_, 'pause', this.handleTechPause_);\n this.on(this.tech_, 'progress', this.handleTechProgress_);\n this.on(this.tech_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'suspend', this.handleTechSuspend_);\n this.on(this.tech_, 'abort', this.handleTechAbort_);\n this.on(this.tech_, 'emptied', this.handleTechEmptied_);\n this.on(this.tech_, 'stalled', this.handleTechStalled_);\n this.on(this.tech_, 'loadedmetadata', this.handleTechLoadedMetaData_);\n this.on(this.tech_, 'loadeddata', this.handleTechLoadedData_);\n this.on(this.tech_, 'timeupdate', this.handleTechTimeUpdate_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\n this.on(this.tech_, 'volumechange', this.handleTechVolumeChange_);\n this.on(this.tech_, 'texttrackchange', this.handleTechTextTrackChange_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n\n this.usingNativeControls(this.techGet_('controls'));\n\n if (this.controls() && !this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n\n // Add the tech element in the DOM if it was not already there\n // Make sure to not insert the original video element if using Html5\n if (this.tech_.el().parentNode !== this.el() && (techName !== 'Html5' || !this.tag)) {\n Dom.insertElFirst(this.tech_.el(), this.el());\n }\n\n // Get rid of the original video tag reference after the first tech is loaded\n if (this.tag) {\n this.tag.player = null;\n this.tag = null;\n }\n }\n\n /**\n * Unload playback technology\n *\n * @method unloadTech_\n * @private\n */\n unloadTech_() {\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n this.videoTracks_ = this.videoTracks();\n this.textTracks_ = this.textTracks();\n this.audioTracks_ = this.audioTracks();\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this.tech_);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n }\n\n /**\n * Return a reference to the current tech.\n * It will only return a reference to the tech if given an object with the\n * `IWillNotUseThisInPlugins` property on it. This is try and prevent misuse\n * of techs by plugins.\n *\n * @param {Object}\n * @return {Object} The Tech\n * @method tech\n */\n tech(safety) {\n if (safety && safety.IWillNotUseThisInPlugins) {\n return this.tech_;\n }\n let errorText = `\n Please make sure that you are not using this inside of a plugin.\n To disable this alert and error, please pass in an object with\n \\`IWillNotUseThisInPlugins\\` to the \\`tech\\` method. See\n https://github.com/videojs/video.js/issues/2617 for more info.\n `;\n window.alert(errorText);\n throw new Error(errorText);\n }\n\n /**\n * Set up click and touch listeners for the playback element\n *\n * On desktops, a click on the video itself will toggle playback,\n * on a mobile device a click on the video toggles controls.\n * (toggling controls is done by toggling the user state between active and\n * inactive)\n * A tap can signal that a user has become active, or has become inactive\n * e.g. a quick tap on an iPhone movie should reveal the controls. Another\n * quick tap should hide them again (signaling the user is in an inactive\n * viewing state)\n * In addition to this, we still want the user to be considered inactive after\n * a few seconds of inactivity.\n * Note: the only part of iOS interaction we can't mimic with this setup\n * is a touch and hold on the video element counting as activity in order to\n * keep the controls showing, but that shouldn't be an issue. A touch and hold\n * on any controls will still keep the user active\n *\n * @private\n * @method addTechControlsListeners_\n */\n addTechControlsListeners_() {\n // Make sure to remove all the previous listeners in case we are called multiple times.\n this.removeTechControlsListeners_();\n\n // Some browsers (Chrome & IE) don't trigger a click on a flash swf, but do\n // trigger mousedown/up.\n // http://stackoverflow.com/questions/1444562/javascript-onclick-event-over-flash-object\n // Any touch events are set to block the mousedown event from happening\n this.on(this.tech_, 'mousedown', this.handleTechClick_);\n\n // If the controls were hidden we don't want that to change without a tap event\n // so we'll check if the controls were already showing before reporting user\n // activity\n this.on(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.on(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.on(this.tech_, 'touchend', this.handleTechTouchEnd_);\n\n // The tap listener needs to come after the touchend listener because the tap\n // listener cancels out any reportedUserActivity when setting userActive(false)\n this.on(this.tech_, 'tap', this.handleTechTap_);\n }\n\n /**\n * Remove the listeners used for click and tap controls. This is needed for\n * toggling to controls disabled, where a tap/touch should do nothing.\n *\n * @method removeTechControlsListeners_\n * @private\n */\n removeTechControlsListeners_() {\n // We don't want to just use `this.off()` because there might be other needed\n // listeners added by techs that extend this.\n this.off(this.tech_, 'tap', this.handleTechTap_);\n this.off(this.tech_, 'touchstart', this.handleTechTouchStart_);\n this.off(this.tech_, 'touchmove', this.handleTechTouchMove_);\n this.off(this.tech_, 'touchend', this.handleTechTouchEnd_);\n this.off(this.tech_, 'mousedown', this.handleTechClick_);\n }\n\n /**\n * Player waits for the tech to be ready\n *\n * @method handleTechReady_\n * @private\n */\n handleTechReady_() {\n this.triggerReady();\n\n // Keep the same volume as before\n if (this.cache_.volume) {\n this.techCall_('setVolume', this.cache_.volume);\n }\n\n // Look if the tech found a higher resolution poster while loading\n this.handleTechPosterChange_();\n\n // Update the duration if available\n this.handleTechDurationChange_();\n\n // Chrome and Safari both have issues with autoplay.\n // In Safari (5.1.1), when we move the video element into the container div, autoplay doesn't work.\n // In Chrome (15), if you have autoplay + a poster + no controls, the video gets hidden (but audio plays)\n // This fixes both issues. Need to wait for API, so it updates displays correctly\n if (this.src() && this.tag && this.options_.autoplay && this.paused()) {\n try {\n delete this.tag.poster; // Chrome Fix. Fixed in Chrome v16.\n }\n catch (e) {\n log('deleting tag.poster throws in some browsers', e);\n }\n this.play();\n }\n }\n\n /**\n * Fired when the user agent begins looking for media data\n *\n * @private\n * @method handleTechLoadStart_\n */\n handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n\n // reset the error state\n this.error(null);\n\n // If it's already playing we want to trigger a firstplay event now.\n // The firstplay event relies on both the play and loadstart events\n // which can happen in any order for a new source\n if (!this.paused()) {\n this.trigger('loadstart');\n this.trigger('firstplay');\n } else {\n // reset the hasStarted state\n this.hasStarted(false);\n this.trigger('loadstart');\n }\n }\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @param {Boolean} hasStarted The value of true adds the class the value of false remove the class\n * @return {Boolean} Boolean value if has started\n * @private\n * @method hasStarted\n */\n hasStarted(hasStarted) {\n if (hasStarted !== undefined) {\n // only update if this is a new value\n if (this.hasStarted_ !== hasStarted) {\n this.hasStarted_ = hasStarted;\n if (hasStarted) {\n this.addClass('vjs-has-started');\n // trigger the firstplay event if this newly has played\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n }\n return this;\n }\n return !!this.hasStarted_;\n }\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @private\n * @method handleTechPlay_\n */\n handleTechPlay_() {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n\n // hide the poster when the user hits play\n // https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play\n this.hasStarted(true);\n\n this.trigger('play');\n }\n\n /**\n * Fired whenever the media begins waiting\n *\n * @private\n * @method handleTechWaiting_\n */\n handleTechWaiting_() {\n this.addClass('vjs-waiting');\n this.trigger('waiting');\n this.one('timeupdate', () => this.removeClass('vjs-waiting'));\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlay_\n */\n handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplay');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechCanPlayThrough_\n */\n handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n this.trigger('canplaythrough');\n }\n\n /**\n * A handler for events that signal that waiting has ended\n * which is not consistent between browsers. See #1351\n *\n * @private\n * @method handleTechPlaying_\n */\n handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n this.trigger('playing');\n }\n\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @private\n * @method handleTechSeeking_\n */\n handleTechSeeking_() {\n this.addClass('vjs-seeking');\n this.trigger('seeking');\n }\n\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @private\n * @method handleTechSeeked_\n */\n handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n this.trigger('seeked');\n }\n\n /**\n * Fired the first time a video is played\n * Not part of the HLS spec, and we're not sure if this is the best\n * implementation yet, so use sparingly. If you don't have a reason to\n * prevent playback, use `myPlayer.one('play');` instead.\n *\n * @private\n * @method handleTechFirstPlay_\n */\n handleTechFirstPlay_() {\n //If the first starttime attribute is specified\n //then we will start at the given offset in seconds\n if(this.options_.starttime){\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n }\n\n /**\n * Fired whenever the media has been paused\n *\n * @private\n * @method handleTechPause_\n */\n handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n this.trigger('pause');\n }\n\n /**\n * Fired while the user agent is downloading media data\n *\n * @private\n * @method handleTechProgress_\n */\n handleTechProgress_() {\n this.trigger('progress');\n }\n\n /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @private\n * @method handleTechEnded_\n */\n handleTechEnded_() {\n this.addClass('vjs-ended');\n if (this.options_.loop) {\n this.currentTime(0);\n this.play();\n } else if (!this.paused()) {\n this.pause();\n }\n\n this.trigger('ended');\n }\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @private\n * @method handleTechDurationChange_\n */\n handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n }\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {Object=} event Event object\n * @private\n * @method handleTechClick_\n */\n handleTechClick_(event) {\n // We're using mousedown to detect clicks thanks to Flash, but mousedown\n // will also be triggered with right-clicks, so we need to prevent that\n if (event.button !== 0) return;\n\n // When controls are disabled a click should not toggle playback because\n // the click is considered a control\n if (this.controls()) {\n if (this.paused()) {\n this.play();\n } else {\n this.pause();\n }\n }\n }\n\n /**\n * Handle a tap on the media element. It will toggle the user\n * activity state, which hides and shows the controls.\n *\n * @private\n * @method handleTechTap_\n */\n handleTechTap_() {\n this.userActive(!this.userActive());\n }\n\n /**\n * Handle touch to start\n *\n * @private\n * @method handleTechTouchStart_\n */\n handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n }\n\n /**\n * Handle touch to move\n *\n * @private\n * @method handleTechTouchMove_\n */\n handleTechTouchMove_() {\n if (this.userWasActive){\n this.reportUserActivity();\n }\n }\n\n /**\n * Handle touch to end\n *\n * @private\n * @method handleTechTouchEnd_\n */\n handleTechTouchEnd_(event) {\n // Stop the mouse events from also happening\n event.preventDefault();\n }\n\n /**\n * Fired when the player switches in or out of fullscreen mode\n *\n * @private\n * @method handleFullscreenChange_\n */\n handleFullscreenChange_() {\n if (this.isFullscreen()) {\n this.addClass('vjs-fullscreen');\n } else {\n this.removeClass('vjs-fullscreen');\n }\n }\n\n /**\n * native click events on the SWF aren't triggered on IE11, Win8.1RT\n * use stageclick events triggered from inside the SWF instead\n *\n * @private\n * @method handleStageClick_\n */\n handleStageClick_() {\n this.reportUserActivity();\n }\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @private\n * @method handleTechFullscreenChange_\n */\n handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n this.trigger('fullscreenchange');\n }\n\n /**\n * Fires when an error occurred during the loading of an audio/video\n *\n * @private\n * @method handleTechError_\n */\n handleTechError_() {\n let error = this.tech_.error();\n this.error(error);\n }\n\n /**\n * Fires when the browser is intentionally not getting media data\n *\n * @private\n * @method handleTechSuspend_\n */\n handleTechSuspend_() {\n this.trigger('suspend');\n }\n\n /**\n * Fires when the loading of an audio/video is aborted\n *\n * @private\n * @method handleTechAbort_\n */\n handleTechAbort_() {\n this.trigger('abort');\n }\n\n /**\n * Fires when the current playlist is empty\n *\n * @private\n * @method handleTechEmptied_\n */\n handleTechEmptied_() {\n this.trigger('emptied');\n }\n\n /**\n * Fires when the browser is trying to get media data, but data is not available\n *\n * @private\n * @method handleTechStalled_\n */\n handleTechStalled_() {\n this.trigger('stalled');\n }\n\n /**\n * Fires when the browser has loaded meta data for the audio/video\n *\n * @private\n * @method handleTechLoadedMetaData_\n */\n handleTechLoadedMetaData_() {\n this.trigger('loadedmetadata');\n }\n\n /**\n * Fires when the browser has loaded the current frame of the audio/video\n *\n * @private\n * @method handleTechLoadedData_\n */\n handleTechLoadedData_() {\n this.trigger('loadeddata');\n }\n\n /**\n * Fires when the current playback position has changed\n *\n * @private\n * @method handleTechTimeUpdate_\n */\n handleTechTimeUpdate_() {\n this.trigger('timeupdate');\n }\n\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @private\n * @method handleTechRateChange_\n */\n handleTechRateChange_() {\n this.trigger('ratechange');\n }\n\n /**\n * Fires when the volume has been changed\n *\n * @private\n * @method handleTechVolumeChange_\n */\n handleTechVolumeChange_() {\n this.trigger('volumechange');\n }\n\n /**\n * Fires when the text track has been changed\n *\n * @private\n * @method handleTechTextTrackChange_\n */\n handleTechTextTrackChange_() {\n this.trigger('texttrackchange');\n }\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * @method getCache\n */\n getCache() {\n return this.cache_;\n }\n\n /**\n * Pass values to the playback tech\n *\n * @param {String=} method Method\n * @param {Object=} arg Argument\n * @private\n * @method techCall_\n */\n techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n if (this.tech_ && !this.tech_.isReady_) {\n this.tech_.ready(function(){\n this[method](arg);\n }, true);\n\n // Otherwise call method now\n } else {\n try {\n this.tech_[method](arg);\n } catch(e) {\n log(e);\n throw e;\n }\n }\n }\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {String} method Tech method\n * @return {Method}\n * @private\n * @method techGet_\n */\n techGet_(method) {\n if (this.tech_ && this.tech_.isReady_) {\n\n // Flash likes to die and reload when you hide or reposition it.\n // In these cases the object methods go away and we get errors.\n // When that happens we'll catch the errors and inform tech that it's not ready any more.\n try {\n return this.tech_[method]();\n } catch(e) {\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log(`Video.js: ${method} method not defined for ${this.techName_} playback technology.`, e);\n } else {\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log(`Video.js: ${method} unavailable on ${this.techName_} playback technology element.`, e);\n this.tech_.isReady_ = false;\n } else {\n log(e);\n }\n }\n throw e;\n }\n }\n\n return;\n }\n\n /**\n * start media playback\n * ```js\n * myPlayer.play();\n * ```\n *\n * @return {Player} self\n * @method play\n */\n play() {\n // Only calls the tech's play if we already have a src loaded\n if (this.src() || this.currentSrc()) {\n this.techCall_('play');\n } else {\n this.tech_.one('loadstart', function() {\n this.play();\n });\n }\n\n console.log('this.src()', this.src());\n console.log('this.currentSrc()', this.currentSrc());\n\n return this;\n }\n\n /**\n * Pause the video playback\n * ```js\n * myPlayer.pause();\n * ```\n *\n * @return {Player} self\n * @method pause\n */\n pause() {\n this.techCall_('pause');\n return this;\n }\n\n /**\n * Check if the player is paused\n * ```js\n * var isPaused = myPlayer.paused();\n * var isPlaying = !myPlayer.paused();\n * ```\n *\n * @return {Boolean} false if the media is currently playing, or true otherwise\n * @method paused\n */\n paused() {\n // The initial state of paused should be true (in Safari it's actually false)\n return (this.techGet_('paused') === false) ? false : true;\n }\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is when the user\n * has clicked the progress bar handle and is dragging it along the progress bar.\n *\n * @param {Boolean} isScrubbing True/false the user is scrubbing\n * @return {Boolean} The scrubbing status when getting\n * @return {Object} The player when setting\n * @method scrubbing\n */\n scrubbing(isScrubbing) {\n if (isScrubbing !== undefined) {\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n\n return this;\n }\n\n return this.scrubbing_;\n }\n\n /**\n * Get or set the current time (in seconds)\n * ```js\n * // get\n * var whereYouAt = myPlayer.currentTime();\n * // set\n * myPlayer.currentTime(120); // 2 minutes into the video\n * ```\n *\n * @param {Number|String=} seconds The time to seek to\n * @return {Number} The time in seconds, when not setting\n * @return {Player} self, when the current time is set\n * @method currentTime\n */\n currentTime(seconds) {\n if (seconds !== undefined) {\n\n this.techCall_('setCurrentTime', seconds);\n\n return this;\n }\n\n // cache last currentTime and return. default to 0 seconds\n //\n // Caching the currentTime is meant to prevent a massive amount of reads on the tech's\n // currentTime when scrubbing, but may not provide much performance benefit afterall.\n // Should be tested. Also something has to read the actual current time or the cache will\n // never get updated.\n return this.cache_.currentTime = (this.techGet_('currentTime') || 0);\n }\n\n /**\n * Get the length in time of the video in seconds\n * ```js\n * var lengthOfVideo = myPlayer.duration();\n * ```\n * **NOTE**: The video must have started loading before the duration can be\n * known, and in the case of Flash, may not be known until the video starts\n * playing.\n *\n * @param {Number} seconds Duration when setting\n * @return {Number} The duration of the video in seconds when getting\n * @method duration\n */\n duration(seconds) {\n if (seconds === undefined) {\n return this.cache_.duration || 0;\n }\n\n seconds = parseFloat(seconds) || 0;\n\n // Standardize on Inifity for signaling video is live\n if (seconds < 0) {\n seconds = Infinity;\n }\n\n if (seconds !== this.cache_.duration) {\n // Cache the last set value for optimized scrubbing (esp. Flash)\n this.cache_.duration = seconds;\n\n if (seconds === Infinity) {\n this.addClass('vjs-live');\n } else {\n this.removeClass('vjs-live');\n }\n\n this.trigger('durationchange');\n }\n\n return this;\n }\n\n /**\n * Calculates how much time is left.\n * ```js\n * var timeLeft = myPlayer.remainingTime();\n * ```\n * Not a native video element function, but useful\n *\n * @return {Number} The time remaining in seconds\n * @method remainingTime\n */\n remainingTime() {\n return this.duration() - this.currentTime();\n }\n\n // http://dev.w3.org/html5/spec/video.html#dom-media-buffered\n // Buffered returns a timerange object.\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with the times of the video that have been downloaded\n * If you just want the percent of the video that's been downloaded,\n * use bufferedPercent.\n * ```js\n * // Number of different ranges of time have been buffered. Usually 1.\n * numberOfRanges = bufferedTimeRange.length,\n * // Time in seconds when the first range starts. Usually 0.\n * firstRangeStart = bufferedTimeRange.start(0),\n * // Time in seconds when the first range ends\n * firstRangeEnd = bufferedTimeRange.end(0),\n * // Length in seconds of the first time range\n * firstRangeLength = firstRangeEnd - firstRangeStart;\n * ```\n *\n * @return {Object} A mock TimeRange object (following HTML spec)\n * @method buffered\n */\n buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0,0);\n }\n\n return buffered;\n }\n\n /**\n * Get the percent (as a decimal) of the video that's been downloaded\n * ```js\n * var howMuchIsDownloaded = myPlayer.bufferedPercent();\n * ```\n * 0 means none, 1 means all.\n * (This method isn't in the HTML5 spec, but it's very convenient)\n *\n * @return {Number} A decimal between 0 and 1 representing the percent\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration());\n }\n\n /**\n * Get the ending time of the last buffered time range\n * This is used in the progress bar to encapsulate all time ranges.\n *\n * @return {Number} The end of the last buffered time range\n * @method bufferedEnd\n */\n bufferedEnd() {\n var buffered = this.buffered(),\n duration = this.duration(),\n end = buffered.end(buffered.length-1);\n\n if (end > duration) {\n end = duration;\n }\n\n return end;\n }\n\n /**\n * Get or set the current volume of the media\n * ```js\n * // get\n * var howLoudIsIt = myPlayer.volume();\n * // set\n * myPlayer.volume(0.5); // Set volume to half\n * ```\n * 0 is off (muted), 1.0 is all the way up, 0.5 is half way.\n *\n * @param {Number} percentAsDecimal The new volume as a decimal percent\n * @return {Number} The current volume when getting\n * @return {Player} self when setting\n * @method volume\n */\n volume(percentAsDecimal) {\n let vol;\n\n if (percentAsDecimal !== undefined) {\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal))); // Force value to between 0 and 1\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n return this;\n }\n\n // Default to 1 when returning current volume.\n vol = parseFloat(this.techGet_('volume'));\n return (isNaN(vol)) ? 1 : vol;\n }\n\n\n /**\n * Get the current muted state, or turn mute on or off\n * ```js\n * // get\n * var isVolumeMuted = myPlayer.muted();\n * // set\n * myPlayer.muted(true); // mute the volume\n * ```\n *\n * @param {Boolean=} muted True to mute, false to unmute\n * @return {Boolean} True if mute is on, false if not when getting\n * @return {Player} self when setting mute\n * @method muted\n */\n muted(muted) {\n if (muted !== undefined) {\n this.techCall_('setMuted', muted);\n return this;\n }\n return this.techGet_('muted') || false; // Default to false\n }\n\n // Check if current tech can support native fullscreen\n // (e.g. with built in controls like iOS, so not our flash swf)\n /**\n * Check to see if fullscreen is supported\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n }\n\n /**\n * Check if the player is in fullscreen mode\n * ```js\n * // get\n * var fullscreenOrNot = myPlayer.isFullscreen();\n * // set\n * myPlayer.isFullscreen(true); // tell the player it's in fullscreen\n * ```\n * NOTE: As of the latest HTML5 spec, isFullscreen is no longer an official\n * property and instead document.fullscreenElement is used. But isFullscreen is\n * still a valuable property for internal player workings.\n *\n * @param {Boolean=} isFS Update the player's fullscreen state\n * @return {Boolean} true if fullscreen false if not when getting\n * @return {Player} self when setting\n * @method isFullscreen\n */\n isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return this;\n }\n return !!this.isFullscreen_;\n }\n\n /**\n * Increase the size of the video to full screen\n * ```js\n * myPlayer.requestFullscreen();\n * ```\n * In some browsers, full screen is not supported natively, so it enters\n * \"full window mode\", where the video fills the browser window.\n * In browsers and devices that support native full screen, sometimes the\n * browser's default controls will be shown, and not the Video.js custom skin.\n * This includes most mobile devices (iOS, Android) and older versions of\n * Safari.\n *\n * @return {Player} self\n * @method requestFullscreen\n */\n requestFullscreen() {\n var fsApi = FullscreenApi;\n\n this.isFullscreen(true);\n\n if (fsApi.requestFullscreen) {\n // the browser supports going fullscreen at the element level so we can\n // take the controls fullscreen as well as the video\n\n // Trigger fullscreenchange event after change\n // We have to specifically add this each time, and remove\n // when canceling fullscreen. Otherwise if there's multiple\n // players on a page, they would all be reacting to the same fullscreen\n // events\n Events.on(document, fsApi.fullscreenchange, Fn.bind(this, function documentFullscreenChange(e){\n this.isFullscreen(document[fsApi.fullscreenElement]);\n\n // If cancelling fullscreen, remove event listener.\n if (this.isFullscreen() === false) {\n Events.off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\n\n } else if (this.tech_.supportsFullScreen()) {\n // we can't take the video.js controls fullscreen but we can go fullscreen\n // with native controls\n this.techCall_('enterFullScreen');\n } else {\n // fullscreen isn't supported so we'll just stretch the video element to\n // fill the viewport\n this.enterFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * Return the video to its normal size after having been in full screen mode\n * ```js\n * myPlayer.exitFullscreen();\n * ```\n *\n * @return {Player} self\n * @method exitFullscreen\n */\n exitFullscreen() {\n var fsApi = FullscreenApi;\n this.isFullscreen(false);\n\n // Check for browser element fullscreen support\n if (fsApi.requestFullscreen) {\n document[fsApi.exitFullscreen]();\n } else if (this.tech_.supportsFullScreen()) {\n this.techCall_('exitFullScreen');\n } else {\n this.exitFullWindow();\n this.trigger('fullscreenchange');\n }\n\n return this;\n }\n\n /**\n * When fullscreen isn't supported we can stretch the video container to as wide as the browser will let us.\n *\n * @method enterFullWindow\n */\n enterFullWindow() {\n this.isFullWindow = true;\n\n // Storing original doc overflow value to return to when fullscreen is off\n this.docOrigOverflow = document.documentElement.style.overflow;\n\n // Add listener for esc key to exit fullscreen\n Events.on(document, 'keydown', Fn.bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n Dom.addElClass(document.body, 'vjs-full-window');\n\n this.trigger('enterFullWindow');\n }\n\n /**\n * Check for call to either exit full window or full screen on ESC key\n *\n * @param {String} event Event to check for key press\n * @method fullWindowOnEscKey\n */\n fullWindowOnEscKey(event) {\n if (event.keyCode === 27) {\n if (this.isFullscreen() === true) {\n this.exitFullscreen();\n } else {\n this.exitFullWindow();\n }\n }\n }\n\n /**\n * Exit full window\n *\n * @method exitFullWindow\n */\n exitFullWindow() {\n this.isFullWindow = false;\n Events.off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n Dom.removeElClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n this.trigger('exitFullWindow');\n }\n\n /**\n * Check whether the player can play a given mimetype\n *\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n * @method canPlayType\n */\n canPlayType(type) {\n let can;\n\n // Loop through each playback technology in the options order\n for (let i = 0, j = this.options_.techOrder; i < j.length; i++) {\n let techName = toTitleCase(j[i]);\n let tech = Tech.getTech(techName);\n\n // Support old behavior of techs being registered as components.\n // Remove once that deprecated behavior is removed.\n if (!tech) {\n tech = Component.getComponent(techName);\n }\n\n // Check if the current tech is defined before continuing\n if (!tech) {\n log.error(`The \"${techName}\" tech is undefined. Skipped browser support check for that tech.`);\n continue;\n }\n\n // Check if the browser supports this technology\n if (tech.isSupported()) {\n can = tech.canPlayType(type);\n\n if (can) {\n return can;\n }\n }\n }\n\n return '';\n }\n\n /**\n * Select source based on tech-order or source-order\n * Uses source-order selection if `options.sourceOrder` is truthy. Otherwise,\n * defaults to tech-order selection\n *\n * @param {Array} sources The sources for a media asset\n * @return {Object|Boolean} Object of source and tech order, otherwise false\n * @method selectSource\n */\n selectSource(sources) {\n // Get only the techs specified in `techOrder` that exist and are supported by the\n // current platform\n let techs =\n this.options_.techOrder\n .map(toTitleCase)\n .map((techName) => {\n // `Component.getComponent(...)` is for support of old behavior of techs\n // being registered as components.\n // Remove once that deprecated behavior is removed.\n return [techName, Tech.getTech(techName) || Component.getComponent(techName)];\n })\n .filter(([techName, tech]) => {\n // Check if the current tech is defined before continuing\n if (tech) {\n // Check if the browser supports this technology\n return tech.isSupported();\n }\n\n log.error(`The \"${techName}\" tech is undefined. Skipped browser support check for that tech.`);\n return false;\n });\n\n // Iterate over each `innerArray` element once per `outerArray` element and execute\n // `tester` with both. If `tester` returns a non-falsy value, exit early and return\n // that value.\n let findFirstPassingTechSourcePair = function (outerArray, innerArray, tester) {\n let found;\n\n outerArray.some((outerChoice) => {\n return innerArray.some((innerChoice) => {\n found = tester(outerChoice, innerChoice);\n\n if (found) {\n return true;\n }\n });\n });\n\n return found;\n };\n\n let foundSourceAndTech;\n let flip = (fn) => (a, b) => fn(b, a);\n let finder = ([techName, tech], source) => {\n if (tech.canPlaySource(source, this.options_[techName.toLowerCase()])) {\n return {source: source, tech: techName};\n }\n };\n\n // Depending on the truthiness of `options.sourceOrder`, we swap the order of techs and sources\n // to select from them based on their priority.\n if (this.options_.sourceOrder) {\n // Source-first ordering\n foundSourceAndTech = findFirstPassingTechSourcePair(sources, techs, flip(finder));\n } else {\n // Tech-first ordering\n foundSourceAndTech = findFirstPassingTechSourcePair(techs, sources, finder);\n }\n\n return foundSourceAndTech || false;\n }\n\n /**\n * The source function updates the video source\n * There are three types of variables you can pass as the argument.\n * **URL String**: A URL to the the video file. Use this method if you are sure\n * the current playback technology (HTML5/Flash) can support the source you\n * provide. Currently only MP4 files can be used in both HTML5 and Flash.\n * ```js\n * myPlayer.src(\"http://www.example.com/path/to/video.mp4\");\n * ```\n * **Source Object (or element):* * A javascript object containing information\n * about the source file. Use this method if you want the player to determine if\n * it can support the file using the type information.\n * ```js\n * myPlayer.src({ type: \"video/mp4\", src: \"http://www.example.com/path/to/video.mp4\" });\n * ```\n * **Array of Source Objects:* * To provide multiple versions of the source so\n * that it can be played using HTML5 across browsers you can use an array of\n * source objects. Video.js will detect which version is supported and load that\n * file.\n * ```js\n * myPlayer.src([\n * { type: \"video/mp4\", src: \"http://www.example.com/path/to/video.mp4\" },\n * { type: \"video/webm\", src: \"http://www.example.com/path/to/video.webm\" },\n * { type: \"video/ogg\", src: \"http://www.example.com/path/to/video.ogv\" }\n * ]);\n * ```\n *\n * @param {String|Object|Array=} source The source URL, object, or array of sources\n * @return {String} The current video source when getting\n * @return {String} The player when setting\n * @method src\n */\n src(source) {\n if (source === undefined) {\n return this.techGet_('src');\n }\n\n let currentTech = Tech.getTech(this.techName_);\n // Support old behavior of techs being registered as components.\n // Remove once that deprecated behavior is removed.\n if (!currentTech) {\n currentTech = Component.getComponent(this.techName_);\n }\n\n // case: Array of source objects to choose from and pick the best to play\n if (Array.isArray(source)) {\n this.sourceList_(source);\n\n // case: URL String (http://myvideo...)\n } else if (typeof source === 'string') {\n // create a source object from the string\n this.src({ src: source });\n\n // case: Source object { src: '', type: '' ... }\n } else if (source instanceof Object) {\n // check if the source has a type and the loaded tech cannot play the source\n // if there's no type we'll just try the current tech\n if (source.type && !currentTech.canPlaySource(source, this.options_[this.techName_.toLowerCase()])) {\n // create a source list with the current source and send through\n // the tech loop to check for a compatible technology\n this.sourceList_([source]);\n } else {\n this.cache_.src = source.src;\n this.currentType_ = source.type || '';\n\n // wait until the tech is ready to set the source\n this.ready(function(){\n\n // The setSource tech method was added with source handlers\n // so older techs won't support it\n // We need to check the direct prototype for the case where subclasses\n // of the tech do not support source handlers\n if (currentTech.prototype.hasOwnProperty('setSource')) {\n this.techCall_('setSource', source);\n } else {\n this.techCall_('src', source.src);\n }\n\n if (this.options_.preload === 'auto') {\n this.load();\n }\n\n if (this.options_.autoplay) {\n this.play();\n }\n\n // Set the source synchronously if possible (#2326)\n }, true);\n }\n }\n\n return this;\n }\n\n /**\n * Handle an array of source objects\n *\n * @param {Array} sources Array of source objects\n * @private\n * @method sourceList_\n */\n sourceList_(sources) {\n var sourceTech = this.selectSource(sources);\n\n if (sourceTech) {\n if (sourceTech.tech === this.techName_) {\n // if this technology is already loaded, set the source\n this.src(sourceTech.source);\n } else {\n // load this technology with the chosen source\n this.loadTech_(sourceTech.tech, sourceTech.source);\n }\n } else {\n // We need to wrap this in a timeout to give folks a chance to add error event handlers\n this.setTimeout( function() {\n this.error({ code: 4, message: this.localize(this.options_.notSupportedMessage) });\n }, 0);\n\n // we could not find an appropriate tech, but let's still notify the delegate that this is it\n // this needs a better comment about why this is needed\n this.triggerReady();\n }\n }\n\n /**\n * Begin loading the src data.\n *\n * @return {Player} Returns the player\n * @method load\n */\n load() {\n this.techCall_('load');\n return this;\n }\n\n /**\n * Reset the player. Loads the first tech in the techOrder,\n * and calls `reset` on the tech`.\n *\n * @return {Player} Returns the player\n * @method reset\n */\n reset() {\n this.loadTech_(toTitleCase(this.options_.techOrder[0]), null);\n this.techCall_('reset');\n return this;\n }\n\n /**\n * Returns the fully qualified URL of the current source value e.g. http://mysite.com/video.mp4\n * Can be used in conjuction with `currentType` to assist in rebuilding the current source object.\n *\n * @return {String} The current source\n * @method currentSrc\n */\n currentSrc() {\n return this.techGet_('currentSrc') || this.cache_.src || '';\n }\n\n /**\n * Get the current source type e.g. video/mp4\n * This can allow you rebuild the current source object so that you could load the same\n * source and tech later\n *\n * @return {String} The source MIME type\n * @method currentType\n */\n currentType() {\n return this.currentType_ || '';\n }\n\n /**\n * Get or set the preload attribute\n *\n * @param {Boolean} value Boolean to determine if preload should be used\n * @return {String} The preload attribute value when getting\n * @return {Player} Returns the player when setting\n * @method preload\n */\n preload(value) {\n if (value !== undefined) {\n this.techCall_('setPreload', value);\n this.options_.preload = value;\n return this;\n }\n return this.techGet_('preload');\n }\n\n /**\n * Get or set the autoplay attribute.\n *\n * @param {Boolean} value Boolean to determine if video should autoplay\n * @return {String} The autoplay attribute value when getting\n * @return {Player} Returns the player when setting\n * @method autoplay\n */\n autoplay(value) {\n if (value !== undefined) {\n this.techCall_('setAutoplay', value);\n this.options_.autoplay = value;\n return this;\n }\n return this.techGet_('autoplay', value);\n }\n\n /**\n * Get or set the loop attribute on the video element.\n *\n * @param {Boolean} value Boolean to determine if video should loop\n * @return {String} The loop attribute value when getting\n * @return {Player} Returns the player when setting\n * @method loop\n */\n loop(value) {\n if (value !== undefined) {\n this.techCall_('setLoop', value);\n this.options_['loop'] = value;\n return this;\n }\n return this.techGet_('loop');\n }\n\n /**\n * Get or set the poster image source url\n *\n * ##### EXAMPLE:\n * ```js\n * // get\n * var currentPoster = myPlayer.poster();\n * // set\n * myPlayer.poster('http://example.com/myImage.jpg');\n * ```\n *\n * @param {String=} src Poster image source URL\n * @return {String} poster URL when getting\n * @return {Player} self when setting\n * @method poster\n */\n poster(src) {\n if (src === undefined) {\n return this.poster_;\n }\n\n // The correct way to remove a poster is to set as an empty string\n // other falsey values will throw errors\n if (!src) {\n src = '';\n }\n\n // update the internal poster variable\n this.poster_ = src;\n\n // update the tech's poster\n this.techCall_('setPoster', src);\n\n // alert components that the poster has been set\n this.trigger('posterchange');\n\n return this;\n }\n\n /**\n * Some techs (e.g. YouTube) can provide a poster source in an\n * asynchronous way. We want the poster component to use this\n * poster source so that it covers up the tech's controls.\n * (YouTube's play button). However we only want to use this\n * soruce if the player user hasn't set a poster through\n * the normal APIs.\n *\n * @private\n * @method handleTechPosterChange_\n */\n handleTechPosterChange_() {\n if (!this.poster_ && this.tech_ && this.tech_.poster) {\n this.poster_ = this.tech_.poster() || '';\n\n // Let components know the poster has changed\n this.trigger('posterchange');\n }\n }\n\n /**\n * Get or set whether or not the controls are showing.\n *\n * @param {Boolean} bool Set controls to showing or not\n * @return {Boolean} Controls are showing\n * @method controls\n */\n controls(bool) {\n if (bool !== undefined) {\n bool = !!bool; // force boolean\n // Don't trigger a change event unless it actually changed\n if (this.controls_ !== bool) {\n this.controls_ = bool;\n\n if (this.usingNativeControls()) {\n this.techCall_('setControls', bool);\n }\n\n if (bool) {\n this.removeClass('vjs-controls-disabled');\n this.addClass('vjs-controls-enabled');\n this.trigger('controlsenabled');\n\n if (!this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n } else {\n this.removeClass('vjs-controls-enabled');\n this.addClass('vjs-controls-disabled');\n this.trigger('controlsdisabled');\n\n if (!this.usingNativeControls()) {\n this.removeTechControlsListeners_();\n }\n }\n }\n return this;\n }\n return !!this.controls_;\n }\n\n /**\n * Toggle native controls on/off. Native controls are the controls built into\n * devices (e.g. default iPhone controls), Flash, or other techs\n * (e.g. Vimeo Controls)\n * **This should only be set by the current tech, because only the tech knows\n * if it can support native controls**\n *\n * @param {Boolean} bool True signals that native controls are on\n * @return {Player} Returns the player\n * @private\n * @method usingNativeControls\n */\n usingNativeControls(bool) {\n if (bool !== undefined) {\n bool = !!bool; // force boolean\n // Don't trigger a change event unless it actually changed\n if (this.usingNativeControls_ !== bool) {\n this.usingNativeControls_ = bool;\n if (bool) {\n this.addClass('vjs-using-native-controls');\n\n /**\n * player is using the native device controls\n *\n * @event usingnativecontrols\n * @memberof Player\n * @instance\n * @private\n */\n this.trigger('usingnativecontrols');\n } else {\n this.removeClass('vjs-using-native-controls');\n\n /**\n * player is using the custom HTML controls\n *\n * @event usingcustomcontrols\n * @memberof Player\n * @instance\n * @private\n */\n this.trigger('usingcustomcontrols');\n }\n }\n return this;\n }\n return !!this.usingNativeControls_;\n }\n\n /**\n * Set or get the current MediaError\n *\n * @param {*} err A MediaError or a String/Number to be turned into a MediaError\n * @return {MediaError|null} when getting\n * @return {Player} when setting\n * @method error\n */\n error(err) {\n if (err === undefined) {\n return this.error_ || null;\n }\n\n // restoring to default\n if (err === null) {\n this.error_ = err;\n this.removeClass('vjs-error');\n this.errorDisplay.close();\n return this;\n }\n\n // error instance\n if (err instanceof MediaError) {\n this.error_ = err;\n } else {\n this.error_ = new MediaError(err);\n }\n\n // add the vjs-error classname to the player\n this.addClass('vjs-error');\n\n // log the name of the error type and any message\n // ie8 just logs \"[object object]\" if you just log the error object\n log.error(`(CODE:${this.error_.code} ${MediaError.errorTypes[this.error_.code]})`, this.error_.message, this.error_);\n\n // fire an error event on the player\n this.trigger('error');\n\n return this;\n }\n\n /**\n * Returns whether or not the player is in the \"ended\" state.\n *\n * @return {Boolean} True if the player is in the ended state, false if not.\n * @method ended\n */\n ended() { return this.techGet_('ended'); }\n\n /**\n * Returns whether or not the player is in the \"seeking\" state.\n *\n * @return {Boolean} True if the player is in the seeking state, false if not.\n * @method seeking\n */\n seeking() { return this.techGet_('seeking'); }\n\n /**\n * Returns the TimeRanges of the media that are currently available\n * for seeking to.\n *\n * @return {TimeRanges} the seekable intervals of the media timeline\n * @method seekable\n */\n seekable() { return this.techGet_('seekable'); }\n\n /**\n * Report user activity\n *\n * @param {Object} event Event object\n * @method reportUserActivity\n */\n reportUserActivity(event) {\n this.userActivity_ = true;\n }\n\n /**\n * Get/set if user is active\n *\n * @param {Boolean} bool Value when setting\n * @return {Boolean} Value if user is active user when getting\n * @method userActive\n */\n userActive(bool) {\n if (bool !== undefined) {\n bool = !!bool;\n if (bool !== this.userActive_) {\n this.userActive_ = bool;\n if (bool) {\n // If the user was inactive and is now active we want to reset the\n // inactivity timer\n this.userActivity_ = true;\n this.removeClass('vjs-user-inactive');\n this.addClass('vjs-user-active');\n this.trigger('useractive');\n } else {\n // We're switching the state to inactive manually, so erase any other\n // activity\n this.userActivity_ = false;\n\n // Chrome/Safari/IE have bugs where when you change the cursor it can\n // trigger a mousemove event. This causes an issue when you're hiding\n // the cursor when the user is inactive, and a mousemove signals user\n // activity. Making it impossible to go into inactive mode. Specifically\n // this happens in fullscreen when we really need to hide the cursor.\n //\n // When this gets resolved in ALL browsers it can be removed\n // https://code.google.com/p/chromium/issues/detail?id=103041\n if(this.tech_) {\n this.tech_.one('mousemove', function(e){\n e.stopPropagation();\n e.preventDefault();\n });\n }\n\n this.removeClass('vjs-user-active');\n this.addClass('vjs-user-inactive');\n this.trigger('userinactive');\n }\n }\n return this;\n }\n return this.userActive_;\n }\n\n /**\n * Listen for user activity based on timeout value\n *\n * @private\n * @method listenForUserActivity_\n */\n listenForUserActivity_() {\n let mouseInProgress, lastMoveX, lastMoveY;\n\n let handleActivity = Fn.bind(this, this.reportUserActivity);\n\n let handleMouseMove = function(e) {\n // #1068 - Prevent mousemove spamming\n // Chrome Bug: https://code.google.com/p/chromium/issues/detail?id=366970\n if(e.screenX !== lastMoveX || e.screenY !== lastMoveY) {\n lastMoveX = e.screenX;\n lastMoveY = e.screenY;\n handleActivity();\n }\n };\n\n let handleMouseDown = function() {\n handleActivity();\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(mouseInProgress);\n // Setting userActivity=true now and setting the interval to the same time\n // as the activityCheck interval (250) should ensure we never miss the\n // next activityCheck\n mouseInProgress = this.setInterval(handleActivity, 250);\n };\n\n let handleMouseUp = function(event) {\n handleActivity();\n // Stop the interval that maintains activity if the mouse/touch is down\n this.clearInterval(mouseInProgress);\n };\n\n // Any mouse movement will be considered user activity\n this.on('mousedown', handleMouseDown);\n this.on('mousemove', handleMouseMove);\n this.on('mouseup', handleMouseUp);\n\n // Listen for keyboard navigation\n // Shouldn't need to use inProgress interval because of key repeat\n this.on('keydown', handleActivity);\n this.on('keyup', handleActivity);\n\n // Run an interval every 250 milliseconds instead of stuffing everything into\n // the mousemove/touchmove function itself, to prevent performance degradation.\n // `this.reportUserActivity` simply sets this.userActivity_ to true, which\n // then gets picked up by this loop\n // http://ejohn.org/blog/learning-from-twitter/\n let inactivityTimeout;\n let activityCheck = this.setInterval(function() {\n // Check to see if mouse/touch activity has happened\n if (this.userActivity_) {\n // Reset the activity tracker\n this.userActivity_ = false;\n\n // If the user state was inactive, set the state to active\n this.userActive(true);\n\n // Clear any existing inactivity timeout to start the timer over\n this.clearTimeout(inactivityTimeout);\n\n var timeout = this.options_['inactivityTimeout'];\n if (timeout > 0) {\n // In <timeout> milliseconds, if no more activity has occurred the\n // user will be considered inactive\n inactivityTimeout = this.setTimeout(function () {\n // Protect against the case where the inactivityTimeout can trigger just\n // before the next user activity is picked up by the activityCheck loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\n }\n }\n }, 250);\n }\n\n /**\n * Gets or sets the current playback rate. A playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed\n * playback, for instance.\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {Number} rate New playback rate to set.\n * @return {Number} Returns the new playback rate when setting\n * @return {Number} Returns the current playback rate when getting\n * @method playbackRate\n */\n playbackRate(rate) {\n if (rate !== undefined) {\n this.techCall_('setPlaybackRate', rate);\n return this;\n }\n\n if (this.tech_ && this.tech_['featuresPlaybackRate']) {\n return this.techGet_('playbackRate');\n } else {\n return 1.0;\n }\n }\n\n /**\n * Gets or sets the audio flag\n *\n * @param {Boolean} bool True signals that this is an audio player.\n * @return {Boolean} Returns true if player is audio, false if not when getting\n * @return {Player} Returns the player if setting\n * @private\n * @method isAudio\n */\n isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return this;\n }\n\n return !!this.isAudio_;\n }\n\n /**\n * Returns the current state of network activity for the element, from\n * the codes in the list below.\n * - NETWORK_EMPTY (numeric value 0)\n * The element has not yet been initialised. All attributes are in\n * their initial states.\n * - NETWORK_IDLE (numeric value 1)\n * The element's resource selection algorithm is active and has\n * selected a resource, but it is not actually using the network at\n * this time.\n * - NETWORK_LOADING (numeric value 2)\n * The user agent is actively trying to download data.\n * - NETWORK_NO_SOURCE (numeric value 3)\n * The element's resource selection algorithm is active, but it has\n * not yet found a resource to use.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#network-states\n * @return {Number} the current network activity state\n * @method networkState\n */\n networkState() {\n return this.techGet_('networkState');\n }\n\n /**\n * Returns a value that expresses the current state of the element\n * with respect to rendering the current playback position, from the\n * codes in the list below.\n * - HAVE_NOTHING (numeric value 0)\n * No information regarding the media resource is available.\n * - HAVE_METADATA (numeric value 1)\n * Enough of the resource has been obtained that the duration of the\n * resource is available.\n * - HAVE_CURRENT_DATA (numeric value 2)\n * Data for the immediate current playback position is available.\n * - HAVE_FUTURE_DATA (numeric value 3)\n * Data for the immediate current playback position is available, as\n * well as enough data for the user agent to advance the current\n * playback position in the direction of playback.\n * - HAVE_ENOUGH_DATA (numeric value 4)\n * The user agent estimates that enough data is available for\n * playback to proceed uninterrupted.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-readystate\n * @return {Number} the current playback rendering state\n * @method readyState\n */\n readyState() {\n return this.techGet_('readyState');\n }\n\n /**\n * Get a video track list\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist\n *\n * @return {VideoTrackList} thes current video track list\n * @method videoTracks\n */\n videoTracks() {\n // if we have not yet loadTech_, we create videoTracks_\n // these will be passed to the tech during loading\n if (!this.tech_) {\n this.videoTracks_ = this.videoTracks_ || new VideoTrackList();\n return this.videoTracks_;\n }\n\n return this.tech_.videoTracks();\n }\n\n /**\n * Get an audio track list\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist\n *\n * @return {AudioTrackList} thes current audio track list\n * @method audioTracks\n */\n audioTracks() {\n // if we have not yet loadTech_, we create videoTracks_\n // these will be passed to the tech during loading\n if (!this.tech_) {\n this.audioTracks_ = this.audioTracks_ || new AudioTrackList();\n return this.audioTracks_;\n }\n\n return this.tech_.audioTracks();\n }\n\n /*\n * Text tracks are tracks of timed text events.\n * Captions - text displayed over the video for the hearing impaired\n * Subtitles - text displayed over the video for those who don't understand language in the video\n * Chapters - text displayed in a menu allowing the user to jump to particular points (chapters) in the video\n * Descriptions (not supported yet) - audio descriptions that are read back to the user by a screen reading device\n */\n\n /**\n * Get an array of associated text tracks. captions, subtitles, chapters, descriptions\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {Array} Array of track objects\n * @method textTracks\n */\n textTracks() {\n // cannot use techGet_ directly because it checks to see whether the tech is ready.\n // Flash is unlikely to be ready in time but textTracks should still work.\n return this.tech_ && this.tech_['textTracks']();\n }\n\n /**\n * Get an array of remote text tracks\n *\n * @return {Array}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n return this.tech_ && this.tech_['remoteTextTracks']();\n }\n\n /**\n * Get an array of remote html track elements\n *\n * @return {HTMLTrackElement[]}\n * @method remoteTextTrackEls\n */\n remoteTextTrackEls() {\n return this.tech_ && this.tech_['remoteTextTrackEls']();\n }\n\n /**\n * Add a text track\n * In addition to the W3C settings we allow adding additional info through options.\n * http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {String} kind Captions, subtitles, chapters, descriptions, or metadata\n * @param {String=} label Optional label\n * @param {String=} language Optional language\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n return this.tech_ && this.tech_['addTextTrack'](kind, label, language);\n }\n\n /**\n * Add a remote text track\n *\n * @param {Object} options Options for remote text track\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n return this.tech_ && this.tech_['addRemoteTextTrack'](options);\n }\n\n /**\n * Remove a remote text track\n *\n * @param {Object} track Remote text track to remove\n * @method removeRemoteTextTrack\n */\n // destructure the input into an object with a track argument, defaulting to arguments[0]\n // default the whole argument to an empty object if nothing was passed in\n removeRemoteTextTrack({track = arguments[0]} = {}) { // jshint ignore:line\n this.tech_ && this.tech_['removeRemoteTextTrack'](track);\n }\n\n /**\n * Get video width\n *\n * @return {Number} Video width\n * @method videoWidth\n */\n videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n }\n\n /**\n * Get video height\n *\n * @return {Number} Video height\n * @method videoHeight\n */\n videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n }\n\n // Methods to add support for\n // initialTime: function(){ return this.techCall_('initialTime'); },\n // startOffsetTime: function(){ return this.techCall_('startOffsetTime'); },\n // played: function(){ return this.techCall_('played'); },\n // defaultPlaybackRate: function(){ return this.techCall_('defaultPlaybackRate'); },\n // defaultMuted: function(){ return this.techCall_('defaultMuted'); }\n\n /**\n * The player's language code\n * NOTE: The language should be set in the player options if you want the\n * the controls to be built with a specific language. Changing the lanugage\n * later will not update controls text.\n *\n * @param {String} code The locale string\n * @return {String} The locale string when getting\n * @return {Player} self when setting\n * @method language\n */\n language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = (''+code).toLowerCase();\n return this;\n }\n\n /**\n * Get the player's language dictionary\n * Merge every time, because a newly added plugin might call videojs.addLanguage() at any time\n * Languages specified directly in the player options have precedence\n *\n * @return {Array} Array of languages\n * @method languages\n */\n languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n }\n\n /**\n * Converts track info to JSON\n *\n * @return {Object} JSON object of options\n * @method toJSON\n */\n toJSON() {\n let options = mergeOptions(this.options_);\n let tracks = options.tracks;\n\n options.tracks = [];\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n\n // deep merge tracks and null out player so no circular references\n track = mergeOptions(track);\n track.player = undefined;\n options.tracks[i] = track;\n }\n\n return options;\n }\n\n /**\n * Creates a simple modal dialog (an instance of the `ModalDialog`\n * component) that immediately overlays the player with arbitrary\n * content and removes itself when closed.\n *\n * @param {String|Function|Element|Array|Null} content\n * Same as `ModalDialog#content`'s param of the same name.\n *\n * The most straight-forward usage is to provide a string or DOM\n * element.\n *\n * @param {Object} [options]\n * Extra options which will be passed on to the `ModalDialog`.\n *\n * @return {ModalDialog}\n */\n createModal(content, options) {\n let player = this;\n\n options = options || {};\n options.content = content || '';\n\n let modal = new ModalDialog(player, options);\n\n player.addChild(modal);\n modal.on('dispose', function() {\n player.removeChild(modal);\n });\n\n return modal.open();\n }\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag The player tag\n * @return {Array} An array of sources and track objects\n * @static\n * @method getTagSettings\n */\n static getTagSettings(tag) {\n let baseOptions = {\n 'sources': [],\n 'tracks': []\n };\n\n const tagOptions = Dom.getElAttributes(tag);\n const dataSetup = tagOptions['data-setup'];\n\n // Check if data-setup attr exists.\n if (dataSetup !== null){\n // Parse options JSON\n // If empty string, make it a parsable json object.\n const [err, data] = safeParseTuple(dataSetup || '{}');\n if (err) {\n log.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n const children = tag.childNodes;\n\n for (let i=0, j=children.length; i<j; i++) {\n const child = children[i];\n // Change case needed: http://ejohn.org/blog/nodename-case-sensitivity/\n const childName = child.nodeName.toLowerCase();\n if (childName === 'source') {\n baseOptions.sources.push(Dom.getElAttributes(child));\n } else if (childName === 'track') {\n baseOptions.tracks.push(Dom.getElAttributes(child));\n }\n }\n }\n\n return baseOptions;\n }\n\n}\n\n/*\n * Global player list\n *\n * @type {Object}\n */\nPlayer.players = {};\n\nlet navigator = window.navigator;\n/*\n * Player instance options, surfaced using options\n * options = Player.prototype.options_\n * Make changes in options, not here.\n *\n * @type {Object}\n * @private\n */\nPlayer.prototype.options_ = {\n // Default order of fallback technology\n techOrder: ['html5','flash'],\n // techOrder: ['flash','html5'],\n\n html5: {},\n flash: {},\n\n // defaultVolume: 0.85,\n defaultVolume: 0.00, // The freakin seaguls are driving me crazy!\n\n // default inactivity timeout\n inactivityTimeout: 2000,\n\n // default playback rates\n playbackRates: [],\n // Add playback rate selection by adding rates\n // 'playbackRates': [0.5, 1, 1.5, 2],\n\n // Included control sets\n children: [\n 'mediaLoader',\n 'posterImage',\n 'textTrackDisplay',\n 'loadingSpinner',\n 'bigPlayButton',\n 'controlBar',\n 'errorDisplay',\n 'textTrackSettings'\n ],\n\n language: document.getElementsByTagName('html')[0].getAttribute('lang') || navigator.languages && navigator.languages[0] || navigator.userLanguage || navigator.language || 'en',\n\n // locales and their language translations\n languages: {},\n\n // Default message to show when a video cannot be played.\n notSupportedMessage: 'No compatible source was found for this media.'\n};\n\n/**\n * Fired when the user agent begins looking for media data\n *\n * @event loadstart\n */\nPlayer.prototype.handleTechLoadStart_;\n\n/**\n * Fired when the player has initial duration and dimension information\n *\n * @event loadedmetadata\n */\nPlayer.prototype.handleLoadedMetaData_;\n\n/**\n * Fired when the player has downloaded data at the current playback position\n *\n * @event loadeddata\n */\nPlayer.prototype.handleLoadedData_;\n\n/**\n * Fired when the user is active, e.g. moves the mouse over the player\n *\n * @event useractive\n */\nPlayer.prototype.handleUserActive_;\n\n/**\n * Fired when the user is inactive, e.g. a short delay after the last mouse move or control interaction\n *\n * @event userinactive\n */\nPlayer.prototype.handleUserInactive_;\n\n/**\n * Fired when the current playback position has changed *\n * During playback this is fired every 15-250 milliseconds, depending on the\n * playback technology in use.\n *\n * @event timeupdate\n */\nPlayer.prototype.handleTimeUpdate_;\n\n/**\n * Fired when video playback ends\n *\n * @event ended\n */\nPlayer.prototype.handleTechEnded_;\n\n/**\n * Fired when the volume changes\n *\n * @event volumechange\n */\nPlayer.prototype.handleVolumeChange_;\n\n/**\n * Fired when an error occurs\n *\n * @event error\n */\nPlayer.prototype.handleError_;\n\nPlayer.prototype.flexNotSupported_ = function() {\n var elem = document.createElement('i');\n\n // Note: We don't actually use flexBasis (or flexOrder), but it's one of the more\n // common flex features that we can rely on when checking for flex support.\n return !('flexBasis' in elem.style ||\n 'webkitFlexBasis' in elem.style ||\n 'mozFlexBasis' in elem.style ||\n 'msFlexBasis' in elem.style ||\n 'msFlexOrder' in elem.style /* IE10-specific (2012 flex spec) */);\n};\n\nComponent.registerComponent('Player', Player);\nexport default Player;\n","/**\n * @file plugins.js\n */\nimport Player from './player.js';\n\n/**\n * The method for registering a video.js plugin\n *\n * @param {String} name The name of the plugin\n * @param {Function} init The function that is run when the player inits\n * @method plugin\n */\nvar plugin = function(name, init){\n Player.prototype[name] = init;\n};\n\nexport default plugin;\n","/**\n * @file popup-button.js\n */\nimport ClickableComponent from '../clickable-component.js';\nimport Component from '../component.js';\nimport Popup from './popup.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * A button class with a popup control\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends ClickableComponent\n * @class PopupButton\n */\nclass PopupButton extends ClickableComponent {\n\n constructor(player, options={}){\n super(player, options);\n\n this.update();\n }\n\n /**\n * Update popup\n *\n * @method update\n */\n update() {\n let popup = this.createPopup();\n\n if (this.popup) {\n this.removeChild(this.popup);\n }\n\n this.popup = popup;\n this.addChild(popup);\n\n if (this.items && this.items.length === 0) {\n this.hide();\n } else if (this.items && this.items.length > 1) {\n this.show();\n }\n }\n\n /**\n * Create popup - Override with specific functionality for component\n *\n * @return {Popup} The constructed popup\n * @method createPopup\n */\n createPopup() {}\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: this.buildCSSClass()\n });\n }\n\n /**\n * Allow sub components to stack CSS class names\n *\n * @return {String} The constructed class name\n * @method buildCSSClass\n */\n buildCSSClass() {\n var menuButtonClass = 'vjs-menu-button';\n\n // If the inline option is passed, we want to use different styles altogether.\n if (this.options_.inline === true) {\n menuButtonClass += '-inline';\n } else {\n menuButtonClass += '-popup';\n }\n\n return `vjs-menu-button ${menuButtonClass} ${super.buildCSSClass()}`;\n }\n\n}\n\nComponent.registerComponent('PopupButton', PopupButton);\nexport default PopupButton;\n","/**\n * @file popup.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport * as Fn from '../utils/fn.js';\nimport * as Events from '../utils/events.js';\n\n/**\n * The Popup component is used to build pop up controls.\n *\n * @extends Component\n * @class Popup\n */\nclass Popup extends Component {\n\n /**\n * Add a popup item to the popup\n *\n * @param {Object|String} component Component or component type to add\n * @method addItem\n */\n addItem(component) {\n this.addChild(component);\n component.on('click', Fn.bind(this, function(){\n this.unlockShowing();\n }));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let contentElType = this.options_.contentElType || 'ul';\n this.contentEl_ = Dom.createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n var el = super.createEl('div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n el.appendChild(this.contentEl_);\n\n // Prevent clicks from bubbling up. Needed for Popup Buttons,\n // where a click on the parent is significant\n Events.on(el, 'click', function(event){\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n }\n}\n\nComponent.registerComponent('Popup', Popup);\nexport default Popup;\n","/**\n * @file poster-image.js\n */\nimport ClickableComponent from './clickable-component.js';\nimport Component from './component.js';\nimport * as Fn from './utils/fn.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\n\n/**\n * The component that handles showing the poster image.\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Button\n * @class PosterImage\n */\nclass PosterImage extends ClickableComponent {\n\n constructor(player, options){\n super(player, options);\n\n this.update();\n player.on('posterchange', Fn.bind(this, this.update));\n }\n\n /**\n * Clean up the poster image\n *\n * @method dispose\n */\n dispose() {\n this.player().off('posterchange', this.update);\n super.dispose();\n }\n\n /**\n * Create the poster's image element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = Dom.createEl('div', {\n className: 'vjs-poster',\n\n // Don't want poster to be tabbable.\n tabIndex: -1\n });\n\n // To ensure the poster image resizes while maintaining its original aspect\n // ratio, use a div with `background-size` when available. For browsers that\n // do not support `background-size` (e.g. IE8), fall back on using a regular\n // img element.\n if (!browser.BACKGROUND_SIZE_SUPPORTED) {\n this.fallbackImg_ = Dom.createEl('img');\n el.appendChild(this.fallbackImg_);\n }\n\n return el;\n }\n\n /**\n * Event handler for updates to the player's poster source\n *\n * @method update\n */\n update() {\n let url = this.player().poster();\n\n this.setSrc(url);\n\n // If there's no poster source we should display:none on this component\n // so it's not still clickable or right-clickable\n if (url) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n /**\n * Set the poster source depending on the display method\n *\n * @param {String} url The URL to the poster source\n * @method setSrc\n */\n setSrc(url) {\n if (this.fallbackImg_) {\n this.fallbackImg_.src = url;\n } else {\n let backgroundImage = '';\n // Any falsey values should stay as an empty string, otherwise\n // this will throw an extra error\n if (url) {\n backgroundImage = `url(\"${url}\")`;\n }\n\n this.el_.style.backgroundImage = backgroundImage;\n }\n }\n\n /**\n * Event handler for clicks on the poster image\n *\n * @method handleClick\n */\n handleClick() {\n // We don't want a click to trigger playback when controls are disabled\n // but CSS should be hiding the poster to prevent that from happening\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n }\n\n}\n\nComponent.registerComponent('PosterImage', PosterImage);\nexport default PosterImage;\n","/**\n * @file setup.js\n *\n * Functions for automatically setting up a player\n * based on the data-setup attribute of the video tag\n */\nimport * as Events from './utils/events.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nlet _windowLoaded = false;\nlet videojs;\n\n\n// Automatically set up any tags that have a data-setup attribute\nvar autoSetup = function(){\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 through each list of elements\n // to build up a new, combined list of elements.\n var vids = document.getElementsByTagName('video');\n var audios = document.getElementsByTagName('audio');\n var mediaEls = [];\n if (vids && vids.length > 0) {\n for(let i=0, e=vids.length; i<e; i++) {\n mediaEls.push(vids[i]);\n }\n }\n if (audios && audios.length > 0) {\n for(let i=0, e=audios.length; i<e; i++) {\n mediaEls.push(audios[i]);\n }\n }\n\n // Check if any media elements exist\n if (mediaEls && mediaEls.length > 0) {\n\n for (let i=0, e=mediaEls.length; i<e; i++) {\n let mediaEl = mediaEls[i];\n\n // Check if element exists, has getAttribute func.\n // IE seems to consider typeof el.getAttribute == 'object' instead of '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 let 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 let player = videojs(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// Pause to let the DOM keep processing\nvar autoSetupTimeout = function(wait, vjs){\n if (vjs) {\n videojs = vjs;\n }\n\n setTimeout(autoSetup, wait);\n};\n\nif (document.readyState === 'complete') {\n _windowLoaded = true;\n} else {\n Events.one(window, 'load', function(){\n _windowLoaded = true;\n });\n}\n\nvar hasLoaded = function() {\n return _windowLoaded;\n};\n\nexport { autoSetup, autoSetupTimeout, hasLoaded };\n","/**\n * @file slider.js\n */\nimport Component from '../component.js';\nimport * as Dom from '../utils/dom.js';\nimport assign from 'object.assign';\n\n/**\n * The base functionality for sliders like the volume bar and seek bar\n *\n * @param {Player|Object} player\n * @param {Object=} options\n * @extends Component\n * @class Slider\n */\nclass Slider extends Component {\n\n constructor(player, options) {\n super(player, options);\n\n // Set property names to bar to match with the child Slider class is looking for\n this.bar = this.getChild(this.options_.barName);\n\n // Set a horizontal or vertical class on the slider depending on the slider type\n this.vertical(!!this.options_.vertical);\n\n this.on('mousedown', this.handleMouseDown);\n this.on('touchstart', this.handleMouseDown);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n this.on('click', this.handleClick);\n\n this.on(player, 'controlsvisible', this.update);\n this.on(player, this.playerEvent, this.update);\n }\n\n /**\n * Create the component's DOM element\n *\n * @param {String} type Type of element to create\n * @param {Object=} props List of properties in Object form\n * @return {Element}\n * @method createEl\n */\n createEl(type, props={}, attributes={}) {\n // Add the slider element class to all sub classes\n props.className = props.className + ' vjs-slider';\n props = assign({\n tabIndex: 0\n }, props);\n\n attributes = assign({\n 'role': 'slider',\n 'aria-valuenow': 0,\n 'aria-valuemin': 0,\n 'aria-valuemax': 100,\n tabIndex: 0\n }, attributes);\n\n return super.createEl(type, props, attributes);\n }\n\n /**\n * Handle mouse down on slider\n *\n * @param {Object} event Mouse down event object\n * @method handleMouseDown\n */\n handleMouseDown(event) {\n let doc = this.bar.el_.ownerDocument;\n\n event.preventDefault();\n Dom.blockTextSelection();\n\n this.addClass('vjs-sliding');\n this.trigger('slideractive');\n\n this.on(doc, 'mousemove', this.handleMouseMove);\n this.on(doc, 'mouseup', this.handleMouseUp);\n this.on(doc, 'touchmove', this.handleMouseMove);\n this.on(doc, 'touchend', this.handleMouseUp);\n\n this.handleMouseMove(event);\n }\n\n /**\n * To be overridden by a subclass\n *\n * @method handleMouseMove\n */\n handleMouseMove() {}\n\n /**\n * Handle mouse up on Slider\n *\n * @method handleMouseUp\n */\n handleMouseUp() {\n let doc = this.bar.el_.ownerDocument;\n\n Dom.unblockTextSelection();\n\n this.removeClass('vjs-sliding');\n this.trigger('sliderinactive');\n\n this.off(doc, 'mousemove', this.handleMouseMove);\n this.off(doc, 'mouseup', this.handleMouseUp);\n this.off(doc, 'touchmove', this.handleMouseMove);\n this.off(doc, 'touchend', this.handleMouseUp);\n\n this.update();\n }\n\n /**\n * Update slider\n *\n * @method update\n */\n update() {\n // In VolumeBar init we have a setTimeout for update that pops and update to the end of the\n // execution stack. The player is destroyed before then update will cause an error\n if (!this.el_) return;\n\n // If scrubbing, we could use a cached value to make the handle keep up with the user's mouse.\n // On HTML5 browsers scrubbing is really smooth, but some flash players are slow, so we might want to utilize this later.\n // var progress = (this.player_.scrubbing()) ? this.player_.getCache().currentTime / this.player_.duration() : this.player_.currentTime() / this.player_.duration();\n let progress = this.getPercent();\n let bar = this.bar;\n\n // If there's no bar...\n if (!bar) return;\n\n // Protect against no duration and other division issues\n if (typeof progress !== 'number' ||\n progress !== progress ||\n progress < 0 ||\n progress === Infinity) {\n progress = 0;\n }\n\n // Convert to a percentage for setting\n let percentage = (progress * 100).toFixed(2) + '%';\n\n // Set the new bar width or height\n if (this.vertical()) {\n bar.el().style.height = percentage;\n } else {\n bar.el().style.width = percentage;\n }\n }\n\n /**\n * Calculate distance for slider\n *\n * @param {Object} event Event object\n * @method calculateDistance\n */\n calculateDistance(event){\n let position = Dom.getPointerPosition(this.el_, event);\n if (this.vertical()) {\n return position.y;\n }\n return position.x;\n }\n\n /**\n * Handle on focus for slider\n *\n * @method handleFocus\n */\n handleFocus() {\n this.on(this.bar.el_.ownerDocument, 'keydown', this.handleKeyPress);\n }\n\n /**\n * Handle key press for slider\n *\n * @param {Object} event Event object\n * @method handleKeyPress\n */\n handleKeyPress(event) {\n if (event.which === 37 || event.which === 40) { // Left and Down Arrows\n event.preventDefault();\n this.stepBack();\n } else if (event.which === 38 || event.which === 39) { // Up and Right Arrows\n event.preventDefault();\n this.stepForward();\n }\n }\n\n /**\n * Handle on blur for slider\n *\n * @method handleBlur\n */\n handleBlur() {\n this.off(this.bar.el_.ownerDocument, 'keydown', this.handleKeyPress);\n }\n\n /**\n * Listener for click events on slider, used to prevent clicks\n * from bubbling up to parent elements like button menus.\n *\n * @param {Object} event Event object\n * @method handleClick\n */\n handleClick(event) {\n event.stopImmediatePropagation();\n event.preventDefault();\n }\n\n /**\n * Get/set if slider is horizontal for vertical\n *\n * @param {Boolean} bool True if slider is vertical, false is horizontal\n * @return {Boolean} True if slider is vertical, false is horizontal\n * @method vertical\n */\n vertical(bool) {\n if (bool === undefined) {\n return this.vertical_ || false;\n }\n\n this.vertical_ = !!bool;\n\n if (this.vertical_) {\n this.addClass('vjs-slider-vertical');\n } else {\n this.addClass('vjs-slider-horizontal');\n }\n\n return this;\n }\n\n}\n\nComponent.registerComponent('Slider', Slider);\nexport default Slider;\n","/**\n * @file flash-rtmp.js\n */\nfunction FlashRtmpDecorator(Flash) {\n Flash.streamingFormats = {\n 'rtmp/mp4': 'MP4',\n 'rtmp/flv': 'FLV'\n };\n\n Flash.streamFromParts = function(connection, stream) {\n return connection + '&' + stream;\n };\n\n Flash.streamToParts = function(src) {\n let parts = {\n connection: '',\n stream: ''\n };\n\n if (!src) return parts;\n\n // Look for the normal URL separator we expect, '&'.\n // If found, we split the URL into two pieces around the\n // first '&'.\n let connEnd = src.search(/&(?!\\w+=)/);\n let streamBegin;\n if (connEnd !== -1) {\n streamBegin = connEnd + 1;\n }\n else {\n // If there's not a '&', we use the last '/' as the delimiter.\n connEnd = streamBegin = src.lastIndexOf('/') + 1;\n if (connEnd === 0) {\n // really, there's not a '/'?\n connEnd = streamBegin = src.length;\n }\n }\n parts.connection = src.substring(0, connEnd);\n parts.stream = src.substring(streamBegin, src.length);\n\n return parts;\n };\n\n Flash.isStreamingType = function(srcType) {\n return srcType in Flash.streamingFormats;\n };\n\n // RTMP has four variations, any string starting\n // with one of these protocols should be valid\n Flash.RTMP_RE = /^rtmp[set]?:\\/\\//i;\n\n Flash.isStreamingSrc = function(src) {\n return Flash.RTMP_RE.test(src);\n };\n\n /**\n * A source handler for RTMP urls\n * @type {Object}\n */\n Flash.rtmpSourceHandler = {};\n\n /**\n * Check if Flash can play the given videotype\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n Flash.rtmpSourceHandler.canPlayType = function(type){\n if (Flash.isStreamingType(type)) {\n return 'maybe';\n }\n\n return '';\n };\n\n /**\n * Check if Flash can handle the source natively\n * @param {Object} source The source object\n * @param {Object} options The options passed to the tech\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n Flash.rtmpSourceHandler.canHandleSource = function(source, options){\n let can = Flash.rtmpSourceHandler.canPlayType(source.type);\n\n if (can) {\n return can;\n }\n\n if (Flash.isStreamingSrc(source.src)) {\n return 'maybe';\n }\n\n return '';\n };\n\n /**\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n * @param {Object} options The options to pass to the source\n */\n Flash.rtmpSourceHandler.handleSource = function(source, tech, options){\n let srcParts = Flash.streamToParts(source.src);\n\n tech['setRtmpConnection'](srcParts.connection);\n tech['setRtmpStream'](srcParts.stream);\n };\n\n // Register the native source handler\n Flash.registerSourceHandler(Flash.rtmpSourceHandler);\n\n return Flash;\n}\n\nexport default FlashRtmpDecorator;\n","/**\n * @file flash.js\n * VideoJS-SWF - Custom Flash Player with HTML5-ish API\n * https://github.com/zencoder/video-js-swf\n * Not using setupTriggers. Using global onEvent func to distribute events\n */\n\nimport Tech from './tech';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport { createTimeRange } from '../utils/time-ranges.js';\nimport FlashRtmpDecorator from './flash-rtmp';\nimport Component from '../component';\nimport window from 'global/window';\nimport assign from 'object.assign';\n\nlet navigator = window.navigator;\n/**\n * Flash Media Controller - Wrapper for fallback SWF API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Flash\n */\nclass Flash extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n // Set the source when ready\n if (options.source) {\n this.ready(function(){\n this.setSource(options.source);\n }, true);\n }\n\n // Having issues with Flash reloading on certain page actions (hide/resize/fullscreen) in certain browsers\n // This allows resetting the playhead when we catch the reload\n if (options.startTime) {\n this.ready(function(){\n this.load();\n this.play();\n this.currentTime(options.startTime);\n }, true);\n }\n\n // Add global window functions that the swf expects\n // A 4.x workflow we weren't able to solve for in 5.0\n // because of the need to hard code these functions\n // into the swf for security reasons\n window.videojs = window.videojs || {};\n window.videojs.Flash = window.videojs.Flash || {};\n window.videojs.Flash.onReady = Flash.onReady;\n window.videojs.Flash.onEvent = Flash.onEvent;\n window.videojs.Flash.onError = Flash.onError;\n\n this.on('seeked', function() {\n this.lastSeekTarget_ = undefined;\n });\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let options = this.options_;\n\n // If video.js is hosted locally you should also set the location\n // for the hosted swf, which should be relative to the page (not video.js)\n // Otherwise this adds a CDN url.\n // The CDN also auto-adds a swf URL for that specific version.\n if (!options.swf) {\n options.swf = '//vjs.zencdn.net/swf/__SWF_VERSION__/video-js.swf';\n }\n\n // Generate ID for swf object\n let objId = options.techId;\n\n // Merge default flashvars with ones passed in to init\n let flashVars = assign({\n\n // SWF Callback Functions\n 'readyFunction': 'videojs.Flash.onReady',\n 'eventProxyFunction': 'videojs.Flash.onEvent',\n 'errorEventProxyFunction': 'videojs.Flash.onError',\n\n // Player Settings\n 'autoplay': options.autoplay,\n 'preload': options.preload,\n 'loop': options.loop,\n 'muted': options.muted\n\n }, options.flashVars);\n\n // Merge default parames with ones passed in\n let params = assign({\n 'wmode': 'opaque', // Opaque is needed to overlay controls, but can affect playback performance\n 'bgcolor': '#000000' // Using bgcolor prevents a white flash when the object is loading\n }, options.params);\n\n // Merge default attributes with ones passed in\n let attributes = assign({\n 'id': objId,\n 'name': objId, // Both ID and Name needed or swf to identify itself\n 'class': 'vjs-tech'\n }, options.attributes);\n\n this.el_ = Flash.embed(options.swf, flashVars, params, attributes);\n this.el_.tech = this;\n\n return this.el_;\n }\n\n /**\n * Play for flash tech\n *\n * @method play\n */\n play() {\n if (this.ended()) {\n this.setCurrentTime(0);\n }\n this.el_.vjs_play();\n }\n\n /**\n * Pause for flash tech\n *\n * @method pause\n */\n pause() {\n this.el_.vjs_pause();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.currentSrc();\n }\n\n // Setting src through `src` not `setSrc` will be deprecated\n return this.setSrc(src);\n }\n\n /**\n * Set video\n *\n * @param {Object=} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n // Make sure source URL is absolute.\n src = Url.getAbsoluteURL(src);\n this.el_.vjs_src(src);\n\n // Currently the SWF doesn't autoplay if you load a source later.\n // e.g. Load player w/ no source, wait 2s, set src.\n if (this.autoplay()) {\n var tech = this;\n this.setTimeout(function(){ tech.play(); }, 0);\n }\n }\n\n /**\n * Returns true if the tech is currently seeking.\n * @return {boolean} true if seeking\n */\n seeking() {\n return this.lastSeekTarget_ !== undefined;\n }\n\n /**\n * Set current time\n *\n * @param {Number} time Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(time) {\n let seekable = this.seekable();\n if (seekable.length) {\n // clamp to the current seekable range\n time = time > seekable.start(0) ? time : seekable.start(0);\n time = time < seekable.end(seekable.length - 1) ? time : seekable.end(seekable.length - 1);\n\n this.lastSeekTarget_ = time;\n this.trigger('seeking');\n this.el_.vjs_setProperty('currentTime', time);\n super.setCurrentTime();\n }\n }\n\n /**\n * Get current time\n *\n * @param {Number=} time Current time of video\n * @return {Number} Current time\n * @method currentTime\n */\n currentTime(time) {\n // when seeking make the reported time keep up with the requested time\n // by reading the time we're seeking to\n if (this.seeking()) {\n return this.lastSeekTarget_ || 0;\n }\n return this.el_.vjs_getProperty('currentTime');\n }\n\n /**\n * Get current source\n *\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.vjs_getProperty('currentSrc');\n }\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load() {\n this.el_.vjs_load();\n }\n\n /**\n * Get poster\n *\n * @method poster\n */\n poster() {\n this.el_.vjs_getProperty('poster');\n }\n\n /**\n * Poster images are not handled by the Flash tech so make this a no-op\n *\n * @method setPoster\n */\n setPoster() {}\n\n /**\n * Determine if can seek in media\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() {\n const duration = this.duration();\n if (duration === 0) {\n return createTimeRange();\n }\n return createTimeRange(0, duration);\n }\n\n /**\n * Get buffered time range\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n let ranges = this.el_.vjs_getProperty('buffered');\n if (ranges.length === 0) {\n return createTimeRange();\n }\n return createTimeRange(ranges[0][0], ranges[0][1]);\n }\n\n /**\n * Get fullscreen support -\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n return false; // Flash does not allow fullscreen through javascript\n }\n\n /**\n * Request to enter fullscreen\n * Flash does not allow fullscreen through javascript\n * so always returns false\n *\n * @return {Boolean} false\n * @method enterFullScreen\n */\n enterFullScreen() {\n return false;\n }\n\n}\n\n\n// Create setters and getters for attributes\nconst _api = Flash.prototype;\nconst _readWrite = 'rtmpConnection,rtmpStream,preload,defaultPlaybackRate,playbackRate,autoplay,loop,mediaGroup,controller,controls,volume,muted,defaultMuted'.split(',');\nconst _readOnly = 'networkState,readyState,initialTime,duration,startOffsetTime,paused,ended,videoWidth,videoHeight'.split(',');\n\nfunction _createSetter(attr){\n var attrUpper = attr.charAt(0).toUpperCase() + attr.slice(1);\n _api['set'+attrUpper] = function(val){ return this.el_.vjs_setProperty(attr, val); };\n}\nfunction _createGetter(attr) {\n _api[attr] = function(){ return this.el_.vjs_getProperty(attr); };\n}\n\n// Create getter and setters for all read/write attributes\nfor (let i = 0; i < _readWrite.length; i++) {\n _createGetter(_readWrite[i]);\n _createSetter(_readWrite[i]);\n}\n\n// Create getters for read-only attributes\nfor (let i = 0; i < _readOnly.length; i++) {\n _createGetter(_readOnly[i]);\n}\n\n/* Flash Support Testing -------------------------------------------------------- */\n\nFlash.isSupported = function(){\n return Flash.version()[0] >= 10;\n // return swfobject.hasFlashPlayerVersion('10');\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Flash);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n */\nFlash.nativeSourceHandler = {};\n\n/**\n * Check if Flash can play the given videotype\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canPlayType = function(type){\n if (type in Flash.formats) {\n return 'maybe';\n }\n\n return '';\n};\n\n/*\n * Check Flash can handle the source natively\n *\n * @param {Object} source The source object\n * @param {Object} options The options passed to the tech\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nFlash.nativeSourceHandler.canHandleSource = function(source, options){\n var type;\n\n function guessMimeType(src) {\n var ext = Url.getFileExtension(src);\n if (ext) {\n return `video/${ext}`;\n }\n return '';\n }\n\n if (!source.type) {\n type = guessMimeType(source.src);\n } else {\n // Strip code information from the type because we don't get that specific\n type = source.type.replace(/;.*/, '').toLowerCase();\n }\n\n return Flash.nativeSourceHandler.canPlayType(type);\n};\n\n/*\n * Pass the source to the flash object\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Flash} tech The instance of the Flash tech\n * @param {Object} options The options to pass to the source\n */\nFlash.nativeSourceHandler.handleSource = function(source, tech, options){\n tech.setSrc(source.src);\n};\n\n/*\n * Clean up the source handler when disposing the player or switching sources..\n * (no cleanup is needed when supporting the format natively)\n */\nFlash.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nFlash.registerSourceHandler(Flash.nativeSourceHandler);\n\nFlash.formats = {\n 'video/flv': 'FLV',\n 'video/x-flv': 'FLV',\n 'video/mp4': 'MP4',\n 'video/m4v': 'MP4'\n};\n\nFlash.onReady = function(currSwf){\n let el = Dom.getEl(currSwf);\n let tech = el && el.tech;\n\n // if there is no el then the tech has been disposed\n // and the tech element was removed from the player div\n if (tech && tech.el()) {\n // check that the flash object is really ready\n Flash.checkReady(tech);\n }\n};\n\n// The SWF isn't always ready when it says it is. Sometimes the API functions still need to be added to the object.\n// If it's not ready, we set a timeout to check again shortly.\nFlash.checkReady = function(tech){\n // stop worrying if the tech has been disposed\n if (!tech.el()) {\n return;\n }\n\n // check if API property exists\n if (tech.el().vjs_getProperty) {\n // tell tech it's ready\n tech.triggerReady();\n } else {\n // wait longer\n this.setTimeout(function(){\n Flash['checkReady'](tech);\n }, 50);\n }\n};\n\n// Trigger events from the swf on the player\nFlash.onEvent = function(swfID, eventName){\n let tech = Dom.getEl(swfID).tech;\n tech.trigger(eventName);\n};\n\n// Log errors from the swf\nFlash.onError = function(swfID, err){\n const tech = Dom.getEl(swfID).tech;\n\n // trigger MEDIA_ERR_SRC_NOT_SUPPORTED\n if (err === 'srcnotfound') {\n return tech.error(4);\n }\n\n // trigger a custom error\n tech.error('FLASH: ' + err);\n};\n\n// Flash Version Check\nFlash.version = function(){\n let version = '0,0,0';\n\n // IE\n try {\n version = new window.ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n\n // other browsers\n } catch(e) {\n try {\n if (navigator.mimeTypes['application/x-shockwave-flash'].enabledPlugin){\n version = (navigator.plugins['Shockwave Flash 2.0'] || navigator.plugins['Shockwave Flash']).description.replace(/\\D+/g, ',').match(/^,?(.+),?$/)[1];\n }\n } catch(err) {}\n }\n return version.split(',');\n};\n\n// Flash embedding method. Only used in non-iframe mode\nFlash.embed = function(swf, flashVars, params, attributes){\n const code = Flash.getEmbedCode(swf, flashVars, params, attributes);\n\n // Get element by embedding code and retrieving created element\n const obj = Dom.createEl('div', { innerHTML: code }).childNodes[0];\n\n return obj;\n};\n\nFlash.getEmbedCode = function(swf, flashVars, params, attributes){\n const objTag = '<object type=\"application/x-shockwave-flash\" ';\n let flashVarsString = '';\n let paramsString = '';\n let attrsString = '';\n\n // Convert flash vars to string\n if (flashVars) {\n Object.getOwnPropertyNames(flashVars).forEach(function(key){\n flashVarsString += `${key}=${flashVars[key]}&`;\n });\n }\n\n // Add swf, flashVars, and other default params\n params = assign({\n 'movie': swf,\n 'flashvars': flashVarsString,\n 'allowScriptAccess': 'always', // Required to talk to swf\n 'allowNetworking': 'all' // All should be default, but having security issues.\n }, params);\n\n // Create param tags string\n Object.getOwnPropertyNames(params).forEach(function(key){\n paramsString += `<param name=\"${key}\" value=\"${params[key]}\" />`;\n });\n\n attributes = assign({\n // Add swf to attributes (need both for IE and Others to work)\n 'data': swf,\n\n // Default to 100% width/height\n 'width': '100%',\n 'height': '100%'\n\n }, attributes);\n\n // Create Attributes string\n Object.getOwnPropertyNames(attributes).forEach(function(key){\n attrsString += `${key}=\"${attributes[key]}\" `;\n });\n\n return `${objTag}${attrsString}>${paramsString}</object>`;\n};\n\n// Run Flash through the RTMP decorator\nFlashRtmpDecorator(Flash);\n\nComponent.registerComponent('Flash', Flash);\nTech.registerTech('Flash', Flash);\nexport default Flash;\n","/**\n * @file html5.js\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n */\n\nimport Tech from './tech.js';\nimport Component from '../component';\nimport * as Dom from '../utils/dom.js';\nimport * as Url from '../utils/url.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport tsml from 'tsml';\nimport TextTrack from '../../../src/js/tracks/text-track.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport assign from 'object.assign';\nimport mergeOptions from '../utils/merge-options.js';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Tech\n * @class Html5\n */\nclass Html5 extends Tech {\n\n constructor(options, ready){\n super(options, ready);\n\n const source = options.source;\n let crossoriginTracks = false;\n\n // Set the source if one is provided\n // 1) Check if the source is new (if not, we want to keep the original so playback isn't interrupted)\n // 2) Check to see if the network state of the tag was failed at init, and if so, reset the source\n // anyway so the error gets fired.\n if (source && (this.el_.currentSrc !== source.src || (options.tag && options.tag.initNetworkState_ === 3))) {\n this.setSource(source);\n } else {\n this.handleLateInit_(this.el_);\n }\n\n if (this.el_.hasChildNodes()) {\n\n let nodes = this.el_.childNodes;\n let nodesLength = nodes.length;\n let removeNodes = [];\n\n while (nodesLength--) {\n let node = nodes[nodesLength];\n let nodeName = node.nodeName.toLowerCase();\n\n if (nodeName === 'track') {\n if (!this.featuresNativeTextTracks) {\n // Empty video tag tracks so the built-in player doesn't use them also.\n // This may not be fast enough to stop HTML5 browsers from reading the tags\n // so we'll need to turn off any default tracks if we're manually doing\n // captions and subtitles. videoElement.textTracks\n removeNodes.push(node);\n } else {\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(node);\n this.remoteTextTracks().addTrack_(node.track);\n if (!crossoriginTracks &&\n !this.el_.hasAttribute('crossorigin') &&\n Url.isCrossOrigin(node.src)) {\n crossoriginTracks = true;\n }\n }\n }\n }\n\n for (let i=0; i<removeNodes.length; i++) {\n this.el_.removeChild(removeNodes[i]);\n }\n }\n\n let trackTypes = ['audio', 'video'];\n\n // ProxyNativeTextTracks\n trackTypes.forEach((type) => {\n let capitalType = toTitleCase(type);\n\n if (!this[`featuresNative${capitalType}Tracks`]) {\n return;\n }\n let tl = this.el()[`${type}Tracks`];\n\n if (tl && tl.addEventListener) {\n tl.addEventListener('change', Fn.bind(this, this[`handle${capitalType}TrackChange_`]));\n tl.addEventListener('addtrack', Fn.bind(this, this[`handle${capitalType}TrackAdd_`]));\n tl.addEventListener('removetrack', Fn.bind(this, this[`handle${capitalType}TrackRemove_`]));\n\n // Remove (native) trackts that are not used anymore\n this.on('loadstart', this[`removeOld${capitalType}Tracks_`]);\n }\n });\n\n if (this.featuresNativeTextTracks) {\n if (crossoriginTracks) {\n log.warn(tsml`Text Tracks are being loaded from another origin but the crossorigin attribute isn't used. \n This may prevent text tracks from loading.`);\n }\n\n this.handleTextTrackChange_ = Fn.bind(this, this.handleTextTrackChange);\n this.handleTextTrackAdd_ = Fn.bind(this, this.handleTextTrackAdd);\n this.handleTextTrackRemove_ = Fn.bind(this, this.handleTextTrackRemove);\n this.proxyNativeTextTracks_();\n }\n\n // Determine if native controls should be used\n // Our goal should be to get the custom controls on mobile solid everywhere\n // so we can remove this all together. Right now this will block custom\n // controls on touch enabled laptops like the Chrome Pixel\n if ((browser.TOUCH_ENABLED ||\n browser.IS_IPHONE ||\n browser.IS_NATIVE_ANDROID) && options.nativeControlsForTouch === true) {\n this.setControls(true);\n }\n\n this.triggerReady();\n }\n\n /**\n * Dispose of html5 media element\n *\n * @method dispose\n */\n dispose() {\n // Un-ProxyNativeTracks\n ['audio', 'video', 'text'].forEach((type) => {\n let capitalType = toTitleCase(type);\n let tl = this.el_[`${type}Tracks`];\n\n if (tl && tl.removeEventListener) {\n tl.removeEventListener('change', this[`handle${capitalType}TrackChange_`]);\n tl.removeEventListener('addtrack', this[`handle${capitalType}TrackAdd_`]);\n tl.removeEventListener('removetrack', this[`handle${capitalType}TrackRemove_`]);\n }\n \n // Stop removing old text tracks\n if (tl) {\n this.off('loadstart', this[`removeOld${capitalType}Tracks_`]);\n }\n });\n\n Html5.disposeMediaElement(this.el_);\n // tech will handle clearing of the emulated track list\n super.dispose();\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n let el = this.options_.tag;\n\n // Check if this browser supports moving the element into the box.\n // On the iPhone video will break if you move the element,\n // So we have to create a brand new element.\n if (!el || this['movingMediaElementInDOM'] === false) {\n\n // If the original tag is still there, clone and remove it.\n if (el) {\n const clone = el.cloneNode(true);\n el.parentNode.insertBefore(clone, el);\n Html5.disposeMediaElement(el);\n el = clone;\n } else {\n el = document.createElement('video');\n\n // determine if native controls should be used\n let tagAttributes = this.options_.tag && Dom.getElAttributes(this.options_.tag);\n let attributes = mergeOptions({}, tagAttributes);\n if (!browser.TOUCH_ENABLED || this.options_.nativeControlsForTouch !== true) {\n delete attributes.controls;\n }\n\n Dom.setElAttributes(el,\n assign(attributes, {\n id: this.options_.techId,\n class: 'vjs-tech'\n })\n );\n }\n }\n\n // Update specific tag settings, in case they were overridden\n let settingsAttrs = ['autoplay','preload','loop','muted'];\n for (let i = settingsAttrs.length - 1; i >= 0; i--) {\n const attr = settingsAttrs[i];\n let overwriteAttrs = {};\n if (typeof this.options_[attr] !== 'undefined') {\n overwriteAttrs[attr] = this.options_[attr];\n }\n Dom.setElAttributes(el, overwriteAttrs);\n }\n\n return el;\n // jenniisawesome = true;\n }\n\n // If we're loading the playback object after it has started loading\n // or playing the video (often with autoplay on) then the loadstart event\n // has already fired and we need to fire it manually because many things\n // rely on it.\n handleLateInit_(el) {\n if (el.networkState === 0 || el.networkState === 3) {\n // The video element hasn't started loading the source yet\n // or didn't find a source\n return;\n }\n\n if (el.readyState === 0) {\n // NetworkState is set synchronously BUT loadstart is fired at the\n // end of the current stack, usually before setInterval(fn, 0).\n // So at this point we know loadstart may have already fired or is\n // about to fire, and either way the player hasn't seen it yet.\n // We don't want to fire loadstart prematurely here and cause a\n // double loadstart so we'll wait and see if it happens between now\n // and the next loop, and fire it if not.\n // HOWEVER, we also want to make sure it fires before loadedmetadata\n // which could also happen between now and the next loop, so we'll\n // watch for that also.\n let loadstartFired = false;\n let setLoadstartFired = function() {\n loadstartFired = true;\n };\n this.on('loadstart', setLoadstartFired);\n\n let triggerLoadstart = function() {\n // We did miss the original loadstart. Make sure the player\n // sees loadstart before loadedmetadata\n if (!loadstartFired) {\n this.trigger('loadstart');\n }\n };\n this.on('loadedmetadata', triggerLoadstart);\n\n this.ready(function(){\n this.off('loadstart', setLoadstartFired);\n this.off('loadedmetadata', triggerLoadstart);\n\n if (!loadstartFired) {\n // We did miss the original native loadstart. Fire it now.\n this.trigger('loadstart');\n }\n });\n\n return;\n }\n\n // From here on we know that loadstart already fired and we missed it.\n // The other readyState events aren't as much of a problem if we double\n // them, so not going to go to as much trouble as loadstart to prevent\n // that unless we find reason to.\n let eventsToTrigger = ['loadstart'];\n\n // loadedmetadata: newly equal to HAVE_METADATA (1) or greater\n eventsToTrigger.push('loadedmetadata');\n\n // loadeddata: newly increased to HAVE_CURRENT_DATA (2) or greater\n if (el.readyState >= 2) {\n eventsToTrigger.push('loadeddata');\n }\n\n // canplay: newly increased to HAVE_FUTURE_DATA (3) or greater\n if (el.readyState >= 3) {\n eventsToTrigger.push('canplay');\n }\n\n // canplaythrough: newly equal to HAVE_ENOUGH_DATA (4)\n if (el.readyState >= 4) {\n eventsToTrigger.push('canplaythrough');\n }\n\n // We still need to give the player time to add event listeners\n this.ready(function(){\n eventsToTrigger.forEach(function(type){\n this.trigger(type);\n }, this);\n });\n }\n\n proxyNativeTextTracks_() {\n let tt = this.el().textTracks;\n\n if (tt) {\n // Add tracks - if player is initialised after DOM loaded, textTracks\n // will not trigger addtrack\n for (let i = 0; i < tt.length; i++) {\n this.textTracks().addTrack_(tt[i]);\n }\n\n if (tt.addEventListener) {\n tt.addEventListener('change', this.handleTextTrackChange_);\n tt.addEventListener('addtrack', this.handleTextTrackAdd_);\n tt.addEventListener('removetrack', this.handleTextTrackRemove_);\n }\n \n // Remove (native) texttracks that are not used anymore\n this.on('loadstart', this.removeOldTextTracks_);\n }\n }\n\n handleTextTrackChange(e) {\n let tt = this.textTracks();\n this.textTracks().trigger({\n type: 'change',\n target: tt,\n currentTarget: tt,\n srcElement: tt\n });\n }\n\n handleTextTrackAdd(e) {\n this.textTracks().addTrack_(e.track);\n }\n\n handleTextTrackRemove(e) {\n this.textTracks().removeTrack_(e.track);\n }\n\n handleVideoTrackChange_(e) {\n let vt = this.videoTracks();\n this.videoTracks().trigger({\n type: 'change',\n target: vt,\n currentTarget: vt,\n srcElement: vt\n });\n }\n\n handleVideoTrackAdd_(e) {\n this.videoTracks().addTrack_(e.track);\n }\n\n handleVideoTrackRemove_(e) {\n this.videoTracks().removeTrack_(e.track);\n }\n\n handleAudioTrackChange_(e) {\n let audioTrackList = this.audioTracks();\n this.audioTracks().trigger({\n type: 'change',\n target: audioTrackList,\n currentTarget: audioTrackList,\n srcElement: audioTrackList\n });\n }\n\n handleAudioTrackAdd_(e) {\n this.audioTracks().addTrack_(e.track);\n }\n\n handleAudioTrackRemove_(e) {\n this.audioTracks().removeTrack_(e.track);\n }\n\n /**\n * This is a helper function that is used in removeOldTextTracks_, removeOldAudioTracks_ and\n * removeOldVideoTracks_\n * @param {Track[]} techTracks Tracks for this tech\n * @param {Track[]} elTracks Tracks for the HTML5 video element\n * @private\n */\n removeOldTracks_(techTracks, elTracks) {\n // This will loop over the techTracks and check if they are still used by the HTML5 video element\n // If not, they will be removed from the emulated list\n let removeTracks = [];\n if (!elTracks) {\n return;\n }\n\n for (let i = 0; i < techTracks.length; i++) {\n let techTrack = techTracks[i];\n\n let found = false;\n for (let j = 0; j < elTracks.length; j++) {\n if (elTracks[j] === techTrack) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n removeTracks.push(techTrack);\n }\n }\n\n for (let i = 0; i < removeTracks.length; i++) {\n const track = removeTracks[i];\n techTracks.removeTrack_(track);\n }\n }\n\n removeOldTextTracks_() {\n const techTracks = this.textTracks();\n const elTracks = this.el().textTracks;\n this.removeOldTracks_(techTracks, elTracks);\n }\n\n removeOldAudioTracks_() {\n const techTracks = this.audioTracks();\n const elTracks = this.el().audioTracks;\n this.removeOldTracks_(techTracks, elTracks);\n }\n\n removeOldVideoTracks_() {\n const techTracks = this.videoTracks();\n const elTracks = this.el().videoTracks;\n this.removeOldTracks_(techTracks, elTracks);\n }\n\n /**\n * Play for html5 tech\n *\n * @method play\n */\n play() { this.el_.play(); }\n\n /**\n * Pause for html5 tech\n *\n * @method pause\n */\n pause() { this.el_.pause(); }\n\n /**\n * Paused for html5 tech\n *\n * @return {Boolean}\n * @method paused\n */\n paused() { return this.el_.paused; }\n\n /**\n * Get current time\n *\n * @return {Number}\n * @method currentTime\n */\n currentTime() { return this.el_.currentTime; }\n\n /**\n * Set current time\n *\n * @param {Number} seconds Current time of video\n * @method setCurrentTime\n */\n setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch(e) {\n log(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n }\n\n /**\n * Get duration\n *\n * @return {Number}\n * @method duration\n */\n duration() { return this.el_.duration || 0; }\n\n /**\n * Get a TimeRange object that represents the intersection\n * of the time ranges for which the user agent has all\n * relevant media\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() { return this.el_.buffered; }\n\n /**\n * Get volume level\n *\n * @return {Number}\n * @method volume\n */\n volume() { return this.el_.volume; }\n\n /**\n * Set volume level\n *\n * @param {Number} percentAsDecimal Volume percent as a decimal\n * @method setVolume\n */\n setVolume(percentAsDecimal) { this.el_.volume = percentAsDecimal; }\n\n /**\n * Get if muted\n *\n * @return {Boolean}\n * @method muted\n */\n muted() { return this.el_.muted; }\n\n /**\n * Set muted\n *\n * @param {Boolean} If player is to be muted or note\n * @method setMuted\n */\n setMuted(muted) { this.el_.muted = muted; }\n\n /**\n * Get player width\n *\n * @return {Number}\n * @method width\n */\n width() { return this.el_.offsetWidth; }\n\n /**\n * Get player height\n *\n * @return {Number}\n * @method height\n */\n height() { return this.el_.offsetHeight; }\n\n /**\n * Get if there is fullscreen support\n *\n * @return {Boolean}\n * @method supportsFullScreen\n */\n supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n let userAgent = window.navigator.userAgent;\n // Seems to be broken in Chromium/Chrome && Safari in Leopard\n if (/Android/.test(userAgent) || !/Chrome|Mac OS X 10.5/.test(userAgent)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Request to enter fullscreen\n *\n * @method enterFullScreen\n */\n enterFullScreen() {\n var video = this.el_;\n\n if ('webkitDisplayingFullscreen' in video) {\n this.one('webkitbeginfullscreen', function() {\n this.one('webkitendfullscreen', function() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n });\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n });\n }\n\n if (video.paused && video.networkState <= video.HAVE_METADATA) {\n // attempt to prime the video element for programmatic access\n // this isn't necessary on the desktop but shouldn't hurt\n this.el_.play();\n\n // playing and pausing synchronously during the transition to fullscreen\n // can get iOS ~6.1 devices into a play/pause loop\n this.setTimeout(function(){\n video.pause();\n video.webkitEnterFullScreen();\n }, 0);\n } else {\n video.webkitEnterFullScreen();\n }\n }\n\n /**\n * Request to exit fullscreen\n *\n * @method exitFullScreen\n */\n exitFullScreen() {\n this.el_.webkitExitFullScreen();\n }\n\n /**\n * Get/set video\n *\n * @param {Object=} src Source object\n * @return {Object}\n * @method src\n */\n src(src) {\n if (src === undefined) {\n return this.el_.src;\n } else {\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(src);\n }\n }\n\n /**\n * Set video\n *\n * @param {Object} src Source object\n * @deprecated\n * @method setSrc\n */\n setSrc(src) {\n this.el_.src = src;\n }\n\n /**\n * Load media into player\n *\n * @method load\n */\n load(){\n this.el_.load();\n }\n\n /**\n * Reset the tech. Removes all sources and calls `load`.\n *\n * @method reset\n */\n reset() {\n Html5.resetMediaElement(this.el_);\n }\n\n /**\n * Get current source\n *\n * @return {Object}\n * @method currentSrc\n */\n currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n } else {\n return this.el_.currentSrc;\n }\n }\n\n /**\n * Get poster\n *\n * @return {String}\n * @method poster\n */\n poster() { return this.el_.poster; }\n\n /**\n * Set poster\n *\n * @param {String} val URL to poster image\n * @method\n */\n setPoster(val) { this.el_.poster = val; }\n\n /**\n * Get preload attribute\n *\n * @return {String}\n * @method preload\n */\n preload() { return this.el_.preload; }\n\n /**\n * Set preload attribute\n *\n * @param {String} val Value for preload attribute\n * @method setPreload\n */\n setPreload(val) { this.el_.preload = val; }\n\n /**\n * Get autoplay attribute\n *\n * @return {String}\n * @method autoplay\n */\n autoplay() { return this.el_.autoplay; }\n\n /**\n * Set autoplay attribute\n *\n * @param {String} val Value for preload attribute\n * @method setAutoplay\n */\n setAutoplay(val) { this.el_.autoplay = val; }\n\n /**\n * Get controls attribute\n *\n * @return {String}\n * @method controls\n */\n controls() { return this.el_.controls; }\n\n /**\n * Set controls attribute\n *\n * @param {String} val Value for controls attribute\n * @method setControls\n */\n setControls(val) { this.el_.controls = !!val; }\n\n /**\n * Get loop attribute\n *\n * @return {String}\n * @method loop\n */\n loop() { return this.el_.loop; }\n\n /**\n * Set loop attribute\n *\n * @param {String} val Value for loop attribute\n * @method setLoop\n */\n setLoop(val) { this.el_.loop = val; }\n\n /**\n * Get error value\n *\n * @return {String}\n * @method error\n */\n error() { return this.el_.error; }\n\n /**\n * Get whether or not the player is in the \"seeking\" state\n *\n * @return {Boolean}\n * @method seeking\n */\n seeking() { return this.el_.seeking; }\n\n /**\n * Get a TimeRanges object that represents the\n * ranges of the media resource to which it is possible\n * for the user agent to seek.\n *\n * @return {TimeRangeObject}\n * @method seekable\n */\n seekable() { return this.el_.seekable; }\n\n /**\n * Get if video ended\n *\n * @return {Boolean}\n * @method ended\n */\n ended() { return this.el_.ended; }\n\n /**\n * Get the value of the muted content attribute\n * This attribute has no dynamic effect, it only\n * controls the default state of the element\n *\n * @return {Boolean}\n * @method defaultMuted\n */\n defaultMuted() { return this.el_.defaultMuted; }\n\n /**\n * Get desired speed at which the media resource is to play\n *\n * @return {Number}\n * @method playbackRate\n */\n playbackRate() { return this.el_.playbackRate; }\n\n /**\n * Returns a TimeRanges object that represents the ranges of the\n * media resource that the user agent has played.\n * @return {TimeRangeObject} the range of points on the media\n * timeline that has been reached through normal playback\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-played\n */\n played() { return this.el_.played; }\n\n /**\n * Set desired speed at which the media resource is to play\n *\n * @param {Number} val Speed at which the media resource is to play\n * @method setPlaybackRate\n */\n setPlaybackRate(val) { this.el_.playbackRate = val; }\n\n /**\n * Get the current state of network activity for the element, from\n * the list below\n * NETWORK_EMPTY (numeric value 0)\n * NETWORK_IDLE (numeric value 1)\n * NETWORK_LOADING (numeric value 2)\n * NETWORK_NO_SOURCE (numeric value 3)\n *\n * @return {Number}\n * @method networkState\n */\n networkState() { return this.el_.networkState; }\n\n /**\n * Get a value that expresses the current state of the element\n * with respect to rendering the current playback position, from\n * the codes in the list below\n * HAVE_NOTHING (numeric value 0)\n * HAVE_METADATA (numeric value 1)\n * HAVE_CURRENT_DATA (numeric value 2)\n * HAVE_FUTURE_DATA (numeric value 3)\n * HAVE_ENOUGH_DATA (numeric value 4)\n *\n * @return {Number}\n * @method readyState\n */\n readyState() { return this.el_.readyState; }\n\n /**\n * Get width of video\n *\n * @return {Number}\n * @method videoWidth\n */\n videoWidth() { return this.el_.videoWidth; }\n\n /**\n * Get height of video\n *\n * @return {Number}\n * @method videoHeight\n */\n videoHeight() { return this.el_.videoHeight; }\n\n /**\n * Get text tracks\n *\n * @return {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n return super.textTracks();\n }\n\n /**\n * Creates and returns a text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n addTextTrack(kind, label, language) {\n if (!this['featuresNativeTextTracks']) {\n return super.addTextTrack(kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n }\n\n /**\n * Creates a remote text track object and returns a html track element\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {HTMLTrackElement}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options={}) {\n if (!this['featuresNativeTextTracks']) {\n return super.addRemoteTextTrack(options);\n }\n\n let htmlTrackElement = document.createElement('track');\n\n if (options.kind) {\n htmlTrackElement.kind = options.kind;\n }\n if (options.label) {\n htmlTrackElement.label = options.label;\n }\n if (options.language || options.srclang) {\n htmlTrackElement.srclang = options.language || options.srclang;\n }\n if (options.default) {\n htmlTrackElement.default = options.default;\n }\n if (options.id) {\n htmlTrackElement.id = options.id;\n }\n if (options.src) {\n htmlTrackElement.src = options.src;\n }\n\n this.el().appendChild(htmlTrackElement);\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack_(htmlTrackElement.track);\n\n return htmlTrackElement;\n }\n\n /**\n * Remove remote text track from TextTrackList object\n *\n * @param {TextTrackObject} track Texttrack object to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n if (!this['featuresNativeTextTracks']) {\n return super.removeRemoteTextTrack(track);\n }\n\n let tracks, i;\n\n let 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\n tracks = this.$$('track');\n\n i = tracks.length;\n while (i--) {\n if (track === tracks[i] || track === tracks[i].track) {\n this.el().removeChild(tracks[i]);\n }\n }\n }\n\n}\n\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\n/*\n* Element for testing browser HTML5 video capabilities\n*\n* @type {Element}\n* @constant\n* @private\n*/\nHtml5.TEST_VID = document.createElement('video');\nlet track = document.createElement('track');\ntrack.kind = 'captions';\ntrack.srclang = 'en';\ntrack.label = 'English';\nHtml5.TEST_VID.appendChild(track);\n\n/*\n * Check if HTML5 video is supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.isSupported = function(){\n // IE9 with no Media Player is a LIAR! (#984)\n try {\n Html5.TEST_VID['volume'] = 0.5;\n } catch (e) {\n return false;\n }\n\n return !!Html5.TEST_VID.canPlayType;\n};\n\n// Add Source Handler pattern functions to this tech\nTech.withSourceHandlers(Html5);\n\n/*\n * The default native source handler.\n * This simply passes the source to the video element. Nothing fancy.\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the HTML5 tech\n */\nHtml5.nativeSourceHandler = {};\n\n/*\n * Check if the video element can play the given videotype\n *\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canPlayType = function(type){\n // IE9 on Windows 7 without MediaPlayer throws an error here\n // https://github.com/videojs/video.js/issues/519\n try {\n return Html5.TEST_VID.canPlayType(type);\n } catch(e) {\n return '';\n }\n};\n\n/*\n * Check if the video element can handle the source natively\n *\n * @param {Object} source The source object\n * @param {Object} options The options passed to the tech\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.nativeSourceHandler.canHandleSource = function(source, options){\n var match, ext;\n\n // If a type was provided we should rely on that\n if (source.type) {\n return Html5.nativeSourceHandler.canPlayType(source.type);\n } else if (source.src) {\n // If no type, fall back to checking 'video/[EXTENSION]'\n ext = Url.getFileExtension(source.src);\n\n return Html5.nativeSourceHandler.canPlayType(`video/${ext}`);\n }\n\n return '';\n};\n\n/*\n * Pass the source to the video element\n * Adaptive source handlers will have more complicated workflows before passing\n * video data to the video element\n *\n * @param {Object} source The source object\n * @param {Html5} tech The instance of the Html5 tech\n * @param {Object} options The options to pass to the source\n */\nHtml5.nativeSourceHandler.handleSource = function(source, tech, options){\n tech.setSrc(source.src);\n};\n\n/*\n* Clean up the source handler when disposing the player or switching sources..\n* (no cleanup is needed when supporting the format natively)\n*/\nHtml5.nativeSourceHandler.dispose = function(){};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\n/*\n * Check if the volume can be changed in this browser/device.\n * Volume cannot be changed in a lot of mobile devices.\n * Specifically, it can't be changed from 1 on iOS.\n *\n * @return {Boolean}\n */\nHtml5.canControlVolume = function(){\n // IE will error if Windows Media Player not installed #3315\n try {\n var volume = Html5.TEST_VID.volume;\n Html5.TEST_VID.volume = (volume / 2) + 0.1;\n return volume !== Html5.TEST_VID.volume;\n } catch(e) {\n return false;\n }\n};\n\n/*\n * Check if playbackRate is supported in this browser/device.\n *\n * @return {Boolean}\n */\nHtml5.canControlPlaybackRate = function(){\n // Playback rate API is implemented in Android Chrome, but doesn't do anything\n // https://github.com/videojs/video.js/issues/3180\n if (browser.IS_ANDROID && browser.IS_CHROME) {\n return false;\n }\n // IE will error if Windows Media Player not installed #3315\n try {\n var playbackRate = Html5.TEST_VID.playbackRate;\n Html5.TEST_VID.playbackRate = (playbackRate / 2) + 0.1;\n return playbackRate !== Html5.TEST_VID.playbackRate;\n } catch(e) {\n return false;\n }\n};\n\n/*\n * Check to see if native text tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeTextTracks = function() {\n var supportsTextTracks;\n\n // Figure out native text track support\n // If mode is a number, we cannot change it because it'll disappear from view.\n // Browsers with numeric modes include IE10 and older (<=2013) samsung android models.\n // Firefox isn't playing nice either with modifying the mode\n // TODO: Investigate firefox: https://github.com/videojs/video.js/issues/1862\n supportsTextTracks = !!Html5.TEST_VID.textTracks;\n if (supportsTextTracks && Html5.TEST_VID.textTracks.length > 0) {\n supportsTextTracks = typeof Html5.TEST_VID.textTracks[0]['mode'] !== 'number';\n }\n if (supportsTextTracks && browser.IS_FIREFOX) {\n supportsTextTracks = false;\n }\n if (supportsTextTracks && !('onremovetrack' in Html5.TEST_VID.textTracks)) {\n supportsTextTracks = false;\n }\n\n return supportsTextTracks;\n};\n\n/*\n * Check to see if native video tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeVideoTracks = function() {\n let supportsVideoTracks = !!Html5.TEST_VID.videoTracks;\n return supportsVideoTracks;\n};\n\n/*\n * Check to see if native audio tracks are supported by this browser/device\n *\n * @return {Boolean}\n */\nHtml5.supportsNativeAudioTracks = function() {\n let supportsAudioTracks = !!Html5.TEST_VID.audioTracks;\n return supportsAudioTracks;\n};\n\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = [\n 'loadstart',\n 'suspend',\n 'abort',\n 'error',\n 'emptied',\n 'stalled',\n 'loadedmetadata',\n 'loadeddata',\n 'canplay',\n 'canplaythrough',\n 'playing',\n 'waiting',\n 'seeking',\n 'seeked',\n 'ended',\n 'durationchange',\n 'timeupdate',\n 'progress',\n 'play',\n 'pause',\n 'ratechange',\n 'volumechange'\n];\n\n/*\n * Set the tech's volume control support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresVolumeControl'] = Html5.canControlVolume();\n\n/*\n * Set the tech's playbackRate support status\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresPlaybackRate'] = Html5.canControlPlaybackRate();\n\n/*\n * Set the tech's status on moving the video element.\n * In iOS, if you move a video element in the DOM, it breaks video playback.\n *\n * @type {Boolean}\n */\nHtml5.prototype['movingMediaElementInDOM'] = !browser.IS_IOS;\n\n/*\n * Set the the tech's fullscreen resize support status.\n * HTML video is able to automatically resize when going to fullscreen.\n * (No longer appears to be used. Can probably be removed.)\n */\nHtml5.prototype['featuresFullscreenResize'] = true;\n\n/*\n * Set the tech's progress event support status\n * (this disables the manual progress events of the Tech)\n */\nHtml5.prototype['featuresProgressEvents'] = true;\n\n/*\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeTextTracks'] = Html5.supportsNativeTextTracks();\n\n/**\n * Sets the tech's status on native text track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeVideoTracks'] = Html5.supportsNativeVideoTracks();\n\n/**\n * Sets the tech's status on native audio track support\n *\n * @type {Boolean}\n */\nHtml5.prototype['featuresNativeAudioTracks'] = Html5.supportsNativeAudioTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nlet canPlayType;\nconst mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nconst mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function() {\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n if (browser.ANDROID_VERSION >= 4.0) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type) {\n if (type && mpegurlRE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n\n // Override Android 2.2 and less canPlayType method which is broken\n if (browser.IS_OLD_ANDROID) {\n if (!canPlayType) {\n canPlayType = Html5.TEST_VID.constructor.prototype.canPlayType;\n }\n\n Html5.TEST_VID.constructor.prototype.canPlayType = function(type){\n if (type && mp4RE.test(type)) {\n return 'maybe';\n }\n return canPlayType.call(this, type);\n };\n }\n};\n\nHtml5.unpatchCanPlayType = function() {\n var r = Html5.TEST_VID.constructor.prototype.canPlayType;\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n canPlayType = null;\n return r;\n};\n\n// by default, patch the video element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function(el){\n if (!el) { return; }\n\n if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\n\n // remove any child track or source nodes to prevent their loading\n while(el.hasChildNodes()) {\n el.removeChild(el.firstChild);\n }\n\n // remove any src reference. not setting `src=''` because that causes a warning\n // in firefox\n el.removeAttribute('src');\n\n // force the media element to update its loading state by calling load()\n // however IE on Windows 7N has a bug that throws an error so need a try/catch (#793)\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {\n // not supported\n }\n })();\n }\n};\n\nHtml5.resetMediaElement = function(el){\n if (!el) { return; }\n\n let sources = el.querySelectorAll('source');\n let i = sources.length;\n while (i--) {\n el.removeChild(sources[i]);\n }\n\n // remove any src reference.\n // not setting `src=''` because that throws an error\n el.removeAttribute('src');\n\n if (typeof el.load === 'function') {\n // wrapping in an iife so it's not deoptimized (#1060#discussion_r10324473)\n (function() {\n try {\n el.load();\n } catch (e) {}\n })();\n }\n};\n\nComponent.registerComponent('Html5', Html5);\nTech.registerTech('Html5', Html5);\nexport default Html5;\n","/**\n * @file loader.js\n */\nimport Component from '../component.js';\nimport Tech from './tech.js';\nimport window from 'global/window';\nimport toTitleCase from '../utils/to-title-case.js';\n\n/**\n * The Media Loader is the component that decides which playback technology to load\n * when the player is initialized.\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class MediaLoader\n */\nclass MediaLoader extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n if (!options.playerOptions['sources'] || options.playerOptions['sources'].length === 0) {\n for (let i=0, j=options.playerOptions['techOrder']; i<j.length; i++) {\n let techName = toTitleCase(j[i]);\n let tech = Tech.getTech(techName);\n // Support old behavior of techs being registered as components.\n // Remove once that deprecated behavior is removed.\n if (!techName) {\n tech = Component.getComponent(techName);\n }\n\n // Check if the browser supports this technology\n if (tech && tech.isSupported()) {\n player.loadTech_(techName);\n break;\n }\n }\n } else {\n // // Loop through playback technologies (HTML5, Flash) and check for support.\n // // Then load the best source.\n // // A few assumptions here:\n // // All playback technologies respect preload false.\n player.src(options.playerOptions['sources']);\n }\n }\n}\n\nComponent.registerComponent('MediaLoader', MediaLoader);\nexport default MediaLoader;\n","/**\n * @file tech.js\n * Media Technology Controller - Base class for media playback\n * technology controllers like Flash and HTML5\n */\n\nimport Component from '../component';\nimport HTMLTrackElement from '../tracks/html-track-element';\nimport HTMLTrackElementList from '../tracks/html-track-element-list';\nimport mergeOptions from '../utils/merge-options.js';\nimport TextTrack from '../tracks/text-track';\nimport TextTrackList from '../tracks/text-track-list';\nimport VideoTrack from '../tracks/video-track';\nimport VideoTrackList from '../tracks/video-track-list';\nimport AudioTrackList from '../tracks/audio-track-list';\nimport AudioTrack from '../tracks/audio-track';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport { createTimeRange } from '../utils/time-ranges.js';\nimport { bufferedPercent } from '../utils/buffer.js';\nimport MediaError from '../media-error.js';\nimport window from 'global/window';\nimport document from 'global/document';\n\n/**\n * Base class for media (HTML5 Video, Flash) controllers\n *\n * @param {Object=} options Options object\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class Tech\n */\nclass Tech extends Component {\n\n constructor(options={}, ready=function(){}){\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n super(null, options, ready);\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\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 this.textTracks_ = options.textTracks;\n this.videoTracks_ = options.videoTracks;\n this.audioTracks_ = options.audioTracks;\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 if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n this.featuresNativeTextTracks = false;\n }\n\n if (!this.featuresNativeTextTracks) {\n this.on('ready', this.emulateTextTracks);\n }\n\n this.initTextTrackListeners();\n this.initTrackListeners();\n\n // Turn on component tap events\n this.emitTapEvents();\n }\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n // Manually trigger progress events based on changes to the buffered amount\n // Many flash players and older HTML5 browsers don't send progress or progress-like events\n /**\n * Turn on progress events\n *\n * @method manualProgressOn\n */\n 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 progress events\n *\n * @method manualProgressOff\n */\n manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n }\n\n /**\n * Track progress\n *\n * @method trackProgress\n */\n trackProgress() {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(Fn.bind(this, function(){\n // Don't trigger unless buffered amount is greater than last time\n\n let numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\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 duration\n *\n * @method onDurationChange\n */\n onDurationChange() {\n this.duration_ = this.duration();\n }\n\n /**\n * Create and get TimeRange object for buffering\n *\n * @return {TimeRangeObject}\n * @method buffered\n */\n buffered() {\n return createTimeRange(0, 0);\n }\n\n /**\n * Get buffered percent\n *\n * @return {Number}\n * @method bufferedPercent\n */\n bufferedPercent() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n\n /**\n * Stops tracking progress by clearing progress interval\n *\n * @method stopTrackingProgress\n */\n stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n\n /*! Time Tracking -------------------------------------------------------------- */\n /**\n * Set event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOn\n */\n manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Remove event listeners for on play and pause and tracking current time\n *\n * @method manualTimeUpdatesOff\n */\n manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n }\n\n /**\n * Tracks current time\n *\n * @method trackCurrentTime\n */\n trackCurrentTime() {\n if (this.currentTimeInterval) { this.stopTrackingCurrentTime(); }\n this.currentTimeInterval = this.setInterval(function(){\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }, 250); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }\n\n /**\n * Turn off play progress tracking (when paused or dragging)\n *\n * @method stopTrackingCurrentTime\n */\n 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 any manual progress or timeupdate tracking\n *\n * @method dispose\n */\n dispose() {\n\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(['audio', 'video', 'text']);\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) { this.manualProgressOff(); }\n\n if (this.manualTimeUpdates) { this.manualTimeUpdatesOff(); }\n\n super.dispose();\n }\n\n /**\n * clear out a track list, or multiple track lists\n *\n * Note: Techs without source handlers should call this between\n * sources for video & audio tracks, as usually you don't want\n * to use them between tracks and we have no automatic way to do\n * it for you\n *\n * @method clearTracks\n * @param {Array|String} types type(s) of track lists to empty\n */\n clearTracks(types) {\n types = [].concat(types);\n // clear out all tracks because we can't reuse them between techs\n types.forEach((type) => {\n let list = this[`${type}Tracks`]() || [];\n let i = list.length;\n while (i--) {\n let track = list[i];\n if (type === 'text') {\n this.removeRemoteTextTrack(track);\n }\n list.removeTrack_(track);\n }\n });\n }\n\n /**\n * Reset the tech. Removes all sources and resets readyState.\n *\n * @method reset\n */\n reset() {}\n\n /**\n * When invoked without an argument, returns a MediaError object\n * representing the current error state of the player or null if\n * there is no error. When invoked with an argument, set the current\n * error state of the player.\n * @param {MediaError=} err Optional an error object\n * @return {MediaError} the current error object or null\n * @method error\n */\n error(err) {\n if (err !== undefined) {\n if (err instanceof MediaError) {\n this.error_ = err;\n } else {\n this.error_ = new MediaError(err);\n }\n this.trigger('error');\n }\n return this.error_;\n }\n\n /**\n * Return the time ranges that have been played through for the\n * current source. This implementation is incomplete. It does not\n * track the played time ranges, only whether the source has played\n * at all or not.\n * @return {TimeRangeObject} a single time range if this video has\n * played or an empty set of ranges if not.\n * @method played\n */\n played() {\n if (this.hasStarted_) {\n return createTimeRange(0, 0);\n }\n return createTimeRange();\n }\n\n /**\n * Set current time\n *\n * @method setCurrentTime\n */\n setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) { this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true }); }\n }\n\n /**\n * Initialize texttrack listeners\n *\n * @method initTextTrackListeners\n */\n initTextTrackListeners() {\n let textTrackListChanges = Fn.bind(this, function() {\n this.trigger('texttrackchange');\n });\n\n let tracks = this.textTracks();\n\n if (!tracks) return;\n\n tracks.addEventListener('removetrack', textTrackListChanges);\n tracks.addEventListener('addtrack', textTrackListChanges);\n\n this.on('dispose', Fn.bind(this, function() {\n tracks.removeEventListener('removetrack', textTrackListChanges);\n tracks.removeEventListener('addtrack', textTrackListChanges);\n }));\n }\n\n\n /**\n * Initialize audio and video track listeners\n *\n * @method initTrackListeners\n */\n initTrackListeners() {\n const trackTypes = ['video', 'audio'];\n\n trackTypes.forEach((type) => {\n let trackListChanges = () => {\n this.trigger(`${type}trackchange`);\n };\n\n let tracks = this[`${type}Tracks`]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n this.on('dispose', () => {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n\n /**\n * Emulate texttracks\n *\n * @method emulateTextTracks\n */\n emulateTextTracks() {\n let tracks = this.textTracks();\n if (!tracks) {\n return;\n }\n\n if (!window['WebVTT'] && this.el().parentNode != null) {\n let script = document.createElement('script');\n script.src = this.options_['vtt.js'] || '../node_modules/videojs-vtt.js/dist/vtt.js';\n script.onload = () => {\n this.trigger('vttjsloaded');\n };\n script.onerror = () => {\n this.trigger('vttjserror');\n };\n this.on('dispose', () => {\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 }\n\n let updateDisplay = () => this.trigger('texttrackchange');\n let textTracksChanges = () => {\n updateDisplay();\n\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\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\n this.on('dispose', function() {\n tracks.removeEventListener('change', textTracksChanges);\n });\n }\n\n /**\n * Get videotracks\n *\n * @returns {VideoTrackList}\n * @method videoTracks\n */\n videoTracks() {\n this.videoTracks_ = this.videoTracks_ || new VideoTrackList();\n return this.videoTracks_;\n }\n\n /**\n * Get audiotracklist\n *\n * @returns {AudioTrackList}\n * @method audioTracks\n */\n audioTracks() {\n this.audioTracks_ = this.audioTracks_ || new AudioTrackList();\n return this.audioTracks_;\n }\n\n /*\n * Provide default methods for text tracks.\n *\n * Html5 tech overrides these.\n */\n\n /**\n * Get texttracks\n *\n * @returns {TextTrackList}\n * @method textTracks\n */\n textTracks() {\n this.textTracks_ = this.textTracks_ || new TextTrackList();\n return this.textTracks_;\n }\n\n /**\n * Get remote texttracks\n *\n * @returns {TextTrackList}\n * @method remoteTextTracks\n */\n remoteTextTracks() {\n this.remoteTextTracks_ = this.remoteTextTracks_ || new TextTrackList();\n return this.remoteTextTracks_;\n }\n\n /**\n * Get remote htmltrackelements\n *\n * @returns {HTMLTrackElementList}\n * @method remoteTextTrackEls\n */\n remoteTextTrackEls() {\n this.remoteTextTrackEls_ = this.remoteTextTrackEls_ || new HTMLTrackElementList();\n return this.remoteTextTrackEls_;\n }\n\n /**\n * Creates and returns a remote text track object\n *\n * @param {String} kind Text track kind (subtitles, captions, descriptions\n * chapters and metadata)\n * @param {String=} label Label to identify the text track\n * @param {String=} language Two letter language abbreviation\n * @return {TextTrackObject}\n * @method addTextTrack\n */\n 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 * Creates a remote text track object and returns a emulated html track element\n *\n * @param {Object} options The object should contain values for\n * kind, language, label and src (location of the WebVTT file)\n * @return {HTMLTrackElement}\n * @method addRemoteTextTrack\n */\n addRemoteTextTrack(options) {\n let track = mergeOptions(options, {\n tech: this\n });\n\n let htmlTrackElement = new HTMLTrackElement(track);\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack_(htmlTrackElement.track);\n\n // must come after remoteTextTracks()\n this.textTracks().addTrack_(htmlTrackElement.track);\n\n return htmlTrackElement;\n }\n\n /**\n * Remove remote texttrack\n *\n * @param {TextTrackObject} track Texttrack to remove\n * @method removeRemoteTextTrack\n */\n removeRemoteTextTrack(track) {\n this.textTracks().removeTrack_(track);\n\n let 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 }\n\n /**\n * Provide a default setPoster method for techs\n * Poster support for techs should be optional, so we don't want techs to\n * break if they don't have a way to set a poster.\n *\n * @method setPoster\n */\n setPoster() {}\n\n /*\n * Check if the tech can support the given type\n *\n * The base tech does not support any type, but source handlers might\n * overwrite this.\n *\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n canPlayType() {\n return '';\n }\n\n /*\n * Return whether the argument is a Tech or not.\n * Can be passed either a Class like `Html5` or a instance like `player.tech_`\n *\n * @param {Object} component An item to check\n * @return {Boolean} Whether it is a tech or not\n */\n static isTech(component) {\n return component.prototype instanceof Tech ||\n component instanceof Tech ||\n component === Tech;\n }\n\n /**\n * Registers a Tech\n *\n * @param {String} name Name of the Tech to register\n * @param {Object} tech The tech to register\n * @static\n * @method registerComponent\n */\n static registerTech(name, tech) {\n if (!Tech.techs_) {\n Tech.techs_ = {};\n }\n\n if (!Tech.isTech(tech)) {\n throw new Error(`Tech ${name} must be a Tech`);\n }\n\n Tech.techs_[name] = tech;\n return tech;\n }\n\n /**\n * Gets a component by name\n *\n * @param {String} name Name of the component to get\n * @return {Component}\n * @static\n * @method getComponent\n */\n static getTech(name) {\n if (Tech.techs_ && Tech.techs_[name]) {\n return Tech.techs_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log.warn(`The ${name} tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)`);\n return window.videojs[name];\n }\n }\n}\n\n/**\n * List of associated text tracks\n *\n * @type {TextTrackList}\n * @private\n */\nTech.prototype.textTracks_;\n\n/**\n * List of associated audio tracks\n *\n * @type {AudioTrackList}\n * @private\n */\nTech.prototype.audioTracks_;\n\n/**\n * List of associated video tracks\n *\n * @type {VideoTrackList}\n * @private\n */\nTech.prototype.videoTracks_;\n\n\nvar createTrackHelper = function(self, kind, label, language, options={}) {\n let 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 let track = new TextTrack(options);\n tracks.addTrack_(track);\n\n return track;\n};\n\nTech.prototype.featuresVolumeControl = true;\n\n// Resizing plugins using request fullscreen reloads the plugin\nTech.prototype.featuresFullscreenResize = false;\nTech.prototype.featuresPlaybackRate = false;\n\n// Optional events that we can manually mimic with timers\n// currently not triggered by video-js-swf\nTech.prototype.featuresProgressEvents = false;\nTech.prototype.featuresTimeupdateEvents = false;\n\nTech.prototype.featuresNativeTextTracks = false;\n\n/*\n * A functional mixin for techs that want to use the Source Handler pattern.\n *\n * ##### EXAMPLE:\n *\n * Tech.withSourceHandlers.call(MyTech);\n *\n */\nTech.withSourceHandlers = function(_Tech){\n /*\n * Register a source handler\n * Source handlers are scripts for handling specific formats.\n * The source handler pattern is used for adaptive formats (HLS, DASH) that\n * manually load video data and feed it into a Source Buffer (Media Source Extensions)\n * @param {Function} handler The source handler\n * @param {Boolean} first Register it before any existing handlers\n */\n _Tech.registerSourceHandler = function(handler, index){\n let handlers = _Tech.sourceHandlers;\n\n if (!handlers) {\n handlers = _Tech.sourceHandlers = [];\n }\n\n if (index === undefined) {\n // add to the end of the list\n index = handlers.length;\n }\n\n handlers.splice(index, 0, handler);\n };\n\n /*\n * Check if the tech can support the given type\n * @param {String} type The mimetype to check\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlayType = function(type){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canPlayType(type);\n\n if (can) {\n return can;\n }\n }\n\n return '';\n };\n\n /*\n * Return the first source handler that supports the source\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n * @param {Object} source The source object\n * @param {Object} options The options passed to the tech\n * @returns {Object} The first source handler that supports the source\n * @returns {null} Null if no source handler is found\n */\n _Tech.selectSourceHandler = function(source, options){\n let handlers = _Tech.sourceHandlers || [];\n let can;\n\n for (let i = 0; i < handlers.length; i++) {\n can = handlers[i].canHandleSource(source, options);\n\n if (can) {\n return handlers[i];\n }\n }\n\n return null;\n };\n\n /*\n * Check if the tech can support the given source\n * @param {Object} srcObj The source object\n * @param {Object} options The options passed to the tech\n * @return {String} 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function(srcObj, options){\n let sh = _Tech.selectSourceHandler(srcObj, options);\n\n if (sh) {\n return sh.canHandleSource(srcObj, options);\n }\n\n return '';\n };\n\n /*\n * When using a source handler, prefer its implementation of\n * any function normally provided by the tech.\n */\n let deferrable = [\n 'seekable',\n 'duration'\n ];\n\n deferrable.forEach(function (fnName) {\n let originalFn = this[fnName];\n\n if (typeof originalFn !== 'function') {\n return;\n }\n\n this[fnName] = function() {\n if (this.sourceHandler_ && this.sourceHandler_[fnName]) {\n return this.sourceHandler_[fnName].apply(this.sourceHandler_, arguments);\n }\n return originalFn.apply(this, arguments);\n };\n }, _Tech.prototype);\n\n /*\n * Create a function for setting the source using a source object\n * and source handlers.\n * Should never be called unless a source handler was found.\n * @param {Object} source A source object with src and type keys\n * @return {Tech} self\n */\n _Tech.prototype.setSource = function(source){\n let sh = _Tech.selectSourceHandler(source, this.options_);\n\n if (!sh) {\n // Fall back to a native source hander when unsupported sources are\n // deliberately set\n if (_Tech.nativeSourceHandler) {\n sh = _Tech.nativeSourceHandler;\n } else {\n log.error('No source hander found for the current source.');\n }\n }\n\n // Dispose any existing source handler\n this.disposeSourceHandler();\n this.off('dispose', this.disposeSourceHandler);\n\n // if we have a source and get another one\n // then we are loading something new\n // than clear all of our current tracks\n if (this.currentSource_) {\n this.clearTracks(['audio', 'video']);\n\n this.currentSource_ = null;\n }\n\n if (sh !== _Tech.nativeSourceHandler) {\n\n this.currentSource_ = source;\n\n // Catch if someone replaced the src without calling setSource.\n // If they do, set currentSource_ to null and dispose our source handler.\n this.off(this.el_, 'loadstart', _Tech.prototype.firstLoadStartListener_);\n this.off(this.el_, 'loadstart', _Tech.prototype.successiveLoadStartListener_);\n this.one(this.el_, 'loadstart', _Tech.prototype.firstLoadStartListener_);\n\n }\n\n this.sourceHandler_ = sh.handleSource(source, this, this.options_);\n this.on('dispose', this.disposeSourceHandler);\n\n return this;\n };\n\n // On the first loadstart after setSource\n _Tech.prototype.firstLoadStartListener_ = function() {\n this.one(this.el_, 'loadstart', _Tech.prototype.successiveLoadStartListener_);\n };\n\n // On successive loadstarts when setSource has not been called again\n _Tech.prototype.successiveLoadStartListener_ = function() {\n this.currentSource_ = null;\n this.disposeSourceHandler();\n this.one(this.el_, 'loadstart', _Tech.prototype.successiveLoadStartListener_);\n };\n\n /*\n * Clean up any existing source handler\n */\n _Tech.prototype.disposeSourceHandler = function() {\n if (this.sourceHandler_ && this.sourceHandler_.dispose) {\n this.off(this.el_, 'loadstart', _Tech.prototype.firstLoadStartListener_);\n this.off(this.el_, 'loadstart', _Tech.prototype.successiveLoadStartListener_);\n this.sourceHandler_.dispose();\n this.sourceHandler_ = null;\n }\n };\n\n};\n\nComponent.registerComponent('Tech', Tech);\n// Old name for Tech\nComponent.registerComponent('MediaTechController', Tech);\nTech.registerTech('Tech', Tech);\nexport default Tech;\n","/**\n * @file audio-track-list.js\n */\nimport TrackList from './track-list';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\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 {Array|AudioTrackList} list list to work on\n * @param {AudioTrack} track the track to skip\n */\nconst disableOthers = function(list, track) {\n for (let i = 0; i < list.length; i++) {\n if (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 * A list of possible audio tracks. All functionality is in the\n * base class Tracklist and the spec for AudioTrackList is located at:\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist\n *\n * interface AudioTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter AudioTrack (unsigned long index);\n * AudioTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n *\n * @param {AudioTrack[]} tracks a list of audio tracks to instantiate the list with\n * @extends TrackList\n * @class AudioTrackList\n */\nclass AudioTrackList extends TrackList {\n constructor(tracks = []) {\n let list;\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (let 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 (browser.IS_IE8) {\n list = document.createElement('custom');\n for (let prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (let prop in AudioTrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = AudioTrackList.prototype[prop];\n }\n }\n }\n\n list = super(tracks, list);\n list.changing_ = false;\n\n return list;\n }\n\n addTrack_(track) {\n if (track.enabled) {\n disableOthers(this, track);\n }\n\n super.addTrack_(track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n\n track.addEventListener('enabledchange', () => {\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 (this.changing_) {\n return;\n }\n this.changing_ = true;\n disableOthers(this, track);\n this.changing_ = false;\n this.trigger('change');\n });\n }\n\n addTrack(track) {\n this.addTrack_(track);\n }\n\n removeTrack(track) {\n super.removeTrack_(track);\n }\n\n}\n\nexport default AudioTrackList;\n","import {AudioTrackKind} from './track-enums';\nimport Track from './track';\nimport merge from '../utils/merge-options';\nimport * as browser from '../utils/browser.js';\n\n/**\n * A single audio text track as defined in:\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack\n *\n * interface AudioTrack {\n * readonly attribute DOMString id;\n * readonly attribute DOMString kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n * attribute boolean enabled;\n * };\n *\n * @param {Object=} options Object of option names and values\n * @class AudioTrack\n */\nclass AudioTrack extends Track {\n constructor(options = {}) {\n let settings = merge(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 let track = super(settings);\n let enabled = false;\n\n if (browser.IS_IE8) {\n for (let prop in AudioTrack.prototype) {\n if (prop !== 'constructor') {\n track[prop] = AudioTrack.prototype[prop];\n }\n }\n }\n\n Object.defineProperty(track, 'enabled', {\n get() { return enabled; },\n set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n enabled = newEnabled;\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 track;\n }\n}\n\nexport default AudioTrack;\n","/**\n * @file html-track-element-list.js\n */\n\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\nclass HtmlTrackElementList {\n constructor(trackElements = []) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let prop in HtmlTrackElementList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = HtmlTrackElementList.prototype[prop];\n }\n }\n }\n\n list.trackElements_ = [];\n\n Object.defineProperty(list, 'length', {\n get() {\n return this.trackElements_.length;\n }\n });\n\n for (let i = 0, length = trackElements.length; i < length; i++) {\n list.addTrackElement_(trackElements[i]);\n }\n\n if (browser.IS_IE8) {\n return list;\n }\n }\n\n addTrackElement_(trackElement) {\n this.trackElements_.push(trackElement);\n }\n\n getTrackElementByTrack_(track) {\n let trackElement_;\n\n for (let 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 removeTrackElement_(trackElement) {\n for (let 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\nexport default HtmlTrackElementList;\n","/**\n * @file html-track-element.js\n */\n\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport EventTarget from '../event-target';\nimport TextTrack from '../tracks/text-track';\n\nconst NONE = 0;\nconst LOADING = 1;\nconst LOADED = 2;\nconst ERROR = 3;\n\n/**\n * https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement\n *\n * interface HTMLTrackElement : HTMLElement {\n * attribute DOMString kind;\n * attribute DOMString src;\n * attribute DOMString srclang;\n * attribute DOMString label;\n * attribute boolean default;\n *\n * const unsigned short NONE = 0;\n * const unsigned short LOADING = 1;\n * const unsigned short LOADED = 2;\n * const unsigned short ERROR = 3;\n * readonly attribute unsigned short readyState;\n *\n * readonly attribute TextTrack track;\n * };\n *\n * @param {Object} options TextTrack configuration\n * @class HTMLTrackElement\n */\n\nclass HTMLTrackElement extends EventTarget {\n constructor(options = {}) {\n super();\n\n let readyState,\n trackElement = this;\n\n if (browser.IS_IE8) {\n trackElement = document.createElement('custom');\n\n for (let prop in HTMLTrackElement.prototype) {\n if (prop !== 'constructor') {\n trackElement[prop] = HTMLTrackElement.prototype[prop];\n }\n }\n }\n\n let 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 Object.defineProperty(trackElement, 'readyState', {\n get() {\n return readyState;\n }\n });\n\n Object.defineProperty(trackElement, 'track', {\n get() {\n return track;\n }\n });\n\n readyState = NONE;\n\n track.addEventListener('loadeddata', function() {\n readyState = LOADED;\n\n trackElement.trigger({\n type: 'load',\n target: trackElement\n });\n });\n\n if (browser.IS_IE8) {\n return trackElement;\n }\n }\n}\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\n\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\nexport default HTMLTrackElement;\n","/**\n * @file text-track-cue-list.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/**\n * A List of text track cues as defined in:\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist\n *\n * interface TextTrackCueList {\n * readonly attribute unsigned long length;\n * getter TextTrackCue (unsigned long index);\n * TextTrackCue? getCueById(DOMString id);\n * };\n *\n * @param {Array} cues A list of cues to be initialized with\n * @class TextTrackCueList\n */\n\nclass TextTrackCueList {\n constructor(cues) {\n let list = this;\n\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n\n for (let 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 Object.defineProperty(list, 'length', {\n get() {\n return this.length_;\n }\n });\n\n if (browser.IS_IE8) {\n return list;\n }\n }\n\n /**\n * A setter for cues in this list\n *\n * @param {Array} cues an array of cues\n * @method setCues_\n * @private\n */\n setCues_(cues) {\n let oldLength = this.length || 0;\n let i = 0;\n let l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n let defineProp = function(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get() {\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 cue that is currently in the Cue list by id\n *\n * @param {String} id\n * @method getCueById\n * @return {Object} a single cue\n */\n getCueById(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n }\n}\n\nexport default TextTrackCueList;\n","/**\n * @file text-track-display.js\n */\nimport Component from '../component';\nimport Menu from '../menu/menu.js';\nimport MenuItem from '../menu/menu-item.js';\nimport MenuButton from '../menu/menu-button.js';\nimport * as Fn from '../utils/fn.js';\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst darkGray = '#222';\nconst lightGray = '#ccc';\nconst fontMap = {\n monospace: 'monospace',\n sansSerif: 'sans-serif',\n serif: 'serif',\n monospaceSansSerif: '\"Andale Mono\", \"Lucida Console\", monospace',\n monospaceSerif: '\"Courier New\", monospace',\n proportionalSansSerif: 'sans-serif',\n proportionalSerif: 'serif',\n casual: '\"Comic Sans MS\", Impact, fantasy',\n script: '\"Monotype Corsiva\", cursive',\n smallcaps: '\"Andale Mono\", \"Lucida Console\", monospace, sans-serif'\n};\n\n/**\n * The component for displaying text track cues\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @param {Function=} ready Ready callback function\n * @extends Component\n * @class TextTrackDisplay\n */\nclass TextTrackDisplay extends Component {\n\n constructor(player, options, ready){\n super(player, options, ready);\n\n player.on('loadstart', Fn.bind(this, this.toggleDisplay));\n player.on('texttrackchange', Fn.bind(this, this.updateDisplay));\n\n // This used to be called during player init, but was causing an error\n // if a track should show by default and the display hadn't loaded yet.\n // Should probably be moved to an external track loader when we support\n // tracks that don't need a display.\n player.ready(Fn.bind(this, function() {\n if (player.tech_ && player.tech_['featuresNativeTextTracks']) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', Fn.bind(this, this.updateDisplay));\n\n let tracks = this.options_.playerOptions['tracks'] || [];\n for (let i = 0; i < tracks.length; i++) {\n let track = tracks[i];\n this.player_.addRemoteTextTrack(track);\n }\n\n let modes = {'captions': 1, 'subtitles': 1};\n let trackList = this.player_.textTracks();\n let firstDesc;\n let firstCaptions;\n\n if (trackList) {\n for (let i = 0; i < trackList.length; i++) {\n let track = trackList[i];\n if (track.default) {\n if (track.kind === 'descriptions' && !firstDesc) {\n firstDesc = track;\n } else if (track.kind in modes && !firstCaptions) {\n firstCaptions = track;\n }\n }\n }\n\n // We want to show the first default track but captions and subtitles\n // take precedence over descriptions.\n // So, display the first default captions or subtitles track\n // and otherwise the first default descriptions track.\n if (firstCaptions) {\n firstCaptions.mode = 'showing';\n } else if (firstDesc) {\n firstDesc.mode = 'showing';\n }\n }\n }));\n }\n\n /**\n * Toggle display texttracks\n *\n * @method toggleDisplay\n */\n toggleDisplay() {\n if (this.player_.tech_ && this.player_.tech_['featuresNativeTextTracks']) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-text-track-display'\n }, {\n 'aria-live': 'assertive',\n 'aria-atomic': 'true'\n });\n }\n\n /**\n * Clear display texttracks\n *\n * @method clearDisplay\n */\n clearDisplay() {\n if (typeof window['WebVTT'] === 'function') {\n window['WebVTT']['processCues'](window, [], this.el_);\n }\n }\n\n /**\n * Update display texttracks\n *\n * @method updateDisplay\n */\n updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\n\n if (!tracks) {\n return;\n }\n\n // Track display prioritization model: if multiple tracks are 'showing',\n // display the first 'subtitles' or 'captions' track which is 'showing',\n // otherwise display the first 'descriptions' track which is 'showing'\n\n let descriptionsTrack = null;\n let captionsSubtitlesTrack = null;\n\n let i = tracks.length;\n while (i--) {\n let track = tracks[i];\n if (track['mode'] === 'showing') {\n if (track['kind'] === 'descriptions') {\n descriptionsTrack = track;\n } else {\n captionsSubtitlesTrack = track;\n }\n }\n }\n\n if (captionsSubtitlesTrack) {\n this.updateForTrack(captionsSubtitlesTrack);\n } else if (descriptionsTrack) {\n this.updateForTrack(descriptionsTrack);\n }\n }\n\n /**\n * Add texttrack to texttrack list\n *\n * @param {TextTrackObject} track Texttrack object to be added to list\n * @method updateForTrack\n */\n updateForTrack(track) {\n if (typeof window['WebVTT'] !== 'function' || !track['activeCues']) {\n return;\n }\n\n let overrides = this.player_['textTrackSettings'].getValues();\n\n let cues = [];\n for (let i = 0; i < track['activeCues'].length; i++) {\n cues.push(track['activeCues'][i]);\n }\n\n window['WebVTT']['processCues'](window, cues, this.el_);\n\n let i = cues.length;\n while (i--) {\n let cue = cues[i];\n if (!cue) {\n continue;\n }\n\n let cueDiv = cue.displayState;\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'color',\n constructColor(overrides.color || '#fff',\n overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild,\n 'backgroundColor',\n constructColor(overrides.backgroundColor || '#000',\n overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv,\n 'backgroundColor',\n constructColor(overrides.windowColor, overrides.windowOpacity));\n } else {\n cueDiv.style.backgroundColor = overrides.windowColor;\n }\n }\n if (overrides.edgeStyle) {\n if (overrides.edgeStyle === 'dropshadow') {\n cueDiv.firstChild.style.textShadow = `2px 2px 3px ${darkGray}, 2px 2px 4px ${darkGray}, 2px 2px 5px ${darkGray}`;\n } else if (overrides.edgeStyle === 'raised') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${darkGray}, 2px 2px ${darkGray}, 3px 3px ${darkGray}`;\n } else if (overrides.edgeStyle === 'depressed') {\n cueDiv.firstChild.style.textShadow = `1px 1px ${lightGray}, 0 1px ${lightGray}, -1px -1px ${darkGray}, 0 -1px ${darkGray}`;\n } else if (overrides.edgeStyle === 'uniform') {\n cueDiv.firstChild.style.textShadow = `0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}, 0 0 4px ${darkGray}`;\n }\n }\n if (overrides.fontPercent && overrides.fontPercent !== 1) {\n const fontSize = window.parseFloat(cueDiv.style.fontSize);\n cueDiv.style.fontSize = (fontSize * overrides.fontPercent) + 'px';\n cueDiv.style.height = 'auto';\n cueDiv.style.top = 'auto';\n cueDiv.style.bottom = '2px';\n }\n if (overrides.fontFamily && overrides.fontFamily !== 'default') {\n if (overrides.fontFamily === 'small-caps') {\n cueDiv.firstChild.style.fontVariant = 'small-caps';\n } else {\n cueDiv.firstChild.style.fontFamily = fontMap[overrides.fontFamily];\n }\n }\n }\n }\n\n}\n\n/**\n* Add cue HTML to display\n*\n* @param {Number} color Hex number for color, like #f0e\n* @param {Number} opacity Value for opacity,0.0 - 1.0\n* @return {RGBAColor} In the form 'rgba(255, 0, 0, 0.3)'\n* @method constructColor\n*/\nfunction constructColor(color, opacity) {\n return 'rgba(' +\n // color looks like \"#f0e\"\n parseInt(color[1] + color[1], 16) + ',' +\n parseInt(color[2] + color[2], 16) + ',' +\n parseInt(color[3] + color[3], 16) + ',' +\n opacity + ')';\n}\n\n/**\n * Try to update style\n * Some style changes will throw an error, particularly in IE8. Those should be noops.\n *\n * @param {Element} el The element to be styles\n * @param {CSSProperty} style The CSS property to be styled\n * @param {CSSStyle} rule The actual style to be applied to the property\n * @method tryUpdateStyle\n */\nfunction tryUpdateStyle(el, style, rule) {\n //\n try {\n el.style[style] = rule;\n } catch (e) {}\n}\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\nexport default TextTrackDisplay;\n","/**\n * Utilities for capturing text track state and re-creating tracks\n * based on a capture.\n *\n * @file text-track-list-converter.js\n */\n\n/**\n * Examine a single text track and return a JSON-compatible javascript\n * object that represents the text track's state.\n * @param track {TextTrackObject} the text track to query\n * @return {Object} a serializable javascript representation of the\n * @private\n */\nlet trackToJson_ = function(track) {\n let ret = ['kind', 'label', 'language', 'id',\n 'inBandMetadataTrackDispatchType',\n 'mode', 'src'].reduce((acc, prop, i) => {\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 tech and return a JSON-compatible javascript array that\n * represents the state of all text tracks currently configured. The\n * return array is compatible with `jsonToTextTracks`.\n * @param tech {tech} the tech object to query\n * @return {Array} a serializable javascript representation of the\n * @function textTracksToJson\n */\nlet textTracksToJson = function(tech) {\n\n let trackEls = tech.$$('track');\n\n let trackObjs = Array.prototype.map.call(trackEls, (t) => t.track);\n let tracks = Array.prototype.map.call(trackEls, function(trackEl) {\n let json = trackToJson_(trackEl.track);\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 * Creates a set of remote text tracks on a tech based on an array of\n * javascript text track representations.\n * @param json {Array} an array of text track representation objects,\n * like those that would be produced by `textTracksToJson`\n * @param tech {tech} the tech to create text tracks on\n * @function jsonToTextTracks\n */\nlet jsonToTextTracks = function(json, tech) {\n json.forEach(function(track) {\n let addedTrack = tech.addRemoteTextTrack(track).track;\n if (!track.src && track.cues) {\n track.cues.forEach((cue) => addedTrack.addCue(cue));\n }\n });\n\n return tech.textTracks();\n};\n\nexport default {textTracksToJson, jsonToTextTracks, trackToJson_};\n","/**\n * @file text-track-list.js\n */\nimport TrackList from './track-list';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/**\n * A list of possible text tracks. All functionality is in the\n * base class TrackList. The spec for TextTrackList is located at:\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist\n *\n * interface TextTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter TextTrack (unsigned long index);\n * TextTrack? getTrackById(DOMString id);\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n *\n * @param {TextTrack[]} tracks A list of tracks to initialize the list with\n * @extends TrackList\n * @class TextTrackList\n */\nclass TextTrackList extends TrackList {\n constructor(tracks = []) {\n let list;\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n for (let prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (let prop in TextTrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TextTrackList.prototype[prop];\n }\n }\n }\n\n list = super(tracks, list);\n return list;\n }\n\n addTrack_(track) {\n super.addTrack_(track);\n track.addEventListener('modechange', Fn.bind(this, function() {\n this.trigger('change');\n }));\n }\n\n /**\n * Remove TextTrack from TextTrackList\n * NOTE: Be mindful of what is passed in as it may be a HTMLTrackElement\n *\n * @param {TextTrack} rtrack\n * @method removeTrack_\n * @private\n */\n removeTrack_(rtrack) {\n let track;\n\n for (let 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 this.trigger({\n track,\n type: 'removetrack'\n });\n }\n\n /**\n * Get a TextTrack from TextTrackList by a tracks id\n *\n * @param {String} id - the id of the track to get\n * @method getTrackById\n * @return {TextTrack}\n * @private\n */\n getTrackById(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n }\n}\nexport default TextTrackList;\n","/**\n * @file text-track-settings.js\n */\nimport Component from '../component';\nimport * as Events from '../utils/events.js';\nimport * as Fn from '../utils/fn.js';\nimport log from '../utils/log.js';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport window from 'global/window';\n\n/**\n * Manipulate settings of texttracks\n *\n * @param {Object} player Main Player\n * @param {Object=} options Object of option names and values\n * @extends Component\n * @class TextTrackSettings\n */\nclass TextTrackSettings extends Component {\n\n constructor(player, options) {\n super(player, options);\n this.hide();\n\n // Grab `persistTextTrackSettings` from the player options if not passed in child options\n if (options.persistTextTrackSettings === undefined) {\n this.options_.persistTextTrackSettings = this.options_.playerOptions.persistTextTrackSettings;\n }\n\n Events.on(this.$('.vjs-done-button'), 'click', Fn.bind(this, function() {\n this.saveSettings();\n this.hide();\n }));\n\n Events.on(this.$('.vjs-default-button'), 'click', Fn.bind(this, function() {\n this.$('.vjs-fg-color > select').selectedIndex = 0;\n this.$('.vjs-bg-color > select').selectedIndex = 0;\n this.$('.window-color > select').selectedIndex = 0;\n this.$('.vjs-text-opacity > select').selectedIndex = 0;\n this.$('.vjs-bg-opacity > select').selectedIndex = 0;\n this.$('.vjs-window-opacity > select').selectedIndex = 0;\n this.$('.vjs-edge-style select').selectedIndex = 0;\n this.$('.vjs-font-family select').selectedIndex = 0;\n this.$('.vjs-font-percent select').selectedIndex = 2;\n this.updateDisplay();\n }));\n\n Events.on(this.$('.vjs-fg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-bg-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.window-color > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-text-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-bg-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-window-opacity > select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-font-percent select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-edge-style select'), 'change', Fn.bind(this, this.updateDisplay));\n Events.on(this.$('.vjs-font-family select'), 'change', Fn.bind(this, this.updateDisplay));\n\n if (this.options_.persistTextTrackSettings) {\n this.restoreSettings();\n }\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * @method createEl\n */\n createEl() {\n return super.createEl('div', {\n className: 'vjs-caption-settings vjs-modal-overlay',\n innerHTML: captionOptionsMenuTemplate()\n });\n }\n\n /**\n * Get texttrack settings\n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity\n *\n * @return {Object}\n * @method getValues\n */\n getValues() {\n const textEdge = getSelectedOptionValue(this.$('.vjs-edge-style select'));\n const fontFamily = getSelectedOptionValue(this.$('.vjs-font-family select'));\n const fgColor = getSelectedOptionValue(this.$('.vjs-fg-color > select'));\n const textOpacity = getSelectedOptionValue(this.$('.vjs-text-opacity > select'));\n const bgColor = getSelectedOptionValue(this.$('.vjs-bg-color > select'));\n const bgOpacity = getSelectedOptionValue(this.$('.vjs-bg-opacity > select'));\n const windowColor = getSelectedOptionValue(this.$('.window-color > select'));\n const windowOpacity = getSelectedOptionValue(this.$('.vjs-window-opacity > select'));\n const fontPercent = window['parseFloat'](getSelectedOptionValue(this.$('.vjs-font-percent > select')));\n\n let result = {\n 'backgroundOpacity': bgOpacity,\n 'textOpacity': textOpacity,\n 'windowOpacity': windowOpacity,\n 'edgeStyle': textEdge,\n 'fontFamily': fontFamily,\n 'color': fgColor,\n 'backgroundColor': bgColor,\n 'windowColor': windowColor,\n 'fontPercent': fontPercent\n };\n for (let name in result) {\n if (result[name] === '' || result[name] === 'none' || (name === 'fontPercent' && result[name] === 1.00)) {\n delete result[name];\n }\n }\n return result;\n }\n\n /**\n * Set texttrack settings\n * Settings are\n * .vjs-edge-style\n * .vjs-font-family\n * .vjs-fg-color\n * .vjs-text-opacity\n * .vjs-bg-color\n * .vjs-bg-opacity\n * .window-color\n * .vjs-window-opacity\n *\n * @param {Object} values Object with texttrack setting values\n * @method setValues\n */\n setValues(values) {\n setSelectedOption(this.$('.vjs-edge-style select'), values.edgeStyle);\n setSelectedOption(this.$('.vjs-font-family select'), values.fontFamily);\n setSelectedOption(this.$('.vjs-fg-color > select'), values.color);\n setSelectedOption(this.$('.vjs-text-opacity > select'), values.textOpacity);\n setSelectedOption(this.$('.vjs-bg-color > select'), values.backgroundColor);\n setSelectedOption(this.$('.vjs-bg-opacity > select'), values.backgroundOpacity);\n setSelectedOption(this.$('.window-color > select'), values.windowColor);\n setSelectedOption(this.$('.vjs-window-opacity > select'), values.windowOpacity);\n\n let fontPercent = values.fontPercent;\n\n if (fontPercent) {\n fontPercent = fontPercent.toFixed(2);\n }\n\n setSelectedOption(this.$('.vjs-font-percent > select'), fontPercent);\n }\n\n /**\n * Restore texttrack settings\n *\n * @method restoreSettings\n */\n restoreSettings() {\n let err, values;\n\n try {\n [err, values] = safeParseTuple(window.localStorage.getItem('vjs-text-track-settings'));\n\n if (err) {\n log.error(err);\n }\n } catch (e) {\n log.warn(e);\n }\n\n if (values) {\n this.setValues(values);\n }\n }\n\n /**\n * Save texttrack settings to local storage\n *\n * @method saveSettings\n */\n saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n let values = this.getValues();\n try {\n if (Object.getOwnPropertyNames(values).length > 0) {\n window.localStorage.setItem('vjs-text-track-settings', JSON.stringify(values));\n } else {\n window.localStorage.removeItem('vjs-text-track-settings');\n }\n } catch (e) {\n log.warn(e);\n }\n }\n\n /**\n * Update display of texttrack settings\n *\n * @method updateDisplay\n */\n updateDisplay() {\n let ttDisplay = this.player_.getChild('textTrackDisplay');\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n }\n\n}\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\nfunction getSelectedOptionValue(target) {\n let selectedOption;\n // not all browsers support selectedOptions, so, fallback to options\n if (target.selectedOptions) {\n selectedOption = target.selectedOptions[0];\n } else if (target.options) {\n selectedOption = target.options[target.options.selectedIndex];\n }\n\n return selectedOption.value;\n}\n\nfunction setSelectedOption(target, value) {\n if (!value) {\n return;\n }\n\n let i;\n for (i = 0; i < target.options.length; i++) {\n const option = target.options[i];\n if (option.value === value) {\n break;\n }\n }\n\n target.selectedIndex = i;\n}\n\nfunction captionOptionsMenuTemplate() {\n let template = `<div class=\"vjs-tracksettings\">\n <div class=\"vjs-tracksettings-colors\">\n <div class=\"vjs-fg-color vjs-tracksetting\">\n <label class=\"vjs-label\">Foreground</label>\n <select>\n <option value=\"\">---</option>\n <option value=\"#FFF\">White</option>\n <option value=\"#000\">Black</option>\n <option value=\"#F00\">Red</option>\n <option value=\"#0F0\">Green</option>\n <option value=\"#00F\">Blue</option>\n <option value=\"#FF0\">Yellow</option>\n <option value=\"#F0F\">Magenta</option>\n <option value=\"#0FF\">Cyan</option>\n </select>\n <span class=\"vjs-text-opacity vjs-opacity\">\n <select>\n <option value=\"\">---</option>\n <option value=\"1\">Opaque</option>\n <option value=\"0.5\">Semi-Opaque</option>\n </select>\n </span>\n </div> <!-- vjs-fg-color -->\n <div class=\"vjs-bg-color vjs-tracksetting\">\n <label class=\"vjs-label\">Background</label>\n <select>\n <option value=\"\">---</option>\n <option value=\"#FFF\">White</option>\n <option value=\"#000\">Black</option>\n <option value=\"#F00\">Red</option>\n <option value=\"#0F0\">Green</option>\n <option value=\"#00F\">Blue</option>\n <option value=\"#FF0\">Yellow</option>\n <option value=\"#F0F\">Magenta</option>\n <option value=\"#0FF\">Cyan</option>\n </select>\n <span class=\"vjs-bg-opacity vjs-opacity\">\n <select>\n <option value=\"\">---</option>\n <option value=\"1\">Opaque</option>\n <option value=\"0.5\">Semi-Transparent</option>\n <option value=\"0\">Transparent</option>\n </select>\n </span>\n </div> <!-- vjs-bg-color -->\n <div class=\"window-color vjs-tracksetting\">\n <label class=\"vjs-label\">Window</label>\n <select>\n <option value=\"\">---</option>\n <option value=\"#FFF\">White</option>\n <option value=\"#000\">Black</option>\n <option value=\"#F00\">Red</option>\n <option value=\"#0F0\">Green</option>\n <option value=\"#00F\">Blue</option>\n <option value=\"#FF0\">Yellow</option>\n <option value=\"#F0F\">Magenta</option>\n <option value=\"#0FF\">Cyan</option>\n </select>\n <span class=\"vjs-window-opacity vjs-opacity\">\n <select>\n <option value=\"\">---</option>\n <option value=\"1\">Opaque</option>\n <option value=\"0.5\">Semi-Transparent</option>\n <option value=\"0\">Transparent</option>\n </select>\n </span>\n </div> <!-- vjs-window-color -->\n </div> <!-- vjs-tracksettings -->\n <div class=\"vjs-tracksettings-font\">\n <div class=\"vjs-font-percent vjs-tracksetting\">\n <label class=\"vjs-label\">Font Size</label>\n <select>\n <option value=\"0.50\">50%</option>\n <option value=\"0.75\">75%</option>\n <option value=\"1.00\" selected>100%</option>\n <option value=\"1.25\">125%</option>\n <option value=\"1.50\">150%</option>\n <option value=\"1.75\">175%</option>\n <option value=\"2.00\">200%</option>\n <option value=\"3.00\">300%</option>\n <option value=\"4.00\">400%</option>\n </select>\n </div> <!-- vjs-font-percent -->\n <div class=\"vjs-edge-style vjs-tracksetting\">\n <label class=\"vjs-label\">Text Edge Style</label>\n <select>\n <option value=\"none\">None</option>\n <option value=\"raised\">Raised</option>\n <option value=\"depressed\">Depressed</option>\n <option value=\"uniform\">Uniform</option>\n <option value=\"dropshadow\">Dropshadow</option>\n </select>\n </div> <!-- vjs-edge-style -->\n <div class=\"vjs-font-family vjs-tracksetting\">\n <label class=\"vjs-label\">Font Family</label>\n <select>\n <option value=\"\">Default</option>\n <option value=\"monospaceSerif\">Monospace Serif</option>\n <option value=\"proportionalSerif\">Proportional Serif</option>\n <option value=\"monospaceSansSerif\">Monospace Sans-Serif</option>\n <option value=\"proportionalSansSerif\">Proportional Sans-Serif</option>\n <option value=\"casual\">Casual</option>\n <option value=\"script\">Script</option>\n <option value=\"small-caps\">Small Caps</option>\n </select>\n </div> <!-- vjs-font-family -->\n </div>\n </div>\n <div class=\"vjs-tracksettings-controls\">\n <button class=\"vjs-default-button\">Defaults</button>\n <button class=\"vjs-done-button\">Done</button>\n </div>`;\n\n return template;\n}\n\nexport default TextTrackSettings;\n","/**\n * @file text-track.js\n */\nimport TextTrackCueList from './text-track-cue-list';\nimport * as Fn from '../utils/fn.js';\nimport {TextTrackKind, TextTrackMode} from './track-enums';\nimport log from '../utils/log.js';\nimport document from 'global/document';\nimport window from 'global/window';\nimport Track from './track.js';\nimport { isCrossOrigin } from '../utils/url.js';\nimport XHR from 'xhr';\nimport merge from '../utils/merge-options';\nimport * as browser from '../utils/browser.js';\n\n/**\n * takes a webvtt file contents and parses it into cues\n *\n * @param {String} srcContent webVTT file contents\n * @param {Track} track track to addcues to\n */\nconst parseCues = function(srcContent, track) {\n let parser = new window.WebVTT.Parser(window,\n window.vttjs,\n window.WebVTT.StringDecoder());\n let 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 (console.groupCollapsed) {\n console.groupCollapsed(`Text Track parsing errors for ${track.src}`);\n }\n errors.forEach((error) => log.error(error));\n if (console.groupEnd) {\n console.groupEnd();\n }\n }\n\n parser.flush();\n};\n\n/**\n * load a track from a specifed url\n *\n * @param {String} src url to load track from\n * @param {Track} track track to addcues to\n */\nconst loadTrack = function(src, track) {\n let opts = {\n uri: src\n };\n let crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n XHR(opts, Fn.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 let loadHandler = () => parseCues(responseBody, track);\n track.tech_.on('vttjsloaded', loadHandler);\n track.tech_.on('vttjserror', () => {\n log.error(`vttjs failed to load, stopping trying to process ${track.src}`);\n track.tech_.off('vttjsloaded', loadHandler);\n });\n\n }\n } else {\n parseCues(responseBody, track);\n }\n\n }));\n};\n\n/**\n * A single text track as defined in:\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack\n *\n * interface TextTrack : EventTarget {\n * readonly attribute TextTrackKind kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n *\n * readonly attribute DOMString id;\n * readonly attribute DOMString inBandMetadataTrackDispatchType;\n *\n * attribute TextTrackMode mode;\n *\n * readonly attribute TextTrackCueList? cues;\n * readonly attribute TextTrackCueList? activeCues;\n *\n * void addCue(TextTrackCue cue);\n * void removeCue(TextTrackCue cue);\n *\n * attribute EventHandler oncuechange;\n * };\n *\n * @param {Object=} options Object of option names and values\n * @extends Track\n * @class TextTrack\n */\nclass TextTrack extends Track {\n constructor(options = {}) {\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n let settings = merge(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n let mode = TextTrackMode[settings.mode] || 'disabled';\n let 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 let tt = super(settings);\n tt.tech_ = settings.tech;\n\n if (browser.IS_IE8) {\n for (let 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 let cues = new TextTrackCueList(tt.cues_);\n let activeCues = new TextTrackCueList(tt.activeCues_);\n let changed = false;\n let timeupdateHandler = Fn.bind(tt, function() {\n this.activeCues;\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n });\n\n if (mode !== 'disabled') {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperty(tt, 'default', {\n get() {\n return default_;\n },\n set() {}\n });\n\n Object.defineProperty(tt, 'mode', {\n get() {\n return mode;\n },\n set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n this.trigger('modechange');\n }\n });\n\n Object.defineProperty(tt, 'cues', {\n get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set() {}\n });\n\n Object.defineProperty(tt, 'activeCues', {\n get() {\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 let ct = this.tech_.currentTime();\n let active = [];\n\n for (let i = 0, l = this.cues.length; i < l; i++) {\n let cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime &&\n cue.startTime <= ct &&\n 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 (let 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 set() {}\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 tt;\n }\n\n /**\n * add a cue to the internal list of cues\n *\n * @param {Object} cue the cue to add to our internal list\n * @method addCue\n */\n addCue(cue) {\n let tracks = this.tech_.textTracks();\n\n if (tracks) {\n for (let i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n\n /**\n * remvoe a cue from our internal list\n *\n * @param {Object} removeCue the cue to remove from our internal list\n * @method removeCue\n */\n removeCue(removeCue) {\n let removed = false;\n\n for (let i = 0, l = this.cues_.length; i < l; i++) {\n let cue = this.cues_[i];\n\n if (cue === removeCue) {\n this.cues_.splice(i, 1);\n removed = true;\n }\n }\n\n if (removed) {\n this.cues.setCues_(this.cues_);\n }\n }\n}\n\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\nexport default TextTrack;\n","/**\n * @file track-kinds.js\n */\n\n/**\n * https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n *\n * enum VideoTrackKind {\n * \"alternative\",\n * \"captions\",\n * \"main\",\n * \"sign\",\n * \"subtitles\",\n * \"commentary\",\n * \"\",\n * };\n */\nconst VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary',\n};\n\n/**\n * https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n *\n * enum AudioTrackKind {\n * \"alternative\",\n * \"descriptions\",\n * \"main\",\n * \"main-desc\",\n * \"translation\",\n * \"commentary\",\n * \"\",\n * };\n */\nconst 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 * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackkind\n *\n * enum TextTrackKind {\n * \"subtitles\",\n * \"captions\",\n * \"descriptions\",\n * \"chapters\",\n * \"metadata\"\n * };\n */\nconst TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n\n\n\n/**\n * https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n *\n * enum TextTrackMode { \"disabled\", \"hidden\", \"showing\" };\n */\nconst TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/* jshint ignore:start */\n// we ignore jshint here because it does not see\n// AudioTrackKind as defined here\nexport default { VideoTrackKind, AudioTrackKind, TextTrackKind, TextTrackMode };\n/* jshint ignore:end */\n\n","/**\n * @file track-list.js\n */\nimport EventTarget from '../event-target';\nimport * as Fn from '../utils/fn.js';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/**\n * Common functionaliy between Text, Audio, and Video TrackLists\n * Interfaces defined in the following spec:\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html\n *\n * @param {Track[]} tracks A list of tracks to initialize the list with\n * @param {Object} list the child object with inheritance done manually for ie8\n * @extends EventTarget\n * @class TrackList\n */\nclass TrackList extends EventTarget {\n constructor(tracks = [], list = null) {\n super();\n if (!list) {\n list = this;\n if (browser.IS_IE8) {\n list = document.createElement('custom');\n for (let prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n }\n }\n\n list.tracks_ = [];\n Object.defineProperty(list, 'length', {\n get() {\n return this.tracks_.length;\n }\n });\n\n for (let i = 0; i < tracks.length; i++) {\n list.addTrack_(tracks[i]);\n }\n\n return list;\n }\n\n /**\n * Add a Track from TrackList\n *\n * @param {Mixed} track\n * @method addTrack_\n * @private\n */\n addTrack_(track) {\n let index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get() {\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 this.trigger({\n track,\n type: 'addtrack'\n });\n }\n }\n\n /**\n * Remove a Track from TrackList\n *\n * @param {Track} rtrack track to be removed\n * @method removeTrack_\n * @private\n */\n removeTrack_(rtrack) {\n let track;\n\n for (let 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 this.trigger({\n 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 getTrackById(id) {\n let result = null;\n\n for (let i = 0, l = this.length; i < l; i++) {\n let track = this[i];\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n }\n}\n\n/**\n * change - One or more tracks in the track list have been enabled or disabled.\n * addtrack - A track has been added to the track list.\n * removetrack - A track has been removed from the track list.\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 (let event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\nexport default TrackList;\n","/**\n * @file track.js\n */\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\nimport * as Guid from '../utils/guid.js';\nimport EventTarget from '../event-target';\n\n/**\n * setup the common parts of an audio, video, or text track\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html\n *\n * @param {String} type The type of track we are dealing with audio|video|text\n * @param {Object=} options Object of option names and values\n * @extends EventTarget\n * @class Track\n */\nclass Track extends EventTarget {\n constructor(options = {}) {\n super();\n\n let track = this;\n if (browser.IS_IE8) {\n track = document.createElement('custom');\n for (let prop in Track.prototype) {\n if (prop !== 'constructor') {\n track[prop] = Track.prototype[prop];\n }\n }\n }\n\n let trackProps = {\n id: options.id || 'vjs_track_' + Guid.newGUID(),\n kind: options.kind || '',\n label: options.label || '',\n language: options.language || ''\n };\n\n for (let key in trackProps) {\n Object.defineProperty(track, key, {\n get() { return trackProps[key]; },\n set() {}\n });\n }\n\n return track;\n }\n}\n\nexport default Track;\n","/**\n * @file video-track-list.js\n */\nimport TrackList from './track-list';\nimport * as browser from '../utils/browser.js';\nimport document from 'global/document';\n\n/**\n * disable other video tracks before selecting the new one\n *\n * @param {Array|VideoTrackList} list list to work on\n * @param {VideoTrack} track the track to skip\n */\nconst disableOthers = function(list, track) {\n for (let i = 0; i < list.length; i++) {\n if (track.id === list[i].id) {\n continue;\n }\n // another audio track is enabled, disable it\n list[i].selected = false;\n }\n};\n\n/**\n* A list of possiblee video tracks. Most functionality is in the\n * base class Tracklist and the spec for VideoTrackList is located at:\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist\n *\n * interface VideoTrackList : EventTarget {\n * readonly attribute unsigned long length;\n * getter VideoTrack (unsigned long index);\n * VideoTrack? getTrackById(DOMString id);\n * readonly attribute long selectedIndex;\n *\n * attribute EventHandler onchange;\n * attribute EventHandler onaddtrack;\n * attribute EventHandler onremovetrack;\n * };\n *\n * @param {VideoTrack[]} tracks a list of video tracks to instantiate the list with\n # @extends TrackList\n * @class VideoTrackList\n */\nclass VideoTrackList extends TrackList {\n\n constructor(tracks = []) {\n let list;\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (let i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\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 (browser.IS_IE8) {\n list = document.createElement('custom');\n for (let prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (let prop in VideoTrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = VideoTrackList.prototype[prop];\n }\n }\n }\n\n list = super(tracks, list);\n list.changing_ = false;\n\n Object.defineProperty(list, 'selectedIndex', {\n get() {\n for (let i = 0; i < this.length; i++) {\n if (this[i].selected) {\n return i;\n }\n }\n return -1;\n },\n set() {}\n });\n\n return list;\n }\n\n addTrack_(track) {\n if (track.selected) {\n disableOthers(this, track);\n }\n\n super.addTrack_(track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n track.addEventListener('selectedchange', () => {\n if (this.changing_) {\n return;\n }\n this.changing_ = true;\n disableOthers(this, track);\n this.changing_ = false;\n this.trigger('change');\n });\n }\n\n addTrack(track) {\n this.addTrack_(track);\n }\n\n removeTrack(track) {\n super.removeTrack_(track);\n }\n\n}\n\nexport default VideoTrackList;\n","import {VideoTrackKind} from './track-enums';\nimport Track from './track';\nimport merge from '../utils/merge-options';\nimport * as browser from '../utils/browser.js';\n\n/**\n * A single video text track as defined in:\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack\n *\n * interface VideoTrack {\n * readonly attribute DOMString id;\n * readonly attribute DOMString kind;\n * readonly attribute DOMString label;\n * readonly attribute DOMString language;\n * attribute boolean selected;\n * };\n *\n * @param {Object=} options Object of option names and values\n * @class VideoTrack\n */\nclass VideoTrack extends Track {\n constructor(options = {}) {\n let settings = merge(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 let track = super(settings);\n let selected = false;\n\n if (browser.IS_IE8) {\n for (let prop in VideoTrack.prototype) {\n if (prop !== 'constructor') {\n track[prop] = VideoTrack.prototype[prop];\n }\n }\n }\n\n Object.defineProperty(track, 'selected', {\n get() { return selected; },\n set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n selected = newSelected;\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 track;\n }\n}\n\nexport default VideoTrack;\n","/**\n * @file browser.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\nconst USER_AGENT = window.navigator.userAgent;\nconst webkitVersionMap = (/AppleWebKit\\/([\\d.]+)/i).exec(USER_AGENT);\nconst appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nexport const 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/\nexport const IS_IPHONE = (/iPhone/i).test(USER_AGENT) && !IS_IPAD;\nexport const IS_IPOD = (/iPod/i).test(USER_AGENT);\nexport const IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nexport const IOS_VERSION = (function(){\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n if (match && match[1]) { return match[1]; }\n})();\n\nexport const IS_ANDROID = (/Android/i).test(USER_AGENT);\nexport const 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 major,\n minor;\n\n if (!match) {\n return null;\n }\n\n major = match[1] && parseFloat(match[1]);\n 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 } else {\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\nexport const IS_OLD_ANDROID = IS_ANDROID && (/webkit/i).test(USER_AGENT) && ANDROID_VERSION < 2.3;\nexport const IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nexport const IS_FIREFOX = (/Firefox/i).test(USER_AGENT);\nexport const IS_EDGE = (/Edge/i).test(USER_AGENT);\nexport const IS_CHROME = !IS_EDGE && (/Chrome/i).test(USER_AGENT);\nexport const IS_IE8 = (/MSIE\\s8\\.0/).test(USER_AGENT);\n\nexport const TOUCH_ENABLED = !!(('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch);\nexport const BACKGROUND_SIZE_SUPPORTED = 'backgroundSize' in document.createElement('video').style;\n","/**\n * @file buffer.js\n */\nimport { createTimeRange } from './time-ranges.js';\n\n/**\n * Compute how much your video has been buffered\n *\n * @param {Object} Buffered object\n * @param {Number} Total duration\n * @return {Number} Percent buffered of the total duration\n * @private\n * @function bufferedPercent\n */\nexport function bufferedPercent(buffered, duration) {\n var bufferedDuration = 0,\n start, end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRange(0, 0);\n }\n\n for (let 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 * @file dom.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\nimport * as Guid from './guid.js';\nimport log from './log.js';\nimport tsml from 'tsml';\n\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @param {String} str\n * @return {Boolean}\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 * @return {Boolean}\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 class name.\n *\n * @param {String} className\n * @return {RegExp}\n */\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @function createQuerier\n * @private\n * @param {String} method\n * @return {Function}\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 return (isEl(context) ? context : document)[method](selector);\n };\n}\n\n/**\n * Shorthand for document.getElementById()\n * Also allows for CSS (jQuery) ID syntax. But nothing other than IDs.\n *\n * @param {String} id Element ID\n * @return {Element} Element with supplied ID\n * @function getEl\n */\nexport function getEl(id){\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n return document.getElementById(id);\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {String} [tagName='div'] Name of tag to be created.\n * @param {Object} [properties={}] Element properties to be applied.\n * @param {Object} [attributes={}] Element attributes to be applied.\n * @return {Element}\n * @function createEl\n */\nexport function createEl(tagName='div', properties={}, attributes={}){\n let el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function(propName){\n let 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`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 ${propName} to ${val}.`);\n el.setAttribute(propName, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let val = attributes[attrName];\n el.setAttribute(attrName, attributes[attrName]);\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 * @param {String} text\n * @return {Element}\n * @function textContent\n */\nexport function textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child Element to insert\n * @param {Element} parent Element to insert child into\n * @private\n * @function insertElFirst\n */\nexport function insertElFirst(child, parent){\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Element Data Store. Allows for binding data to an element without putting it directly on the element.\n * 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 */\nconst elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nconst elIdAttr = 'vdata' + (new Date()).getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el Element to store data for.\n * @return {Object}\n * @function getElData\n */\nexport function getElData(el) {\n let id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = Guid.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 A dom element\n * @return {Boolean}\n * @private\n * @function hasElData\n */\nexport function hasElData(el) {\n const 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 Remove data for an element\n * @private\n * @function removeElData\n */\nexport function removeElData(el) {\n let 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 * Check if an element has a CSS class\n *\n * @function hasElClass\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n */\nexport function hasElClass(element, classToCheck) {\n if (element.classList) {\n return element.classList.contains(classToCheck);\n } else {\n throwIfWhitespace(classToCheck);\n return classRegExp(classToCheck).test(element.className);\n }\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @function addElClass\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n */\nexport function addElClass(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 (!hasElClass(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 * @function removeElClass\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n */\nexport function removeElClass(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 * 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 * @function toggleElClass\n * @param {Element} element\n * @param {String} classToToggle\n * @param {Boolean|Function} [predicate]\n * Can be a function that returns a Boolean. If `true`, the class\n * will be added; if `false`, the class will be removed. If not\n * given, the class will be added if not present and vice versa.\n */\nexport function toggleElClass(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 let has = hasElClass(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 addElClass(element, classToToggle);\n } else {\n removeElClass(element, classToToggle);\n }\n\n return element;\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n * @private\n * @function setElAttributes\n */\nexport function setElAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function(attrName){\n let 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 Element from which to get tag attributes\n * @return {Object}\n * @private\n * @function getElAttributes\n */\nexport function getElAttributes(tag) {\n var obj, knownBooleans, attrs, attrName, attrVal;\n\n 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 knownBooleans = ','+'autoplay,controls,loop,muted,default'+',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n attrName = attrs[i].name;\n 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 * Attempt to block the ability to select text while dragging controls\n *\n * @return {Boolean}\n * @function blockTextSelection\n */\nexport function blockTextSelection() {\n document.body.focus();\n document.onselectstart = function() {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n *\n * @return {Boolean}\n * @function unblockTextSelection\n */\nexport function unblockTextSelection() {\n document.onselectstart = function() {\n return true;\n };\n}\n\n/**\n * Offset Left\n * getBoundingClientRect technique from\n * John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @function findElPosition\n * @param {Element} el Element from which to get offset\n * @return {Object}\n */\nexport function findElPosition(el) {\n let box;\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 const docEl = document.documentElement;\n const body = document.body;\n\n const clientLeft = docEl.clientLeft || body.clientLeft || 0;\n const scrollLeft = window.pageXOffset || body.scrollLeft;\n const left = box.left + scrollLeft - clientLeft;\n\n const clientTop = docEl.clientTop || body.clientTop || 0;\n const scrollTop = window.pageYOffset || body.scrollTop;\n const 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 * 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 * @function getPointerPosition\n * @param {Element} el Element on which to get the pointer position on\n * @param {Event} event Event object\n * @return {Object} This object will have x and y coordinates corresponding to the mouse position\n */\nexport function getPointerPosition(el, event) {\n let position = {};\n let box = findElPosition(el);\n let boxW = el.offsetWidth;\n let boxH = el.offsetHeight;\n\n let boxY = box.top;\n let boxX = box.left;\n let pageY = event.pageY;\n let 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 DOM element.\n *\n * @function isEl\n * @param {Mixed} value\n * @return {Boolean}\n */\nexport function isEl(value) {\n return !!value && typeof value === 'object' && value.nodeType === 1;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * @return {Boolean}\n */\nexport function isTextNode(value) {\n return !!value && typeof value === 'object' && value.nodeType === 3;\n}\n\n/**\n * Empties the contents of an element.\n *\n * @function emptyEl\n * @param {Element} el\n * @return {Element}\n */\nexport function 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 * - String\n * Normalized into a text node.\n *\n * - Element, TextNode\n * Passed through.\n *\n * - Array\n * A one-dimensional array of strings, elements, nodes, or functions (which\n * return single strings, elements, or nodes).\n *\n * - Function\n * If the sole argument, is expected to produce a string, element,\n * node, or array.\n *\n * @function normalizeContent\n * @param {String|Element|TextNode|Array|Function} content\n * @return {Array}\n */\nexport function 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(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(value => value);\n}\n\n/**\n * Normalizes and appends content to an element.\n *\n * @function appendContent\n * @param {Element} el\n * @param {String|Element|TextNode|Array|Function} content\n * See: `normalizeContent`\n * @return {Element}\n */\nexport function appendContent(el, content) {\n normalizeContent(content).forEach(node => el.appendChild(node));\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 * @function insertContent\n * @param {Element} el\n * @param {String|Element|TextNode|Array|Function} content\n * See: `normalizeContent`\n * @return {Element}\n */\nexport function insertContent(el, content) {\n return appendContent(emptyEl(el), content);\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 * @function $\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 */\nexport const $ = 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 * @function $$\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 */\nexport const $$ = createQuerier('querySelectorAll');\n","/**\n * @file events.js\n *\n * 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\nimport * as Dom from './dom.js';\nimport * as Guid from './guid.js';\nimport window from 'global/window';\nimport document from 'global/document';\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 Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nexport function on(elem, type, fn){\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n let data = Dom.getElData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) data.handlers = {};\n\n if (!data.handlers[type]) data.handlers[type] = [];\n\n if (!fn.guid) fn.guid = Guid.newGUID();\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) return;\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 handlersCopy[m].call(elem, event, hash);\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n elem.addEventListener(type, data.dispatcher, false);\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 Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nexport function off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!Dom.hasElData(elem)) return;\n\n let data = Dom.getElData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) { return; }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function(t){\n data.handlers[t] = [];\n _cleanUpEvents(elem,t);\n };\n\n // Are we removing all bound events?\n if (!type) {\n for (let t in data.handlers) removeType(t);\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) return;\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (let 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 Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nexport function 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 = (Dom.hasElData(elem)) ? Dom.getElData(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 }\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 = Dom.getElData(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 Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nexport function one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function(){\n off(elem, type, func);\n fn.apply(this, arguments);\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 || Guid.newGUID();\n on(elem, type, func);\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event Event object to fix\n * @return {Object}\n * @private\n * @method fixEvent\n */\nexport function fixEvent(event) {\n\n function returnTrue() { return true; }\n function returnFalse() { return false; }\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' &&\n 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 ?\n event.toElement :\n 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) {\n var doc = document.documentElement, body = document.body;\n\n event.pageX = event.clientX +\n (doc && doc.scrollLeft || body && body.scrollLeft || 0) -\n (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY +\n (doc && doc.scrollTop || body && body.scrollTop || 0) -\n (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) {\n event.button = (event.button & 1 ? 0 :\n (event.button & 4 ? 1 :\n (event.button & 2 ? 2 : 0)));\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Clean up the listener cache and dispatchers\n*\n * @param {Element|Object} elem Element to clean up\n * @param {String} type Type of event to clean up\n * @private\n * @method _cleanUpEvents\n */\nfunction _cleanUpEvents(elem, type) {\n var data = Dom.getElData(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 Dom.removeElData(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 The event method we want to use.\n * @param {Element|Object} elem Element or object to bind listeners to\n * @param {String} type Type of event to bind to.\n * @param {Function} callback Event listener.\n * @private\n * @function _handleMultipleEvents\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 * @file fn.js\n */\nimport { newGUID } from './guid.js';\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 {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n * @private\n * @method bind\n */\nexport const bind = function(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) { fn.guid = newGUID(); }\n\n // Create the new function that changes the context\n let ret = function() {\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 ret.guid = (uid) ? uid + '_' + fn.guid : fn.guid;\n\n return ret;\n};\n","/**\n * @file format-time.js\n *\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @private\n * @function formatTime\n */\nfunction formatTime(seconds, guide=seconds) {\n seconds = seconds < 0 ? 0 : seconds;\n let s = Math.floor(seconds % 60);\n let m = Math.floor(seconds / 60 % 60);\n let h = Math.floor(seconds / 3600);\n const gm = Math.floor(guide / 60 % 60);\n const gh = Math.floor(guide / 3600);\n\n // handle invalid times\n if (isNaN(seconds) || seconds === Infinity) {\n // '-' is false for all relational operators (e.g. <, >=) so this setting\n // will add the minimum number of fields specified by the guide\n h = m = s = '-';\n }\n\n // Check if we need to show hours\n h = (h > 0 || gh > 0) ? h + ':' : '';\n\n // If hours are showing, we may need to add a leading zero.\n // Always show at least one digit of minutes.\n m = (((h || gm >= 10) && m < 10) ? '0' + m : m) + ':';\n\n // Check if leading zero is need for seconds\n s = (s < 10) ? '0' + s : s;\n\n return h + m + s;\n}\n\nexport default formatTime;\n","/**\n * @file guid.js\n *\n * Unique ID for an element or function\n * @type {Number}\n * @private\n */\nlet _guid = 1;\n\n/**\n * Get the next unique ID\n *\n * @return {String} \n * @function newGUID\n */\nexport function newGUID() {\n return _guid++;\n}\n","/**\n * @file log.js\n */\nimport window from 'global/window';\n\n/**\n * Log plain debug messages\n */\nconst log = function(){\n _logType(null, arguments);\n};\n\n/**\n * Keep a history of log messages\n * @type {Array}\n */\nlog.history = [];\n\n/**\n * Log error messages\n */\nlog.error = function(){\n _logType('error', arguments);\n};\n\n/**\n * Log warning messages\n */\nlog.warn = function(){\n _logType('warn', arguments);\n};\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @param {String} type The type of message, or `null` for `log`\n * @param {Object} args The args to be passed to the log\n * @private\n * @method _logType\n */\nfunction _logType(type, args){\n // convert args to an array to get array functions\n let argsArray = Array.prototype.slice.call(args);\n // if there's no console then don't try to output messages\n // they will still be stored in log.history\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 let noop = function(){};\n\n let console = window['console'] || {\n 'log': noop,\n 'warn': noop,\n 'error': noop\n };\n\n if (type) {\n // add the type to the front of the message\n argsArray.unshift(type.toUpperCase()+':');\n } else {\n // default to log with no prefix\n type = 'log';\n }\n\n // add to history\n log.history.push(argsArray);\n\n // add console prefix after adding to history\n argsArray.unshift('VIDEOJS:');\n\n // call appropriate log function\n if (console[type].apply) {\n console[type].apply(console, argsArray);\n } else {\n // ie8 doesn't allow error.apply, but it will just join() the array anyway\n console[type](argsArray.join(' '));\n }\n}\n\nexport default log;\n","/**\n * @file merge-options.js\n */\nimport merge from 'lodash-compat/object/merge';\n\nfunction isPlain(obj) {\n return !!obj\n && typeof obj === 'object'\n && obj.toString() === '[object Object]'\n && obj.constructor === Object;\n}\n\n/**\n * Merge customizer. video.js simply overwrites non-simple objects\n * (like arrays) instead of attempting to overlay them.\n * @see https://lodash.com/docs#merge\n */\nconst customizer = function(destination, source) {\n // If we're not working with a plain object, copy the value as is\n // If source is an array, for instance, it will replace destination\n if (!isPlain(source)) {\n return source;\n }\n\n // If the new value is a plain object but the first object value is not\n // we need to create a new object for the first object to merge with.\n // This makes it consistent with how merge() works by default\n // and also protects from later changes the to first object affecting\n // the second object's values.\n if (!isPlain(destination)) {\n return mergeOptions(source);\n }\n};\n\n/**\n * Merge one or more options objects, recursively merging **only**\n * plain object properties. Previously `deepMerge`.\n *\n * @param {...Object} source One or more objects to merge\n * @returns {Object} a new object that is the union of all\n * provided objects\n * @function mergeOptions\n */\nexport default function mergeOptions() {\n // contruct the call dynamically to handle the variable number of\n // objects to merge\n let args = Array.prototype.slice.call(arguments);\n\n // unshift an empty object into the front of the call as the target\n // of the merge\n args.unshift({});\n\n // customize conflict resolution to match our historical merge behavior\n args.push(customizer);\n\n merge.apply(null, args);\n\n // return the mutated result object\n return args[0];\n}\n","import document from 'global/document';\n\nexport let createStyleElement = function(className) {\n let style = document.createElement('style');\n style.className = className;\n\n return style;\n};\n\nexport let setTextContent = function(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n","import log from './log.js';\n\n/**\n * @file time-ranges.js\n *\n * Should create a fake TimeRange object\n * Mimics an HTML5 time range instance, which has functions that\n * return the start and end times for a range\n * TimeRanges are returned by the buffered() method\n *\n * @param {(Number|Array)} Start of a single range or an array of ranges\n * @param {Number} End of a single range\n * @private\n * @method createTimeRanges\n */\nexport function 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\nexport { createTimeRanges as createTimeRange };\n\nfunction createTimeRangesObj(ranges){\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function() {\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\nfunction getRange(fnName, valueIndex, ranges, rangeIndex){\n if (rangeIndex === undefined) {\n log.warn(`DEPRECATED: Function '${fnName}' on 'TimeRanges' called without an index argument.`);\n rangeIndex = 0;\n }\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\nfunction rangeCheck(fnName, index, maxIndex){\n if (index < 0 || index > maxIndex) {\n throw new Error(`Failed to execute '${fnName}' on 'TimeRanges': The index provided (${index}) is greater than or equal to the maximum bound (${maxIndex}).`);\n }\n}\n","/**\n * @file to-title-case.js\n *\n * Uppercase the first letter of a string\n *\n * @param {String} string String to be uppercased\n * @return {String}\n * @private\n * @method toTitleCase\n */\nfunction toTitleCase(string){\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport default toTitleCase;\n","/**\n * @file url.js\n */\nimport document from 'global/document';\nimport window from 'global/window';\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nexport const parseUrl = function(url) {\n const props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n let a = document.createElement('a');\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 let addToBody = (a.host === '' && a.protocol !== 'file:');\n let div;\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = `<a href=\"${url}\"></a>`;\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 let details = {};\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 if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\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 * http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n *\n * @param {String} url URL to make absolute\n * @return {String} Absolute URL\n * @private\n * @method getAbsoluteURL\n */\nexport const getAbsoluteURL = function(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 let div = document.createElement('div');\n div.innerHTML = `<a href=\"${url}\">x</a>`;\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 if you pass an invalid path\n *\n * @param {String} path The fileName path like '/path/to/file.mp4'\n * @returns {String} The extension in lower case or an empty string if no extension could be found.\n * @method getFileExtension\n */\nexport const getFileExtension = function(path) {\n if(typeof path === 'string'){\n let splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n let 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 The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nexport const isCrossOrigin = function(url) {\n let winLoc = window.location;\n let urlInfo = parseUrl(url);\n\n // IE8 protocol relative urls will return ':' for protocol\n let 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 let crossOrigin = (srcProtocol + urlInfo.host) !== (winLoc.protocol + winLoc.host);\n\n return crossOrigin;\n};\n","/**\n * @file video.js\n */\nimport window from 'global/window';\nimport document from 'global/document';\nimport * as setup from './setup';\nimport * as stylesheet from './utils/stylesheet.js';\nimport Component from './component';\nimport EventTarget from './event-target';\nimport * as Events from './utils/events.js';\nimport Player from './player';\nimport plugin from './plugins.js';\nimport mergeOptions from '../../src/js/utils/merge-options.js';\nimport * as Fn from './utils/fn.js';\nimport TextTrack from './tracks/text-track.js';\nimport AudioTrack from './tracks/audio-track.js';\nimport VideoTrack from './tracks/video-track.js';\n\nimport { createTimeRanges } from './utils/time-ranges.js';\nimport formatTime from './utils/format-time.js';\nimport log from './utils/log.js';\nimport * as Dom from './utils/dom.js';\nimport * as browser from './utils/browser.js';\nimport * as Url from './utils/url.js';\nimport extendFn from './extend.js';\nimport merge from 'lodash-compat/object/merge';\nimport xhr from 'xhr';\n\n// Include the built-in techs\nimport Tech from './tech/tech.js';\nimport Html5 from './tech/html5.js';\nimport Flash from './tech/flash.js';\n\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined') {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n}\n\n/**\n * Doubles as the main function for users to create a player instance and also\n * the main library object.\n * The `videojs` function can be used to initialize or retrieve a player.\n * ```js\n * var myPlayer = videojs('my_video_id');\n * ```\n *\n * @param {String|Element} id Video element or video element ID\n * @param {Object=} options Optional options object for config/settings\n * @param {Function=} ready Optional ready callback\n * @return {Player} A player instance\n * @mixes videojs\n * @method videojs\n */\nfunction videojs(id, options, ready){\n let tag; // Element of ID\n\n // Allow for element or ID to be passed in\n // String ID\n if (typeof id === 'string') {\n\n // Adjust for jQuery ID syntax\n if (id.indexOf('#') === 0) {\n id = id.slice(1);\n }\n\n // If a player instance has already been created for this ID return it.\n if (videojs.getPlayers()[id]) {\n\n // If options or ready funtion are passed, warn\n if (options) {\n log.warn(`Player \"${id}\" is already initialised. Options will not be applied.`);\n }\n\n if (ready) {\n videojs.getPlayers()[id].ready(ready);\n }\n\n return videojs.getPlayers()[id];\n\n // Otherwise get element for ID\n } else {\n tag = Dom.getEl(id);\n }\n\n // ID is a media element\n } else {\n tag = id;\n }\n\n // Check for a useable element\n if (!tag || !tag.nodeName) { // re: nodeName, could be a box div also\n throw new TypeError('The element or ID supplied is not valid. (videojs)'); // Returns\n }\n\n // Element may have a player attr referring to an already created player instance.\n // If not, set up a new player and return the instance.\n return tag['player'] || Player.players[tag.playerId] || new Player(tag, options, ready);\n}\n\n// Add default styles\nif (window.VIDEOJS_NO_DYNAMIC_STYLE !== true) {\n let style = Dom.$('.vjs-styles-defaults');\n\n if (!style) {\n style = stylesheet.createStyleElement('vjs-styles-defaults');\n let head = Dom.$('head');\n head.insertBefore(style, head.firstChild);\n stylesheet.setTextContent(style, `\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n `);\n }\n}\n\n// Run Auto-load players\n// You have to wait at least once in case this script is loaded after your video in the DOM (weird behavior only with minified version)\nsetup.autoSetupTimeout(1, videojs);\n\n/*\n * Current software version (semver)\n *\n * @type {String}\n */\nvideojs.VERSION = '__VERSION__';\n\n/**\n * The global options object. These are the settings that take effect\n * if no overrides are specified when the player is created.\n *\n * ```js\n * videojs.options.autoplay = true\n * // -> all players will autoplay by default\n * ```\n *\n * @type {Object}\n */\nvideojs.options = Player.prototype.options_;\n\n/**\n * Get an object with the currently created players, keyed by player ID\n *\n * @return {Object} The created players\n * @mixes videojs\n * @method getPlayers\n */\nvideojs.getPlayers = () => Player.players;\n\n/**\n * Expose players object.\n *\n * @memberOf videojs\n * @property {Object} players\n */\nvideojs.players = Player.players;\n\n/**\n * Get a component class object by name\n * ```js\n * var VjsButton = videojs.getComponent('Button');\n * // Create a new instance of the component\n * var myButton = new VjsButton(myPlayer);\n * ```\n *\n * @return {Component} Component identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name\n * Used when adding to other\n * components, either through addChild\n * `component.addChild('myComponent')`\n * or through default children options\n * `{ children: ['myComponent'] }`.\n * ```js\n * // Get a component to subclass\n * var VjsButton = videojs.getComponent('Button');\n * // Subclass the component (see 'extend' doc for more info)\n * var MySpecialButton = videojs.extend(VjsButton, {});\n * // Register the new component\n * VjsButton.registerComponent('MySepcialButton', MySepcialButton);\n * // (optionally) add the new component as a default player child\n * myPlayer.addChild('MySepcialButton');\n * ```\n * NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {String} The class name of the component\n * @param {Component} The component class\n * @return {Component} The newly registered component\n * @mixes videojs\n * @method registerComponent\n */\nvideojs.registerComponent = (name, comp) => {\n if (Tech.isTech(comp)) {\n log.warn(`The ${name} tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)`);\n }\n\n Component.registerComponent.call(Component, name, comp);\n};\n\n/**\n * Get a Tech class object by name\n * ```js\n * var Html5 = videojs.getTech('Html5');\n * // Create a new instance of the component\n * var html5 = new Html5(options);\n * ```\n *\n * @return {Tech} Tech identified by name\n * @mixes videojs\n * @method getComponent\n */\nvideojs.getTech = Tech.getTech;\n\n/**\n * Register a Tech so it can referred to by name.\n * This is used in the tech order for the player.\n *\n * ```js\n * // get the Html5 Tech\n * var Html5 = videojs.getTech('Html5');\n * var MyTech = videojs.extend(Html5, {});\n * // Register the new Tech\n * VjsButton.registerTech('Tech', MyTech);\n * var player = videojs('myplayer', {\n * techOrder: ['myTech', 'html5']\n * });\n * ```\n *\n * @param {String} The class name of the tech\n * @param {Tech} The tech class\n * @return {Tech} The newly registered Tech\n * @mixes videojs\n * @method registerTech\n */\nvideojs.registerTech = Tech.registerTech;\n\n/**\n * A suite of browser and device tests\n *\n * @type {Object}\n * @private\n */\nvideojs.browser = browser;\n\n/**\n * Whether or not the browser supports touch events. Included for backward\n * compatibility with 4.x, but deprecated. Use `videojs.browser.TOUCH_ENABLED`\n * instead going forward.\n *\n * @deprecated\n * @type {Boolean}\n */\nvideojs.TOUCH_ENABLED = browser.TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n * ```js\n * // Create a basic javascript 'class'\n * function MyClass(name){\n * // Set a property at initialization\n * this.myName = name;\n * }\n * // Create an instance method\n * MyClass.prototype.sayMyName = function(){\n * alert(this.myName);\n * };\n * // Subclass the exisitng class and change the name\n * // when initializing\n * var MySubClass = videojs.extend(MyClass, {\n * constructor: function(name) {\n * // Call the super class constructor for the subclass\n * MyClass.call(this, name)\n * }\n * });\n * // Create an instance of the new sub class\n * var myInstance = new MySubClass('John');\n * myInstance.sayMyName(); // -> should alert \"John\"\n * ```\n *\n * @param {Function} The Class to subclass\n * @param {Object} An object including instace methods for the new class\n * Optionally including a `constructor` function\n * @return {Function} The newly created subclass\n * @mixes videojs\n * @method extend\n */\nvideojs.extend = extendFn;\n\n/**\n * Merge two options objects recursively\n * Performs a deep merge like lodash.merge but **only merges plain objects**\n * (not arrays, elements, anything else)\n * Other values will be copied directly from the second object.\n * ```js\n * var defaultOptions = {\n * foo: true,\n * bar: {\n * a: true,\n * b: [1,2,3]\n * }\n * };\n * var newOptions = {\n * foo: false,\n * bar: {\n * b: [4,5,6]\n * }\n * };\n * var result = videojs.mergeOptions(defaultOptions, newOptions);\n * // result.foo = false;\n * // result.bar.a = true;\n * // result.bar.b = [4,5,6];\n * ```\n *\n * @param {Object} defaults The options object whose values will be overriden\n * @param {Object} overrides The options object with values to override the first\n * @param {Object} etc Any number of additional options objects\n *\n * @return {Object} a new object with the merged values\n * @mixes videojs\n * @method mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\n *\n * videojs.bind(newContext, function(){\n * this === newContext\n * });\n *\n * NOTE: as of v5.0 we require an ES5 shim, so you should use the native\n * `function(){}.bind(newContext);` instead of this.\n *\n * @param {*} context The object to bind as scope\n * @param {Function} fn The function to be bound to a scope\n * @param {Number=} uid An optional unique ID for the function to be set\n * @return {Function}\n */\nvideojs.bind = Fn.bind;\n\n/**\n * Create a Video.js player plugin\n * Plugins are only initialized when options for the plugin are included\n * in the player options, or the plugin function on the player instance is\n * called.\n * **See the plugin guide in the docs for a more detailed example**\n * ```js\n * // Make a plugin that alerts when the player plays\n * videojs.plugin('myPlugin', function(myPluginOptions) {\n * myPluginOptions = myPluginOptions || {};\n *\n * var player = this;\n * var alertText = myPluginOptions.text || 'Player is playing!'\n *\n * player.on('play', function(){\n * alert(alertText);\n * });\n * });\n * // USAGE EXAMPLES\n * // EXAMPLE 1: New player with plugin options, call plugin immediately\n * var player1 = videojs('idOne', {\n * myPlugin: {\n * text: 'Custom text!'\n * }\n * });\n * // Click play\n * // --> Should alert 'Custom text!'\n * // EXAMPLE 3: New player, initialize plugin later\n * var player3 = videojs('idThree');\n * // Click play\n * // --> NO ALERT\n * // Click pause\n * // Initialize plugin using the plugin function on the player instance\n * player3.myPlugin({\n * text: 'Plugin added later!'\n * });\n * // Click play\n * // --> Should alert 'Plugin added later!'\n * ```\n *\n * @param {String} name The plugin name\n * @param {Function} fn The plugin function that will be called with options\n * @mixes videojs\n * @method plugin\n */\nvideojs.plugin = plugin;\n\n/**\n * Adding languages so that they're available to all players.\n * ```js\n * videojs.addLanguage('es', { 'Hello': 'Hola' });\n * ```\n *\n * @param {String} code The language code or dictionary property\n * @param {Object} data The data values to be translated\n * @return {Object} The resulting language dictionary object\n * @mixes videojs\n * @method addLanguage\n */\nvideojs.addLanguage = function(code, data){\n code = ('' + code).toLowerCase();\n return merge(videojs.options.languages, { [code]: data })[code];\n};\n\n/**\n * Log debug messages.\n *\n * @param {...Object} messages One or more messages to log\n */\nvideojs.log = log;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @param {Number|Array} start Start time in seconds or an array of ranges\n * @param {Number} end End time in seconds\n * @return {Object} Fake TimeRange object\n * @method createTimeRange\n */\nvideojs.createTimeRange = videojs.createTimeRanges = createTimeRanges;\n\n/**\n * Format seconds as a time string, H:MM:SS or M:SS\n * Supplying a guide (in seconds) will force a number of leading zeros\n * to cover the length of the guide\n *\n * @param {Number} seconds Number of seconds to be turned into a string\n * @param {Number} guide Number (in seconds) to model the string after\n * @return {String} Time formatted as H:MM:SS or M:SS\n * @method formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @param {String} url The url to parse\n * @return {Object} An object of url details\n * @method parseUrl\n */\nvideojs.parseUrl = Url.parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {String} url The url to check\n * @return {Boolean} Whether it is a cross domain request or not\n * @method isCrossOrigin\n */\nvideojs.isCrossOrigin = Url.isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @type {Function}\n */\nvideojs.EventTarget = EventTarget;\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 Element or object to bind listeners to\n * @param {String|Array} type Type of event to bind to.\n * @param {Function} fn Event listener.\n * @method on\n */\nvideojs.on = Events.on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem Element or object to\n * @param {String|Array} type Name/type of event\n * @param {Function} fn Event handler function\n * @method one\n */\nvideojs.one = Events.one;\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem Object to remove listeners from\n * @param {String|Array=} type Type of listener to remove. Don't include to remove all events from element.\n * @param {Function} fn Specific listener to remove. Don't include to remove listeners for an event type.\n * @method off\n */\nvideojs.off = Events.off;\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem Element to trigger an event on\n * @param {Event|Object|String} event A string (the type) or an event object with a type attribute\n * @param {Object} [hash] data hash to pass along with the event\n * @return {Boolean=} Returned only if default was prevented\n * @method trigger\n */\nvideojs.trigger = Events.trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * videojs.xhr({\n * body: someJSONString,\n * uri: \"/foo\",\n * headers: {\n * \"Content-Type\": \"application/json\"\n * }\n * }, function (err, resp, body) {\n * // check resp.statusCode\n * });\n *\n * Check out the [full\n * documentation](https://github.com/Raynos/xhr/blob/v2.1.0/README.md)\n * for more options.\n *\n * @param {Object} options settings for the request.\n * @return {XMLHttpRequest|XDomainRequest} the request object.\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @type {Function}\n */\nvideojs.TextTrack = TextTrack;\n\n/**\n * export the AudioTrack class so that source handlers can create\n * AudioTracks and then add them to the players AudioTrackList\n *\n * @type {Function}\n */\nvideojs.AudioTrack = AudioTrack;\n\n/**\n * export the VideoTrack class so that source handlers can create\n * VideoTracks and then add them to the players VideoTrackList\n *\n * @type {Function}\n */\nvideojs.VideoTrack = VideoTrack;\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @method isEl\n * @param {Mixed} value\n * @return {Boolean}\n */\nvideojs.isEl = Dom.isEl;\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @method isTextNode\n * @param {Mixed} value\n * @return {Boolean}\n */\nvideojs.isTextNode = Dom.isTextNode;\n\n/**\n * Creates an element and applies properties.\n *\n * @method createEl\n * @param {String} [tagName='div'] Name of tag to be created.\n * @param {Object} [properties={}] Element properties to be applied.\n * @param {Object} [attributes={}] Element attributes to be applied.\n * @return {Element}\n */\nvideojs.createEl = Dom.createEl;\n\n/**\n * Check if an element has a CSS class\n *\n * @method hasClass\n * @param {Element} element Element to check\n * @param {String} classToCheck Classname to check\n */\nvideojs.hasClass = Dom.hasElClass;\n\n/**\n * Add a CSS class name to an element\n *\n * @method addClass\n * @param {Element} element Element to add class name to\n * @param {String} classToAdd Classname to add\n */\nvideojs.addClass = Dom.addElClass;\n\n/**\n * Remove a CSS class name from an element\n *\n * @method removeClass\n * @param {Element} element Element to remove from class name\n * @param {String} classToRemove Classname to remove\n */\nvideojs.removeClass = Dom.removeElClass;\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 * @method toggleElClass\n * @param {Element} element\n * @param {String} classToToggle\n * @param {Boolean|Function} [predicate]\n * Can be a function that returns a Boolean. If `true`, the class\n * will be added; if `false`, the class will be removed. If not\n * given, the class will be added if not present and vice versa.\n */\nvideojs.toggleClass = Dom.toggleElClass;\n\n/**\n * Apply attributes to an HTML element.\n *\n * @method setAttributes\n * @param {Element} el Target element.\n * @param {Object=} attributes Element attributes to be applied.\n */\nvideojs.setAttributes = Dom.setElAttributes;\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 * @method getAttributes\n * @param {Element} tag Element from which to get tag attributes\n * @return {Object}\n */\nvideojs.getAttributes = Dom.getElAttributes;\n\n/**\n * Empties the contents of an element.\n *\n * @method emptyEl\n * @param {Element} el\n * @return {Element}\n */\nvideojs.emptyEl = Dom.emptyEl;\n\n/**\n * Normalizes and appends content to an element.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * - String\n * Normalized into a text node.\n *\n * - Element, TextNode\n * Passed through.\n *\n * - Array\n * A one-dimensional array of strings, elements, nodes, or functions (which\n * return single strings, elements, or nodes).\n *\n * - Function\n * If the sole argument, is expected to produce a string, element,\n * node, or array.\n *\n * @method appendContent\n * @param {Element} el\n * @param {String|Element|TextNode|Array|Function} content\n * @return {Element}\n */\nvideojs.appendContent = Dom.appendContent;\n\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * - String\n * Normalized into a text node.\n *\n * - Element, TextNode\n * Passed through.\n *\n * - Array\n * A one-dimensional array of strings, elements, nodes, or functions (which\n * return single strings, elements, or nodes).\n *\n * - Function\n * If the sole argument, is expected to produce a string, element,\n * node, or array.\n *\n * @method insertContent\n * @param {Element} el\n * @param {String|Element|TextNode|Array|Function} content\n * @return {Element}\n */\nvideojs.insertContent = Dom.insertContent;\n\n/*\n * Custom Universal Module Definition (UMD)\n *\n * Video.js will never be a non-browser lib so we can simplify UMD a bunch and\n * still support requirejs and browserify. This also needs to be closure\n * compiler compatible, so string keys are used.\n */\nif (typeof define === 'function' && define['amd']) {\n define('videojs', [], function(){ return videojs; });\n\n// checking that module is an object too because of umdjs/umd#35\n} else if (typeof exports === 'object' && typeof module === 'object') {\n module['exports'] = videojs;\n}\n\nexport default videojs;\n"]}