%PDF- %PDF-
Direktori : /var/www/html/shaban-zircle/js/ |
Current File : /var/www/html/shaban-zircle/js/chunk-vendors.54c53bc1.js.map |
{"version":3,"sources":["webpack:///./node_modules/core-js/modules/_iter-define.js","webpack:///./node_modules/core-js/modules/es7.promise.finally.js","webpack:///./node_modules/core-js/modules/_object-keys.js","webpack:///./node_modules/core-js/modules/_object-dps.js","webpack:///./node_modules/core-js/modules/_task.js","webpack:///./node_modules/tsml/tsml.js","webpack:///./node_modules/core-js/modules/_iter-call.js","webpack:///./node_modules/is-callable/index.js","webpack:///./node_modules/core-js/modules/_dom-create.js","webpack:///./node_modules/core-js/modules/_classof.js","webpack:///./node_modules/core-js/modules/core.get-iterator-method.js","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/core-js/modules/_redefine.js","webpack:///./node_modules/core-js/modules/_object-create.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/core-js/modules/_wks.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/core-js/modules/_library.js","webpack:///./node_modules/core-js/modules/_cof.js","webpack:///./node_modules/core-js/modules/_invoke.js","webpack:///./node_modules/core-js/modules/_hide.js","webpack:///./node_modules/core-js/modules/_is-array-iter.js","webpack:///./node_modules/core-js/modules/_object-gpo.js","webpack:///./node_modules/video.js/dist/video.cjs.js","webpack:///./node_modules/core-js/modules/_iter-create.js","webpack:///./node_modules/core-js/modules/_to-integer.js","webpack:///./node_modules/core-js/modules/_property-desc.js","webpack:///./node_modules/trim/index.js","webpack:///./node_modules/core-js/modules/_for-of.js","webpack:///./node_modules/core-js/modules/_to-object.js","webpack:///./node_modules/xtend/immutable.js","webpack:///./node_modules/core-js/modules/es6.promise.js","webpack:///./node_modules/core-js/modules/_shared.js","webpack:///./node_modules/zircle/dist/zircle.umd.js","webpack:///./node_modules/core-js/modules/_export.js","webpack:///./node_modules/core-js/modules/_iter-detect.js","webpack:///./node_modules/core-js/modules/_shared-key.js","webpack:///./node_modules/core-js/modules/_iobject.js","webpack:///./node_modules/parse-headers/parse-headers.js","webpack:///./node_modules/core-js/modules/_to-iobject.js","webpack:///./node_modules/core-js/modules/_has.js","webpack:///./node_modules/core-js/modules/_to-primitive.js","webpack:///./node_modules/core-js/modules/_global.js","webpack:///./node_modules/core-js/modules/_to-absolute-index.js","webpack:///./node_modules/core-js/modules/_fails.js","webpack:///./node_modules/core-js/modules/_set-species.js","webpack:///./node_modules/core-js/modules/_set-to-string-tag.js","webpack:///./node_modules/core-js/modules/_microtask.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/core-js/modules/_core.js","webpack:///./node_modules/core-js/modules/_iterators.js","webpack:///./node_modules/core-js/modules/_object-dp.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/core-js/modules/_ctx.js","webpack:///./node_modules/core-js/modules/_add-to-unscopables.js","webpack:///./node_modules/core-js/modules/_perform.js","webpack:///./node_modules/core-js/modules/_to-length.js","webpack:///./node_modules/core-js/modules/_descriptors.js","webpack:///./node_modules/core-js/modules/_user-agent.js","webpack:///./node_modules/core-js/modules/_new-promise-capability.js","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/core-js/modules/_promise-resolve.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/core-js/modules/_defined.js","webpack:///./node_modules/core-js/modules/_array-includes.js","webpack:///./node_modules/core-js/modules/_ie8-dom-define.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/core-js/modules/_uid.js","webpack:///./node_modules/core-js/modules/es6.array.iterator.js","webpack:///./node_modules/core-js/modules/_an-object.js","webpack:///./node_modules/core-js/modules/_object-keys-internal.js","webpack:///./node_modules/for-each/index.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/core-js/modules/_is-object.js","webpack:///./node_modules/core-js/modules/_iter-step.js","webpack:///./node_modules/vue-video-player/dist/vue-video-player.js","webpack:///./node_modules/core-js/modules/_a-function.js","webpack:///./node_modules/core-js/modules/_redefine-all.js","webpack:///./node_modules/core-js/modules/_enum-bug-keys.js","webpack:///./node_modules/core-js/modules/_species-constructor.js","webpack:///./node_modules/xhr/index.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/core-js/modules/_an-instance.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/core-js/modules/_html.js"],"names":["LIBRARY","__webpack_require__","$export","redefine","hide","Iterators","$iterCreate","setToStringTag","getPrototypeOf","ITERATOR","BUGGY","keys","FF_ITERATOR","KEYS","VALUES","returnThis","this","module","exports","Base","NAME","Constructor","next","DEFAULT","IS_SET","FORCED","methods","key","IteratorPrototype","getMethod","kind","proto","TAG","DEF_VALUES","VALUES_BUG","prototype","$native","$default","$entries","undefined","$anyNative","entries","call","Object","name","values","P","F","core","global","speciesConstructor","promiseResolve","R","finally","onFinally","C","Promise","isFunction","then","x","e","$keys","enumBugKeys","O","dP","anObject","getKeys","defineProperties","Properties","length","i","f","defer","channel","port","ctx","invoke","html","cel","process","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","Dispatch","counter","queue","ONREADYSTATECHANGE","run","id","hasOwnProperty","fn","listener","event","data","args","arguments","push","Function","nextTick","now","port2","port1","onmessage","postMessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","set","clear","clean","s","replace","sa","iterator","value","ret","fnToStr","toString","constructorRegex","isES6ClassFn","fnStr","test","tryFunctionObject","toStr","fnClass","genClass","hasToStringTag","Symbol","toStringTag","strClass","isObject","document","is","createElement","it","cof","ARG","tryGet","T","B","callee","classof","getIteratorMethod","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","options","_compiled","functional","_scopeId","context","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","h","existing","beforeCreate","concat","d","__webpack_exports__","has","SRC","TO_STRING","$toString","TPL","split","inspectSource","val","safe","join","String","dPs","IE_PROTO","Empty","PROTOTYPE","createDict","iframeDocument","iframe","lt","gt","style","display","src","contentWindow","open","write","close","create","result","r","emptyObject","freeze","isUndef","v","isDef","isTrue","isFalse","isPrimitive","obj","_toString","isPlainObject","isRegExp","isValidArrayIndex","n","parseFloat","Math","floor","isFinite","JSON","stringify","toNumber","isNaN","makeMap","str","expectsLowerCase","map","list","toLowerCase","isReservedAttribute","remove","arr","item","index","indexOf","splice","hasOwn","cached","cache","hit","camelizeRE","camelize","_","c","toUpperCase","capitalize","charAt","slice","hyphenateRE","hyphenate","polyfillBind","boundFn","a","l","apply","_length","nativeBind","bind","toArray","start","Array","extend","to","_from","toObject","res","noop","b","no","identity","looseEqual","isObjectA","isObjectB","isArrayA","isArray","isArrayB","every","keysA","keysB","looseIndexOf","once","called","SSR_ATTR","ASSET_TYPES","LIFECYCLE_HOOKS","config","optionMergeStrategies","silent","productionTip","devtools","performance","errorHandler","warnHandler","ignoredElements","keyCodes","isReservedTag","isReservedAttr","isUnknownElement","getTagNamespace","parsePlatformTagName","mustUseProp","_lifecycleHooks","isReserved","charCodeAt","def","enumerable","defineProperty","writable","configurable","bailRE","parsePath","path","segments","_isServer","hasProto","inBrowser","window","inWeex","WXEnvironment","platform","weexPlatform","UA","navigator","userAgent","isIE","isIE9","isEdge","isIOS","nativeWatch","watch","supportsPassive","opts","get","isServerRendering","env","VUE_ENV","__VUE_DEVTOOLS_GLOBAL_HOOK__","isNative","Ctor","_Set","hasSymbol","Reflect","ownKeys","Set","warn","uid","Dep","subs","addSub","sub","removeSub","depend","target","addDep","notify","update","targetStack","pushTarget","_target","popTarget","pop","VNode","tag","children","text","elm","componentOptions","asyncFactory","ns","fnContext","fnOptions","fnScopeId","componentInstance","raw","isStatic","isRootInsert","isComment","isCloned","isOnce","asyncMeta","isAsyncPlaceholder","prototypeAccessors","child","createEmptyVNode","node","createTextVNode","cloneVNode","vnode","cloned","arrayProto","arrayMethods","methodsToPatch","forEach","method","original","len","inserted","ob","__ob__","observeArray","dep","arrayKeys","getOwnPropertyNames","shouldObserve","toggleObserving","Observer","vmCount","augment","protoAugment","copyAugment","walk","__proto__","observe","asRootData","isExtensible","_isVue","defineReactive","customSetter","shallow","property","getOwnPropertyDescriptor","getter","setter","childOb","dependArray","newVal","max","del","items","strats","mergeData","from","toVal","fromVal","mergeDataOrFn","parentVal","childVal","vm","instanceData","defaultData","mergeHook","mergeAssets","type","key$1","props","inject","computed","provide","defaultStrat","normalizeProps","normalizeInject","normalized","normalizeDirectives","dirs","directives","mergeOptions","extendsFrom","extends","mixins","mergeField","strat","resolveAsset","warnMissing","assets","camelizedId","PascalCaseId","validateProp","propOptions","propsData","prop","absent","booleanIndex","getTypeIndex","Boolean","stringIndex","getPropDefaultValue","prevShouldObserve","default","_props","getType","match","isSameType","expectedTypes","handleError","err","info","cur","$parent","hooks","errorCaptured","capture","globalHandleError","logError","console","error","microTimerFunc","macroTimerFunc","callbacks","pending","flushCallbacks","copies","useMacroTask","p","resolve","withMacroTask","_withTask","cb","_resolve","seenObjects","traverse","_traverse","seen","isA","isFrozen","depId","normalizeEvent","passive","once$$1","createFnInvoker","fns","invoker","arguments$1","updateListeners","on","oldOn","remove$$1","old","params","mergeVNodeHook","hookKey","oldHook","wrappedHook","merged","extractPropsFromVNodeData","attrs","altKey","checkProp","hash","preserve","simpleNormalizeChildren","normalizeChildren","normalizeArrayChildren","isTextNode","nestedIndex","lastIndex","last","shift","_isVList","ensureCtor","comp","base","__esModule","createAsyncPlaceholder","factory","resolveAsyncComponent","baseCtor","errorComp","resolved","loading","loadingComp","contexts","sync","forceRender","$forceUpdate","reject","reason","component","delay","timeout","getFirstComponentChild","initEvents","_events","_hasHookEvent","listeners","_parentListeners","updateComponentListeners","$once","$on","remove$1","$off","oldListeners","eventsMixin","Vue","hookRE","this$1","cbs","i$1","$emit","resolveSlots","slots","slot","name$1","isWhitespace","resolveScopedSlots","activeInstance","initLifecycle","abstract","$children","$refs","_watcher","_inactive","_directInactive","_isMounted","_isDestroyed","_isBeingDestroyed","lifecycleMixin","_update","hydrating","callHook","prevEl","$el","prevVnode","_vnode","prevActiveInstance","__patch__","_parentElm","_refElm","__vue__","$destroy","teardown","_watchers","_data","mountComponent","el","updateComponent","_render","Watcher","updateChildComponent","parentVnode","renderChildren","hasChildren","_renderChildren","scopedSlots","$scopedSlots","_parentVnode","$attrs","$listeners","propKeys","_propKeys","$slots","isInInactiveTree","activateChildComponent","direct","deactivateChildComponent","handlers","j","activatedChildren","waiting","flushing","resetSchedulerState","flushSchedulerQueue","watcher","sort","activatedQueue","updatedQueue","callActivatedHooks","callUpdatedHooks","emit","queueActivatedComponent","queueWatcher","uid$1","expOrFn","isRenderWatcher","deep","user","lazy","active","dirty","deps","newDeps","depIds","newDepIds","expression","cleanupDeps","tmp","oldValue","evaluate","sharedPropertyDefinition","proxy","sourceKey","initState","initProps","initMethods","initData","initComputed","initWatch","propsOptions","isRoot","loop","getData","computedWatcherOptions","watchers","_computedWatchers","isSSR","userDef","defineComputed","shouldCache","createComputedGetter","handler","createWatcher","$watch","stateMixin","dataDef","propsDef","$set","$delete","immediate","initProvide","_provided","initInjections","resolveInject","filter","provideKey","source","provideDefault","renderList","renderSlot","fallback","bindObject","nodes","scopedSlotFn","slotNodes","_rendered","$createElement","resolveFilter","isKeyNotMatch","expect","actual","checkKeyCodes","eventKeyCode","builtInKeyCode","eventKeyName","builtInKeyName","mappedKeyCode","bindObjectProps","asProp","isSync","domProps","$event","renderStatic","isInFor","_staticTrees","tree","_renderProxy","markStatic","markOnce","markStaticNode","bindObjectListeners","ours","installRenderHelpers","_o","_n","_s","_l","_t","_q","_i","_m","_f","_k","_b","_v","_e","_u","_g","FunctionalRenderContext","contextVm","_original","isCompiled","needNormalization","injections","_c","createFunctionalComponent","mergeProps","renderContext","cloneAndMarkFunctionalResult","vnodes","clone","componentVNodeHooks","init","parentElm","refElm","keepAlive","mountedNode","prepatch","createComponentInstanceForVnode","$mount","oldVnode","insert","destroy","hooksToMerge","createComponent","_base","cid","resolveConstructorOptions","model","transformModel","nativeOn","installComponentHooks","_isComponent","inlineTemplate","callback","SIMPLE_NORMALIZE","ALWAYS_NORMALIZE","normalizationType","alwaysNormalize","_createElement","applyNS","registerDeepBindings","force","class","initRender","parentData","renderMixin","$nextTick","ref","uid$3","initMixin","_init","_uid","initInternalComponent","constructor","_self","vnodeComponentOptions","_componentTag","super","superOptions","cachedSuperOptions","modifiedOptions","resolveModifiedOptions","extendOptions","components","modified","latest","extended","sealed","sealedOptions","dedupe","initUse","use","plugin","installedPlugins","_installedPlugins","unshift","install","initMixin$1","mixin","initExtend","Super","SuperId","cachedCtors","_Ctor","Sub","initProps$1","initComputed$1","Comp","initAssetRegisters","definition","getComponentName","matches","pattern","pruneCache","keepAliveInstance","cachedNode","pruneCacheEntry","current","cached$$1","patternTypes","RegExp","KeepAlive","include","exclude","Number","created","destroyed","mounted","ref$1","parseInt","builtInComponents","initGlobalAPI","configDef","util","delete","version","acceptValue","attr","isEnumeratedAttr","isBooleanAttr","xlinkNS","isXlink","getXlinkProp","isFalsyAttrValue","genClassForVnode","parentNode","childNode","mergeClassData","renderClass","staticClass","dynamicClass","stringifyClass","stringifyArray","stringifyObject","stringified","namespaceMap","svg","math","isHTMLTag","isSVG","unknownElementCache","HTMLUnknownElement","HTMLElement","isTextInputType","query","selected","querySelector","createElement$1","tagName","multiple","setAttribute","createElementNS","namespace","createTextNode","createComment","insertBefore","newNode","referenceNode","nextSibling","setTextContent","textContent","setStyleScope","nodeOps","registerRef","isRemoval","refs","refInFor","emptyNode","sameVnode","sameInputType","typeA","typeB","createKeyToOldIdx","beginIdx","endIdx","createPatchFunction","backend","modules","emptyNodeAt","createRmCb","childElm","removeNode","createElm","insertedVnodeQueue","nested","ownerArray","setScope","createChildren","invokeCreateHooks","isReactivated","initComponent","reactivateComponent","pendingInsert","isPatchable","innerNode","transition","activate","ref$$1","ancestor","addVnodes","startIdx","invokeDestroyHook","removeVnodes","ch","removeAndInvokeRemoveHook","rm","updateChildren","oldCh","newCh","removeOnly","oldKeyToIdx","idxInOld","vnodeToMove","oldStartIdx","newStartIdx","oldEndIdx","oldStartVnode","oldEndVnode","newEndIdx","newStartVnode","newEndVnode","canMove","patchVnode","findIdxInOld","end","hydrate","postpatch","invokeInsertHook","initial","isRenderedModule","inVPre","pre","hasChildNodes","innerHTML","childrenMatch","firstChild","fullInvoke","isInitialPatch","isRealElement","nodeType","hasAttribute","removeAttribute","oldElm","parentElm$1","_leaveCb","patchable","i$2","updateDirectives","oldDir","dir","isCreate","isDestroy","oldDirs","normalizeDirectives$1","newDirs","dirsWithInsert","dirsWithPostpatch","callHook$1","componentUpdated","callInsert","emptyModifiers","modifiers","getRawDirName","rawName","baseModules","updateAttrs","inheritAttrs","oldAttrs","setAttr","removeAttributeNS","baseSetAttr","setAttributeNS","__ieph","blocker","stopImmediatePropagation","removeEventListener","updateClass","oldData","cls","transitionClass","_transitionClasses","_prevClass","target$1","klass","RANGE_TOKEN","CHECKBOX_RADIO_TOKEN","normalizeEvents","change","createOnceHandler","onceHandler","remove$2","add$1","updateDOMListeners","events","updateDOMProps","oldProps","childNodes","_value","strCur","shouldUpdateValue","checkVal","composing","isNotInFocusAndDirty","isDirtyWithModifiers","notInFocus","activeElement","_vModifiers","number","trim","parseStyleText","cssText","listDelimiter","propertyDelimiter","normalizeStyleData","normalizeStyleBinding","staticStyle","bindingStyle","getStyle","checkChild","styleData","emptyStyle","cssVarRE","importantRE","setProp","setProperty","normalizedName","normalize","vendorNames","capName","updateStyle","oldStaticStyle","oldStyleBinding","normalizedStyle","oldStyle","newStyle","addClass","classList","getAttribute","removeClass","tar","resolveTransition","css","autoCssTransition","enterClass","enterToClass","enterActiveClass","leaveClass","leaveToClass","leaveActiveClass","hasTransition","TRANSITION","ANIMATION","transitionProp","transitionEndEvent","animationProp","animationEndEvent","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","raf","requestAnimationFrame","nextFrame","addTransitionClass","transitionClasses","removeTransitionClass","whenTransitionEnds","expectedType","getTransitionInfo","propCount","ended","onEnd","transformRE","styles","getComputedStyle","transitionDelays","transitionDurations","transitionTimeout","getTimeout","animationDelays","animationDurations","animationTimeout","hasTransform","delays","durations","toMs","enter","toggleDisplay","cancelled","_enterCb","appearClass","appearToClass","appearActiveClass","beforeEnter","afterEnter","enterCancelled","beforeAppear","appear","afterAppear","appearCancelled","duration","transitionNode","isAppear","startClass","activeClass","toClass","beforeEnterHook","enterHook","afterEnterHook","enterCancelledHook","explicitEnterDuration","expectsCSS","userWantsControl","getHookArgumentsLength","show","pendingNode","_pending","isValidDuration","leave","beforeLeave","afterLeave","leaveCancelled","delayLeave","explicitLeaveDuration","performLeave","invokerFns","_enter","platformModules","patch","vmodel","trigger","directive","binding","_vOptions","setSelected","getValue","onCompositionStart","onCompositionEnd","prevOptions","curOptions","some","o","needReset","hasNoMatchingOption","actuallySetSelected","isMultiple","option","selectedIndex","createEvent","initEvent","dispatchEvent","locateNode","transition$$1","originalDisplay","__vOriginalDisplay","unbind","platformDirectives","transitionProps","mode","getRealChild","compOptions","extractTransitionData","placeholder","rawChild","hasParentTransition","isSameChild","oldChild","Transition","_leaving","oldRawChild","delayedLeave","moveClass","TransitionGroup","prevChildren","rawChildren","transitionData","kept","removed","c$1","pos","getBoundingClientRect","beforeUpdate","updated","hasMove","callPendingCbs","recordPosition","applyTranslation","_reflow","body","offsetHeight","moved","transform","WebkitTransform","transitionDuration","_moveCb","propertyName","_hasMove","cloneNode","newPos","oldPos","dx","left","dy","top","platformComponents","store","USE_SYMBOL","$exports","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","that","un","createDesc","object","ArrayProto","ObjectProto","_interopDefault","ex","tsml","safeParseTuple","xhr","vtt","USER_AGENT","webkitVersionMap","exec","appleWebkitVersion","IS_IPAD","IS_IPHONE","IS_IPOD","IS_IOS","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_OLD_ANDROID","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IS_IE8","IE_VERSION","IS_SAFARI","IS_ANY_SAFARI","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","BACKGROUND_SIZE_SUPPORTED","browser","_typeof","classCallCheck","instance","TypeError","inherits","subClass","superClass","setPrototypeOf","possibleConstructorReturn","self","ReferenceError","taggedTemplateLiteralLoose","strings","each","reduce","accum","assign","_len","sources","_key","isPlain","log","level","history","logByType","lvl","levels","lvlRegExp","all","off","debug","Error","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","log$1","computedStyle","cs","currentStyle","_templateObject","isNonBlankString","throwIfWhitespace","classRegExp","className","isEl","isInFrame","createQuerier","selector","createEl","properties","attributes","content","propName","attrName","appendContent","innerText","prependTo","hasClass","element","classToCheck","contains","classToAdd","classToRemove","toggleClass","classToToggle","predicate","setAttributes","attrValue","getAttributes","knownBooleans","attrVal","attribute","blockTextSelection","focus","onselectstart","unblockTextSelection","rect","k","height","width","findPosition","box","docEl","documentElement","clientLeft","scrollLeft","pageXOffset","clientTop","scrollTop","pageYOffset","round","getPointerPosition","position","boxW","offsetWidth","boxH","boxY","boxX","pageY","pageX","changedTouches","y","min","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","$","$$","Dom","_guid","newGUID","elData","elIdAttr","Date","getTime","hasData","removeData","_cleanUpEvents","elem","dispatcher","detachEvent","disabled","_handleMultipleEvents","types","fixEvent","returnTrue","returnFalse","isPropagationStopped","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","isImmediatePropagationStopped","clientX","doc","clientY","which","charCode","keyCode","_supportsPassive","passiveEvents","guid","handlersCopy","m","attachEvent","removeType","t","elemData","ownerDocument","bubbles","targetData","one","func","Events","_windowLoaded","videojs$2","autoSetup","vids","getElementsByTagName","audios","divs","mediaEls","_i2","_e2","_i3","_e3","mediaEl","autoSetupTimeout","player","wait","vjs","readyState","createStyleElement","styleSheet","bound","throttle","throttled","debounce","_later","clearTimeout","EventTarget","allowedEvents_","ael","isEvented","eventBusEl_","isValidEventType","validateTarget","nodeName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","listen","EventedMixin","_this","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_this2","_normalizeListenArgs2","wrapper","largs","targetOrType","typeOrListener","evented","eventBusKey","StatefulMixin","state","setState","stateUpdates","changes","stateful","defaultState","handleStateChanged","toTitleCase","string","titleCaseEquals","str1","str2","Component","ready","play","player_","options_","id_","name_","el_","children_","childIndex_","childNameIndex_","initChildren","reportTouchActivity","enableTouchActivity","dispose","localize","tokens","defaultValue","code","language","languages","primaryCode","primaryLang","localizedString","contentEl","contentEl_","getChildById","getChild","addChild","componentName","componentClassName","componentClass","ComponentClass","getComponent","refNode","childFound","compEl","parentOptions","handleAdd","playerOptions","newChild","workingChildren","Tech","wchild","isTech","buildCSSClass","isReady_","readyQueue_","triggerReady","readyQueue","lockShowing","unlockShowing","num","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","currentDimension","computedWidthOrHeight","getPropertyValue","rule","currentDimensions","currentWidth","currentHeight","blur","emitTapEvents","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","couldBeTap","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","report","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","disposeFn","interval","_this3","intervalId","_this4","supportsRaf_","cancelAnimationFrame","registerComponent","ComponentToRegister","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","rangeCheck","fnName","maxIndex","getRange","valueIndex","ranges","rangeIndex","createTimeRangesObj","createTimeRanges","bufferedPercent","buffered","bufferedDuration","FullscreenApi","apiMap","specApi","browserApi","MediaError","message","defaultMessages","status","errorTypes","1","2","3","4","5","errNum","isPromise","silencePromise","trackToJson_","track","acc","cues","cue","startTime","endTime","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","json","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","ESC","ModalDialog","_Component","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","role","descEl_","description","tabIndex","aria-describedby","aria-hidden","aria-label","label","previouslyActiveEl_","handleKeyPress","desc","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","controls","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","empty","closeButton","content_","activeEl","playerEl","handleKeyDown","focusableEls","focusableEls_","focusIndex","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","_ret","tracks_","addTrack","removeTrack","rtrack","getTrackById","addtrack","removetrack","disableOthers","enabled","AudioTrackList","_TrackList","_prop","changing_","disableOthers$1","VideoTrackList","TextTrackList","nonLanguageTextTrackKind","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","captions","main","sign","subtitles","commentary","AudioTrackKind","descriptions","main-desc","translation","TextTrackKind","chapters","metadata","TextTrackMode","hidden","showing","Track","trackProps","_loop","parseUrl","url","href","addToBody","host","protocol","div","details","location","getAbsoluteURL","getFileExtension","splitPathRe","pathParts","isCrossOrigin","winLoc","urlInfo","srcProtocol","crossOrigin","Url","parseCues","srcContent","parser","Parser","StringDecoder","errors","oncue","onparsingerror","onflush","parse","groupCollapsed","groupEnd","flush","loadTrack","uri","cors","response","responseBody","loaded_","tech_","loadHandler","TextTrack","_Track","settings","srclang","default_","tt","activeCues_","activeCues","changed","timeupdateHandler","newMode","ct","currentTime","originalCue","originalCue_","removeCue","_removeCue","cuechange","AudioTrack","newEnabled","VideoTrack","newSelected","NONE","LOADING","LOADED","ERROR","HTMLTrackElement","load","NORMAL","audio","ListClass","TrackClass","capitalName","video","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","names","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","onDurationChange","manualProgress","trackProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","trackCurrentTime","stopTrackingCurrentTime","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","reset","error_","played","setCurrentTime","trackListChanges","addWebVttScript_","_this5","script","onload","onerror","_this6","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createRemoteTextTrack","_this7","manualCleanup","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","setPoster","playsinline","setPlaysinline","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","videojs","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","withSourceHandlers","_Tech","registerSourceHandler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","disposeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","middleware","setSourceHelper","setTech","mw","get$1","reduceRight","middlewareIterator","set$1","arg","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","seekable","allowedSetters","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","_mws$i","mwf","mwi","lastRun","mwrest","_src","MimetypesKind","opus","ogv","mp4","mov","m4v","mkv","mp3","aac","oga","m3u8","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","MediaLoader","techOrder","techName","isSupported","loadTech_","ClickableComponent","tabIndex_","createControlTextEl","controlTextEl_","aria-live","controlText_","localizedText","nonIconControl","enabled_","handleClick","handleFocus","handleBlur","PosterImage","_ClickableComponent","fallbackImg_","poster","setSrc","backgroundImage","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","color","opacity","hex","tryUpdateStyle","TextTrackDisplay","preselectTrack","modes","trackList","userPref","selectedLanguage","firstDesc","firstCaptions","preferredTrack","aria-atomic","clearDisplay","processCues","descriptionsTrack","captionsSubtitlesTrack","updateForTrack","textTrackSettings","overrides","getValues","cueDiv","displayState","textOpacity","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","bottom","fontFamily","fontVariant","LoadingSpinner","isAudio","playerType","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","playToggle","playFocus","CloseButton","PlayToggle","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","seconds","guide","gm","gh","Infinity","implementation","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","throttledUpdateContent","updateContent","plainName","labelText_","updateTextNode_","textNode_","formattedTime_","formatTime_","time","updateFormattedTime_","formattedTime","CurrentTimeDisplay","_TimeDisplay","scrubbing","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","Slider","bar","barName","vertical","playerEvent","handleMouseMove","handleMouseUp","aria-valuenow","aria-valuemin","aria-valuemax","progress","getPercent","percentage","toFixed","calculateDistance","stepBack","stepForward","bool","vertical_","LoadProgressBar","partEls_","bufferedEnd","percentify","percent","part","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","right","pullTooltipBy","PlayProgressBar","rafId_","timeTooltip","MouseTimeDisplay","STEP_SECONDS","UPDATE_REFRESH_INTERVAL","SeekBar","_Slider","setEventHandlers_","updateInterval","update_","getCurrentTime_","videoWasPlaying","newTime","mouseTimeDisplay","handleAction","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","seekBar","seekBarEl","FullscreenToggle","handleFullscreenChange","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeBar","updateLastVolume_","updateARIAAttributes","checkMuted","volume","muted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","soundOff","VolumePanel","inline","volumeControl","volumePanelState_","sliderActive_","sliderInactive_","muteToggle","Menu","menuButton_","menuButton","focusedChild_","addItem","unpressButton","contentElType","append","stepChild","haveTitle","MenuButton","buttonClass","handleSubmenuKeyPress","menu","createMenu","buttonPressed_","hideThreshold_","title","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","TrackButton","_MenuButton","updateHandler","MenuItem","selectable","isSelected_","multiSelectable","_selected","TextTrackMenuItem","_MenuItem","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","kinds","shouldBeSelected","OffTextTrackMenuItem","_TextTrackMenuItem","allHidden","TextTrackButton","_TrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","_TextTrackButton","track_","setTrack","findChaptersTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","updateVisibility","updateLabel","labelEl_","rates","playbackRates","currentRate","newRate","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","LOCAL_STORAGE_KEY","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","parseOptionValue","getSelectedOptionValue","setSelectedOption","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","setValues","localStorage","getItem","setItem","removeItem","ttDisplay","controlBar","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","unobserve","disconnect","resizeObserver","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","dummy","docFrag","createDocumentFragment","Element","getDescriptor","priority","descriptor","getInnerHTMLDescriptor","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","getSrcDescriptor","setupSourceset","resetSourceset_","srcDescriptor","oldSetAttribute","oldLoad","currentSrc","_templateObject$2","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","elTracks","techTracks","currentTarget","removeOldTracks","removeTracks","found","eventName","playerElIngest","movingMediaElementInDOM","tagAttributes","techId","playerId","preload","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","checkProgress","NaN","endFn","beginFn","webkitPresentationMode","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitExitFullScreen","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","featuresNativeVideoTracks","featuresNativeAudioTracks","mpegurlRE","mp4RE","patchCanPlayType","unpatchCanPlayType","_templateObject$1","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","getTagSettings","closest","isPosterFromTech_","queuedCallbacks_","userActive_","languagesToLower","name$$1","languages_","poster_","controls_","autoplay","scrubbing_","lastPlaybackRate","defaultPlaybackRate","playerOptionsCopy","plugins","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleFullscreenChange_","handleStageClick_","changingSrc_","playWaitingForReady_","playOnLoadstart_","styleEl_","playerElIngest_","divEmbed","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fluid","aspectRatio","links","linkEl","_dimension","privDimension","updateStyleEl_","parsedVal","fluid_","ratio","aspectRatio_","idClass","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","techOptions","vtt.js","canOverridePoster","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","techGet_","addTechControlsListeners_","safety","removeTechControlsListeners_","handleTechClick_","handleTechTouchStart_","handleTechTouchMove_","handleTechTouchEnd_","handleTechTap_","techCall_","hasStarted","manualAutoplay_","previouslyMuted","promise","updateSourceCaches_","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateCache","request","queued","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userWasActive","PromiseClass","play_","_this8","isScrubbing","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","isFullscreen_","fsApi","fullscreenchange","documentFullscreenChange","fullscreenElement","enterFullWindow","exitFullWindow","isFullWindow","docOrigOverflow","overflow","fullWindowOnEscKey","selectSource","_this9","techs","_ref","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","foundSourceAndTech","flip","finder","_ref2","sourceOrder","_this10","middlewareSource","src_","notSupportedMessage","_this11","sourceTech","currentSources","currentSource","currentType","techAutoplay","newPoster","usingNativeControls_","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","inactivityTimeout","isAudio_","_ref3","_ref3$track","toJSON","createModal","_this12","modal","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","html5","flash","userLanguage","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","basicPluginWrapper","createPluginFactory","PluginSubClass","getEventHash","Plugin","VERSION","isBasic","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","usingPlugin","hasPlugin","_inherits","super_","extendFn","subClassMethods","HTMLVideoElement","normalizeId","getPlayer","hookFunction","PlayerComponent","hooks_","hookOnce","removeHook","getPlayers","nId","_tag","_player","getAllPlayers","writeable","addLanguage","_mergeOptions","createTimeRange","dom","ceil","bitmap","isArrayIter","toLength","getIterFn","BREAK","RETURN","iterable","step","iterFn","done","defined","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","aFunction","anInstance","forOf","task","microtask","newPromiseCapabilityModule","perform","PROMISE","versions","v8","$Promise","isNode","newPromiseCapability","USE_NATIVE","FakePromise","PromiseRejectionEvent","isThenable","isReject","chain","ok","reaction","exited","fail","domain","_h","onHandleUnhandled","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","_a","onrejectionhandled","$reject","_d","_w","$resolve","executor","onFulfilled","onRejected","catch","G","W","S","capability","$$reject","iter","remaining","$index","alreadyCalled","race","SHARED","copyright","root","__WEBPACK_EXTERNAL_MODULE__8bbf__","installedModules","moduleId","01f9","03dd","_vm","classes","$zircle","getTheme","getThemeMode","getPreviousViewName","cursor","click","goback","transitionend","z_view_managervue_type_template_id_4d70a21d_render","getNavigationMode","view","is-current-view","getCurrentViewName","getRouterState","is-previous-view","is-past-view","getPastViewName","getHistoryLength","z_view_managervue_type_template_id_4d70a21d_staticRenderFns","z_view_managervue_type_script_lang_js_","views","getHistory","child_components_z_view_managervue_type_script_lang_js_","componentNormalizer","__file","z_view_manager","z_canvasvue_type_script_lang_js_","required","ZViewManager","zoom","X","Y","Xi","Yi","scale","scalei","getCurrentPosition","is-full-mode","getAppMode","is-mixed-mode","setNavigationMode","getBackwardNavigationState","goBack","$router","back","setComponentList","getDimensions","components_z_canvasvue_type_script_lang_js_","z_canvas_component","07a4","external_commonjs_vue_commonjs2_vue_root_Vue_","external_commonjs_vue_commonjs2_vue_root_Vue_default","appMode","navigationMode","isRouterEnabled","router","backwardNavigation","componentList","diameters","xxl","xl","xs","appStyle","theme","currentPage","pages","store_state","store_store","setRouterHooks","beforeEach","actions","setLog","modules_router","calcCoords","distance","angle","parentSize","getComponentWidth","cos","PI","sin","abs","determinePosition","position_position","getPreviousPosition","getPastPosition","calcViewPosition","viewName","calcPosition","componentType","parentPosition","newCoords","size","newPosition","Xabs","Yabs","modules_position","retrieveViewName","papa","resolveComponent","getComponentList","transformViewName","count","createRoute","route","matched","addRoutes","parseView","paramPath","navigation","find","allowBackwardNavigation","setView","modules_navigation","setDiameter","diameter","mediaQuery","media","matchMedia","xxs","responsiveness","sizes","vp","getElementById","modules_responsiveness","themes","modules_themes","msg","bgColor","getState","$data","modules_debug","list_list","setPages","getPages","getNumberOfPages","getCurrentPage","getCurrentPageIndex","setCurrentPageIndex","getNumberOfItemsInCurrentPage","setParams","getParams","modules_list","app","_config","modules_app","store_actions","0a49","IObject","asc","TYPE","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","$this","callbackfn","0d58","0dda","responsive","zpos","mouseover","spotin","mouseout","spotout","mousedown","pulse","touchstart","mouseup","move","qty","computedQty","unit","update:qty","slider","labelPos","progressLabel","imagePath","z-index","z_slider","z_knobvue_type_template_id_aa866fa2_render","viewBox","xmlns","cx","cy","drag","touchmove","handleBar","touchend","mousemove","z_knobvue_type_template_id_aa866fa2_staticRenderFns","z_knobvue_type_script_lang_js_","prevAngle","arc","circleLength","transformOrigin","strokeDasharray","strokeDashoffset","strokeWidth","circleStyle","centerx","centery","posx","posy","deltay","deltax","tangle","atan2","child_components_z_knobvue_type_script_lang_js_","z_knob","z_spotvue_type_script_lang_js_","knob","toView","ZSlider","ZKnob","innerpos","extrainfo","distanceItem","angleItem","margin","plate","z-zoom-in-cursor","primary","accent","newValue","spot","components_z_spotvue_type_script_lang_js_","z_spot_component","0e89","z_slidervue_type_script_lang_js_","zwidth","child_components_z_slidervue_type_script_lang_js_","1169","11e9","pIE","toIObject","toPrimitive","IE8_DOM_DEFINE","gOPD","1495","1eb2","currentScript","214f","fails","wks","KEY","SYMBOL","strfn","rxfn","230e","2621","getOwnPropertySymbols","2877","28a5","SPLIT","$split","_split","$push","$SPLIT","LENGTH","LAST_INDEX","NPCG","separator","limit","separator2","lastLength","output","flags","ignoreCase","multiline","unicode","sticky","lastLastIndex","splitLimit","separatorCopy","2aba","2aeb","2b4c","2d00","2d95","32e9","38fd","41a0","456d","4588","4630","4917","MATCH","$match","regexp","4bf8","52a7","propertyIsEnumerable","5537","5ca1","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","expProto","U","5dbc","5eda","613b","shared","626a","6821","69a8","6a99","valueOf","7333","gOPS","$assign","A","K","aLen","getSymbols","isEnum","7514","$find","forced","7726","__g","77f1","toInteger","79e5","7f20","stat","7f7f","FProto","nameRE","807d","animationend","mouseleave","fullView","scrollVal","update:scrollVal","longContent","firefoxScroll","&scroll","scroll","z_scrollvue_type_template_id_0e22744f_render","border-radius","point","slide","z_scrollvue_type_template_id_0e22744f_staticRenderFns","z_scrollvue_type_script_lang_js_","arcStyle","child_components_z_scrollvue_type_script_lang_js_","z_scroll","z_viewvue_type_script_lang_js_","ZScroll","isMounted","ffox","scrollBar","isScrollNeeded","ztext","clientHeight","animation","zstyle","long-content","z-scroll-disabled-for-firefox","container","maincontent","scrollHeight","components_z_viewvue_type_script_lang_js_","z_view_component","8378","__e","84f2","86cc","Attributes","8b97","check","buggy","8bbf","9093","hiddenKeys","9b43","9c6c","UNSCOPABLES","9def","9e1e","a296","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_z_canvas_vue_vue_type_style_index_0_lang_sass___WEBPACK_IMPORTED_MODULE_0__","_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_z_canvas_vue_vue_type_style_index_0_lang_sass___WEBPACK_IMPORTED_MODULE_0___default","a517","page","z_paginationvue_type_template_id_481fce92_render","activated","z_paginationvue_type_template_id_481fce92_staticRenderFns","z_paginationvue_type_script_lang_js_","deactive","child_components_z_paginationvue_type_script_lang_js_","z_pagination","chunk","myArray","chunkSize","z_listvue_type_script_lang_js_","perPage","ZPagination","collectionCopy","components_z_listvue_type_script_lang_js_","z_list_component","aa77","spaces","space","non","ltrim","rtrim","exporter","ALIAS","FORCE","aae3","ac6a","$iterators","TO_STRING_TAG","ArrayValues","DOMIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TouchList","collections","explicit","Collection","b346","b635","_store_store__WEBPACK_IMPORTED_MODULE_0__","_components_z_canvas_vue__WEBPACK_IMPORTED_MODULE_1__","_components_z_view_vue__WEBPACK_IMPORTED_MODULE_2__","_components_z_list_vue__WEBPACK_IMPORTED_MODULE_3__","_components_z_spot_vue__WEBPACK_IMPORTED_MODULE_4__","_components_z_dialog_vue__WEBPACK_IMPORTED_MODULE_5__","zircle","GlobalVue","be13","c366","toAbsoluteIndex","IS_INCLUDES","fromIndex","c5f6","inheritIfRequired","gOPN","$trim","NUMBER","$Number","BROKEN_COF","TRIM","argument","third","radix","maxCode","first","digits","c69a","c8ba","g","eval","ca5a","px","random","cadf","addToUnscopables","iterated","Arguments","cb7c","cd1c","ce10","arrayIndexOf","d3f4","d53b","d8e8","e11e","e34c","z_dialogvue_type_script_lang_js_","selfClose","components_z_dialogvue_type_script_lang_js_","e853","SPECIES","f751","fab2","fb15","_entry__WEBPACK_IMPORTED_MODULE_1__","fdef","SAFE_CLOSING","riter","skipClosing","headers","row","DESCRIPTORS","macrotask","MutationObserver","WebKitMutationObserver","standalone","toggle","characterData","alert","confirm","prompt","SafeParseTuple","reviver","PromiseCapability","$$resolve","autoKeyword","directionSetting","","lr","rl","alignSetting","middle","findDirectionSetting","findAlignSetting","align","cobj","isIE8","baseObj","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","SyntaxError","getCueAsHTML","convertCueToDOMTree","promiseCapability","win","isCallable","forEachArray","array","receiver","forEachString","forEachObject","thisArg","_objCreate","ParsingError","errorData","parseTimeStamp","input","computeSeconds","Settings","parseOptions","keyValueDelim","groupDelim","groups","kv","parseCue","regionList","oInput","consumeTimeStamp","ts","Errors","BadTimeStamp","consumeCueSettings","region","alt","vals","vals0","integer","line","lineAlign","snapToLines","positionAlign","skipWhitespace","substr","BadSignature","dflt","defaultKey","ESCAPE","&","<",">","‎","‏"," ","TAG_NAME","u","ruby","rt","lang","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","unescape1","unescape","shouldAdd","localName","annotation","rootDiv","tagStack","createProcessingInstruction","strongRTLRanges","isStrongRTLChar","currentRange","determineBidi","nodeStack","pushNodes","nextTextNode","computeLinePos","textTrackList","mediaElement","StyleBox","CueStyleBox","styleOptions","writingMode","unicodeBidi","applyStyles","textAlign","font","whiteSpace","direction","stylesunicodeBidi","textPos","formatStyle","BoxPosition","lh","offsetTop","rects","getClientRects","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","maxPosition","initialAxis","reverse","calculatedPercentage","toCSSCompatValues","toMove","overlaps","b2","boxes","intersectArea","reference","getSimpleBoxPosition","decode","decodeURIComponent","encodeURIComponent","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","overlay","paddedOverlay","shouldCompute","decoder","buffer","TextDecoder","reportOrThrowError","collectNextLine","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","onregion","parseTimestampMap","ontimestampmap","MPEGTS","LOCAL","parseHeader","stream","alreadyCollectedLine","hasSubstring","customEventName","globalOptions","progressControl","fullscreenToggle","volumeMenuButton","globalEvents","reseted","initialize","beforeDestroy","videoPlayer","esModule","D","parseHeaders","xtend","isEmpty","initParams","createXHR","_createXHR","readystatechange","loadFunc","getBody","responseText","getXml","isJson","errorFunc","evt","timeoutTimer","statusCode","failureResponse","aborted","useXDR","rawRequest","getAllResponseHeaders","XDomainRequest","XMLHttpRequest","onreadystatechange","onprogress","onabort","ontimeout","username","password","withCredentials","abort","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","doccy","topLevel","minDoc","forbiddenField","scrollSetting","up","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll"],"mappings":"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","file":"js/chunk-vendors.54c53bc1.js","sourcesContent":["'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\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}","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\n\nvar fnToStr = Function.prototype.toString;\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isCallable(value) {\n\tif (!value) { return false; }\n\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\tif (typeof value === 'function' && !value.prototype) { return true; }\n\tif (hasToStringTag) { return tryFunctionObject(value); }\n\tif (isES6ClassFn(value)) { return false; }\n\tvar strClass = toStr.call(value);\n\treturn strClass === fnClass || strClass === genClass;\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","var global = require('./_global');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar SRC = require('./_uid')('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\nrequire('./_core').inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","/*!\n * Vue.js v2.5.17\n * (c) 2014-2018 Evan You\n * Released under the MIT License.\n */\n/* */\n\nvar emptyObject = Object.freeze({});\n\n// these helpers produces better vm code in JS engines due to their\n// explicitness and function inlining\nfunction isUndef (v) {\n return v === undefined || v === null\n}\n\nfunction isDef (v) {\n return v !== undefined && v !== null\n}\n\nfunction isTrue (v) {\n return v === true\n}\n\nfunction isFalse (v) {\n return v === false\n}\n\n/**\n * Check if value is primitive\n */\nfunction isPrimitive (value) {\n return (\n typeof value === 'string' ||\n typeof value === 'number' ||\n // $flow-disable-line\n typeof value === 'symbol' ||\n typeof value === 'boolean'\n )\n}\n\n/**\n * Quick object check - this is primarily used to tell\n * Objects from primitive values when we know the value\n * is a JSON-compliant type.\n */\nfunction isObject (obj) {\n return obj !== null && typeof obj === 'object'\n}\n\n/**\n * Get the raw type string of a value e.g. [object Object]\n */\nvar _toString = Object.prototype.toString;\n\nfunction toRawType (value) {\n return _toString.call(value).slice(8, -1)\n}\n\n/**\n * Strict object type check. Only returns true\n * for plain JavaScript objects.\n */\nfunction isPlainObject (obj) {\n return _toString.call(obj) === '[object Object]'\n}\n\nfunction isRegExp (v) {\n return _toString.call(v) === '[object RegExp]'\n}\n\n/**\n * Check if val is a valid array index.\n */\nfunction isValidArrayIndex (val) {\n var n = parseFloat(String(val));\n return n >= 0 && Math.floor(n) === n && isFinite(val)\n}\n\n/**\n * Convert a value to a string that is actually rendered.\n */\nfunction toString (val) {\n return val == null\n ? ''\n : typeof val === 'object'\n ? JSON.stringify(val, null, 2)\n : String(val)\n}\n\n/**\n * Convert a input value to a number for persistence.\n * If the conversion fails, return original string.\n */\nfunction toNumber (val) {\n var n = parseFloat(val);\n return isNaN(n) ? val : n\n}\n\n/**\n * Make a map and return a function for checking if a key\n * is in that map.\n */\nfunction makeMap (\n str,\n expectsLowerCase\n) {\n var map = Object.create(null);\n var list = str.split(',');\n for (var i = 0; i < list.length; i++) {\n map[list[i]] = true;\n }\n return expectsLowerCase\n ? function (val) { return map[val.toLowerCase()]; }\n : function (val) { return map[val]; }\n}\n\n/**\n * Check if a tag is a built-in tag.\n */\nvar isBuiltInTag = makeMap('slot,component', true);\n\n/**\n * Check if a attribute is a reserved attribute.\n */\nvar isReservedAttribute = makeMap('key,ref,slot,slot-scope,is');\n\n/**\n * Remove an item from an array\n */\nfunction remove (arr, item) {\n if (arr.length) {\n var index = arr.indexOf(item);\n if (index > -1) {\n return arr.splice(index, 1)\n }\n }\n}\n\n/**\n * Check whether the object has the property.\n */\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction hasOwn (obj, key) {\n return hasOwnProperty.call(obj, key)\n}\n\n/**\n * Create a cached version of a pure function.\n */\nfunction cached (fn) {\n var cache = Object.create(null);\n return (function cachedFn (str) {\n var hit = cache[str];\n return hit || (cache[str] = fn(str))\n })\n}\n\n/**\n * Camelize a hyphen-delimited string.\n */\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cached(function (str) {\n return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })\n});\n\n/**\n * Capitalize a string.\n */\nvar capitalize = cached(function (str) {\n return str.charAt(0).toUpperCase() + str.slice(1)\n});\n\n/**\n * Hyphenate a camelCase string.\n */\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cached(function (str) {\n return str.replace(hyphenateRE, '-$1').toLowerCase()\n});\n\n/**\n * Simple bind polyfill for environments that do not support it... e.g.\n * PhantomJS 1.x. Technically we don't need this anymore since native bind is\n * now more performant in most browsers, but removing it would be breaking for\n * code that was able to run in PhantomJS 1.x, so this must be kept for\n * backwards compatibility.\n */\n\n/* istanbul ignore next */\nfunction polyfillBind (fn, ctx) {\n function boundFn (a) {\n var l = arguments.length;\n return l\n ? l > 1\n ? fn.apply(ctx, arguments)\n : fn.call(ctx, a)\n : fn.call(ctx)\n }\n\n boundFn._length = fn.length;\n return boundFn\n}\n\nfunction nativeBind (fn, ctx) {\n return fn.bind(ctx)\n}\n\nvar bind = Function.prototype.bind\n ? nativeBind\n : polyfillBind;\n\n/**\n * Convert an Array-like object to a real Array.\n */\nfunction toArray (list, start) {\n start = start || 0;\n var i = list.length - start;\n var ret = new Array(i);\n while (i--) {\n ret[i] = list[i + start];\n }\n return ret\n}\n\n/**\n * Mix properties into target object.\n */\nfunction extend (to, _from) {\n for (var key in _from) {\n to[key] = _from[key];\n }\n return to\n}\n\n/**\n * Merge an Array of Objects into a single Object.\n */\nfunction toObject (arr) {\n var res = {};\n for (var i = 0; i < arr.length; i++) {\n if (arr[i]) {\n extend(res, arr[i]);\n }\n }\n return res\n}\n\n/**\n * Perform no operation.\n * Stubbing args to make Flow happy without leaving useless transpiled code\n * with ...rest (https://flow.org/blog/2017/05/07/Strict-Function-Call-Arity/)\n */\nfunction noop (a, b, c) {}\n\n/**\n * Always return false.\n */\nvar no = function (a, b, c) { return false; };\n\n/**\n * Return same value\n */\nvar identity = function (_) { return _; };\n\n/**\n * Generate a static keys string from compiler modules.\n */\n\n\n/**\n * Check if two values are loosely equal - that is,\n * if they are plain objects, do they have the same shape?\n */\nfunction looseEqual (a, b) {\n if (a === b) { return true }\n var isObjectA = isObject(a);\n var isObjectB = isObject(b);\n if (isObjectA && isObjectB) {\n try {\n var isArrayA = Array.isArray(a);\n var isArrayB = Array.isArray(b);\n if (isArrayA && isArrayB) {\n return a.length === b.length && a.every(function (e, i) {\n return looseEqual(e, b[i])\n })\n } else if (!isArrayA && !isArrayB) {\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n return keysA.length === keysB.length && keysA.every(function (key) {\n return looseEqual(a[key], b[key])\n })\n } else {\n /* istanbul ignore next */\n return false\n }\n } catch (e) {\n /* istanbul ignore next */\n return false\n }\n } else if (!isObjectA && !isObjectB) {\n return String(a) === String(b)\n } else {\n return false\n }\n}\n\nfunction looseIndexOf (arr, val) {\n for (var i = 0; i < arr.length; i++) {\n if (looseEqual(arr[i], val)) { return i }\n }\n return -1\n}\n\n/**\n * Ensure a function is called only once.\n */\nfunction once (fn) {\n var called = false;\n return function () {\n if (!called) {\n called = true;\n fn.apply(this, arguments);\n }\n }\n}\n\nvar SSR_ATTR = 'data-server-rendered';\n\nvar ASSET_TYPES = [\n 'component',\n 'directive',\n 'filter'\n];\n\nvar LIFECYCLE_HOOKS = [\n 'beforeCreate',\n 'created',\n 'beforeMount',\n 'mounted',\n 'beforeUpdate',\n 'updated',\n 'beforeDestroy',\n 'destroyed',\n 'activated',\n 'deactivated',\n 'errorCaptured'\n];\n\n/* */\n\nvar config = ({\n /**\n * Option merge strategies (used in core/util/options)\n */\n // $flow-disable-line\n optionMergeStrategies: Object.create(null),\n\n /**\n * Whether to suppress warnings.\n */\n silent: false,\n\n /**\n * Show production mode tip message on boot?\n */\n productionTip: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to enable devtools\n */\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Whether to record perf\n */\n performance: false,\n\n /**\n * Error handler for watcher errors\n */\n errorHandler: null,\n\n /**\n * Warn handler for watcher warns\n */\n warnHandler: null,\n\n /**\n * Ignore certain custom elements\n */\n ignoredElements: [],\n\n /**\n * Custom user key aliases for v-on\n */\n // $flow-disable-line\n keyCodes: Object.create(null),\n\n /**\n * Check if a tag is reserved so that it cannot be registered as a\n * component. This is platform-dependent and may be overwritten.\n */\n isReservedTag: no,\n\n /**\n * Check if an attribute is reserved so that it cannot be used as a component\n * prop. This is platform-dependent and may be overwritten.\n */\n isReservedAttr: no,\n\n /**\n * Check if a tag is an unknown element.\n * Platform-dependent.\n */\n isUnknownElement: no,\n\n /**\n * Get the namespace of an element\n */\n getTagNamespace: noop,\n\n /**\n * Parse the real tag name for the specific platform.\n */\n parsePlatformTagName: identity,\n\n /**\n * Check if an attribute must be bound using property, e.g. value\n * Platform-dependent.\n */\n mustUseProp: no,\n\n /**\n * Exposed for legacy reasons\n */\n _lifecycleHooks: LIFECYCLE_HOOKS\n})\n\n/* */\n\n/**\n * Check if a string starts with $ or _\n */\nfunction isReserved (str) {\n var c = (str + '').charCodeAt(0);\n return c === 0x24 || c === 0x5F\n}\n\n/**\n * Define a property.\n */\nfunction def (obj, key, val, enumerable) {\n Object.defineProperty(obj, key, {\n value: val,\n enumerable: !!enumerable,\n writable: true,\n configurable: true\n });\n}\n\n/**\n * Parse simple path.\n */\nvar bailRE = /[^\\w.$]/;\nfunction parsePath (path) {\n if (bailRE.test(path)) {\n return\n }\n var segments = path.split('.');\n return function (obj) {\n for (var i = 0; i < segments.length; i++) {\n if (!obj) { return }\n obj = obj[segments[i]];\n }\n return obj\n }\n}\n\n/* */\n\n// can we use __proto__?\nvar hasProto = '__proto__' in {};\n\n// Browser environment sniffing\nvar inBrowser = typeof window !== 'undefined';\nvar inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nvar weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nvar UA = inBrowser && window.navigator.userAgent.toLowerCase();\nvar isIE = UA && /msie|trident/.test(UA);\nvar isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nvar isEdge = UA && UA.indexOf('edge/') > 0;\nvar isAndroid = (UA && UA.indexOf('android') > 0) || (weexPlatform === 'android');\nvar isIOS = (UA && /iphone|ipad|ipod|ios/.test(UA)) || (weexPlatform === 'ios');\nvar isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\n\n// Firefox has a \"watch\" function on Object.prototype...\nvar nativeWatch = ({}).watch;\n\nvar supportsPassive = false;\nif (inBrowser) {\n try {\n var opts = {};\n Object.defineProperty(opts, 'passive', ({\n get: function get () {\n /* istanbul ignore next */\n supportsPassive = true;\n }\n })); // https://github.com/facebook/flow/issues/285\n window.addEventListener('test-passive', null, opts);\n } catch (e) {}\n}\n\n// this needs to be lazy-evaled because vue may be required before\n// vue-server-renderer can set VUE_ENV\nvar _isServer;\nvar isServerRendering = function () {\n if (_isServer === undefined) {\n /* istanbul ignore if */\n if (!inBrowser && !inWeex && typeof global !== 'undefined') {\n // detect presence of vue-server-renderer and avoid\n // Webpack shimming the process\n _isServer = global['process'].env.VUE_ENV === 'server';\n } else {\n _isServer = false;\n }\n }\n return _isServer\n};\n\n// detect devtools\nvar devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;\n\n/* istanbul ignore next */\nfunction isNative (Ctor) {\n return typeof Ctor === 'function' && /native code/.test(Ctor.toString())\n}\n\nvar hasSymbol =\n typeof Symbol !== 'undefined' && isNative(Symbol) &&\n typeof Reflect !== 'undefined' && isNative(Reflect.ownKeys);\n\nvar _Set;\n/* istanbul ignore if */ // $flow-disable-line\nif (typeof Set !== 'undefined' && isNative(Set)) {\n // use native Set when available.\n _Set = Set;\n} else {\n // a non-standard Set polyfill that only works with primitive keys.\n _Set = (function () {\n function Set () {\n this.set = Object.create(null);\n }\n Set.prototype.has = function has (key) {\n return this.set[key] === true\n };\n Set.prototype.add = function add (key) {\n this.set[key] = true;\n };\n Set.prototype.clear = function clear () {\n this.set = Object.create(null);\n };\n\n return Set;\n }());\n}\n\n/* */\n\nvar warn = noop;\nvar tip = noop;\nvar generateComponentTrace = (noop); // work around flow check\nvar formatComponentName = (noop);\n\nif (process.env.NODE_ENV !== 'production') {\n var hasConsole = typeof console !== 'undefined';\n var classifyRE = /(?:^|[-_])(\\w)/g;\n var classify = function (str) { return str\n .replace(classifyRE, function (c) { return c.toUpperCase(); })\n .replace(/[-_]/g, ''); };\n\n warn = function (msg, vm) {\n var trace = vm ? generateComponentTrace(vm) : '';\n\n if (config.warnHandler) {\n config.warnHandler.call(null, msg, vm, trace);\n } else if (hasConsole && (!config.silent)) {\n console.error((\"[Vue warn]: \" + msg + trace));\n }\n };\n\n tip = function (msg, vm) {\n if (hasConsole && (!config.silent)) {\n console.warn(\"[Vue tip]: \" + msg + (\n vm ? generateComponentTrace(vm) : ''\n ));\n }\n };\n\n formatComponentName = function (vm, includeFile) {\n if (vm.$root === vm) {\n return '<Root>'\n }\n var options = typeof vm === 'function' && vm.cid != null\n ? vm.options\n : vm._isVue\n ? vm.$options || vm.constructor.options\n : vm || {};\n var name = options.name || options._componentTag;\n var file = options.__file;\n if (!name && file) {\n var match = file.match(/([^/\\\\]+)\\.vue$/);\n name = match && match[1];\n }\n\n return (\n (name ? (\"<\" + (classify(name)) + \">\") : \"<Anonymous>\") +\n (file && includeFile !== false ? (\" at \" + file) : '')\n )\n };\n\n var repeat = function (str, n) {\n var res = '';\n while (n) {\n if (n % 2 === 1) { res += str; }\n if (n > 1) { str += str; }\n n >>= 1;\n }\n return res\n };\n\n generateComponentTrace = function (vm) {\n if (vm._isVue && vm.$parent) {\n var tree = [];\n var currentRecursiveSequence = 0;\n while (vm) {\n if (tree.length > 0) {\n var last = tree[tree.length - 1];\n if (last.constructor === vm.constructor) {\n currentRecursiveSequence++;\n vm = vm.$parent;\n continue\n } else if (currentRecursiveSequence > 0) {\n tree[tree.length - 1] = [last, currentRecursiveSequence];\n currentRecursiveSequence = 0;\n }\n }\n tree.push(vm);\n vm = vm.$parent;\n }\n return '\\n\\nfound in\\n\\n' + tree\n .map(function (vm, i) { return (\"\" + (i === 0 ? '---> ' : repeat(' ', 5 + i * 2)) + (Array.isArray(vm)\n ? ((formatComponentName(vm[0])) + \"... (\" + (vm[1]) + \" recursive calls)\")\n : formatComponentName(vm))); })\n .join('\\n')\n } else {\n return (\"\\n\\n(found in \" + (formatComponentName(vm)) + \")\")\n }\n };\n}\n\n/* */\n\n\nvar uid = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n */\nvar Dep = function Dep () {\n this.id = uid++;\n this.subs = [];\n};\n\nDep.prototype.addSub = function addSub (sub) {\n this.subs.push(sub);\n};\n\nDep.prototype.removeSub = function removeSub (sub) {\n remove(this.subs, sub);\n};\n\nDep.prototype.depend = function depend () {\n if (Dep.target) {\n Dep.target.addDep(this);\n }\n};\n\nDep.prototype.notify = function notify () {\n // stabilize the subscriber list first\n var subs = this.subs.slice();\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\nvar targetStack = [];\n\nfunction pushTarget (_target) {\n if (Dep.target) { targetStack.push(Dep.target); }\n Dep.target = _target;\n}\n\nfunction popTarget () {\n Dep.target = targetStack.pop();\n}\n\n/* */\n\nvar VNode = function VNode (\n tag,\n data,\n children,\n text,\n elm,\n context,\n componentOptions,\n asyncFactory\n) {\n this.tag = tag;\n this.data = data;\n this.children = children;\n this.text = text;\n this.elm = elm;\n this.ns = undefined;\n this.context = context;\n this.fnContext = undefined;\n this.fnOptions = undefined;\n this.fnScopeId = undefined;\n this.key = data && data.key;\n this.componentOptions = componentOptions;\n this.componentInstance = undefined;\n this.parent = undefined;\n this.raw = false;\n this.isStatic = false;\n this.isRootInsert = true;\n this.isComment = false;\n this.isCloned = false;\n this.isOnce = false;\n this.asyncFactory = asyncFactory;\n this.asyncMeta = undefined;\n this.isAsyncPlaceholder = false;\n};\n\nvar prototypeAccessors = { child: { configurable: true } };\n\n// DEPRECATED: alias for componentInstance for backwards compat.\n/* istanbul ignore next */\nprototypeAccessors.child.get = function () {\n return this.componentInstance\n};\n\nObject.defineProperties( VNode.prototype, prototypeAccessors );\n\nvar createEmptyVNode = function (text) {\n if ( text === void 0 ) text = '';\n\n var node = new VNode();\n node.text = text;\n node.isComment = true;\n return node\n};\n\nfunction createTextVNode (val) {\n return new VNode(undefined, undefined, undefined, String(val))\n}\n\n// optimized shallow clone\n// used for static nodes and slot nodes because they may be reused across\n// multiple renders, cloning them avoids errors when DOM manipulations rely\n// on their elm reference.\nfunction cloneVNode (vnode) {\n var cloned = new VNode(\n vnode.tag,\n vnode.data,\n vnode.children,\n vnode.text,\n vnode.elm,\n vnode.context,\n vnode.componentOptions,\n vnode.asyncFactory\n );\n cloned.ns = vnode.ns;\n cloned.isStatic = vnode.isStatic;\n cloned.key = vnode.key;\n cloned.isComment = vnode.isComment;\n cloned.fnContext = vnode.fnContext;\n cloned.fnOptions = vnode.fnOptions;\n cloned.fnScopeId = vnode.fnScopeId;\n cloned.isCloned = true;\n return cloned\n}\n\n/*\n * not type checking this file because flow doesn't play well with\n * dynamically accessing methods on Array prototype\n */\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto);\n\nvar methodsToPatch = [\n 'push',\n 'pop',\n 'shift',\n 'unshift',\n 'splice',\n 'sort',\n 'reverse'\n];\n\n/**\n * Intercept mutating methods and emit events\n */\nmethodsToPatch.forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n case 'unshift':\n inserted = args;\n break\n case 'splice':\n inserted = args.slice(2);\n break\n }\n if (inserted) { ob.observeArray(inserted); }\n // notify change\n ob.dep.notify();\n return result\n });\n});\n\n/* */\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * In some cases we may want to disable observation inside a component's\n * update computation.\n */\nvar shouldObserve = true;\n\nfunction toggleObserving (value) {\n shouldObserve = value;\n}\n\n/**\n * Observer class that is attached to each observed\n * object. Once attached, the observer converts the target\n * object's property keys into getter/setters that\n * collect dependencies and dispatch updates.\n */\nvar Observer = function Observer (value) {\n this.value = value;\n this.dep = new Dep();\n this.vmCount = 0;\n def(value, '__ob__', this);\n if (Array.isArray(value)) {\n var augment = hasProto\n ? protoAugment\n : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n};\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n */\nObserver.prototype.walk = function walk (obj) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n defineReactive(obj, keys[i]);\n }\n};\n\n/**\n * Observe a list of Array items.\n */\nObserver.prototype.observeArray = function observeArray (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n */\nfunction protoAugment (target, src, keys) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n */\n/* istanbul ignore next */\nfunction copyAugment (target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n */\nfunction observe (value, asRootData) {\n if (!isObject(value) || value instanceof VNode) {\n return\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (\n shouldObserve &&\n !isServerRendering() &&\n (Array.isArray(value) || isPlainObject(value)) &&\n Object.isExtensible(value) &&\n !value._isVue\n ) {\n ob = new Observer(value);\n }\n if (asRootData && ob) {\n ob.vmCount++;\n }\n return ob\n}\n\n/**\n * Define a reactive property on an Object.\n */\nfunction defineReactive (\n obj,\n key,\n val,\n customSetter,\n shallow\n) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n if (!getter && arguments.length === 2) {\n val = obj[key];\n }\n var setter = property && property.set;\n\n var childOb = !shallow && observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter () {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n if (Array.isArray(value)) {\n dependArray(value);\n }\n }\n }\n return value\n },\n set: function reactiveSetter (newVal) {\n var value = getter ? getter.call(obj) : val;\n /* eslint-disable no-self-compare */\n if (newVal === value || (newVal !== newVal && value !== value)) {\n return\n }\n /* eslint-enable no-self-compare */\n if (process.env.NODE_ENV !== 'production' && customSetter) {\n customSetter();\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = !shallow && observe(newVal);\n dep.notify();\n }\n });\n}\n\n/**\n * Set a property on an object. Adds the new property and\n * triggers change notification if the property doesn't\n * already exist.\n */\nfunction set (target, key, val) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot set reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.length = Math.max(target.length, key);\n target.splice(key, 1, val);\n return val\n }\n if (key in target && !(key in Object.prototype)) {\n target[key] = val;\n return val\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid adding reactive properties to a Vue instance or its root $data ' +\n 'at runtime - declare it upfront in the data option.'\n );\n return val\n }\n if (!ob) {\n target[key] = val;\n return val\n }\n defineReactive(ob.value, key, val);\n ob.dep.notify();\n return val\n}\n\n/**\n * Delete a property and trigger change if necessary.\n */\nfunction del (target, key) {\n if (process.env.NODE_ENV !== 'production' &&\n (isUndef(target) || isPrimitive(target))\n ) {\n warn((\"Cannot delete reactive property on undefined, null, or primitive value: \" + ((target))));\n }\n if (Array.isArray(target) && isValidArrayIndex(key)) {\n target.splice(key, 1);\n return\n }\n var ob = (target).__ob__;\n if (target._isVue || (ob && ob.vmCount)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Avoid deleting properties on a Vue instance or its root $data ' +\n '- just set it to null.'\n );\n return\n }\n if (!hasOwn(target, key)) {\n return\n }\n delete target[key];\n if (!ob) {\n return\n }\n ob.dep.notify();\n}\n\n/**\n * Collect dependencies on array elements when the array is touched, since\n * we cannot intercept array element access like property getters.\n */\nfunction dependArray (value) {\n for (var e = (void 0), i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n if (Array.isArray(e)) {\n dependArray(e);\n }\n }\n}\n\n/* */\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n */\nvar strats = config.optionMergeStrategies;\n\n/**\n * Options with restrictions\n */\nif (process.env.NODE_ENV !== 'production') {\n strats.el = strats.propsData = function (parent, child, vm, key) {\n if (!vm) {\n warn(\n \"option \\\"\" + key + \"\\\" can only be used during instance \" +\n 'creation with the `new` keyword.'\n );\n }\n return defaultStrat(parent, child)\n };\n}\n\n/**\n * Helper that recursively merges two data objects together.\n */\nfunction mergeData (to, from) {\n if (!from) { return to }\n var key, toVal, fromVal;\n var keys = Object.keys(from);\n for (var i = 0; i < keys.length; i++) {\n key = keys[i];\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isPlainObject(toVal) && isPlainObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to\n}\n\n/**\n * Data\n */\nfunction mergeDataOrFn (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal\n }\n if (!parentVal) {\n return childVal\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn () {\n return mergeData(\n typeof childVal === 'function' ? childVal.call(this, this) : childVal,\n typeof parentVal === 'function' ? parentVal.call(this, this) : parentVal\n )\n }\n } else {\n return function mergedInstanceDataFn () {\n // instance merge\n var instanceData = typeof childVal === 'function'\n ? childVal.call(vm, vm)\n : childVal;\n var defaultData = typeof parentVal === 'function'\n ? parentVal.call(vm, vm)\n : parentVal;\n if (instanceData) {\n return mergeData(instanceData, defaultData)\n } else {\n return defaultData\n }\n }\n }\n}\n\nstrats.data = function (\n parentVal,\n childVal,\n vm\n) {\n if (!vm) {\n if (childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn(\n 'The \"data\" option should be a function ' +\n 'that returns a per-instance value in component ' +\n 'definitions.',\n vm\n );\n\n return parentVal\n }\n return mergeDataOrFn(parentVal, childVal)\n }\n\n return mergeDataOrFn(parentVal, childVal, vm)\n};\n\n/**\n * Hooks and props are merged as arrays.\n */\nfunction mergeHook (\n parentVal,\n childVal\n) {\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : Array.isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal\n}\n\nLIFECYCLE_HOOKS.forEach(function (hook) {\n strats[hook] = mergeHook;\n});\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\nfunction mergeAssets (\n parentVal,\n childVal,\n vm,\n key\n) {\n var res = Object.create(parentVal || null);\n if (childVal) {\n process.env.NODE_ENV !== 'production' && assertObjectType(key, childVal, vm);\n return extend(res, childVal)\n } else {\n return res\n }\n}\n\nASSET_TYPES.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Watchers.\n *\n * Watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\nstrats.watch = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n // work around Firefox's Object.prototype.watch...\n if (parentVal === nativeWatch) { parentVal = undefined; }\n if (childVal === nativeWatch) { childVal = undefined; }\n /* istanbul ignore if */\n if (!childVal) { return Object.create(parentVal || null) }\n if (process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = {};\n extend(ret, parentVal);\n for (var key$1 in childVal) {\n var parent = ret[key$1];\n var child = childVal[key$1];\n if (parent && !Array.isArray(parent)) {\n parent = [parent];\n }\n ret[key$1] = parent\n ? parent.concat(child)\n : Array.isArray(child) ? child : [child];\n }\n return ret\n};\n\n/**\n * Other object hashes.\n */\nstrats.props =\nstrats.methods =\nstrats.inject =\nstrats.computed = function (\n parentVal,\n childVal,\n vm,\n key\n) {\n if (childVal && process.env.NODE_ENV !== 'production') {\n assertObjectType(key, childVal, vm);\n }\n if (!parentVal) { return childVal }\n var ret = Object.create(null);\n extend(ret, parentVal);\n if (childVal) { extend(ret, childVal); }\n return ret\n};\nstrats.provide = mergeDataOrFn;\n\n/**\n * Default strategy.\n */\nvar defaultStrat = function (parentVal, childVal) {\n return childVal === undefined\n ? parentVal\n : childVal\n};\n\n/**\n * Validate component names\n */\nfunction checkComponents (options) {\n for (var key in options.components) {\n validateComponentName(key);\n }\n}\n\nfunction validateComponentName (name) {\n if (!/^[a-zA-Z][\\w-]*$/.test(name)) {\n warn(\n 'Invalid component name: \"' + name + '\". Component names ' +\n 'can only contain alphanumeric characters and the hyphen, ' +\n 'and must start with a letter.'\n );\n }\n if (isBuiltInTag(name) || config.isReservedTag(name)) {\n warn(\n 'Do not use built-in or reserved HTML elements as component ' +\n 'id: ' + name\n );\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n */\nfunction normalizeProps (options, vm) {\n var props = options.props;\n if (!props) { return }\n var res = {};\n var i, val, name;\n if (Array.isArray(props)) {\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n name = camelize(val);\n res[name] = { type: null };\n } else if (process.env.NODE_ENV !== 'production') {\n warn('props must be strings when using array syntax.');\n }\n }\n } else if (isPlainObject(props)) {\n for (var key in props) {\n val = props[key];\n name = camelize(key);\n res[name] = isPlainObject(val)\n ? val\n : { type: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"props\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(props)) + \".\",\n vm\n );\n }\n options.props = res;\n}\n\n/**\n * Normalize all injections into Object-based format\n */\nfunction normalizeInject (options, vm) {\n var inject = options.inject;\n if (!inject) { return }\n var normalized = options.inject = {};\n if (Array.isArray(inject)) {\n for (var i = 0; i < inject.length; i++) {\n normalized[inject[i]] = { from: inject[i] };\n }\n } else if (isPlainObject(inject)) {\n for (var key in inject) {\n var val = inject[key];\n normalized[key] = isPlainObject(val)\n ? extend({ from: key }, val)\n : { from: val };\n }\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n \"Invalid value for option \\\"inject\\\": expected an Array or an Object, \" +\n \"but got \" + (toRawType(inject)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Normalize raw function directives into object format.\n */\nfunction normalizeDirectives (options) {\n var dirs = options.directives;\n if (dirs) {\n for (var key in dirs) {\n var def = dirs[key];\n if (typeof def === 'function') {\n dirs[key] = { bind: def, update: def };\n }\n }\n }\n}\n\nfunction assertObjectType (name, value, vm) {\n if (!isPlainObject(value)) {\n warn(\n \"Invalid value for option \\\"\" + name + \"\\\": expected an Object, \" +\n \"but got \" + (toRawType(value)) + \".\",\n vm\n );\n }\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n */\nfunction mergeOptions (\n parent,\n child,\n vm\n) {\n if (process.env.NODE_ENV !== 'production') {\n checkComponents(child);\n }\n\n if (typeof child === 'function') {\n child = child.options;\n }\n\n normalizeProps(child, vm);\n normalizeInject(child, vm);\n normalizeDirectives(child);\n var extendsFrom = child.extends;\n if (extendsFrom) {\n parent = mergeOptions(parent, extendsFrom, vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n var options = {};\n var key;\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField (key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n */\nfunction resolveAsset (\n options,\n type,\n id,\n warnMissing\n) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return\n }\n var assets = options[type];\n // check local registration variations first\n if (hasOwn(assets, id)) { return assets[id] }\n var camelizedId = camelize(id);\n if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }\n var PascalCaseId = capitalize(camelizedId);\n if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }\n // fallback to prototype chain\n var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn(\n 'Failed to resolve ' + type.slice(0, -1) + ': ' + id,\n options\n );\n }\n return res\n}\n\n/* */\n\nfunction validateProp (\n key,\n propOptions,\n propsData,\n vm\n) {\n var prop = propOptions[key];\n var absent = !hasOwn(propsData, key);\n var value = propsData[key];\n // boolean casting\n var booleanIndex = getTypeIndex(Boolean, prop.type);\n if (booleanIndex > -1) {\n if (absent && !hasOwn(prop, 'default')) {\n value = false;\n } else if (value === '' || value === hyphenate(key)) {\n // only cast empty string / same name to boolean if\n // boolean has higher priority\n var stringIndex = getTypeIndex(String, prop.type);\n if (stringIndex < 0 || booleanIndex < stringIndex) {\n value = true;\n }\n }\n }\n // check default value\n if (value === undefined) {\n value = getPropDefaultValue(vm, prop, key);\n // since the default value is a fresh copy,\n // make sure to observe it.\n var prevShouldObserve = shouldObserve;\n toggleObserving(true);\n observe(value);\n toggleObserving(prevShouldObserve);\n }\n if (\n process.env.NODE_ENV !== 'production' &&\n // skip validation for weex recycle-list child component props\n !(false && isObject(value) && ('@binding' in value))\n ) {\n assertProp(prop, key, value, vm, absent);\n }\n return value\n}\n\n/**\n * Get the default value of a prop.\n */\nfunction getPropDefaultValue (vm, prop, key) {\n // no default, return undefined\n if (!hasOwn(prop, 'default')) {\n return undefined\n }\n var def = prop.default;\n // warn against non-factory defaults for Object & Array\n if (process.env.NODE_ENV !== 'production' && isObject(def)) {\n warn(\n 'Invalid default value for prop \"' + key + '\": ' +\n 'Props with type Object/Array must use a factory function ' +\n 'to return the default value.',\n vm\n );\n }\n // the raw prop value was also undefined from previous render,\n // return previous default value to avoid unnecessary watcher trigger\n if (vm && vm.$options.propsData &&\n vm.$options.propsData[key] === undefined &&\n vm._props[key] !== undefined\n ) {\n return vm._props[key]\n }\n // call factory function for non-Function types\n // a value is Function if its prototype is function even across different execution context\n return typeof def === 'function' && getType(prop.type) !== 'Function'\n ? def.call(vm)\n : def\n}\n\n/**\n * Assert whether a prop is valid.\n */\nfunction assertProp (\n prop,\n name,\n value,\n vm,\n absent\n) {\n if (prop.required && absent) {\n warn(\n 'Missing required prop: \"' + name + '\"',\n vm\n );\n return\n }\n if (value == null && !prop.required) {\n return\n }\n var type = prop.type;\n var valid = !type || type === true;\n var expectedTypes = [];\n if (type) {\n if (!Array.isArray(type)) {\n type = [type];\n }\n for (var i = 0; i < type.length && !valid; i++) {\n var assertedType = assertType(value, type[i]);\n expectedTypes.push(assertedType.expectedType || '');\n valid = assertedType.valid;\n }\n }\n if (!valid) {\n warn(\n \"Invalid prop: type check failed for prop \\\"\" + name + \"\\\".\" +\n \" Expected \" + (expectedTypes.map(capitalize).join(', ')) +\n \", got \" + (toRawType(value)) + \".\",\n vm\n );\n return\n }\n var validator = prop.validator;\n if (validator) {\n if (!validator(value)) {\n warn(\n 'Invalid prop: custom validator check failed for prop \"' + name + '\".',\n vm\n );\n }\n }\n}\n\nvar simpleCheckRE = /^(String|Number|Boolean|Function|Symbol)$/;\n\nfunction assertType (value, type) {\n var valid;\n var expectedType = getType(type);\n if (simpleCheckRE.test(expectedType)) {\n var t = typeof value;\n valid = t === expectedType.toLowerCase();\n // for primitive wrapper objects\n if (!valid && t === 'object') {\n valid = value instanceof type;\n }\n } else if (expectedType === 'Object') {\n valid = isPlainObject(value);\n } else if (expectedType === 'Array') {\n valid = Array.isArray(value);\n } else {\n valid = value instanceof type;\n }\n return {\n valid: valid,\n expectedType: expectedType\n }\n}\n\n/**\n * Use function string name to check built-in types,\n * because a simple equality check will fail when running\n * across different vms / iframes.\n */\nfunction getType (fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : ''\n}\n\nfunction isSameType (a, b) {\n return getType(a) === getType(b)\n}\n\nfunction getTypeIndex (type, expectedTypes) {\n if (!Array.isArray(expectedTypes)) {\n return isSameType(expectedTypes, type) ? 0 : -1\n }\n for (var i = 0, len = expectedTypes.length; i < len; i++) {\n if (isSameType(expectedTypes[i], type)) {\n return i\n }\n }\n return -1\n}\n\n/* */\n\nfunction handleError (err, vm, info) {\n if (vm) {\n var cur = vm;\n while ((cur = cur.$parent)) {\n var hooks = cur.$options.errorCaptured;\n if (hooks) {\n for (var i = 0; i < hooks.length; i++) {\n try {\n var capture = hooks[i].call(cur, err, vm, info) === false;\n if (capture) { return }\n } catch (e) {\n globalHandleError(e, cur, 'errorCaptured hook');\n }\n }\n }\n }\n }\n globalHandleError(err, vm, info);\n}\n\nfunction globalHandleError (err, vm, info) {\n if (config.errorHandler) {\n try {\n return config.errorHandler.call(null, err, vm, info)\n } catch (e) {\n logError(e, null, 'config.errorHandler');\n }\n }\n logError(err, vm, info);\n}\n\nfunction logError (err, vm, info) {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Error in \" + info + \": \\\"\" + (err.toString()) + \"\\\"\"), vm);\n }\n /* istanbul ignore else */\n if ((inBrowser || inWeex) && typeof console !== 'undefined') {\n console.error(err);\n } else {\n throw err\n }\n}\n\n/* */\n/* globals MessageChannel */\n\nvar callbacks = [];\nvar pending = false;\n\nfunction flushCallbacks () {\n pending = false;\n var copies = callbacks.slice(0);\n callbacks.length = 0;\n for (var i = 0; i < copies.length; i++) {\n copies[i]();\n }\n}\n\n// Here we have async deferring wrappers using both microtasks and (macro) tasks.\n// In < 2.4 we used microtasks everywhere, but there are some scenarios where\n// microtasks have too high a priority and fire in between supposedly\n// sequential events (e.g. #4521, #6690) or even between bubbling of the same\n// event (#6566). However, using (macro) tasks everywhere also has subtle problems\n// when state is changed right before repaint (e.g. #6813, out-in transitions).\n// Here we use microtask by default, but expose a way to force (macro) task when\n// needed (e.g. in event handlers attached by v-on).\nvar microTimerFunc;\nvar macroTimerFunc;\nvar useMacroTask = false;\n\n// Determine (macro) task defer implementation.\n// Technically setImmediate should be the ideal choice, but it's only available\n// in IE. The only polyfill that consistently queues the callback after all DOM\n// events triggered in the same loop is by using MessageChannel.\n/* istanbul ignore if */\nif (typeof setImmediate !== 'undefined' && isNative(setImmediate)) {\n macroTimerFunc = function () {\n setImmediate(flushCallbacks);\n };\n} else if (typeof MessageChannel !== 'undefined' && (\n isNative(MessageChannel) ||\n // PhantomJS\n MessageChannel.toString() === '[object MessageChannelConstructor]'\n)) {\n var channel = new MessageChannel();\n var port = channel.port2;\n channel.port1.onmessage = flushCallbacks;\n macroTimerFunc = function () {\n port.postMessage(1);\n };\n} else {\n /* istanbul ignore next */\n macroTimerFunc = function () {\n setTimeout(flushCallbacks, 0);\n };\n}\n\n// Determine microtask defer implementation.\n/* istanbul ignore next, $flow-disable-line */\nif (typeof Promise !== 'undefined' && isNative(Promise)) {\n var p = Promise.resolve();\n microTimerFunc = function () {\n p.then(flushCallbacks);\n // in problematic UIWebViews, Promise.then doesn't completely break, but\n // it can get stuck in a weird state where callbacks are pushed into the\n // microtask queue but the queue isn't being flushed, until the browser\n // needs to do some other work, e.g. handle a timer. Therefore we can\n // \"force\" the microtask queue to be flushed by adding an empty timer.\n if (isIOS) { setTimeout(noop); }\n };\n} else {\n // fallback to macro\n microTimerFunc = macroTimerFunc;\n}\n\n/**\n * Wrap a function so that if any code inside triggers state change,\n * the changes are queued using a (macro) task instead of a microtask.\n */\nfunction withMacroTask (fn) {\n return fn._withTask || (fn._withTask = function () {\n useMacroTask = true;\n var res = fn.apply(null, arguments);\n useMacroTask = false;\n return res\n })\n}\n\nfunction nextTick (cb, ctx) {\n var _resolve;\n callbacks.push(function () {\n if (cb) {\n try {\n cb.call(ctx);\n } catch (e) {\n handleError(e, ctx, 'nextTick');\n }\n } else if (_resolve) {\n _resolve(ctx);\n }\n });\n if (!pending) {\n pending = true;\n if (useMacroTask) {\n macroTimerFunc();\n } else {\n microTimerFunc();\n }\n }\n // $flow-disable-line\n if (!cb && typeof Promise !== 'undefined') {\n return new Promise(function (resolve) {\n _resolve = resolve;\n })\n }\n}\n\n/* */\n\n/* not type checking this file because flow doesn't play well with Proxy */\n\nvar initProxy;\n\nif (process.env.NODE_ENV !== 'production') {\n var allowedGlobals = makeMap(\n 'Infinity,undefined,NaN,isFinite,isNaN,' +\n 'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +\n 'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +\n 'require' // for Webpack/Browserify\n );\n\n var warnNonPresent = function (target, key) {\n warn(\n \"Property or method \\\"\" + key + \"\\\" is not defined on the instance but \" +\n 'referenced during render. Make sure that this property is reactive, ' +\n 'either in the data option, or for class-based components, by ' +\n 'initializing the property. ' +\n 'See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.',\n target\n );\n };\n\n var hasProxy =\n typeof Proxy !== 'undefined' && isNative(Proxy);\n\n if (hasProxy) {\n var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta,exact');\n config.keyCodes = new Proxy(config.keyCodes, {\n set: function set (target, key, value) {\n if (isBuiltInModifier(key)) {\n warn((\"Avoid overwriting built-in modifier in config.keyCodes: .\" + key));\n return false\n } else {\n target[key] = value;\n return true\n }\n }\n });\n }\n\n var hasHandler = {\n has: function has (target, key) {\n var has = key in target;\n var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';\n if (!has && !isAllowed) {\n warnNonPresent(target, key);\n }\n return has || !isAllowed\n }\n };\n\n var getHandler = {\n get: function get (target, key) {\n if (typeof key === 'string' && !(key in target)) {\n warnNonPresent(target, key);\n }\n return target[key]\n }\n };\n\n initProxy = function initProxy (vm) {\n if (hasProxy) {\n // determine which proxy handler to use\n var options = vm.$options;\n var handlers = options.render && options.render._withStripped\n ? getHandler\n : hasHandler;\n vm._renderProxy = new Proxy(vm, handlers);\n } else {\n vm._renderProxy = vm;\n }\n };\n}\n\n/* */\n\nvar seenObjects = new _Set();\n\n/**\n * Recursively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n */\nfunction traverse (val) {\n _traverse(val, seenObjects);\n seenObjects.clear();\n}\n\nfunction _traverse (val, seen) {\n var i, keys;\n var isA = Array.isArray(val);\n if ((!isA && !isObject(val)) || Object.isFrozen(val) || val instanceof VNode) {\n return\n }\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return\n }\n seen.add(depId);\n }\n if (isA) {\n i = val.length;\n while (i--) { _traverse(val[i], seen); }\n } else {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) { _traverse(val[keys[i]], seen); }\n }\n}\n\nvar mark;\nvar measure;\n\nif (process.env.NODE_ENV !== 'production') {\n var perf = inBrowser && window.performance;\n /* istanbul ignore if */\n if (\n perf &&\n perf.mark &&\n perf.measure &&\n perf.clearMarks &&\n perf.clearMeasures\n ) {\n mark = function (tag) { return perf.mark(tag); };\n measure = function (name, startTag, endTag) {\n perf.measure(name, startTag, endTag);\n perf.clearMarks(startTag);\n perf.clearMarks(endTag);\n perf.clearMeasures(name);\n };\n }\n}\n\n/* */\n\nvar normalizeEvent = cached(function (name) {\n var passive = name.charAt(0) === '&';\n name = passive ? name.slice(1) : name;\n var once$$1 = name.charAt(0) === '~'; // Prefixed last, checked first\n name = once$$1 ? name.slice(1) : name;\n var capture = name.charAt(0) === '!';\n name = capture ? name.slice(1) : name;\n return {\n name: name,\n once: once$$1,\n capture: capture,\n passive: passive\n }\n});\n\nfunction createFnInvoker (fns) {\n function invoker () {\n var arguments$1 = arguments;\n\n var fns = invoker.fns;\n if (Array.isArray(fns)) {\n var cloned = fns.slice();\n for (var i = 0; i < cloned.length; i++) {\n cloned[i].apply(null, arguments$1);\n }\n } else {\n // return handler return value for single handlers\n return fns.apply(null, arguments)\n }\n }\n invoker.fns = fns;\n return invoker\n}\n\nfunction updateListeners (\n on,\n oldOn,\n add,\n remove$$1,\n vm\n) {\n var name, def, cur, old, event;\n for (name in on) {\n def = cur = on[name];\n old = oldOn[name];\n event = normalizeEvent(name);\n /* istanbul ignore if */\n if (isUndef(cur)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Invalid handler for event \\\"\" + (event.name) + \"\\\": got \" + String(cur),\n vm\n );\n } else if (isUndef(old)) {\n if (isUndef(cur.fns)) {\n cur = on[name] = createFnInvoker(cur);\n }\n add(event.name, cur, event.once, event.capture, event.passive, event.params);\n } else if (cur !== old) {\n old.fns = cur;\n on[name] = old;\n }\n }\n for (name in oldOn) {\n if (isUndef(on[name])) {\n event = normalizeEvent(name);\n remove$$1(event.name, oldOn[name], event.capture);\n }\n }\n}\n\n/* */\n\nfunction mergeVNodeHook (def, hookKey, hook) {\n if (def instanceof VNode) {\n def = def.data.hook || (def.data.hook = {});\n }\n var invoker;\n var oldHook = def[hookKey];\n\n function wrappedHook () {\n hook.apply(this, arguments);\n // important: remove merged hook to ensure it's called only once\n // and prevent memory leak\n remove(invoker.fns, wrappedHook);\n }\n\n if (isUndef(oldHook)) {\n // no existing hook\n invoker = createFnInvoker([wrappedHook]);\n } else {\n /* istanbul ignore if */\n if (isDef(oldHook.fns) && isTrue(oldHook.merged)) {\n // already a merged invoker\n invoker = oldHook;\n invoker.fns.push(wrappedHook);\n } else {\n // existing plain hook\n invoker = createFnInvoker([oldHook, wrappedHook]);\n }\n }\n\n invoker.merged = true;\n def[hookKey] = invoker;\n}\n\n/* */\n\nfunction extractPropsFromVNodeData (\n data,\n Ctor,\n tag\n) {\n // we are only extracting raw values here.\n // validation and default values are handled in the child\n // component itself.\n var propOptions = Ctor.options.props;\n if (isUndef(propOptions)) {\n return\n }\n var res = {};\n var attrs = data.attrs;\n var props = data.props;\n if (isDef(attrs) || isDef(props)) {\n for (var key in propOptions) {\n var altKey = hyphenate(key);\n if (process.env.NODE_ENV !== 'production') {\n var keyInLowerCase = key.toLowerCase();\n if (\n key !== keyInLowerCase &&\n attrs && hasOwn(attrs, keyInLowerCase)\n ) {\n tip(\n \"Prop \\\"\" + keyInLowerCase + \"\\\" is passed to component \" +\n (formatComponentName(tag || Ctor)) + \", but the declared prop name is\" +\n \" \\\"\" + key + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and camelCased \" +\n \"props need to use their kebab-case equivalents when using in-DOM \" +\n \"templates. You should probably use \\\"\" + altKey + \"\\\" instead of \\\"\" + key + \"\\\".\"\n );\n }\n }\n checkProp(res, props, key, altKey, true) ||\n checkProp(res, attrs, key, altKey, false);\n }\n }\n return res\n}\n\nfunction checkProp (\n res,\n hash,\n key,\n altKey,\n preserve\n) {\n if (isDef(hash)) {\n if (hasOwn(hash, key)) {\n res[key] = hash[key];\n if (!preserve) {\n delete hash[key];\n }\n return true\n } else if (hasOwn(hash, altKey)) {\n res[key] = hash[altKey];\n if (!preserve) {\n delete hash[altKey];\n }\n return true\n }\n }\n return false\n}\n\n/* */\n\n// The template compiler attempts to minimize the need for normalization by\n// statically analyzing the template at compile time.\n//\n// For plain HTML markup, normalization can be completely skipped because the\n// generated render function is guaranteed to return Array<VNode>. There are\n// two cases where extra normalization is needed:\n\n// 1. When the children contains components - because a functional component\n// may return an Array instead of a single root. In this case, just a simple\n// normalization is needed - if any child is an Array, we flatten the whole\n// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep\n// because functional components already normalize their own children.\nfunction simpleNormalizeChildren (children) {\n for (var i = 0; i < children.length; i++) {\n if (Array.isArray(children[i])) {\n return Array.prototype.concat.apply([], children)\n }\n }\n return children\n}\n\n// 2. When the children contains constructs that always generated nested Arrays,\n// e.g. <template>, <slot>, v-for, or when the children is provided by user\n// with hand-written render functions / JSX. In such cases a full normalization\n// is needed to cater to all possible types of children values.\nfunction normalizeChildren (children) {\n return isPrimitive(children)\n ? [createTextVNode(children)]\n : Array.isArray(children)\n ? normalizeArrayChildren(children)\n : undefined\n}\n\nfunction isTextNode (node) {\n return isDef(node) && isDef(node.text) && isFalse(node.isComment)\n}\n\nfunction normalizeArrayChildren (children, nestedIndex) {\n var res = [];\n var i, c, lastIndex, last;\n for (i = 0; i < children.length; i++) {\n c = children[i];\n if (isUndef(c) || typeof c === 'boolean') { continue }\n lastIndex = res.length - 1;\n last = res[lastIndex];\n // nested\n if (Array.isArray(c)) {\n if (c.length > 0) {\n c = normalizeArrayChildren(c, ((nestedIndex || '') + \"_\" + i));\n // merge adjacent text nodes\n if (isTextNode(c[0]) && isTextNode(last)) {\n res[lastIndex] = createTextVNode(last.text + (c[0]).text);\n c.shift();\n }\n res.push.apply(res, c);\n }\n } else if (isPrimitive(c)) {\n if (isTextNode(last)) {\n // merge adjacent text nodes\n // this is necessary for SSR hydration because text nodes are\n // essentially merged when rendered to HTML strings\n res[lastIndex] = createTextVNode(last.text + c);\n } else if (c !== '') {\n // convert primitive to vnode\n res.push(createTextVNode(c));\n }\n } else {\n if (isTextNode(c) && isTextNode(last)) {\n // merge adjacent text nodes\n res[lastIndex] = createTextVNode(last.text + c.text);\n } else {\n // default key for nested array children (likely generated by v-for)\n if (isTrue(children._isVList) &&\n isDef(c.tag) &&\n isUndef(c.key) &&\n isDef(nestedIndex)) {\n c.key = \"__vlist\" + nestedIndex + \"_\" + i + \"__\";\n }\n res.push(c);\n }\n }\n }\n return res\n}\n\n/* */\n\nfunction ensureCtor (comp, base) {\n if (\n comp.__esModule ||\n (hasSymbol && comp[Symbol.toStringTag] === 'Module')\n ) {\n comp = comp.default;\n }\n return isObject(comp)\n ? base.extend(comp)\n : comp\n}\n\nfunction createAsyncPlaceholder (\n factory,\n data,\n context,\n children,\n tag\n) {\n var node = createEmptyVNode();\n node.asyncFactory = factory;\n node.asyncMeta = { data: data, context: context, children: children, tag: tag };\n return node\n}\n\nfunction resolveAsyncComponent (\n factory,\n baseCtor,\n context\n) {\n if (isTrue(factory.error) && isDef(factory.errorComp)) {\n return factory.errorComp\n }\n\n if (isDef(factory.resolved)) {\n return factory.resolved\n }\n\n if (isTrue(factory.loading) && isDef(factory.loadingComp)) {\n return factory.loadingComp\n }\n\n if (isDef(factory.contexts)) {\n // already pending\n factory.contexts.push(context);\n } else {\n var contexts = factory.contexts = [context];\n var sync = true;\n\n var forceRender = function () {\n for (var i = 0, l = contexts.length; i < l; i++) {\n contexts[i].$forceUpdate();\n }\n };\n\n var resolve = once(function (res) {\n // cache resolved\n factory.resolved = ensureCtor(res, baseCtor);\n // invoke callbacks only if this is not a synchronous resolve\n // (async resolves are shimmed as synchronous during SSR)\n if (!sync) {\n forceRender();\n }\n });\n\n var reject = once(function (reason) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed to resolve async component: \" + (String(factory)) +\n (reason ? (\"\\nReason: \" + reason) : '')\n );\n if (isDef(factory.errorComp)) {\n factory.error = true;\n forceRender();\n }\n });\n\n var res = factory(resolve, reject);\n\n if (isObject(res)) {\n if (typeof res.then === 'function') {\n // () => Promise\n if (isUndef(factory.resolved)) {\n res.then(resolve, reject);\n }\n } else if (isDef(res.component) && typeof res.component.then === 'function') {\n res.component.then(resolve, reject);\n\n if (isDef(res.error)) {\n factory.errorComp = ensureCtor(res.error, baseCtor);\n }\n\n if (isDef(res.loading)) {\n factory.loadingComp = ensureCtor(res.loading, baseCtor);\n if (res.delay === 0) {\n factory.loading = true;\n } else {\n setTimeout(function () {\n if (isUndef(factory.resolved) && isUndef(factory.error)) {\n factory.loading = true;\n forceRender();\n }\n }, res.delay || 200);\n }\n }\n\n if (isDef(res.timeout)) {\n setTimeout(function () {\n if (isUndef(factory.resolved)) {\n reject(\n process.env.NODE_ENV !== 'production'\n ? (\"timeout (\" + (res.timeout) + \"ms)\")\n : null\n );\n }\n }, res.timeout);\n }\n }\n }\n\n sync = false;\n // return in case resolved synchronously\n return factory.loading\n ? factory.loadingComp\n : factory.resolved\n }\n}\n\n/* */\n\nfunction isAsyncPlaceholder (node) {\n return node.isComment && node.asyncFactory\n}\n\n/* */\n\nfunction getFirstComponentChild (children) {\n if (Array.isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n var c = children[i];\n if (isDef(c) && (isDef(c.componentOptions) || isAsyncPlaceholder(c))) {\n return c\n }\n }\n }\n}\n\n/* */\n\n/* */\n\nfunction initEvents (vm) {\n vm._events = Object.create(null);\n vm._hasHookEvent = false;\n // init parent attached events\n var listeners = vm.$options._parentListeners;\n if (listeners) {\n updateComponentListeners(vm, listeners);\n }\n}\n\nvar target;\n\nfunction add (event, fn, once) {\n if (once) {\n target.$once(event, fn);\n } else {\n target.$on(event, fn);\n }\n}\n\nfunction remove$1 (event, fn) {\n target.$off(event, fn);\n}\n\nfunction updateComponentListeners (\n vm,\n listeners,\n oldListeners\n) {\n target = vm;\n updateListeners(listeners, oldListeners || {}, add, remove$1, vm);\n target = undefined;\n}\n\nfunction eventsMixin (Vue) {\n var hookRE = /^hook:/;\n Vue.prototype.$on = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$on(event[i], fn);\n }\n } else {\n (vm._events[event] || (vm._events[event] = [])).push(fn);\n // optimize hook:event cost by using a boolean flag marked at registration\n // instead of a hash lookup\n if (hookRE.test(event)) {\n vm._hasHookEvent = true;\n }\n }\n return vm\n };\n\n Vue.prototype.$once = function (event, fn) {\n var vm = this;\n function on () {\n vm.$off(event, on);\n fn.apply(vm, arguments);\n }\n on.fn = fn;\n vm.$on(event, on);\n return vm\n };\n\n Vue.prototype.$off = function (event, fn) {\n var this$1 = this;\n\n var vm = this;\n // all\n if (!arguments.length) {\n vm._events = Object.create(null);\n return vm\n }\n // array of events\n if (Array.isArray(event)) {\n for (var i = 0, l = event.length; i < l; i++) {\n this$1.$off(event[i], fn);\n }\n return vm\n }\n // specific event\n var cbs = vm._events[event];\n if (!cbs) {\n return vm\n }\n if (!fn) {\n vm._events[event] = null;\n return vm\n }\n if (fn) {\n // specific handler\n var cb;\n var i$1 = cbs.length;\n while (i$1--) {\n cb = cbs[i$1];\n if (cb === fn || cb.fn === fn) {\n cbs.splice(i$1, 1);\n break\n }\n }\n }\n return vm\n };\n\n Vue.prototype.$emit = function (event) {\n var vm = this;\n if (process.env.NODE_ENV !== 'production') {\n var lowerCaseEvent = event.toLowerCase();\n if (lowerCaseEvent !== event && vm._events[lowerCaseEvent]) {\n tip(\n \"Event \\\"\" + lowerCaseEvent + \"\\\" is emitted in component \" +\n (formatComponentName(vm)) + \" but the handler is registered for \\\"\" + event + \"\\\". \" +\n \"Note that HTML attributes are case-insensitive and you cannot use \" +\n \"v-on to listen to camelCase events when using in-DOM templates. \" +\n \"You should probably use \\\"\" + (hyphenate(event)) + \"\\\" instead of \\\"\" + event + \"\\\".\"\n );\n }\n }\n var cbs = vm._events[event];\n if (cbs) {\n cbs = cbs.length > 1 ? toArray(cbs) : cbs;\n var args = toArray(arguments, 1);\n for (var i = 0, l = cbs.length; i < l; i++) {\n try {\n cbs[i].apply(vm, args);\n } catch (e) {\n handleError(e, vm, (\"event handler for \\\"\" + event + \"\\\"\"));\n }\n }\n }\n return vm\n };\n}\n\n/* */\n\n\n\n/**\n * Runtime helper for resolving raw children VNodes into a slot object.\n */\nfunction resolveSlots (\n children,\n context\n) {\n var slots = {};\n if (!children) {\n return slots\n }\n for (var i = 0, l = children.length; i < l; i++) {\n var child = children[i];\n var data = child.data;\n // remove slot attribute if the node is resolved as a Vue slot node\n if (data && data.attrs && data.attrs.slot) {\n delete data.attrs.slot;\n }\n // named slots should only be respected if the vnode was rendered in the\n // same context.\n if ((child.context === context || child.fnContext === context) &&\n data && data.slot != null\n ) {\n var name = data.slot;\n var slot = (slots[name] || (slots[name] = []));\n if (child.tag === 'template') {\n slot.push.apply(slot, child.children || []);\n } else {\n slot.push(child);\n }\n } else {\n (slots.default || (slots.default = [])).push(child);\n }\n }\n // ignore slots that contains only whitespace\n for (var name$1 in slots) {\n if (slots[name$1].every(isWhitespace)) {\n delete slots[name$1];\n }\n }\n return slots\n}\n\nfunction isWhitespace (node) {\n return (node.isComment && !node.asyncFactory) || node.text === ' '\n}\n\nfunction resolveScopedSlots (\n fns, // see flow/vnode\n res\n) {\n res = res || {};\n for (var i = 0; i < fns.length; i++) {\n if (Array.isArray(fns[i])) {\n resolveScopedSlots(fns[i], res);\n } else {\n res[fns[i].key] = fns[i].fn;\n }\n }\n return res\n}\n\n/* */\n\nvar activeInstance = null;\nvar isUpdatingChildComponent = false;\n\nfunction initLifecycle (vm) {\n var options = vm.$options;\n\n // locate first non-abstract parent\n var parent = options.parent;\n if (parent && !options.abstract) {\n while (parent.$options.abstract && parent.$parent) {\n parent = parent.$parent;\n }\n parent.$children.push(vm);\n }\n\n vm.$parent = parent;\n vm.$root = parent ? parent.$root : vm;\n\n vm.$children = [];\n vm.$refs = {};\n\n vm._watcher = null;\n vm._inactive = null;\n vm._directInactive = false;\n vm._isMounted = false;\n vm._isDestroyed = false;\n vm._isBeingDestroyed = false;\n}\n\nfunction lifecycleMixin (Vue) {\n Vue.prototype._update = function (vnode, hydrating) {\n var vm = this;\n if (vm._isMounted) {\n callHook(vm, 'beforeUpdate');\n }\n var prevEl = vm.$el;\n var prevVnode = vm._vnode;\n var prevActiveInstance = activeInstance;\n activeInstance = vm;\n vm._vnode = vnode;\n // Vue.prototype.__patch__ is injected in entry points\n // based on the rendering backend used.\n if (!prevVnode) {\n // initial render\n vm.$el = vm.__patch__(\n vm.$el, vnode, hydrating, false /* removeOnly */,\n vm.$options._parentElm,\n vm.$options._refElm\n );\n // no need for the ref nodes after initial patch\n // this prevents keeping a detached DOM tree in memory (#5851)\n vm.$options._parentElm = vm.$options._refElm = null;\n } else {\n // updates\n vm.$el = vm.__patch__(prevVnode, vnode);\n }\n activeInstance = prevActiveInstance;\n // update __vue__ reference\n if (prevEl) {\n prevEl.__vue__ = null;\n }\n if (vm.$el) {\n vm.$el.__vue__ = vm;\n }\n // if parent is an HOC, update its $el as well\n if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {\n vm.$parent.$el = vm.$el;\n }\n // updated hook is called by the scheduler to ensure that children are\n // updated in a parent's updated hook.\n };\n\n Vue.prototype.$forceUpdate = function () {\n var vm = this;\n if (vm._watcher) {\n vm._watcher.update();\n }\n };\n\n Vue.prototype.$destroy = function () {\n var vm = this;\n if (vm._isBeingDestroyed) {\n return\n }\n callHook(vm, 'beforeDestroy');\n vm._isBeingDestroyed = true;\n // remove self from parent\n var parent = vm.$parent;\n if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {\n remove(parent.$children, vm);\n }\n // teardown watchers\n if (vm._watcher) {\n vm._watcher.teardown();\n }\n var i = vm._watchers.length;\n while (i--) {\n vm._watchers[i].teardown();\n }\n // remove reference from data ob\n // frozen object may not have observer.\n if (vm._data.__ob__) {\n vm._data.__ob__.vmCount--;\n }\n // call the last hook...\n vm._isDestroyed = true;\n // invoke destroy hooks on current rendered tree\n vm.__patch__(vm._vnode, null);\n // fire destroyed hook\n callHook(vm, 'destroyed');\n // turn off all instance listeners.\n vm.$off();\n // remove __vue__ reference\n if (vm.$el) {\n vm.$el.__vue__ = null;\n }\n // release circular reference (#6759)\n if (vm.$vnode) {\n vm.$vnode.parent = null;\n }\n };\n}\n\nfunction mountComponent (\n vm,\n el,\n hydrating\n) {\n vm.$el = el;\n if (!vm.$options.render) {\n vm.$options.render = createEmptyVNode;\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if ((vm.$options.template && vm.$options.template.charAt(0) !== '#') ||\n vm.$options.el || el) {\n warn(\n 'You are using the runtime-only build of Vue where the template ' +\n 'compiler is not available. Either pre-compile the templates into ' +\n 'render functions, or use the compiler-included build.',\n vm\n );\n } else {\n warn(\n 'Failed to mount component: template or render function not defined.',\n vm\n );\n }\n }\n }\n callHook(vm, 'beforeMount');\n\n var updateComponent;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n updateComponent = function () {\n var name = vm._name;\n var id = vm._uid;\n var startTag = \"vue-perf-start:\" + id;\n var endTag = \"vue-perf-end:\" + id;\n\n mark(startTag);\n var vnode = vm._render();\n mark(endTag);\n measure((\"vue \" + name + \" render\"), startTag, endTag);\n\n mark(startTag);\n vm._update(vnode, hydrating);\n mark(endTag);\n measure((\"vue \" + name + \" patch\"), startTag, endTag);\n };\n } else {\n updateComponent = function () {\n vm._update(vm._render(), hydrating);\n };\n }\n\n // we set this to vm._watcher inside the watcher's constructor\n // since the watcher's initial patch may call $forceUpdate (e.g. inside child\n // component's mounted hook), which relies on vm._watcher being already defined\n new Watcher(vm, updateComponent, noop, null, true /* isRenderWatcher */);\n hydrating = false;\n\n // manually mounted instance, call mounted on self\n // mounted is called for render-created child components in its inserted hook\n if (vm.$vnode == null) {\n vm._isMounted = true;\n callHook(vm, 'mounted');\n }\n return vm\n}\n\nfunction updateChildComponent (\n vm,\n propsData,\n listeners,\n parentVnode,\n renderChildren\n) {\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = true;\n }\n\n // determine whether component has slot children\n // we need to do this before overwriting $options._renderChildren\n var hasChildren = !!(\n renderChildren || // has new static slots\n vm.$options._renderChildren || // has old static slots\n parentVnode.data.scopedSlots || // has new scoped slots\n vm.$scopedSlots !== emptyObject // has old scoped slots\n );\n\n vm.$options._parentVnode = parentVnode;\n vm.$vnode = parentVnode; // update vm's placeholder node without re-render\n\n if (vm._vnode) { // update child tree's parent\n vm._vnode.parent = parentVnode;\n }\n vm.$options._renderChildren = renderChildren;\n\n // update $attrs and $listeners hash\n // these are also reactive so they may trigger child update if the child\n // used them during render\n vm.$attrs = parentVnode.data.attrs || emptyObject;\n vm.$listeners = listeners || emptyObject;\n\n // update props\n if (propsData && vm.$options.props) {\n toggleObserving(false);\n var props = vm._props;\n var propKeys = vm.$options._propKeys || [];\n for (var i = 0; i < propKeys.length; i++) {\n var key = propKeys[i];\n var propOptions = vm.$options.props; // wtf flow?\n props[key] = validateProp(key, propOptions, propsData, vm);\n }\n toggleObserving(true);\n // keep a copy of raw propsData\n vm.$options.propsData = propsData;\n }\n\n // update listeners\n listeners = listeners || emptyObject;\n var oldListeners = vm.$options._parentListeners;\n vm.$options._parentListeners = listeners;\n updateComponentListeners(vm, listeners, oldListeners);\n\n // resolve slots + force update if has children\n if (hasChildren) {\n vm.$slots = resolveSlots(renderChildren, parentVnode.context);\n vm.$forceUpdate();\n }\n\n if (process.env.NODE_ENV !== 'production') {\n isUpdatingChildComponent = false;\n }\n}\n\nfunction isInInactiveTree (vm) {\n while (vm && (vm = vm.$parent)) {\n if (vm._inactive) { return true }\n }\n return false\n}\n\nfunction activateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = false;\n if (isInInactiveTree(vm)) {\n return\n }\n } else if (vm._directInactive) {\n return\n }\n if (vm._inactive || vm._inactive === null) {\n vm._inactive = false;\n for (var i = 0; i < vm.$children.length; i++) {\n activateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'activated');\n }\n}\n\nfunction deactivateChildComponent (vm, direct) {\n if (direct) {\n vm._directInactive = true;\n if (isInInactiveTree(vm)) {\n return\n }\n }\n if (!vm._inactive) {\n vm._inactive = true;\n for (var i = 0; i < vm.$children.length; i++) {\n deactivateChildComponent(vm.$children[i]);\n }\n callHook(vm, 'deactivated');\n }\n}\n\nfunction callHook (vm, hook) {\n // #7573 disable dep collection when invoking lifecycle hooks\n pushTarget();\n var handlers = vm.$options[hook];\n if (handlers) {\n for (var i = 0, j = handlers.length; i < j; i++) {\n try {\n handlers[i].call(vm);\n } catch (e) {\n handleError(e, vm, (hook + \" hook\"));\n }\n }\n }\n if (vm._hasHookEvent) {\n vm.$emit('hook:' + hook);\n }\n popTarget();\n}\n\n/* */\n\n\nvar MAX_UPDATE_COUNT = 100;\n\nvar queue = [];\nvar activatedChildren = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\nvar flushing = false;\nvar index = 0;\n\n/**\n * Reset the scheduler's state.\n */\nfunction resetSchedulerState () {\n index = queue.length = activatedChildren.length = 0;\n has = {};\n if (process.env.NODE_ENV !== 'production') {\n circular = {};\n }\n waiting = flushing = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\nfunction flushSchedulerQueue () {\n flushing = true;\n var watcher, id;\n\n // Sort queue before flush.\n // This ensures that:\n // 1. Components are updated from parent to child. (because parent is always\n // created before the child)\n // 2. A component's user watchers are run before its render watcher (because\n // user watchers are created before the render watcher)\n // 3. If a component is destroyed during a parent component's watcher run,\n // its watchers can be skipped.\n queue.sort(function (a, b) { return a.id - b.id; });\n\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (index = 0; index < queue.length; index++) {\n watcher = queue[index];\n id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > MAX_UPDATE_COUNT) {\n warn(\n 'You may have an infinite update loop ' + (\n watcher.user\n ? (\"in watcher with expression \\\"\" + (watcher.expression) + \"\\\"\")\n : \"in a component render function.\"\n ),\n watcher.vm\n );\n break\n }\n }\n }\n\n // keep copies of post queues before resetting state\n var activatedQueue = activatedChildren.slice();\n var updatedQueue = queue.slice();\n\n resetSchedulerState();\n\n // call component updated and activated hooks\n callActivatedHooks(activatedQueue);\n callUpdatedHooks(updatedQueue);\n\n // devtool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n}\n\nfunction callUpdatedHooks (queue) {\n var i = queue.length;\n while (i--) {\n var watcher = queue[i];\n var vm = watcher.vm;\n if (vm._watcher === watcher && vm._isMounted) {\n callHook(vm, 'updated');\n }\n }\n}\n\n/**\n * Queue a kept-alive component that was activated during patch.\n * The queue will be processed after the entire tree has been patched.\n */\nfunction queueActivatedComponent (vm) {\n // setting _inactive to false here so that a render function can\n // rely on checking whether it's in an inactive tree (e.g. router-view)\n vm._inactive = false;\n activatedChildren.push(vm);\n}\n\nfunction callActivatedHooks (queue) {\n for (var i = 0; i < queue.length; i++) {\n queue[i]._inactive = true;\n activateChildComponent(queue[i], true /* true */);\n }\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n */\nfunction queueWatcher (watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n has[id] = true;\n if (!flushing) {\n queue.push(watcher);\n } else {\n // if already flushing, splice the watcher based on its id\n // if already past its id, it will be run next immediately.\n var i = queue.length - 1;\n while (i > index && queue[i].id > watcher.id) {\n i--;\n }\n queue.splice(i + 1, 0, watcher);\n }\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushSchedulerQueue);\n }\n }\n}\n\n/* */\n\nvar uid$1 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n */\nvar Watcher = function Watcher (\n vm,\n expOrFn,\n cb,\n options,\n isRenderWatcher\n) {\n this.vm = vm;\n if (isRenderWatcher) {\n vm._watcher = this;\n }\n vm._watchers.push(this);\n // options\n if (options) {\n this.deep = !!options.deep;\n this.user = !!options.user;\n this.lazy = !!options.lazy;\n this.sync = !!options.sync;\n } else {\n this.deep = this.user = this.lazy = this.sync = false;\n }\n this.cb = cb;\n this.id = ++uid$1; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.expression = process.env.NODE_ENV !== 'production'\n ? expOrFn.toString()\n : '';\n // parse expression for getter\n if (typeof expOrFn === 'function') {\n this.getter = expOrFn;\n } else {\n this.getter = parsePath(expOrFn);\n if (!this.getter) {\n this.getter = function () {};\n process.env.NODE_ENV !== 'production' && warn(\n \"Failed watching path: \\\"\" + expOrFn + \"\\\" \" +\n 'Watcher only accepts simple dot-delimited paths. ' +\n 'For full control, use a function instead.',\n vm\n );\n }\n }\n this.value = this.lazy\n ? undefined\n : this.get();\n};\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\nWatcher.prototype.get = function get () {\n pushTarget(this);\n var value;\n var vm = this.vm;\n try {\n value = this.getter.call(vm, vm);\n } catch (e) {\n if (this.user) {\n handleError(e, vm, (\"getter for watcher \\\"\" + (this.expression) + \"\\\"\"));\n } else {\n throw e\n }\n } finally {\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n popTarget();\n this.cleanupDeps();\n }\n return value\n};\n\n/**\n * Add a dependency to this directive.\n */\nWatcher.prototype.addDep = function addDep (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\nWatcher.prototype.cleanupDeps = function cleanupDeps () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n var dep = this$1.deps[i];\n if (!this$1.newDepIds.has(dep.id)) {\n dep.removeSub(this$1);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n */\nWatcher.prototype.update = function update () {\n /* istanbul ignore else */\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync) {\n this.run();\n } else {\n queueWatcher(this);\n }\n};\n\n/**\n * Scheduler job interface.\n * Will be called by the scheduler.\n */\nWatcher.prototype.run = function run () {\n if (this.active) {\n var value = this.get();\n if (\n value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated.\n isObject(value) ||\n this.deep\n ) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n if (this.user) {\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n handleError(e, this.vm, (\"callback for watcher \\\"\" + (this.expression) + \"\\\"\"));\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\nWatcher.prototype.evaluate = function evaluate () {\n this.value = this.get();\n this.dirty = false;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\nWatcher.prototype.depend = function depend () {\n var this$1 = this;\n\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subscriber list.\n */\nWatcher.prototype.teardown = function teardown () {\n var this$1 = this;\n\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed.\n if (!this.vm._isBeingDestroyed) {\n remove(this.vm._watchers, this);\n }\n var i = this.deps.length;\n while (i--) {\n this$1.deps[i].removeSub(this$1);\n }\n this.active = false;\n }\n};\n\n/* */\n\nvar sharedPropertyDefinition = {\n enumerable: true,\n configurable: true,\n get: noop,\n set: noop\n};\n\nfunction proxy (target, sourceKey, key) {\n sharedPropertyDefinition.get = function proxyGetter () {\n return this[sourceKey][key]\n };\n sharedPropertyDefinition.set = function proxySetter (val) {\n this[sourceKey][key] = val;\n };\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction initState (vm) {\n vm._watchers = [];\n var opts = vm.$options;\n if (opts.props) { initProps(vm, opts.props); }\n if (opts.methods) { initMethods(vm, opts.methods); }\n if (opts.data) {\n initData(vm);\n } else {\n observe(vm._data = {}, true /* asRootData */);\n }\n if (opts.computed) { initComputed(vm, opts.computed); }\n if (opts.watch && opts.watch !== nativeWatch) {\n initWatch(vm, opts.watch);\n }\n}\n\nfunction initProps (vm, propsOptions) {\n var propsData = vm.$options.propsData || {};\n var props = vm._props = {};\n // cache prop keys so that future props updates can iterate using Array\n // instead of dynamic object key enumeration.\n var keys = vm.$options._propKeys = [];\n var isRoot = !vm.$parent;\n // root instance props should be converted\n if (!isRoot) {\n toggleObserving(false);\n }\n var loop = function ( key ) {\n keys.push(key);\n var value = validateProp(key, propsOptions, propsData, vm);\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n var hyphenatedKey = hyphenate(key);\n if (isReservedAttribute(hyphenatedKey) ||\n config.isReservedAttr(hyphenatedKey)) {\n warn(\n (\"\\\"\" + hyphenatedKey + \"\\\" is a reserved attribute and cannot be used as component prop.\"),\n vm\n );\n }\n defineReactive(props, key, value, function () {\n if (vm.$parent && !isUpdatingChildComponent) {\n warn(\n \"Avoid mutating a prop directly since the value will be \" +\n \"overwritten whenever the parent component re-renders. \" +\n \"Instead, use a data or computed property based on the prop's \" +\n \"value. Prop being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n }\n });\n } else {\n defineReactive(props, key, value);\n }\n // static props are already proxied on the component's prototype\n // during Vue.extend(). We only need to proxy props defined at\n // instantiation here.\n if (!(key in vm)) {\n proxy(vm, \"_props\", key);\n }\n };\n\n for (var key in propsOptions) loop( key );\n toggleObserving(true);\n}\n\nfunction initData (vm) {\n var data = vm.$options.data;\n data = vm._data = typeof data === 'function'\n ? getData(data, vm)\n : data || {};\n if (!isPlainObject(data)) {\n data = {};\n process.env.NODE_ENV !== 'production' && warn(\n 'data functions should return an object:\\n' +\n 'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',\n vm\n );\n }\n // proxy data on instance\n var keys = Object.keys(data);\n var props = vm.$options.props;\n var methods = vm.$options.methods;\n var i = keys.length;\n while (i--) {\n var key = keys[i];\n if (process.env.NODE_ENV !== 'production') {\n if (methods && hasOwn(methods, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a data property.\"),\n vm\n );\n }\n }\n if (props && hasOwn(props, key)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"The data property \\\"\" + key + \"\\\" is already declared as a prop. \" +\n \"Use prop default value instead.\",\n vm\n );\n } else if (!isReserved(key)) {\n proxy(vm, \"_data\", key);\n }\n }\n // observe data\n observe(data, true /* asRootData */);\n}\n\nfunction getData (data, vm) {\n // #7573 disable dep collection when invoking data getters\n pushTarget();\n try {\n return data.call(vm, vm)\n } catch (e) {\n handleError(e, vm, \"data()\");\n return {}\n } finally {\n popTarget();\n }\n}\n\nvar computedWatcherOptions = { lazy: true };\n\nfunction initComputed (vm, computed) {\n // $flow-disable-line\n var watchers = vm._computedWatchers = Object.create(null);\n // computed properties are just getters during SSR\n var isSSR = isServerRendering();\n\n for (var key in computed) {\n var userDef = computed[key];\n var getter = typeof userDef === 'function' ? userDef : userDef.get;\n if (process.env.NODE_ENV !== 'production' && getter == null) {\n warn(\n (\"Getter is missing for computed property \\\"\" + key + \"\\\".\"),\n vm\n );\n }\n\n if (!isSSR) {\n // create internal watcher for the computed property.\n watchers[key] = new Watcher(\n vm,\n getter || noop,\n noop,\n computedWatcherOptions\n );\n }\n\n // component-defined computed properties are already defined on the\n // component prototype. We only need to define computed properties defined\n // at instantiation here.\n if (!(key in vm)) {\n defineComputed(vm, key, userDef);\n } else if (process.env.NODE_ENV !== 'production') {\n if (key in vm.$data) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined in data.\"), vm);\n } else if (vm.$options.props && key in vm.$options.props) {\n warn((\"The computed property \\\"\" + key + \"\\\" is already defined as a prop.\"), vm);\n }\n }\n }\n}\n\nfunction defineComputed (\n target,\n key,\n userDef\n) {\n var shouldCache = !isServerRendering();\n if (typeof userDef === 'function') {\n sharedPropertyDefinition.get = shouldCache\n ? createComputedGetter(key)\n : userDef;\n sharedPropertyDefinition.set = noop;\n } else {\n sharedPropertyDefinition.get = userDef.get\n ? shouldCache && userDef.cache !== false\n ? createComputedGetter(key)\n : userDef.get\n : noop;\n sharedPropertyDefinition.set = userDef.set\n ? userDef.set\n : noop;\n }\n if (process.env.NODE_ENV !== 'production' &&\n sharedPropertyDefinition.set === noop) {\n sharedPropertyDefinition.set = function () {\n warn(\n (\"Computed property \\\"\" + key + \"\\\" was assigned to but it has no setter.\"),\n this\n );\n };\n }\n Object.defineProperty(target, key, sharedPropertyDefinition);\n}\n\nfunction createComputedGetter (key) {\n return function computedGetter () {\n var watcher = this._computedWatchers && this._computedWatchers[key];\n if (watcher) {\n if (watcher.dirty) {\n watcher.evaluate();\n }\n if (Dep.target) {\n watcher.depend();\n }\n return watcher.value\n }\n }\n}\n\nfunction initMethods (vm, methods) {\n var props = vm.$options.props;\n for (var key in methods) {\n if (process.env.NODE_ENV !== 'production') {\n if (methods[key] == null) {\n warn(\n \"Method \\\"\" + key + \"\\\" has an undefined value in the component definition. \" +\n \"Did you reference the function correctly?\",\n vm\n );\n }\n if (props && hasOwn(props, key)) {\n warn(\n (\"Method \\\"\" + key + \"\\\" has already been defined as a prop.\"),\n vm\n );\n }\n if ((key in vm) && isReserved(key)) {\n warn(\n \"Method \\\"\" + key + \"\\\" conflicts with an existing Vue instance method. \" +\n \"Avoid defining component methods that start with _ or $.\"\n );\n }\n }\n vm[key] = methods[key] == null ? noop : bind(methods[key], vm);\n }\n}\n\nfunction initWatch (vm, watch) {\n for (var key in watch) {\n var handler = watch[key];\n if (Array.isArray(handler)) {\n for (var i = 0; i < handler.length; i++) {\n createWatcher(vm, key, handler[i]);\n }\n } else {\n createWatcher(vm, key, handler);\n }\n }\n}\n\nfunction createWatcher (\n vm,\n expOrFn,\n handler,\n options\n) {\n if (isPlainObject(handler)) {\n options = handler;\n handler = handler.handler;\n }\n if (typeof handler === 'string') {\n handler = vm[handler];\n }\n return vm.$watch(expOrFn, handler, options)\n}\n\nfunction stateMixin (Vue) {\n // flow somehow has problems with directly declared definition object\n // when using Object.defineProperty, so we have to procedurally build up\n // the object here.\n var dataDef = {};\n dataDef.get = function () { return this._data };\n var propsDef = {};\n propsDef.get = function () { return this._props };\n if (process.env.NODE_ENV !== 'production') {\n dataDef.set = function (newData) {\n warn(\n 'Avoid replacing instance root $data. ' +\n 'Use nested data properties instead.',\n this\n );\n };\n propsDef.set = function () {\n warn(\"$props is readonly.\", this);\n };\n }\n Object.defineProperty(Vue.prototype, '$data', dataDef);\n Object.defineProperty(Vue.prototype, '$props', propsDef);\n\n Vue.prototype.$set = set;\n Vue.prototype.$delete = del;\n\n Vue.prototype.$watch = function (\n expOrFn,\n cb,\n options\n ) {\n var vm = this;\n if (isPlainObject(cb)) {\n return createWatcher(vm, expOrFn, cb, options)\n }\n options = options || {};\n options.user = true;\n var watcher = new Watcher(vm, expOrFn, cb, options);\n if (options.immediate) {\n cb.call(vm, watcher.value);\n }\n return function unwatchFn () {\n watcher.teardown();\n }\n };\n}\n\n/* */\n\nfunction initProvide (vm) {\n var provide = vm.$options.provide;\n if (provide) {\n vm._provided = typeof provide === 'function'\n ? provide.call(vm)\n : provide;\n }\n}\n\nfunction initInjections (vm) {\n var result = resolveInject(vm.$options.inject, vm);\n if (result) {\n toggleObserving(false);\n Object.keys(result).forEach(function (key) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, key, result[key], function () {\n warn(\n \"Avoid mutating an injected value directly since the changes will be \" +\n \"overwritten whenever the provided component re-renders. \" +\n \"injection being mutated: \\\"\" + key + \"\\\"\",\n vm\n );\n });\n } else {\n defineReactive(vm, key, result[key]);\n }\n });\n toggleObserving(true);\n }\n}\n\nfunction resolveInject (inject, vm) {\n if (inject) {\n // inject is :any because flow is not smart enough to figure out cached\n var result = Object.create(null);\n var keys = hasSymbol\n ? Reflect.ownKeys(inject).filter(function (key) {\n /* istanbul ignore next */\n return Object.getOwnPropertyDescriptor(inject, key).enumerable\n })\n : Object.keys(inject);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var provideKey = inject[key].from;\n var source = vm;\n while (source) {\n if (source._provided && hasOwn(source._provided, provideKey)) {\n result[key] = source._provided[provideKey];\n break\n }\n source = source.$parent;\n }\n if (!source) {\n if ('default' in inject[key]) {\n var provideDefault = inject[key].default;\n result[key] = typeof provideDefault === 'function'\n ? provideDefault.call(vm)\n : provideDefault;\n } else if (process.env.NODE_ENV !== 'production') {\n warn((\"Injection \\\"\" + key + \"\\\" not found\"), vm);\n }\n }\n }\n return result\n }\n}\n\n/* */\n\n/**\n * Runtime helper for rendering v-for lists.\n */\nfunction renderList (\n val,\n render\n) {\n var ret, i, l, keys, key;\n if (Array.isArray(val) || typeof val === 'string') {\n ret = new Array(val.length);\n for (i = 0, l = val.length; i < l; i++) {\n ret[i] = render(val[i], i);\n }\n } else if (typeof val === 'number') {\n ret = new Array(val);\n for (i = 0; i < val; i++) {\n ret[i] = render(i + 1, i);\n }\n } else if (isObject(val)) {\n keys = Object.keys(val);\n ret = new Array(keys.length);\n for (i = 0, l = keys.length; i < l; i++) {\n key = keys[i];\n ret[i] = render(val[key], key, i);\n }\n }\n if (isDef(ret)) {\n (ret)._isVList = true;\n }\n return ret\n}\n\n/* */\n\n/**\n * Runtime helper for rendering <slot>\n */\nfunction renderSlot (\n name,\n fallback,\n props,\n bindObject\n) {\n var scopedSlotFn = this.$scopedSlots[name];\n var nodes;\n if (scopedSlotFn) { // scoped slot\n props = props || {};\n if (bindObject) {\n if (process.env.NODE_ENV !== 'production' && !isObject(bindObject)) {\n warn(\n 'slot v-bind without argument expects an Object',\n this\n );\n }\n props = extend(extend({}, bindObject), props);\n }\n nodes = scopedSlotFn(props) || fallback;\n } else {\n var slotNodes = this.$slots[name];\n // warn duplicate slot usage\n if (slotNodes) {\n if (process.env.NODE_ENV !== 'production' && slotNodes._rendered) {\n warn(\n \"Duplicate presence of slot \\\"\" + name + \"\\\" found in the same render tree \" +\n \"- this will likely cause render errors.\",\n this\n );\n }\n slotNodes._rendered = true;\n }\n nodes = slotNodes || fallback;\n }\n\n var target = props && props.slot;\n if (target) {\n return this.$createElement('template', { slot: target }, nodes)\n } else {\n return nodes\n }\n}\n\n/* */\n\n/**\n * Runtime helper for resolving filters\n */\nfunction resolveFilter (id) {\n return resolveAsset(this.$options, 'filters', id, true) || identity\n}\n\n/* */\n\nfunction isKeyNotMatch (expect, actual) {\n if (Array.isArray(expect)) {\n return expect.indexOf(actual) === -1\n } else {\n return expect !== actual\n }\n}\n\n/**\n * Runtime helper for checking keyCodes from config.\n * exposed as Vue.prototype._k\n * passing in eventKeyName as last argument separately for backwards compat\n */\nfunction checkKeyCodes (\n eventKeyCode,\n key,\n builtInKeyCode,\n eventKeyName,\n builtInKeyName\n) {\n var mappedKeyCode = config.keyCodes[key] || builtInKeyCode;\n if (builtInKeyName && eventKeyName && !config.keyCodes[key]) {\n return isKeyNotMatch(builtInKeyName, eventKeyName)\n } else if (mappedKeyCode) {\n return isKeyNotMatch(mappedKeyCode, eventKeyCode)\n } else if (eventKeyName) {\n return hyphenate(eventKeyName) !== key\n }\n}\n\n/* */\n\n/**\n * Runtime helper for merging v-bind=\"object\" into a VNode's data.\n */\nfunction bindObjectProps (\n data,\n tag,\n value,\n asProp,\n isSync\n) {\n if (value) {\n if (!isObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-bind without argument expects an Object or Array value',\n this\n );\n } else {\n if (Array.isArray(value)) {\n value = toObject(value);\n }\n var hash;\n var loop = function ( key ) {\n if (\n key === 'class' ||\n key === 'style' ||\n isReservedAttribute(key)\n ) {\n hash = data;\n } else {\n var type = data.attrs && data.attrs.type;\n hash = asProp || config.mustUseProp(tag, type, key)\n ? data.domProps || (data.domProps = {})\n : data.attrs || (data.attrs = {});\n }\n if (!(key in hash)) {\n hash[key] = value[key];\n\n if (isSync) {\n var on = data.on || (data.on = {});\n on[(\"update:\" + key)] = function ($event) {\n value[key] = $event;\n };\n }\n }\n };\n\n for (var key in value) loop( key );\n }\n }\n return data\n}\n\n/* */\n\n/**\n * Runtime helper for rendering static trees.\n */\nfunction renderStatic (\n index,\n isInFor\n) {\n var cached = this._staticTrees || (this._staticTrees = []);\n var tree = cached[index];\n // if has already-rendered static tree and not inside v-for,\n // we can reuse the same tree.\n if (tree && !isInFor) {\n return tree\n }\n // otherwise, render a fresh tree.\n tree = cached[index] = this.$options.staticRenderFns[index].call(\n this._renderProxy,\n null,\n this // for render fns generated for functional component templates\n );\n markStatic(tree, (\"__static__\" + index), false);\n return tree\n}\n\n/**\n * Runtime helper for v-once.\n * Effectively it means marking the node as static with a unique key.\n */\nfunction markOnce (\n tree,\n index,\n key\n) {\n markStatic(tree, (\"__once__\" + index + (key ? (\"_\" + key) : \"\")), true);\n return tree\n}\n\nfunction markStatic (\n tree,\n key,\n isOnce\n) {\n if (Array.isArray(tree)) {\n for (var i = 0; i < tree.length; i++) {\n if (tree[i] && typeof tree[i] !== 'string') {\n markStaticNode(tree[i], (key + \"_\" + i), isOnce);\n }\n }\n } else {\n markStaticNode(tree, key, isOnce);\n }\n}\n\nfunction markStaticNode (node, key, isOnce) {\n node.isStatic = true;\n node.key = key;\n node.isOnce = isOnce;\n}\n\n/* */\n\nfunction bindObjectListeners (data, value) {\n if (value) {\n if (!isPlainObject(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n 'v-on without argument expects an Object value',\n this\n );\n } else {\n var on = data.on = data.on ? extend({}, data.on) : {};\n for (var key in value) {\n var existing = on[key];\n var ours = value[key];\n on[key] = existing ? [].concat(existing, ours) : ours;\n }\n }\n }\n return data\n}\n\n/* */\n\nfunction installRenderHelpers (target) {\n target._o = markOnce;\n target._n = toNumber;\n target._s = toString;\n target._l = renderList;\n target._t = renderSlot;\n target._q = looseEqual;\n target._i = looseIndexOf;\n target._m = renderStatic;\n target._f = resolveFilter;\n target._k = checkKeyCodes;\n target._b = bindObjectProps;\n target._v = createTextVNode;\n target._e = createEmptyVNode;\n target._u = resolveScopedSlots;\n target._g = bindObjectListeners;\n}\n\n/* */\n\nfunction FunctionalRenderContext (\n data,\n props,\n children,\n parent,\n Ctor\n) {\n var options = Ctor.options;\n // ensure the createElement function in functional components\n // gets a unique context - this is necessary for correct named slot check\n var contextVm;\n if (hasOwn(parent, '_uid')) {\n contextVm = Object.create(parent);\n // $flow-disable-line\n contextVm._original = parent;\n } else {\n // the context vm passed in is a functional context as well.\n // in this case we want to make sure we are able to get a hold to the\n // real context instance.\n contextVm = parent;\n // $flow-disable-line\n parent = parent._original;\n }\n var isCompiled = isTrue(options._compiled);\n var needNormalization = !isCompiled;\n\n this.data = data;\n this.props = props;\n this.children = children;\n this.parent = parent;\n this.listeners = data.on || emptyObject;\n this.injections = resolveInject(options.inject, parent);\n this.slots = function () { return resolveSlots(children, parent); };\n\n // support for compiled functional template\n if (isCompiled) {\n // exposing $options for renderStatic()\n this.$options = options;\n // pre-resolve slots for renderSlot()\n this.$slots = this.slots();\n this.$scopedSlots = data.scopedSlots || emptyObject;\n }\n\n if (options._scopeId) {\n this._c = function (a, b, c, d) {\n var vnode = createElement(contextVm, a, b, c, d, needNormalization);\n if (vnode && !Array.isArray(vnode)) {\n vnode.fnScopeId = options._scopeId;\n vnode.fnContext = parent;\n }\n return vnode\n };\n } else {\n this._c = function (a, b, c, d) { return createElement(contextVm, a, b, c, d, needNormalization); };\n }\n}\n\ninstallRenderHelpers(FunctionalRenderContext.prototype);\n\nfunction createFunctionalComponent (\n Ctor,\n propsData,\n data,\n contextVm,\n children\n) {\n var options = Ctor.options;\n var props = {};\n var propOptions = options.props;\n if (isDef(propOptions)) {\n for (var key in propOptions) {\n props[key] = validateProp(key, propOptions, propsData || emptyObject);\n }\n } else {\n if (isDef(data.attrs)) { mergeProps(props, data.attrs); }\n if (isDef(data.props)) { mergeProps(props, data.props); }\n }\n\n var renderContext = new FunctionalRenderContext(\n data,\n props,\n children,\n contextVm,\n Ctor\n );\n\n var vnode = options.render.call(null, renderContext._c, renderContext);\n\n if (vnode instanceof VNode) {\n return cloneAndMarkFunctionalResult(vnode, data, renderContext.parent, options)\n } else if (Array.isArray(vnode)) {\n var vnodes = normalizeChildren(vnode) || [];\n var res = new Array(vnodes.length);\n for (var i = 0; i < vnodes.length; i++) {\n res[i] = cloneAndMarkFunctionalResult(vnodes[i], data, renderContext.parent, options);\n }\n return res\n }\n}\n\nfunction cloneAndMarkFunctionalResult (vnode, data, contextVm, options) {\n // #7817 clone node before setting fnContext, otherwise if the node is reused\n // (e.g. it was from a cached normal slot) the fnContext causes named slots\n // that should not be matched to match.\n var clone = cloneVNode(vnode);\n clone.fnContext = contextVm;\n clone.fnOptions = options;\n if (data.slot) {\n (clone.data || (clone.data = {})).slot = data.slot;\n }\n return clone\n}\n\nfunction mergeProps (to, from) {\n for (var key in from) {\n to[camelize(key)] = from[key];\n }\n}\n\n/* */\n\n\n\n\n// Register the component hook to weex native render engine.\n// The hook will be triggered by native, not javascript.\n\n\n// Updates the state of the component to weex native render engine.\n\n/* */\n\n// https://github.com/Hanks10100/weex-native-directive/tree/master/component\n\n// listening on native callback\n\n/* */\n\n/* */\n\n// inline hooks to be invoked on component VNodes during patch\nvar componentVNodeHooks = {\n init: function init (\n vnode,\n hydrating,\n parentElm,\n refElm\n ) {\n if (\n vnode.componentInstance &&\n !vnode.componentInstance._isDestroyed &&\n vnode.data.keepAlive\n ) {\n // kept-alive components, treat as a patch\n var mountedNode = vnode; // work around flow\n componentVNodeHooks.prepatch(mountedNode, mountedNode);\n } else {\n var child = vnode.componentInstance = createComponentInstanceForVnode(\n vnode,\n activeInstance,\n parentElm,\n refElm\n );\n child.$mount(hydrating ? vnode.elm : undefined, hydrating);\n }\n },\n\n prepatch: function prepatch (oldVnode, vnode) {\n var options = vnode.componentOptions;\n var child = vnode.componentInstance = oldVnode.componentInstance;\n updateChildComponent(\n child,\n options.propsData, // updated props\n options.listeners, // updated listeners\n vnode, // new parent vnode\n options.children // new children\n );\n },\n\n insert: function insert (vnode) {\n var context = vnode.context;\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isMounted) {\n componentInstance._isMounted = true;\n callHook(componentInstance, 'mounted');\n }\n if (vnode.data.keepAlive) {\n if (context._isMounted) {\n // vue-router#1212\n // During updates, a kept-alive component's child components may\n // change, so directly walking the tree here may call activated hooks\n // on incorrect children. Instead we push them into a queue which will\n // be processed after the whole patch process ended.\n queueActivatedComponent(componentInstance);\n } else {\n activateChildComponent(componentInstance, true /* direct */);\n }\n }\n },\n\n destroy: function destroy (vnode) {\n var componentInstance = vnode.componentInstance;\n if (!componentInstance._isDestroyed) {\n if (!vnode.data.keepAlive) {\n componentInstance.$destroy();\n } else {\n deactivateChildComponent(componentInstance, true /* direct */);\n }\n }\n }\n};\n\nvar hooksToMerge = Object.keys(componentVNodeHooks);\n\nfunction createComponent (\n Ctor,\n data,\n context,\n children,\n tag\n) {\n if (isUndef(Ctor)) {\n return\n }\n\n var baseCtor = context.$options._base;\n\n // plain options object: turn it into a constructor\n if (isObject(Ctor)) {\n Ctor = baseCtor.extend(Ctor);\n }\n\n // if at this stage it's not a constructor or an async component factory,\n // reject.\n if (typeof Ctor !== 'function') {\n if (process.env.NODE_ENV !== 'production') {\n warn((\"Invalid Component definition: \" + (String(Ctor))), context);\n }\n return\n }\n\n // async component\n var asyncFactory;\n if (isUndef(Ctor.cid)) {\n asyncFactory = Ctor;\n Ctor = resolveAsyncComponent(asyncFactory, baseCtor, context);\n if (Ctor === undefined) {\n // return a placeholder node for async component, which is rendered\n // as a comment node but preserves all the raw information for the node.\n // the information will be used for async server-rendering and hydration.\n return createAsyncPlaceholder(\n asyncFactory,\n data,\n context,\n children,\n tag\n )\n }\n }\n\n data = data || {};\n\n // resolve constructor options in case global mixins are applied after\n // component constructor creation\n resolveConstructorOptions(Ctor);\n\n // transform component v-model data into props & events\n if (isDef(data.model)) {\n transformModel(Ctor.options, data);\n }\n\n // extract props\n var propsData = extractPropsFromVNodeData(data, Ctor, tag);\n\n // functional component\n if (isTrue(Ctor.options.functional)) {\n return createFunctionalComponent(Ctor, propsData, data, context, children)\n }\n\n // extract listeners, since these needs to be treated as\n // child component listeners instead of DOM listeners\n var listeners = data.on;\n // replace with listeners with .native modifier\n // so it gets processed during parent component patch.\n data.on = data.nativeOn;\n\n if (isTrue(Ctor.options.abstract)) {\n // abstract components do not keep anything\n // other than props & listeners & slot\n\n // work around flow\n var slot = data.slot;\n data = {};\n if (slot) {\n data.slot = slot;\n }\n }\n\n // install component management hooks onto the placeholder node\n installComponentHooks(data);\n\n // return a placeholder vnode\n var name = Ctor.options.name || tag;\n var vnode = new VNode(\n (\"vue-component-\" + (Ctor.cid) + (name ? (\"-\" + name) : '')),\n data, undefined, undefined, undefined, context,\n { Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children },\n asyncFactory\n );\n\n // Weex specific: invoke recycle-list optimized @render function for\n // extracting cell-slot template.\n // https://github.com/Hanks10100/weex-native-directive/tree/master/component\n /* istanbul ignore if */\n return vnode\n}\n\nfunction createComponentInstanceForVnode (\n vnode, // we know it's MountedComponentVNode but flow doesn't\n parent, // activeInstance in lifecycle state\n parentElm,\n refElm\n) {\n var options = {\n _isComponent: true,\n parent: parent,\n _parentVnode: vnode,\n _parentElm: parentElm || null,\n _refElm: refElm || null\n };\n // check inline-template render functions\n var inlineTemplate = vnode.data.inlineTemplate;\n if (isDef(inlineTemplate)) {\n options.render = inlineTemplate.render;\n options.staticRenderFns = inlineTemplate.staticRenderFns;\n }\n return new vnode.componentOptions.Ctor(options)\n}\n\nfunction installComponentHooks (data) {\n var hooks = data.hook || (data.hook = {});\n for (var i = 0; i < hooksToMerge.length; i++) {\n var key = hooksToMerge[i];\n hooks[key] = componentVNodeHooks[key];\n }\n}\n\n// transform component v-model info (value and callback) into\n// prop and event handler respectively.\nfunction transformModel (options, data) {\n var prop = (options.model && options.model.prop) || 'value';\n var event = (options.model && options.model.event) || 'input';(data.props || (data.props = {}))[prop] = data.model.value;\n var on = data.on || (data.on = {});\n if (isDef(on[event])) {\n on[event] = [data.model.callback].concat(on[event]);\n } else {\n on[event] = data.model.callback;\n }\n}\n\n/* */\n\nvar SIMPLE_NORMALIZE = 1;\nvar ALWAYS_NORMALIZE = 2;\n\n// wrapper function for providing a more flexible interface\n// without getting yelled at by flow\nfunction createElement (\n context,\n tag,\n data,\n children,\n normalizationType,\n alwaysNormalize\n) {\n if (Array.isArray(data) || isPrimitive(data)) {\n normalizationType = children;\n children = data;\n data = undefined;\n }\n if (isTrue(alwaysNormalize)) {\n normalizationType = ALWAYS_NORMALIZE;\n }\n return _createElement(context, tag, data, children, normalizationType)\n}\n\nfunction _createElement (\n context,\n tag,\n data,\n children,\n normalizationType\n) {\n if (isDef(data) && isDef((data).__ob__)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"Avoid using observed data object as vnode data: \" + (JSON.stringify(data)) + \"\\n\" +\n 'Always create fresh vnode data objects in each render!',\n context\n );\n return createEmptyVNode()\n }\n // object syntax in v-bind\n if (isDef(data) && isDef(data.is)) {\n tag = data.is;\n }\n if (!tag) {\n // in case of component :is set to falsy value\n return createEmptyVNode()\n }\n // warn against non-primitive key\n if (process.env.NODE_ENV !== 'production' &&\n isDef(data) && isDef(data.key) && !isPrimitive(data.key)\n ) {\n {\n warn(\n 'Avoid using non-primitive value as key, ' +\n 'use string/number value instead.',\n context\n );\n }\n }\n // support single function children as default scoped slot\n if (Array.isArray(children) &&\n typeof children[0] === 'function'\n ) {\n data = data || {};\n data.scopedSlots = { default: children[0] };\n children.length = 0;\n }\n if (normalizationType === ALWAYS_NORMALIZE) {\n children = normalizeChildren(children);\n } else if (normalizationType === SIMPLE_NORMALIZE) {\n children = simpleNormalizeChildren(children);\n }\n var vnode, ns;\n if (typeof tag === 'string') {\n var Ctor;\n ns = (context.$vnode && context.$vnode.ns) || config.getTagNamespace(tag);\n if (config.isReservedTag(tag)) {\n // platform built-in elements\n vnode = new VNode(\n config.parsePlatformTagName(tag), data, children,\n undefined, undefined, context\n );\n } else if (isDef(Ctor = resolveAsset(context.$options, 'components', tag))) {\n // component\n vnode = createComponent(Ctor, data, context, children, tag);\n } else {\n // unknown or unlisted namespaced elements\n // check at runtime because it may get assigned a namespace when its\n // parent normalizes children\n vnode = new VNode(\n tag, data, children,\n undefined, undefined, context\n );\n }\n } else {\n // direct component options / constructor\n vnode = createComponent(tag, data, context, children);\n }\n if (Array.isArray(vnode)) {\n return vnode\n } else if (isDef(vnode)) {\n if (isDef(ns)) { applyNS(vnode, ns); }\n if (isDef(data)) { registerDeepBindings(data); }\n return vnode\n } else {\n return createEmptyVNode()\n }\n}\n\nfunction applyNS (vnode, ns, force) {\n vnode.ns = ns;\n if (vnode.tag === 'foreignObject') {\n // use default namespace inside foreignObject\n ns = undefined;\n force = true;\n }\n if (isDef(vnode.children)) {\n for (var i = 0, l = vnode.children.length; i < l; i++) {\n var child = vnode.children[i];\n if (isDef(child.tag) && (\n isUndef(child.ns) || (isTrue(force) && child.tag !== 'svg'))) {\n applyNS(child, ns, force);\n }\n }\n }\n}\n\n// ref #5318\n// necessary to ensure parent re-render when deep bindings like :style and\n// :class are used on slot nodes\nfunction registerDeepBindings (data) {\n if (isObject(data.style)) {\n traverse(data.style);\n }\n if (isObject(data.class)) {\n traverse(data.class);\n }\n}\n\n/* */\n\nfunction initRender (vm) {\n vm._vnode = null; // the root of the child tree\n vm._staticTrees = null; // v-once cached trees\n var options = vm.$options;\n var parentVnode = vm.$vnode = options._parentVnode; // the placeholder node in parent tree\n var renderContext = parentVnode && parentVnode.context;\n vm.$slots = resolveSlots(options._renderChildren, renderContext);\n vm.$scopedSlots = emptyObject;\n // bind the createElement fn to this instance\n // so that we get proper render context inside it.\n // args order: tag, data, children, normalizationType, alwaysNormalize\n // internal version is used by render functions compiled from templates\n vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };\n // normalization is always applied for the public version, used in\n // user-written render functions.\n vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };\n\n // $attrs & $listeners are exposed for easier HOC creation.\n // they need to be reactive so that HOCs using them are always updated\n var parentData = parentVnode && parentVnode.data;\n\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$attrs is readonly.\", vm);\n }, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, function () {\n !isUpdatingChildComponent && warn(\"$listeners is readonly.\", vm);\n }, true);\n } else {\n defineReactive(vm, '$attrs', parentData && parentData.attrs || emptyObject, null, true);\n defineReactive(vm, '$listeners', options._parentListeners || emptyObject, null, true);\n }\n}\n\nfunction renderMixin (Vue) {\n // install runtime convenience helpers\n installRenderHelpers(Vue.prototype);\n\n Vue.prototype.$nextTick = function (fn) {\n return nextTick(fn, this)\n };\n\n Vue.prototype._render = function () {\n var vm = this;\n var ref = vm.$options;\n var render = ref.render;\n var _parentVnode = ref._parentVnode;\n\n // reset _rendered flag on slots for duplicate slot check\n if (process.env.NODE_ENV !== 'production') {\n for (var key in vm.$slots) {\n // $flow-disable-line\n vm.$slots[key]._rendered = false;\n }\n }\n\n if (_parentVnode) {\n vm.$scopedSlots = _parentVnode.data.scopedSlots || emptyObject;\n }\n\n // set parent vnode. this allows render functions to have access\n // to the data on the placeholder node.\n vm.$vnode = _parentVnode;\n // render self\n var vnode;\n try {\n vnode = render.call(vm._renderProxy, vm.$createElement);\n } catch (e) {\n handleError(e, vm, \"render\");\n // return error render result,\n // or previous vnode to prevent render error causing blank component\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vm.$options.renderError) {\n try {\n vnode = vm.$options.renderError.call(vm._renderProxy, vm.$createElement, e);\n } catch (e) {\n handleError(e, vm, \"renderError\");\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n } else {\n vnode = vm._vnode;\n }\n }\n // return empty vnode in case the render function errored out\n if (!(vnode instanceof VNode)) {\n if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {\n warn(\n 'Multiple root nodes returned from render function. Render function ' +\n 'should return a single root node.',\n vm\n );\n }\n vnode = createEmptyVNode();\n }\n // set parent\n vnode.parent = _parentVnode;\n return vnode\n };\n}\n\n/* */\n\nvar uid$3 = 0;\n\nfunction initMixin (Vue) {\n Vue.prototype._init = function (options) {\n var vm = this;\n // a uid\n vm._uid = uid$3++;\n\n var startTag, endTag;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n startTag = \"vue-perf-start:\" + (vm._uid);\n endTag = \"vue-perf-end:\" + (vm._uid);\n mark(startTag);\n }\n\n // a flag to avoid this being observed\n vm._isVue = true;\n // merge options\n if (options && options._isComponent) {\n // optimize internal component instantiation\n // since dynamic options merging is pretty slow, and none of the\n // internal component options needs special treatment.\n initInternalComponent(vm, options);\n } else {\n vm.$options = mergeOptions(\n resolveConstructorOptions(vm.constructor),\n options || {},\n vm\n );\n }\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n initProxy(vm);\n } else {\n vm._renderProxy = vm;\n }\n // expose real self\n vm._self = vm;\n initLifecycle(vm);\n initEvents(vm);\n initRender(vm);\n callHook(vm, 'beforeCreate');\n initInjections(vm); // resolve injections before data/props\n initState(vm);\n initProvide(vm); // resolve provide after data/props\n callHook(vm, 'created');\n\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.performance && mark) {\n vm._name = formatComponentName(vm, false);\n mark(endTag);\n measure((\"vue \" + (vm._name) + \" init\"), startTag, endTag);\n }\n\n if (vm.$options.el) {\n vm.$mount(vm.$options.el);\n }\n };\n}\n\nfunction initInternalComponent (vm, options) {\n var opts = vm.$options = Object.create(vm.constructor.options);\n // doing this because it's faster than dynamic enumeration.\n var parentVnode = options._parentVnode;\n opts.parent = options.parent;\n opts._parentVnode = parentVnode;\n opts._parentElm = options._parentElm;\n opts._refElm = options._refElm;\n\n var vnodeComponentOptions = parentVnode.componentOptions;\n opts.propsData = vnodeComponentOptions.propsData;\n opts._parentListeners = vnodeComponentOptions.listeners;\n opts._renderChildren = vnodeComponentOptions.children;\n opts._componentTag = vnodeComponentOptions.tag;\n\n if (options.render) {\n opts.render = options.render;\n opts.staticRenderFns = options.staticRenderFns;\n }\n}\n\nfunction resolveConstructorOptions (Ctor) {\n var options = Ctor.options;\n if (Ctor.super) {\n var superOptions = resolveConstructorOptions(Ctor.super);\n var cachedSuperOptions = Ctor.superOptions;\n if (superOptions !== cachedSuperOptions) {\n // super option changed,\n // need to resolve new options.\n Ctor.superOptions = superOptions;\n // check if there are any late-modified/attached options (#4976)\n var modifiedOptions = resolveModifiedOptions(Ctor);\n // update base extend options\n if (modifiedOptions) {\n extend(Ctor.extendOptions, modifiedOptions);\n }\n options = Ctor.options = mergeOptions(superOptions, Ctor.extendOptions);\n if (options.name) {\n options.components[options.name] = Ctor;\n }\n }\n }\n return options\n}\n\nfunction resolveModifiedOptions (Ctor) {\n var modified;\n var latest = Ctor.options;\n var extended = Ctor.extendOptions;\n var sealed = Ctor.sealedOptions;\n for (var key in latest) {\n if (latest[key] !== sealed[key]) {\n if (!modified) { modified = {}; }\n modified[key] = dedupe(latest[key], extended[key], sealed[key]);\n }\n }\n return modified\n}\n\nfunction dedupe (latest, extended, sealed) {\n // compare latest and sealed to ensure lifecycle hooks won't be duplicated\n // between merges\n if (Array.isArray(latest)) {\n var res = [];\n sealed = Array.isArray(sealed) ? sealed : [sealed];\n extended = Array.isArray(extended) ? extended : [extended];\n for (var i = 0; i < latest.length; i++) {\n // push original options and not sealed options to exclude duplicated options\n if (extended.indexOf(latest[i]) >= 0 || sealed.indexOf(latest[i]) < 0) {\n res.push(latest[i]);\n }\n }\n return res\n } else {\n return latest\n }\n}\n\nfunction Vue (options) {\n if (process.env.NODE_ENV !== 'production' &&\n !(this instanceof Vue)\n ) {\n warn('Vue is a constructor and should be called with the `new` keyword');\n }\n this._init(options);\n}\n\ninitMixin(Vue);\nstateMixin(Vue);\neventsMixin(Vue);\nlifecycleMixin(Vue);\nrenderMixin(Vue);\n\n/* */\n\nfunction initUse (Vue) {\n Vue.use = function (plugin) {\n var installedPlugins = (this._installedPlugins || (this._installedPlugins = []));\n if (installedPlugins.indexOf(plugin) > -1) {\n return this\n }\n\n // additional parameters\n var args = toArray(arguments, 1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this\n };\n}\n\n/* */\n\nfunction initMixin$1 (Vue) {\n Vue.mixin = function (mixin) {\n this.options = mergeOptions(this.options, mixin);\n return this\n };\n}\n\n/* */\n\nfunction initExtend (Vue) {\n /**\n * Each instance constructor, including Vue, has a unique\n * cid. This enables us to create wrapped \"child\n * constructors\" for prototypal inheritance and cache them.\n */\n Vue.cid = 0;\n var cid = 1;\n\n /**\n * Class inheritance\n */\n Vue.extend = function (extendOptions) {\n extendOptions = extendOptions || {};\n var Super = this;\n var SuperId = Super.cid;\n var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});\n if (cachedCtors[SuperId]) {\n return cachedCtors[SuperId]\n }\n\n var name = extendOptions.name || Super.options.name;\n if (process.env.NODE_ENV !== 'production' && name) {\n validateComponentName(name);\n }\n\n var Sub = function VueComponent (options) {\n this._init(options);\n };\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.cid = cid++;\n Sub.options = mergeOptions(\n Super.options,\n extendOptions\n );\n Sub['super'] = Super;\n\n // For props and computed properties, we define the proxy getters on\n // the Vue instances at extension time, on the extended prototype. This\n // avoids Object.defineProperty calls for each instance created.\n if (Sub.options.props) {\n initProps$1(Sub);\n }\n if (Sub.options.computed) {\n initComputed$1(Sub);\n }\n\n // allow further extension/mixin/plugin usage\n Sub.extend = Super.extend;\n Sub.mixin = Super.mixin;\n Sub.use = Super.use;\n\n // create asset registers, so extended classes\n // can have their private assets too.\n ASSET_TYPES.forEach(function (type) {\n Sub[type] = Super[type];\n });\n // enable recursive self-lookup\n if (name) {\n Sub.options.components[name] = Sub;\n }\n\n // keep a reference to the super options at extension time.\n // later at instantiation we can check if Super's options have\n // been updated.\n Sub.superOptions = Super.options;\n Sub.extendOptions = extendOptions;\n Sub.sealedOptions = extend({}, Sub.options);\n\n // cache constructor\n cachedCtors[SuperId] = Sub;\n return Sub\n };\n}\n\nfunction initProps$1 (Comp) {\n var props = Comp.options.props;\n for (var key in props) {\n proxy(Comp.prototype, \"_props\", key);\n }\n}\n\nfunction initComputed$1 (Comp) {\n var computed = Comp.options.computed;\n for (var key in computed) {\n defineComputed(Comp.prototype, key, computed[key]);\n }\n}\n\n/* */\n\nfunction initAssetRegisters (Vue) {\n /**\n * Create asset registration methods.\n */\n ASSET_TYPES.forEach(function (type) {\n Vue[type] = function (\n id,\n definition\n ) {\n if (!definition) {\n return this.options[type + 's'][id]\n } else {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && type === 'component') {\n validateComponentName(id);\n }\n if (type === 'component' && isPlainObject(definition)) {\n definition.name = definition.name || id;\n definition = this.options._base.extend(definition);\n }\n if (type === 'directive' && typeof definition === 'function') {\n definition = { bind: definition, update: definition };\n }\n this.options[type + 's'][id] = definition;\n return definition\n }\n };\n });\n}\n\n/* */\n\nfunction getComponentName (opts) {\n return opts && (opts.Ctor.options.name || opts.tag)\n}\n\nfunction matches (pattern, name) {\n if (Array.isArray(pattern)) {\n return pattern.indexOf(name) > -1\n } else if (typeof pattern === 'string') {\n return pattern.split(',').indexOf(name) > -1\n } else if (isRegExp(pattern)) {\n return pattern.test(name)\n }\n /* istanbul ignore next */\n return false\n}\n\nfunction pruneCache (keepAliveInstance, filter) {\n var cache = keepAliveInstance.cache;\n var keys = keepAliveInstance.keys;\n var _vnode = keepAliveInstance._vnode;\n for (var key in cache) {\n var cachedNode = cache[key];\n if (cachedNode) {\n var name = getComponentName(cachedNode.componentOptions);\n if (name && !filter(name)) {\n pruneCacheEntry(cache, key, keys, _vnode);\n }\n }\n }\n}\n\nfunction pruneCacheEntry (\n cache,\n key,\n keys,\n current\n) {\n var cached$$1 = cache[key];\n if (cached$$1 && (!current || cached$$1.tag !== current.tag)) {\n cached$$1.componentInstance.$destroy();\n }\n cache[key] = null;\n remove(keys, key);\n}\n\nvar patternTypes = [String, RegExp, Array];\n\nvar KeepAlive = {\n name: 'keep-alive',\n abstract: true,\n\n props: {\n include: patternTypes,\n exclude: patternTypes,\n max: [String, Number]\n },\n\n created: function created () {\n this.cache = Object.create(null);\n this.keys = [];\n },\n\n destroyed: function destroyed () {\n var this$1 = this;\n\n for (var key in this$1.cache) {\n pruneCacheEntry(this$1.cache, key, this$1.keys);\n }\n },\n\n mounted: function mounted () {\n var this$1 = this;\n\n this.$watch('include', function (val) {\n pruneCache(this$1, function (name) { return matches(val, name); });\n });\n this.$watch('exclude', function (val) {\n pruneCache(this$1, function (name) { return !matches(val, name); });\n });\n },\n\n render: function render () {\n var slot = this.$slots.default;\n var vnode = getFirstComponentChild(slot);\n var componentOptions = vnode && vnode.componentOptions;\n if (componentOptions) {\n // check pattern\n var name = getComponentName(componentOptions);\n var ref = this;\n var include = ref.include;\n var exclude = ref.exclude;\n if (\n // not included\n (include && (!name || !matches(include, name))) ||\n // excluded\n (exclude && name && matches(exclude, name))\n ) {\n return vnode\n }\n\n var ref$1 = this;\n var cache = ref$1.cache;\n var keys = ref$1.keys;\n var key = vnode.key == null\n // same constructor may get registered as different local components\n // so cid alone is not enough (#3269)\n ? componentOptions.Ctor.cid + (componentOptions.tag ? (\"::\" + (componentOptions.tag)) : '')\n : vnode.key;\n if (cache[key]) {\n vnode.componentInstance = cache[key].componentInstance;\n // make current key freshest\n remove(keys, key);\n keys.push(key);\n } else {\n cache[key] = vnode;\n keys.push(key);\n // prune oldest entry\n if (this.max && keys.length > parseInt(this.max)) {\n pruneCacheEntry(cache, keys[0], keys, this._vnode);\n }\n }\n\n vnode.data.keepAlive = true;\n }\n return vnode || (slot && slot[0])\n }\n}\n\nvar builtInComponents = {\n KeepAlive: KeepAlive\n}\n\n/* */\n\nfunction initGlobalAPI (Vue) {\n // config\n var configDef = {};\n configDef.get = function () { return config; };\n if (process.env.NODE_ENV !== 'production') {\n configDef.set = function () {\n warn(\n 'Do not replace the Vue.config object, set individual fields instead.'\n );\n };\n }\n Object.defineProperty(Vue, 'config', configDef);\n\n // exposed util methods.\n // NOTE: these are not considered part of the public API - avoid relying on\n // them unless you are aware of the risk.\n Vue.util = {\n warn: warn,\n extend: extend,\n mergeOptions: mergeOptions,\n defineReactive: defineReactive\n };\n\n Vue.set = set;\n Vue.delete = del;\n Vue.nextTick = nextTick;\n\n Vue.options = Object.create(null);\n ASSET_TYPES.forEach(function (type) {\n Vue.options[type + 's'] = Object.create(null);\n });\n\n // this is used to identify the \"base\" constructor to extend all plain-object\n // components with in Weex's multi-instance scenarios.\n Vue.options._base = Vue;\n\n extend(Vue.options.components, builtInComponents);\n\n initUse(Vue);\n initMixin$1(Vue);\n initExtend(Vue);\n initAssetRegisters(Vue);\n}\n\ninitGlobalAPI(Vue);\n\nObject.defineProperty(Vue.prototype, '$isServer', {\n get: isServerRendering\n});\n\nObject.defineProperty(Vue.prototype, '$ssrContext', {\n get: function get () {\n /* istanbul ignore next */\n return this.$vnode && this.$vnode.ssrContext\n }\n});\n\n// expose FunctionalRenderContext for ssr runtime helper installation\nObject.defineProperty(Vue, 'FunctionalRenderContext', {\n value: FunctionalRenderContext\n});\n\nVue.version = '2.5.17';\n\n/* */\n\n// these are reserved for web because they are directly compiled away\n// during template compilation\nvar isReservedAttr = makeMap('style,class');\n\n// attributes that should be using props for binding\nvar acceptValue = makeMap('input,textarea,option,select,progress');\nvar mustUseProp = function (tag, type, attr) {\n return (\n (attr === 'value' && acceptValue(tag)) && type !== 'button' ||\n (attr === 'selected' && tag === 'option') ||\n (attr === 'checked' && tag === 'input') ||\n (attr === 'muted' && tag === 'video')\n )\n};\n\nvar isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');\n\nvar isBooleanAttr = makeMap(\n 'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +\n 'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +\n 'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +\n 'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +\n 'required,reversed,scoped,seamless,selected,sortable,translate,' +\n 'truespeed,typemustmatch,visible'\n);\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\n\nvar isXlink = function (name) {\n return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'\n};\n\nvar getXlinkProp = function (name) {\n return isXlink(name) ? name.slice(6, name.length) : ''\n};\n\nvar isFalsyAttrValue = function (val) {\n return val == null || val === false\n};\n\n/* */\n\nfunction genClassForVnode (vnode) {\n var data = vnode.data;\n var parentNode = vnode;\n var childNode = vnode;\n while (isDef(childNode.componentInstance)) {\n childNode = childNode.componentInstance._vnode;\n if (childNode && childNode.data) {\n data = mergeClassData(childNode.data, data);\n }\n }\n while (isDef(parentNode = parentNode.parent)) {\n if (parentNode && parentNode.data) {\n data = mergeClassData(data, parentNode.data);\n }\n }\n return renderClass(data.staticClass, data.class)\n}\n\nfunction mergeClassData (child, parent) {\n return {\n staticClass: concat(child.staticClass, parent.staticClass),\n class: isDef(child.class)\n ? [child.class, parent.class]\n : parent.class\n }\n}\n\nfunction renderClass (\n staticClass,\n dynamicClass\n) {\n if (isDef(staticClass) || isDef(dynamicClass)) {\n return concat(staticClass, stringifyClass(dynamicClass))\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction concat (a, b) {\n return a ? b ? (a + ' ' + b) : a : (b || '')\n}\n\nfunction stringifyClass (value) {\n if (Array.isArray(value)) {\n return stringifyArray(value)\n }\n if (isObject(value)) {\n return stringifyObject(value)\n }\n if (typeof value === 'string') {\n return value\n }\n /* istanbul ignore next */\n return ''\n}\n\nfunction stringifyArray (value) {\n var res = '';\n var stringified;\n for (var i = 0, l = value.length; i < l; i++) {\n if (isDef(stringified = stringifyClass(value[i])) && stringified !== '') {\n if (res) { res += ' '; }\n res += stringified;\n }\n }\n return res\n}\n\nfunction stringifyObject (value) {\n var res = '';\n for (var key in value) {\n if (value[key]) {\n if (res) { res += ' '; }\n res += key;\n }\n }\n return res\n}\n\n/* */\n\nvar namespaceMap = {\n svg: 'http://www.w3.org/2000/svg',\n math: 'http://www.w3.org/1998/Math/MathML'\n};\n\nvar isHTMLTag = makeMap(\n 'html,body,base,head,link,meta,style,title,' +\n 'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +\n 'div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,' +\n 'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +\n 's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +\n 'embed,object,param,source,canvas,script,noscript,del,ins,' +\n 'caption,col,colgroup,table,thead,tbody,td,th,tr,' +\n 'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +\n 'output,progress,select,textarea,' +\n 'details,dialog,menu,menuitem,summary,' +\n 'content,element,shadow,template,blockquote,iframe,tfoot'\n);\n\n// this map is intentionally selective, only covering SVG elements that may\n// contain child elements.\nvar isSVG = makeMap(\n 'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,font-face,' +\n 'foreignObject,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +\n 'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',\n true\n);\n\n\n\nvar isReservedTag = function (tag) {\n return isHTMLTag(tag) || isSVG(tag)\n};\n\nfunction getTagNamespace (tag) {\n if (isSVG(tag)) {\n return 'svg'\n }\n // basic support for MathML\n // note it doesn't support other MathML elements being component roots\n if (tag === 'math') {\n return 'math'\n }\n}\n\nvar unknownElementCache = Object.create(null);\nfunction isUnknownElement (tag) {\n /* istanbul ignore if */\n if (!inBrowser) {\n return true\n }\n if (isReservedTag(tag)) {\n return false\n }\n tag = tag.toLowerCase();\n /* istanbul ignore if */\n if (unknownElementCache[tag] != null) {\n return unknownElementCache[tag]\n }\n var el = document.createElement(tag);\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return (unknownElementCache[tag] = (\n el.constructor === window.HTMLUnknownElement ||\n el.constructor === window.HTMLElement\n ))\n } else {\n return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))\n }\n}\n\nvar isTextInputType = makeMap('text,number,password,search,email,tel,url');\n\n/* */\n\n/**\n * Query an element selector if it's not an element already.\n */\nfunction query (el) {\n if (typeof el === 'string') {\n var selected = document.querySelector(el);\n if (!selected) {\n process.env.NODE_ENV !== 'production' && warn(\n 'Cannot find element: ' + el\n );\n return document.createElement('div')\n }\n return selected\n } else {\n return el\n }\n}\n\n/* */\n\nfunction createElement$1 (tagName, vnode) {\n var elm = document.createElement(tagName);\n if (tagName !== 'select') {\n return elm\n }\n // false or null will remove the attribute but undefined will not\n if (vnode.data && vnode.data.attrs && vnode.data.attrs.multiple !== undefined) {\n elm.setAttribute('multiple', 'multiple');\n }\n return elm\n}\n\nfunction createElementNS (namespace, tagName) {\n return document.createElementNS(namespaceMap[namespace], tagName)\n}\n\nfunction createTextNode (text) {\n return document.createTextNode(text)\n}\n\nfunction createComment (text) {\n return document.createComment(text)\n}\n\nfunction insertBefore (parentNode, newNode, referenceNode) {\n parentNode.insertBefore(newNode, referenceNode);\n}\n\nfunction removeChild (node, child) {\n node.removeChild(child);\n}\n\nfunction appendChild (node, child) {\n node.appendChild(child);\n}\n\nfunction parentNode (node) {\n return node.parentNode\n}\n\nfunction nextSibling (node) {\n return node.nextSibling\n}\n\nfunction tagName (node) {\n return node.tagName\n}\n\nfunction setTextContent (node, text) {\n node.textContent = text;\n}\n\nfunction setStyleScope (node, scopeId) {\n node.setAttribute(scopeId, '');\n}\n\n\nvar nodeOps = Object.freeze({\n\tcreateElement: createElement$1,\n\tcreateElementNS: createElementNS,\n\tcreateTextNode: createTextNode,\n\tcreateComment: createComment,\n\tinsertBefore: insertBefore,\n\tremoveChild: removeChild,\n\tappendChild: appendChild,\n\tparentNode: parentNode,\n\tnextSibling: nextSibling,\n\ttagName: tagName,\n\tsetTextContent: setTextContent,\n\tsetStyleScope: setStyleScope\n});\n\n/* */\n\nvar ref = {\n create: function create (_, vnode) {\n registerRef(vnode);\n },\n update: function update (oldVnode, vnode) {\n if (oldVnode.data.ref !== vnode.data.ref) {\n registerRef(oldVnode, true);\n registerRef(vnode);\n }\n },\n destroy: function destroy (vnode) {\n registerRef(vnode, true);\n }\n}\n\nfunction registerRef (vnode, isRemoval) {\n var key = vnode.data.ref;\n if (!isDef(key)) { return }\n\n var vm = vnode.context;\n var ref = vnode.componentInstance || vnode.elm;\n var refs = vm.$refs;\n if (isRemoval) {\n if (Array.isArray(refs[key])) {\n remove(refs[key], ref);\n } else if (refs[key] === ref) {\n refs[key] = undefined;\n }\n } else {\n if (vnode.data.refInFor) {\n if (!Array.isArray(refs[key])) {\n refs[key] = [ref];\n } else if (refs[key].indexOf(ref) < 0) {\n // $flow-disable-line\n refs[key].push(ref);\n }\n } else {\n refs[key] = ref;\n }\n }\n}\n\n/**\n * Virtual DOM patching algorithm based on Snabbdom by\n * Simon Friis Vindum (@paldepind)\n * Licensed under the MIT License\n * https://github.com/paldepind/snabbdom/blob/master/LICENSE\n *\n * modified by Evan You (@yyx990803)\n *\n * Not type-checking this because this file is perf-critical and the cost\n * of making flow understand it is not worth it.\n */\n\nvar emptyNode = new VNode('', {}, []);\n\nvar hooks = ['create', 'activate', 'update', 'remove', 'destroy'];\n\nfunction sameVnode (a, b) {\n return (\n a.key === b.key && (\n (\n a.tag === b.tag &&\n a.isComment === b.isComment &&\n isDef(a.data) === isDef(b.data) &&\n sameInputType(a, b)\n ) || (\n isTrue(a.isAsyncPlaceholder) &&\n a.asyncFactory === b.asyncFactory &&\n isUndef(b.asyncFactory.error)\n )\n )\n )\n}\n\nfunction sameInputType (a, b) {\n if (a.tag !== 'input') { return true }\n var i;\n var typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type;\n var typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type;\n return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)\n}\n\nfunction createKeyToOldIdx (children, beginIdx, endIdx) {\n var i, key;\n var map = {};\n for (i = beginIdx; i <= endIdx; ++i) {\n key = children[i].key;\n if (isDef(key)) { map[key] = i; }\n }\n return map\n}\n\nfunction createPatchFunction (backend) {\n var i, j;\n var cbs = {};\n\n var modules = backend.modules;\n var nodeOps = backend.nodeOps;\n\n for (i = 0; i < hooks.length; ++i) {\n cbs[hooks[i]] = [];\n for (j = 0; j < modules.length; ++j) {\n if (isDef(modules[j][hooks[i]])) {\n cbs[hooks[i]].push(modules[j][hooks[i]]);\n }\n }\n }\n\n function emptyNodeAt (elm) {\n return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)\n }\n\n function createRmCb (childElm, listeners) {\n function remove () {\n if (--remove.listeners === 0) {\n removeNode(childElm);\n }\n }\n remove.listeners = listeners;\n return remove\n }\n\n function removeNode (el) {\n var parent = nodeOps.parentNode(el);\n // element may have already been removed due to v-html / v-text\n if (isDef(parent)) {\n nodeOps.removeChild(parent, el);\n }\n }\n\n function isUnknownElement$$1 (vnode, inVPre) {\n return (\n !inVPre &&\n !vnode.ns &&\n !(\n config.ignoredElements.length &&\n config.ignoredElements.some(function (ignore) {\n return isRegExp(ignore)\n ? ignore.test(vnode.tag)\n : ignore === vnode.tag\n })\n ) &&\n config.isUnknownElement(vnode.tag)\n )\n }\n\n var creatingElmInVPre = 0;\n\n function createElm (\n vnode,\n insertedVnodeQueue,\n parentElm,\n refElm,\n nested,\n ownerArray,\n index\n ) {\n if (isDef(vnode.elm) && isDef(ownerArray)) {\n // This vnode was used in a previous render!\n // now it's used as a new node, overwriting its elm would cause\n // potential patch errors down the road when it's used as an insertion\n // reference node. Instead, we clone the node on-demand before creating\n // associated DOM element for it.\n vnode = ownerArray[index] = cloneVNode(vnode);\n }\n\n vnode.isRootInsert = !nested; // for transition enter check\n if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {\n return\n }\n\n var data = vnode.data;\n var children = vnode.children;\n var tag = vnode.tag;\n if (isDef(tag)) {\n if (process.env.NODE_ENV !== 'production') {\n if (data && data.pre) {\n creatingElmInVPre++;\n }\n if (isUnknownElement$$1(vnode, creatingElmInVPre)) {\n warn(\n 'Unknown custom element: <' + tag + '> - did you ' +\n 'register the component correctly? For recursive components, ' +\n 'make sure to provide the \"name\" option.',\n vnode.context\n );\n }\n }\n\n vnode.elm = vnode.ns\n ? nodeOps.createElementNS(vnode.ns, tag)\n : nodeOps.createElement(tag, vnode);\n setScope(vnode);\n\n /* istanbul ignore if */\n {\n createChildren(vnode, children, insertedVnodeQueue);\n if (isDef(data)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n }\n insert(parentElm, vnode.elm, refElm);\n }\n\n if (process.env.NODE_ENV !== 'production' && data && data.pre) {\n creatingElmInVPre--;\n }\n } else if (isTrue(vnode.isComment)) {\n vnode.elm = nodeOps.createComment(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n } else {\n vnode.elm = nodeOps.createTextNode(vnode.text);\n insert(parentElm, vnode.elm, refElm);\n }\n }\n\n function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i = vnode.data;\n if (isDef(i)) {\n var isReactivated = isDef(vnode.componentInstance) && i.keepAlive;\n if (isDef(i = i.hook) && isDef(i = i.init)) {\n i(vnode, false /* hydrating */, parentElm, refElm);\n }\n // after calling the init hook, if the vnode is a child component\n // it should've created a child instance and mounted it. the child\n // component also has set the placeholder vnode's elm.\n // in that case we can just return the element and be done.\n if (isDef(vnode.componentInstance)) {\n initComponent(vnode, insertedVnodeQueue);\n if (isTrue(isReactivated)) {\n reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);\n }\n return true\n }\n }\n }\n\n function initComponent (vnode, insertedVnodeQueue) {\n if (isDef(vnode.data.pendingInsert)) {\n insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);\n vnode.data.pendingInsert = null;\n }\n vnode.elm = vnode.componentInstance.$el;\n if (isPatchable(vnode)) {\n invokeCreateHooks(vnode, insertedVnodeQueue);\n setScope(vnode);\n } else {\n // empty component root.\n // skip all element-related modules except for ref (#3455)\n registerRef(vnode);\n // make sure to invoke the insert hook\n insertedVnodeQueue.push(vnode);\n }\n }\n\n function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {\n var i;\n // hack for #4339: a reactivated component with inner transition\n // does not trigger because the inner node's created hooks are not called\n // again. It's not ideal to involve module-specific logic in here but\n // there doesn't seem to be a better way to do it.\n var innerNode = vnode;\n while (innerNode.componentInstance) {\n innerNode = innerNode.componentInstance._vnode;\n if (isDef(i = innerNode.data) && isDef(i = i.transition)) {\n for (i = 0; i < cbs.activate.length; ++i) {\n cbs.activate[i](emptyNode, innerNode);\n }\n insertedVnodeQueue.push(innerNode);\n break\n }\n }\n // unlike a newly created component,\n // a reactivated keep-alive component doesn't insert itself\n insert(parentElm, vnode.elm, refElm);\n }\n\n function insert (parent, elm, ref$$1) {\n if (isDef(parent)) {\n if (isDef(ref$$1)) {\n if (ref$$1.parentNode === parent) {\n nodeOps.insertBefore(parent, elm, ref$$1);\n }\n } else {\n nodeOps.appendChild(parent, elm);\n }\n }\n }\n\n function createChildren (vnode, children, insertedVnodeQueue) {\n if (Array.isArray(children)) {\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(children);\n }\n for (var i = 0; i < children.length; ++i) {\n createElm(children[i], insertedVnodeQueue, vnode.elm, null, true, children, i);\n }\n } else if (isPrimitive(vnode.text)) {\n nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(String(vnode.text)));\n }\n }\n\n function isPatchable (vnode) {\n while (vnode.componentInstance) {\n vnode = vnode.componentInstance._vnode;\n }\n return isDef(vnode.tag)\n }\n\n function invokeCreateHooks (vnode, insertedVnodeQueue) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, vnode);\n }\n i = vnode.data.hook; // Reuse variable\n if (isDef(i)) {\n if (isDef(i.create)) { i.create(emptyNode, vnode); }\n if (isDef(i.insert)) { insertedVnodeQueue.push(vnode); }\n }\n }\n\n // set scope id attribute for scoped CSS.\n // this is implemented as a special case to avoid the overhead\n // of going through the normal attribute patching process.\n function setScope (vnode) {\n var i;\n if (isDef(i = vnode.fnScopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n } else {\n var ancestor = vnode;\n while (ancestor) {\n if (isDef(i = ancestor.context) && isDef(i = i.$options._scopeId)) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n ancestor = ancestor.parent;\n }\n }\n // for slot content they should also get the scopeId from the host instance.\n if (isDef(i = activeInstance) &&\n i !== vnode.context &&\n i !== vnode.fnContext &&\n isDef(i = i.$options._scopeId)\n ) {\n nodeOps.setStyleScope(vnode.elm, i);\n }\n }\n\n function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {\n for (; startIdx <= endIdx; ++startIdx) {\n createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm, false, vnodes, startIdx);\n }\n }\n\n function invokeDestroyHook (vnode) {\n var i, j;\n var data = vnode.data;\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }\n for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }\n }\n if (isDef(i = vnode.children)) {\n for (j = 0; j < vnode.children.length; ++j) {\n invokeDestroyHook(vnode.children[j]);\n }\n }\n }\n\n function removeVnodes (parentElm, vnodes, startIdx, endIdx) {\n for (; startIdx <= endIdx; ++startIdx) {\n var ch = vnodes[startIdx];\n if (isDef(ch)) {\n if (isDef(ch.tag)) {\n removeAndInvokeRemoveHook(ch);\n invokeDestroyHook(ch);\n } else { // Text node\n removeNode(ch.elm);\n }\n }\n }\n }\n\n function removeAndInvokeRemoveHook (vnode, rm) {\n if (isDef(rm) || isDef(vnode.data)) {\n var i;\n var listeners = cbs.remove.length + 1;\n if (isDef(rm)) {\n // we have a recursively passed down rm callback\n // increase the listeners count\n rm.listeners += listeners;\n } else {\n // directly removing\n rm = createRmCb(vnode.elm, listeners);\n }\n // recursively invoke hooks on child component root node\n if (isDef(i = vnode.componentInstance) && isDef(i = i._vnode) && isDef(i.data)) {\n removeAndInvokeRemoveHook(i, rm);\n }\n for (i = 0; i < cbs.remove.length; ++i) {\n cbs.remove[i](vnode, rm);\n }\n if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {\n i(vnode, rm);\n } else {\n rm();\n }\n } else {\n removeNode(vnode.elm);\n }\n }\n\n function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {\n var oldStartIdx = 0;\n var newStartIdx = 0;\n var oldEndIdx = oldCh.length - 1;\n var oldStartVnode = oldCh[0];\n var oldEndVnode = oldCh[oldEndIdx];\n var newEndIdx = newCh.length - 1;\n var newStartVnode = newCh[0];\n var newEndVnode = newCh[newEndIdx];\n var oldKeyToIdx, idxInOld, vnodeToMove, refElm;\n\n // removeOnly is a special flag used only by <transition-group>\n // to ensure removed elements stay in correct relative positions\n // during leaving transitions\n var canMove = !removeOnly;\n\n if (process.env.NODE_ENV !== 'production') {\n checkDuplicateKeys(newCh);\n }\n\n while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {\n if (isUndef(oldStartVnode)) {\n oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left\n } else if (isUndef(oldEndVnode)) {\n oldEndVnode = oldCh[--oldEndIdx];\n } else if (sameVnode(oldStartVnode, newStartVnode)) {\n patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);\n oldStartVnode = oldCh[++oldStartIdx];\n newStartVnode = newCh[++newStartIdx];\n } else if (sameVnode(oldEndVnode, newEndVnode)) {\n patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);\n oldEndVnode = oldCh[--oldEndIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right\n patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));\n oldStartVnode = oldCh[++oldStartIdx];\n newEndVnode = newCh[--newEndIdx];\n } else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left\n patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);\n canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);\n oldEndVnode = oldCh[--oldEndIdx];\n newStartVnode = newCh[++newStartIdx];\n } else {\n if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }\n idxInOld = isDef(newStartVnode.key)\n ? oldKeyToIdx[newStartVnode.key]\n : findIdxInOld(newStartVnode, oldCh, oldStartIdx, oldEndIdx);\n if (isUndef(idxInOld)) { // New element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n } else {\n vnodeToMove = oldCh[idxInOld];\n if (sameVnode(vnodeToMove, newStartVnode)) {\n patchVnode(vnodeToMove, newStartVnode, insertedVnodeQueue);\n oldCh[idxInOld] = undefined;\n canMove && nodeOps.insertBefore(parentElm, vnodeToMove.elm, oldStartVnode.elm);\n } else {\n // same key but different element. treat as new element\n createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm, false, newCh, newStartIdx);\n }\n }\n newStartVnode = newCh[++newStartIdx];\n }\n }\n if (oldStartIdx > oldEndIdx) {\n refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;\n addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);\n } else if (newStartIdx > newEndIdx) {\n removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);\n }\n }\n\n function checkDuplicateKeys (children) {\n var seenKeys = {};\n for (var i = 0; i < children.length; i++) {\n var vnode = children[i];\n var key = vnode.key;\n if (isDef(key)) {\n if (seenKeys[key]) {\n warn(\n (\"Duplicate keys detected: '\" + key + \"'. This may cause an update error.\"),\n vnode.context\n );\n } else {\n seenKeys[key] = true;\n }\n }\n }\n }\n\n function findIdxInOld (node, oldCh, start, end) {\n for (var i = start; i < end; i++) {\n var c = oldCh[i];\n if (isDef(c) && sameVnode(node, c)) { return i }\n }\n }\n\n function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {\n if (oldVnode === vnode) {\n return\n }\n\n var elm = vnode.elm = oldVnode.elm;\n\n if (isTrue(oldVnode.isAsyncPlaceholder)) {\n if (isDef(vnode.asyncFactory.resolved)) {\n hydrate(oldVnode.elm, vnode, insertedVnodeQueue);\n } else {\n vnode.isAsyncPlaceholder = true;\n }\n return\n }\n\n // reuse element for static trees.\n // note we only do this if the vnode is cloned -\n // if the new node is not cloned it means the render functions have been\n // reset by the hot-reload-api and we need to do a proper re-render.\n if (isTrue(vnode.isStatic) &&\n isTrue(oldVnode.isStatic) &&\n vnode.key === oldVnode.key &&\n (isTrue(vnode.isCloned) || isTrue(vnode.isOnce))\n ) {\n vnode.componentInstance = oldVnode.componentInstance;\n return\n }\n\n var i;\n var data = vnode.data;\n if (isDef(data) && isDef(i = data.hook) && isDef(i = i.prepatch)) {\n i(oldVnode, vnode);\n }\n\n var oldCh = oldVnode.children;\n var ch = vnode.children;\n if (isDef(data) && isPatchable(vnode)) {\n for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }\n if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }\n }\n if (isUndef(vnode.text)) {\n if (isDef(oldCh) && isDef(ch)) {\n if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }\n } else if (isDef(ch)) {\n if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }\n addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);\n } else if (isDef(oldCh)) {\n removeVnodes(elm, oldCh, 0, oldCh.length - 1);\n } else if (isDef(oldVnode.text)) {\n nodeOps.setTextContent(elm, '');\n }\n } else if (oldVnode.text !== vnode.text) {\n nodeOps.setTextContent(elm, vnode.text);\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }\n }\n }\n\n function invokeInsertHook (vnode, queue, initial) {\n // delay insert hooks for component root nodes, invoke them after the\n // element is really inserted\n if (isTrue(initial) && isDef(vnode.parent)) {\n vnode.parent.data.pendingInsert = queue;\n } else {\n for (var i = 0; i < queue.length; ++i) {\n queue[i].data.hook.insert(queue[i]);\n }\n }\n }\n\n var hydrationBailed = false;\n // list of modules that can skip create hook during hydration because they\n // are already rendered on the client or has no need for initialization\n // Note: style is excluded because it relies on initial clone for future\n // deep updates (#7063).\n var isRenderedModule = makeMap('attrs,class,staticClass,staticStyle,key');\n\n // Note: this is a browser-only function so we can assume elms are DOM nodes.\n function hydrate (elm, vnode, insertedVnodeQueue, inVPre) {\n var i;\n var tag = vnode.tag;\n var data = vnode.data;\n var children = vnode.children;\n inVPre = inVPre || (data && data.pre);\n vnode.elm = elm;\n\n if (isTrue(vnode.isComment) && isDef(vnode.asyncFactory)) {\n vnode.isAsyncPlaceholder = true;\n return true\n }\n // assert node match\n if (process.env.NODE_ENV !== 'production') {\n if (!assertNodeMatch(elm, vnode, inVPre)) {\n return false\n }\n }\n if (isDef(data)) {\n if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }\n if (isDef(i = vnode.componentInstance)) {\n // child component. it should have hydrated its own tree.\n initComponent(vnode, insertedVnodeQueue);\n return true\n }\n }\n if (isDef(tag)) {\n if (isDef(children)) {\n // empty element, allow client to pick up and populate children\n if (!elm.hasChildNodes()) {\n createChildren(vnode, children, insertedVnodeQueue);\n } else {\n // v-html and domProps: innerHTML\n if (isDef(i = data) && isDef(i = i.domProps) && isDef(i = i.innerHTML)) {\n if (i !== elm.innerHTML) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('server innerHTML: ', i);\n console.warn('client innerHTML: ', elm.innerHTML);\n }\n return false\n }\n } else {\n // iterate and compare children lists\n var childrenMatch = true;\n var childNode = elm.firstChild;\n for (var i$1 = 0; i$1 < children.length; i$1++) {\n if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue, inVPre)) {\n childrenMatch = false;\n break\n }\n childNode = childNode.nextSibling;\n }\n // if childNode is not null, it means the actual childNodes list is\n // longer than the virtual children list.\n if (!childrenMatch || childNode) {\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' &&\n typeof console !== 'undefined' &&\n !hydrationBailed\n ) {\n hydrationBailed = true;\n console.warn('Parent: ', elm);\n console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);\n }\n return false\n }\n }\n }\n }\n if (isDef(data)) {\n var fullInvoke = false;\n for (var key in data) {\n if (!isRenderedModule(key)) {\n fullInvoke = true;\n invokeCreateHooks(vnode, insertedVnodeQueue);\n break\n }\n }\n if (!fullInvoke && data['class']) {\n // ensure collecting deps for deep class bindings for future updates\n traverse(data['class']);\n }\n }\n } else if (elm.data !== vnode.text) {\n elm.data = vnode.text;\n }\n return true\n }\n\n function assertNodeMatch (node, vnode, inVPre) {\n if (isDef(vnode.tag)) {\n return vnode.tag.indexOf('vue-component') === 0 || (\n !isUnknownElement$$1(vnode, inVPre) &&\n vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())\n )\n } else {\n return node.nodeType === (vnode.isComment ? 8 : 3)\n }\n }\n\n return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {\n if (isUndef(vnode)) {\n if (isDef(oldVnode)) { invokeDestroyHook(oldVnode); }\n return\n }\n\n var isInitialPatch = false;\n var insertedVnodeQueue = [];\n\n if (isUndef(oldVnode)) {\n // empty mount (likely as component), create new root element\n isInitialPatch = true;\n createElm(vnode, insertedVnodeQueue, parentElm, refElm);\n } else {\n var isRealElement = isDef(oldVnode.nodeType);\n if (!isRealElement && sameVnode(oldVnode, vnode)) {\n // patch existing root node\n patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);\n } else {\n if (isRealElement) {\n // mounting to a real element\n // check if this is server-rendered content and if we can perform\n // a successful hydration.\n if (oldVnode.nodeType === 1 && oldVnode.hasAttribute(SSR_ATTR)) {\n oldVnode.removeAttribute(SSR_ATTR);\n hydrating = true;\n }\n if (isTrue(hydrating)) {\n if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {\n invokeInsertHook(vnode, insertedVnodeQueue, true);\n return oldVnode\n } else if (process.env.NODE_ENV !== 'production') {\n warn(\n 'The client-side rendered virtual DOM tree is not matching ' +\n 'server-rendered content. This is likely caused by incorrect ' +\n 'HTML markup, for example nesting block-level elements inside ' +\n '<p>, or missing <tbody>. Bailing hydration and performing ' +\n 'full client-side render.'\n );\n }\n }\n // either not server-rendered, or hydration failed.\n // create an empty node and replace it\n oldVnode = emptyNodeAt(oldVnode);\n }\n\n // replacing existing element\n var oldElm = oldVnode.elm;\n var parentElm$1 = nodeOps.parentNode(oldElm);\n\n // create new node\n createElm(\n vnode,\n insertedVnodeQueue,\n // extremely rare edge case: do not insert if old element is in a\n // leaving transition. Only happens when combining transition +\n // keep-alive + HOCs. (#4590)\n oldElm._leaveCb ? null : parentElm$1,\n nodeOps.nextSibling(oldElm)\n );\n\n // update parent placeholder node element, recursively\n if (isDef(vnode.parent)) {\n var ancestor = vnode.parent;\n var patchable = isPatchable(vnode);\n while (ancestor) {\n for (var i = 0; i < cbs.destroy.length; ++i) {\n cbs.destroy[i](ancestor);\n }\n ancestor.elm = vnode.elm;\n if (patchable) {\n for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {\n cbs.create[i$1](emptyNode, ancestor);\n }\n // #6513\n // invoke insert hooks that may have been merged by create hooks.\n // e.g. for directives that uses the \"inserted\" hook.\n var insert = ancestor.data.hook.insert;\n if (insert.merged) {\n // start at index 1 to avoid re-invoking component mounted hook\n for (var i$2 = 1; i$2 < insert.fns.length; i$2++) {\n insert.fns[i$2]();\n }\n }\n } else {\n registerRef(ancestor);\n }\n ancestor = ancestor.parent;\n }\n }\n\n // destroy old node\n if (isDef(parentElm$1)) {\n removeVnodes(parentElm$1, [oldVnode], 0, 0);\n } else if (isDef(oldVnode.tag)) {\n invokeDestroyHook(oldVnode);\n }\n }\n }\n\n invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);\n return vnode.elm\n }\n}\n\n/* */\n\nvar directives = {\n create: updateDirectives,\n update: updateDirectives,\n destroy: function unbindDirectives (vnode) {\n updateDirectives(vnode, emptyNode);\n }\n}\n\nfunction updateDirectives (oldVnode, vnode) {\n if (oldVnode.data.directives || vnode.data.directives) {\n _update(oldVnode, vnode);\n }\n}\n\nfunction _update (oldVnode, vnode) {\n var isCreate = oldVnode === emptyNode;\n var isDestroy = vnode === emptyNode;\n var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);\n var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);\n\n var dirsWithInsert = [];\n var dirsWithPostpatch = [];\n\n var key, oldDir, dir;\n for (key in newDirs) {\n oldDir = oldDirs[key];\n dir = newDirs[key];\n if (!oldDir) {\n // new directive, bind\n callHook$1(dir, 'bind', vnode, oldVnode);\n if (dir.def && dir.def.inserted) {\n dirsWithInsert.push(dir);\n }\n } else {\n // existing directive, update\n dir.oldValue = oldDir.value;\n callHook$1(dir, 'update', vnode, oldVnode);\n if (dir.def && dir.def.componentUpdated) {\n dirsWithPostpatch.push(dir);\n }\n }\n }\n\n if (dirsWithInsert.length) {\n var callInsert = function () {\n for (var i = 0; i < dirsWithInsert.length; i++) {\n callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);\n }\n };\n if (isCreate) {\n mergeVNodeHook(vnode, 'insert', callInsert);\n } else {\n callInsert();\n }\n }\n\n if (dirsWithPostpatch.length) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n for (var i = 0; i < dirsWithPostpatch.length; i++) {\n callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);\n }\n });\n }\n\n if (!isCreate) {\n for (key in oldDirs) {\n if (!newDirs[key]) {\n // no longer present, unbind\n callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);\n }\n }\n }\n}\n\nvar emptyModifiers = Object.create(null);\n\nfunction normalizeDirectives$1 (\n dirs,\n vm\n) {\n var res = Object.create(null);\n if (!dirs) {\n // $flow-disable-line\n return res\n }\n var i, dir;\n for (i = 0; i < dirs.length; i++) {\n dir = dirs[i];\n if (!dir.modifiers) {\n // $flow-disable-line\n dir.modifiers = emptyModifiers;\n }\n res[getRawDirName(dir)] = dir;\n dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);\n }\n // $flow-disable-line\n return res\n}\n\nfunction getRawDirName (dir) {\n return dir.rawName || ((dir.name) + \".\" + (Object.keys(dir.modifiers || {}).join('.')))\n}\n\nfunction callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {\n var fn = dir.def && dir.def[hook];\n if (fn) {\n try {\n fn(vnode.elm, dir, vnode, oldVnode, isDestroy);\n } catch (e) {\n handleError(e, vnode.context, (\"directive \" + (dir.name) + \" \" + hook + \" hook\"));\n }\n }\n}\n\nvar baseModules = [\n ref,\n directives\n]\n\n/* */\n\nfunction updateAttrs (oldVnode, vnode) {\n var opts = vnode.componentOptions;\n if (isDef(opts) && opts.Ctor.options.inheritAttrs === false) {\n return\n }\n if (isUndef(oldVnode.data.attrs) && isUndef(vnode.data.attrs)) {\n return\n }\n var key, cur, old;\n var elm = vnode.elm;\n var oldAttrs = oldVnode.data.attrs || {};\n var attrs = vnode.data.attrs || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(attrs.__ob__)) {\n attrs = vnode.data.attrs = extend({}, attrs);\n }\n\n for (key in attrs) {\n cur = attrs[key];\n old = oldAttrs[key];\n if (old !== cur) {\n setAttr(elm, key, cur);\n }\n }\n // #4391: in IE9, setting type can reset value for input[type=radio]\n // #6666: IE/Edge forces progress value down to 1 before setting a max\n /* istanbul ignore if */\n if ((isIE || isEdge) && attrs.value !== oldAttrs.value) {\n setAttr(elm, 'value', attrs.value);\n }\n for (key in oldAttrs) {\n if (isUndef(attrs[key])) {\n if (isXlink(key)) {\n elm.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else if (!isEnumeratedAttr(key)) {\n elm.removeAttribute(key);\n }\n }\n }\n}\n\nfunction setAttr (el, key, value) {\n if (el.tagName.indexOf('-') > -1) {\n baseSetAttr(el, key, value);\n } else if (isBooleanAttr(key)) {\n // set attribute for blank value\n // e.g. <option disabled>Select one</option>\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // technically allowfullscreen is a boolean attribute for <iframe>,\n // but Flash expects a value of \"true\" when used on <embed> tag\n value = key === 'allowfullscreen' && el.tagName === 'EMBED'\n ? 'true'\n : key;\n el.setAttribute(key, value);\n }\n } else if (isEnumeratedAttr(key)) {\n el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');\n } else if (isXlink(key)) {\n if (isFalsyAttrValue(value)) {\n el.removeAttributeNS(xlinkNS, getXlinkProp(key));\n } else {\n el.setAttributeNS(xlinkNS, key, value);\n }\n } else {\n baseSetAttr(el, key, value);\n }\n}\n\nfunction baseSetAttr (el, key, value) {\n if (isFalsyAttrValue(value)) {\n el.removeAttribute(key);\n } else {\n // #7138: IE10 & 11 fires input event when setting placeholder on\n // <textarea>... block the first input event and remove the blocker\n // immediately.\n /* istanbul ignore if */\n if (\n isIE && !isIE9 &&\n el.tagName === 'TEXTAREA' &&\n key === 'placeholder' && !el.__ieph\n ) {\n var blocker = function (e) {\n e.stopImmediatePropagation();\n el.removeEventListener('input', blocker);\n };\n el.addEventListener('input', blocker);\n // $flow-disable-line\n el.__ieph = true; /* IE placeholder patched */\n }\n el.setAttribute(key, value);\n }\n}\n\nvar attrs = {\n create: updateAttrs,\n update: updateAttrs\n}\n\n/* */\n\nfunction updateClass (oldVnode, vnode) {\n var el = vnode.elm;\n var data = vnode.data;\n var oldData = oldVnode.data;\n if (\n isUndef(data.staticClass) &&\n isUndef(data.class) && (\n isUndef(oldData) || (\n isUndef(oldData.staticClass) &&\n isUndef(oldData.class)\n )\n )\n ) {\n return\n }\n\n var cls = genClassForVnode(vnode);\n\n // handle transition classes\n var transitionClass = el._transitionClasses;\n if (isDef(transitionClass)) {\n cls = concat(cls, stringifyClass(transitionClass));\n }\n\n // set the class\n if (cls !== el._prevClass) {\n el.setAttribute('class', cls);\n el._prevClass = cls;\n }\n}\n\nvar klass = {\n create: updateClass,\n update: updateClass\n}\n\n/* */\n\n/* */\n\n\n\n\n\n\n\n\n\n// add a raw attr (use this in preTransforms)\n\n\n\n\n\n\n\n\n// note: this only removes the attr from the Array (attrsList) so that it\n// doesn't get processed by processAttrs.\n// By default it does NOT remove it from the map (attrsMap) because the map is\n// needed during codegen.\n\n/* */\n\n/**\n * Cross-platform code generation for component v-model\n */\n\n\n/**\n * Cross-platform codegen helper for generating v-model value assignment code.\n */\n\n/* */\n\n// in some cases, the event used has to be determined at runtime\n// so we used some reserved tokens during compile.\nvar RANGE_TOKEN = '__r';\nvar CHECKBOX_RADIO_TOKEN = '__c';\n\n/* */\n\n// normalize v-model event tokens that can only be determined at runtime.\n// it's important to place the event as the first in the array because\n// the whole point is ensuring the v-model callback gets called before\n// user-attached handlers.\nfunction normalizeEvents (on) {\n /* istanbul ignore if */\n if (isDef(on[RANGE_TOKEN])) {\n // IE input[type=range] only supports `change` event\n var event = isIE ? 'change' : 'input';\n on[event] = [].concat(on[RANGE_TOKEN], on[event] || []);\n delete on[RANGE_TOKEN];\n }\n // This was originally intended to fix #4521 but no longer necessary\n // after 2.5. Keeping it for backwards compat with generated code from < 2.4\n /* istanbul ignore if */\n if (isDef(on[CHECKBOX_RADIO_TOKEN])) {\n on.change = [].concat(on[CHECKBOX_RADIO_TOKEN], on.change || []);\n delete on[CHECKBOX_RADIO_TOKEN];\n }\n}\n\nvar target$1;\n\nfunction createOnceHandler (handler, event, capture) {\n var _target = target$1; // save current target element in closure\n return function onceHandler () {\n var res = handler.apply(null, arguments);\n if (res !== null) {\n remove$2(event, onceHandler, capture, _target);\n }\n }\n}\n\nfunction add$1 (\n event,\n handler,\n once$$1,\n capture,\n passive\n) {\n handler = withMacroTask(handler);\n if (once$$1) { handler = createOnceHandler(handler, event, capture); }\n target$1.addEventListener(\n event,\n handler,\n supportsPassive\n ? { capture: capture, passive: passive }\n : capture\n );\n}\n\nfunction remove$2 (\n event,\n handler,\n capture,\n _target\n) {\n (_target || target$1).removeEventListener(\n event,\n handler._withTask || handler,\n capture\n );\n}\n\nfunction updateDOMListeners (oldVnode, vnode) {\n if (isUndef(oldVnode.data.on) && isUndef(vnode.data.on)) {\n return\n }\n var on = vnode.data.on || {};\n var oldOn = oldVnode.data.on || {};\n target$1 = vnode.elm;\n normalizeEvents(on);\n updateListeners(on, oldOn, add$1, remove$2, vnode.context);\n target$1 = undefined;\n}\n\nvar events = {\n create: updateDOMListeners,\n update: updateDOMListeners\n}\n\n/* */\n\nfunction updateDOMProps (oldVnode, vnode) {\n if (isUndef(oldVnode.data.domProps) && isUndef(vnode.data.domProps)) {\n return\n }\n var key, cur;\n var elm = vnode.elm;\n var oldProps = oldVnode.data.domProps || {};\n var props = vnode.data.domProps || {};\n // clone observed objects, as the user probably wants to mutate it\n if (isDef(props.__ob__)) {\n props = vnode.data.domProps = extend({}, props);\n }\n\n for (key in oldProps) {\n if (isUndef(props[key])) {\n elm[key] = '';\n }\n }\n for (key in props) {\n cur = props[key];\n // ignore children if the node has textContent or innerHTML,\n // as these will throw away existing DOM nodes and cause removal errors\n // on subsequent patches (#3360)\n if (key === 'textContent' || key === 'innerHTML') {\n if (vnode.children) { vnode.children.length = 0; }\n if (cur === oldProps[key]) { continue }\n // #6601 work around Chrome version <= 55 bug where single textNode\n // replaced by innerHTML/textContent retains its parentNode property\n if (elm.childNodes.length === 1) {\n elm.removeChild(elm.childNodes[0]);\n }\n }\n\n if (key === 'value') {\n // store value as _value as well since\n // non-string values will be stringified\n elm._value = cur;\n // avoid resetting cursor position when value is the same\n var strCur = isUndef(cur) ? '' : String(cur);\n if (shouldUpdateValue(elm, strCur)) {\n elm.value = strCur;\n }\n } else {\n elm[key] = cur;\n }\n }\n}\n\n// check platforms/web/util/attrs.js acceptValue\n\n\nfunction shouldUpdateValue (elm, checkVal) {\n return (!elm.composing && (\n elm.tagName === 'OPTION' ||\n isNotInFocusAndDirty(elm, checkVal) ||\n isDirtyWithModifiers(elm, checkVal)\n ))\n}\n\nfunction isNotInFocusAndDirty (elm, checkVal) {\n // return true when textbox (.number and .trim) loses focus and its value is\n // not equal to the updated value\n var notInFocus = true;\n // #6157\n // work around IE bug when accessing document.activeElement in an iframe\n try { notInFocus = document.activeElement !== elm; } catch (e) {}\n return notInFocus && elm.value !== checkVal\n}\n\nfunction isDirtyWithModifiers (elm, newVal) {\n var value = elm.value;\n var modifiers = elm._vModifiers; // injected by v-model runtime\n if (isDef(modifiers)) {\n if (modifiers.lazy) {\n // inputs with lazy should only be updated when not in focus\n return false\n }\n if (modifiers.number) {\n return toNumber(value) !== toNumber(newVal)\n }\n if (modifiers.trim) {\n return value.trim() !== newVal.trim()\n }\n }\n return value !== newVal\n}\n\nvar domProps = {\n create: updateDOMProps,\n update: updateDOMProps\n}\n\n/* */\n\nvar parseStyleText = cached(function (cssText) {\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());\n }\n });\n return res\n});\n\n// merge static and dynamic style data on the same vnode\nfunction normalizeStyleData (data) {\n var style = normalizeStyleBinding(data.style);\n // static style is pre-processed into an object during compilation\n // and is always a fresh object, so it's safe to merge into it\n return data.staticStyle\n ? extend(data.staticStyle, style)\n : style\n}\n\n// normalize possible array / string values into Object\nfunction normalizeStyleBinding (bindingStyle) {\n if (Array.isArray(bindingStyle)) {\n return toObject(bindingStyle)\n }\n if (typeof bindingStyle === 'string') {\n return parseStyleText(bindingStyle)\n }\n return bindingStyle\n}\n\n/**\n * parent component style should be after child's\n * so that parent component's style could override it\n */\nfunction getStyle (vnode, checkChild) {\n var res = {};\n var styleData;\n\n if (checkChild) {\n var childNode = vnode;\n while (childNode.componentInstance) {\n childNode = childNode.componentInstance._vnode;\n if (\n childNode && childNode.data &&\n (styleData = normalizeStyleData(childNode.data))\n ) {\n extend(res, styleData);\n }\n }\n }\n\n if ((styleData = normalizeStyleData(vnode.data))) {\n extend(res, styleData);\n }\n\n var parentNode = vnode;\n while ((parentNode = parentNode.parent)) {\n if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {\n extend(res, styleData);\n }\n }\n return res\n}\n\n/* */\n\nvar cssVarRE = /^--/;\nvar importantRE = /\\s*!important$/;\nvar setProp = function (el, name, val) {\n /* istanbul ignore if */\n if (cssVarRE.test(name)) {\n el.style.setProperty(name, val);\n } else if (importantRE.test(val)) {\n el.style.setProperty(name, val.replace(importantRE, ''), 'important');\n } else {\n var normalizedName = normalize(name);\n if (Array.isArray(val)) {\n // Support values array created by autoprefixer, e.g.\n // {display: [\"-webkit-box\", \"-ms-flexbox\", \"flex\"]}\n // Set them one by one, and the browser will only set those it can recognize\n for (var i = 0, len = val.length; i < len; i++) {\n el.style[normalizedName] = val[i];\n }\n } else {\n el.style[normalizedName] = val;\n }\n }\n};\n\nvar vendorNames = ['Webkit', 'Moz', 'ms'];\n\nvar emptyStyle;\nvar normalize = cached(function (prop) {\n emptyStyle = emptyStyle || document.createElement('div').style;\n prop = camelize(prop);\n if (prop !== 'filter' && (prop in emptyStyle)) {\n return prop\n }\n var capName = prop.charAt(0).toUpperCase() + prop.slice(1);\n for (var i = 0; i < vendorNames.length; i++) {\n var name = vendorNames[i] + capName;\n if (name in emptyStyle) {\n return name\n }\n }\n});\n\nfunction updateStyle (oldVnode, vnode) {\n var data = vnode.data;\n var oldData = oldVnode.data;\n\n if (isUndef(data.staticStyle) && isUndef(data.style) &&\n isUndef(oldData.staticStyle) && isUndef(oldData.style)\n ) {\n return\n }\n\n var cur, name;\n var el = vnode.elm;\n var oldStaticStyle = oldData.staticStyle;\n var oldStyleBinding = oldData.normalizedStyle || oldData.style || {};\n\n // if static style exists, stylebinding already merged into it when doing normalizeStyleData\n var oldStyle = oldStaticStyle || oldStyleBinding;\n\n var style = normalizeStyleBinding(vnode.data.style) || {};\n\n // store normalized style under a different key for next diff\n // make sure to clone it if it's reactive, since the user likely wants\n // to mutate it.\n vnode.data.normalizedStyle = isDef(style.__ob__)\n ? extend({}, style)\n : style;\n\n var newStyle = getStyle(vnode, true);\n\n for (name in oldStyle) {\n if (isUndef(newStyle[name])) {\n setProp(el, name, '');\n }\n }\n for (name in newStyle) {\n cur = newStyle[name];\n if (cur !== oldStyle[name]) {\n // ie9 setting to null has no effect, must use empty string\n setProp(el, name, cur == null ? '' : cur);\n }\n }\n}\n\nvar style = {\n create: updateStyle,\n update: updateStyle\n}\n\n/* */\n\n/**\n * Add class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction addClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.add(c); });\n } else {\n el.classList.add(cls);\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n el.setAttribute('class', (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for SVG since classList is not supported on\n * SVG elements in IE\n */\nfunction removeClass (el, cls) {\n /* istanbul ignore if */\n if (!cls || !(cls = cls.trim())) {\n return\n }\n\n /* istanbul ignore else */\n if (el.classList) {\n if (cls.indexOf(' ') > -1) {\n cls.split(/\\s+/).forEach(function (c) { return el.classList.remove(c); });\n } else {\n el.classList.remove(cls);\n }\n if (!el.classList.length) {\n el.removeAttribute('class');\n }\n } else {\n var cur = \" \" + (el.getAttribute('class') || '') + \" \";\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n cur = cur.trim();\n if (cur) {\n el.setAttribute('class', cur);\n } else {\n el.removeAttribute('class');\n }\n }\n}\n\n/* */\n\nfunction resolveTransition (def) {\n if (!def) {\n return\n }\n /* istanbul ignore else */\n if (typeof def === 'object') {\n var res = {};\n if (def.css !== false) {\n extend(res, autoCssTransition(def.name || 'v'));\n }\n extend(res, def);\n return res\n } else if (typeof def === 'string') {\n return autoCssTransition(def)\n }\n}\n\nvar autoCssTransition = cached(function (name) {\n return {\n enterClass: (name + \"-enter\"),\n enterToClass: (name + \"-enter-to\"),\n enterActiveClass: (name + \"-enter-active\"),\n leaveClass: (name + \"-leave\"),\n leaveToClass: (name + \"-leave-to\"),\n leaveActiveClass: (name + \"-leave-active\")\n }\n});\n\nvar hasTransition = inBrowser && !isIE9;\nvar TRANSITION = 'transition';\nvar ANIMATION = 'animation';\n\n// Transition property/event sniffing\nvar transitionProp = 'transition';\nvar transitionEndEvent = 'transitionend';\nvar animationProp = 'animation';\nvar animationEndEvent = 'animationend';\nif (hasTransition) {\n /* istanbul ignore if */\n if (window.ontransitionend === undefined &&\n window.onwebkittransitionend !== undefined\n ) {\n transitionProp = 'WebkitTransition';\n transitionEndEvent = 'webkitTransitionEnd';\n }\n if (window.onanimationend === undefined &&\n window.onwebkitanimationend !== undefined\n ) {\n animationProp = 'WebkitAnimation';\n animationEndEvent = 'webkitAnimationEnd';\n }\n}\n\n// binding to window is necessary to make hot reload work in IE in strict mode\nvar raf = inBrowser\n ? window.requestAnimationFrame\n ? window.requestAnimationFrame.bind(window)\n : setTimeout\n : /* istanbul ignore next */ function (fn) { return fn(); };\n\nfunction nextFrame (fn) {\n raf(function () {\n raf(fn);\n });\n}\n\nfunction addTransitionClass (el, cls) {\n var transitionClasses = el._transitionClasses || (el._transitionClasses = []);\n if (transitionClasses.indexOf(cls) < 0) {\n transitionClasses.push(cls);\n addClass(el, cls);\n }\n}\n\nfunction removeTransitionClass (el, cls) {\n if (el._transitionClasses) {\n remove(el._transitionClasses, cls);\n }\n removeClass(el, cls);\n}\n\nfunction whenTransitionEnds (\n el,\n expectedType,\n cb\n) {\n var ref = getTransitionInfo(el, expectedType);\n var type = ref.type;\n var timeout = ref.timeout;\n var propCount = ref.propCount;\n if (!type) { return cb() }\n var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;\n var ended = 0;\n var end = function () {\n el.removeEventListener(event, onEnd);\n cb();\n };\n var onEnd = function (e) {\n if (e.target === el) {\n if (++ended >= propCount) {\n end();\n }\n }\n };\n setTimeout(function () {\n if (ended < propCount) {\n end();\n }\n }, timeout + 1);\n el.addEventListener(event, onEnd);\n}\n\nvar transformRE = /\\b(transform|all)(,|$)/;\n\nfunction getTransitionInfo (el, expectedType) {\n var styles = window.getComputedStyle(el);\n var transitionDelays = styles[transitionProp + 'Delay'].split(', ');\n var transitionDurations = styles[transitionProp + 'Duration'].split(', ');\n var transitionTimeout = getTimeout(transitionDelays, transitionDurations);\n var animationDelays = styles[animationProp + 'Delay'].split(', ');\n var animationDurations = styles[animationProp + 'Duration'].split(', ');\n var animationTimeout = getTimeout(animationDelays, animationDurations);\n\n var type;\n var timeout = 0;\n var propCount = 0;\n /* istanbul ignore if */\n if (expectedType === TRANSITION) {\n if (transitionTimeout > 0) {\n type = TRANSITION;\n timeout = transitionTimeout;\n propCount = transitionDurations.length;\n }\n } else if (expectedType === ANIMATION) {\n if (animationTimeout > 0) {\n type = ANIMATION;\n timeout = animationTimeout;\n propCount = animationDurations.length;\n }\n } else {\n timeout = Math.max(transitionTimeout, animationTimeout);\n type = timeout > 0\n ? transitionTimeout > animationTimeout\n ? TRANSITION\n : ANIMATION\n : null;\n propCount = type\n ? type === TRANSITION\n ? transitionDurations.length\n : animationDurations.length\n : 0;\n }\n var hasTransform =\n type === TRANSITION &&\n transformRE.test(styles[transitionProp + 'Property']);\n return {\n type: type,\n timeout: timeout,\n propCount: propCount,\n hasTransform: hasTransform\n }\n}\n\nfunction getTimeout (delays, durations) {\n /* istanbul ignore next */\n while (delays.length < durations.length) {\n delays = delays.concat(delays);\n }\n\n return Math.max.apply(null, durations.map(function (d, i) {\n return toMs(d) + toMs(delays[i])\n }))\n}\n\nfunction toMs (s) {\n return Number(s.slice(0, -1)) * 1000\n}\n\n/* */\n\nfunction enter (vnode, toggleDisplay) {\n var el = vnode.elm;\n\n // call leave callback now\n if (isDef(el._leaveCb)) {\n el._leaveCb.cancelled = true;\n el._leaveCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data)) {\n return\n }\n\n /* istanbul ignore if */\n if (isDef(el._enterCb) || el.nodeType !== 1) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var enterClass = data.enterClass;\n var enterToClass = data.enterToClass;\n var enterActiveClass = data.enterActiveClass;\n var appearClass = data.appearClass;\n var appearToClass = data.appearToClass;\n var appearActiveClass = data.appearActiveClass;\n var beforeEnter = data.beforeEnter;\n var enter = data.enter;\n var afterEnter = data.afterEnter;\n var enterCancelled = data.enterCancelled;\n var beforeAppear = data.beforeAppear;\n var appear = data.appear;\n var afterAppear = data.afterAppear;\n var appearCancelled = data.appearCancelled;\n var duration = data.duration;\n\n // activeInstance will always be the <transition> component managing this\n // transition. One edge case to check is when the <transition> is placed\n // as the root node of a child component. In that case we need to check\n // <transition>'s parent for appear check.\n var context = activeInstance;\n var transitionNode = activeInstance.$vnode;\n while (transitionNode && transitionNode.parent) {\n transitionNode = transitionNode.parent;\n context = transitionNode.context;\n }\n\n var isAppear = !context._isMounted || !vnode.isRootInsert;\n\n if (isAppear && !appear && appear !== '') {\n return\n }\n\n var startClass = isAppear && appearClass\n ? appearClass\n : enterClass;\n var activeClass = isAppear && appearActiveClass\n ? appearActiveClass\n : enterActiveClass;\n var toClass = isAppear && appearToClass\n ? appearToClass\n : enterToClass;\n\n var beforeEnterHook = isAppear\n ? (beforeAppear || beforeEnter)\n : beforeEnter;\n var enterHook = isAppear\n ? (typeof appear === 'function' ? appear : enter)\n : enter;\n var afterEnterHook = isAppear\n ? (afterAppear || afterEnter)\n : afterEnter;\n var enterCancelledHook = isAppear\n ? (appearCancelled || enterCancelled)\n : enterCancelled;\n\n var explicitEnterDuration = toNumber(\n isObject(duration)\n ? duration.enter\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && explicitEnterDuration != null) {\n checkDuration(explicitEnterDuration, 'enter', vnode);\n }\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(enterHook);\n\n var cb = el._enterCb = once(function () {\n if (expectsCSS) {\n removeTransitionClass(el, toClass);\n removeTransitionClass(el, activeClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, startClass);\n }\n enterCancelledHook && enterCancelledHook(el);\n } else {\n afterEnterHook && afterEnterHook(el);\n }\n el._enterCb = null;\n });\n\n if (!vnode.data.show) {\n // remove pending leave element on enter by injecting an insert hook\n mergeVNodeHook(vnode, 'insert', function () {\n var parent = el.parentNode;\n var pendingNode = parent && parent._pending && parent._pending[vnode.key];\n if (pendingNode &&\n pendingNode.tag === vnode.tag &&\n pendingNode.elm._leaveCb\n ) {\n pendingNode.elm._leaveCb();\n }\n enterHook && enterHook(el, cb);\n });\n }\n\n // start enter transition\n beforeEnterHook && beforeEnterHook(el);\n if (expectsCSS) {\n addTransitionClass(el, startClass);\n addTransitionClass(el, activeClass);\n nextFrame(function () {\n removeTransitionClass(el, startClass);\n if (!cb.cancelled) {\n addTransitionClass(el, toClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitEnterDuration)) {\n setTimeout(cb, explicitEnterDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n\n if (vnode.data.show) {\n toggleDisplay && toggleDisplay();\n enterHook && enterHook(el, cb);\n }\n\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n}\n\nfunction leave (vnode, rm) {\n var el = vnode.elm;\n\n // call enter callback now\n if (isDef(el._enterCb)) {\n el._enterCb.cancelled = true;\n el._enterCb();\n }\n\n var data = resolveTransition(vnode.data.transition);\n if (isUndef(data) || el.nodeType !== 1) {\n return rm()\n }\n\n /* istanbul ignore if */\n if (isDef(el._leaveCb)) {\n return\n }\n\n var css = data.css;\n var type = data.type;\n var leaveClass = data.leaveClass;\n var leaveToClass = data.leaveToClass;\n var leaveActiveClass = data.leaveActiveClass;\n var beforeLeave = data.beforeLeave;\n var leave = data.leave;\n var afterLeave = data.afterLeave;\n var leaveCancelled = data.leaveCancelled;\n var delayLeave = data.delayLeave;\n var duration = data.duration;\n\n var expectsCSS = css !== false && !isIE9;\n var userWantsControl = getHookArgumentsLength(leave);\n\n var explicitLeaveDuration = toNumber(\n isObject(duration)\n ? duration.leave\n : duration\n );\n\n if (process.env.NODE_ENV !== 'production' && isDef(explicitLeaveDuration)) {\n checkDuration(explicitLeaveDuration, 'leave', vnode);\n }\n\n var cb = el._leaveCb = once(function () {\n if (el.parentNode && el.parentNode._pending) {\n el.parentNode._pending[vnode.key] = null;\n }\n if (expectsCSS) {\n removeTransitionClass(el, leaveToClass);\n removeTransitionClass(el, leaveActiveClass);\n }\n if (cb.cancelled) {\n if (expectsCSS) {\n removeTransitionClass(el, leaveClass);\n }\n leaveCancelled && leaveCancelled(el);\n } else {\n rm();\n afterLeave && afterLeave(el);\n }\n el._leaveCb = null;\n });\n\n if (delayLeave) {\n delayLeave(performLeave);\n } else {\n performLeave();\n }\n\n function performLeave () {\n // the delayed leave may have already been cancelled\n if (cb.cancelled) {\n return\n }\n // record leaving element\n if (!vnode.data.show) {\n (el.parentNode._pending || (el.parentNode._pending = {}))[(vnode.key)] = vnode;\n }\n beforeLeave && beforeLeave(el);\n if (expectsCSS) {\n addTransitionClass(el, leaveClass);\n addTransitionClass(el, leaveActiveClass);\n nextFrame(function () {\n removeTransitionClass(el, leaveClass);\n if (!cb.cancelled) {\n addTransitionClass(el, leaveToClass);\n if (!userWantsControl) {\n if (isValidDuration(explicitLeaveDuration)) {\n setTimeout(cb, explicitLeaveDuration);\n } else {\n whenTransitionEnds(el, type, cb);\n }\n }\n }\n });\n }\n leave && leave(el, cb);\n if (!expectsCSS && !userWantsControl) {\n cb();\n }\n }\n}\n\n// only used in dev mode\nfunction checkDuration (val, name, vnode) {\n if (typeof val !== 'number') {\n warn(\n \"<transition> explicit \" + name + \" duration is not a valid number - \" +\n \"got \" + (JSON.stringify(val)) + \".\",\n vnode.context\n );\n } else if (isNaN(val)) {\n warn(\n \"<transition> explicit \" + name + \" duration is NaN - \" +\n 'the duration expression might be incorrect.',\n vnode.context\n );\n }\n}\n\nfunction isValidDuration (val) {\n return typeof val === 'number' && !isNaN(val)\n}\n\n/**\n * Normalize a transition hook's argument length. The hook may be:\n * - a merged hook (invoker) with the original in .fns\n * - a wrapped component method (check ._length)\n * - a plain function (.length)\n */\nfunction getHookArgumentsLength (fn) {\n if (isUndef(fn)) {\n return false\n }\n var invokerFns = fn.fns;\n if (isDef(invokerFns)) {\n // invoker\n return getHookArgumentsLength(\n Array.isArray(invokerFns)\n ? invokerFns[0]\n : invokerFns\n )\n } else {\n return (fn._length || fn.length) > 1\n }\n}\n\nfunction _enter (_, vnode) {\n if (vnode.data.show !== true) {\n enter(vnode);\n }\n}\n\nvar transition = inBrowser ? {\n create: _enter,\n activate: _enter,\n remove: function remove$$1 (vnode, rm) {\n /* istanbul ignore else */\n if (vnode.data.show !== true) {\n leave(vnode, rm);\n } else {\n rm();\n }\n }\n} : {}\n\nvar platformModules = [\n attrs,\n klass,\n events,\n domProps,\n style,\n transition\n]\n\n/* */\n\n// the directive module should be applied last, after all\n// built-in modules have been applied.\nvar modules = platformModules.concat(baseModules);\n\nvar patch = createPatchFunction({ nodeOps: nodeOps, modules: modules });\n\n/**\n * Not type checking this file because flow doesn't like attaching\n * properties to Elements.\n */\n\n/* istanbul ignore if */\nif (isIE9) {\n // http://www.matts411.com/post/internet-explorer-9-oninput/\n document.addEventListener('selectionchange', function () {\n var el = document.activeElement;\n if (el && el.vmodel) {\n trigger(el, 'input');\n }\n });\n}\n\nvar directive = {\n inserted: function inserted (el, binding, vnode, oldVnode) {\n if (vnode.tag === 'select') {\n // #6903\n if (oldVnode.elm && !oldVnode.elm._vOptions) {\n mergeVNodeHook(vnode, 'postpatch', function () {\n directive.componentUpdated(el, binding, vnode);\n });\n } else {\n setSelected(el, binding, vnode.context);\n }\n el._vOptions = [].map.call(el.options, getValue);\n } else if (vnode.tag === 'textarea' || isTextInputType(el.type)) {\n el._vModifiers = binding.modifiers;\n if (!binding.modifiers.lazy) {\n el.addEventListener('compositionstart', onCompositionStart);\n el.addEventListener('compositionend', onCompositionEnd);\n // Safari < 10.2 & UIWebView doesn't fire compositionend when\n // switching focus before confirming composition choice\n // this also fixes the issue where some browsers e.g. iOS Chrome\n // fires \"change\" instead of \"input\" on autocomplete.\n el.addEventListener('change', onCompositionEnd);\n /* istanbul ignore if */\n if (isIE9) {\n el.vmodel = true;\n }\n }\n }\n },\n\n componentUpdated: function componentUpdated (el, binding, vnode) {\n if (vnode.tag === 'select') {\n setSelected(el, binding, vnode.context);\n // in case the options rendered by v-for have changed,\n // it's possible that the value is out-of-sync with the rendered options.\n // detect such cases and filter out values that no longer has a matching\n // option in the DOM.\n var prevOptions = el._vOptions;\n var curOptions = el._vOptions = [].map.call(el.options, getValue);\n if (curOptions.some(function (o, i) { return !looseEqual(o, prevOptions[i]); })) {\n // trigger change event if\n // no matching option found for at least one value\n var needReset = el.multiple\n ? binding.value.some(function (v) { return hasNoMatchingOption(v, curOptions); })\n : binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, curOptions);\n if (needReset) {\n trigger(el, 'change');\n }\n }\n }\n }\n};\n\nfunction setSelected (el, binding, vm) {\n actuallySetSelected(el, binding, vm);\n /* istanbul ignore if */\n if (isIE || isEdge) {\n setTimeout(function () {\n actuallySetSelected(el, binding, vm);\n }, 0);\n }\n}\n\nfunction actuallySetSelected (el, binding, vm) {\n var value = binding.value;\n var isMultiple = el.multiple;\n if (isMultiple && !Array.isArray(value)) {\n process.env.NODE_ENV !== 'production' && warn(\n \"<select multiple v-model=\\\"\" + (binding.expression) + \"\\\"> \" +\n \"expects an Array value for its binding, but got \" + (Object.prototype.toString.call(value).slice(8, -1)),\n vm\n );\n return\n }\n var selected, option;\n for (var i = 0, l = el.options.length; i < l; i++) {\n option = el.options[i];\n if (isMultiple) {\n selected = looseIndexOf(value, getValue(option)) > -1;\n if (option.selected !== selected) {\n option.selected = selected;\n }\n } else {\n if (looseEqual(getValue(option), value)) {\n if (el.selectedIndex !== i) {\n el.selectedIndex = i;\n }\n return\n }\n }\n }\n if (!isMultiple) {\n el.selectedIndex = -1;\n }\n}\n\nfunction hasNoMatchingOption (value, options) {\n return options.every(function (o) { return !looseEqual(o, value); })\n}\n\nfunction getValue (option) {\n return '_value' in option\n ? option._value\n : option.value\n}\n\nfunction onCompositionStart (e) {\n e.target.composing = true;\n}\n\nfunction onCompositionEnd (e) {\n // prevent triggering an input event for no reason\n if (!e.target.composing) { return }\n e.target.composing = false;\n trigger(e.target, 'input');\n}\n\nfunction trigger (el, type) {\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, true, true);\n el.dispatchEvent(e);\n}\n\n/* */\n\n// recursively search for possible transition defined inside the component root\nfunction locateNode (vnode) {\n return vnode.componentInstance && (!vnode.data || !vnode.data.transition)\n ? locateNode(vnode.componentInstance._vnode)\n : vnode\n}\n\nvar show = {\n bind: function bind (el, ref, vnode) {\n var value = ref.value;\n\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n var originalDisplay = el.__vOriginalDisplay =\n el.style.display === 'none' ? '' : el.style.display;\n if (value && transition$$1) {\n vnode.data.show = true;\n enter(vnode, function () {\n el.style.display = originalDisplay;\n });\n } else {\n el.style.display = value ? originalDisplay : 'none';\n }\n },\n\n update: function update (el, ref, vnode) {\n var value = ref.value;\n var oldValue = ref.oldValue;\n\n /* istanbul ignore if */\n if (!value === !oldValue) { return }\n vnode = locateNode(vnode);\n var transition$$1 = vnode.data && vnode.data.transition;\n if (transition$$1) {\n vnode.data.show = true;\n if (value) {\n enter(vnode, function () {\n el.style.display = el.__vOriginalDisplay;\n });\n } else {\n leave(vnode, function () {\n el.style.display = 'none';\n });\n }\n } else {\n el.style.display = value ? el.__vOriginalDisplay : 'none';\n }\n },\n\n unbind: function unbind (\n el,\n binding,\n vnode,\n oldVnode,\n isDestroy\n ) {\n if (!isDestroy) {\n el.style.display = el.__vOriginalDisplay;\n }\n }\n}\n\nvar platformDirectives = {\n model: directive,\n show: show\n}\n\n/* */\n\n// Provides transition support for a single element/component.\n// supports transition mode (out-in / in-out)\n\nvar transitionProps = {\n name: String,\n appear: Boolean,\n css: Boolean,\n mode: String,\n type: String,\n enterClass: String,\n leaveClass: String,\n enterToClass: String,\n leaveToClass: String,\n enterActiveClass: String,\n leaveActiveClass: String,\n appearClass: String,\n appearActiveClass: String,\n appearToClass: String,\n duration: [Number, String, Object]\n};\n\n// in case the child is also an abstract component, e.g. <keep-alive>\n// we want to recursively retrieve the real component to be rendered\nfunction getRealChild (vnode) {\n var compOptions = vnode && vnode.componentOptions;\n if (compOptions && compOptions.Ctor.options.abstract) {\n return getRealChild(getFirstComponentChild(compOptions.children))\n } else {\n return vnode\n }\n}\n\nfunction extractTransitionData (comp) {\n var data = {};\n var options = comp.$options;\n // props\n for (var key in options.propsData) {\n data[key] = comp[key];\n }\n // events.\n // extract listeners and pass them directly to the transition methods\n var listeners = options._parentListeners;\n for (var key$1 in listeners) {\n data[camelize(key$1)] = listeners[key$1];\n }\n return data\n}\n\nfunction placeholder (h, rawChild) {\n if (/\\d-keep-alive$/.test(rawChild.tag)) {\n return h('keep-alive', {\n props: rawChild.componentOptions.propsData\n })\n }\n}\n\nfunction hasParentTransition (vnode) {\n while ((vnode = vnode.parent)) {\n if (vnode.data.transition) {\n return true\n }\n }\n}\n\nfunction isSameChild (child, oldChild) {\n return oldChild.key === child.key && oldChild.tag === child.tag\n}\n\nvar Transition = {\n name: 'transition',\n props: transitionProps,\n abstract: true,\n\n render: function render (h) {\n var this$1 = this;\n\n var children = this.$slots.default;\n if (!children) {\n return\n }\n\n // filter out text nodes (possible whitespaces)\n children = children.filter(function (c) { return c.tag || isAsyncPlaceholder(c); });\n /* istanbul ignore if */\n if (!children.length) {\n return\n }\n\n // warn multiple elements\n if (process.env.NODE_ENV !== 'production' && children.length > 1) {\n warn(\n '<transition> can only be used on a single element. Use ' +\n '<transition-group> for lists.',\n this.$parent\n );\n }\n\n var mode = this.mode;\n\n // warn invalid mode\n if (process.env.NODE_ENV !== 'production' &&\n mode && mode !== 'in-out' && mode !== 'out-in'\n ) {\n warn(\n 'invalid <transition> mode: ' + mode,\n this.$parent\n );\n }\n\n var rawChild = children[0];\n\n // if this is a component root node and the component's\n // parent container node also has transition, skip.\n if (hasParentTransition(this.$vnode)) {\n return rawChild\n }\n\n // apply transition data to child\n // use getRealChild() to ignore abstract components e.g. keep-alive\n var child = getRealChild(rawChild);\n /* istanbul ignore if */\n if (!child) {\n return rawChild\n }\n\n if (this._leaving) {\n return placeholder(h, rawChild)\n }\n\n // ensure a key that is unique to the vnode type and to this transition\n // component instance. This key will be used to remove pending leaving nodes\n // during entering.\n var id = \"__transition-\" + (this._uid) + \"-\";\n child.key = child.key == null\n ? child.isComment\n ? id + 'comment'\n : id + child.tag\n : isPrimitive(child.key)\n ? (String(child.key).indexOf(id) === 0 ? child.key : id + child.key)\n : child.key;\n\n var data = (child.data || (child.data = {})).transition = extractTransitionData(this);\n var oldRawChild = this._vnode;\n var oldChild = getRealChild(oldRawChild);\n\n // mark v-show\n // so that the transition module can hand over the control to the directive\n if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {\n child.data.show = true;\n }\n\n if (\n oldChild &&\n oldChild.data &&\n !isSameChild(child, oldChild) &&\n !isAsyncPlaceholder(oldChild) &&\n // #6687 component root is a comment node\n !(oldChild.componentInstance && oldChild.componentInstance._vnode.isComment)\n ) {\n // replace old child transition data with fresh one\n // important for dynamic transitions!\n var oldData = oldChild.data.transition = extend({}, data);\n // handle transition mode\n if (mode === 'out-in') {\n // return placeholder node and queue update when leave finishes\n this._leaving = true;\n mergeVNodeHook(oldData, 'afterLeave', function () {\n this$1._leaving = false;\n this$1.$forceUpdate();\n });\n return placeholder(h, rawChild)\n } else if (mode === 'in-out') {\n if (isAsyncPlaceholder(child)) {\n return oldRawChild\n }\n var delayedLeave;\n var performLeave = function () { delayedLeave(); };\n mergeVNodeHook(data, 'afterEnter', performLeave);\n mergeVNodeHook(data, 'enterCancelled', performLeave);\n mergeVNodeHook(oldData, 'delayLeave', function (leave) { delayedLeave = leave; });\n }\n }\n\n return rawChild\n }\n}\n\n/* */\n\n// Provides transition support for list items.\n// supports move transitions using the FLIP technique.\n\n// Because the vdom's children update algorithm is \"unstable\" - i.e.\n// it doesn't guarantee the relative positioning of removed elements,\n// we force transition-group to update its children into two passes:\n// in the first pass, we remove all nodes that need to be removed,\n// triggering their leaving transition; in the second pass, we insert/move\n// into the final desired state. This way in the second pass removed\n// nodes will remain where they should be.\n\nvar props = extend({\n tag: String,\n moveClass: String\n}, transitionProps);\n\ndelete props.mode;\n\nvar TransitionGroup = {\n props: props,\n\n render: function render (h) {\n var tag = this.tag || this.$vnode.data.tag || 'span';\n var map = Object.create(null);\n var prevChildren = this.prevChildren = this.children;\n var rawChildren = this.$slots.default || [];\n var children = this.children = [];\n var transitionData = extractTransitionData(this);\n\n for (var i = 0; i < rawChildren.length; i++) {\n var c = rawChildren[i];\n if (c.tag) {\n if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {\n children.push(c);\n map[c.key] = c\n ;(c.data || (c.data = {})).transition = transitionData;\n } else if (process.env.NODE_ENV !== 'production') {\n var opts = c.componentOptions;\n var name = opts ? (opts.Ctor.options.name || opts.tag || '') : c.tag;\n warn((\"<transition-group> children must be keyed: <\" + name + \">\"));\n }\n }\n }\n\n if (prevChildren) {\n var kept = [];\n var removed = [];\n for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {\n var c$1 = prevChildren[i$1];\n c$1.data.transition = transitionData;\n c$1.data.pos = c$1.elm.getBoundingClientRect();\n if (map[c$1.key]) {\n kept.push(c$1);\n } else {\n removed.push(c$1);\n }\n }\n this.kept = h(tag, null, kept);\n this.removed = removed;\n }\n\n return h(tag, null, children)\n },\n\n beforeUpdate: function beforeUpdate () {\n // force removing pass\n this.__patch__(\n this._vnode,\n this.kept,\n false, // hydrating\n true // removeOnly (!important, avoids unnecessary moves)\n );\n this._vnode = this.kept;\n },\n\n updated: function updated () {\n var children = this.prevChildren;\n var moveClass = this.moveClass || ((this.name || 'v') + '-move');\n if (!children.length || !this.hasMove(children[0].elm, moveClass)) {\n return\n }\n\n // we divide the work into three loops to avoid mixing DOM reads and writes\n // in each iteration - which helps prevent layout thrashing.\n children.forEach(callPendingCbs);\n children.forEach(recordPosition);\n children.forEach(applyTranslation);\n\n // force reflow to put everything in position\n // assign to this to avoid being removed in tree-shaking\n // $flow-disable-line\n this._reflow = document.body.offsetHeight;\n\n children.forEach(function (c) {\n if (c.data.moved) {\n var el = c.elm;\n var s = el.style;\n addTransitionClass(el, moveClass);\n s.transform = s.WebkitTransform = s.transitionDuration = '';\n el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {\n if (!e || /transform$/.test(e.propertyName)) {\n el.removeEventListener(transitionEndEvent, cb);\n el._moveCb = null;\n removeTransitionClass(el, moveClass);\n }\n });\n }\n });\n },\n\n methods: {\n hasMove: function hasMove (el, moveClass) {\n /* istanbul ignore if */\n if (!hasTransition) {\n return false\n }\n /* istanbul ignore if */\n if (this._hasMove) {\n return this._hasMove\n }\n // Detect whether an element with the move class applied has\n // CSS transitions. Since the element may be inside an entering\n // transition at this very moment, we make a clone of it and remove\n // all other transition classes applied to ensure only the move class\n // is applied.\n var clone = el.cloneNode();\n if (el._transitionClasses) {\n el._transitionClasses.forEach(function (cls) { removeClass(clone, cls); });\n }\n addClass(clone, moveClass);\n clone.style.display = 'none';\n this.$el.appendChild(clone);\n var info = getTransitionInfo(clone);\n this.$el.removeChild(clone);\n return (this._hasMove = info.hasTransform)\n }\n }\n}\n\nfunction callPendingCbs (c) {\n /* istanbul ignore if */\n if (c.elm._moveCb) {\n c.elm._moveCb();\n }\n /* istanbul ignore if */\n if (c.elm._enterCb) {\n c.elm._enterCb();\n }\n}\n\nfunction recordPosition (c) {\n c.data.newPos = c.elm.getBoundingClientRect();\n}\n\nfunction applyTranslation (c) {\n var oldPos = c.data.pos;\n var newPos = c.data.newPos;\n var dx = oldPos.left - newPos.left;\n var dy = oldPos.top - newPos.top;\n if (dx || dy) {\n c.data.moved = true;\n var s = c.elm.style;\n s.transform = s.WebkitTransform = \"translate(\" + dx + \"px,\" + dy + \"px)\";\n s.transitionDuration = '0s';\n }\n}\n\nvar platformComponents = {\n Transition: Transition,\n TransitionGroup: TransitionGroup\n}\n\n/* */\n\n// install platform specific utils\nVue.config.mustUseProp = mustUseProp;\nVue.config.isReservedTag = isReservedTag;\nVue.config.isReservedAttr = isReservedAttr;\nVue.config.getTagNamespace = getTagNamespace;\nVue.config.isUnknownElement = isUnknownElement;\n\n// install platform runtime directives & components\nextend(Vue.options.directives, platformDirectives);\nextend(Vue.options.components, platformComponents);\n\n// install platform patch function\nVue.prototype.__patch__ = inBrowser ? patch : noop;\n\n// public mount method\nVue.prototype.$mount = function (\n el,\n hydrating\n) {\n el = el && inBrowser ? query(el) : undefined;\n return mountComponent(this, el, hydrating)\n};\n\n// devtools global hook\n/* istanbul ignore next */\nif (inBrowser) {\n setTimeout(function () {\n if (config.devtools) {\n if (devtools) {\n devtools.emit('init', Vue);\n } else if (\n process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n isChrome\n ) {\n console[console.info ? 'info' : 'log'](\n 'Download the Vue Devtools extension for a better development experience:\\n' +\n 'https://github.com/vuejs/vue-devtools'\n );\n }\n }\n if (process.env.NODE_ENV !== 'production' &&\n process.env.NODE_ENV !== 'test' &&\n config.productionTip !== false &&\n typeof console !== 'undefined'\n ) {\n console[console.info ? 'info' : 'log'](\n \"You are running Vue in development mode.\\n\" +\n \"Make sure to turn on production mode when deploying for production.\\n\" +\n \"See more tips at https://vuejs.org/guide/deployment.html\"\n );\n }\n }, 0);\n}\n\n/* */\n\nexport default Vue;\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","module.exports = false;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","/**\n * @license\n * Video.js 6.12.1 <http://videojs.com/>\n * Copyright Brightcove, Inc. <https://www.brightcove.com/>\n * Available under Apache License Version 2.0\n * <https://github.com/videojs/video.js/blob/master/LICENSE>\n *\n * Includes vtt.js <https://github.com/mozilla/vtt.js>\n * Available under Apache License Version 2.0\n * <https://github.com/mozilla/vtt.js/blob/master/LICENSE>\n */\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar window = _interopDefault(require('global/window'));\nvar document = _interopDefault(require('global/document'));\nvar tsml = _interopDefault(require('tsml'));\nvar safeParseTuple = _interopDefault(require('safe-json-parse/tuple'));\nvar xhr = _interopDefault(require('xhr'));\nvar vtt = _interopDefault(require('videojs-vtt.js'));\n\nvar version = \"6.12.1\";\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window.navigator && window.navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n\n/*\n * Device is an iPhone\n *\n * @type {Boolean}\n * @constant\n * @private\n */\nvar IS_IPAD = /iPad/i.test(USER_AGENT);\n\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n return null;\n}();\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\nvar ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n return null;\n}();\n\n// Old Android is defined as Version older than 2.3, and requiring a webkit version of the android browser\nvar IS_OLD_ANDROID = IS_ANDROID && /webkit/i.test(USER_AGENT) && ANDROID_VERSION < 2.3;\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\nvar IS_EDGE = /Edge/i.test(USER_AGENT);\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n return null;\n}();\nvar IS_IE8 = /MSIE\\s8\\.0/.test(USER_AGENT);\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar TOUCH_ENABLED = isReal() && ('ontouchstart' in window || window.navigator.maxTouchPoints || window.DocumentTouch && window.document instanceof window.DocumentTouch);\n\nvar BACKGROUND_SIZE_SUPPORTED = isReal() && 'backgroundSize' in window.document.createElement('video').style;\n\nvar browser = (Object.freeze || Object)({\n\tIS_IPAD: IS_IPAD,\n\tIS_IPHONE: IS_IPHONE,\n\tIS_IPOD: IS_IPOD,\n\tIS_IOS: IS_IOS,\n\tIOS_VERSION: IOS_VERSION,\n\tIS_ANDROID: IS_ANDROID,\n\tANDROID_VERSION: ANDROID_VERSION,\n\tIS_OLD_ANDROID: IS_OLD_ANDROID,\n\tIS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n\tIS_FIREFOX: IS_FIREFOX,\n\tIS_EDGE: IS_EDGE,\n\tIS_CHROME: IS_CHROME,\n\tCHROME_VERSION: CHROME_VERSION,\n\tIS_IE8: IS_IE8,\n\tIE_VERSION: IE_VERSION,\n\tIS_SAFARI: IS_SAFARI,\n\tIS_ANY_SAFARI: IS_ANY_SAFARI,\n\tTOUCH_ENABLED: TOUCH_ENABLED,\n\tBACKGROUND_SIZE_SUPPORTED: BACKGROUND_SIZE_SUPPORTED\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\n\n\n\n\n\n\n\n\n\n\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\n\n\n\n\n\n\n\n\n\n\nvar taggedTemplateLiteralLoose = function (strings, raw) {\n strings.raw = raw;\n return strings;\n};\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\nfunction reduce(object, fn) {\n var initial = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\nfunction assign(target) {\n for (var _len = arguments.length, sources = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return Object.assign.apply(Object, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n\n return target;\n}\n\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nfunction isObject(value) {\n return !!value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object';\n}\n\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log = void 0;\n\n// This is the private tracking variable for logging level.\nvar level = 'info';\n\n// This is the private tracking variable for the logging history.\nvar history = [];\n\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n *\n * @param {boolean} [stringify]\n * By default, only old IEs should get console argument stringification,\n * but this is exposed as a parameter to facilitate testing.\n */\nvar logByType = function logByType(type, args) {\n var stringify = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : !!IE_VERSION && IE_VERSION < 11;\n\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp('^(' + lvl + ')$');\n\n if (type !== 'log') {\n\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n }\n\n // Add a clone of the args at this point to history.\n if (history) {\n history.push([].concat(args));\n }\n\n // Add console prefix after adding to history.\n args.unshift('VIDEOJS:');\n\n // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n if (!window.console) {\n return;\n }\n\n // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n var fn = window.console[type];\n\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window.console.info || window.console.log;\n }\n\n // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n\n // IEs previous to 11 log objects uselessly as \"[object Object]\"; so, JSONify\n // objects and arrays for those less-capable browsers.\n if (stringify) {\n args = args.map(function (a) {\n if (isObject(a) || Array.isArray(a)) {\n try {\n return JSON.stringify(a);\n } catch (x) {\n return String(a);\n }\n }\n\n // Cast to string before joining, so we get null and undefined explicitly\n // included in output (as we would in a modern console).\n return String(a);\n }).join(' ');\n }\n\n // Old IE versions do not allow .apply() for console methods (they are\n // reported as objects rather than functions).\n if (!fn.apply) {\n fn(args);\n } else {\n fn[Array.isArray(args) ? 'apply' : 'call'](window.console, args);\n }\n};\n\n/**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * @class\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\nlog = function log() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', args);\n};\n\n/**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\nlog.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n};\n\n/**\n * Get or set the current logging level. If a string matching a key from\n * {@link log.levels} is provided, acts as a setter. Regardless of argument,\n * returns the current logging level.\n *\n * @param {string} [lvl]\n * Pass to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\nlog.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error('\"' + lvl + '\" in not a valid log level');\n }\n level = lvl;\n }\n return level;\n};\n\n/**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\nlog.history = function () {\n return history ? [].concat(history) : [];\n};\n\n/**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\nlog.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n};\n\n/**\n * Disable history tracking if it is currently enabled.\n */\nlog.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n};\n\n/**\n * Enable history tracking if it is currently disabled.\n */\nlog.history.enable = function () {\n if (history === null) {\n history = [];\n }\n};\n\n/**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\nlog.error = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', args);\n};\n\n/**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\nlog.warn = function () {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', args);\n};\n\n/**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\nlog.debug = function () {\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', args);\n};\n\nvar log$1 = log;\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle with an IE8 fallback.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a null-check to\n * make sure that the player doesn't break in these cases.\n *\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n *\n * @static\n * @const\n */\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window.getComputedStyle === 'function') {\n var cs = window.getComputedStyle(el);\n\n return cs ? cs[prop] : '';\n }\n\n return el.currentStyle[prop] || '';\n}\n\nvar _templateObject = taggedTemplateLiteralLoose(['Setting attributes in the second argument of createEl()\\n has been deprecated. Use the third argument instead.\\n createEl(type, properties, attributes). Attempting to set ', ' to ', '.'], ['Setting attributes in the second argument of createEl()\\n has been deprecated. Use the third argument instead.\\n createEl(type, properties, attributes). Attempting to set ', ' to ', '.']);\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * - True if the string is non-blank\n * - False otherwise\n *\n */\nfunction isNonBlankString(str) {\n return typeof str === 'string' && /\\S/.test(str);\n}\n\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n *\n */\nfunction throwIfWhitespace(str) {\n if (/\\s/.test(str)) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n\n/**\n * Whether the current DOM interface appears to be real.\n *\n * @return {Boolean}\n */\nfunction isReal() {\n return (\n\n // Both document and window will never be undefined thanks to `global`.\n document === window.document &&\n\n // In IE < 9, DOM methods return \"object\" as their type, so all we can\n // confidently check is that it exists.\n typeof document.createElement !== 'undefined'\n );\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The thing to check\n *\n * @return {boolean}\n * - True if it is a DOM element\n * - False otherwise\n */\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n *\n */\nfunction isInFrame() {\n\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window.parent !== window.self;\n } catch (x) {\n return true;\n }\n}\n\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document[method](null);\n }\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document;\n\n return ctx[method] && ctx[method](selector);\n };\n}\n\n/**\n * Creates an element and applies properties.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {String|Element|TextNode|Array|Function} [content]\n * Contents for the element (see: {@link dom:normalizeContent})\n *\n * @return {Element}\n * The element that was created.\n */\nfunction createEl() {\n var tagName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'div';\n var properties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var content = arguments[3];\n\n var el = document.createElement(tagName);\n\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName];\n\n // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log$1.warn(tsml(_templateObject, propName, val));\n el.setAttribute(propName, val);\n\n // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else {\n el[propName] = val;\n }\n });\n\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n return el;\n}\n\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n\n/**\n * Check if an element has a CSS class\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * - True if the element had the class\n * - False otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n return classRegExp(classToCheck).test(element.className);\n}\n\n/**\n * Add a CSS class name to an element\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The dom element with the added class name.\n */\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd);\n\n // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n\n/**\n * Remove a CSS class name from an element\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The dom element with class name removed.\n */\nfunction removeClass(element, classToRemove) {\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n\n/**\n * The callback definition for toggleElClass.\n *\n * @callback Dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * - If true the `classToToggle` will get added to `element`.\n * - If false the `classToToggle` will get removed from `element`.\n * - If undefined this callback will be ignored\n */\n\n/**\n * Adds or removes a CSS class name on an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled\n *\n * @param {boolean|PredicateCallback} [predicate]\n * See the return value for {@link Dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\nfunction toggleClass(element, classToToggle, predicate) {\n\n // This CANNOT use `classList` internally because IE does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n }\n\n // If the necessary class operation matches the current state of the\n // element, no action is required.\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n\n/**\n * Get an element's attribute values, as defined on the HTML tag\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute (which shouldn't be used with HTML)\n * This will return true or false for boolean attributes.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element.\n */\nfunction getAttributes(tag) {\n var obj = {};\n\n // known boolean attributes\n // we can check for matching boolean properties, but older browsers\n // won't know about HTML5 boolean attributes that we still read from\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value;\n\n // check for known booleans\n // the matching element property will return a value for typeof\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n\n/**\n * Get the value of an element's attribute\n *\n * @param {Element} el\n * A DOM element\n *\n * @param {string} attribute\n * Attribute to get the value of\n *\n * @return {string}\n * value of the attribute\n */\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n\n/**\n * Set the value of an element's attribute\n *\n * @param {Element} el\n * A DOM element\n *\n * @param {string} attribute\n * Attribute to set\n *\n * @param {string} value\n * Value to set the attribute to\n */\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n\n/**\n * Remove an element's attribute\n *\n * @param {Element} el\n * A DOM element\n *\n * @param {string} attribute\n * Attribute to remove\n */\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n\n/**\n * Attempt to block the ability to select text while dragging controls\n */\nfunction blockTextSelection() {\n document.body.focus();\n document.onselectstart = function () {\n return false;\n };\n}\n\n/**\n * Turn off text selection blocking\n */\nfunction unblockTextSelection() {\n document.onselectstart = function () {\n return true;\n };\n}\n\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain\n */\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n\n/**\n * The postion of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left\n *\n * @property {number} top\n * Pixels on top\n */\n\n/**\n * Offset Left.\n * getBoundingClientRect technique from\n * John Resig\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\nfunction findPosition(el) {\n var box = void 0;\n\n if (el.getBoundingClientRect && el.parentNode) {\n box = el.getBoundingClientRect();\n }\n\n if (!box) {\n return {\n left: 0,\n top: 0\n };\n }\n\n var docEl = document.documentElement;\n var body = document.body;\n\n var clientLeft = docEl.clientLeft || body.clientLeft || 0;\n var scrollLeft = window.pageXOffset || body.scrollLeft;\n var left = box.left + scrollLeft - clientLeft;\n\n var clientTop = docEl.clientTop || body.clientTop || 0;\n var scrollTop = window.pageYOffset || body.scrollTop;\n var top = box.top + scrollTop - clientTop;\n\n // Android sometimes returns slightly off decimal values, so need to round\n return {\n left: Math.round(left),\n top: Math.round(top)\n };\n}\n\n/**\n * x and y coordinates for a dom element or mouse pointer\n *\n * @typedef {Object} Dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get pointer position in element\n * Returns an object with x and y coordinates.\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on\n *\n * @param {EventTarget~Event} event\n * Event object\n *\n * @return {Dom~Coordinates}\n * A Coordinates object corresponding to the mouse position.\n *\n */\nfunction getPointerPosition(el, event) {\n var position = {};\n var box = findPosition(el);\n var boxW = el.offsetWidth;\n var boxH = el.offsetHeight;\n\n var boxY = box.top;\n var boxX = box.left;\n var pageY = event.pageY;\n var pageX = event.pageX;\n\n if (event.changedTouches) {\n pageX = event.changedTouches[0].pageX;\n pageY = event.changedTouches[0].pageY;\n }\n\n position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));\n position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));\n\n return position;\n}\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * - True if it is a text node\n * - False otherwise\n */\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n return el;\n}\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but protects\n * from falling into the trap of simply writing to `innerHTML`, which is\n * an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {String|Element|TextNode|Array|Function} content\n * - String: Normalized into a text node.\n * - Element/TextNode: Passed through.\n * - Array: A one-dimensional array of strings, elements, nodes, or functions\n * (which return single strings, elements, or nodes).\n * - Function: If the sole argument, is expected to produce a string, element,\n * node, or array as defined above.\n *\n * @return {Array}\n * All of the content that was passed in normalized.\n */\nfunction normalizeContent(content) {\n\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n }\n\n // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n *\n * @param {String|Element|TextNode|Array|Function} content\n * See the `content` argument of {@link dom:normalizeContent}\n *\n * @return {Element}\n * The element with appended normalized content.\n */\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {String|Element|TextNode|Array|Function} content\n * See the `content` argument of {@link dom:normalizeContent}\n *\n * @return {Element}\n * The element with inserted normalized content.\n *\n */\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n\n/**\n * Check if event was a single left click\n *\n * @param {EventTarget~Event} event\n * Event object\n *\n * @return {boolean}\n * - True if a left click\n * - False if not a left click\n */\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n\n return true;\n }\n\n if (IE_VERSION === 9) {\n // Ignore IE9\n\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n\n return false;\n }\n\n return true;\n}\n\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\nvar $ = createQuerier('querySelector');\n\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none were found.\n *\n */\nvar $$ = createQuerier('querySelectorAll');\n\n\n\nvar Dom = (Object.freeze || Object)({\n\tisReal: isReal,\n\tisEl: isEl,\n\tisInFrame: isInFrame,\n\tcreateEl: createEl,\n\ttextContent: textContent,\n\tprependTo: prependTo,\n\thasClass: hasClass,\n\taddClass: addClass,\n\tremoveClass: removeClass,\n\ttoggleClass: toggleClass,\n\tsetAttributes: setAttributes,\n\tgetAttributes: getAttributes,\n\tgetAttribute: getAttribute,\n\tsetAttribute: setAttribute,\n\tremoveAttribute: removeAttribute,\n\tblockTextSelection: blockTextSelection,\n\tunblockTextSelection: unblockTextSelection,\n\tgetBoundingClientRect: getBoundingClientRect,\n\tfindPosition: findPosition,\n\tgetPointerPosition: getPointerPosition,\n\tisTextNode: isTextNode,\n\temptyEl: emptyEl,\n\tnormalizeContent: normalizeContent,\n\tappendContent: appendContent,\n\tinsertContent: insertContent,\n\tisSingleLeftClick: isSingleLeftClick,\n\t$: $,\n\t$$: $$\n});\n\n/**\n * @file guid.js\n * @module guid\n */\n\n/**\n * Unique ID for an element or function\n * @type {Number}\n */\nvar _guid = 1;\n\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\nvar elData = {};\n\n/*\n * Unique attribute name to store an element's guid in\n *\n * @type {String}\n * @constant\n * @private\n */\nvar elIdAttr = 'vdata' + new Date().getTime();\n\n/**\n * Returns the cache object where data for an element is stored\n *\n * @param {Element} el\n * Element to store data for.\n *\n * @return {Object}\n * The cache object for that el that was passed in.\n */\nfunction getData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n id = el[elIdAttr] = newGUID();\n }\n\n if (!elData[id]) {\n elData[id] = {};\n }\n\n return elData[id];\n}\n\n/**\n * Returns whether or not an element has cached data\n *\n * @param {Element} el\n * Check if this element has cached data.\n *\n * @return {boolean}\n * - True if the DOM element has cached data.\n * - False otherwise.\n */\nfunction hasData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n return false;\n }\n\n return !!Object.getOwnPropertyNames(elData[id]).length;\n}\n\n/**\n * Delete data for the element from the cache and the guid attr from getElementById\n *\n * @param {Element} el\n * Remove cached data for this element.\n */\nfunction removeData(el) {\n var id = el[elIdAttr];\n\n if (!id) {\n return;\n }\n\n // Remove all stored data\n delete elData[id];\n\n // Remove the elIdAttr property from the DOM node\n try {\n delete el[elIdAttr];\n } catch (e) {\n if (el.removeAttribute) {\n el.removeAttribute(elIdAttr);\n } else {\n // IE doesn't appear to support removeAttribute on the document element\n el[elIdAttr] = null;\n }\n }\n}\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @module events\n */\n\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\nfunction _cleanUpEvents(elem, type) {\n var data = getData(elem);\n\n // Remove the events of a particular type if there are none left\n if (data.handlers[type].length === 0) {\n delete data.handlers[type];\n // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n\n // Remove the meta-handler from the element\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n }\n\n // Remove the events object if there are no types left\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n }\n\n // Finally remove the element data if there is no data left\n if (Object.getOwnPropertyNames(data).length === 0) {\n removeData(elem);\n }\n}\n\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\nfunction fixEvent(event) {\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n }\n\n // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n if (!event || !event.isPropagationStopped) {\n var old = event || window.event;\n\n event = {};\n // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n }\n\n // The event occurred on this element\n if (!event.target) {\n event.target = event.srcElement || document;\n }\n\n // Handle which other element the event is related to\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n }\n\n // Stop the default browser action\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false;\n\n // Stop the event from bubbling\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse;\n\n // Stop the event from bubbling and executing other handlers\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse;\n\n // Handle mouse position\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n }\n\n // Handle key presses\n event.which = event.charCode || event.keyCode;\n\n // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n if (event.button !== null && event.button !== undefined) {\n\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n // Returns fixed-up instance\n return event;\n}\n\n/**\n * Whether passive event listeners are supported\n */\nvar _supportsPassive = false;\n\n(function () {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n\n window.addEventListener('test', null, opts);\n window.removeEventListener('test', null, opts);\n } catch (e) {\n // disregard\n }\n})();\n\n/**\n * Touch events Chrome expects to be passive\n */\nvar passiveEvents = ['touchstart', 'touchmove'];\n\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n var data = getData(elem);\n\n // We need a place to store all our handler data\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log$1.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (_supportsPassive && passiveEvents.indexOf(type) > -1) {\n options = { passive: true };\n }\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!hasData(elem)) {\n return;\n }\n\n var data = getData(elem);\n\n // If no events exist, nothing to unbind\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n }\n\n // Utility function\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n _cleanUpEvents(el, t);\n };\n\n // Are we removing all bound events?\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n return;\n }\n\n var handlers = data.handlers[type];\n\n // If no handlers exist, nothing to unbind\n if (!handlers) {\n return;\n }\n\n // If no listener was provided, remove all listeners for type\n if (!fn) {\n removeType(elem, type);\n return;\n }\n\n // We're only removing a single handler\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * - Returns the opposite of `defaultPrevented` if default was prevented\n * - Otherwise returns undefined\n */\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = hasData(elem) ? getData(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument;\n // type = event.type || event,\n // handler;\n\n // If an event name was passed as a string, creates an event out of it\n if (typeof event === 'string') {\n event = { type: event, target: elem };\n } else if (!event.target) {\n event.target = elem;\n }\n\n // Normalizes the event properties.\n event = fixEvent(event);\n\n // If the passed element has a dispatcher, executes the established handlers.\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n }\n\n // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash);\n\n // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented) {\n var targetData = getData(event.target);\n\n // Checks if the target has a default action for this event.\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true;\n // Executes the default action.\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n }\n // Re-enables event dispatching.\n targetData.disabled = false;\n }\n }\n\n // Inform the triggerer if the default was prevented by returning false\n return !event.defaultPrevented;\n}\n\n/**\n * Trigger a listener only once for an event\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event Listener function\n */\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n };\n\n // copy the guid to the new function so it can removed using the original function's ID\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n\nvar Events = (Object.freeze || Object)({\n\tfixEvent: fixEvent,\n\ton: on,\n\toff: off,\n\ttrigger: trigger,\n\tone: one\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs$2 = void 0;\n\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\nvar autoSetup = function autoSetup() {\n\n // Protect against breakage in non-browser environments and check global autoSetup option.\n if (!isReal() || videojs$2.options.autoSetup === false) {\n return;\n }\n\n // One day, when we stop supporting IE8, go back to this, but in the meantime...*hack hack hack*\n // var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n // var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n // var mediaEls = vids.concat(audios);\n\n // Because IE8 doesn't support calling slice on a node list, we need to loop\n // through each list of elements to build up a new, combined list of elements.\n var vids = document.getElementsByTagName('video');\n var audios = document.getElementsByTagName('audio');\n var divs = document.getElementsByTagName('video-js');\n var mediaEls = [];\n\n if (vids && vids.length > 0) {\n for (var i = 0, e = vids.length; i < e; i++) {\n mediaEls.push(vids[i]);\n }\n }\n\n if (audios && audios.length > 0) {\n for (var _i = 0, _e = audios.length; _i < _e; _i++) {\n mediaEls.push(audios[_i]);\n }\n }\n\n if (divs && divs.length > 0) {\n for (var _i2 = 0, _e2 = divs.length; _i2 < _e2; _i2++) {\n mediaEls.push(divs[_i2]);\n }\n }\n\n // Check if any media elements exist\n if (mediaEls && mediaEls.length > 0) {\n\n for (var _i3 = 0, _e3 = mediaEls.length; _i3 < _e3; _i3++) {\n var mediaEl = mediaEls[_i3];\n\n // Check if element exists, has getAttribute func.\n // IE seems to consider typeof el.getAttribute == 'object' instead of\n // 'function' like expected, at least when loading the player immediately.\n if (mediaEl && mediaEl.getAttribute) {\n\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup');\n\n // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n if (options !== null) {\n // Create new video.js instance.\n videojs$2(mediaEl);\n }\n }\n\n // If getAttribute isn't defined, we need to wait for the DOM.\n } else {\n autoSetupTimeout(1);\n break;\n }\n }\n\n // No videos were found, so keep looping unless page is finished loading.\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\nfunction autoSetupTimeout(wait, vjs) {\n if (vjs) {\n videojs$2 = vjs;\n }\n\n window.setTimeout(autoSetup, wait);\n}\n\nif (isReal() && document.readyState === 'complete') {\n _windowLoaded = true;\n} else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * @listens load\n */\n one(window, 'load', function () {\n _windowLoaded = true;\n });\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\nvar createStyleElement = function createStyleElement(className) {\n var style = document.createElement('style');\n\n style.className = className;\n\n return style;\n};\n\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file fn.js\n * @module fn\n */\n/**\n * Bind (a.k.a proxy or Context). A simple method for changing the context of a function\n * It also stores a unique id on the function so it can be easily removed from events.\n *\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n // Create the new function that changes the context\n var bound = function bound() {\n return fn.apply(context, arguments);\n };\n\n // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n\n return bound;\n};\n\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {Number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\nvar throttle = function throttle(fn, wait) {\n var last = Date.now();\n\n var throttled = function throttled() {\n var now = Date.now();\n\n if (now - last >= wait) {\n fn.apply(undefined, arguments);\n last = now;\n }\n };\n\n return throttled;\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\nvar debounce = function debounce(func, wait, immediate) {\n var context = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : window;\n\n var timeout = void 0;\n\n /* eslint-disable consistent-this */\n return function () {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n};\n\n/**\n * @file src/js/event-target.js\n */\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\nvar EventTarget = function EventTarget() {};\n\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\nEventTarget.prototype.allowedEvents_ = {};\n\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\nEventTarget.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n on(this, type, fn);\n this.addEventListener = ael;\n};\n\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\nEventTarget.prototype.addEventListener = EventTarget.prototype.on;\n\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\nEventTarget.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\nEventTarget.prototype.removeEventListener = EventTarget.prototype.off;\n\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\nEventTarget.prototype.one = function (type, fn) {\n // Remove the addEventListener alialing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\nEventTarget.prototype.trigger = function (event) {\n var type = event.type || event;\n\n if (typeof event === 'string') {\n event = { type: type };\n }\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\nEventTarget.prototype.dispatchEvent = EventTarget.prototype.trigger;\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\nvar isValidEventType = function isValidEventType(type) {\n return (\n // The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n */\nvar validateTarget = function validateTarget(target) {\n if (!target.nodeName && !isEvented(target)) {\n throw new Error('Invalid target; must be a DOM node or evented object.');\n }\n};\n\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n */\nvar validateEventType = function validateEventType(type) {\n if (!isValidEventType(type)) {\n throw new Error('Invalid event type; must be a non-empty string or array.');\n }\n};\n\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n */\nvar validateListener = function validateListener(listener) {\n if (typeof listener !== 'function') {\n throw new Error('Invalid listener; must be a function.');\n }\n};\n\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\nvar normalizeListenArgs = function normalizeListenArgs(self, args) {\n\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target = void 0;\n var type = void 0;\n var listener = void 0;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_;\n\n // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target);\n validateEventType(type);\n validateListener(listener);\n\n listener = bind(self, listener);\n\n return { isTargetingSelf: isTargetingSelf, target: target, type: type, listener: listener };\n};\n\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n\n/**\n * Contains methods that provide event capabilites to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\nvar EventedMixin = {\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on$$1() {\n var _this = this;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener);\n\n // If this object is listening to another evented object.\n if (!isTargetingSelf) {\n\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n };\n\n // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n removeListenerOnDispose.guid = listener.guid;\n\n // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n };\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n removeRemoverOnTargetDispose.guid = listener.guid;\n\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one$$1() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener;\n\n // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener);\n\n // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n for (var _len3 = arguments.length, largs = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n _this2.off(target, type, wrapper);\n listener.apply(null, largs);\n };\n\n // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$$1(targetOrType, typeOrListener, listener) {\n\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener);\n\n // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener;\n\n // Fail fast and in a meaningful way!\n validateTarget(target);\n validateEventType(type);\n validateListener(listener);\n\n // Ensure there's at least a guid, even if the function hasn't been used\n listener = bind(this, listener);\n\n // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @returns {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$$1(event, hash) {\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {String} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\nfunction evented(target) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var eventBusKey = options.eventBusKey;\n\n // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error('The eventBusKey \"' + eventBusKey + '\" does not refer to an element.');\n }\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', { className: 'vjs-event-bus' });\n }\n\n assign(target, EventedMixin);\n\n // When any evented object is disposed, it removes all its listeners.\n target.on('dispose', function () {\n target.off();\n window.setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\nvar StatefulMixin = {\n\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @returns {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes = void 0;\n\n each(stateUpdates, function (value, key) {\n\n // Record the change if the value is different from what's in the\n // current state.\n if (_this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: _this.state[key],\n to: value\n };\n }\n\n _this.state[key] = value;\n });\n\n // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n if (changes && isEvented(this)) {\n\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes: changes,\n type: 'statechanged'\n });\n }\n\n return changes;\n }\n};\n\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @returns {Object}\n * Returns the `target`.\n */\nfunction stateful(target, defaultState) {\n assign(target, StatefulMixin);\n\n // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n target.state = assign({}, target.state, defaultState);\n\n // Auto-bind the `handleStateChanged` method of the target object if it exists.\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n\n return target;\n}\n\n/**\n * @file to-title-case.js\n * @module to-title-case\n */\n\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\nfunction toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\nfunction titleCaseEquals(str1, str2) {\n return toTitleCase(str1) === toTitleCase(str2);\n}\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Deep-merge one or more options objects, recursively merging **only** plain\n * object properties.\n *\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @returns {Object}\n * A new object that is the merged result of all sources.\n */\nfunction mergeOptions() {\n var result = {};\n\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions(result[key], value);\n });\n });\n\n return result;\n}\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component = function () {\n\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to intialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n classCallCheck(this, Component);\n\n\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n // Make a copy of prototype.options_ to protect against overriding defaults\n this.options_ = mergeOptions({}, this.options_);\n\n // Updated options with supplied options\n options = this.options_ = mergeOptions(this.options_, options);\n\n // Get ID from options or options element if one is supplied\n this.id_ = options.id || options.el && options.el.id;\n\n // If there was no ID from the options, generate one\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n\n this.id_ = id + '_component_' + newGUID();\n }\n\n this.name_ = options.name || null;\n\n // Create element if one wasn't provided in options\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n }\n\n // if evented is anything except false, we want to mixin in evented\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, { eventBusKey: this.el_ ? 'el_' : null });\n }\n stateful(this, this.constructor.defaultState);\n\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n\n // Add any child components in options\n if (options.initChildren !== false) {\n this.initChildren();\n }\n\n this.ready(ready);\n // Don't want to trigger ready here or it will before init is actually\n // finished for all children that run this constructor\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n */\n\n\n Component.prototype.dispose = function dispose() {\n\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the close event does not\n * bubble up\n */\n this.trigger({ type: 'dispose', bubbles: false });\n\n // Dispose all children.\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n }\n\n // Delete child references\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n removeData(this.el_);\n this.el_ = null;\n }\n\n // remove reference to the player after disposing of the element\n this.player_ = null;\n };\n\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n\n\n Component.prototype.player = function player() {\n return this.player_;\n };\n\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n *\n * @deprecated since version 5\n */\n\n\n Component.prototype.options = function options(obj) {\n log$1.warn('this.options() has been deprecated and will be moved to the constructor in 6.0');\n\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions(this.options_, obj);\n return this.options_;\n };\n\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n\n\n Component.prototype.el = function el() {\n return this.el_;\n };\n\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n\n\n Component.prototype.createEl = function createEl$$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n };\n\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n\n\n Component.prototype.localize = function localize(string, tokens) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : string;\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n };\n\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n\n\n Component.prototype.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n };\n\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n\n\n Component.prototype.id = function id() {\n return this.id_;\n };\n\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n\n\n Component.prototype.name = function name() {\n return this.name_;\n };\n\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n\n\n Component.prototype.children = function children() {\n return this.children_;\n };\n\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n\n\n Component.prototype.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n };\n\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n\n\n Component.prototype.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n name = toTitleCase(name);\n\n return this.childNameIndex_[name];\n };\n\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n\n\n Component.prototype.addChild = function addChild(child) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.children_.length;\n\n var component = void 0;\n var componentName = void 0;\n\n // If child is a string, create component with options\n if (typeof child === 'string') {\n componentName = toTitleCase(child);\n\n var componentClassName = options.componentClass || componentName;\n\n // Set name through options\n options.name = componentName;\n\n // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error('Component ' + componentClassName + ' does not exist');\n }\n\n // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options);\n\n // child is a component instance\n } else {\n component = child;\n }\n\n this.children_.splice(index, 0, component);\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n }\n\n // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n componentName = componentName || component.name && toTitleCase(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n }\n\n // Add the UI object's element to the container div (box)\n // Having an element is not required\n if (typeof component.el === 'function' && component.el()) {\n var childNodes = this.contentEl().children;\n var refNode = childNodes[index] || null;\n\n this.contentEl().insertBefore(component.el(), refNode);\n }\n\n // Return so it can stored on parent object if desired.\n return component;\n };\n\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n\n\n Component.prototype.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[component.name()] = null;\n\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n };\n\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n\n\n Component.prototype.initChildren = function initChildren() {\n var _this = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts;\n\n // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n }\n\n // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n if (opts === false) {\n return;\n }\n\n // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n if (opts === true) {\n opts = {};\n }\n\n // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n opts.playerOptions = _this.options_.playerOptions;\n\n // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n var newChild = _this.addChild(name, opts);\n\n if (newChild) {\n _this[name] = newChild;\n }\n };\n\n // Allow for an array of children details to passed in the options\n var workingChildren = void 0;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren\n // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n return child === wchild.name;\n });\n })).map(function (child) {\n var name = void 0;\n var opts = void 0;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return { name: name, opts: opts };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase(child.name));\n\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n };\n\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n\n\n Component.prototype.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n };\n\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n\n\n Component.prototype.ready = function ready(fn) {\n var sync = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n };\n\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n\n\n Component.prototype.triggerReady = function triggerReady() {\n this.isReady_ = true;\n\n // Ensure ready is triggered asynchronously\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_;\n\n // Reset Ready Queue\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n }\n\n // Allow for using event listeners also\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n this.trigger('ready');\n }, 1);\n };\n\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n\n\n Component.prototype.$ = function $$$1(selector, context) {\n return $(selector, context || this.contentEl());\n };\n\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n\n\n Component.prototype.$$ = function $$$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n };\n\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n\n\n Component.prototype.hasClass = function hasClass$$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n };\n\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n\n\n Component.prototype.addClass = function addClass$$1(classToAdd) {\n addClass(this.el_, classToAdd);\n };\n\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n\n\n Component.prototype.removeClass = function removeClass$$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n };\n\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n\n\n Component.prototype.toggleClass = function toggleClass$$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n };\n\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n\n\n Component.prototype.show = function show() {\n this.removeClass('vjs-hidden');\n };\n\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n\n\n Component.prototype.hide = function hide() {\n this.addClass('vjs-hidden');\n };\n\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n\n\n Component.prototype.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n };\n\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n\n\n Component.prototype.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n };\n\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n\n\n Component.prototype.getAttribute = function getAttribute$$1(attribute) {\n return getAttribute(this.el_, attribute);\n };\n\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n\n\n Component.prototype.setAttribute = function setAttribute$$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n };\n\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n\n\n Component.prototype.removeAttribute = function removeAttribute$$1(attribute) {\n removeAttribute(this.el_, attribute);\n };\n\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n\n\n Component.prototype.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n };\n\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n\n\n Component.prototype.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n };\n\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n\n\n Component.prototype.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n };\n\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n\n\n Component.prototype.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n }\n\n // Check if using css width/height (% or px) and adjust\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n }\n\n // skipListeners allows us to avoid triggering the resize event when setting both width and height\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n }\n\n // Not setting a value, so getting it\n // Make sure element exists\n if (!this.el_) {\n return 0;\n }\n\n // Get dimension value from style\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n }\n\n // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n return parseInt(this.el_['offset' + toTitleCase(widthOrHeight)], 10);\n };\n\n /**\n * Get the width or the height of the `Component` elements computed style. Uses\n * `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n\n\n Component.prototype.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n if (typeof window.getComputedStyle === 'function') {\n var computedStyle = window.getComputedStyle(this.el_);\n\n computedWidthOrHeight = computedStyle.getPropertyValue(widthOrHeight) || computedStyle[widthOrHeight];\n }\n\n // remove 'px' from variable and parse as integer\n computedWidthOrHeight = parseFloat(computedWidthOrHeight);\n\n // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs on IE8 and wherever getComputedStyle doesn't exist.\n if (computedWidthOrHeight === 0) {\n var rule = 'offset' + toTitleCase(widthOrHeight);\n\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n };\n\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains width and height values of the `Component`s\n * computed style.\n *\n * @return {Component~DimensionObject}\n * The dimensions of the components element\n */\n\n\n Component.prototype.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n };\n\n /**\n * Get the width of the `Component`s computed style. Uses `window.getComputedStyle`.\n *\n * @return {number} width\n * The width of the `Component`s computed style.\n */\n\n\n Component.prototype.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n };\n\n /**\n * Get the height of the `Component`s computed style. Uses `window.getComputedStyle`.\n *\n * @return {number} height\n * The height of the `Component`s computed style.\n */\n\n\n Component.prototype.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n };\n\n /**\n * Set the focus to this component\n */\n\n\n Component.prototype.focus = function focus() {\n this.el_.focus();\n };\n\n /**\n * Remove the focus from this component\n */\n\n\n Component.prototype.blur = function blur() {\n this.el_.blur();\n };\n\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @private\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n\n\n Component.prototype.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null;\n\n // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n var tapMovementThreshold = 10;\n\n // The maximum length a touch can be while still being considered a tap\n var touchTimeThreshold = 200;\n\n var couldBeTap = void 0;\n\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n };\n // Record start time so we can detect a tap vs. \"touch and hold\"\n touchStart = new Date().getTime();\n // Reset couldBeTap tracking\n couldBeTap = true;\n }\n });\n\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n };\n\n // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap);\n\n // When the touch ends, measure how long it took and trigger the appropriate\n // event\n this.on('touchend', function (event) {\n firstTouch = null;\n // Proceed only if the touchmove/leave/cancel event didn't happen\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = new Date().getTime() - touchStart;\n\n // Make sure the touch was less than the threshold to be considered a tap\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {EventTarget~Event}\n */\n this.trigger('tap');\n // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n };\n\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n\n\n Component.prototype.enableTouchActivity = function enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n }\n\n // listener for reporting that the user is active\n var report = bind(this.player(), this.player().reportUserActivity);\n\n var touchHolding = void 0;\n\n this.on('touchstart', function () {\n report();\n // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n this.clearInterval(touchHolding);\n // report at the same interval as activityCheck\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report();\n // stop the interval that maintains activity if the touch is holding\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n };\n\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n\n\n Component.prototype.setTimeout = function setTimeout(fn, timeout) {\n var _this2 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId, disposeFn;\n\n fn = bind(this, fn);\n\n timeoutId = window.setTimeout(function () {\n _this2.off('dispose', disposeFn);\n fn();\n }, timeout);\n\n disposeFn = function disposeFn() {\n return _this2.clearTimeout(timeoutId);\n };\n\n disposeFn.guid = 'vjs-timeout-' + timeoutId;\n\n this.on('dispose', disposeFn);\n\n return timeoutId;\n };\n\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n\n\n Component.prototype.clearTimeout = function clearTimeout(timeoutId) {\n window.clearTimeout(timeoutId);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-timeout-' + timeoutId;\n\n this.off('dispose', disposeFn);\n\n return timeoutId;\n };\n\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n\n\n Component.prototype.setInterval = function setInterval(fn, interval) {\n var _this3 = this;\n\n fn = bind(this, fn);\n\n var intervalId = window.setInterval(fn, interval);\n\n var disposeFn = function disposeFn() {\n return _this3.clearInterval(intervalId);\n };\n\n disposeFn.guid = 'vjs-interval-' + intervalId;\n\n this.on('dispose', disposeFn);\n\n return intervalId;\n };\n\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n\n\n Component.prototype.clearInterval = function clearInterval(intervalId) {\n window.clearInterval(intervalId);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-interval-' + intervalId;\n\n this.off('dispose', disposeFn);\n\n return intervalId;\n };\n\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n\n\n Component.prototype.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this4 = this;\n\n // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n var id, disposeFn;\n\n if (this.supportsRaf_) {\n fn = bind(this, fn);\n\n id = window.requestAnimationFrame(function () {\n _this4.off('dispose', disposeFn);\n fn();\n });\n\n disposeFn = function disposeFn() {\n return _this4.cancelAnimationFrame(id);\n };\n\n disposeFn.guid = 'vjs-raf-' + id;\n this.on('dispose', disposeFn);\n\n return id;\n }\n\n // Fall back to using a timer.\n return this.setTimeout(fn, 1000 / 60);\n };\n\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n\n\n Component.prototype.cancelAnimationFrame = function cancelAnimationFrame(id) {\n if (this.supportsRaf_) {\n window.cancelAnimationFrame(id);\n\n var disposeFn = function disposeFn() {};\n\n disposeFn.guid = 'vjs-raf-' + id;\n\n this.off('dispose', disposeFn);\n\n return id;\n }\n\n // Fall back to using a timer.\n return this.clearTimeout(id);\n };\n\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error('Illegal component name, \"' + name + '\"; must be a non-empty string.');\n }\n\n var Tech = Component.getComponent('Tech');\n\n // We need to make sure this check is only done if Tech has been registered.\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason = void 0;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error('Illegal component, \"' + name + '\"; ' + reason + '.');\n }\n\n name = toTitleCase(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players);\n\n // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n\n return ComponentToRegister;\n };\n\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n *\n * @deprecated In `videojs` 6 this will not return `Component`s that were not\n * registered using {@link Component.registerComponent}. Currently we\n * check the global `videojs` object for a `Component` name and\n * return that if it exists.\n */\n\n\n Component.getComponent = function getComponent(name) {\n if (!name) {\n return;\n }\n\n name = toTitleCase(name);\n\n if (Component.components_ && Component.components_[name]) {\n return Component.components_[name];\n }\n };\n\n return Component;\n}();\n\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent.prototype.supportsRaf_ = typeof window.requestAnimationFrame === 'function' && typeof window.cancelAnimationFrame === 'function';\n\nComponent.registerComponent('Component', Component);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @function time-ranges:indexFunction\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @depricated index must be set to a value, in the future this will throw an error.\n */\n\n/**\n * An object that contains ranges of time for various reasons.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this Object\n *\n * @property {time-ranges:indexFunction} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {time-ranges:indexFunction} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error('Failed to execute \\'' + fnName + '\\' on \\'TimeRanges\\': The index provided (' + index + ') is non-numeric or out of bounds (0-' + maxIndex + ').');\n }\n}\n\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The proprety that should be used to get the time. should be 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n *\n * @depricated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n\n/**\n * Create a time range object given ranges of time.\n *\n * @param {Array} [ranges]\n * An array of time ranges.\n */\nfunction createTimeRangesObj(ranges) {\n if (ranges === undefined || ranges.length === 0) {\n return {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n }\n return {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n}\n\n/**\n * Should create a fake `TimeRange` object which mimics an HTML5 time range instance.\n *\n * @param {number|Array} start\n * The start of a single range or an array of ranges\n *\n * @param {number} end\n * The end of a single range.\n *\n * @private\n */\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start = void 0;\n var end = void 0;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i);\n\n // buffered end can be bigger than duration by a very small fraction\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\n */\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\nvar FullscreenApi = {};\n\n// browser API methods\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'],\n// WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n// Old WebKit (Safari 5.1)\n['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'],\n// Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'],\n// Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];\n\nvar specApi = apiMap[0];\nvar browserApi = void 0;\n\n// determine the supported set of functions\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n}\n\n// map the browser API names to the spec API names\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\nfunction MediaError(value) {\n\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\nMediaError.prototype.code = 0;\n\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\nMediaError.prototype.message = '';\n\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\nMediaError.prototype.status = null;\n\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_CUSTOM\n * @property {string} 2 - MEDIA_ERR_ABORTED\n * @property {string} 3 - MEDIA_ERR_NETWORK\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n};\n\n// Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum;\n // values should be accessible on both the class and instance\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n}\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {Boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n\n return ret;\n};\n\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\nvar textTracksToJson = function textTracksToJson(tech) {\n\n var trackEls = tech.$$('track');\n\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n return json;\n });\n\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n\n return tech.textTracks();\n};\n\nvar textTrackConverter = { textTracksToJson: textTracksToJson, jsonToTextTracks: jsonToTextTracks, trackToJson_: trackToJson_ };\n\n/**\n * @file modal-dialog.js\n */\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\nvar ESC = 27;\n\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = function (_Component) {\n inherits(ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n classCallCheck(this, ModalDialog);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n _this.content(_this.options_.content);\n\n // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + '-content'\n }, {\n role: 'document'\n });\n\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + '-description vjs-control-text',\n id: _this.el().getAttribute('aria-describedby')\n });\n\n textContent(_this.descEl_, _this.description());\n _this.el_.appendChild(_this.descEl_);\n _this.el_.appendChild(_this.contentEl_);\n return _this;\n }\n\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n ModalDialog.prototype.createEl = function createEl$$1() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + '_description',\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n ModalDialog.prototype.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n ModalDialog.prototype.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + ' vjs-hidden ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Handles `keydown` events on the document, looking for ESC, which closes\n * the modal.\n *\n * @param {EventTarget~Event} e\n * The keypress that triggered this event.\n *\n * @listens keydown\n */\n\n\n ModalDialog.prototype.handleKeyPress = function handleKeyPress(e) {\n if (e.which === ESC && this.closeable()) {\n this.close();\n }\n };\n\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n\n\n ModalDialog.prototype.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n };\n\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n\n\n ModalDialog.prototype.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.');\n\n // Append a universal closeability message if the modal is closeable.\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n };\n\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n\n\n ModalDialog.prototype.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalopen');\n this.opened_ = true;\n\n // Fill content if the modal has never opened before and\n // never been filled.\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n }\n\n // If the player was playing, pause it and take note of its previously\n // playing state.\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n if (this.closeable()) {\n this.on(this.el_.ownerDocument, 'keydown', bind(this, this.handleKeyPress));\n }\n\n // Hide controls and note if they were enabled.\n this.hadControls_ = player.controls();\n player.controls(false);\n\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n };\n\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n\n\n ModalDialog.prototype.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n return this.opened_;\n };\n\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n\n\n ModalDialog.prototype.close = function close() {\n if (!this.opened_) {\n return;\n }\n var player = this.player();\n\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n if (this.closeable()) {\n this.off(this.el_.ownerDocument, 'keydown', bind(this, this.handleKeyPress));\n }\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n };\n\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n\n\n ModalDialog.prototype.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton');\n\n // If this is being made closeable and has no close button, add one.\n if (closeable && !close) {\n\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', { controlText: 'Close Modal Dialog' });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close);\n }\n\n // If this is being made uncloseable and has a close button, remove it.\n if (!closeable && close) {\n this.off(close, 'close', this.close);\n this.removeChild(close);\n close.dispose();\n }\n }\n return this.closeable_;\n };\n\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n\n\n ModalDialog.prototype.fill = function fill() {\n this.fillWith(this.content());\n };\n\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n\n\n ModalDialog.prototype.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true;\n\n // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n this.trigger('modalfill');\n\n // Re-inject the re-filled content element.\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n }\n\n // make sure that the close button is last in the dialog DOM\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n };\n\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n\n\n ModalDialog.prototype.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n this.trigger('modalempty');\n };\n\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n\n\n ModalDialog.prototype.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n return this.content_;\n };\n\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n\n\n ModalDialog.prototype.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n\n this.focus();\n\n this.on(document, 'keydown', this.handleKeyDown);\n }\n };\n\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n\n\n ModalDialog.prototype.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n\n this.off(document, 'keydown', this.handleKeyDown);\n };\n\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n\n\n ModalDialog.prototype.handleKeyDown = function handleKeyDown(event) {\n // exit early if it isn't a tab key\n if (event.which !== 9) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex = void 0;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n };\n\n /**\n * get all focusable elements\n *\n * @private\n */\n\n\n ModalDialog.prototype.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window.HTMLAnchorElement || child instanceof window.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window.HTMLInputElement || child instanceof window.HTMLSelectElement || child instanceof window.HTMLTextAreaElement || child instanceof window.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window.HTMLIFrameElement || child instanceof window.HTMLObjectElement || child instanceof window.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component);\n\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\n\nComponent.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * @file track-list.js\n */\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = function (_EventTarget) {\n inherits(TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @param {Object} [list]\n * The child object with inheritance done manually for ie8.\n *\n * @abstract\n */\n function TrackList() {\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var _ret;\n\n var list = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n classCallCheck(this, TrackList);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n if (!list) {\n list = _this; // eslint-disable-line\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n }\n }\n\n list.tracks_ = [];\n\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(list, 'length', {\n get: function get$$1() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n list.addTrack(tracks[i]);\n }\n\n // must return the object, as for ie8 it will not be this\n // but a reference to a document object\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n TrackList.prototype.addTrack = function addTrack(track) {\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get$$1() {\n return this.tracks_[index];\n }\n });\n }\n\n // Do not add duplicate tracks\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n this.trigger({\n track: track,\n type: 'addtrack'\n });\n }\n };\n\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n\n\n TrackList.prototype.removeTrack = function removeTrack(rtrack) {\n var track = void 0;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n\n break;\n }\n }\n\n if (!track) {\n return;\n }\n\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n this.trigger({\n track: track,\n type: 'removetrack'\n });\n };\n\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {String} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n\n\n TrackList.prototype.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget);\n\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack'\n};\n\n// emulate attribute EventHandler support to allow for feature detection\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * @file audio-track-list.js\n */\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another audio track is enabled, disable it\n list[i].enabled = false;\n }\n};\n\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\nvar AudioTrackList = function (_TrackList) {\n inherits(AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, AudioTrackList);\n\n var list = void 0;\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in AudioTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = AudioTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n list.changing_ = false;\n\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n AudioTrackList.prototype.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n track.addEventListener('enabledchange', function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n _this2.trigger('change');\n });\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * @file video-track-list.js\n */\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n }\n // another video track is enabled, disable it\n list[i].selected = false;\n }\n};\n\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\nvar VideoTrackList = function (_TrackList) {\n inherits(VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, VideoTrackList);\n\n var list = void 0;\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in VideoTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = VideoTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n list.changing_ = false;\n\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n Object.defineProperty(list, 'selectedIndex', {\n get: function get$$1() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n return -1;\n },\n set: function set$$1() {}\n });\n\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n VideoTrackList.prototype.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track);\n // native tracks don't have this\n if (!track.addEventListener) {\n return;\n }\n\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n track.addEventListener('selectedchange', function () {\n if (_this2.changing_) {\n return;\n }\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n _this2.trigger('change');\n });\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * @file text-track-list.js\n */\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = function (_TrackList) {\n inherits(TextTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {TextTrack[]} [tracks=[]]\n * A list of `TextTrack` to instantiate the list with.\n */\n function TextTrackList() {\n var _this, _ret;\n\n var tracks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, TextTrackList);\n\n var list = void 0;\n\n // IE8 forces us to implement inheritance ourselves\n // as it does not support Object.defineProperty properly\n if (IS_IE8) {\n list = document.createElement('custom');\n for (var prop in TrackList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TrackList.prototype[prop];\n }\n }\n for (var _prop in TextTrackList.prototype) {\n if (_prop !== 'constructor') {\n list[_prop] = TextTrackList.prototype[_prop];\n }\n }\n }\n\n list = (_this = possibleConstructorReturn(this, _TrackList.call(this, tracks, list)), _this);\n return _ret = list, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n TextTrackList.prototype.addTrack = function addTrack(track) {\n _TrackList.prototype.addTrack.call(this, track);\n\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n track.addEventListener('modechange', bind(this, function () {\n this.trigger('change');\n }));\n\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', bind(this, function () {\n this.trigger('selectedlanguagechange');\n }));\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\n\nvar HtmlTrackElementList = function () {\n\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList() {\n var trackElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n classCallCheck(this, HtmlTrackElementList);\n\n var list = this; // eslint-disable-line\n\n if (IS_IE8) {\n list = document.createElement('custom');\n\n for (var prop in HtmlTrackElementList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = HtmlTrackElementList.prototype[prop];\n }\n }\n }\n\n list.trackElements_ = [];\n\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n Object.defineProperty(list, 'length', {\n get: function get$$1() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n list.addTrackElement_(trackElements[i]);\n }\n\n if (IS_IE8) {\n return list;\n }\n }\n\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n HtmlTrackElementList.prototype.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get$$1() {\n return this.trackElements_[index];\n }\n });\n }\n\n // Do not add duplicate elements\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n };\n\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n\n\n HtmlTrackElementList.prototype.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_ = void 0;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n\n break;\n }\n }\n\n return trackElement_;\n };\n\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n\n\n HtmlTrackElementList.prototype.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n this.trackElements_.splice(i, 1);\n\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\n\nvar TextTrackCueList = function () {\n\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n classCallCheck(this, TextTrackCueList);\n\n var list = this; // eslint-disable-line\n\n if (IS_IE8) {\n list = document.createElement('custom');\n\n for (var prop in TextTrackCueList.prototype) {\n if (prop !== 'constructor') {\n list[prop] = TextTrackCueList.prototype[prop];\n }\n }\n }\n\n TextTrackCueList.prototype.setCues_.call(list, cues);\n\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n Object.defineProperty(list, 'length', {\n get: function get$$1() {\n return this.length_;\n }\n });\n\n if (IS_IE8) {\n return list;\n }\n }\n\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n TextTrackCueList.prototype.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get$$1() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n };\n\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n\n\n TextTrackCueList.prototype.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * @file track.js\n */\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = function (_EventTarget) {\n inherits(Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track() {\n var _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, Track);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n var track = _this; // eslint-disable-line\n\n if (IS_IE8) {\n track = document.createElement('custom');\n for (var prop in Track.prototype) {\n if (prop !== 'constructor') {\n track[prop] = Track.prototype[prop];\n }\n }\n }\n\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n label: options.label || '',\n language: options.language || ''\n };\n\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(track, key, {\n get: function get$$1() {\n return trackProps[key];\n },\n set: function set$$1() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return Track;\n}(EventTarget);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\nvar parseUrl = function parseUrl(url) {\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'];\n\n // add the url to an anchor and let the browser parse the URL\n var a = document.createElement('a');\n\n a.href = url;\n\n // IE8 (and 9?) Fix\n // ie8 doesn't parse the URL correctly until the anchor is actually\n // added to the body, and an innerHTML is needed to trigger the parsing\n var addToBody = a.host === '' && a.protocol !== 'file:';\n var div = void 0;\n\n if (addToBody) {\n div = document.createElement('div');\n div.innerHTML = '<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 var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n }\n\n // IE9 adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window.location.protocol;\n }\n\n if (addToBody) {\n document.body.removeChild(div);\n }\n\n return details;\n};\n\n/**\n * Get absolute version of relative URL. Used to tell flash correct URL.\n *\n *\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n var div = document.createElement('div');\n\n div.innerHTML = '<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\n * if passed an invalid path.\n *\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @returns {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/i;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @param {string} url\n * The url to check.\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\nvar isCrossOrigin = function isCrossOrigin(url) {\n var winLoc = window.location;\n var urlInfo = parseUrl(url);\n\n // IE8 protocol relative urls will return ':' for protocol\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol;\n\n // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n\n return crossOrigin;\n};\n\nvar Url = (Object.freeze || Object)({\n\tparseUrl: parseUrl,\n\tgetAbsoluteURL: getAbsoluteURL,\n\tgetFileExtension: getFileExtension,\n\tisCrossOrigin: isCrossOrigin\n});\n\n/**\n * @file text-track.js\n */\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window.WebVTT.Parser(window, window.vttjs, window.WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n if (errors.length > 0) {\n if (window.console && window.console.groupCollapsed) {\n window.console.groupCollapsed('Text Track parsing errors for ' + track.src);\n }\n errors.forEach(function (error) {\n return log$1.error(error);\n });\n if (window.console && window.console.groupEnd) {\n window.console.groupEnd();\n }\n }\n\n parser.flush();\n};\n\n/**\n * Load a `TextTrack` from a specifed url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n xhr(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n\n track.loaded_ = true;\n\n // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n if (typeof window.WebVTT !== 'function') {\n if (track.tech_) {\n var loadHandler = function loadHandler() {\n return parseCues(responseBody, track);\n };\n\n track.tech_.on('vttjsloaded', loadHandler);\n track.tech_.on('vttjserror', function () {\n log$1.error('vttjs failed to load, stopping trying to process ' + track.src);\n track.tech_.off('vttjsloaded', loadHandler);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\nvar TextTrack = function (_Track) {\n inherits(TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * vesion of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, TextTrack);\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings['default'];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var tt = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n\n tt.tech_ = settings.tech;\n\n if (IS_IE8) {\n for (var prop in TextTrack.prototype) {\n if (prop !== 'constructor') {\n tt[prop] = TextTrack.prototype[prop];\n }\n }\n }\n\n tt.cues_ = [];\n tt.activeCues_ = [];\n\n var cues = new TextTrackCueList(tt.cues_);\n var activeCues = new TextTrackCueList(tt.activeCues_);\n var changed = false;\n var timeupdateHandler = bind(tt, function () {\n\n // Accessing this.activeCues for the side-effects of updating itself\n // due to it's nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n this.activeCues = this.activeCues;\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n });\n\n if (mode !== 'disabled') {\n tt.tech_.ready(function () {\n tt.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n }\n\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n Object.defineProperty(tt, 'default', {\n get: function get$$1() {\n return default_;\n },\n set: function set$$1() {}\n });\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n Object.defineProperty(tt, 'mode', {\n get: function get$$1() {\n return mode;\n },\n set: function set$$1(newMode) {\n var _this2 = this;\n\n if (!TextTrackMode[newMode]) {\n return;\n }\n mode = newMode;\n if (mode === 'showing') {\n\n this.tech_.ready(function () {\n _this2.tech_.on('timeupdate', timeupdateHandler);\n }, true);\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n this.trigger('modechange');\n }\n });\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n Object.defineProperty(tt, 'cues', {\n get: function get$$1() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set$$1() {}\n });\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n Object.defineProperty(tt, 'activeCues', {\n get: function get$$1() {\n if (!this.loaded_) {\n return null;\n }\n\n // nothing to do\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n\n return activeCues;\n },\n\n\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set$$1() {}\n });\n\n if (settings.src) {\n tt.src = settings.src;\n loadTrack(settings.src, tt);\n } else {\n tt.loaded_ = true;\n }\n\n return _ret = tt, possibleConstructorReturn(_this, _ret);\n }\n\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n\n\n TextTrack.prototype.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window.vttjs && !(originalCue instanceof window.vttjs.VTTCue)) {\n cue = new window.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n }\n\n // make sure that `id` is copied over\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n };\n\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n\n\n TextTrack.prototype.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n };\n\n return TextTrack;\n}(Track);\n\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\n\nvar AudioTrack = function (_Track) {\n inherits(AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, AudioTrack);\n\n var settings = mergeOptions(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var track = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n var enabled = false;\n\n if (IS_IE8) {\n for (var prop in AudioTrack.prototype) {\n if (prop !== 'constructor') {\n track[prop] = AudioTrack.prototype[prop];\n }\n }\n }\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n Object.defineProperty(track, 'enabled', {\n get: function get$$1() {\n return enabled;\n },\n set: function set$$1(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n enabled = newEnabled;\n\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n this.trigger('enabledchange');\n }\n });\n\n // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n if (settings.enabled) {\n track.enabled = settings.enabled;\n }\n track.loaded_ = true;\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = function (_Track) {\n inherits(VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack() {\n var _this, _ret;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, VideoTrack);\n\n var settings = mergeOptions(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n\n // on IE8 this will be a document element\n // for every other browser this will be a normal object\n var track = (_this = possibleConstructorReturn(this, _Track.call(this, settings)), _this);\n var selected = false;\n\n if (IS_IE8) {\n for (var prop in VideoTrack.prototype) {\n if (prop !== 'constructor') {\n track[prop] = VideoTrack.prototype[prop];\n }\n }\n }\n\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n Object.defineProperty(track, 'selected', {\n get: function get$$1() {\n return selected;\n },\n set: function set$$1(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n selected = newSelected;\n\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n this.trigger('selectedchange');\n }\n });\n\n // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n if (settings.selected) {\n track.selected = settings.selected;\n }\n\n return _ret = track, possibleConstructorReturn(_this, _ret);\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @file html-track-element.js\n */\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = function (_EventTarget) {\n inherits(HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * vesion of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function HTMLTrackElement() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, HTMLTrackElement);\n\n var _this = possibleConstructorReturn(this, _EventTarget.call(this));\n\n var readyState = void 0;\n var trackElement = _this; // eslint-disable-line\n\n if (IS_IE8) {\n trackElement = document.createElement('custom');\n\n for (var prop in HTMLTrackElement.prototype) {\n if (prop !== 'constructor') {\n trackElement[prop] = HTMLTrackElement.prototype[prop];\n }\n }\n }\n\n var track = new TextTrack(options);\n\n trackElement.kind = track.kind;\n trackElement.src = track.src;\n trackElement.srclang = track.language;\n trackElement.label = track.label;\n trackElement['default'] = track['default'];\n\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n Object.defineProperty(trackElement, 'readyState', {\n get: function get$$1() {\n return readyState;\n }\n });\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n Object.defineProperty(trackElement, 'track', {\n get: function get$$1() {\n return track;\n }\n });\n\n readyState = NONE;\n\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n trackElement.trigger({\n type: 'load',\n target: trackElement\n });\n });\n\n if (IS_IE8) {\n var _ret;\n\n return _ret = trackElement, possibleConstructorReturn(_this, _ret);\n }\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\n\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\n\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + 'Tracks';\n NORMAL[type].privateName = type + 'Tracks_';\n});\n\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = mergeOptions(NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * @file tech.js\n */\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\nfunction createTrackHelper(self, kind, label, language) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n\n var tracks = self.textTracks();\n\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n if (language) {\n options.language = language;\n }\n options.tech = self;\n\n var track = new ALL.text.TrackClass(options);\n\n tracks.addTrack(track);\n\n return track;\n}\n\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link Flash} and {@link HTML5}\n *\n * @extends Component\n */\n\nvar Tech = function (_Component) {\n inherits(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var ready = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n classCallCheck(this, Tech);\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n\n // keep track of whether the current source has played at all to\n // implement a very limited played()\n var _this = possibleConstructorReturn(this, _Component.call(this, null, options, ready));\n\n _this.hasStarted_ = false;\n _this.on('playing', function () {\n this.hasStarted_ = true;\n });\n _this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\n if (options && options[props.getterName]) {\n _this[props.privateName] = options[props.getterName];\n }\n });\n\n // Manually track progress in cases where the browser/flash player doesn't report it.\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n }\n\n // Manually track timeupdates in cases where the browser/flash player doesn't report it.\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options['native' + track + 'Tracks'] === false) {\n _this['featuresNative' + track + 'Tracks'] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners();\n\n // Turn on component tap events only if not using native controls\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n return _this;\n }\n\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n Tech.prototype.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n };\n\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n\n\n Tech.prototype.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange);\n\n this.manualProgress = true;\n\n // Trigger progress watching when a source begins loading\n this.one('ready', this.trackProgress);\n };\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n\n\n Tech.prototype.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n\n this.off('durationchange', this.onDurationChange);\n };\n\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n\n\n Tech.prototype.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n };\n\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n\n\n Tech.prototype.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n };\n\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n\n\n Tech.prototype.buffered = function buffered() {\n return createTimeRanges(0, 0);\n };\n\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n\n\n Tech.prototype.bufferedPercent = function bufferedPercent$$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n };\n\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n\n\n Tech.prototype.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n };\n\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n\n\n Tech.prototype.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n\n this.on('play', this.trackCurrentTime);\n this.on('pause', this.stopTrackingCurrentTime);\n };\n\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n\n\n Tech.prototype.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime);\n this.off('pause', this.stopTrackingCurrentTime);\n };\n\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n\n\n Tech.prototype.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n\n // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n };\n\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n\n\n Tech.prototype.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval);\n\n // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n };\n\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n\n\n Tech.prototype.dispose = function dispose() {\n\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names);\n\n // Turn off any manual progress or timeupdate tracking\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n\n\n Tech.prototype.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types);\n // clear out all tracks because we can't reuse them between techs\n types.forEach(function (type) {\n var list = _this3[type + 'Tracks']() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n list.removeTrack(track);\n }\n });\n };\n\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n\n\n Tech.prototype.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n this.removeRemoteTextTrack(track);\n }\n };\n\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n\n\n Tech.prototype.reset = function reset() {};\n\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n\n\n Tech.prototype.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n return this.error_;\n };\n\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks wether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n\n\n Tech.prototype.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n return createTimeRanges();\n };\n\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n\n\n Tech.prototype.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n }\n };\n\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n\n\n Tech.prototype.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + 'trackchange');\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n };\n\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n\n\n Tech.prototype.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window.WebVTT) {\n return;\n }\n\n // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n if (document.body.contains(this.el())) {\n\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n }\n\n // load vtt.js via the script location option or the cdn of no location was\n // passed in\n var script = document.createElement('script');\n\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.12.4/vtt.min.js';\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n });\n // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n window.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n };\n\n /**\n * Emulate texttracks\n *\n */\n\n\n Tech.prototype.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n track.removeEventListener('cuechange', updateDisplay);\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n };\n\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n\n\n Tech.prototype.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n };\n\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n\n\n Tech.prototype.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions(options, {\n tech: this\n });\n\n return new REMOTE.remoteTextEl.TrackClass(track);\n };\n\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n\n\n Tech.prototype.addRemoteTextTrack = function addRemoteTextTrack() {\n var _this7 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var manualCleanup = arguments[1];\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log$1.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n }\n\n // store HTMLTrackElement and TextTrack to remote list\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n };\n\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n\n\n Tech.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track);\n\n // remove HTMLTrackElement and TextTrack from remote list\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n };\n\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n\n\n Tech.prototype.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n };\n\n /**\n * A method to set a poster from a `Tech`.\n *\n * @abstract\n */\n\n\n Tech.prototype.setPoster = function setPoster() {};\n\n /**\n * A method to check for the presence of the 'playsinine' <video> attribute.\n *\n * @abstract\n */\n\n\n Tech.prototype.playsinline = function playsinline() {};\n\n /**\n * A method to set or unset the 'playsinine' <video> attribute.\n *\n * @abstract\n */\n\n\n Tech.prototype.setPlaysinline = function setPlaysinline() {};\n\n /*\n * Check if the tech can support the given mime-type.\n *\n * The base tech does not support any type, but source handlers might\n * overwrite this.\n *\n * @param {string} type\n * The mimetype to check for support\n *\n * @return {string}\n * 'probably', 'maybe', or empty string\n *\n * @see [Spec]{@link https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/canPlayType}\n *\n * @abstract\n */\n\n\n Tech.prototype.canPlayType = function canPlayType() {\n return '';\n };\n\n /**\n * Check if the type is supported by this tech.\n *\n * The base tech does not support any type, but source handlers might\n * overwrite this.\n *\n * @param {string} type\n * The media type to check\n * @return {string} Returns the native video element's response\n */\n\n\n Tech.canPlayType = function canPlayType() {\n return '';\n };\n\n /**\n * Check if the tech can support the given source\n * @param {Object} srcObj\n * The source object\n * @param {Object} options\n * The options passed to the tech\n * @return {string} 'probably', 'maybe', or '' (empty string)\n */\n\n\n Tech.canPlaySource = function canPlaySource(srcObj, options) {\n return Tech.canPlayType(srcObj.type);\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\n * The item to check\n *\n * @return {boolean}\n * Whether it is a tech or not\n * - True if it is a tech\n * - False if it is not\n */\n\n\n Tech.isTech = function isTech(component) {\n return component.prototype instanceof Tech || component instanceof Tech || component === Tech;\n };\n\n /**\n * Registers a `Tech` into a shared list for videojs.\n *\n * @param {string} name\n * Name of the `Tech` to register.\n *\n * @param {Object} tech\n * The `Tech` class to register.\n */\n\n\n Tech.registerTech = function 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 if (!Tech.canPlayType) {\n throw new Error('Techs must have a static canPlayType method on them');\n }\n if (!Tech.canPlaySource) {\n throw new Error('Techs must have a static canPlaySource method on them');\n }\n\n name = toTitleCase(name);\n\n Tech.techs_[name] = tech;\n if (name !== 'Tech') {\n // camel case the techName for use in techOrder\n Tech.defaultTechOrder_.push(name);\n }\n return tech;\n };\n\n /**\n * Get a `Tech` from the shared list by name.\n *\n * @param {string} name\n * `camelCase` or `TitleCase` name of the Tech to get\n *\n * @return {Tech|undefined}\n * The `Tech` or undefined if there was no tech with the name requsted.\n */\n\n\n Tech.getTech = function getTech(name) {\n if (!name) {\n return;\n }\n\n name = toTitleCase(name);\n\n if (Tech.techs_ && Tech.techs_[name]) {\n return Tech.techs_[name];\n }\n\n if (window && window.videojs && window.videojs[name]) {\n log$1.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 return Tech;\n}(Component);\n\n/**\n * Get the {@link VideoTrackList}\n *\n * @returns {VideoTrackList}\n * @method Tech.prototype.videoTracks\n */\n\n/**\n * Get the {@link AudioTrackList}\n *\n * @returns {AudioTrackList}\n * @method Tech.prototype.audioTracks\n */\n\n/**\n * Get the {@link TextTrackList}\n *\n * @returns {TextTrackList}\n * @method Tech.prototype.textTracks\n */\n\n/**\n * Get the remote element {@link TextTrackList}\n *\n * @returns {TextTrackList}\n * @method Tech.prototype.remoteTextTracks\n */\n\n/**\n * Get the remote element {@link HtmlTrackElementList}\n *\n * @returns {HtmlTrackElementList}\n * @method Tech.prototype.remoteTextTrackEls\n */\n\nALL.names.forEach(function (name) {\n var props = ALL[name];\n\n Tech.prototype[props.getterName] = function () {\n this[props.privateName] = this[props.privateName] || new props.ListClass();\n return this[props.privateName];\n };\n});\n\n/**\n * List of associated text tracks\n *\n * @type {TextTrackList}\n * @private\n * @property Tech#textTracks_\n */\n\n/**\n * List of associated audio tracks.\n *\n * @type {AudioTrackList}\n * @private\n * @property Tech#audioTracks_\n */\n\n/**\n * List of associated video tracks.\n *\n * @type {VideoTrackList}\n * @private\n * @property Tech#videoTracks_\n */\n\n/**\n * Boolean indicating wether the `Tech` supports volume control.\n *\n * @type {boolean}\n * @default\n */\nTech.prototype.featuresVolumeControl = true;\n\n/**\n * Boolean indicating whether the `Tech` supports muting volume.\n *\n * @type {bolean}\n * @default\n */\nTech.prototype.featuresMuteControl = true;\n\n/**\n * Boolean indicating whether the `Tech` supports fullscreen resize control.\n * Resizing plugins using request fullscreen reloads the plugin\n *\n * @type {boolean}\n * @default\n */\nTech.prototype.featuresFullscreenResize = false;\n\n/**\n * Boolean indicating wether the `Tech` supports changing the speed at which the video\n * plays. Examples:\n * - Set player to play 2x (twice) as fast\n * - Set player to play 0.5x (half) as fast\n *\n * @type {boolean}\n * @default\n */\nTech.prototype.featuresPlaybackRate = false;\n\n/**\n * Boolean indicating wether the `Tech` supports the `progress` event. This is currently\n * not triggered by video-js-swf. This will be used to determine if\n * {@link Tech#manualProgressOn} should be called.\n *\n * @type {boolean}\n * @default\n */\nTech.prototype.featuresProgressEvents = false;\n\n/**\n * Boolean indicating wether the `Tech` supports the `sourceset` event.\n *\n * A tech should set this to `true` and then use {@link Tech#triggerSourceset}\n * to trigger a {@link Tech#event:sourceset} at the earliest time after getting\n * a new source.\n *\n * @type {boolean}\n * @default\n */\nTech.prototype.featuresSourceset = false;\n\n/**\n * Boolean indicating wether the `Tech` supports the `timeupdate` event. This is currently\n * not triggered by video-js-swf. This will be used to determine if\n * {@link Tech#manualTimeUpdates} should be called.\n *\n * @type {boolean}\n * @default\n */\nTech.prototype.featuresTimeupdateEvents = false;\n\n/**\n * Boolean indicating wether the `Tech` supports the native `TextTrack`s.\n * This will help us integrate with native `TextTrack`s if the browser supports them.\n *\n * @type {boolean}\n * @default\n */\nTech.prototype.featuresNativeTextTracks = false;\n\n/**\n * A functional mixin for techs that want to use the Source Handler pattern.\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 * Example: `Tech.withSourceHandlers.call(MyTech);`\n *\n * @param {Tech} _Tech\n * The tech to add source handler functions to.\n *\n * @mixes Tech~SourceHandlerAdditions\n */\nTech.withSourceHandlers = function (_Tech) {\n\n /**\n * Register a source handler\n *\n * @param {Function} handler\n * The source handler class\n *\n * @param {number} [index]\n * Register it at the following index\n */\n _Tech.registerSourceHandler = function (handler, index) {\n var 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. Also checks the\n * Techs sourceHandlers.\n *\n * @param {string} type\n * The mimetype to check.\n *\n * @return {string}\n * 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlayType = function (type) {\n var handlers = _Tech.sourceHandlers || [];\n var can = void 0;\n\n for (var 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 * Returns the first source handler that supports the source.\n *\n * TODO: Answer question: should 'probably' be prioritized over 'maybe'\n *\n * @param {Tech~SourceObject} source\n * The source object\n *\n * @param {Object} options\n * The options passed to the tech\n *\n * @return {SourceHandler|null}\n * The first source handler that supports the source or null if\n * no SourceHandler supports the source\n */\n _Tech.selectSourceHandler = function (source, options) {\n var handlers = _Tech.sourceHandlers || [];\n var can = void 0;\n\n for (var 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 *\n * @param {Tech~SourceObject} srcObj\n * The source object\n *\n * @param {Object} options\n * The options passed to the tech\n *\n * @return {string}\n * 'probably', 'maybe', or '' (empty string)\n */\n _Tech.canPlaySource = function (srcObj, options) {\n var 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 var deferrable = ['seekable', 'seeking', 'duration'];\n\n /**\n * A wrapper around {@link Tech#seekable} that will call a `SourceHandler`s seekable\n * function if it exists, with a fallback to the Techs seekable function.\n *\n * @method _Tech.seekable\n */\n\n /**\n * A wrapper around {@link Tech#duration} that will call a `SourceHandler`s duration\n * function if it exists, otherwise it will fallback to the techs duration function.\n *\n * @method _Tech.duration\n */\n\n deferrable.forEach(function (fnName) {\n var 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 *\n * @param {Tech~SourceObject} source\n * A source object with src and type keys\n */\n _Tech.prototype.setSource = function (source) {\n var 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$1.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 (sh !== _Tech.nativeSourceHandler) {\n this.currentSource_ = source;\n }\n\n this.sourceHandler_ = sh.handleSource(source, this, this.options_);\n this.on('dispose', this.disposeSourceHandler);\n };\n\n /**\n * Clean up any existing SourceHandlers and listeners when the Tech is disposed.\n *\n * @listens Tech#dispose\n */\n _Tech.prototype.disposeSourceHandler = function () {\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 this.currentSource_ = null;\n }\n\n // always clean up auto-text tracks\n this.cleanupAutoTextTracks();\n\n if (this.sourceHandler_) {\n\n if (this.sourceHandler_.dispose) {\n this.sourceHandler_.dispose();\n }\n\n this.sourceHandler_ = null;\n }\n };\n};\n\n// The base Tech class needs to be registered as a Component. It is the only\n// Tech that can be registered as a Component.\nComponent.registerComponent('Tech', Tech);\nTech.registerTech('Tech', Tech);\n\n/**\n * A list of techs that should be added to techOrder on Players\n *\n * @private\n */\nTech.defaultTechOrder_ = [];\n\nvar middlewares = {};\nvar middlewareInstances = {};\n\nvar TERMINATOR = {};\n\nfunction use(type, middleware) {\n middlewares[type] = middlewares[type] || [];\n middlewares[type].push(middleware);\n}\n\n\n\nfunction setSource(player, src, next) {\n player.setTimeout(function () {\n return setSourceHelper(src, middlewares[src.type], next, player);\n }, 1);\n}\n\nfunction setTech(middleware, tech) {\n middleware.forEach(function (mw) {\n return mw.setTech && mw.setTech(tech);\n });\n}\n\n/**\n * Calls a getter on the tech first, through each middleware\n * from right to left to the player.\n */\nfunction get$1(middleware, tech, method) {\n return middleware.reduceRight(middlewareIterator(method), tech[method]());\n}\n\n/**\n * Takes the argument given to the player and calls the setter method on each\n * middlware from left to right to the tech.\n */\nfunction set$1(middleware, tech, method, arg) {\n return tech[method](middleware.reduce(middlewareIterator(method), arg));\n}\n\n/**\n * Takes the argument given to the player and calls the `call` version of the method\n * on each middleware from left to right.\n * Then, call the passed in method on the tech and return the result unchanged\n * back to the player, through middleware, this time from right to left.\n */\nfunction mediate(middleware, tech, method) {\n var arg = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n var callMethod = 'call' + toTitleCase(method);\n var middlewareValue = middleware.reduce(middlewareIterator(callMethod), arg);\n var terminated = middlewareValue === TERMINATOR;\n var returnValue = terminated ? null : tech[method](middlewareValue);\n\n executeRight(middleware, method, returnValue, terminated);\n\n return returnValue;\n}\n\nvar allowedGetters = {\n buffered: 1,\n currentTime: 1,\n duration: 1,\n seekable: 1,\n played: 1,\n paused: 1\n};\n\nvar allowedSetters = {\n setCurrentTime: 1\n};\n\nvar allowedMediators = {\n play: 1,\n pause: 1\n};\n\nfunction middlewareIterator(method) {\n return function (value, mw) {\n // if the previous middleware terminated, pass along the termination\n if (value === TERMINATOR) {\n return TERMINATOR;\n }\n\n if (mw[method]) {\n return mw[method](value);\n }\n\n return value;\n };\n}\n\nfunction executeRight(mws, method, value, terminated) {\n for (var i = mws.length - 1; i >= 0; i--) {\n var mw = mws[i];\n\n if (mw[method]) {\n mw[method](terminated, value);\n }\n }\n}\n\nfunction clearCacheForPlayer(player) {\n middlewareInstances[player.id()] = null;\n}\n\n/**\n * {\n * [playerId]: [[mwFactory, mwInstance], ...]\n * }\n */\nfunction getOrCreateFactory(player, mwFactory) {\n var mws = middlewareInstances[player.id()];\n var mw = null;\n\n if (mws === undefined || mws === null) {\n mw = mwFactory(player);\n middlewareInstances[player.id()] = [[mwFactory, mw]];\n return mw;\n }\n\n for (var i = 0; i < mws.length; i++) {\n var _mws$i = mws[i],\n mwf = _mws$i[0],\n mwi = _mws$i[1];\n\n\n if (mwf !== mwFactory) {\n continue;\n }\n\n mw = mwi;\n }\n\n if (mw === null) {\n mw = mwFactory(player);\n mws.push([mwFactory, mw]);\n }\n\n return mw;\n}\n\nfunction setSourceHelper() {\n var src = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var middleware = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var next = arguments[2];\n var player = arguments[3];\n var acc = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var lastRun = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;\n var mwFactory = middleware[0],\n mwrest = middleware.slice(1);\n\n // if mwFactory is a string, then we're at a fork in the road\n\n if (typeof mwFactory === 'string') {\n setSourceHelper(src, middlewares[mwFactory], next, player, acc, lastRun);\n\n // if we have an mwFactory, call it with the player to get the mw,\n // then call the mw's setSource method\n } else if (mwFactory) {\n var mw = getOrCreateFactory(player, mwFactory);\n\n // if setSource isn't present, implicitly select this middleware\n if (!mw.setSource) {\n acc.push(mw);\n return setSourceHelper(src, mwrest, next, player, acc, lastRun);\n }\n\n mw.setSource(assign({}, src), function (err, _src) {\n\n // something happened, try the next middleware on the current level\n // make sure to use the old src\n if (err) {\n return setSourceHelper(src, mwrest, next, player, acc, lastRun);\n }\n\n // we've succeeded, now we need to go deeper\n acc.push(mw);\n\n // if it's the same type, continue down the current chain\n // otherwise, we want to go down the new chain\n setSourceHelper(_src, src.type === _src.type ? mwrest : middlewares[_src.type], next, player, acc, lastRun);\n });\n } else if (mwrest.length) {\n setSourceHelper(src, mwrest, next, player, acc, lastRun);\n } else if (lastRun) {\n next(src, acc);\n } else {\n setSourceHelper(src, middlewares['*'], next, player, acc, true);\n }\n}\n\n/**\n * Mimetypes\n *\n * @see http://hul.harvard.edu/ois/////systems/wax/wax-public-help/mimetypes.htm\n * @typedef Mimetypes~Kind\n * @enum\n */\nvar MimetypesKind = {\n opus: 'video/ogg',\n ogv: 'video/ogg',\n mp4: 'video/mp4',\n mov: 'video/mp4',\n m4v: 'video/mp4',\n mkv: 'video/x-matroska',\n mp3: 'audio/mpeg',\n aac: 'audio/aac',\n oga: 'audio/ogg',\n m3u8: 'application/x-mpegURL'\n};\n\n/**\n * Get the mimetype of a given src url if possible\n *\n * @param {string} src\n * The url to the src\n *\n * @return {string}\n * return the mimetype if it was known or empty string otherwise\n */\nvar getMimetype = function getMimetype() {\n var src = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var ext = getFileExtension(src);\n var mimetype = MimetypesKind[ext.toLowerCase()];\n\n return mimetype || '';\n};\n\n/**\n * Find the mime type of a given source string if possible. Uses the player\n * source cache.\n *\n * @param {Player} player\n * The player object\n *\n * @param {string} src\n * The source string\n *\n * @return {string}\n * The type that was found\n */\nvar findMimetype = function findMimetype(player, src) {\n if (!src) {\n return '';\n }\n\n // 1. check for the type in the `source` cache\n if (player.cache_.source.src === src && player.cache_.source.type) {\n return player.cache_.source.type;\n }\n\n // 2. see if we have this source in our `currentSources` cache\n var matchingSources = player.cache_.sources.filter(function (s) {\n return s.src === src;\n });\n\n if (matchingSources.length) {\n return matchingSources[0].type;\n }\n\n // 3. look for the src url in source elements and use the type there\n var sources = player.$$('source');\n\n for (var i = 0; i < sources.length; i++) {\n var s = sources[i];\n\n if (s.type && s.src && s.src === src) {\n return s.type;\n }\n }\n\n // 4. finally fallback to our list of mime types based on src url extension\n return getMimetype(src);\n};\n\n/**\n * @module filter-source\n */\n/**\n * Filter out single bad source objects or multiple source objects in an\n * array. Also flattens nested source object arrays into a 1 dimensional\n * array of source objects.\n *\n * @param {Tech~SourceObject|Tech~SourceObject[]} src\n * The src object to filter\n *\n * @return {Tech~SourceObject[]}\n * An array of sourceobjects containing only valid sources\n *\n * @private\n */\nvar filterSource = function filterSource(src) {\n // traverse array\n if (Array.isArray(src)) {\n var newsrc = [];\n\n src.forEach(function (srcobj) {\n srcobj = filterSource(srcobj);\n\n if (Array.isArray(srcobj)) {\n newsrc = newsrc.concat(srcobj);\n } else if (isObject(srcobj)) {\n newsrc.push(srcobj);\n }\n });\n\n src = newsrc;\n } else if (typeof src === 'string' && src.trim()) {\n // convert string into object\n src = [fixSource({ src: src })];\n } else if (isObject(src) && typeof src.src === 'string' && src.src && src.src.trim()) {\n // src is already valid\n src = [fixSource(src)];\n } else {\n // invalid source, turn it into an empty array\n src = [];\n }\n\n return src;\n};\n\n/**\n * Checks src mimetype, adding it when possible\n *\n * @param {Tech~SourceObject} src\n * The src object to check\n * @return {Tech~SourceObject}\n * src Object with known type\n */\nfunction fixSource(src) {\n var mimetype = getMimetype(src.src);\n\n if (!src.type && mimetype) {\n src.type = mimetype;\n }\n\n return src;\n}\n\n/**\n * @file loader.js\n */\n/**\n * The `MediaLoader` is the `Component` that decides which playback technology to load\n * when a player is initialized.\n *\n * @extends Component\n */\n\nvar MediaLoader = function (_Component) {\n inherits(MediaLoader, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should attach to.\n *\n * @param {Object} [options]\n * The key/value stroe of player options.\n *\n * @param {Component~ReadyCallback} [ready]\n * The function that is run when this component is ready.\n */\n function MediaLoader(player, options, ready) {\n classCallCheck(this, MediaLoader);\n\n // MediaLoader has no element\n var options_ = mergeOptions({ createEl: false }, options);\n\n // If there are no sources when the player is initialized,\n // load the first supported playback technology.\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options_, ready));\n\n if (!options.playerOptions.sources || options.playerOptions.sources.length === 0) {\n for (var i = 0, j = options.playerOptions.techOrder; i < j.length; i++) {\n var techName = toTitleCase(j[i]);\n var 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 (!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 return _this;\n }\n\n return MediaLoader;\n}(Component);\n\nComponent.registerComponent('MediaLoader', MediaLoader);\n\n/**\n * @file button.js\n */\n/**\n * Clickable Component which is clickable or keyboard actionable,\n * but is not a native HTML button.\n *\n * @extends Component\n */\n\nvar ClickableComponent = function (_Component) {\n inherits(ClickableComponent, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function ClickableComponent(player, options) {\n classCallCheck(this, ClickableComponent);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.emitTapEvents();\n\n _this.enable();\n return _this;\n }\n\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tag=div]\n * The element's node type.\n *\n * @param {Object} [props={}]\n * An object of properties that should be set on the element.\n *\n * @param {Object} [attributes={}]\n * An object of attributes that should be set on the element.\n *\n * @return {Element}\n * The element that gets created.\n */\n\n\n ClickableComponent.prototype.createEl = function createEl$$1() {\n var tag = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'div';\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n props = assign({\n innerHTML: '<span aria-hidden=\"true\" class=\"vjs-icon-placeholder\"></span>',\n className: this.buildCSSClass(),\n tabIndex: 0\n }, props);\n\n if (tag === 'button') {\n log$1.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 }, attributes);\n\n this.tabIndex_ = props.tabIndex;\n\n var el = _Component.prototype.createEl.call(this, tag, props, attributes);\n\n this.createControlTextEl(el);\n\n return el;\n };\n\n ClickableComponent.prototype.dispose = function dispose() {\n // remove controlTextEl_ on dipose\n this.controlTextEl_ = null;\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Create a control text element on this `Component`\n *\n * @param {Element} [el]\n * Parent element for the control text.\n *\n * @return {Element}\n * The control text element that gets created.\n */\n\n\n ClickableComponent.prototype.createControlTextEl = function createControlTextEl(el) {\n this.controlTextEl_ = createEl('span', {\n className: 'vjs-control-text'\n }, {\n // let the screen reader user know that the text of the element may change\n 'aria-live': 'polite'\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 * Get or set the localize text to use for the controls on the `Component`.\n *\n * @param {string} [text]\n * Control text for element.\n *\n * @param {Element} [el=this.el()]\n * Element to set the title on.\n *\n * @return {string}\n * - The control text when getting\n */\n\n\n ClickableComponent.prototype.controlText = function controlText(text) {\n var el = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.el();\n\n if (text === undefined) {\n return this.controlText_ || 'Need Text';\n }\n\n var localizedText = this.localize(text);\n\n this.controlText_ = text;\n textContent(this.controlTextEl_, localizedText);\n if (!this.nonIconControl) {\n // Set title attribute if only an icon is shown\n el.setAttribute('title', localizedText);\n }\n };\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n ClickableComponent.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-control vjs-button ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Enable this `Component`s element.\n */\n\n\n ClickableComponent.prototype.enable = function enable() {\n if (!this.enabled_) {\n this.enabled_ = true;\n this.removeClass('vjs-disabled');\n this.el_.setAttribute('aria-disabled', 'false');\n if (typeof this.tabIndex_ !== 'undefined') {\n this.el_.setAttribute('tabIndex', this.tabIndex_);\n }\n this.on(['tap', 'click'], this.handleClick);\n this.on('focus', this.handleFocus);\n this.on('blur', this.handleBlur);\n }\n };\n\n /**\n * Disable this `Component`s element.\n */\n\n\n ClickableComponent.prototype.disable = function disable() {\n this.enabled_ = false;\n this.addClass('vjs-disabled');\n this.el_.setAttribute('aria-disabled', 'true');\n if (typeof this.tabIndex_ !== 'undefined') {\n this.el_.removeAttribute('tabIndex');\n }\n this.off(['tap', 'click'], this.handleClick);\n this.off('focus', this.handleFocus);\n this.off('blur', this.handleBlur);\n };\n\n /**\n * This gets called when a `ClickableComponent` gets:\n * - Clicked (via the `click` event, listening starts in the constructor)\n * - Tapped (via the `tap` event, listening starts in the constructor)\n * - The following things happen in order:\n * 1. {@link ClickableComponent#handleFocus} is called via a `focus` event on the\n * `ClickableComponent`.\n * 2. {@link ClickableComponent#handleFocus} adds a listener for `keydown` on using\n * {@link ClickableComponent#handleKeyPress}.\n * 3. `ClickableComponent` has not had a `blur` event (`blur` means that focus was lost). The user presses\n * the space or enter key.\n * 4. {@link ClickableComponent#handleKeyPress} calls this function with the `keydown`\n * event as a parameter.\n *\n * @param {EventTarget~Event} event\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n * @abstract\n */\n\n\n ClickableComponent.prototype.handleClick = function handleClick(event) {};\n\n /**\n * This gets called when a `ClickableComponent` gains focus via a `focus` event.\n * Turns on listening for `keydown` events. When they happen it\n * calls `this.handleKeyPress`.\n *\n * @param {EventTarget~Event} event\n * The `focus` event that caused this function to be called.\n *\n * @listens focus\n */\n\n\n ClickableComponent.prototype.handleFocus = function handleFocus(event) {\n on(document, 'keydown', bind(this, this.handleKeyPress));\n };\n\n /**\n * Called when this ClickableComponent has focus and a key gets pressed down. By\n * default it will call `this.handleClick` when the key is space or enter.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n *\n * @listens keydown\n */\n\n\n ClickableComponent.prototype.handleKeyPress = function handleKeyPress(event) {\n\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.trigger('click');\n } else if (_Component.prototype.handleKeyPress) {\n\n // Pass keypress handling up for unsupported keys\n _Component.prototype.handleKeyPress.call(this, event);\n }\n };\n\n /**\n * Called when a `ClickableComponent` loses focus. Turns off the listener for\n * `keydown` events. Which Stops `this.handleKeyPress` from getting called.\n *\n * @param {EventTarget~Event} event\n * The `blur` event that caused this function to be called.\n *\n * @listens blur\n */\n\n\n ClickableComponent.prototype.handleBlur = function handleBlur(event) {\n off(document, 'keydown', bind(this, this.handleKeyPress));\n };\n\n return ClickableComponent;\n}(Component);\n\nComponent.registerComponent('ClickableComponent', ClickableComponent);\n\n/**\n * @file poster-image.js\n */\n/**\n * A `ClickableComponent` that handles showing the poster image for the player.\n *\n * @extends ClickableComponent\n */\n\nvar PosterImage = function (_ClickableComponent) {\n inherits(PosterImage, _ClickableComponent);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should attach to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function PosterImage(player, options) {\n classCallCheck(this, PosterImage);\n\n var _this = possibleConstructorReturn(this, _ClickableComponent.call(this, player, options));\n\n _this.update();\n player.on('posterchange', bind(_this, _this.update));\n return _this;\n }\n\n /**\n * Clean up and dispose of the `PosterImage`.\n */\n\n\n PosterImage.prototype.dispose = function dispose() {\n this.player().off('posterchange', this.update);\n _ClickableComponent.prototype.dispose.call(this);\n };\n\n /**\n * Create the `PosterImage`s DOM element.\n *\n * @return {Element}\n * The element that gets created.\n */\n\n\n PosterImage.prototype.createEl = function createEl$$1() {\n var el = 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 (!BACKGROUND_SIZE_SUPPORTED) {\n this.fallbackImg_ = createEl('img');\n el.appendChild(this.fallbackImg_);\n }\n\n return el;\n };\n\n /**\n * An {@link EventTarget~EventListener} for {@link Player#posterchange} events.\n *\n * @listens Player#posterchange\n *\n * @param {EventTarget~Event} [event]\n * The `Player#posterchange` event that triggered this function.\n */\n\n\n PosterImage.prototype.update = function update(event) {\n var 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 source of the `PosterImage` depending on the display method.\n *\n * @param {string} url\n * The URL to the source for the `PosterImage`.\n */\n\n\n PosterImage.prototype.setSrc = function setSrc(url) {\n if (this.fallbackImg_) {\n this.fallbackImg_.src = url;\n } else {\n var backgroundImage = '';\n\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 * An {@link EventTarget~EventListener} for clicks on the `PosterImage`. See\n * {@link ClickableComponent#handleClick} for instances where this will be triggered.\n *\n * @listens tap\n * @listens click\n * @listens keydown\n *\n * @param {EventTarget~Event} event\n + The `click`, `tap` or `keydown` event that caused this function to be called.\n */\n\n\n PosterImage.prototype.handleClick = function handleClick(event) {\n // We don't want a click to trigger playback when controls are disabled\n if (!this.player_.controls()) {\n return;\n }\n\n if (this.player_.paused()) {\n silencePromise(this.player_.play());\n } else {\n this.player_.pause();\n }\n };\n\n return PosterImage;\n}(ClickableComponent);\n\nComponent.registerComponent('PosterImage', PosterImage);\n\n/**\n * @file text-track-display.js\n */\nvar darkGray = '#222';\nvar lightGray = '#ccc';\nvar 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 * Construct an rgba color from a given hex color code.\n *\n * @param {number} color\n * Hex number for color, like #f0e or #f604e2.\n *\n * @param {number} opacity\n * Value for opacity, 0.0 - 1.0.\n *\n * @return {string}\n * The rgba color that was created, like 'rgba(255, 0, 0, 0.3)'.\n */\nfunction constructColor(color, opacity) {\n var hex = void 0;\n\n if (color.length === 4) {\n // color looks like \"#f0e\"\n hex = color[1] + color[1] + color[2] + color[2] + color[3] + color[3];\n } else if (color.length === 7) {\n // color looks like \"#f604e2\"\n hex = color.slice(1);\n } else {\n throw new Error('Invalid color code provided, ' + color + '; must be formatted as e.g. #f0e or #f604e2.');\n }\n return 'rgba(' + parseInt(hex.slice(0, 2), 16) + ',' + parseInt(hex.slice(2, 4), 16) + ',' + parseInt(hex.slice(4, 6), 16) + ',' + opacity + ')';\n}\n\n/**\n * Try to update the style of a DOM element. Some style changes will throw an error,\n * particularly in IE8. Those should be noops.\n *\n * @param {Element} el\n * The DOM element to be styled.\n *\n * @param {string} style\n * The CSS property on the element that should be styled.\n *\n * @param {string} rule\n * The style rule that should be applied to the property.\n *\n * @private\n */\nfunction tryUpdateStyle(el, style, rule) {\n try {\n el.style[style] = rule;\n } catch (e) {\n\n // Satisfies linter.\n return;\n }\n}\n\n/**\n * The component for displaying text track cues.\n *\n * @extends Component\n */\n\nvar TextTrackDisplay = function (_Component) {\n inherits(TextTrackDisplay, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} [ready]\n * The function to call when `TextTrackDisplay` is ready.\n */\n function TextTrackDisplay(player, options, ready) {\n classCallCheck(this, TextTrackDisplay);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options, ready));\n\n player.on('loadstart', bind(_this, _this.toggleDisplay));\n player.on('texttrackchange', bind(_this, _this.updateDisplay));\n player.on('loadstart', bind(_this, _this.preselectTrack));\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(bind(_this, function () {\n if (player.tech_ && player.tech_.featuresNativeTextTracks) {\n this.hide();\n return;\n }\n\n player.on('fullscreenchange', bind(this, this.updateDisplay));\n\n var tracks = this.options_.playerOptions.tracks || [];\n\n for (var i = 0; i < tracks.length; i++) {\n this.player_.addRemoteTextTrack(tracks[i], true);\n }\n\n this.preselectTrack();\n }));\n return _this;\n }\n\n /**\n * Preselect a track following this precedence:\n * - matches the previously selected {@link TextTrack}'s language and kind\n * - matches the previously selected {@link TextTrack}'s language only\n * - is the first default captions track\n * - is the first default descriptions track\n *\n * @listens Player#loadstart\n */\n\n\n TextTrackDisplay.prototype.preselectTrack = function preselectTrack() {\n var modes = { captions: 1, subtitles: 1 };\n var trackList = this.player_.textTracks();\n var userPref = this.player_.cache_.selectedLanguage;\n var firstDesc = void 0;\n var firstCaptions = void 0;\n var preferredTrack = void 0;\n\n for (var i = 0; i < trackList.length; i++) {\n var track = trackList[i];\n\n if (userPref && userPref.enabled && userPref.language === track.language) {\n // Always choose the track that matches both language and kind\n if (track.kind === userPref.kind) {\n preferredTrack = track;\n // or choose the first track that matches language\n } else if (!preferredTrack) {\n preferredTrack = track;\n }\n\n // clear everything if offTextTrackMenuItem was clicked\n } else if (userPref && !userPref.enabled) {\n preferredTrack = null;\n firstDesc = null;\n firstCaptions = null;\n } else 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 // The preferredTrack matches the user preference and takes\n // precendence over all the other tracks.\n // So, display the preferredTrack before the first default track\n // and the subtitles/captions track before the descriptions track\n if (preferredTrack) {\n preferredTrack.mode = 'showing';\n } else if (firstCaptions) {\n firstCaptions.mode = 'showing';\n } else if (firstDesc) {\n firstDesc.mode = 'showing';\n }\n };\n\n /**\n * Turn display of {@link TextTrack}'s from the current state into the other state.\n * There are only two states:\n * - 'shown'\n * - 'hidden'\n *\n * @listens Player#loadstart\n */\n\n\n TextTrackDisplay.prototype.toggleDisplay = function 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 {@link Component}'s DOM element.\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n TextTrackDisplay.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-text-track-display'\n }, {\n 'aria-live': 'off',\n 'aria-atomic': 'true'\n });\n };\n\n /**\n * Clear all displayed {@link TextTrack}s.\n */\n\n\n TextTrackDisplay.prototype.clearDisplay = function clearDisplay() {\n if (typeof window.WebVTT === 'function') {\n window.WebVTT.processCues(window, [], this.el_);\n }\n };\n\n /**\n * Update the displayed TextTrack when a either a {@link Player#texttrackchange} or\n * a {@link Player#fullscreenchange} is fired.\n *\n * @listens Player#texttrackchange\n * @listens Player#fullscreenchange\n */\n\n\n TextTrackDisplay.prototype.updateDisplay = function updateDisplay() {\n var tracks = this.player_.textTracks();\n\n this.clearDisplay();\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 var descriptionsTrack = null;\n var captionsSubtitlesTrack = null;\n var i = tracks.length;\n\n while (i--) {\n var track = tracks[i];\n\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 if (this.getAttribute('aria-live') !== 'off') {\n this.setAttribute('aria-live', 'off');\n }\n this.updateForTrack(captionsSubtitlesTrack);\n } else if (descriptionsTrack) {\n if (this.getAttribute('aria-live') !== 'assertive') {\n this.setAttribute('aria-live', 'assertive');\n }\n this.updateForTrack(descriptionsTrack);\n }\n };\n\n /**\n * Add an {@link Texttrack} to to the {@link Tech}s {@link TextTrackList}.\n *\n * @param {TextTrack} track\n * Text track object to be added to the list.\n */\n\n\n TextTrackDisplay.prototype.updateForTrack = function updateForTrack(track) {\n if (typeof window.WebVTT !== 'function' || !track.activeCues) {\n return;\n }\n\n var cues = [];\n\n for (var _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 if (!this.player_.textTrackSettings) {\n return;\n }\n\n var overrides = this.player_.textTrackSettings.getValues();\n\n var i = cues.length;\n\n while (i--) {\n var cue = cues[i];\n\n if (!cue) {\n continue;\n }\n\n var cueDiv = cue.displayState;\n\n if (overrides.color) {\n cueDiv.firstChild.style.color = overrides.color;\n }\n if (overrides.textOpacity) {\n tryUpdateStyle(cueDiv.firstChild, 'color', constructColor(overrides.color || '#fff', overrides.textOpacity));\n }\n if (overrides.backgroundColor) {\n cueDiv.firstChild.style.backgroundColor = overrides.backgroundColor;\n }\n if (overrides.backgroundOpacity) {\n tryUpdateStyle(cueDiv.firstChild, 'backgroundColor', constructColor(overrides.backgroundColor || '#000', overrides.backgroundOpacity));\n }\n if (overrides.windowColor) {\n if (overrides.windowOpacity) {\n tryUpdateStyle(cueDiv, 'backgroundColor', 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 var fontSize = window.parseFloat(cueDiv.style.fontSize);\n\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 return TextTrackDisplay;\n}(Component);\n\nComponent.registerComponent('TextTrackDisplay', TextTrackDisplay);\n\n/**\n * @file loading-spinner.js\n */\n/**\n * A loading spinner for use during waiting/loading events.\n *\n * @extends Component\n */\n\nvar LoadingSpinner = function (_Component) {\n inherits(LoadingSpinner, _Component);\n\n function LoadingSpinner() {\n classCallCheck(this, LoadingSpinner);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n /**\n * Create the `LoadingSpinner`s DOM element.\n *\n * @return {Element}\n * The dom element that gets created.\n */\n LoadingSpinner.prototype.createEl = function createEl$$1() {\n var isAudio = this.player_.isAudio();\n var playerType = this.localize(isAudio ? 'Audio Player' : 'Video Player');\n var controlText = createEl('span', {\n className: 'vjs-control-text',\n innerHTML: this.localize('{1} is loading.', [playerType])\n });\n\n var el = _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-loading-spinner',\n dir: 'ltr'\n });\n\n el.appendChild(controlText);\n\n return el;\n };\n\n return LoadingSpinner;\n}(Component);\n\nComponent.registerComponent('LoadingSpinner', LoadingSpinner);\n\n/**\n * @file button.js\n */\n/**\n * Base class for all buttons.\n *\n * @extends ClickableComponent\n */\n\nvar Button = function (_ClickableComponent) {\n inherits(Button, _ClickableComponent);\n\n function Button() {\n classCallCheck(this, Button);\n return possibleConstructorReturn(this, _ClickableComponent.apply(this, arguments));\n }\n\n /**\n * Create the `Button`s DOM element.\n *\n * @param {string} [tag=\"button\"]\n * The element's node type. This argument is IGNORED: no matter what\n * is passed, it will always create a `button` element.\n *\n * @param {Object} [props={}]\n * An object of properties that should be set on the element.\n *\n * @param {Object} [attributes={}]\n * An object of attributes that should be set on the element.\n *\n * @return {Element}\n * The element that gets created.\n */\n Button.prototype.createEl = function createEl(tag) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n tag = 'button';\n\n props = assign({\n innerHTML: '<span aria-hidden=\"true\" class=\"vjs-icon-placeholder\"></span>',\n className: this.buildCSSClass()\n }, props);\n\n // Add attributes for button element\n attributes = assign({\n\n // Necessary since the default button type is \"submit\"\n type: 'button'\n }, attributes);\n\n var el = Component.prototype.createEl.call(this, tag, props, attributes);\n\n this.createControlTextEl(el);\n\n return el;\n };\n\n /**\n * Add a child `Component` inside of this `Button`.\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n *\n * @deprecated since version 5\n */\n\n\n Button.prototype.addChild = function addChild(child) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var className = this.constructor.name;\n\n log$1.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 * Enable the `Button` element so that it can be activated or clicked. Use this with\n * {@link Button#disable}.\n */\n\n\n Button.prototype.enable = function enable() {\n _ClickableComponent.prototype.enable.call(this);\n this.el_.removeAttribute('disabled');\n };\n\n /**\n * Disable the `Button` element so that it cannot be activated or clicked. Use this with\n * {@link Button#enable}.\n */\n\n\n Button.prototype.disable = function disable() {\n _ClickableComponent.prototype.disable.call(this);\n this.el_.setAttribute('disabled', 'disabled');\n };\n\n /**\n * This gets called when a `Button` has focus and `keydown` is triggered via a key\n * press.\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to get called.\n *\n * @listens keydown\n */\n\n\n Button.prototype.handleKeyPress = function handleKeyPress(event) {\n\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 return;\n }\n\n // Pass keypress handling up for unsupported keys\n _ClickableComponent.prototype.handleKeyPress.call(this, event);\n };\n\n return Button;\n}(ClickableComponent);\n\nComponent.registerComponent('Button', Button);\n\n/**\n * @file big-play-button.js\n */\n/**\n * The initial play button that shows before the video has played. The hiding of the\n * `BigPlayButton` get done via CSS and `Player` states.\n *\n * @extends Button\n */\n\nvar BigPlayButton = function (_Button) {\n inherits(BigPlayButton, _Button);\n\n function BigPlayButton(player, options) {\n classCallCheck(this, BigPlayButton);\n\n var _this = possibleConstructorReturn(this, _Button.call(this, player, options));\n\n _this.mouseused_ = false;\n\n _this.on('mousedown', _this.handleMouseDown);\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object. Always returns 'vjs-big-play-button'.\n */\n\n\n BigPlayButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-big-play-button';\n };\n\n /**\n * This gets called when a `BigPlayButton` \"clicked\". See {@link ClickableComponent}\n * for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} event\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n BigPlayButton.prototype.handleClick = function handleClick(event) {\n var playPromise = this.player_.play();\n\n // exit early if clicked via the mouse\n if (this.mouseused_ && event.clientX && event.clientY) {\n silencePromise(playPromise);\n return;\n }\n\n var cb = this.player_.getChild('controlBar');\n var playToggle = cb && cb.getChild('playToggle');\n\n if (!playToggle) {\n this.player_.focus();\n return;\n }\n\n var playFocus = function playFocus() {\n return playToggle.focus();\n };\n\n if (isPromise(playPromise)) {\n playPromise.then(playFocus, function () {});\n } else {\n this.setTimeout(playFocus, 1);\n }\n };\n\n BigPlayButton.prototype.handleKeyPress = function handleKeyPress(event) {\n this.mouseused_ = false;\n\n _Button.prototype.handleKeyPress.call(this, event);\n };\n\n BigPlayButton.prototype.handleMouseDown = function handleMouseDown(event) {\n this.mouseused_ = true;\n };\n\n return BigPlayButton;\n}(Button);\n\n/**\n * The text that should display over the `BigPlayButton`s controls. Added to for localization.\n *\n * @type {string}\n * @private\n */\n\n\nBigPlayButton.prototype.controlText_ = 'Play Video';\n\nComponent.registerComponent('BigPlayButton', BigPlayButton);\n\n/**\n * @file close-button.js\n */\n/**\n * The `CloseButton` is a `{@link Button}` that fires a `close` event when\n * it gets clicked.\n *\n * @extends Button\n */\n\nvar CloseButton = function (_Button) {\n inherits(CloseButton, _Button);\n\n /**\n * Creates an instance of the this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function CloseButton(player, options) {\n classCallCheck(this, CloseButton);\n\n var _this = possibleConstructorReturn(this, _Button.call(this, player, options));\n\n _this.controlText(options && options.controlText || _this.localize('Close'));\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n CloseButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-close-button ' + _Button.prototype.buildCSSClass.call(this);\n };\n\n /**\n * This gets called when a `CloseButton` gets clicked. See\n * {@link ClickableComponent#handleClick} for more information on when this will be\n * triggered\n *\n * @param {EventTarget~Event} event\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n * @fires CloseButton#close\n */\n\n\n CloseButton.prototype.handleClick = function handleClick(event) {\n\n /**\n * Triggered when the a `CloseButton` is clicked.\n *\n * @event CloseButton#close\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the close event does not\n * bubble up to parents if there is no listener\n */\n this.trigger({ type: 'close', bubbles: false });\n };\n\n return CloseButton;\n}(Button);\n\nComponent.registerComponent('CloseButton', CloseButton);\n\n/**\n * @file play-toggle.js\n */\n/**\n * Button to toggle between play and pause.\n *\n * @extends Button\n */\n\nvar PlayToggle = function (_Button) {\n inherits(PlayToggle, _Button);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function PlayToggle(player, options) {\n classCallCheck(this, PlayToggle);\n\n var _this = possibleConstructorReturn(this, _Button.call(this, player, options));\n\n _this.on(player, 'play', _this.handlePlay);\n _this.on(player, 'pause', _this.handlePause);\n _this.on(player, 'ended', _this.handleEnded);\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n PlayToggle.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-play-control ' + _Button.prototype.buildCSSClass.call(this);\n };\n\n /**\n * This gets called when an `PlayToggle` is \"clicked\". See\n * {@link ClickableComponent} for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} [event]\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n PlayToggle.prototype.handleClick = function handleClick(event) {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n };\n\n /**\n * This gets called once after the video has ended and the user seeks so that\n * we can change the replay button back to a play button.\n *\n * @param {EventTarget~Event} [event]\n * The event that caused this function to run.\n *\n * @listens Player#seeked\n */\n\n\n PlayToggle.prototype.handleSeeked = function handleSeeked(event) {\n this.removeClass('vjs-ended');\n\n if (this.player_.paused()) {\n this.handlePause(event);\n } else {\n this.handlePlay(event);\n }\n };\n\n /**\n * Add the vjs-playing class to the element so it can change appearance.\n *\n * @param {EventTarget~Event} [event]\n * The event that caused this function to run.\n *\n * @listens Player#play\n */\n\n\n PlayToggle.prototype.handlePlay = function handlePlay(event) {\n this.removeClass('vjs-ended');\n this.removeClass('vjs-paused');\n this.addClass('vjs-playing');\n // change the button text to \"Pause\"\n this.controlText('Pause');\n };\n\n /**\n * Add the vjs-paused class to the element so it can change appearance.\n *\n * @param {EventTarget~Event} [event]\n * The event that caused this function to run.\n *\n * @listens Player#pause\n */\n\n\n PlayToggle.prototype.handlePause = function handlePause(event) {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n // change the button text to \"Play\"\n this.controlText('Play');\n };\n\n /**\n * Add the vjs-ended class to the element so it can change appearance\n *\n * @param {EventTarget~Event} [event]\n * The event that caused this function to run.\n *\n * @listens Player#ended\n */\n\n\n PlayToggle.prototype.handleEnded = function handleEnded(event) {\n this.removeClass('vjs-playing');\n this.addClass('vjs-ended');\n // change the button text to \"Replay\"\n this.controlText('Replay');\n\n // on the next seek remove the replay button\n this.one(this.player_, 'seeked', this.handleSeeked);\n };\n\n return PlayToggle;\n}(Button);\n\n/**\n * The text that should display over the `PlayToggle`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\n\n\nPlayToggle.prototype.controlText_ = 'Play';\n\nComponent.registerComponent('PlayToggle', PlayToggle);\n\n/**\n * @file format-time.js\n * @module format-time\n */\n\n/**\n* Format seconds as a time string, H:MM:SS or M:SS. Supplying a guide (in seconds)\n* will force a number of leading zeros to cover the length of the guide.\n*\n* @param {number} seconds\n* Number of seconds to be turned into a string\n*\n* @param {number} guide\n* Number (in seconds) to model the string after\n*\n* @return {string}\n* Time formatted as H:MM:SS or M:SS\n*/\nvar defaultImplementation = function defaultImplementation(seconds, guide) {\n seconds = seconds < 0 ? 0 : seconds;\n var s = Math.floor(seconds % 60);\n var m = Math.floor(seconds / 60 % 60);\n var h = Math.floor(seconds / 3600);\n var gm = Math.floor(guide / 60 % 60);\n var 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\nvar implementation = defaultImplementation;\n\n/**\n * Replaces the default formatTime implementation with a custom implementation.\n *\n * @param {Function} customImplementation\n * A function which will be used in place of the default formatTime implementation.\n * Will receive the current time in seconds and the guide (in seconds) as arguments.\n */\nfunction setFormatTime(customImplementation) {\n implementation = customImplementation;\n}\n\n/**\n * Resets formatTime to the default implementation.\n */\nfunction resetFormatTime() {\n implementation = defaultImplementation;\n}\n\nvar formatTime = function (seconds) {\n var guide = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : seconds;\n\n return implementation(seconds, guide);\n};\n\n/**\n * @file time-display.js\n */\n/**\n * Displays the time left in the video\n *\n * @extends Component\n */\n\nvar TimeDisplay = function (_Component) {\n inherits(TimeDisplay, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function TimeDisplay(player, options) {\n classCallCheck(this, TimeDisplay);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.throttledUpdateContent = throttle(bind(_this, _this.updateContent), 25);\n _this.on(player, 'timeupdate', _this.throttledUpdateContent);\n return _this;\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n TimeDisplay.prototype.createEl = function createEl$$1(plainName) {\n var className = this.buildCSSClass();\n var el = _Component.prototype.createEl.call(this, 'div', {\n className: className + ' vjs-time-control vjs-control',\n innerHTML: '<span class=\"vjs-control-text\">' + this.localize(this.labelText_) + '\\xA0</span>'\n });\n\n this.contentEl_ = createEl('span', {\n className: className + '-display'\n }, {\n // tell screen readers not to automatically read the time as it changes\n 'aria-live': 'off'\n });\n\n this.updateTextNode_();\n el.appendChild(this.contentEl_);\n return el;\n };\n\n TimeDisplay.prototype.dispose = function dispose() {\n this.contentEl_ = null;\n this.textNode_ = null;\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Updates the \"remaining time\" text node with new content using the\n * contents of the `formattedTime_` property.\n *\n * @private\n */\n\n\n TimeDisplay.prototype.updateTextNode_ = function updateTextNode_() {\n if (!this.contentEl_) {\n return;\n }\n\n while (this.contentEl_.firstChild) {\n this.contentEl_.removeChild(this.contentEl_.firstChild);\n }\n\n this.textNode_ = document.createTextNode(this.formattedTime_ || this.formatTime_(0));\n this.contentEl_.appendChild(this.textNode_);\n };\n\n /**\n * Generates a formatted time for this component to use in display.\n *\n * @param {number} time\n * A numeric time, in seconds.\n *\n * @return {string}\n * A formatted time\n *\n * @private\n */\n\n\n TimeDisplay.prototype.formatTime_ = function formatTime_(time) {\n return formatTime(time);\n };\n\n /**\n * Updates the time display text node if it has what was passed in changed\n * the formatted time.\n *\n * @param {number} time\n * The time to update to\n *\n * @private\n */\n\n\n TimeDisplay.prototype.updateFormattedTime_ = function updateFormattedTime_(time) {\n var formattedTime = this.formatTime_(time);\n\n if (formattedTime === this.formattedTime_) {\n return;\n }\n\n this.formattedTime_ = formattedTime;\n this.requestAnimationFrame(this.updateTextNode_);\n };\n\n /**\n * To be filled out in the child class, should update the displayed time\n * in accordance with the fact that the current time has changed.\n *\n * @param {EventTarget~Event} [event]\n * The `timeupdate` event that caused this to run.\n *\n * @listens Player#timeupdate\n */\n\n\n TimeDisplay.prototype.updateContent = function updateContent(event) {};\n\n return TimeDisplay;\n}(Component);\n\n/**\n * The text that is added to the `TimeDisplay` for screen reader users.\n *\n * @type {string}\n * @private\n */\n\n\nTimeDisplay.prototype.labelText_ = 'Time';\n\n/**\n * The text that should display over the `TimeDisplay`s controls. Added to for localization.\n *\n * @type {string}\n * @private\n *\n * @deprecated in v7; controlText_ is not used in non-active display Components\n */\nTimeDisplay.prototype.controlText_ = 'Time';\n\nComponent.registerComponent('TimeDisplay', TimeDisplay);\n\n/**\n * @file current-time-display.js\n */\n/**\n * Displays the current time\n *\n * @extends Component\n */\n\nvar CurrentTimeDisplay = function (_TimeDisplay) {\n inherits(CurrentTimeDisplay, _TimeDisplay);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function CurrentTimeDisplay(player, options) {\n classCallCheck(this, CurrentTimeDisplay);\n\n var _this = possibleConstructorReturn(this, _TimeDisplay.call(this, player, options));\n\n _this.on(player, 'ended', _this.handleEnded);\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n CurrentTimeDisplay.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-current-time';\n };\n\n /**\n * Update current time display\n *\n * @param {EventTarget~Event} [event]\n * The `timeupdate` event that caused this function to run.\n *\n * @listens Player#timeupdate\n */\n\n\n CurrentTimeDisplay.prototype.updateContent = function updateContent(event) {\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\n this.updateFormattedTime_(time);\n };\n\n /**\n * When the player fires ended there should be no time left. Sadly\n * this is not always the case, lets make it seem like that is the case\n * for users.\n *\n * @param {EventTarget~Event} [event]\n * The `ended` event that caused this to run.\n *\n * @listens Player#ended\n */\n\n\n CurrentTimeDisplay.prototype.handleEnded = function handleEnded(event) {\n if (!this.player_.duration()) {\n return;\n }\n this.updateFormattedTime_(this.player_.duration());\n };\n\n return CurrentTimeDisplay;\n}(TimeDisplay);\n\n/**\n * The text that is added to the `CurrentTimeDisplay` for screen reader users.\n *\n * @type {string}\n * @private\n */\n\n\nCurrentTimeDisplay.prototype.labelText_ = 'Current Time';\n\n/**\n * The text that should display over the `CurrentTimeDisplay`s controls. Added to for localization.\n *\n * @type {string}\n * @private\n *\n * @deprecated in v7; controlText_ is not used in non-active display Components\n */\nCurrentTimeDisplay.prototype.controlText_ = 'Current Time';\n\nComponent.registerComponent('CurrentTimeDisplay', CurrentTimeDisplay);\n\n/**\n * @file duration-display.js\n */\n/**\n * Displays the duration\n *\n * @extends Component\n */\n\nvar DurationDisplay = function (_TimeDisplay) {\n inherits(DurationDisplay, _TimeDisplay);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function DurationDisplay(player, options) {\n classCallCheck(this, DurationDisplay);\n\n // we do not want to/need to throttle duration changes,\n // as they should always display the changed duration as\n // it has changed\n var _this = possibleConstructorReturn(this, _TimeDisplay.call(this, player, options));\n\n _this.on(player, 'durationchange', _this.updateContent);\n\n // Also listen for timeupdate (in the parent) and loadedmetadata because removing those\n // listeners could have broken dependent applications/libraries. These\n // can likely be removed for 7.0.\n _this.on(player, 'loadedmetadata', _this.throttledUpdateContent);\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n DurationDisplay.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-duration';\n };\n\n /**\n * Update duration time display.\n *\n * @param {EventTarget~Event} [event]\n * The `durationchange`, `timeupdate`, or `loadedmetadata` event that caused\n * this function to be called.\n *\n * @listens Player#durationchange\n * @listens Player#timeupdate\n * @listens Player#loadedmetadata\n */\n\n\n DurationDisplay.prototype.updateContent = function updateContent(event) {\n var duration = this.player_.duration();\n\n if (duration && this.duration_ !== duration) {\n this.duration_ = duration;\n this.updateFormattedTime_(duration);\n }\n };\n\n return DurationDisplay;\n}(TimeDisplay);\n\n/**\n * The text that is added to the `DurationDisplay` for screen reader users.\n *\n * @type {string}\n * @private\n */\n\n\nDurationDisplay.prototype.labelText_ = 'Duration';\n\n/**\n * The text that should display over the `DurationDisplay`s controls. Added to for localization.\n *\n * @type {string}\n * @private\n *\n * @deprecated in v7; controlText_ is not used in non-active display Components\n */\nDurationDisplay.prototype.controlText_ = 'Duration';\n\nComponent.registerComponent('DurationDisplay', DurationDisplay);\n\n/**\n * @file time-divider.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 * @extends Component\n */\n\nvar TimeDivider = function (_Component) {\n inherits(TimeDivider, _Component);\n\n function TimeDivider() {\n classCallCheck(this, TimeDivider);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n /**\n * Create the component's DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n TimeDivider.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-time-control vjs-time-divider',\n innerHTML: '<div><span>/</span></div>'\n });\n };\n\n return TimeDivider;\n}(Component);\n\nComponent.registerComponent('TimeDivider', TimeDivider);\n\n/**\n * @file remaining-time-display.js\n */\n/**\n * Displays the time left in the video\n *\n * @extends Component\n */\n\nvar RemainingTimeDisplay = function (_TimeDisplay) {\n inherits(RemainingTimeDisplay, _TimeDisplay);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function RemainingTimeDisplay(player, options) {\n classCallCheck(this, RemainingTimeDisplay);\n\n var _this = possibleConstructorReturn(this, _TimeDisplay.call(this, player, options));\n\n _this.on(player, 'durationchange', _this.throttledUpdateContent);\n _this.on(player, 'ended', _this.handleEnded);\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n RemainingTimeDisplay.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-remaining-time';\n };\n\n /**\n * The remaining time display prefixes numbers with a \"minus\" character.\n *\n * @param {number} time\n * A numeric time, in seconds.\n *\n * @return {string}\n * A formatted time\n *\n * @private\n */\n\n\n RemainingTimeDisplay.prototype.formatTime_ = function formatTime_(time) {\n // TODO: The \"-\" should be decorative, and not announced by a screen reader\n return '-' + _TimeDisplay.prototype.formatTime_.call(this, time);\n };\n\n /**\n * Update remaining time display.\n *\n * @param {EventTarget~Event} [event]\n * The `timeupdate` or `durationchange` event that caused this to run.\n *\n * @listens Player#timeupdate\n * @listens Player#durationchange\n */\n\n\n RemainingTimeDisplay.prototype.updateContent = function updateContent(event) {\n if (!this.player_.duration()) {\n return;\n }\n\n // @deprecated We should only use remainingTimeDisplay\n // as of video.js 7\n if (this.player_.remainingTimeDisplay) {\n this.updateFormattedTime_(this.player_.remainingTimeDisplay());\n } else {\n this.updateFormattedTime_(this.player_.remainingTime());\n }\n };\n\n /**\n * When the player fires ended there should be no time left. Sadly\n * this is not always the case, lets make it seem like that is the case\n * for users.\n *\n * @param {EventTarget~Event} [event]\n * The `ended` event that caused this to run.\n *\n * @listens Player#ended\n */\n\n\n RemainingTimeDisplay.prototype.handleEnded = function handleEnded(event) {\n if (!this.player_.duration()) {\n return;\n }\n this.updateFormattedTime_(0);\n };\n\n return RemainingTimeDisplay;\n}(TimeDisplay);\n\n/**\n * The text that is added to the `RemainingTimeDisplay` for screen reader users.\n *\n * @type {string}\n * @private\n */\n\n\nRemainingTimeDisplay.prototype.labelText_ = 'Remaining Time';\n\n/**\n * The text that should display over the `RemainingTimeDisplay`s controls. Added to for localization.\n *\n * @type {string}\n * @private\n *\n * @deprecated in v7; controlText_ is not used in non-active display Components\n */\nRemainingTimeDisplay.prototype.controlText_ = 'Remaining Time';\n\nComponent.registerComponent('RemainingTimeDisplay', RemainingTimeDisplay);\n\n/**\n * @file live-display.js\n */\n// TODO - Future make it click to snap to live\n\n/**\n * Displays the live indicator when duration is Infinity.\n *\n * @extends Component\n */\n\nvar LiveDisplay = function (_Component) {\n inherits(LiveDisplay, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function LiveDisplay(player, options) {\n classCallCheck(this, LiveDisplay);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.updateShowing();\n _this.on(_this.player(), 'durationchange', _this.updateShowing);\n return _this;\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n LiveDisplay.prototype.createEl = function createEl$$1() {\n var el = _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-live-control vjs-control'\n });\n\n this.contentEl_ = createEl('div', {\n className: 'vjs-live-display',\n innerHTML: '<span class=\"vjs-control-text\">' + this.localize('Stream Type') + '\\xA0</span>' + this.localize('LIVE')\n }, {\n 'aria-live': 'off'\n });\n\n el.appendChild(this.contentEl_);\n return el;\n };\n\n LiveDisplay.prototype.dispose = function dispose() {\n this.contentEl_ = null;\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Check the duration to see if the LiveDisplay should be showing or not. Then show/hide\n * it accordingly\n *\n * @param {EventTarget~Event} [event]\n * The {@link Player#durationchange} event that caused this function to run.\n *\n * @listens Player#durationchange\n */\n\n\n LiveDisplay.prototype.updateShowing = function updateShowing(event) {\n if (this.player().duration() === Infinity) {\n this.show();\n } else {\n this.hide();\n }\n };\n\n return LiveDisplay;\n}(Component);\n\nComponent.registerComponent('LiveDisplay', LiveDisplay);\n\n/**\n * @file slider.js\n */\n/**\n * The base functionality for a slider. Can be vertical or horizontal.\n * For instance the volume bar or the seek bar on a video is a slider.\n *\n * @extends Component\n */\n\nvar Slider = function (_Component) {\n inherits(Slider, _Component);\n\n /**\n * Create an instance of this class\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function Slider(player, options) {\n classCallCheck(this, Slider);\n\n // Set property names to bar to match with the child Slider class is looking for\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\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.enable();\n return _this;\n }\n\n /**\n * Are controls are currently enabled for this slider or not.\n *\n * @return {boolean}\n * true if controls are enabled, false otherwise\n */\n\n\n Slider.prototype.enabled = function enabled() {\n return this.enabled_;\n };\n\n /**\n * Enable controls for this slider if they are disabled\n */\n\n\n Slider.prototype.enable = function enable() {\n if (this.enabled()) {\n return;\n }\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(this.player_, 'controlsvisible', this.update);\n\n if (this.playerEvent) {\n this.on(this.player_, this.playerEvent, this.update);\n }\n\n this.removeClass('disabled');\n this.setAttribute('tabindex', 0);\n\n this.enabled_ = true;\n };\n\n /**\n * Disable controls for this slider if they are enabled\n */\n\n\n Slider.prototype.disable = function disable() {\n if (!this.enabled()) {\n return;\n }\n var doc = this.bar.el_.ownerDocument;\n\n this.off('mousedown', this.handleMouseDown);\n this.off('touchstart', this.handleMouseDown);\n this.off('focus', this.handleFocus);\n this.off('blur', this.handleBlur);\n this.off('click', this.handleClick);\n this.off(this.player_, 'controlsvisible', this.update);\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 this.removeAttribute('tabindex');\n\n this.addClass('disabled');\n\n if (this.playerEvent) {\n this.off(this.player_, this.playerEvent, this.update);\n }\n this.enabled_ = false;\n };\n\n /**\n * Create the `Button`s DOM element.\n *\n * @param {string} type\n * Type of element to create.\n *\n * @param {Object} [props={}]\n * List of properties in Object form.\n *\n * @param {Object} [attributes={}]\n * list of attributes in Object form.\n *\n * @return {Element}\n * The element that gets created.\n */\n\n\n Slider.prototype.createEl = function createEl$$1(type) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\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 _Component.prototype.createEl.call(this, type, props, attributes);\n };\n\n /**\n * Handle `mousedown` or `touchstart` events on the `Slider`.\n *\n * @param {EventTarget~Event} event\n * `mousedown` or `touchstart` event that triggered this function\n *\n * @listens mousedown\n * @listens touchstart\n * @fires Slider#slideractive\n */\n\n\n Slider.prototype.handleMouseDown = function handleMouseDown(event) {\n var doc = this.bar.el_.ownerDocument;\n\n if (event.type === 'mousedown') {\n event.preventDefault();\n }\n // Do not call preventDefault() on touchstart in Chrome\n // to avoid console warnings. Use a 'touch-action: none' style\n // instead to prevent unintented scrolling.\n // https://developers.google.com/web/updates/2017/01/scrolling-intervention\n if (event.type === 'touchstart' && !IS_CHROME) {\n event.preventDefault();\n }\n blockTextSelection();\n\n this.addClass('vjs-sliding');\n /**\n * Triggered when the slider is in an active state\n *\n * @event Slider#slideractive\n * @type {EventTarget~Event}\n */\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 * Handle the `mousemove`, `touchmove`, and `mousedown` events on this `Slider`.\n * The `mousemove` and `touchmove` events will only only trigger this function during\n * `mousedown` and `touchstart`. This is due to {@link Slider#handleMouseDown} and\n * {@link Slider#handleMouseUp}.\n *\n * @param {EventTarget~Event} event\n * `mousedown`, `mousemove`, `touchstart`, or `touchmove` event that triggered\n * this function\n *\n * @listens mousemove\n * @listens touchmove\n */\n\n\n Slider.prototype.handleMouseMove = function handleMouseMove(event) {};\n\n /**\n * Handle `mouseup` or `touchend` events on the `Slider`.\n *\n * @param {EventTarget~Event} event\n * `mouseup` or `touchend` event that triggered this function.\n *\n * @listens touchend\n * @listens mouseup\n * @fires Slider#sliderinactive\n */\n\n\n Slider.prototype.handleMouseUp = function handleMouseUp() {\n var doc = this.bar.el_.ownerDocument;\n\n unblockTextSelection();\n\n this.removeClass('vjs-sliding');\n /**\n * Triggered when the slider is no longer in an active state.\n *\n * @event Slider#sliderinactive\n * @type {EventTarget~Event}\n */\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 the progress bar of the `Slider`.\n *\n * @returns {number}\n * The percentage of progress the progress bar represents as a\n * number from 0 to 1.\n */\n\n\n Slider.prototype.update = function update() {\n\n // In VolumeBar init we have a setTimeout for update that pops and update\n // to the end of the execution stack. The player is destroyed before then\n // update will cause an error\n if (!this.el_) {\n return;\n }\n\n // If scrubbing, we could use a cached value to make the handle keep up\n // with the user's mouse. On HTML5 browsers scrubbing is really smooth, but\n // 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 var progress = this.getPercent();\n var bar = this.bar;\n\n // If there's no bar...\n if (!bar) {\n return;\n }\n\n // Protect against no duration and other division issues\n if (typeof progress !== 'number' || progress !== progress || progress < 0 || progress === Infinity) {\n progress = 0;\n }\n\n // Convert to a percentage for setting\n var percentage = (progress * 100).toFixed(2) + '%';\n var style = bar.el().style;\n\n // Set the new bar width or height\n if (this.vertical()) {\n style.height = percentage;\n } else {\n style.width = percentage;\n }\n\n return progress;\n };\n\n /**\n * Calculate distance for slider\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to run.\n *\n * @return {number}\n * The current position of the Slider.\n * - postition.x for vertical `Slider`s\n * - postition.y for horizontal `Slider`s\n */\n\n\n Slider.prototype.calculateDistance = function calculateDistance(event) {\n var position = getPointerPosition(this.el_, event);\n\n if (this.vertical()) {\n return position.y;\n }\n return position.x;\n };\n\n /**\n * Handle a `focus` event on this `Slider`.\n *\n * @param {EventTarget~Event} event\n * The `focus` event that caused this function to run.\n *\n * @listens focus\n */\n\n\n Slider.prototype.handleFocus = function handleFocus() {\n this.on(this.bar.el_.ownerDocument, 'keydown', this.handleKeyPress);\n };\n\n /**\n * Handle a `keydown` event on the `Slider`. Watches for left, rigth, up, and down\n * arrow keys. This function will only be called when the slider has focus. See\n * {@link Slider#handleFocus} and {@link Slider#handleBlur}.\n *\n * @param {EventTarget~Event} event\n * the `keydown` event that caused this function to run.\n *\n * @listens keydown\n */\n\n\n Slider.prototype.handleKeyPress = function handleKeyPress(event) {\n // Left and Down Arrows\n if (event.which === 37 || event.which === 40) {\n event.preventDefault();\n this.stepBack();\n\n // Up and Right Arrows\n } else if (event.which === 38 || event.which === 39) {\n event.preventDefault();\n this.stepForward();\n }\n };\n\n /**\n * Handle a `blur` event on this `Slider`.\n *\n * @param {EventTarget~Event} event\n * The `blur` event that caused this function to run.\n *\n * @listens blur\n */\n\n Slider.prototype.handleBlur = function 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\n * Event that caused this object to run\n */\n\n\n Slider.prototype.handleClick = function 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]\n * - true if slider is vertical,\n * - false is horizontal\n *\n * @return {boolean}\n * - true if slider is vertical, and getting\n * - false if the slider is horizontal, and getting\n */\n\n\n Slider.prototype.vertical = function 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\n return Slider;\n}(Component);\n\nComponent.registerComponent('Slider', Slider);\n\n/**\n * @file load-progress-bar.js\n */\n/**\n * Shows loading progress\n *\n * @extends Component\n */\n\nvar LoadProgressBar = function (_Component) {\n inherits(LoadProgressBar, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function LoadProgressBar(player, options) {\n classCallCheck(this, LoadProgressBar);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.partEls_ = [];\n _this.on(player, 'progress', _this.update);\n return _this;\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n LoadProgressBar.prototype.createEl = function createEl$$1() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-load-progress',\n innerHTML: '<span class=\"vjs-control-text\"><span>' + this.localize('Loaded') + '</span>: 0%</span>'\n });\n };\n\n LoadProgressBar.prototype.dispose = function dispose() {\n this.partEls_ = null;\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Update progress bar\n *\n * @param {EventTarget~Event} [event]\n * The `progress` event that caused this function to run.\n *\n * @listens Player#progress\n */\n\n\n LoadProgressBar.prototype.update = function update(event) {\n var buffered = this.player_.buffered();\n var duration = this.player_.duration();\n var bufferedEnd = this.player_.bufferedEnd();\n var children = this.partEls_;\n\n // get the percent width of a time compared to the total end\n var percentify = function percentify(time, end) {\n // no NaN\n var percent = time / end || 0;\n\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 (var i = 0; i < buffered.length; i++) {\n var start = buffered.start(i);\n var end = buffered.end(i);\n var part = children[i];\n\n if (!part) {\n part = this.el_.appendChild(createEl());\n children[i] = part;\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 (var _i = children.length; _i > buffered.length; _i--) {\n this.el_.removeChild(children[_i - 1]);\n }\n children.length = buffered.length;\n };\n\n return LoadProgressBar;\n}(Component);\n\nComponent.registerComponent('LoadProgressBar', LoadProgressBar);\n\n/**\n * @file time-tooltip.js\n */\n/**\n * Time tooltips display a time above the progress bar.\n *\n * @extends Component\n */\n\nvar TimeTooltip = function (_Component) {\n inherits(TimeTooltip, _Component);\n\n function TimeTooltip() {\n classCallCheck(this, TimeTooltip);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n /**\n * Create the time tooltip DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n TimeTooltip.prototype.createEl = function createEl$$1() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-time-tooltip'\n });\n };\n\n /**\n * Updates the position of the time tooltip relative to the `SeekBar`.\n *\n * @param {Object} seekBarRect\n * The `ClientRect` for the {@link SeekBar} element.\n *\n * @param {number} seekBarPoint\n * A number from 0 to 1, representing a horizontal reference point\n * from the left edge of the {@link SeekBar}\n */\n\n\n TimeTooltip.prototype.update = function update(seekBarRect, seekBarPoint, content) {\n var tooltipRect = getBoundingClientRect(this.el_);\n var playerRect = getBoundingClientRect(this.player_.el());\n var seekBarPointPx = seekBarRect.width * seekBarPoint;\n\n // do nothing if either rect isn't available\n // for example, if the player isn't in the DOM for testing\n if (!playerRect || !tooltipRect) {\n return;\n }\n\n // This is the space left of the `seekBarPoint` available within the bounds\n // of the player. We calculate any gap between the left edge of the player\n // and the left edge of the `SeekBar` and add the number of pixels in the\n // `SeekBar` before hitting the `seekBarPoint`\n var spaceLeftOfPoint = seekBarRect.left - playerRect.left + seekBarPointPx;\n\n // This is the space right of the `seekBarPoint` available within the bounds\n // of the player. We calculate the number of pixels from the `seekBarPoint`\n // to the right edge of the `SeekBar` and add to that any gap between the\n // right edge of the `SeekBar` and the player.\n var spaceRightOfPoint = seekBarRect.width - seekBarPointPx + (playerRect.right - seekBarRect.right);\n\n // This is the number of pixels by which the tooltip will need to be pulled\n // further to the right to center it over the `seekBarPoint`.\n var pullTooltipBy = tooltipRect.width / 2;\n\n // Adjust the `pullTooltipBy` distance to the left or right depending on\n // the results of the space calculations above.\n if (spaceLeftOfPoint < pullTooltipBy) {\n pullTooltipBy += pullTooltipBy - spaceLeftOfPoint;\n } else if (spaceRightOfPoint < pullTooltipBy) {\n pullTooltipBy = spaceRightOfPoint;\n }\n\n // Due to the imprecision of decimal/ratio based calculations and varying\n // rounding behaviors, there are cases where the spacing adjustment is off\n // by a pixel or two. This adds insurance to these calculations.\n if (pullTooltipBy < 0) {\n pullTooltipBy = 0;\n } else if (pullTooltipBy > tooltipRect.width) {\n pullTooltipBy = tooltipRect.width;\n }\n\n this.el_.style.right = '-' + pullTooltipBy + 'px';\n textContent(this.el_, content);\n };\n\n return TimeTooltip;\n}(Component);\n\nComponent.registerComponent('TimeTooltip', TimeTooltip);\n\n/**\n * @file play-progress-bar.js\n */\n/**\n * Used by {@link SeekBar} to display media playback progress as part of the\n * {@link ProgressControl}.\n *\n * @extends Component\n */\n\nvar PlayProgressBar = function (_Component) {\n inherits(PlayProgressBar, _Component);\n\n function PlayProgressBar() {\n classCallCheck(this, PlayProgressBar);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n /**\n * Create the the DOM element for this class.\n *\n * @return {Element}\n * The element that was created.\n */\n PlayProgressBar.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, '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 /**\n * Enqueues updates to its own DOM as well as the DOM of its\n * {@link TimeTooltip} child.\n *\n * @param {Object} seekBarRect\n * The `ClientRect` for the {@link SeekBar} element.\n *\n * @param {number} seekBarPoint\n * A number from 0 to 1, representing a horizontal reference point\n * from the left edge of the {@link SeekBar}\n */\n\n\n PlayProgressBar.prototype.update = function update(seekBarRect, seekBarPoint) {\n var _this2 = this;\n\n // If there is an existing rAF ID, cancel it so we don't over-queue.\n if (this.rafId_) {\n this.cancelAnimationFrame(this.rafId_);\n }\n\n this.rafId_ = this.requestAnimationFrame(function () {\n var time = _this2.player_.scrubbing() ? _this2.player_.getCache().currentTime : _this2.player_.currentTime();\n\n var content = formatTime(time, _this2.player_.duration());\n var timeTooltip = _this2.getChild('timeTooltip');\n\n if (timeTooltip) {\n timeTooltip.update(seekBarRect, seekBarPoint, content);\n }\n });\n };\n\n return PlayProgressBar;\n}(Component);\n\n/**\n * Default options for {@link PlayProgressBar}.\n *\n * @type {Object}\n * @private\n */\n\n\nPlayProgressBar.prototype.options_ = {\n children: []\n};\n\n// Time tooltips should not be added to a player on mobile devices or IE8\nif ((!IE_VERSION || IE_VERSION > 8) && !IS_IOS && !IS_ANDROID) {\n PlayProgressBar.prototype.options_.children.push('timeTooltip');\n}\n\nComponent.registerComponent('PlayProgressBar', PlayProgressBar);\n\n/**\n * @file mouse-time-display.js\n */\n/**\n * The {@link MouseTimeDisplay} component tracks mouse movement over the\n * {@link ProgressControl}. It displays an indicator and a {@link TimeTooltip}\n * indicating the time which is represented by a given point in the\n * {@link ProgressControl}.\n *\n * @extends Component\n */\n\nvar MouseTimeDisplay = function (_Component) {\n inherits(MouseTimeDisplay, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The {@link Player} that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function MouseTimeDisplay(player, options) {\n classCallCheck(this, MouseTimeDisplay);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.update = throttle(bind(_this, _this.update), 25);\n return _this;\n }\n\n /**\n * Create the DOM element for this class.\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n MouseTimeDisplay.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-mouse-display'\n });\n };\n\n /**\n * Enqueues updates to its own DOM as well as the DOM of its\n * {@link TimeTooltip} child.\n *\n * @param {Object} seekBarRect\n * The `ClientRect` for the {@link SeekBar} element.\n *\n * @param {number} seekBarPoint\n * A number from 0 to 1, representing a horizontal reference point\n * from the left edge of the {@link SeekBar}\n */\n\n\n MouseTimeDisplay.prototype.update = function update(seekBarRect, seekBarPoint) {\n var _this2 = this;\n\n // If there is an existing rAF ID, cancel it so we don't over-queue.\n if (this.rafId_) {\n this.cancelAnimationFrame(this.rafId_);\n }\n\n this.rafId_ = this.requestAnimationFrame(function () {\n var duration = _this2.player_.duration();\n var content = formatTime(seekBarPoint * duration, duration);\n\n _this2.el_.style.left = seekBarRect.width * seekBarPoint + 'px';\n _this2.getChild('timeTooltip').update(seekBarRect, seekBarPoint, content);\n });\n };\n\n return MouseTimeDisplay;\n}(Component);\n\n/**\n * Default options for `MouseTimeDisplay`\n *\n * @type {Object}\n * @private\n */\n\n\nMouseTimeDisplay.prototype.options_ = {\n children: ['timeTooltip']\n};\n\nComponent.registerComponent('MouseTimeDisplay', MouseTimeDisplay);\n\n/**\n * @file seek-bar.js\n */\n// The number of seconds the `step*` functions move the timeline.\nvar STEP_SECONDS = 5;\n\n// The interval at which the bar should update as it progresses.\nvar UPDATE_REFRESH_INTERVAL = 30;\n\n/**\n * Seek bar and container for the progress bars. Uses {@link PlayProgressBar}\n * as its `bar`.\n *\n * @extends Slider\n */\n\nvar SeekBar = function (_Slider) {\n inherits(SeekBar, _Slider);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function SeekBar(player, options) {\n classCallCheck(this, SeekBar);\n\n var _this = possibleConstructorReturn(this, _Slider.call(this, player, options));\n\n _this.setEventHandlers_();\n return _this;\n }\n\n /**\n * Sets the event handlers\n *\n * @private\n */\n\n\n SeekBar.prototype.setEventHandlers_ = function setEventHandlers_() {\n var _this2 = this;\n\n this.update = throttle(bind(this, this.update), UPDATE_REFRESH_INTERVAL);\n\n this.on(this.player_, 'timeupdate', this.update);\n this.on(this.player_, 'ended', this.handleEnded);\n\n // when playing, let's ensure we smoothly update the play progress bar\n // via an interval\n this.updateInterval = null;\n\n this.on(this.player_, ['playing'], function () {\n _this2.clearInterval(_this2.updateInterval);\n\n _this2.updateInterval = _this2.setInterval(function () {\n _this2.requestAnimationFrame(function () {\n _this2.update();\n });\n }, UPDATE_REFRESH_INTERVAL);\n });\n\n this.on(this.player_, ['ended', 'pause', 'waiting'], function () {\n _this2.clearInterval(_this2.updateInterval);\n });\n\n this.on(this.player_, ['timeupdate', 'ended'], this.update);\n };\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n SeekBar.prototype.createEl = function createEl$$1() {\n return _Slider.prototype.createEl.call(this, 'div', {\n className: 'vjs-progress-holder'\n }, {\n 'aria-label': this.localize('Progress Bar')\n });\n };\n\n /**\n * This function updates the play progress bar and accessiblity\n * attributes to whatever is passed in.\n *\n * @param {number} currentTime\n * The currentTime value that should be used for accessiblity\n *\n * @param {number} percent\n * The percentage as a decimal that the bar should be filled from 0-1.\n *\n * @private\n */\n\n\n SeekBar.prototype.update_ = function update_(currentTime, percent) {\n var duration = this.player_.duration();\n\n // machine readable value of progress bar (percentage complete)\n this.el_.setAttribute('aria-valuenow', (percent * 100).toFixed(2));\n\n // human readable value of progress bar (time complete)\n this.el_.setAttribute('aria-valuetext', this.localize('progress bar timing: currentTime={1} duration={2}', [formatTime(currentTime, duration), formatTime(duration, duration)], '{1} of {2}'));\n\n // Update the `PlayProgressBar`.\n this.bar.update(getBoundingClientRect(this.el_), percent);\n };\n\n /**\n * Update the seek bar's UI.\n *\n * @param {EventTarget~Event} [event]\n * The `timeupdate` or `ended` event that caused this to run.\n *\n * @listens Player#timeupdate\n *\n * @returns {number}\n * The current percent at a number from 0-1\n */\n\n\n SeekBar.prototype.update = function update(event) {\n var percent = _Slider.prototype.update.call(this);\n\n this.update_(this.getCurrentTime_(), percent);\n return percent;\n };\n\n /**\n * Get the value of current time but allows for smooth scrubbing,\n * when player can't keep up.\n *\n * @return {number}\n * The current time value to display\n *\n * @private\n */\n\n\n SeekBar.prototype.getCurrentTime_ = function getCurrentTime_() {\n return this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();\n };\n\n /**\n * We want the seek bar to be full on ended\n * no matter what the actual internal values are. so we force it.\n *\n * @param {EventTarget~Event} [event]\n * The `timeupdate` or `ended` event that caused this to run.\n *\n * @listens Player#ended\n */\n\n\n SeekBar.prototype.handleEnded = function handleEnded(event) {\n this.update_(this.player_.duration(), 1);\n };\n\n /**\n * Get the percentage of media played so far.\n *\n * @return {number}\n * The percentage of media played so far (0 to 1).\n */\n\n\n SeekBar.prototype.getPercent = function getPercent() {\n var percent = this.getCurrentTime_() / this.player_.duration();\n\n return percent >= 1 ? 1 : percent;\n };\n\n /**\n * Handle mouse down on seek bar\n *\n * @param {EventTarget~Event} event\n * The `mousedown` event that caused this to run.\n *\n * @listens mousedown\n */\n\n\n SeekBar.prototype.handleMouseDown = function handleMouseDown(event) {\n if (!isSingleLeftClick(event)) {\n return;\n }\n\n // Stop event propagation to prevent double fire in progress-control.js\n event.stopPropagation();\n this.player_.scrubbing(true);\n\n this.videoWasPlaying = !this.player_.paused();\n this.player_.pause();\n\n _Slider.prototype.handleMouseDown.call(this, event);\n };\n\n /**\n * Handle mouse move on seek bar\n *\n * @param {EventTarget~Event} event\n * The `mousemove` event that caused this to run.\n *\n * @listens mousemove\n */\n\n\n SeekBar.prototype.handleMouseMove = function handleMouseMove(event) {\n if (!isSingleLeftClick(event)) {\n return;\n }\n\n var newTime = this.calculateDistance(event) * this.player_.duration();\n\n // Don't let video end while scrubbing.\n if (newTime === this.player_.duration()) {\n newTime = newTime - 0.1;\n }\n\n // Set new time (tell player to seek to new time)\n this.player_.currentTime(newTime);\n };\n\n SeekBar.prototype.enable = function enable() {\n _Slider.prototype.enable.call(this);\n var mouseTimeDisplay = this.getChild('mouseTimeDisplay');\n\n if (!mouseTimeDisplay) {\n return;\n }\n\n mouseTimeDisplay.show();\n };\n\n SeekBar.prototype.disable = function disable() {\n _Slider.prototype.disable.call(this);\n var mouseTimeDisplay = this.getChild('mouseTimeDisplay');\n\n if (!mouseTimeDisplay) {\n return;\n }\n\n mouseTimeDisplay.hide();\n };\n\n /**\n * Handle mouse up on seek bar\n *\n * @param {EventTarget~Event} event\n * The `mouseup` event that caused this to run.\n *\n * @listens mouseup\n */\n\n\n SeekBar.prototype.handleMouseUp = function handleMouseUp(event) {\n _Slider.prototype.handleMouseUp.call(this, event);\n\n // Stop event propagation to prevent double fire in progress-control.js\n if (event) {\n event.stopPropagation();\n }\n this.player_.scrubbing(false);\n\n /**\n * Trigger timeupdate because we're done seeking and the time has changed.\n * This is particularly useful for if the player is paused to time the time displays.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.player_.trigger({ type: 'timeupdate', target: this, manuallyTriggered: true });\n if (this.videoWasPlaying) {\n silencePromise(this.player_.play());\n }\n };\n\n /**\n * Move more quickly fast forward for keyboard-only users\n */\n\n\n SeekBar.prototype.stepForward = function stepForward() {\n this.player_.currentTime(this.player_.currentTime() + STEP_SECONDS);\n };\n\n /**\n * Move more quickly rewind for keyboard-only users\n */\n\n\n SeekBar.prototype.stepBack = function stepBack() {\n this.player_.currentTime(this.player_.currentTime() - STEP_SECONDS);\n };\n\n /**\n * Toggles the playback state of the player\n * This gets called when enter or space is used on the seekbar\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called\n *\n */\n\n\n SeekBar.prototype.handleAction = function handleAction(event) {\n if (this.player_.paused()) {\n this.player_.play();\n } else {\n this.player_.pause();\n }\n };\n\n /**\n * Called when this SeekBar has focus and a key gets pressed down. By\n * default it will call `this.handleAction` when the key is space or enter.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n *\n * @listens keydown\n */\n\n\n SeekBar.prototype.handleKeyPress = function handleKeyPress(event) {\n\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.handleAction(event);\n } else if (_Slider.prototype.handleKeyPress) {\n\n // Pass keypress handling up for unsupported keys\n _Slider.prototype.handleKeyPress.call(this, event);\n }\n };\n\n return SeekBar;\n}(Slider);\n\n/**\n * Default options for the `SeekBar`\n *\n * @type {Object}\n * @private\n */\n\n\nSeekBar.prototype.options_ = {\n children: ['loadProgressBar', 'playProgressBar'],\n barName: 'playProgressBar'\n};\n\n// MouseTimeDisplay tooltips should not be added to a player on mobile devices or IE8\nif ((!IE_VERSION || IE_VERSION > 8) && !IS_IOS && !IS_ANDROID) {\n SeekBar.prototype.options_.children.splice(1, 0, 'mouseTimeDisplay');\n}\n\n/**\n * Call the update event for this Slider when this event happens on the player.\n *\n * @type {string}\n */\nSeekBar.prototype.playerEvent = 'timeupdate';\n\nComponent.registerComponent('SeekBar', SeekBar);\n\n/**\n * @file progress-control.js\n */\n/**\n * The Progress Control component contains the seek bar, load progress,\n * and play progress.\n *\n * @extends Component\n */\n\nvar ProgressControl = function (_Component) {\n inherits(ProgressControl, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function ProgressControl(player, options) {\n classCallCheck(this, ProgressControl);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.handleMouseMove = throttle(bind(_this, _this.handleMouseMove), 25);\n _this.throttledHandleMouseSeek = throttle(bind(_this, _this.handleMouseSeek), 25);\n\n _this.enable();\n return _this;\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n ProgressControl.prototype.createEl = function createEl$$1() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-progress-control vjs-control'\n });\n };\n\n /**\n * When the mouse moves over the `ProgressControl`, the pointer position\n * gets passed down to the `MouseTimeDisplay` component.\n *\n * @param {EventTarget~Event} event\n * The `mousemove` event that caused this function to run.\n *\n * @listen mousemove\n */\n\n\n ProgressControl.prototype.handleMouseMove = function handleMouseMove(event) {\n var seekBar = this.getChild('seekBar');\n\n if (seekBar) {\n var mouseTimeDisplay = seekBar.getChild('mouseTimeDisplay');\n var seekBarEl = seekBar.el();\n var seekBarRect = getBoundingClientRect(seekBarEl);\n var seekBarPoint = getPointerPosition(seekBarEl, event).x;\n\n // The default skin has a gap on either side of the `SeekBar`. This means\n // that it's possible to trigger this behavior outside the boundaries of\n // the `SeekBar`. This ensures we stay within it at all times.\n if (seekBarPoint > 1) {\n seekBarPoint = 1;\n } else if (seekBarPoint < 0) {\n seekBarPoint = 0;\n }\n\n if (mouseTimeDisplay) {\n mouseTimeDisplay.update(seekBarRect, seekBarPoint);\n }\n }\n };\n\n /**\n * A throttled version of the {@link ProgressControl#handleMouseSeek} listener.\n *\n * @method ProgressControl#throttledHandleMouseSeek\n * @param {EventTarget~Event} event\n * The `mousemove` event that caused this function to run.\n *\n * @listen mousemove\n * @listen touchmove\n */\n\n /**\n * Handle `mousemove` or `touchmove` events on the `ProgressControl`.\n *\n * @param {EventTarget~Event} event\n * `mousedown` or `touchstart` event that triggered this function\n *\n * @listens mousemove\n * @listens touchmove\n */\n\n\n ProgressControl.prototype.handleMouseSeek = function handleMouseSeek(event) {\n var seekBar = this.getChild('seekBar');\n\n if (seekBar) {\n seekBar.handleMouseMove(event);\n }\n };\n\n /**\n * Are controls are currently enabled for this progress control.\n *\n * @return {boolean}\n * true if controls are enabled, false otherwise\n */\n\n\n ProgressControl.prototype.enabled = function enabled() {\n return this.enabled_;\n };\n\n /**\n * Disable all controls on the progress control and its children\n */\n\n\n ProgressControl.prototype.disable = function disable() {\n this.children().forEach(function (child) {\n return child.disable && child.disable();\n });\n\n if (!this.enabled()) {\n return;\n }\n\n this.off(['mousedown', 'touchstart'], this.handleMouseDown);\n this.off(this.el_, 'mousemove', this.handleMouseMove);\n this.handleMouseUp();\n\n this.addClass('disabled');\n\n this.enabled_ = false;\n };\n\n /**\n * Enable all controls on the progress control and its children\n */\n\n\n ProgressControl.prototype.enable = function enable() {\n this.children().forEach(function (child) {\n return child.enable && child.enable();\n });\n\n if (this.enabled()) {\n return;\n }\n\n this.on(['mousedown', 'touchstart'], this.handleMouseDown);\n this.on(this.el_, 'mousemove', this.handleMouseMove);\n this.removeClass('disabled');\n\n this.enabled_ = true;\n };\n\n /**\n * Handle `mousedown` or `touchstart` events on the `ProgressControl`.\n *\n * @param {EventTarget~Event} event\n * `mousedown` or `touchstart` event that triggered this function\n *\n * @listens mousedown\n * @listens touchstart\n */\n\n\n ProgressControl.prototype.handleMouseDown = function handleMouseDown(event) {\n var doc = this.el_.ownerDocument;\n var seekBar = this.getChild('seekBar');\n\n if (seekBar) {\n seekBar.handleMouseDown(event);\n }\n\n this.on(doc, 'mousemove', this.throttledHandleMouseSeek);\n this.on(doc, 'touchmove', this.throttledHandleMouseSeek);\n this.on(doc, 'mouseup', this.handleMouseUp);\n this.on(doc, 'touchend', this.handleMouseUp);\n };\n\n /**\n * Handle `mouseup` or `touchend` events on the `ProgressControl`.\n *\n * @param {EventTarget~Event} event\n * `mouseup` or `touchend` event that triggered this function.\n *\n * @listens touchend\n * @listens mouseup\n */\n\n\n ProgressControl.prototype.handleMouseUp = function handleMouseUp(event) {\n var doc = this.el_.ownerDocument;\n var seekBar = this.getChild('seekBar');\n\n if (seekBar) {\n seekBar.handleMouseUp(event);\n }\n\n this.off(doc, 'mousemove', this.throttledHandleMouseSeek);\n this.off(doc, 'touchmove', this.throttledHandleMouseSeek);\n this.off(doc, 'mouseup', this.handleMouseUp);\n this.off(doc, 'touchend', this.handleMouseUp);\n };\n\n return ProgressControl;\n}(Component);\n\n/**\n * Default options for `ProgressControl`\n *\n * @type {Object}\n * @private\n */\n\n\nProgressControl.prototype.options_ = {\n children: ['seekBar']\n};\n\nComponent.registerComponent('ProgressControl', ProgressControl);\n\n/**\n * @file fullscreen-toggle.js\n */\n/**\n * Toggle fullscreen video\n *\n * @extends Button\n */\n\nvar FullscreenToggle = function (_Button) {\n inherits(FullscreenToggle, _Button);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function FullscreenToggle(player, options) {\n classCallCheck(this, FullscreenToggle);\n\n var _this = possibleConstructorReturn(this, _Button.call(this, player, options));\n\n _this.on(player, 'fullscreenchange', _this.handleFullscreenChange);\n\n if (document[FullscreenApi.fullscreenEnabled] === false) {\n _this.disable();\n }\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n FullscreenToggle.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-fullscreen-control ' + _Button.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Handles fullscreenchange on the player and change control text accordingly.\n *\n * @param {EventTarget~Event} [event]\n * The {@link Player#fullscreenchange} event that caused this function to be\n * called.\n *\n * @listens Player#fullscreenchange\n */\n\n\n FullscreenToggle.prototype.handleFullscreenChange = function handleFullscreenChange(event) {\n if (this.player_.isFullscreen()) {\n this.controlText('Non-Fullscreen');\n } else {\n this.controlText('Fullscreen');\n }\n };\n\n /**\n * This gets called when an `FullscreenToggle` is \"clicked\". See\n * {@link ClickableComponent} for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} [event]\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n FullscreenToggle.prototype.handleClick = function handleClick(event) {\n if (!this.player_.isFullscreen()) {\n this.player_.requestFullscreen();\n } else {\n this.player_.exitFullscreen();\n }\n };\n\n return FullscreenToggle;\n}(Button);\n\n/**\n * The text that should display over the `FullscreenToggle`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\n\n\nFullscreenToggle.prototype.controlText_ = 'Fullscreen';\n\nComponent.registerComponent('FullscreenToggle', FullscreenToggle);\n\n/**\n * Check if volume control is supported and if it isn't hide the\n * `Component` that was passed using the `vjs-hidden` class.\n *\n * @param {Component} self\n * The component that should be hidden if volume is unsupported\n *\n * @param {Player} player\n * A reference to the player\n *\n * @private\n */\nvar checkVolumeSupport = function checkVolumeSupport(self, player) {\n // hide volume controls when they're not supported by the current tech\n if (player.tech_ && !player.tech_.featuresVolumeControl) {\n self.addClass('vjs-hidden');\n }\n\n self.on(player, 'loadstart', function () {\n if (!player.tech_.featuresVolumeControl) {\n self.addClass('vjs-hidden');\n } else {\n self.removeClass('vjs-hidden');\n }\n });\n};\n\n/**\n * @file volume-level.js\n */\n/**\n * Shows volume level\n *\n * @extends Component\n */\n\nvar VolumeLevel = function (_Component) {\n inherits(VolumeLevel, _Component);\n\n function VolumeLevel() {\n classCallCheck(this, VolumeLevel);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n VolumeLevel.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-volume-level',\n innerHTML: '<span class=\"vjs-control-text\"></span>'\n });\n };\n\n return VolumeLevel;\n}(Component);\n\nComponent.registerComponent('VolumeLevel', VolumeLevel);\n\n/**\n * @file volume-bar.js\n */\n// Required children\n/**\n * The bar that contains the volume level and can be clicked on to adjust the level\n *\n * @extends Slider\n */\n\nvar VolumeBar = function (_Slider) {\n inherits(VolumeBar, _Slider);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function VolumeBar(player, options) {\n classCallCheck(this, VolumeBar);\n\n var _this = possibleConstructorReturn(this, _Slider.call(this, player, options));\n\n _this.on('slideractive', _this.updateLastVolume_);\n _this.on(player, 'volumechange', _this.updateARIAAttributes);\n player.ready(function () {\n return _this.updateARIAAttributes();\n });\n return _this;\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n VolumeBar.prototype.createEl = function createEl$$1() {\n return _Slider.prototype.createEl.call(this, 'div', {\n className: 'vjs-volume-bar vjs-slider-bar'\n }, {\n 'aria-label': this.localize('Volume Level'),\n 'aria-live': 'polite'\n });\n };\n\n /**\n * Handle mouse down on volume bar\n *\n * @param {EventTarget~Event} event\n * The `mousedown` event that caused this to run.\n *\n * @listens mousedown\n */\n\n\n VolumeBar.prototype.handleMouseDown = function handleMouseDown(event) {\n if (!isSingleLeftClick(event)) {\n return;\n }\n\n _Slider.prototype.handleMouseDown.call(this, event);\n };\n\n /**\n * Handle movement events on the {@link VolumeMenuButton}.\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to run.\n *\n * @listens mousemove\n */\n\n\n VolumeBar.prototype.handleMouseMove = function handleMouseMove(event) {\n if (!isSingleLeftClick(event)) {\n return;\n }\n\n this.checkMuted();\n this.player_.volume(this.calculateDistance(event));\n };\n\n /**\n * If the player is muted unmute it.\n */\n\n\n VolumeBar.prototype.checkMuted = function checkMuted() {\n if (this.player_.muted()) {\n this.player_.muted(false);\n }\n };\n\n /**\n * Get percent of volume level\n *\n * @return {number}\n * Volume level percent as a decimal number.\n */\n\n\n VolumeBar.prototype.getPercent = function getPercent() {\n if (this.player_.muted()) {\n return 0;\n }\n return this.player_.volume();\n };\n\n /**\n * Increase volume level for keyboard users\n */\n\n\n VolumeBar.prototype.stepForward = function 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\n\n VolumeBar.prototype.stepBack = function stepBack() {\n this.checkMuted();\n this.player_.volume(this.player_.volume() - 0.1);\n };\n\n /**\n * Update ARIA accessibility attributes\n *\n * @param {EventTarget~Event} [event]\n * The `volumechange` event that caused this function to run.\n *\n * @listens Player#volumechange\n */\n\n\n VolumeBar.prototype.updateARIAAttributes = function updateARIAAttributes(event) {\n var ariaValue = this.player_.muted() ? 0 : this.volumeAsPercentage_();\n\n this.el_.setAttribute('aria-valuenow', ariaValue);\n this.el_.setAttribute('aria-valuetext', ariaValue + '%');\n };\n\n /**\n * Returns the current value of the player volume as a percentage\n *\n * @private\n */\n\n\n VolumeBar.prototype.volumeAsPercentage_ = function volumeAsPercentage_() {\n return Math.round(this.player_.volume() * 100);\n };\n\n /**\n * When user starts dragging the VolumeBar, store the volume and listen for\n * the end of the drag. When the drag ends, if the volume was set to zero,\n * set lastVolume to the stored volume.\n *\n * @listens slideractive\n * @private\n */\n\n\n VolumeBar.prototype.updateLastVolume_ = function updateLastVolume_() {\n var _this2 = this;\n\n var volumeBeforeDrag = this.player_.volume();\n\n this.one('sliderinactive', function () {\n if (_this2.player_.volume() === 0) {\n _this2.player_.lastVolume_(volumeBeforeDrag);\n }\n });\n };\n\n return VolumeBar;\n}(Slider);\n\n/**\n * Default options for the `VolumeBar`\n *\n * @type {Object}\n * @private\n */\n\n\nVolumeBar.prototype.options_ = {\n children: ['volumeLevel'],\n barName: 'volumeLevel'\n};\n\n/**\n * Call the update event for this Slider when this event happens on the player.\n *\n * @type {string}\n */\nVolumeBar.prototype.playerEvent = 'volumechange';\n\nComponent.registerComponent('VolumeBar', VolumeBar);\n\n/**\n * @file volume-control.js\n */\n// Required children\n/**\n * The component for controlling the volume level\n *\n * @extends Component\n */\n\nvar VolumeControl = function (_Component) {\n inherits(VolumeControl, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options={}]\n * The key/value store of player options.\n */\n function VolumeControl(player) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, VolumeControl);\n\n options.vertical = options.vertical || false;\n\n // Pass the vertical option down to the VolumeBar if\n // the VolumeBar is turned on.\n if (typeof options.volumeBar === 'undefined' || isPlain(options.volumeBar)) {\n options.volumeBar = options.volumeBar || {};\n options.volumeBar.vertical = options.vertical;\n }\n\n // hide this control if volume support is missing\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n checkVolumeSupport(_this, player);\n\n _this.throttledHandleMouseMove = throttle(bind(_this, _this.handleMouseMove), 25);\n\n _this.on('mousedown', _this.handleMouseDown);\n _this.on('touchstart', _this.handleMouseDown);\n\n // while the slider is active (the mouse has been pressed down and\n // is dragging) or in focus we do not want to hide the VolumeBar\n _this.on(_this.volumeBar, ['focus', 'slideractive'], function () {\n _this.volumeBar.addClass('vjs-slider-active');\n _this.addClass('vjs-slider-active');\n _this.trigger('slideractive');\n });\n\n _this.on(_this.volumeBar, ['blur', 'sliderinactive'], function () {\n _this.volumeBar.removeClass('vjs-slider-active');\n _this.removeClass('vjs-slider-active');\n _this.trigger('sliderinactive');\n });\n return _this;\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n VolumeControl.prototype.createEl = function createEl() {\n var orientationClass = 'vjs-volume-horizontal';\n\n if (this.options_.vertical) {\n orientationClass = 'vjs-volume-vertical';\n }\n\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-volume-control vjs-control ' + orientationClass\n });\n };\n\n /**\n * Handle `mousedown` or `touchstart` events on the `VolumeControl`.\n *\n * @param {EventTarget~Event} event\n * `mousedown` or `touchstart` event that triggered this function\n *\n * @listens mousedown\n * @listens touchstart\n */\n\n\n VolumeControl.prototype.handleMouseDown = function handleMouseDown(event) {\n var doc = this.el_.ownerDocument;\n\n this.on(doc, 'mousemove', this.throttledHandleMouseMove);\n this.on(doc, 'touchmove', this.throttledHandleMouseMove);\n this.on(doc, 'mouseup', this.handleMouseUp);\n this.on(doc, 'touchend', this.handleMouseUp);\n };\n\n /**\n * Handle `mouseup` or `touchend` events on the `VolumeControl`.\n *\n * @param {EventTarget~Event} event\n * `mouseup` or `touchend` event that triggered this function.\n *\n * @listens touchend\n * @listens mouseup\n */\n\n\n VolumeControl.prototype.handleMouseUp = function handleMouseUp(event) {\n var doc = this.el_.ownerDocument;\n\n this.off(doc, 'mousemove', this.throttledHandleMouseMove);\n this.off(doc, 'touchmove', this.throttledHandleMouseMove);\n this.off(doc, 'mouseup', this.handleMouseUp);\n this.off(doc, 'touchend', this.handleMouseUp);\n };\n\n /**\n * Handle `mousedown` or `touchstart` events on the `VolumeControl`.\n *\n * @param {EventTarget~Event} event\n * `mousedown` or `touchstart` event that triggered this function\n *\n * @listens mousedown\n * @listens touchstart\n */\n\n\n VolumeControl.prototype.handleMouseMove = function handleMouseMove(event) {\n this.volumeBar.handleMouseMove(event);\n };\n\n return VolumeControl;\n}(Component);\n\n/**\n * Default options for the `VolumeControl`\n *\n * @type {Object}\n * @private\n */\n\n\nVolumeControl.prototype.options_ = {\n children: ['volumeBar']\n};\n\nComponent.registerComponent('VolumeControl', VolumeControl);\n\n/**\n * Check if muting volume is supported and if it isn't hide the mute toggle\n * button.\n *\n * @param {Component} self\n * A reference to the mute toggle button\n *\n * @param {Player} player\n * A reference to the player\n *\n * @private\n */\nvar checkMuteSupport = function checkMuteSupport(self, player) {\n // hide mute toggle button if it's not supported by the current tech\n if (player.tech_ && !player.tech_.featuresMuteControl) {\n self.addClass('vjs-hidden');\n }\n\n self.on(player, 'loadstart', function () {\n if (!player.tech_.featuresMuteControl) {\n self.addClass('vjs-hidden');\n } else {\n self.removeClass('vjs-hidden');\n }\n });\n};\n\n/**\n * @file mute-toggle.js\n */\n/**\n * A button component for muting the audio.\n *\n * @extends Button\n */\n\nvar MuteToggle = function (_Button) {\n inherits(MuteToggle, _Button);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function MuteToggle(player, options) {\n classCallCheck(this, MuteToggle);\n\n // hide this control if volume support is missing\n var _this = possibleConstructorReturn(this, _Button.call(this, player, options));\n\n checkMuteSupport(_this, player);\n\n _this.on(player, ['loadstart', 'volumechange'], _this.update);\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n MuteToggle.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-mute-control ' + _Button.prototype.buildCSSClass.call(this);\n };\n\n /**\n * This gets called when an `MuteToggle` is \"clicked\". See\n * {@link ClickableComponent} for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} [event]\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n MuteToggle.prototype.handleClick = function handleClick(event) {\n var vol = this.player_.volume();\n var lastVolume = this.player_.lastVolume_();\n\n if (vol === 0) {\n var volumeToSet = lastVolume < 0.1 ? 0.1 : lastVolume;\n\n this.player_.volume(volumeToSet);\n this.player_.muted(false);\n } else {\n this.player_.muted(this.player_.muted() ? false : true);\n }\n };\n\n /**\n * Update the `MuteToggle` button based on the state of `volume` and `muted`\n * on the player.\n *\n * @param {EventTarget~Event} [event]\n * The {@link Player#loadstart} event if this function was called\n * through an event.\n *\n * @listens Player#loadstart\n * @listens Player#volumechange\n */\n\n\n MuteToggle.prototype.update = function update(event) {\n this.updateIcon_();\n this.updateControlText_();\n };\n\n /**\n * Update the appearance of the `MuteToggle` icon.\n *\n * Possible states (given `level` variable below):\n * - 0: crossed out\n * - 1: zero bars of volume\n * - 2: one bar of volume\n * - 3: two bars of volume\n *\n * @private\n */\n\n\n MuteToggle.prototype.updateIcon_ = function updateIcon_() {\n var vol = this.player_.volume();\n var level = 3;\n\n // in iOS when a player is loaded with muted attribute\n // and volume is changed with a native mute button\n // we want to make sure muted state is updated\n if (IS_IOS) {\n this.player_.muted(this.player_.tech_.el_.muted);\n }\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 // TODO improve muted icon classes\n for (var i = 0; i < 4; i++) {\n removeClass(this.el_, 'vjs-vol-' + i);\n }\n addClass(this.el_, 'vjs-vol-' + level);\n };\n\n /**\n * If `muted` has changed on the player, update the control text\n * (`title` attribute on `vjs-mute-control` element and content of\n * `vjs-control-text` element).\n *\n * @private\n */\n\n\n MuteToggle.prototype.updateControlText_ = function updateControlText_() {\n var soundOff = this.player_.muted() || this.player_.volume() === 0;\n var text = soundOff ? 'Unmute' : 'Mute';\n\n if (this.controlText() !== text) {\n this.controlText(text);\n }\n };\n\n return MuteToggle;\n}(Button);\n\n/**\n * The text that should display over the `MuteToggle`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\n\n\nMuteToggle.prototype.controlText_ = 'Mute';\n\nComponent.registerComponent('MuteToggle', MuteToggle);\n\n/**\n * @file volume-control.js\n */\n// Required children\n/**\n * A Component to contain the MuteToggle and VolumeControl so that\n * they can work together.\n *\n * @extends Component\n */\n\nvar VolumePanel = function (_Component) {\n inherits(VolumePanel, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options={}]\n * The key/value store of player options.\n */\n function VolumePanel(player) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, VolumePanel);\n\n if (typeof options.inline !== 'undefined') {\n options.inline = options.inline;\n } else {\n options.inline = true;\n }\n\n // pass the inline option down to the VolumeControl as vertical if\n // the VolumeControl is on.\n if (typeof options.volumeControl === 'undefined' || isPlain(options.volumeControl)) {\n options.volumeControl = options.volumeControl || {};\n options.volumeControl.vertical = !options.inline;\n }\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.on(player, ['loadstart'], _this.volumePanelState_);\n\n // while the slider is active (the mouse has been pressed down and\n // is dragging) we do not want to hide the VolumeBar\n _this.on(_this.volumeControl, ['slideractive'], _this.sliderActive_);\n\n _this.on(_this.volumeControl, ['sliderinactive'], _this.sliderInactive_);\n return _this;\n }\n\n /**\n * Add vjs-slider-active class to the VolumePanel\n *\n * @listens VolumeControl#slideractive\n * @private\n */\n\n\n VolumePanel.prototype.sliderActive_ = function sliderActive_() {\n this.addClass('vjs-slider-active');\n };\n\n /**\n * Removes vjs-slider-active class to the VolumePanel\n *\n * @listens VolumeControl#sliderinactive\n * @private\n */\n\n\n VolumePanel.prototype.sliderInactive_ = function sliderInactive_() {\n this.removeClass('vjs-slider-active');\n };\n\n /**\n * Adds vjs-hidden or vjs-mute-toggle-only to the VolumePanel\n * depending on MuteToggle and VolumeControl state\n *\n * @listens Player#loadstart\n * @private\n */\n\n\n VolumePanel.prototype.volumePanelState_ = function volumePanelState_() {\n // hide volume panel if neither volume control or mute toggle\n // are displayed\n if (this.volumeControl.hasClass('vjs-hidden') && this.muteToggle.hasClass('vjs-hidden')) {\n this.addClass('vjs-hidden');\n }\n\n // if only mute toggle is visible we don't want\n // volume panel expanding when hovered or active\n if (this.volumeControl.hasClass('vjs-hidden') && !this.muteToggle.hasClass('vjs-hidden')) {\n this.addClass('vjs-mute-toggle-only');\n }\n };\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n VolumePanel.prototype.createEl = function createEl() {\n var orientationClass = 'vjs-volume-panel-horizontal';\n\n if (!this.options_.inline) {\n orientationClass = 'vjs-volume-panel-vertical';\n }\n\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-volume-panel vjs-control ' + orientationClass\n });\n };\n\n return VolumePanel;\n}(Component);\n\n/**\n * Default options for the `VolumeControl`\n *\n * @type {Object}\n * @private\n */\n\n\nVolumePanel.prototype.options_ = {\n children: ['muteToggle', 'volumeControl']\n};\n\nComponent.registerComponent('VolumePanel', VolumePanel);\n\n/**\n * @file menu.js\n */\n/**\n * The Menu component is used to build popup menus, including subtitle and\n * captions selection menus.\n *\n * @extends Component\n */\n\nvar Menu = function (_Component) {\n inherits(Menu, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * the player that this component should attach to\n *\n * @param {Object} [options]\n * Object of option names and values\n *\n */\n function Menu(player, options) {\n classCallCheck(this, Menu);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n if (options) {\n _this.menuButton_ = options.menuButton;\n }\n\n _this.focusedChild_ = -1;\n\n _this.on('keydown', _this.handleKeyPress);\n return _this;\n }\n\n /**\n * Add a {@link MenuItem} to the menu.\n *\n * @param {Object|string} component\n * The name or instance of the `MenuItem` to add.\n *\n */\n\n\n Menu.prototype.addItem = function addItem(component) {\n this.addChild(component);\n component.on('click', bind(this, function (event) {\n // Unpress the associated MenuButton, and move focus back to it\n if (this.menuButton_) {\n this.menuButton_.unpressButton();\n\n // don't focus menu button if item is a caption settings item\n // because focus will move elsewhere and it logs an error on IE8\n if (component.name() !== 'CaptionSettingsMenuItem') {\n this.menuButton_.focus();\n }\n }\n }));\n };\n\n /**\n * Create the `Menu`s DOM element.\n *\n * @return {Element}\n * the element that was created\n */\n\n\n Menu.prototype.createEl = function createEl$$1() {\n var contentElType = this.options_.contentElType || 'ul';\n\n this.contentEl_ = createEl(contentElType, {\n className: 'vjs-menu-content'\n });\n\n this.contentEl_.setAttribute('role', 'menu');\n\n var el = _Component.prototype.createEl.call(this, 'div', {\n append: this.contentEl_,\n className: 'vjs-menu'\n });\n\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 on(el, 'click', function (event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n\n return el;\n };\n\n Menu.prototype.dispose = function dispose() {\n this.contentEl_ = null;\n\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Handle a `keydown` event on this menu. This listener is added in the constructor.\n *\n * @param {EventTarget~Event} event\n * A `keydown` event that happened on the menu.\n *\n * @listens keydown\n */\n\n\n Menu.prototype.handleKeyPress = function handleKeyPress(event) {\n // Left and Down Arrows\n if (event.which === 37 || event.which === 40) {\n event.preventDefault();\n this.stepForward();\n\n // Up and Right Arrows\n } else if (event.which === 38 || event.which === 39) {\n event.preventDefault();\n this.stepBack();\n }\n };\n\n /**\n * Move to next (lower) menu item for keyboard users.\n */\n\n\n Menu.prototype.stepForward = function stepForward() {\n var 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\n\n Menu.prototype.stepBack = function stepBack() {\n var 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 {@link MenuItem} in the `Menu`.\n *\n * @param {Object|string} [item=0]\n * Index of child item set focus on.\n */\n\n\n Menu.prototype.focus = function focus() {\n var item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n var children = this.children().slice();\n var haveTitle = children.length && children[0].className && /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 return Menu;\n}(Component);\n\nComponent.registerComponent('Menu', Menu);\n\n/**\n * @file menu-button.js\n */\n/**\n * A `MenuButton` class for any popup {@link Menu}.\n *\n * @extends Component\n */\n\nvar MenuButton = function (_Component) {\n inherits(MenuButton, _Component);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options={}]\n * The key/value store of player options.\n */\n function MenuButton(player) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, MenuButton);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options));\n\n _this.menuButton_ = new Button(player, options);\n\n _this.menuButton_.controlText(_this.controlText_);\n _this.menuButton_.el_.setAttribute('aria-haspopup', 'true');\n\n // Add buildCSSClass values to the button, not the wrapper\n var buttonClass = Button.prototype.buildCSSClass();\n\n _this.menuButton_.el_.className = _this.buildCSSClass() + ' ' + buttonClass;\n _this.menuButton_.removeClass('vjs-control');\n\n _this.addChild(_this.menuButton_);\n\n _this.update();\n\n _this.enabled_ = true;\n\n _this.on(_this.menuButton_, 'tap', _this.handleClick);\n _this.on(_this.menuButton_, 'click', _this.handleClick);\n _this.on(_this.menuButton_, 'focus', _this.handleFocus);\n _this.on(_this.menuButton_, 'blur', _this.handleBlur);\n\n _this.on('keydown', _this.handleSubmenuKeyPress);\n return _this;\n }\n\n /**\n * Update the menu based on the current state of its items.\n */\n\n\n MenuButton.prototype.update = function update() {\n var menu = this.createMenu();\n\n if (this.menu) {\n this.menu.dispose();\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.menuButton_.el_.setAttribute('aria-expanded', 'false');\n\n if (this.items && this.items.length <= this.hideThreshold_) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n /**\n * Create the menu and add all items to it.\n *\n * @return {Menu}\n * The constructed menu\n */\n\n\n MenuButton.prototype.createMenu = function createMenu() {\n var menu = new Menu(this.player_, { menuButton: this });\n\n /**\n * Hide the menu if the number of items is less than or equal to this threshold. This defaults\n * to 0 and whenever we add items which can be hidden to the menu we'll increment it. We list\n * it here because every time we run `createMenu` we need to reset the value.\n *\n * @protected\n * @type {Number}\n */\n this.hideThreshold_ = 0;\n\n // Add a title list item to the top\n if (this.options_.title) {\n var title = createEl('li', {\n className: 'vjs-menu-title',\n innerHTML: toTitleCase(this.options_.title),\n tabIndex: -1\n });\n\n this.hideThreshold_ += 1;\n\n menu.children_.unshift(title);\n prependTo(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 * @abstract\n */\n\n\n MenuButton.prototype.createItems = function createItems() {};\n\n /**\n * Create the `MenuButtons`s DOM element.\n *\n * @return {Element}\n * The element that gets created.\n */\n\n\n MenuButton.prototype.createEl = function createEl$$1() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildWrapperCSSClass()\n }, {});\n };\n\n /**\n * Allow sub components to stack CSS class names for the wrapper element\n *\n * @return {string}\n * The constructed wrapper DOM `className`\n */\n\n\n MenuButton.prototype.buildWrapperCSSClass = function buildWrapperCSSClass() {\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 // TODO: Fix the CSS so that this isn't necessary\n var buttonClass = Button.prototype.buildCSSClass();\n\n return 'vjs-menu-button ' + menuButtonClass + ' ' + buttonClass + ' ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n MenuButton.prototype.buildCSSClass = function 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 + ' ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Get or set the localized control text that will be used for accessibility.\n *\n * > NOTE: This will come from the internal `menuButton_` element.\n *\n * @param {string} [text]\n * Control text for element.\n *\n * @param {Element} [el=this.menuButton_.el()]\n * Element to set the title on.\n *\n * @return {string}\n * - The control text when getting\n */\n\n\n MenuButton.prototype.controlText = function controlText(text) {\n var el = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.menuButton_.el();\n\n return this.menuButton_.controlText(text, el);\n };\n\n /**\n * Handle a click on a `MenuButton`.\n * See {@link ClickableComponent#handleClick} for instances where this is called.\n *\n * @param {EventTarget~Event} event\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n MenuButton.prototype.handleClick = function handleClick(event) {\n // When you click the button it adds focus, which will show the menu.\n // So we'll remove focus when the mouse leaves the button. Focus is needed\n // for tab navigation.\n\n this.one(this.menu.contentEl(), 'mouseleave', bind(this, function (e) {\n this.unpressButton();\n this.el_.blur();\n }));\n if (this.buttonPressed_) {\n this.unpressButton();\n } else {\n this.pressButton();\n }\n };\n\n /**\n * Set the focus to the actual button, not to this element\n */\n\n\n MenuButton.prototype.focus = function focus() {\n this.menuButton_.focus();\n };\n\n /**\n * Remove the focus from the actual button, not this element\n */\n\n\n MenuButton.prototype.blur = function blur() {\n this.menuButton_.blur();\n };\n\n /**\n * This gets called when a `MenuButton` gains focus via a `focus` event.\n * Turns on listening for `keydown` events. When they happen it\n * calls `this.handleKeyPress`.\n *\n * @param {EventTarget~Event} event\n * The `focus` event that caused this function to be called.\n *\n * @listens focus\n */\n\n\n MenuButton.prototype.handleFocus = function handleFocus() {\n on(document, 'keydown', bind(this, this.handleKeyPress));\n };\n\n /**\n * Called when a `MenuButton` loses focus. Turns off the listener for\n * `keydown` events. Which Stops `this.handleKeyPress` from getting called.\n *\n * @param {EventTarget~Event} event\n * The `blur` event that caused this function to be called.\n *\n * @listens blur\n */\n\n\n MenuButton.prototype.handleBlur = function handleBlur() {\n off(document, 'keydown', bind(this, this.handleKeyPress));\n };\n\n /**\n * Handle tab, escape, down arrow, and up arrow keys for `MenuButton`. See\n * {@link ClickableComponent#handleKeyPress} for instances where this is called.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n *\n * @listens keydown\n */\n\n\n MenuButton.prototype.handleKeyPress = function 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 // Set focus back to the menu button's button\n this.menuButton_.el_.focus();\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 }\n };\n\n /**\n * Handle a `keydown` event on a sub-menu. The listener for this is added in\n * the constructor.\n *\n * @param {EventTarget~Event} event\n * Key press event\n *\n * @listens keydown\n */\n\n\n MenuButton.prototype.handleSubmenuKeyPress = function 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 // Set focus back to the menu button's button\n this.menuButton_.el_.focus();\n }\n }\n };\n\n /**\n * Put the current `MenuButton` into a pressed state.\n */\n\n\n MenuButton.prototype.pressButton = function pressButton() {\n if (this.enabled_) {\n this.buttonPressed_ = true;\n this.menu.lockShowing();\n this.menuButton_.el_.setAttribute('aria-expanded', 'true');\n\n // set the focus into the submenu, except on iOS where it is resulting in\n // undesired scrolling behavior when the player is in an iframe\n if (IS_IOS && isInFrame()) {\n // Return early so that the menu isn't focused\n return;\n }\n\n this.menu.focus();\n }\n };\n\n /**\n * Take the current `MenuButton` out of a pressed state.\n */\n\n\n MenuButton.prototype.unpressButton = function unpressButton() {\n if (this.enabled_) {\n this.buttonPressed_ = false;\n this.menu.unlockShowing();\n this.menuButton_.el_.setAttribute('aria-expanded', 'false');\n }\n };\n\n /**\n * Disable the `MenuButton`. Don't allow it to be clicked.\n */\n\n\n MenuButton.prototype.disable = function disable() {\n this.unpressButton();\n\n this.enabled_ = false;\n this.addClass('vjs-disabled');\n\n this.menuButton_.disable();\n };\n\n /**\n * Enable the `MenuButton`. Allow it to be clicked.\n */\n\n\n MenuButton.prototype.enable = function enable() {\n this.enabled_ = true;\n this.removeClass('vjs-disabled');\n\n this.menuButton_.enable();\n };\n\n return MenuButton;\n}(Component);\n\nComponent.registerComponent('MenuButton', MenuButton);\n\n/**\n * @file track-button.js\n */\n/**\n * The base class for buttons that toggle specific track types (e.g. subtitles).\n *\n * @extends MenuButton\n */\n\nvar TrackButton = function (_MenuButton) {\n inherits(TrackButton, _MenuButton);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function TrackButton(player, options) {\n classCallCheck(this, TrackButton);\n\n var tracks = options.tracks;\n\n var _this = possibleConstructorReturn(this, _MenuButton.call(this, player, options));\n\n if (_this.items.length <= 1) {\n _this.hide();\n }\n\n if (!tracks) {\n return possibleConstructorReturn(_this);\n }\n\n var updateHandler = bind(_this, _this.update);\n\n tracks.addEventListener('removetrack', updateHandler);\n tracks.addEventListener('addtrack', updateHandler);\n _this.player_.on('ready', updateHandler);\n\n _this.player_.on('dispose', function () {\n tracks.removeEventListener('removetrack', updateHandler);\n tracks.removeEventListener('addtrack', updateHandler);\n });\n return _this;\n }\n\n return TrackButton;\n}(MenuButton);\n\nComponent.registerComponent('TrackButton', TrackButton);\n\n/**\n * @file menu-item.js\n */\n/**\n * The component for a menu item. `<li>`\n *\n * @extends ClickableComponent\n */\n\nvar MenuItem = function (_ClickableComponent) {\n inherits(MenuItem, _ClickableComponent);\n\n /**\n * Creates an instance of the this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options={}]\n * The key/value store of player options.\n *\n */\n function MenuItem(player, options) {\n classCallCheck(this, MenuItem);\n\n var _this = possibleConstructorReturn(this, _ClickableComponent.call(this, player, options));\n\n _this.selectable = options.selectable;\n _this.isSelected_ = options.selected || false;\n _this.multiSelectable = options.multiSelectable;\n\n _this.selected(_this.isSelected_);\n\n if (_this.selectable) {\n if (_this.multiSelectable) {\n _this.el_.setAttribute('role', 'menuitemcheckbox');\n } else {\n _this.el_.setAttribute('role', 'menuitemradio');\n }\n } else {\n _this.el_.setAttribute('role', 'menuitem');\n }\n return _this;\n }\n\n /**\n * Create the `MenuItem's DOM element\n *\n * @param {string} [type=li]\n * Element's node type, not actually used, always set to `li`.\n *\n * @param {Object} [props={}]\n * An object of properties that should be set on the element\n *\n * @param {Object} [attrs={}]\n * An object of attributes that should be set on the element\n *\n * @return {Element}\n * The element that gets created.\n */\n\n\n MenuItem.prototype.createEl = function createEl(type, props, attrs) {\n // The control is textual, not just an icon\n this.nonIconControl = true;\n\n return _ClickableComponent.prototype.createEl.call(this, 'li', assign({\n className: 'vjs-menu-item',\n innerHTML: '<span class=\"vjs-menu-item-text\">' + this.localize(this.options_.label) + '</span>',\n tabIndex: -1\n }, props), attrs);\n };\n\n /**\n * Any click on a `MenuItem` puts it into the selected state.\n * See {@link ClickableComponent#handleClick} for instances where this is called.\n *\n * @param {EventTarget~Event} event\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n MenuItem.prototype.handleClick = function handleClick(event) {\n this.selected(true);\n };\n\n /**\n * Set the state for this menu item as selected or not.\n *\n * @param {boolean} selected\n * if the menu item is selected or not\n */\n\n\n MenuItem.prototype.selected = function 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 this.isSelected_ = true;\n } else {\n this.removeClass('vjs-selected');\n this.el_.setAttribute('aria-checked', 'false');\n // Indicate un-selected state to screen reader\n this.controlText('');\n this.isSelected_ = false;\n }\n }\n };\n\n return MenuItem;\n}(ClickableComponent);\n\nComponent.registerComponent('MenuItem', MenuItem);\n\n/**\n * @file text-track-menu-item.js\n */\n/**\n * The specific menu item type for selecting a language within a text track kind\n *\n * @extends MenuItem\n */\n\nvar TextTrackMenuItem = function (_MenuItem) {\n inherits(TextTrackMenuItem, _MenuItem);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function TextTrackMenuItem(player, options) {\n classCallCheck(this, TextTrackMenuItem);\n\n var track = options.track;\n var 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.mode === 'showing';\n\n var _this = possibleConstructorReturn(this, _MenuItem.call(this, player, options));\n\n _this.track = track;\n var changeHandler = function changeHandler() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.handleTracksChange.apply(_this, args);\n };\n var selectedLanguageChangeHandler = function selectedLanguageChangeHandler() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _this.handleSelectedLanguageChange.apply(_this, args);\n };\n\n player.on(['loadstart', 'texttrackchange'], changeHandler);\n tracks.addEventListener('change', changeHandler);\n tracks.addEventListener('selectedlanguagechange', selectedLanguageChangeHandler);\n _this.on('dispose', function () {\n player.off(['loadstart', 'texttrackchange'], changeHandler);\n tracks.removeEventListener('change', changeHandler);\n tracks.removeEventListener('selectedlanguagechange', selectedLanguageChangeHandler);\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.onchange === undefined) {\n var event = void 0;\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 // continue regardless of error\n }\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 // set the default state based on current tracks\n _this.handleTracksChange();\n return _this;\n }\n\n /**\n * This gets called when an `TextTrackMenuItem` is \"clicked\". See\n * {@link ClickableComponent} for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} event\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n TextTrackMenuItem.prototype.handleClick = function handleClick(event) {\n var kind = this.track.kind;\n var kinds = this.track.kinds;\n var tracks = this.player_.textTracks();\n\n if (!kinds) {\n kinds = [kind];\n }\n\n _MenuItem.prototype.handleClick.call(this, event);\n\n if (!tracks) {\n return;\n }\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n if (track === this.track && kinds.indexOf(track.kind) > -1) {\n if (track.mode !== 'showing') {\n track.mode = 'showing';\n }\n } else if (track.mode !== 'disabled') {\n track.mode = 'disabled';\n }\n }\n };\n\n /**\n * Handle text track list change\n *\n * @param {EventTarget~Event} event\n * The `change` event that caused this function to be called.\n *\n * @listens TextTrackList#change\n */\n\n\n TextTrackMenuItem.prototype.handleTracksChange = function handleTracksChange(event) {\n var shouldBeSelected = this.track.mode === 'showing';\n\n // Prevent redundant selected() calls because they may cause\n // screen readers to read the appended control text unnecessarily\n if (shouldBeSelected !== this.isSelected_) {\n this.selected(shouldBeSelected);\n }\n };\n\n TextTrackMenuItem.prototype.handleSelectedLanguageChange = function handleSelectedLanguageChange(event) {\n if (this.track.mode === 'showing') {\n var selectedLanguage = this.player_.cache_.selectedLanguage;\n\n // Don't replace the kind of track across the same language\n if (selectedLanguage && selectedLanguage.enabled && selectedLanguage.language === this.track.language && selectedLanguage.kind !== this.track.kind) {\n return;\n }\n\n this.player_.cache_.selectedLanguage = {\n enabled: true,\n language: this.track.language,\n kind: this.track.kind\n };\n }\n };\n\n TextTrackMenuItem.prototype.dispose = function dispose() {\n // remove reference to track object on dispose\n this.track = null;\n\n _MenuItem.prototype.dispose.call(this);\n };\n\n return TextTrackMenuItem;\n}(MenuItem);\n\nComponent.registerComponent('TextTrackMenuItem', TextTrackMenuItem);\n\n/**\n * @file off-text-track-menu-item.js\n */\n/**\n * A special menu item for turning of a specific type of text track\n *\n * @extends TextTrackMenuItem\n */\n\nvar OffTextTrackMenuItem = function (_TextTrackMenuItem) {\n inherits(OffTextTrackMenuItem, _TextTrackMenuItem);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function OffTextTrackMenuItem(player, options) {\n classCallCheck(this, OffTextTrackMenuItem);\n\n // Create pseudo track info\n // Requires options['kind']\n options.track = {\n player: player,\n kind: options.kind,\n kinds: options.kinds,\n 'default': false,\n mode: 'disabled'\n };\n\n if (!options.kinds) {\n options.kinds = [options.kind];\n }\n\n if (options.label) {\n options.track.label = options.label;\n } else {\n options.track.label = options.kinds.join(' and ') + ' off';\n }\n\n // MenuItem is selectable\n options.selectable = true;\n // MenuItem is NOT multiSelectable (i.e. only one can be marked \"selected\" at a time)\n options.multiSelectable = false;\n\n return possibleConstructorReturn(this, _TextTrackMenuItem.call(this, player, options));\n }\n\n /**\n * Handle text track change\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to run\n */\n\n\n OffTextTrackMenuItem.prototype.handleTracksChange = function handleTracksChange(event) {\n var tracks = this.player().textTracks();\n var shouldBeSelected = true;\n\n for (var i = 0, l = tracks.length; i < l; i++) {\n var track = tracks[i];\n\n if (this.options_.kinds.indexOf(track.kind) > -1 && track.mode === 'showing') {\n shouldBeSelected = false;\n break;\n }\n }\n\n // Prevent redundant selected() calls because they may cause\n // screen readers to read the appended control text unnecessarily\n if (shouldBeSelected !== this.isSelected_) {\n this.selected(shouldBeSelected);\n }\n };\n\n OffTextTrackMenuItem.prototype.handleSelectedLanguageChange = function handleSelectedLanguageChange(event) {\n var tracks = this.player().textTracks();\n var allHidden = true;\n\n for (var i = 0, l = tracks.length; i < l; i++) {\n var track = tracks[i];\n\n if (['captions', 'descriptions', 'subtitles'].indexOf(track.kind) > -1 && track.mode === 'showing') {\n allHidden = false;\n break;\n }\n }\n\n if (allHidden) {\n this.player_.cache_.selectedLanguage = {\n enabled: false\n };\n }\n };\n\n return OffTextTrackMenuItem;\n}(TextTrackMenuItem);\n\nComponent.registerComponent('OffTextTrackMenuItem', OffTextTrackMenuItem);\n\n/**\n * @file text-track-button.js\n */\n/**\n * The base class for buttons that toggle specific text track types (e.g. subtitles)\n *\n * @extends MenuButton\n */\n\nvar TextTrackButton = function (_TrackButton) {\n inherits(TextTrackButton, _TrackButton);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options={}]\n * The key/value store of player options.\n */\n function TextTrackButton(player) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, TextTrackButton);\n\n options.tracks = player.textTracks();\n\n return possibleConstructorReturn(this, _TrackButton.call(this, player, options));\n }\n\n /**\n * Create a menu item for each text track\n *\n * @param {TextTrackMenuItem[]} [items=[]]\n * Existing array of items to use during creation\n *\n * @return {TextTrackMenuItem[]}\n * Array of menu items that were created\n */\n\n\n TextTrackButton.prototype.createItems = function createItems() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var TrackMenuItem = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : TextTrackMenuItem;\n\n\n // Label is an overide for the [track] off label\n // USed to localise captions/subtitles\n var label = void 0;\n\n if (this.label_) {\n label = this.label_ + ' off';\n }\n // Add an OFF menu item to turn all tracks off\n items.push(new OffTextTrackMenuItem(this.player_, {\n kinds: this.kinds_,\n kind: this.kind_,\n label: label\n }));\n\n this.hideThreshold_ += 1;\n\n var tracks = this.player_.textTracks();\n\n if (!Array.isArray(this.kinds_)) {\n this.kinds_ = [this.kind_];\n }\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n // only add tracks that are of an appropriate kind and have a label\n if (this.kinds_.indexOf(track.kind) > -1) {\n\n var item = new TrackMenuItem(this.player_, {\n track: track,\n // MenuItem is selectable\n selectable: true,\n // MenuItem is NOT multiSelectable (i.e. only one can be marked \"selected\" at a time)\n multiSelectable: false\n });\n\n item.addClass('vjs-' + track.kind + '-menu-item');\n items.push(item);\n }\n }\n\n return items;\n };\n\n return TextTrackButton;\n}(TrackButton);\n\nComponent.registerComponent('TextTrackButton', TextTrackButton);\n\n/**\n * @file chapters-track-menu-item.js\n */\n/**\n * The chapter track menu item\n *\n * @extends MenuItem\n */\n\nvar ChaptersTrackMenuItem = function (_MenuItem) {\n inherits(ChaptersTrackMenuItem, _MenuItem);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function ChaptersTrackMenuItem(player, options) {\n classCallCheck(this, ChaptersTrackMenuItem);\n\n var track = options.track;\n var cue = options.cue;\n var currentTime = player.currentTime();\n\n // Modify options for parent MenuItem class's init.\n options.selectable = true;\n options.multiSelectable = false;\n options.label = cue.text;\n options.selected = cue.startTime <= currentTime && currentTime < cue.endTime;\n\n var _this = possibleConstructorReturn(this, _MenuItem.call(this, player, options));\n\n _this.track = track;\n _this.cue = cue;\n track.addEventListener('cuechange', bind(_this, _this.update));\n return _this;\n }\n\n /**\n * This gets called when an `ChaptersTrackMenuItem` is \"clicked\". See\n * {@link ClickableComponent} for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} [event]\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n ChaptersTrackMenuItem.prototype.handleClick = function handleClick(event) {\n _MenuItem.prototype.handleClick.call(this);\n this.player_.currentTime(this.cue.startTime);\n this.update(this.cue.startTime);\n };\n\n /**\n * Update chapter menu item\n *\n * @param {EventTarget~Event} [event]\n * The `cuechange` event that caused this function to run.\n *\n * @listens TextTrack#cuechange\n */\n\n\n ChaptersTrackMenuItem.prototype.update = function update(event) {\n var cue = this.cue;\n var currentTime = this.player_.currentTime();\n\n // vjs.log(currentTime, cue.startTime);\n this.selected(cue.startTime <= currentTime && currentTime < cue.endTime);\n };\n\n return ChaptersTrackMenuItem;\n}(MenuItem);\n\nComponent.registerComponent('ChaptersTrackMenuItem', ChaptersTrackMenuItem);\n\n/**\n * @file chapters-button.js\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 * @extends TextTrackButton\n */\n\nvar ChaptersButton = function (_TextTrackButton) {\n inherits(ChaptersButton, _TextTrackButton);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} [ready]\n * The function to call when this function is ready.\n */\n function ChaptersButton(player, options, ready) {\n classCallCheck(this, ChaptersButton);\n return possibleConstructorReturn(this, _TextTrackButton.call(this, player, options, ready));\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n ChaptersButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-chapters-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n ChaptersButton.prototype.buildWrapperCSSClass = function buildWrapperCSSClass() {\n return 'vjs-chapters-button ' + _TextTrackButton.prototype.buildWrapperCSSClass.call(this);\n };\n\n /**\n * Update the menu based on the current state of its items.\n *\n * @param {EventTarget~Event} [event]\n * An event that triggered this function to run.\n *\n * @listens TextTrackList#addtrack\n * @listens TextTrackList#removetrack\n * @listens TextTrackList#change\n */\n\n\n ChaptersButton.prototype.update = function update(event) {\n if (!this.track_ || event && (event.type === 'addtrack' || event.type === 'removetrack')) {\n this.setTrack(this.findChaptersTrack());\n }\n _TextTrackButton.prototype.update.call(this);\n };\n\n /**\n * Set the currently selected track for the chapters button.\n *\n * @param {TextTrack} track\n * The new track to select. Nothing will change if this is the currently selected\n * track.\n */\n\n\n ChaptersButton.prototype.setTrack = function setTrack(track) {\n if (this.track_ === track) {\n return;\n }\n\n if (!this.updateHandler_) {\n this.updateHandler_ = this.update.bind(this);\n }\n\n // here this.track_ refers to the old track instance\n if (this.track_) {\n var remoteTextTrackEl = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_);\n\n if (remoteTextTrackEl) {\n remoteTextTrackEl.removeEventListener('load', this.updateHandler_);\n }\n\n this.track_ = null;\n }\n\n this.track_ = track;\n\n // here this.track_ refers to the new track instance\n if (this.track_) {\n this.track_.mode = 'hidden';\n\n var _remoteTextTrackEl = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_);\n\n if (_remoteTextTrackEl) {\n _remoteTextTrackEl.addEventListener('load', this.updateHandler_);\n }\n }\n };\n\n /**\n * Find the track object that is currently in use by this ChaptersButton\n *\n * @return {TextTrack|undefined}\n * The current track or undefined if none was found.\n */\n\n\n ChaptersButton.prototype.findChaptersTrack = function findChaptersTrack() {\n var tracks = this.player_.textTracks() || [];\n\n for (var i = tracks.length - 1; i >= 0; i--) {\n // We will always choose the last track as our chaptersTrack\n var track = tracks[i];\n\n if (track.kind === this.kind_) {\n return track;\n }\n }\n };\n\n /**\n * Get the caption for the ChaptersButton based on the track label. This will also\n * use the current tracks localized kind as a fallback if a label does not exist.\n *\n * @return {string}\n * The tracks current label or the localized track kind.\n */\n\n\n ChaptersButton.prototype.getMenuCaption = function getMenuCaption() {\n if (this.track_ && this.track_.label) {\n return this.track_.label;\n }\n return this.localize(toTitleCase(this.kind_));\n };\n\n /**\n * Create menu from chapter track\n *\n * @return {Menu}\n * New menu for the chapter buttons\n */\n\n\n ChaptersButton.prototype.createMenu = function createMenu() {\n this.options_.title = this.getMenuCaption();\n return _TextTrackButton.prototype.createMenu.call(this);\n };\n\n /**\n * Create a menu item for each text track\n *\n * @return {TextTrackMenuItem[]}\n * Array of menu items\n */\n\n\n ChaptersButton.prototype.createItems = function createItems() {\n var items = [];\n\n if (!this.track_) {\n return items;\n }\n\n var cues = this.track_.cues;\n\n if (!cues) {\n return items;\n }\n\n for (var i = 0, l = cues.length; i < l; i++) {\n var cue = cues[i];\n var mi = new ChaptersTrackMenuItem(this.player_, { track: this.track_, cue: cue });\n\n items.push(mi);\n }\n\n return items;\n };\n\n return ChaptersButton;\n}(TextTrackButton);\n\n/**\n * `kind` of TextTrack to look for to associate it with this menu.\n *\n * @type {string}\n * @private\n */\n\n\nChaptersButton.prototype.kind_ = 'chapters';\n\n/**\n * The text that should display over the `ChaptersButton`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\nChaptersButton.prototype.controlText_ = 'Chapters';\n\nComponent.registerComponent('ChaptersButton', ChaptersButton);\n\n/**\n * @file descriptions-button.js\n */\n/**\n * The button component for toggling and selecting descriptions\n *\n * @extends TextTrackButton\n */\n\nvar DescriptionsButton = function (_TextTrackButton) {\n inherits(DescriptionsButton, _TextTrackButton);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} [ready]\n * The function to call when this component is ready.\n */\n function DescriptionsButton(player, options, ready) {\n classCallCheck(this, DescriptionsButton);\n\n var _this = possibleConstructorReturn(this, _TextTrackButton.call(this, player, options, ready));\n\n var tracks = player.textTracks();\n var changeHandler = bind(_this, _this.handleTracksChange);\n\n tracks.addEventListener('change', changeHandler);\n _this.on('dispose', function () {\n tracks.removeEventListener('change', changeHandler);\n });\n return _this;\n }\n\n /**\n * Handle text track change\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to run\n *\n * @listens TextTrackList#change\n */\n\n\n DescriptionsButton.prototype.handleTracksChange = function handleTracksChange(event) {\n var tracks = this.player().textTracks();\n var disabled = false;\n\n // Check whether a track of a different kind is showing\n for (var i = 0, l = tracks.length; i < l; i++) {\n var track = tracks[i];\n\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 * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n DescriptionsButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-descriptions-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n DescriptionsButton.prototype.buildWrapperCSSClass = function buildWrapperCSSClass() {\n return 'vjs-descriptions-button ' + _TextTrackButton.prototype.buildWrapperCSSClass.call(this);\n };\n\n return DescriptionsButton;\n}(TextTrackButton);\n\n/**\n * `kind` of TextTrack to look for to associate it with this menu.\n *\n * @type {string}\n * @private\n */\n\n\nDescriptionsButton.prototype.kind_ = 'descriptions';\n\n/**\n * The text that should display over the `DescriptionsButton`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\nDescriptionsButton.prototype.controlText_ = 'Descriptions';\n\nComponent.registerComponent('DescriptionsButton', DescriptionsButton);\n\n/**\n * @file subtitles-button.js\n */\n/**\n * The button component for toggling and selecting subtitles\n *\n * @extends TextTrackButton\n */\n\nvar SubtitlesButton = function (_TextTrackButton) {\n inherits(SubtitlesButton, _TextTrackButton);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} [ready]\n * The function to call when this component is ready.\n */\n function SubtitlesButton(player, options, ready) {\n classCallCheck(this, SubtitlesButton);\n return possibleConstructorReturn(this, _TextTrackButton.call(this, player, options, ready));\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n SubtitlesButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-subtitles-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n SubtitlesButton.prototype.buildWrapperCSSClass = function buildWrapperCSSClass() {\n return 'vjs-subtitles-button ' + _TextTrackButton.prototype.buildWrapperCSSClass.call(this);\n };\n\n return SubtitlesButton;\n}(TextTrackButton);\n\n/**\n * `kind` of TextTrack to look for to associate it with this menu.\n *\n * @type {string}\n * @private\n */\n\n\nSubtitlesButton.prototype.kind_ = 'subtitles';\n\n/**\n * The text that should display over the `SubtitlesButton`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\nSubtitlesButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubtitlesButton', SubtitlesButton);\n\n/**\n * @file caption-settings-menu-item.js\n */\n/**\n * The menu item for caption track settings menu\n *\n * @extends TextTrackMenuItem\n */\n\nvar CaptionSettingsMenuItem = function (_TextTrackMenuItem) {\n inherits(CaptionSettingsMenuItem, _TextTrackMenuItem);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function CaptionSettingsMenuItem(player, options) {\n classCallCheck(this, CaptionSettingsMenuItem);\n\n options.track = {\n player: player,\n kind: options.kind,\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 options.name = 'CaptionSettingsMenuItem';\n\n var _this = possibleConstructorReturn(this, _TextTrackMenuItem.call(this, player, options));\n\n _this.addClass('vjs-texttrack-settings');\n _this.controlText(', opens ' + options.kind + ' settings dialog');\n return _this;\n }\n\n /**\n * This gets called when an `CaptionSettingsMenuItem` is \"clicked\". See\n * {@link ClickableComponent} for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} [event]\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n CaptionSettingsMenuItem.prototype.handleClick = function handleClick(event) {\n this.player().getChild('textTrackSettings').open();\n };\n\n return CaptionSettingsMenuItem;\n}(TextTrackMenuItem);\n\nComponent.registerComponent('CaptionSettingsMenuItem', CaptionSettingsMenuItem);\n\n/**\n * @file captions-button.js\n */\n/**\n * The button component for toggling and selecting captions\n *\n * @extends TextTrackButton\n */\n\nvar CaptionsButton = function (_TextTrackButton) {\n inherits(CaptionsButton, _TextTrackButton);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} [ready]\n * The function to call when this component is ready.\n */\n function CaptionsButton(player, options, ready) {\n classCallCheck(this, CaptionsButton);\n return possibleConstructorReturn(this, _TextTrackButton.call(this, player, options, ready));\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n CaptionsButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-captions-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n CaptionsButton.prototype.buildWrapperCSSClass = function buildWrapperCSSClass() {\n return 'vjs-captions-button ' + _TextTrackButton.prototype.buildWrapperCSSClass.call(this);\n };\n\n /**\n * Create caption menu items\n *\n * @return {CaptionSettingsMenuItem[]}\n * The array of current menu items.\n */\n\n\n CaptionsButton.prototype.createItems = function createItems() {\n var items = [];\n\n if (!(this.player().tech_ && this.player().tech_.featuresNativeTextTracks) && this.player().getChild('textTrackSettings')) {\n items.push(new CaptionSettingsMenuItem(this.player_, { kind: this.kind_ }));\n\n this.hideThreshold_ += 1;\n }\n\n return _TextTrackButton.prototype.createItems.call(this, items);\n };\n\n return CaptionsButton;\n}(TextTrackButton);\n\n/**\n * `kind` of TextTrack to look for to associate it with this menu.\n *\n * @type {string}\n * @private\n */\n\n\nCaptionsButton.prototype.kind_ = 'captions';\n\n/**\n * The text that should display over the `CaptionsButton`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\nCaptionsButton.prototype.controlText_ = 'Captions';\n\nComponent.registerComponent('CaptionsButton', CaptionsButton);\n\n/**\n * @file subs-caps-menu-item.js\n */\n/**\n * SubsCapsMenuItem has an [cc] icon to distinguish captions from subtitles\n * in the SubsCapsMenu.\n *\n * @extends TextTrackMenuItem\n */\n\nvar SubsCapsMenuItem = function (_TextTrackMenuItem) {\n inherits(SubsCapsMenuItem, _TextTrackMenuItem);\n\n function SubsCapsMenuItem() {\n classCallCheck(this, SubsCapsMenuItem);\n return possibleConstructorReturn(this, _TextTrackMenuItem.apply(this, arguments));\n }\n\n SubsCapsMenuItem.prototype.createEl = function createEl(type, props, attrs) {\n var innerHTML = '<span class=\"vjs-menu-item-text\">' + this.localize(this.options_.label);\n\n if (this.options_.track.kind === 'captions') {\n innerHTML += '\\n <span aria-hidden=\"true\" class=\"vjs-icon-placeholder\"></span>\\n <span class=\"vjs-control-text\"> ' + this.localize('Captions') + '</span>\\n ';\n }\n\n innerHTML += '</span>';\n\n var el = _TextTrackMenuItem.prototype.createEl.call(this, type, assign({\n innerHTML: innerHTML\n }, props), attrs);\n\n return el;\n };\n\n return SubsCapsMenuItem;\n}(TextTrackMenuItem);\n\nComponent.registerComponent('SubsCapsMenuItem', SubsCapsMenuItem);\n\n/**\n * @file sub-caps-button.js\n */\n/**\n * The button component for toggling and selecting captions and/or subtitles\n *\n * @extends TextTrackButton\n */\n\nvar SubsCapsButton = function (_TextTrackButton) {\n inherits(SubsCapsButton, _TextTrackButton);\n\n function SubsCapsButton(player) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, SubsCapsButton);\n\n // Although North America uses \"captions\" in most cases for\n // \"captions and subtitles\" other locales use \"subtitles\"\n var _this = possibleConstructorReturn(this, _TextTrackButton.call(this, player, options));\n\n _this.label_ = 'subtitles';\n if (['en', 'en-us', 'en-ca', 'fr-ca'].indexOf(_this.player_.language_) > -1) {\n _this.label_ = 'captions';\n }\n _this.menuButton_.controlText(toTitleCase(_this.label_));\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n SubsCapsButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-subs-caps-button ' + _TextTrackButton.prototype.buildCSSClass.call(this);\n };\n\n SubsCapsButton.prototype.buildWrapperCSSClass = function buildWrapperCSSClass() {\n return 'vjs-subs-caps-button ' + _TextTrackButton.prototype.buildWrapperCSSClass.call(this);\n };\n\n /**\n * Create caption/subtitles menu items\n *\n * @return {CaptionSettingsMenuItem[]}\n * The array of current menu items.\n */\n\n\n SubsCapsButton.prototype.createItems = function createItems() {\n var items = [];\n\n if (!(this.player().tech_ && this.player().tech_.featuresNativeTextTracks) && this.player().getChild('textTrackSettings')) {\n items.push(new CaptionSettingsMenuItem(this.player_, { kind: this.label_ }));\n\n this.hideThreshold_ += 1;\n }\n\n items = _TextTrackButton.prototype.createItems.call(this, items, SubsCapsMenuItem);\n return items;\n };\n\n return SubsCapsButton;\n}(TextTrackButton);\n\n/**\n * `kind`s of TextTrack to look for to associate it with this menu.\n *\n * @type {array}\n * @private\n */\n\n\nSubsCapsButton.prototype.kinds_ = ['captions', 'subtitles'];\n\n/**\n * The text that should display over the `SubsCapsButton`s controls.\n *\n *\n * @type {string}\n * @private\n */\nSubsCapsButton.prototype.controlText_ = 'Subtitles';\n\nComponent.registerComponent('SubsCapsButton', SubsCapsButton);\n\n/**\n * @file audio-track-menu-item.js\n */\n/**\n * An {@link AudioTrack} {@link MenuItem}\n *\n * @extends MenuItem\n */\n\nvar AudioTrackMenuItem = function (_MenuItem) {\n inherits(AudioTrackMenuItem, _MenuItem);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function AudioTrackMenuItem(player, options) {\n classCallCheck(this, AudioTrackMenuItem);\n\n var track = options.track;\n var 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 var _this = possibleConstructorReturn(this, _MenuItem.call(this, player, options));\n\n _this.track = track;\n\n _this.addClass('vjs-' + track.kind + '-menu-item');\n\n var changeHandler = function changeHandler() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.handleTracksChange.apply(_this, args);\n };\n\n tracks.addEventListener('change', changeHandler);\n _this.on('dispose', function () {\n tracks.removeEventListener('change', changeHandler);\n });\n return _this;\n }\n\n AudioTrackMenuItem.prototype.createEl = function createEl(type, props, attrs) {\n var innerHTML = '<span class=\"vjs-menu-item-text\">' + this.localize(this.options_.label);\n\n if (this.options_.track.kind === 'main-desc') {\n innerHTML += '\\n <span aria-hidden=\"true\" class=\"vjs-icon-placeholder\"></span>\\n <span class=\"vjs-control-text\"> ' + this.localize('Descriptions') + '</span>\\n ';\n }\n\n innerHTML += '</span>';\n\n var el = _MenuItem.prototype.createEl.call(this, type, assign({\n innerHTML: innerHTML\n }, props), attrs);\n\n return el;\n };\n\n /**\n * This gets called when an `AudioTrackMenuItem is \"clicked\". See {@link ClickableComponent}\n * for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} [event]\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n AudioTrackMenuItem.prototype.handleClick = function handleClick(event) {\n var tracks = this.player_.audioTracks();\n\n _MenuItem.prototype.handleClick.call(this, event);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n track.enabled = track === this.track;\n }\n };\n\n /**\n * Handle any {@link AudioTrack} change.\n *\n * @param {EventTarget~Event} [event]\n * The {@link AudioTrackList#change} event that caused this to run.\n *\n * @listens AudioTrackList#change\n */\n\n\n AudioTrackMenuItem.prototype.handleTracksChange = function handleTracksChange(event) {\n this.selected(this.track.enabled);\n };\n\n return AudioTrackMenuItem;\n}(MenuItem);\n\nComponent.registerComponent('AudioTrackMenuItem', AudioTrackMenuItem);\n\n/**\n * @file audio-track-button.js\n */\n/**\n * The base class for buttons that toggle specific {@link AudioTrack} types.\n *\n * @extends TrackButton\n */\n\nvar AudioTrackButton = function (_TrackButton) {\n inherits(AudioTrackButton, _TrackButton);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options={}]\n * The key/value store of player options.\n */\n function AudioTrackButton(player) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, AudioTrackButton);\n\n options.tracks = player.audioTracks();\n\n return possibleConstructorReturn(this, _TrackButton.call(this, player, options));\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n AudioTrackButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-audio-button ' + _TrackButton.prototype.buildCSSClass.call(this);\n };\n\n AudioTrackButton.prototype.buildWrapperCSSClass = function buildWrapperCSSClass() {\n return 'vjs-audio-button ' + _TrackButton.prototype.buildWrapperCSSClass.call(this);\n };\n\n /**\n * Create a menu item for each audio track\n *\n * @param {AudioTrackMenuItem[]} [items=[]]\n * An array of existing menu items to use.\n *\n * @return {AudioTrackMenuItem[]}\n * An array of menu items\n */\n\n\n AudioTrackButton.prototype.createItems = function createItems() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n // if there's only one audio track, there no point in showing it\n this.hideThreshold_ = 1;\n\n var tracks = this.player_.audioTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n\n items.push(new AudioTrackMenuItem(this.player_, {\n track: track,\n // MenuItem is selectable\n selectable: true,\n // MenuItem is NOT multiSelectable (i.e. only one can be marked \"selected\" at a time)\n multiSelectable: false\n }));\n }\n\n return items;\n };\n\n return AudioTrackButton;\n}(TrackButton);\n\n/**\n * The text that should display over the `AudioTrackButton`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\n\n\nAudioTrackButton.prototype.controlText_ = 'Audio Track';\nComponent.registerComponent('AudioTrackButton', AudioTrackButton);\n\n/**\n * @file playback-rate-menu-item.js\n */\n/**\n * The specific menu item type for selecting a playback rate.\n *\n * @extends MenuItem\n */\n\nvar PlaybackRateMenuItem = function (_MenuItem) {\n inherits(PlaybackRateMenuItem, _MenuItem);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function PlaybackRateMenuItem(player, options) {\n classCallCheck(this, PlaybackRateMenuItem);\n\n var label = options.rate;\n var rate = parseFloat(label, 10);\n\n // Modify options for parent MenuItem class's init.\n options.label = label;\n options.selected = rate === 1;\n options.selectable = true;\n options.multiSelectable = false;\n\n var _this = possibleConstructorReturn(this, _MenuItem.call(this, player, options));\n\n _this.label = label;\n _this.rate = rate;\n\n _this.on(player, 'ratechange', _this.update);\n return _this;\n }\n\n /**\n * This gets called when an `PlaybackRateMenuItem` is \"clicked\". See\n * {@link ClickableComponent} for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} [event]\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n PlaybackRateMenuItem.prototype.handleClick = function handleClick(event) {\n _MenuItem.prototype.handleClick.call(this);\n this.player().playbackRate(this.rate);\n };\n\n /**\n * Update the PlaybackRateMenuItem when the playbackrate changes.\n *\n * @param {EventTarget~Event} [event]\n * The `ratechange` event that caused this function to run.\n *\n * @listens Player#ratechange\n */\n\n\n PlaybackRateMenuItem.prototype.update = function update(event) {\n this.selected(this.player().playbackRate() === this.rate);\n };\n\n return PlaybackRateMenuItem;\n}(MenuItem);\n\n/**\n * The text that should display over the `PlaybackRateMenuItem`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\n\n\nPlaybackRateMenuItem.prototype.contentElType = 'button';\n\nComponent.registerComponent('PlaybackRateMenuItem', PlaybackRateMenuItem);\n\n/**\n * @file playback-rate-menu-button.js\n */\n/**\n * The component for controlling the playback rate.\n *\n * @extends MenuButton\n */\n\nvar PlaybackRateMenuButton = function (_MenuButton) {\n inherits(PlaybackRateMenuButton, _MenuButton);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function PlaybackRateMenuButton(player, options) {\n classCallCheck(this, PlaybackRateMenuButton);\n\n var _this = possibleConstructorReturn(this, _MenuButton.call(this, 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 return _this;\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n PlaybackRateMenuButton.prototype.createEl = function createEl$$1() {\n var el = _MenuButton.prototype.createEl.call(this);\n\n this.labelEl_ = createEl('div', {\n className: 'vjs-playback-rate-value',\n innerHTML: '1x'\n });\n\n el.appendChild(this.labelEl_);\n\n return el;\n };\n\n PlaybackRateMenuButton.prototype.dispose = function dispose() {\n this.labelEl_ = null;\n\n _MenuButton.prototype.dispose.call(this);\n };\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n\n\n PlaybackRateMenuButton.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-playback-rate ' + _MenuButton.prototype.buildCSSClass.call(this);\n };\n\n PlaybackRateMenuButton.prototype.buildWrapperCSSClass = function buildWrapperCSSClass() {\n return 'vjs-playback-rate ' + _MenuButton.prototype.buildWrapperCSSClass.call(this);\n };\n\n /**\n * Create the playback rate menu\n *\n * @return {Menu}\n * Menu object populated with {@link PlaybackRateMenuItem}s\n */\n\n\n PlaybackRateMenuButton.prototype.createMenu = function createMenu() {\n var menu = new Menu(this.player());\n var rates = this.playbackRates();\n\n if (rates) {\n for (var i = rates.length - 1; i >= 0; i--) {\n menu.addChild(new PlaybackRateMenuItem(this.player(), { rate: rates[i] + 'x' }));\n }\n }\n\n return menu;\n };\n\n /**\n * Updates ARIA accessibility attributes\n */\n\n\n PlaybackRateMenuButton.prototype.updateARIAAttributes = function updateARIAAttributes() {\n // Current playback rate\n this.el().setAttribute('aria-valuenow', this.player().playbackRate());\n };\n\n /**\n * This gets called when an `PlaybackRateMenuButton` is \"clicked\". See\n * {@link ClickableComponent} for more detailed information on what a click can be.\n *\n * @param {EventTarget~Event} [event]\n * The `keydown`, `tap`, or `click` event that caused this function to be\n * called.\n *\n * @listens tap\n * @listens click\n */\n\n\n PlaybackRateMenuButton.prototype.handleClick = function handleClick(event) {\n // select next rate option\n var currentRate = this.player().playbackRate();\n var rates = this.playbackRates();\n\n // this will select first one if the last one currently selected\n var newRate = rates[0];\n\n for (var 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}\n * All possible playback rates\n */\n\n\n PlaybackRateMenuButton.prototype.playbackRates = function 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}\n * Whether changing playback rate is supported\n */\n\n\n PlaybackRateMenuButton.prototype.playbackRateSupported = function playbackRateSupported() {\n return this.player().tech_ && this.player().tech_.featuresPlaybackRate && this.playbackRates() && this.playbackRates().length > 0;\n };\n\n /**\n * Hide playback rate controls when they're no playback rate options to select\n *\n * @param {EventTarget~Event} [event]\n * The event that caused this function to run.\n *\n * @listens Player#loadstart\n */\n\n\n PlaybackRateMenuButton.prototype.updateVisibility = function updateVisibility(event) {\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 * @param {EventTarget~Event} [event]\n * The event that caused this function to run.\n *\n * @listens Player#ratechange\n */\n\n\n PlaybackRateMenuButton.prototype.updateLabel = function updateLabel(event) {\n if (this.playbackRateSupported()) {\n this.labelEl_.innerHTML = this.player().playbackRate() + 'x';\n }\n };\n\n return PlaybackRateMenuButton;\n}(MenuButton);\n\n/**\n * The text that should display over the `FullscreenToggle`s controls. Added for localization.\n *\n * @type {string}\n * @private\n */\n\n\nPlaybackRateMenuButton.prototype.controlText_ = 'Playback Rate';\n\nComponent.registerComponent('PlaybackRateMenuButton', PlaybackRateMenuButton);\n\n/**\n * @file spacer.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 */\n\nvar Spacer = function (_Component) {\n inherits(Spacer, _Component);\n\n function Spacer() {\n classCallCheck(this, Spacer);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n Spacer.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-spacer ' + _Component.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n Spacer.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass()\n });\n };\n\n return Spacer;\n}(Component);\n\nComponent.registerComponent('Spacer', Spacer);\n\n/**\n * @file custom-control-spacer.js\n */\n/**\n * Spacer specifically meant to be used as an insertion point for new plugins, etc.\n *\n * @extends Spacer\n */\n\nvar CustomControlSpacer = function (_Spacer) {\n inherits(CustomControlSpacer, _Spacer);\n\n function CustomControlSpacer() {\n classCallCheck(this, CustomControlSpacer);\n return possibleConstructorReturn(this, _Spacer.apply(this, arguments));\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n CustomControlSpacer.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-custom-control-spacer ' + _Spacer.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n\n\n CustomControlSpacer.prototype.createEl = function createEl() {\n var el = _Spacer.prototype.createEl.call(this, {\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 = '\\xA0';\n return el;\n };\n\n return CustomControlSpacer;\n}(Spacer);\n\nComponent.registerComponent('CustomControlSpacer', CustomControlSpacer);\n\n/**\n * @file control-bar.js\n */\n// Required children\n/**\n * Container of main controls.\n *\n * @extends Component\n */\n\nvar ControlBar = function (_Component) {\n inherits(ControlBar, _Component);\n\n function ControlBar() {\n classCallCheck(this, ControlBar);\n return possibleConstructorReturn(this, _Component.apply(this, arguments));\n }\n\n /**\n * Create the `Component`'s DOM element\n *\n * @return {Element}\n * The element that was created.\n */\n ControlBar.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: 'vjs-control-bar',\n dir: 'ltr'\n });\n };\n\n return ControlBar;\n}(Component);\n\n/**\n * Default options for `ControlBar`\n *\n * @type {Object}\n * @private\n */\n\n\nControlBar.prototype.options_ = {\n children: ['playToggle', 'volumePanel', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'chaptersButton', 'descriptionsButton', 'subsCapsButton', 'audioTrackButton', 'fullscreenToggle']\n};\n\nComponent.registerComponent('ControlBar', ControlBar);\n\n/**\n * @file error-display.js\n */\n/**\n * A display that indicates an error has occurred. This means that the video\n * is unplayable.\n *\n * @extends ModalDialog\n */\n\nvar ErrorDisplay = function (_ModalDialog) {\n inherits(ErrorDisplay, _ModalDialog);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function ErrorDisplay(player, options) {\n classCallCheck(this, ErrorDisplay);\n\n var _this = possibleConstructorReturn(this, _ModalDialog.call(this, player, options));\n\n _this.on(player, 'error', _this.open);\n return _this;\n }\n\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n *\n * @deprecated Since version 5.\n */\n\n\n ErrorDisplay.prototype.buildCSSClass = function buildCSSClass() {\n return 'vjs-error-display ' + _ModalDialog.prototype.buildCSSClass.call(this);\n };\n\n /**\n * Gets the localized error message based on the `Player`s error.\n *\n * @return {string}\n * The `Player`s error message localized or an empty string.\n */\n\n\n ErrorDisplay.prototype.content = function content() {\n var error = this.player().error();\n\n return error ? this.localize(error.message) : '';\n };\n\n return ErrorDisplay;\n}(ModalDialog);\n\n/**\n * The default options for an `ErrorDisplay`.\n *\n * @private\n */\n\n\nErrorDisplay.prototype.options_ = mergeOptions(ModalDialog.prototype.options_, {\n pauseOnOpen: false,\n fillAlways: true,\n temporary: false,\n uncloseable: true\n});\n\nComponent.registerComponent('ErrorDisplay', ErrorDisplay);\n\n/**\n * @file text-track-settings.js\n */\nvar LOCAL_STORAGE_KEY = 'vjs-text-track-settings';\n\nvar COLOR_BLACK = ['#000', 'Black'];\nvar COLOR_BLUE = ['#00F', 'Blue'];\nvar COLOR_CYAN = ['#0FF', 'Cyan'];\nvar COLOR_GREEN = ['#0F0', 'Green'];\nvar COLOR_MAGENTA = ['#F0F', 'Magenta'];\nvar COLOR_RED = ['#F00', 'Red'];\nvar COLOR_WHITE = ['#FFF', 'White'];\nvar COLOR_YELLOW = ['#FF0', 'Yellow'];\n\nvar OPACITY_OPAQUE = ['1', 'Opaque'];\nvar OPACITY_SEMI = ['0.5', 'Semi-Transparent'];\nvar OPACITY_TRANS = ['0', 'Transparent'];\n\n// Configuration for the various <select> elements in the DOM of this component.\n//\n// Possible keys include:\n//\n// `default`:\n// The default option index. Only needs to be provided if not zero.\n// `parser`:\n// A function which is used to parse the value from the selected option in\n// a customized way.\n// `selector`:\n// The selector used to find the associated <select> element.\nvar selectConfigs = {\n backgroundColor: {\n selector: '.vjs-bg-color > select',\n id: 'captions-background-color-%s',\n label: 'Color',\n options: [COLOR_BLACK, COLOR_WHITE, COLOR_RED, COLOR_GREEN, COLOR_BLUE, COLOR_YELLOW, COLOR_MAGENTA, COLOR_CYAN]\n },\n\n backgroundOpacity: {\n selector: '.vjs-bg-opacity > select',\n id: 'captions-background-opacity-%s',\n label: 'Transparency',\n options: [OPACITY_OPAQUE, OPACITY_SEMI, OPACITY_TRANS]\n },\n\n color: {\n selector: '.vjs-fg-color > select',\n id: 'captions-foreground-color-%s',\n label: 'Color',\n options: [COLOR_WHITE, COLOR_BLACK, COLOR_RED, COLOR_GREEN, COLOR_BLUE, COLOR_YELLOW, COLOR_MAGENTA, COLOR_CYAN]\n },\n\n edgeStyle: {\n selector: '.vjs-edge-style > select',\n id: '%s',\n label: 'Text Edge Style',\n options: [['none', 'None'], ['raised', 'Raised'], ['depressed', 'Depressed'], ['uniform', 'Uniform'], ['dropshadow', 'Dropshadow']]\n },\n\n fontFamily: {\n selector: '.vjs-font-family > select',\n id: 'captions-font-family-%s',\n label: 'Font Family',\n options: [['proportionalSansSerif', 'Proportional Sans-Serif'], ['monospaceSansSerif', 'Monospace Sans-Serif'], ['proportionalSerif', 'Proportional Serif'], ['monospaceSerif', 'Monospace Serif'], ['casual', 'Casual'], ['script', 'Script'], ['small-caps', 'Small Caps']]\n },\n\n fontPercent: {\n selector: '.vjs-font-percent > select',\n id: 'captions-font-size-%s',\n label: 'Font Size',\n options: [['0.50', '50%'], ['0.75', '75%'], ['1.00', '100%'], ['1.25', '125%'], ['1.50', '150%'], ['1.75', '175%'], ['2.00', '200%'], ['3.00', '300%'], ['4.00', '400%']],\n 'default': 2,\n parser: function parser(v) {\n return v === '1.00' ? null : Number(v);\n }\n },\n\n textOpacity: {\n selector: '.vjs-text-opacity > select',\n id: 'captions-foreground-opacity-%s',\n label: 'Transparency',\n options: [OPACITY_OPAQUE, OPACITY_SEMI]\n },\n\n // Options for this object are defined below.\n windowColor: {\n selector: '.vjs-window-color > select',\n id: 'captions-window-color-%s',\n label: 'Color'\n },\n\n // Options for this object are defined below.\n windowOpacity: {\n selector: '.vjs-window-opacity > select',\n id: 'captions-window-opacity-%s',\n label: 'Transparency',\n options: [OPACITY_TRANS, OPACITY_SEMI, OPACITY_OPAQUE]\n }\n};\n\nselectConfigs.windowColor.options = selectConfigs.backgroundColor.options;\n\n/**\n * Get the actual value of an option.\n *\n * @param {string} value\n * The value to get\n *\n * @param {Function} [parser]\n * Optional function to adjust the value.\n *\n * @return {Mixed}\n * - Will be `undefined` if no value exists\n * - Will be `undefined` if the given value is \"none\".\n * - Will be the actual value otherwise.\n *\n * @private\n */\nfunction parseOptionValue(value, parser) {\n if (parser) {\n value = parser(value);\n }\n\n if (value && value !== 'none') {\n return value;\n }\n}\n\n/**\n * Gets the value of the selected <option> element within a <select> element.\n *\n * @param {Element} el\n * the element to look in\n *\n * @param {Function} [parser]\n * Optional function to adjust the value.\n *\n * @return {Mixed}\n * - Will be `undefined` if no value exists\n * - Will be `undefined` if the given value is \"none\".\n * - Will be the actual value otherwise.\n *\n * @private\n */\nfunction getSelectedOptionValue(el, parser) {\n var value = el.options[el.options.selectedIndex].value;\n\n return parseOptionValue(value, parser);\n}\n\n/**\n * Sets the selected <option> element within a <select> element based on a\n * given value.\n *\n * @param {Element} el\n * The element to look in.\n *\n * @param {string} value\n * the property to look on.\n *\n * @param {Function} [parser]\n * Optional function to adjust the value before comparing.\n *\n * @private\n */\nfunction setSelectedOption(el, value, parser) {\n if (!value) {\n return;\n }\n\n for (var i = 0; i < el.options.length; i++) {\n if (parseOptionValue(el.options[i].value, parser) === value) {\n el.selectedIndex = i;\n break;\n }\n }\n}\n\n/**\n * Manipulate Text Tracks settings.\n *\n * @extends ModalDialog\n */\n\nvar TextTrackSettings = function (_ModalDialog) {\n inherits(TextTrackSettings, _ModalDialog);\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n */\n function TextTrackSettings(player, options) {\n classCallCheck(this, TextTrackSettings);\n\n options.temporary = false;\n\n var _this = possibleConstructorReturn(this, _ModalDialog.call(this, player, options));\n\n _this.updateDisplay = bind(_this, _this.updateDisplay);\n\n // fill the modal and pretend we have opened it\n _this.fill();\n _this.hasBeenOpened_ = _this.hasBeenFilled_ = true;\n\n _this.endDialog = createEl('p', {\n className: 'vjs-control-text',\n textContent: _this.localize('End of dialog window.')\n });\n _this.el().appendChild(_this.endDialog);\n\n _this.setDefaults();\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 _this.on(_this.$('.vjs-done-button'), 'click', function () {\n _this.saveSettings();\n _this.close();\n });\n\n _this.on(_this.$('.vjs-default-button'), 'click', function () {\n _this.setDefaults();\n _this.updateDisplay();\n });\n\n each(selectConfigs, function (config) {\n _this.on(_this.$(config.selector), 'change', _this.updateDisplay);\n });\n\n if (_this.options_.persistTextTrackSettings) {\n _this.restoreSettings();\n }\n return _this;\n }\n\n TextTrackSettings.prototype.dispose = function dispose() {\n this.endDialog = null;\n\n _ModalDialog.prototype.dispose.call(this);\n };\n\n /**\n * Create a <select> element with configured options.\n *\n * @param {string} key\n * Configuration key to use during creation.\n *\n * @return {string}\n * An HTML string.\n *\n * @private\n */\n\n\n TextTrackSettings.prototype.createElSelect_ = function createElSelect_(key) {\n var _this2 = this;\n\n var legendId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'label';\n\n var config = selectConfigs[key];\n var id = config.id.replace('%s', this.id_);\n var selectLabelledbyIds = [legendId, id].join(' ').trim();\n\n return ['<' + type + ' id=\"' + id + '\" class=\"' + (type === 'label' ? 'vjs-label' : '') + '\">', this.localize(config.label), '</' + type + '>', '<select aria-labelledby=\"' + selectLabelledbyIds + '\">'].concat(config.options.map(function (o) {\n var optionId = id + '-' + o[1].replace(/\\W+/g, '');\n\n return ['<option id=\"' + optionId + '\" value=\"' + o[0] + '\" ', 'aria-labelledby=\"' + selectLabelledbyIds + ' ' + optionId + '\">', _this2.localize(o[1]), '</option>'].join('');\n })).concat('</select>').join('');\n };\n\n /**\n * Create foreground color element for the component\n *\n * @return {string}\n * An HTML string.\n *\n * @private\n */\n\n\n TextTrackSettings.prototype.createElFgColor_ = function createElFgColor_() {\n var legendId = 'captions-text-legend-' + this.id_;\n\n return ['<fieldset class=\"vjs-fg-color vjs-track-setting\">', '<legend id=\"' + legendId + '\">', this.localize('Text'), '</legend>', this.createElSelect_('color', legendId), '<span class=\"vjs-text-opacity vjs-opacity\">', this.createElSelect_('textOpacity', legendId), '</span>', '</fieldset>'].join('');\n };\n\n /**\n * Create background color element for the component\n *\n * @return {string}\n * An HTML string.\n *\n * @private\n */\n\n\n TextTrackSettings.prototype.createElBgColor_ = function createElBgColor_() {\n var legendId = 'captions-background-' + this.id_;\n\n return ['<fieldset class=\"vjs-bg-color vjs-track-setting\">', '<legend id=\"' + legendId + '\">', this.localize('Background'), '</legend>', this.createElSelect_('backgroundColor', legendId), '<span class=\"vjs-bg-opacity vjs-opacity\">', this.createElSelect_('backgroundOpacity', legendId), '</span>', '</fieldset>'].join('');\n };\n\n /**\n * Create window color element for the component\n *\n * @return {string}\n * An HTML string.\n *\n * @private\n */\n\n\n TextTrackSettings.prototype.createElWinColor_ = function createElWinColor_() {\n var legendId = 'captions-window-' + this.id_;\n\n return ['<fieldset class=\"vjs-window-color vjs-track-setting\">', '<legend id=\"' + legendId + '\">', this.localize('Window'), '</legend>', this.createElSelect_('windowColor', legendId), '<span class=\"vjs-window-opacity vjs-opacity\">', this.createElSelect_('windowOpacity', legendId), '</span>', '</fieldset>'].join('');\n };\n\n /**\n * Create color elements for the component\n *\n * @return {Element}\n * The element that was created\n *\n * @private\n */\n\n\n TextTrackSettings.prototype.createElColors_ = function createElColors_() {\n return createEl('div', {\n className: 'vjs-track-settings-colors',\n innerHTML: [this.createElFgColor_(), this.createElBgColor_(), this.createElWinColor_()].join('')\n });\n };\n\n /**\n * Create font elements for the component\n *\n * @return {Element}\n * The element that was created.\n *\n * @private\n */\n\n\n TextTrackSettings.prototype.createElFont_ = function createElFont_() {\n return createEl('div', {\n className: 'vjs-track-settings-font',\n innerHTML: ['<fieldset class=\"vjs-font-percent vjs-track-setting\">', this.createElSelect_('fontPercent', '', 'legend'), '</fieldset>', '<fieldset class=\"vjs-edge-style vjs-track-setting\">', this.createElSelect_('edgeStyle', '', 'legend'), '</fieldset>', '<fieldset class=\"vjs-font-family vjs-track-setting\">', this.createElSelect_('fontFamily', '', 'legend'), '</fieldset>'].join('')\n });\n };\n\n /**\n * Create controls for the component\n *\n * @return {Element}\n * The element that was created.\n *\n * @private\n */\n\n\n TextTrackSettings.prototype.createElControls_ = function createElControls_() {\n var defaultsDescription = this.localize('restore all settings to the default values');\n\n return createEl('div', {\n className: 'vjs-track-settings-controls',\n innerHTML: ['<button class=\"vjs-default-button\" title=\"' + defaultsDescription + '\">', this.localize('Reset'), '<span class=\"vjs-control-text\"> ' + defaultsDescription + '</span>', '</button>', '<button class=\"vjs-done-button\">' + this.localize('Done') + '</button>'].join('')\n });\n };\n\n TextTrackSettings.prototype.content = function content() {\n return [this.createElColors_(), this.createElFont_(), this.createElControls_()];\n };\n\n TextTrackSettings.prototype.label = function label() {\n return this.localize('Caption Settings Dialog');\n };\n\n TextTrackSettings.prototype.description = function description() {\n return this.localize('Beginning of dialog window. Escape will cancel and close the window.');\n };\n\n TextTrackSettings.prototype.buildCSSClass = function buildCSSClass() {\n return _ModalDialog.prototype.buildCSSClass.call(this) + ' vjs-text-track-settings';\n };\n\n /**\n * Gets an object of text track settings (or null).\n *\n * @return {Object}\n * An object with config values parsed from the DOM or localStorage.\n */\n\n\n TextTrackSettings.prototype.getValues = function getValues() {\n var _this3 = this;\n\n return reduce(selectConfigs, function (accum, config, key) {\n var value = getSelectedOptionValue(_this3.$(config.selector), config.parser);\n\n if (value !== undefined) {\n accum[key] = value;\n }\n\n return accum;\n }, {});\n };\n\n /**\n * Sets text track settings from an object of values.\n *\n * @param {Object} values\n * An object with config values parsed from the DOM or localStorage.\n */\n\n\n TextTrackSettings.prototype.setValues = function setValues(values) {\n var _this4 = this;\n\n each(selectConfigs, function (config, key) {\n setSelectedOption(_this4.$(config.selector), values[key], config.parser);\n });\n };\n\n /**\n * Sets all `<select>` elements to their default values.\n */\n\n\n TextTrackSettings.prototype.setDefaults = function setDefaults() {\n var _this5 = this;\n\n each(selectConfigs, function (config) {\n var index = config.hasOwnProperty('default') ? config['default'] : 0;\n\n _this5.$(config.selector).selectedIndex = index;\n });\n };\n\n /**\n * Restore texttrack settings from localStorage\n */\n\n\n TextTrackSettings.prototype.restoreSettings = function restoreSettings() {\n var values = void 0;\n\n try {\n values = JSON.parse(window.localStorage.getItem(LOCAL_STORAGE_KEY));\n } catch (err) {\n log$1.warn(err);\n }\n\n if (values) {\n this.setValues(values);\n }\n };\n\n /**\n * Save text track settings to localStorage\n */\n\n\n TextTrackSettings.prototype.saveSettings = function saveSettings() {\n if (!this.options_.persistTextTrackSettings) {\n return;\n }\n\n var values = this.getValues();\n\n try {\n if (Object.keys(values).length) {\n window.localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(values));\n } else {\n window.localStorage.removeItem(LOCAL_STORAGE_KEY);\n }\n } catch (err) {\n log$1.warn(err);\n }\n };\n\n /**\n * Update display of text track settings\n */\n\n\n TextTrackSettings.prototype.updateDisplay = function updateDisplay() {\n var ttDisplay = this.player_.getChild('textTrackDisplay');\n\n if (ttDisplay) {\n ttDisplay.updateDisplay();\n }\n };\n\n /**\n * conditionally blur the element and refocus the captions button\n *\n * @private\n */\n\n\n TextTrackSettings.prototype.conditionalBlur_ = function conditionalBlur_() {\n this.previouslyActiveEl_ = null;\n this.off(document, 'keydown', this.handleKeyDown);\n\n var cb = this.player_.controlBar;\n var subsCapsBtn = cb && cb.subsCapsButton;\n var ccBtn = cb && cb.captionsButton;\n\n if (subsCapsBtn) {\n subsCapsBtn.focus();\n } else if (ccBtn) {\n ccBtn.focus();\n }\n };\n\n return TextTrackSettings;\n}(ModalDialog);\n\nComponent.registerComponent('TextTrackSettings', TextTrackSettings);\n\n/**\n * @file resize-manager.js\n */\n/**\n * A Resize Manager. It is in charge of triggering `playerresize` on the player in the right conditions.\n *\n * It'll either create an iframe and use a debounced resize handler on it or use the new {@link https://wicg.github.io/ResizeObserver/|ResizeObserver}.\n *\n * If the ResizeObserver is available natively, it will be used. A polyfill can be passed in as an option.\n * If a `playerresize` event is not needed, the ResizeManager component can be removed from the player, see the example below.\n * @example <caption>How to disable the resize manager</caption>\n * const player = videojs('#vid', {\n * resizeManager: false\n * });\n *\n * @see {@link https://wicg.github.io/ResizeObserver/|ResizeObserver specification}\n *\n * @extends Component\n */\n\nvar ResizeManager = function (_Component) {\n inherits(ResizeManager, _Component);\n\n /**\n * Create the ResizeManager.\n *\n * @param {Object} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of ResizeManager options.\n *\n * @param {Object} [options.ResizeObserver]\n * A polyfill for ResizeObserver can be passed in here.\n * If this is set to null it will ignore the native ResizeObserver and fall back to the iframe fallback.\n */\n function ResizeManager(player, options) {\n classCallCheck(this, ResizeManager);\n\n var RESIZE_OBSERVER_AVAILABLE = options.ResizeObserver || window.ResizeObserver;\n\n // if `null` was passed, we want to disable the ResizeObserver\n if (options.ResizeObserver === null) {\n RESIZE_OBSERVER_AVAILABLE = false;\n }\n\n // Only create an element when ResizeObserver isn't available\n var options_ = mergeOptions({ createEl: !RESIZE_OBSERVER_AVAILABLE }, options);\n\n var _this = possibleConstructorReturn(this, _Component.call(this, player, options_));\n\n _this.ResizeObserver = options.ResizeObserver || window.ResizeObserver;\n _this.loadListener_ = null;\n _this.resizeObserver_ = null;\n _this.debouncedHandler_ = debounce(function () {\n _this.resizeHandler();\n }, 100, false, player);\n\n if (RESIZE_OBSERVER_AVAILABLE) {\n _this.resizeObserver_ = new _this.ResizeObserver(_this.debouncedHandler_);\n _this.resizeObserver_.observe(player.el());\n } else {\n _this.loadListener_ = function () {\n if (_this.el_.contentWindow) {\n on(_this.el_.contentWindow, 'resize', _this.debouncedHandler_);\n }\n _this.off('load', _this.loadListener_);\n };\n\n _this.on('load', _this.loadListener_);\n }\n return _this;\n }\n\n ResizeManager.prototype.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'iframe', {\n className: 'vjs-resize-manager'\n });\n };\n\n /**\n * Called when a resize is triggered on the iframe or a resize is observed via the ResizeObserver\n *\n * @fires Player#playerresize\n */\n\n\n ResizeManager.prototype.resizeHandler = function resizeHandler() {\n /**\n * Called when the player size has changed\n *\n * @event Player#playerresize\n * @type {EventTarget~Event}\n */\n this.player_.trigger('playerresize');\n };\n\n ResizeManager.prototype.dispose = function dispose() {\n if (this.resizeObserver_) {\n if (this.player_.el()) {\n this.resizeObserver_.unobserve(this.player_.el());\n }\n this.resizeObserver_.disconnect();\n }\n\n if (this.el_ && this.el_.contentWindow) {\n off(this.el_.contentWindow, 'resize', this.debouncedHandler_);\n }\n\n if (this.loadListener_) {\n this.off('load', this.loadListener_);\n }\n\n this.ResizeObserver = null;\n this.resizeObserver = null;\n this.debouncedHandler_ = null;\n this.loadListener_ = null;\n };\n\n return ResizeManager;\n}(Component);\n\nComponent.registerComponent('ResizeManager', ResizeManager);\n\n/**\n * This function is used to fire a sourceset when there is something\n * similar to `mediaEl.load()` being called. It will try to find the source via\n * the `src` attribute and then the `<source>` elements. It will then fire `sourceset`\n * with the source that was found or empty string if we cannot know. If it cannot\n * find a source then `sourceset` will not be fired.\n *\n * @param {Html5} tech\n * The tech object that sourceset was setup on\n *\n * @return {boolean}\n * returns false if the sourceset was not fired and true otherwise.\n */\nvar sourcesetLoad = function sourcesetLoad(tech) {\n var el = tech.el();\n\n // if `el.src` is set, that source will be loaded.\n if (el.hasAttribute('src')) {\n tech.triggerSourceset(el.src);\n return true;\n }\n\n /**\n * Since there isn't a src property on the media element, source elements will be used for\n * implementing the source selection algorithm. This happens asynchronously and\n * for most cases were there is more than one source we cannot tell what source will\n * be loaded, without re-implementing the source selection algorithm. At this time we are not\n * going to do that. There are three special cases that we do handle here though:\n *\n * 1. If there are no sources, do not fire `sourceset`.\n * 2. If there is only one `<source>` with a `src` property/attribute that is our `src`\n * 3. If there is more than one `<source>` but all of them have the same `src` url.\n * That will be our src.\n */\n var sources = tech.$$('source');\n var srcUrls = [];\n var src = '';\n\n // if there are no sources, do not fire sourceset\n if (!sources.length) {\n return false;\n }\n\n // only count valid/non-duplicate source elements\n for (var i = 0; i < sources.length; i++) {\n var url = sources[i].src;\n\n if (url && srcUrls.indexOf(url) === -1) {\n srcUrls.push(url);\n }\n }\n\n // there were no valid sources\n if (!srcUrls.length) {\n return false;\n }\n\n // there is only one valid source element url\n // use that\n if (srcUrls.length === 1) {\n src = srcUrls[0];\n }\n\n tech.triggerSourceset(src);\n return true;\n};\n\n/**\n * our implementation of an `innerHTML` descriptor for browsers\n * that do not have one.\n */\nvar innerHTMLDescriptorPolyfill = {};\n\nif (!IS_IE8) {\n innerHTMLDescriptorPolyfill = Object.defineProperty({}, 'innerHTML', {\n get: function get() {\n return this.cloneNode(true).innerHTML;\n },\n set: function set(v) {\n // make a dummy node to use innerHTML on\n var dummy = document.createElement(this.nodeName.toLowerCase());\n\n // set innerHTML to the value provided\n dummy.innerHTML = v;\n\n // make a document fragment to hold the nodes from dummy\n var docFrag = document.createDocumentFragment();\n\n // copy all of the nodes created by the innerHTML on dummy\n // to the document fragment\n while (dummy.childNodes.length) {\n docFrag.appendChild(dummy.childNodes[0]);\n }\n\n // remove content\n this.innerText = '';\n\n // now we add all of that html in one by appending the\n // document fragment. This is how innerHTML does it.\n window.Element.prototype.appendChild.call(this, docFrag);\n\n // then return the result that innerHTML's setter would\n return this.innerHTML;\n }\n });\n}\n/**\n * Get a property descriptor given a list of priorities and the\n * property to get.\n */\nvar getDescriptor = function getDescriptor(priority, prop) {\n var descriptor = {};\n\n for (var i = 0; i < priority.length; i++) {\n descriptor = Object.getOwnPropertyDescriptor(priority[i], prop);\n\n if (descriptor && descriptor.set && descriptor.get) {\n break;\n }\n }\n\n descriptor.enumerable = true;\n descriptor.configurable = true;\n\n return descriptor;\n};\n\nvar getInnerHTMLDescriptor = function getInnerHTMLDescriptor(tech) {\n return getDescriptor([tech.el(), window.HTMLMediaElement.prototype, window.Element.prototype, innerHTMLDescriptorPolyfill], 'innerHTML');\n};\n\n/**\n * Patches browser internal functions so that we can tell syncronously\n * if a `<source>` was appended to the media element. For some reason this\n * causes a `sourceset` if the the media element is ready and has no source.\n * This happens when:\n * - The page has just loaded and the media element does not have a source.\n * - The media element was emptied of all sources, then `load()` was called.\n *\n * It does this by patching the following functions/properties when they are supported:\n *\n * - `append()` - can be used to add a `<source>` element to the media element\n * - `appendChild()` - can be used to add a `<source>` element to the media element\n * - `insertAdjacentHTML()` - can be used to add a `<source>` element to the media element\n * - `innerHTML` - can be used to add a `<source>` element to the media element\n *\n * @param {Html5} tech\n * The tech object that sourceset is being setup on.\n */\nvar firstSourceWatch = function firstSourceWatch(tech) {\n var el = tech.el();\n\n // make sure firstSourceWatch isn't setup twice.\n if (el.resetSourceWatch_) {\n return;\n }\n\n var old = {};\n var innerDescriptor = getInnerHTMLDescriptor(tech);\n var appendWrapper = function appendWrapper(appendFn) {\n return function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var retval = appendFn.apply(el, args);\n\n sourcesetLoad(tech);\n\n return retval;\n };\n };\n\n ['append', 'appendChild', 'insertAdjacentHTML'].forEach(function (k) {\n if (!el[k]) {\n return;\n }\n\n // store the old function\n old[k] = el[k];\n\n // call the old function with a sourceset if a source\n // was loaded\n el[k] = appendWrapper(old[k]);\n });\n\n Object.defineProperty(el, 'innerHTML', mergeOptions(innerDescriptor, {\n set: appendWrapper(innerDescriptor.set)\n }));\n\n el.resetSourceWatch_ = function () {\n el.resetSourceWatch_ = null;\n Object.keys(old).forEach(function (k) {\n el[k] = old[k];\n });\n\n Object.defineProperty(el, 'innerHTML', innerDescriptor);\n };\n\n // on the first sourceset, we need to revert our changes\n tech.one('sourceset', el.resetSourceWatch_);\n};\n\n/**\n * our implementation of a `src` descriptor for browsers\n * that do not have one.\n */\n\nvar srcDescriptorPolyfill = {};\n\nif (!IS_IE8) {\n srcDescriptorPolyfill = Object.defineProperty({}, 'src', {\n get: function get() {\n if (this.hasAttribute('src')) {\n return getAbsoluteURL(window.Element.prototype.getAttribute.call(this, 'src'));\n }\n\n return '';\n },\n set: function set(v) {\n window.Element.prototype.setAttribute.call(this, 'src', v);\n\n return v;\n }\n });\n}\n\nvar getSrcDescriptor = function getSrcDescriptor(tech) {\n return getDescriptor([tech.el(), window.HTMLMediaElement.prototype, srcDescriptorPolyfill], 'src');\n};\n\n/**\n * setup `sourceset` handling on the `Html5` tech. This function\n * patches the following element properties/functions:\n *\n * - `src` - to determine when `src` is set\n * - `setAttribute()` - to determine when `src` is set\n * - `load()` - this re-triggers the source selection algorithm, and can\n * cause a sourceset.\n *\n * If there is no source when we are adding `sourceset` support or during a `load()`\n * we also patch the functions listed in `firstSourceWatch`.\n *\n * @param {Html5} tech\n * The tech to patch\n */\nvar setupSourceset = function setupSourceset(tech) {\n if (!tech.featuresSourceset) {\n return;\n }\n\n var el = tech.el();\n\n // make sure sourceset isn't setup twice.\n if (el.resetSourceset_) {\n return;\n }\n\n var srcDescriptor = getSrcDescriptor(tech);\n var oldSetAttribute = el.setAttribute;\n var oldLoad = el.load;\n\n Object.defineProperty(el, 'src', mergeOptions(srcDescriptor, {\n set: function set(v) {\n var retval = srcDescriptor.set.call(el, v);\n\n // we use the getter here to get the actual value set on src\n tech.triggerSourceset(el.src);\n\n return retval;\n }\n }));\n\n el.setAttribute = function (n, v) {\n var retval = oldSetAttribute.call(el, n, v);\n\n if (/src/i.test(n)) {\n tech.triggerSourceset(el.src);\n }\n\n return retval;\n };\n\n el.load = function () {\n var retval = oldLoad.call(el);\n\n // if load was called, but there was no source to fire\n // sourceset on. We have to watch for a source append\n // as that can trigger a `sourceset` when the media element\n // has no source\n if (!sourcesetLoad(tech)) {\n tech.triggerSourceset('');\n firstSourceWatch(tech);\n }\n\n return retval;\n };\n\n if (el.currentSrc) {\n tech.triggerSourceset(el.currentSrc);\n } else if (!sourcesetLoad(tech)) {\n firstSourceWatch(tech);\n }\n\n el.resetSourceset_ = function () {\n el.resetSourceset_ = null;\n el.load = oldLoad;\n el.setAttribute = oldSetAttribute;\n Object.defineProperty(el, 'src', srcDescriptor);\n if (el.resetSourceWatch_) {\n el.resetSourceWatch_();\n }\n };\n};\n\nvar _templateObject$2 = taggedTemplateLiteralLoose(['Text Tracks are being loaded from another origin but the crossorigin attribute isn\\'t used.\\n This may prevent text tracks from loading.'], ['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 * @file html5.js\n */\n/**\n * HTML5 Media Controller - Wrapper for HTML5 Media API\n *\n * @mixes Tech~SouceHandlerAdditions\n * @extends Tech\n */\n\nvar Html5 = function (_Tech) {\n inherits(Html5, _Tech);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Html5(options, ready) {\n classCallCheck(this, Html5);\n\n var _this = possibleConstructorReturn(this, _Tech.call(this, options, ready));\n\n var source = options.source;\n var 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 // setup sourceset after late sourceset/init\n if (options.enableSourceset) {\n _this.setupSourcesetHandling_();\n }\n\n if (_this.el_.hasChildNodes()) {\n\n var nodes = _this.el_.childNodes;\n var nodesLength = nodes.length;\n var removeNodes = [];\n\n while (nodesLength--) {\n var node = nodes[nodesLength];\n var 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 _this.textTracks().addTrack(node.track);\n if (!crossoriginTracks && !_this.el_.hasAttribute('crossorigin') && isCrossOrigin(node.src)) {\n crossoriginTracks = true;\n }\n }\n }\n }\n\n for (var i = 0; i < removeNodes.length; i++) {\n _this.el_.removeChild(removeNodes[i]);\n }\n }\n\n _this.proxyNativeTracks_();\n if (_this.featuresNativeTextTracks && crossoriginTracks) {\n log$1.warn(tsml(_templateObject$2));\n }\n\n // prevent iOS Safari from disabling metadata text tracks during native playback\n _this.restoreMetadataTracksInIOSNativePlayer_();\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 ((TOUCH_ENABLED || IS_IPHONE || IS_NATIVE_ANDROID) && options.nativeControlsForTouch === true) {\n _this.setControls(true);\n }\n\n // on iOS, we want to proxy `webkitbeginfullscreen` and `webkitendfullscreen`\n // into a `fullscreenchange` event\n _this.proxyWebkitFullscreen_();\n\n _this.triggerReady();\n return _this;\n }\n\n /**\n * Dispose of `HTML5` media element and remove all tracks.\n */\n\n\n Html5.prototype.dispose = function dispose() {\n if (this.el_ && this.el_.resetSourceset_) {\n this.el_.resetSourceset_();\n }\n Html5.disposeMediaElement(this.el_);\n this.options_ = null;\n\n // tech will handle clearing of the emulated track list\n _Tech.prototype.dispose.call(this);\n };\n\n /**\n * Modify the media element so that we can detect when\n * the source is changed. Fires `sourceset` just after the source has changed\n */\n\n\n Html5.prototype.setupSourcesetHandling_ = function setupSourcesetHandling_() {\n setupSourceset(this);\n };\n\n /**\n * When a captions track is enabled in the iOS Safari native player, all other\n * tracks are disabled (including metadata tracks), which nulls all of their\n * associated cue points. This will restore metadata tracks to their pre-fullscreen\n * state in those cases so that cue points are not needlessly lost.\n *\n * @private\n */\n\n\n Html5.prototype.restoreMetadataTracksInIOSNativePlayer_ = function restoreMetadataTracksInIOSNativePlayer_() {\n var textTracks = this.textTracks();\n var metadataTracksPreFullscreenState = void 0;\n\n // captures a snapshot of every metadata track's current state\n var takeMetadataTrackSnapshot = function takeMetadataTrackSnapshot() {\n metadataTracksPreFullscreenState = [];\n\n for (var i = 0; i < textTracks.length; i++) {\n var track = textTracks[i];\n\n if (track.kind === 'metadata') {\n metadataTracksPreFullscreenState.push({\n track: track,\n storedMode: track.mode\n });\n }\n }\n };\n\n // snapshot each metadata track's initial state, and update the snapshot\n // each time there is a track 'change' event\n takeMetadataTrackSnapshot();\n textTracks.addEventListener('change', takeMetadataTrackSnapshot);\n\n this.on('dispose', function () {\n return textTracks.removeEventListener('change', takeMetadataTrackSnapshot);\n });\n\n var restoreTrackMode = function restoreTrackMode() {\n for (var i = 0; i < metadataTracksPreFullscreenState.length; i++) {\n var storedTrack = metadataTracksPreFullscreenState[i];\n\n if (storedTrack.track.mode === 'disabled' && storedTrack.track.mode !== storedTrack.storedMode) {\n storedTrack.track.mode = storedTrack.storedMode;\n }\n }\n // we only want this handler to be executed on the first 'change' event\n textTracks.removeEventListener('change', restoreTrackMode);\n };\n\n // when we enter fullscreen playback, stop updating the snapshot and\n // restore all track modes to their pre-fullscreen state\n this.on('webkitbeginfullscreen', function () {\n textTracks.removeEventListener('change', takeMetadataTrackSnapshot);\n\n // remove the listener before adding it just in case it wasn't previously removed\n textTracks.removeEventListener('change', restoreTrackMode);\n textTracks.addEventListener('change', restoreTrackMode);\n });\n\n // start updating the snapshot again after leaving fullscreen\n this.on('webkitendfullscreen', function () {\n // remove the listener before adding it just in case it wasn't previously removed\n textTracks.removeEventListener('change', takeMetadataTrackSnapshot);\n textTracks.addEventListener('change', takeMetadataTrackSnapshot);\n\n // remove the restoreTrackMode handler in case it wasn't triggered during fullscreen playback\n textTracks.removeEventListener('change', restoreTrackMode);\n });\n };\n\n /**\n * Proxy all native track list events to our track lists if the browser we are playing\n * in supports that type of track list.\n *\n * @private\n */\n\n\n Html5.prototype.proxyNativeTracks_ = function proxyNativeTracks_() {\n var _this2 = this;\n\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n var elTracks = _this2.el()[props.getterName];\n var techTracks = _this2[props.getterName]();\n\n if (!_this2['featuresNative' + props.capitalName + 'Tracks'] || !elTracks || !elTracks.addEventListener) {\n return;\n }\n var listeners = {\n change: function change(e) {\n techTracks.trigger({\n type: 'change',\n target: techTracks,\n currentTarget: techTracks,\n srcElement: techTracks\n });\n },\n addtrack: function addtrack(e) {\n techTracks.addTrack(e.track);\n },\n removetrack: function removetrack(e) {\n techTracks.removeTrack(e.track);\n }\n };\n var removeOldTracks = function removeOldTracks() {\n var removeTracks = [];\n\n for (var i = 0; i < techTracks.length; i++) {\n var found = false;\n\n for (var j = 0; j < elTracks.length; j++) {\n if (elTracks[j] === techTracks[i]) {\n found = true;\n break;\n }\n }\n\n if (!found) {\n removeTracks.push(techTracks[i]);\n }\n }\n\n while (removeTracks.length) {\n techTracks.removeTrack(removeTracks.shift());\n }\n };\n\n Object.keys(listeners).forEach(function (eventName) {\n var listener = listeners[eventName];\n\n elTracks.addEventListener(eventName, listener);\n _this2.on('dispose', function (e) {\n return elTracks.removeEventListener(eventName, listener);\n });\n });\n\n // Remove (native) tracks that are not used anymore\n _this2.on('loadstart', removeOldTracks);\n _this2.on('dispose', function (e) {\n return _this2.off('loadstart', removeOldTracks);\n });\n });\n };\n\n /**\n * Create the `Html5` Tech's DOM element.\n *\n * @return {Element}\n * The element that gets created.\n */\n\n\n Html5.prototype.createEl = function createEl$$1() {\n var 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 we ingested the player div, we do not need to move the media element.\n if (!el || !(this.options_.playerElIngest || this.movingMediaElementInDOM)) {\n\n // If the original tag is still there, clone and remove it.\n if (el) {\n var clone = el.cloneNode(true);\n\n if (el.parentNode) {\n el.parentNode.insertBefore(clone, el);\n }\n Html5.disposeMediaElement(el);\n el = clone;\n } else {\n el = document.createElement('video');\n\n // determine if native controls should be used\n var tagAttributes = this.options_.tag && getAttributes(this.options_.tag);\n var attributes = mergeOptions({}, tagAttributes);\n\n if (!TOUCH_ENABLED || this.options_.nativeControlsForTouch !== true) {\n delete attributes.controls;\n }\n\n setAttributes(el, assign(attributes, {\n id: this.options_.techId,\n 'class': 'vjs-tech'\n }));\n }\n\n el.playerId = this.options_.playerId;\n }\n\n if (typeof this.options_.preload !== 'undefined') {\n setAttribute(el, 'preload', this.options_.preload);\n }\n\n // Update specific tag settings, in case they were overridden\n // `autoplay` has to be *last* so that `muted` and `playsinline` are present\n // when iOS/Safari or other browsers attempt to autoplay.\n var settingsAttrs = ['loop', 'muted', 'playsinline', 'autoplay'];\n\n for (var i = 0; i < settingsAttrs.length; i++) {\n var attr = settingsAttrs[i];\n var value = this.options_[attr];\n\n if (typeof value !== 'undefined') {\n if (value) {\n setAttribute(el, attr, attr);\n } else {\n removeAttribute(el, attr);\n }\n el[attr] = value;\n }\n }\n\n return el;\n };\n\n /**\n * This will be triggered if the loadstart event has already fired, before videojs was\n * ready. Two known examples of when this can happen are:\n * 1. If we're loading the playback object after it has started loading\n * 2. The media is already playing the (often with autoplay on) then\n *\n * This function will fire another loadstart so that videojs can catchup.\n *\n * @fires Tech#loadstart\n *\n * @return {undefined}\n * returns nothing.\n */\n\n\n Html5.prototype.handleLateInit_ = function 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 var loadstartFired = false;\n var setLoadstartFired = function setLoadstartFired() {\n loadstartFired = true;\n };\n\n this.on('loadstart', setLoadstartFired);\n\n var triggerLoadstart = function triggerLoadstart() {\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\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 var 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 /**\n * Set current time for the `HTML5` tech.\n *\n * @param {number} seconds\n * Set the current time of the media to this.\n */\n\n\n Html5.prototype.setCurrentTime = function setCurrentTime(seconds) {\n try {\n this.el_.currentTime = seconds;\n } catch (e) {\n log$1(e, 'Video is not ready. (Video.js)');\n // this.warning(VideoJS.warnings.videoNotReady);\n }\n };\n\n /**\n * Get the current duration of the HTML5 media element.\n *\n * @return {number}\n * The duration of the media or 0 if there is no duration.\n */\n\n\n Html5.prototype.duration = function duration() {\n var _this3 = this;\n\n // Android Chrome will report duration as Infinity for VOD HLS until after\n // playback has started, which triggers the live display erroneously.\n // Return NaN if playback has not started and trigger a durationupdate once\n // the duration can be reliably known.\n if (this.el_.duration === Infinity && IS_ANDROID && IS_CHROME && this.el_.currentTime === 0) {\n // Wait for the first `timeupdate` with currentTime > 0 - there may be\n // several with 0\n var checkProgress = function checkProgress() {\n if (_this3.el_.currentTime > 0) {\n // Trigger durationchange for genuinely live video\n if (_this3.el_.duration === Infinity) {\n _this3.trigger('durationchange');\n }\n _this3.off('timeupdate', checkProgress);\n }\n };\n\n this.on('timeupdate', checkProgress);\n return NaN;\n }\n return this.el_.duration || NaN;\n };\n\n /**\n * Get the current width of the HTML5 media element.\n *\n * @return {number}\n * The width of the HTML5 media element.\n */\n\n\n Html5.prototype.width = function width() {\n return this.el_.offsetWidth;\n };\n\n /**\n * Get the current height of the HTML5 media element.\n *\n * @return {number}\n * The heigth of the HTML5 media element.\n */\n\n\n Html5.prototype.height = function height() {\n return this.el_.offsetHeight;\n };\n\n /**\n * Proxy iOS `webkitbeginfullscreen` and `webkitendfullscreen` into\n * `fullscreenchange` event.\n *\n * @private\n * @fires fullscreenchange\n * @listens webkitendfullscreen\n * @listens webkitbeginfullscreen\n * @listens webkitbeginfullscreen\n */\n\n\n Html5.prototype.proxyWebkitFullscreen_ = function proxyWebkitFullscreen_() {\n var _this4 = this;\n\n if (!('webkitDisplayingFullscreen' in this.el_)) {\n return;\n }\n\n var endFn = function endFn() {\n this.trigger('fullscreenchange', { isFullscreen: false });\n };\n\n var beginFn = function beginFn() {\n if ('webkitPresentationMode' in this.el_ && this.el_.webkitPresentationMode !== 'picture-in-picture') {\n this.one('webkitendfullscreen', endFn);\n\n this.trigger('fullscreenchange', { isFullscreen: true });\n }\n };\n\n this.on('webkitbeginfullscreen', beginFn);\n this.on('dispose', function () {\n _this4.off('webkitbeginfullscreen', beginFn);\n _this4.off('webkitendfullscreen', endFn);\n });\n };\n\n /**\n * Check if fullscreen is supported on the current playback device.\n *\n * @return {boolean}\n * - True if fullscreen is supported.\n * - False if fullscreen is not supported.\n */\n\n\n Html5.prototype.supportsFullScreen = function supportsFullScreen() {\n if (typeof this.el_.webkitEnterFullScreen === 'function') {\n var userAgent = window.navigator && window.navigator.userAgent || '';\n\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 that the `HTML5` Tech enter fullscreen.\n */\n\n\n Html5.prototype.enterFullScreen = function enterFullScreen() {\n var video = this.el_;\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 that the `HTML5` Tech exit fullscreen.\n */\n\n\n Html5.prototype.exitFullScreen = function exitFullScreen() {\n this.el_.webkitExitFullScreen();\n };\n\n /**\n * A getter/setter for the `Html5` Tech's source object.\n * > Note: Please use {@link Html5#setSource}\n *\n * @param {Tech~SourceObject} [src]\n * The source object you want to set on the `HTML5` techs element.\n *\n * @return {Tech~SourceObject|undefined}\n * - The current source object when a source is not passed in.\n * - undefined when setting\n *\n * @deprecated Since version 5.\n */\n\n\n Html5.prototype.src = function src(_src) {\n if (_src === undefined) {\n return this.el_.src;\n }\n\n // Setting src through `src` instead of `setSrc` will be deprecated\n this.setSrc(_src);\n };\n\n /**\n * Reset the tech by removing all sources and then calling\n * {@link Html5.resetMediaElement}.\n */\n\n\n Html5.prototype.reset = function reset() {\n Html5.resetMediaElement(this.el_);\n };\n\n /**\n * Get the current source on the `HTML5` Tech. Falls back to returning the source from\n * the HTML5 media element.\n *\n * @return {Tech~SourceObject}\n * The current source object from the HTML5 tech. With a fallback to the\n * elements source.\n */\n\n\n Html5.prototype.currentSrc = function currentSrc() {\n if (this.currentSource_) {\n return this.currentSource_.src;\n }\n return this.el_.currentSrc;\n };\n\n /**\n * Set controls attribute for the HTML5 media Element.\n *\n * @param {string} val\n * Value to set the controls attribute to\n */\n\n\n Html5.prototype.setControls = function setControls(val) {\n this.el_.controls = !!val;\n };\n\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n\n\n Html5.prototype.addTextTrack = function addTextTrack(kind, label, language) {\n if (!this.featuresNativeTextTracks) {\n return _Tech.prototype.addTextTrack.call(this, kind, label, language);\n }\n\n return this.el_.addTextTrack(kind, label, language);\n };\n\n /**\n * Creates either native TextTrack or an emulated TextTrack depending\n * on the value of `featuresNativeTextTracks`\n *\n * @param {Object} options\n * The object should contain the options to intialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @param {boolean} [options.default]\n * Default this track to on.\n *\n * @param {string} [options.id]\n * The internal id to assign this track.\n *\n * @param {string} [options.src]\n * A source url for the track.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n\n\n Html5.prototype.createRemoteTextTrack = function createRemoteTextTrack(options) {\n if (!this.featuresNativeTextTracks) {\n return _Tech.prototype.createRemoteTextTrack.call(this, options);\n }\n var 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 return htmlTrackElement;\n };\n\n /**\n * Creates a remote text track object and returns an 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 * @param {Boolean} [manualCleanup=true] if set to false, the TextTrack will be\n * automatically removed from the video element whenever the source changes\n * @return {HTMLTrackElement} An Html Track Element.\n * This can be an emulated {@link HTMLTrackElement} or a native one.\n * @deprecated The default value of the \"manualCleanup\" parameter will default\n * to \"false\" in upcoming versions of Video.js\n */\n\n\n Html5.prototype.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n var htmlTrackElement = _Tech.prototype.addRemoteTextTrack.call(this, options, manualCleanup);\n\n if (this.featuresNativeTextTracks) {\n this.el().appendChild(htmlTrackElement);\n }\n\n return htmlTrackElement;\n };\n\n /**\n * Remove remote `TextTrack` from `TextTrackList` object\n *\n * @param {TextTrack} track\n * `TextTrack` object to remove\n */\n\n\n Html5.prototype.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n _Tech.prototype.removeRemoteTextTrack.call(this, track);\n\n if (this.featuresNativeTextTracks) {\n var tracks = this.$$('track');\n\n var i = tracks.length;\n\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 * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n */\n\n\n Html5.prototype.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n if (typeof this.el().getVideoPlaybackQuality === 'function') {\n return this.el().getVideoPlaybackQuality();\n }\n\n var videoPlaybackQuality = {};\n\n if (typeof this.el().webkitDroppedFrameCount !== 'undefined' && typeof this.el().webkitDecodedFrameCount !== 'undefined') {\n videoPlaybackQuality.droppedVideoFrames = this.el().webkitDroppedFrameCount;\n videoPlaybackQuality.totalVideoFrames = this.el().webkitDecodedFrameCount;\n }\n\n if (window.performance && typeof window.performance.now === 'function') {\n videoPlaybackQuality.creationTime = window.performance.now();\n } else if (window.performance && window.performance.timing && typeof window.performance.timing.navigationStart === 'number') {\n videoPlaybackQuality.creationTime = window.Date.now() - window.performance.timing.navigationStart;\n }\n\n return videoPlaybackQuality;\n };\n\n return Html5;\n}(Tech);\n\n/* HTML5 Support Testing ---------------------------------------------------- */\n\nif (isReal()) {\n\n /**\n * Element for testing browser HTML5 media capabilities\n *\n * @type {Element}\n * @constant\n * @private\n */\n Html5.TEST_VID = document.createElement('video');\n var track = document.createElement('track');\n\n track.kind = 'captions';\n track.srclang = 'en';\n track.label = 'English';\n Html5.TEST_VID.appendChild(track);\n}\n\n/**\n * Check if HTML5 media is supported by this browser/device.\n *\n * @return {boolean}\n * - True if HTML5 media is supported.\n * - False if HTML5 media is not supported.\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 && Html5.TEST_VID.canPlayType);\n};\n\n/**\n * Check if the tech can support the given type\n *\n * @param {string} type\n * The mimetype to check\n * @return {string} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.canPlayType = function (type) {\n return Html5.TEST_VID.canPlayType(type);\n};\n\n/**\n * Check if the tech can support the given source\n * @param {Object} srcObj\n * The source object\n * @param {Object} options\n * The options passed to the tech\n * @return {string} 'probably', 'maybe', or '' (empty string)\n */\nHtml5.canPlaySource = function (srcObj, options) {\n return Html5.canPlayType(srcObj.type);\n};\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 * - True if volume can be controlled\n * - False otherwise\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\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 the volume can be muted in this browser/device.\n * Some devices, e.g. iOS, don't allow changing volume\n * but permits muting/unmuting.\n *\n * @return {bolean}\n * - True if volume can be muted\n * - False otherwise\n */\nHtml5.canMuteVolume = function () {\n try {\n var muted = Html5.TEST_VID.muted;\n\n // in some versions of iOS muted property doesn't always\n // work, so we want to set both property and attribute\n Html5.TEST_VID.muted = !muted;\n if (Html5.TEST_VID.muted) {\n setAttribute(Html5.TEST_VID, 'muted', 'muted');\n } else {\n removeAttribute(Html5.TEST_VID, 'muted', 'muted');\n }\n return muted !== Html5.TEST_VID.muted;\n } catch (e) {\n return false;\n }\n};\n\n/**\n * Check if the playback rate can be changed in this browser/device.\n *\n * @return {boolean}\n * - True if playback rate can be controlled\n * - False otherwise\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 (IS_ANDROID && IS_CHROME && CHROME_VERSION < 58) {\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\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 if we can override a video/audio elements attributes, with\n * Object.defineProperty.\n *\n * @return {boolean}\n * - True if builtin attributes can be overriden\n * - False otherwise\n */\nHtml5.canOverrideAttributes = function () {\n if (IS_IE8) {\n return false;\n }\n // if we cannot overwrite the src/innerHTML property, there is no support\n // iOS 7 safari for instance cannot do this.\n try {\n var noop = function noop() {};\n\n Object.defineProperty(document.createElement('video'), 'src', { get: noop, set: noop });\n Object.defineProperty(document.createElement('audio'), 'src', { get: noop, set: noop });\n Object.defineProperty(document.createElement('video'), 'innerHTML', { get: noop, set: noop });\n Object.defineProperty(document.createElement('audio'), 'innerHTML', { get: noop, set: noop });\n } catch (e) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Check to see if native `TextTrack`s are supported by this browser/device.\n *\n * @return {boolean}\n * - True if native `TextTrack`s are supported.\n * - False otherwise\n */\nHtml5.supportsNativeTextTracks = function () {\n return IS_ANY_SAFARI || IS_IOS && IS_CHROME;\n};\n\n/**\n * Check to see if native `VideoTrack`s are supported by this browser/device\n *\n * @return {boolean}\n * - True if native `VideoTrack`s are supported.\n * - False otherwise\n */\nHtml5.supportsNativeVideoTracks = function () {\n return !!(Html5.TEST_VID && Html5.TEST_VID.videoTracks);\n};\n\n/**\n * Check to see if native `AudioTrack`s are supported by this browser/device\n *\n * @return {boolean}\n * - True if native `AudioTrack`s are supported.\n * - False otherwise\n */\nHtml5.supportsNativeAudioTracks = function () {\n return !!(Html5.TEST_VID && Html5.TEST_VID.audioTracks);\n};\n\n/**\n * An array of events available on the Html5 tech.\n *\n * @private\n * @type {Array}\n */\nHtml5.Events = ['loadstart', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'loadedmetadata', 'loadeddata', 'canplay', 'canplaythrough', 'playing', 'waiting', 'seeking', 'seeked', 'ended', 'durationchange', 'timeupdate', 'progress', 'play', 'pause', 'ratechange', 'resize', 'volumechange'];\n\n/**\n * Boolean indicating whether the `Tech` supports volume control.\n *\n * @type {boolean}\n * @default {@link Html5.canControlVolume}\n */\nHtml5.prototype.featuresVolumeControl = Html5.canControlVolume();\n\n/**\n * Boolean indicating whether the `Tech` supports muting volume.\n *\n * @type {bolean}\n * @default {@link Html5.canMuteVolume}\n */\nHtml5.prototype.featuresMuteControl = Html5.canMuteVolume();\n\n/**\n * Boolean indicating whether the `Tech` supports changing the speed at which the media\n * plays. Examples:\n * - Set player to play 2x (twice) as fast\n * - Set player to play 0.5x (half) as fast\n *\n * @type {boolean}\n * @default {@link Html5.canControlPlaybackRate}\n */\nHtml5.prototype.featuresPlaybackRate = Html5.canControlPlaybackRate();\n\n/**\n * Boolean indicating wether the `Tech` supports the `sourceset` event.\n *\n * @type {boolean}\n * @default\n */\nHtml5.prototype.featuresSourceset = Html5.canOverrideAttributes();\n\n/**\n * Boolean indicating whether the `HTML5` tech currently supports the media element\n * moving in the DOM. iOS breaks if you move the media element, so this is set this to\n * false there. Everywhere else this should be true.\n *\n * @type {boolean}\n * @default\n */\nHtml5.prototype.movingMediaElementInDOM = !IS_IOS;\n\n// TODO: Previous comment: No longer appears to be used. Can probably be removed.\n// Is this true?\n/**\n * Boolean indicating whether the `HTML5` tech currently supports automatic media resize\n * when going into fullscreen.\n *\n * @type {boolean}\n * @default\n */\nHtml5.prototype.featuresFullscreenResize = true;\n\n/**\n * Boolean indicating whether the `HTML5` tech currently supports the progress event.\n * If this is false, manual `progress` events will be triggred instead.\n *\n * @type {boolean}\n * @default\n */\nHtml5.prototype.featuresProgressEvents = true;\n\n/**\n * Boolean indicating whether the `HTML5` tech currently supports the timeupdate event.\n * If this is false, manual `timeupdate` events will be triggred instead.\n *\n * @default\n */\nHtml5.prototype.featuresTimeupdateEvents = true;\n\n/**\n * Boolean indicating whether the `HTML5` tech currently supports native `TextTrack`s.\n *\n * @type {boolean}\n * @default {@link Html5.supportsNativeTextTracks}\n */\nHtml5.prototype.featuresNativeTextTracks = Html5.supportsNativeTextTracks();\n\n/**\n * Boolean indicating whether the `HTML5` tech currently supports native `VideoTrack`s.\n *\n * @type {boolean}\n * @default {@link Html5.supportsNativeVideoTracks}\n */\nHtml5.prototype.featuresNativeVideoTracks = Html5.supportsNativeVideoTracks();\n\n/**\n * Boolean indicating whether the `HTML5` tech currently supports native `AudioTrack`s.\n *\n * @type {boolean}\n * @default {@link Html5.supportsNativeAudioTracks}\n */\nHtml5.prototype.featuresNativeAudioTracks = Html5.supportsNativeAudioTracks();\n\n// HTML5 Feature detection and Device Fixes --------------------------------- //\nvar canPlayType = Html5.TEST_VID && Html5.TEST_VID.constructor.prototype.canPlayType;\nvar mpegurlRE = /^application\\/(?:x-|vnd\\.apple\\.)mpegurl/i;\nvar mp4RE = /^video\\/mp4/i;\n\nHtml5.patchCanPlayType = function () {\n\n // Android 4.0 and above can play HLS to some extent but it reports being unable to do so\n // Firefox and Chrome report correctly\n if (ANDROID_VERSION >= 4.0 && !IS_FIREFOX && !IS_CHROME) {\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 // Override Android 2.2 and less canPlayType method which is broken\n } else if (IS_OLD_ANDROID) {\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\n Html5.TEST_VID.constructor.prototype.canPlayType = canPlayType;\n return r;\n};\n\n// by default, patch the media element\nHtml5.patchCanPlayType();\n\nHtml5.disposeMediaElement = function (el) {\n if (!el) {\n return;\n }\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) {\n return;\n }\n\n var sources = el.querySelectorAll('source');\n var i = sources.length;\n\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 // satisfy linter\n }\n })();\n }\n};\n\n/* Native HTML5 element property wrapping ----------------------------------- */\n// Wrap native boolean attributes with getters that check both property and attribute\n// The list is as followed:\n// muted, defaultMuted, autoplay, controls, loop, playsinline\n[\n/**\n * Get the value of `muted` from the media element. `muted` indicates\n * that the volume for the media should be set to silent. This does not actually change\n * the `volume` attribute.\n *\n * @method Html5#muted\n * @return {boolean}\n * - True if the value of `volume` should be ignored and the audio set to silent.\n * - False if the value of `volume` should be used.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-muted}\n */\n'muted',\n\n/**\n * Get the value of `defaultMuted` from the media element. `defaultMuted` indicates\n * whether the media should start muted or not. Only changes the default state of the\n * media. `muted` and `defaultMuted` can have different values. {@link Html5#muted} indicates the\n * current state.\n *\n * @method Html5#defaultMuted\n * @return {boolean}\n * - The value of `defaultMuted` from the media element.\n * - True indicates that the media should start muted.\n * - False indicates that the media should not start muted\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-defaultmuted}\n */\n'defaultMuted',\n\n/**\n * Get the value of `autoplay` from the media element. `autoplay` indicates\n * that the media should start to play as soon as the page is ready.\n *\n * @method Html5#autoplay\n * @return {boolean}\n * - The value of `autoplay` from the media element.\n * - True indicates that the media should start as soon as the page loads.\n * - False indicates that the media should not start as soon as the page loads.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-media-autoplay}\n */\n'autoplay',\n\n/**\n * Get the value of `controls` from the media element. `controls` indicates\n * whether the native media controls should be shown or hidden.\n *\n * @method Html5#controls\n * @return {boolean}\n * - The value of `controls` from the media element.\n * - True indicates that native controls should be showing.\n * - False indicates that native controls should be hidden.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-media-controls}\n */\n'controls',\n\n/**\n * Get the value of `loop` from the media element. `loop` indicates\n * that the media should return to the start of the media and continue playing once\n * it reaches the end.\n *\n * @method Html5#loop\n * @return {boolean}\n * - The value of `loop` from the media element.\n * - True indicates that playback should seek back to start once\n * the end of a media is reached.\n * - False indicates that playback should not loop back to the start when the\n * end of the media is reached.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-media-loop}\n */\n'loop',\n\n/**\n * Get the value of `playsinline` from the media element. `playsinline` indicates\n * to the browser that non-fullscreen playback is preferred when fullscreen\n * playback is the native default, such as in iOS Safari.\n *\n * @method Html5#playsinline\n * @return {boolean}\n * - The value of `playsinline` from the media element.\n * - True indicates that the media should play inline.\n * - False indicates that the media should not play inline.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/#attr-video-playsinline}\n */\n'playsinline'].forEach(function (prop) {\n Html5.prototype[prop] = function () {\n return this.el_[prop] || this.el_.hasAttribute(prop);\n };\n});\n\n// Wrap native boolean attributes with setters that set both property and attribute\n// The list is as followed:\n// setMuted, setDefaultMuted, setAutoplay, setLoop, setPlaysinline\n// setControls is special-cased above\n[\n/**\n * Set the value of `muted` on the media element. `muted` indicates that the current\n * audio level should be silent.\n *\n * @method Html5#setMuted\n * @param {boolean} muted\n * - True if the audio should be set to silent\n * - False otherwise\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-muted}\n */\n'muted',\n\n/**\n * Set the value of `defaultMuted` on the media element. `defaultMuted` indicates that the current\n * audio level should be silent, but will only effect the muted level on intial playback..\n *\n * @method Html5.prototype.setDefaultMuted\n * @param {boolean} defaultMuted\n * - True if the audio should be set to silent\n * - False otherwise\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-defaultmuted}\n */\n'defaultMuted',\n\n/**\n * Set the value of `autoplay` on the media element. `autoplay` indicates\n * that the media should start to play as soon as the page is ready.\n *\n * @method Html5#setAutoplay\n * @param {boolean} autoplay\n * - True indicates that the media should start as soon as the page loads.\n * - False indicates that the media should not start as soon as the page loads.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-media-autoplay}\n */\n'autoplay',\n\n/**\n * Set the value of `loop` on the media element. `loop` indicates\n * that the media should return to the start of the media and continue playing once\n * it reaches the end.\n *\n * @method Html5#setLoop\n * @param {boolean} loop\n * - True indicates that playback should seek back to start once\n * the end of a media is reached.\n * - False indicates that playback should not loop back to the start when the\n * end of the media is reached.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-media-loop}\n */\n'loop',\n\n/**\n * Set the value of `playsinline` from the media element. `playsinline` indicates\n * to the browser that non-fullscreen playback is preferred when fullscreen\n * playback is the native default, such as in iOS Safari.\n *\n * @method Html5#setPlaysinline\n * @param {boolean} playsinline\n * - True indicates that the media should play inline.\n * - False indicates that the media should not play inline.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/#attr-video-playsinline}\n */\n'playsinline'].forEach(function (prop) {\n Html5.prototype['set' + toTitleCase(prop)] = function (v) {\n this.el_[prop] = v;\n\n if (v) {\n this.el_.setAttribute(prop, prop);\n } else {\n this.el_.removeAttribute(prop);\n }\n };\n});\n\n// Wrap native properties with a getter\n// The list is as followed\n// paused, currentTime, buffered, volume, poster, preload, error, seeking\n// seekable, ended, playbackRate, defaultPlaybackRate, played, networkState\n// readyState, videoWidth, videoHeight\n[\n/**\n * Get the value of `paused` from the media element. `paused` indicates whether the media element\n * is currently paused or not.\n *\n * @method Html5#paused\n * @return {boolean}\n * The value of `paused` from the media element.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-paused}\n */\n'paused',\n\n/**\n * Get the value of `currentTime` from the media element. `currentTime` indicates\n * the current second that the media is at in playback.\n *\n * @method Html5#currentTime\n * @return {number}\n * The value of `currentTime` from the media element.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-currenttime}\n */\n'currentTime',\n\n/**\n * Get the value of `buffered` from the media element. `buffered` is a `TimeRange`\n * object that represents the parts of the media that are already downloaded and\n * available for playback.\n *\n * @method Html5#buffered\n * @return {TimeRange}\n * The value of `buffered` from the media element.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-buffered}\n */\n'buffered',\n\n/**\n * Get the value of `volume` from the media element. `volume` indicates\n * the current playback volume of audio for a media. `volume` will be a value from 0\n * (silent) to 1 (loudest and default).\n *\n * @method Html5#volume\n * @return {number}\n * The value of `volume` from the media element. Value will be between 0-1.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-a-volume}\n */\n'volume',\n\n/**\n * Get the value of `poster` from the media element. `poster` indicates\n * that the url of an image file that can/will be shown when no media data is available.\n *\n * @method Html5#poster\n * @return {string}\n * The value of `poster` from the media element. Value will be a url to an\n * image.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-video-poster}\n */\n'poster',\n\n/**\n * Get the value of `preload` from the media element. `preload` indicates\n * what should download before the media is interacted with. It can have the following\n * values:\n * - none: nothing should be downloaded\n * - metadata: poster and the first few frames of the media may be downloaded to get\n * media dimensions and other metadata\n * - auto: allow the media and metadata for the media to be downloaded before\n * interaction\n *\n * @method Html5#preload\n * @return {string}\n * The value of `preload` from the media element. Will be 'none', 'metadata',\n * or 'auto'.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-media-preload}\n */\n'preload',\n\n/**\n * Get the value of the `error` from the media element. `error` indicates any\n * MediaError that may have occured during playback. If error returns null there is no\n * current error.\n *\n * @method Html5#error\n * @return {MediaError|null}\n * The value of `error` from the media element. Will be `MediaError` if there\n * is a current error and null otherwise.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-error}\n */\n'error',\n\n/**\n * Get the value of `seeking` from the media element. `seeking` indicates whether the\n * media is currently seeking to a new position or not.\n *\n * @method Html5#seeking\n * @return {boolean}\n * - The value of `seeking` from the media element.\n * - True indicates that the media is currently seeking to a new position.\n * - Flase indicates that the media is not seeking to a new position at this time.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-seeking}\n */\n'seeking',\n\n/**\n * Get the value of `seekable` from the media element. `seekable` returns a\n * `TimeRange` object indicating ranges of time that can currently be `seeked` to.\n *\n * @method Html5#seekable\n * @return {TimeRange}\n * The value of `seekable` from the media element. A `TimeRange` object\n * indicating the current ranges of time that can be seeked to.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-seekable}\n */\n'seekable',\n\n/**\n * Get the value of `ended` from the media element. `ended` indicates whether\n * the media has reached the end or not.\n *\n * @method Html5#ended\n * @return {boolean}\n * - The value of `ended` from the media element.\n * - True indicates that the media has ended.\n * - False indicates that the media has not ended.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-ended}\n */\n'ended',\n\n/**\n * Get the value of `playbackRate` from the media element. `playbackRate` indicates\n * the rate at which the media is currently playing back. Examples:\n * - if playbackRate is set to 2, media will play twice as fast.\n * - if playbackRate is set to 0.5, media will play half as fast.\n *\n * @method Html5#playbackRate\n * @return {number}\n * The value of `playbackRate` from the media element. A number indicating\n * the current playback speed of the media, where 1 is normal speed.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-playbackrate}\n */\n'playbackRate',\n\n/**\n * Get the value of `defaultPlaybackRate` from the media element. `defaultPlaybackRate` indicates\n * the rate at which the media is currently playing back. This value will not indicate the current\n * `playbackRate` after playback has started, use {@link Html5#playbackRate} for that.\n *\n * Examples:\n * - if defaultPlaybackRate is set to 2, media will play twice as fast.\n * - if defaultPlaybackRate is set to 0.5, media will play half as fast.\n *\n * @method Html5.prototype.defaultPlaybackRate\n * @return {number}\n * The value of `defaultPlaybackRate` from the media element. A number indicating\n * the current playback speed of the media, where 1 is normal speed.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-playbackrate}\n */\n'defaultPlaybackRate',\n\n/**\n * Get the value of `played` from the media element. `played` returns a `TimeRange`\n * object representing points in the media timeline that have been played.\n *\n * @method Html5#played\n * @return {TimeRange}\n * The value of `played` from the media element. A `TimeRange` object indicating\n * the ranges of time that have been played.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-played}\n */\n'played',\n\n/**\n * Get the value of `networkState` from the media element. `networkState` indicates\n * the current network state. It returns an enumeration from the following list:\n * - 0: NETWORK_EMPTY\n * - 1: NEWORK_IDLE\n * - 2: NETWORK_LOADING\n * - 3: NETWORK_NO_SOURCE\n *\n * @method Html5#networkState\n * @return {number}\n * The value of `networkState` from the media element. This will be a number\n * from the list in the description.\n *\n * @see [Spec] {@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-networkstate}\n */\n'networkState',\n\n/**\n * Get the value of `readyState` from the media element. `readyState` indicates\n * the current state of the media element. It returns an enumeration from the\n * following list:\n * - 0: HAVE_NOTHING\n * - 1: HAVE_METADATA\n * - 2: HAVE_CURRENT_DATA\n * - 3: HAVE_FUTURE_DATA\n * - 4: HAVE_ENOUGH_DATA\n *\n * @method Html5#readyState\n * @return {number}\n * The value of `readyState` from the media element. This will be a number\n * from the list in the description.\n *\n * @see [Spec] {@link https://www.w3.org/TR/html5/embedded-content-0.html#ready-states}\n */\n'readyState',\n\n/**\n * Get the value of `videoWidth` from the video element. `videoWidth` indicates\n * the current width of the video in css pixels.\n *\n * @method Html5#videoWidth\n * @return {number}\n * The value of `videoWidth` from the video element. This will be a number\n * in css pixels.\n *\n * @see [Spec] {@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth}\n */\n'videoWidth',\n\n/**\n * Get the value of `videoHeight` from the video element. `videoHeigth` indicates\n * the current height of the video in css pixels.\n *\n * @method Html5#videoHeight\n * @return {number}\n * The value of `videoHeight` from the video element. This will be a number\n * in css pixels.\n *\n * @see [Spec] {@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-video-videowidth}\n */\n'videoHeight'].forEach(function (prop) {\n Html5.prototype[prop] = function () {\n return this.el_[prop];\n };\n});\n\n// Wrap native properties with a setter in this format:\n// set + toTitleCase(name)\n// The list is as follows:\n// setVolume, setSrc, setPoster, setPreload, setPlaybackRate, setDefaultPlaybackRate\n[\n/**\n * Set the value of `volume` on the media element. `volume` indicates the current\n * audio level as a percentage in decimal form. This means that 1 is 100%, 0.5 is 50%, and\n * so on.\n *\n * @method Html5#setVolume\n * @param {number} percentAsDecimal\n * The volume percent as a decimal. Valid range is from 0-1.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-a-volume}\n */\n'volume',\n\n/**\n * Set the value of `src` on the media element. `src` indicates the current\n * {@link Tech~SourceObject} for the media.\n *\n * @method Html5#setSrc\n * @param {Tech~SourceObject} src\n * The source object to set as the current source.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-src}\n */\n'src',\n\n/**\n * Set the value of `poster` on the media element. `poster` is the url to\n * an image file that can/will be shown when no media data is available.\n *\n * @method Html5#setPoster\n * @param {string} poster\n * The url to an image that should be used as the `poster` for the media\n * element.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-media-poster}\n */\n'poster',\n\n/**\n * Set the value of `preload` on the media element. `preload` indicates\n * what should download before the media is interacted with. It can have the following\n * values:\n * - none: nothing should be downloaded\n * - metadata: poster and the first few frames of the media may be downloaded to get\n * media dimensions and other metadata\n * - auto: allow the media and metadata for the media to be downloaded before\n * interaction\n *\n * @method Html5#setPreload\n * @param {string} preload\n * The value of `preload` to set on the media element. Must be 'none', 'metadata',\n * or 'auto'.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#attr-media-preload}\n */\n'preload',\n\n/**\n * Set the value of `playbackRate` on the media element. `playbackRate` indicates\n * the rate at which the media should play back. Examples:\n * - if playbackRate is set to 2, media will play twice as fast.\n * - if playbackRate is set to 0.5, media will play half as fast.\n *\n * @method Html5#setPlaybackRate\n * @return {number}\n * The value of `playbackRate` from the media element. A number indicating\n * the current playback speed of the media, where 1 is normal speed.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-playbackrate}\n */\n'playbackRate',\n\n/**\n * Set the value of `defaultPlaybackRate` on the media element. `defaultPlaybackRate` indicates\n * the rate at which the media should play back upon initial startup. Changing this value\n * after a video has started will do nothing. Instead you should used {@link Html5#setPlaybackRate}.\n *\n * Example Values:\n * - if playbackRate is set to 2, media will play twice as fast.\n * - if playbackRate is set to 0.5, media will play half as fast.\n *\n * @method Html5.prototype.setDefaultPlaybackRate\n * @return {number}\n * The value of `defaultPlaybackRate` from the media element. A number indicating\n * the current playback speed of the media, where 1 is normal speed.\n *\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-defaultplaybackrate}\n */\n'defaultPlaybackRate'].forEach(function (prop) {\n Html5.prototype['set' + toTitleCase(prop)] = function (v) {\n this.el_[prop] = v;\n };\n});\n\n// wrap native functions with a function\n// The list is as follows:\n// pause, load play\n[\n/**\n * A wrapper around the media elements `pause` function. This will call the `HTML5`\n * media elements `pause` function.\n *\n * @method Html5#pause\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-pause}\n */\n'pause',\n\n/**\n * A wrapper around the media elements `load` function. This will call the `HTML5`s\n * media element `load` function.\n *\n * @method Html5#load\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-load}\n */\n'load',\n\n/**\n * A wrapper around the media elements `play` function. This will call the `HTML5`s\n * media element `play` function.\n *\n * @method Html5#play\n * @see [Spec]{@link https://www.w3.org/TR/html5/embedded-content-0.html#dom-media-play}\n */\n'play'].forEach(function (prop) {\n Html5.prototype[prop] = function () {\n return this.el_[prop]();\n };\n});\n\nTech.withSourceHandlers(Html5);\n\n/**\n * Native source handler for Html5, simply passes the source to the media element.\n *\n * @proprety {Tech~SourceObject} source\n * The source object\n *\n * @proprety {Html5} tech\n * The instance of the HTML5 tech.\n */\nHtml5.nativeSourceHandler = {};\n\n/**\n * Check if the media element can play the given mime type.\n *\n * @param {string} type\n * The mimetype to check\n *\n * @return {string}\n * '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 media element can handle a source natively.\n *\n * @param {Tech~SourceObject} source\n * The source object\n *\n * @param {Object} [options]\n * Options to be passed to the tech.\n *\n * @return {string}\n * 'probably', 'maybe', or '' (empty string).\n */\nHtml5.nativeSourceHandler.canHandleSource = function (source, options) {\n\n // If a type was provided we should rely on that\n if (source.type) {\n return Html5.nativeSourceHandler.canPlayType(source.type);\n\n // If no type, fall back to checking 'video/[EXTENSION]'\n } else if (source.src) {\n var ext = getFileExtension(source.src);\n\n return Html5.nativeSourceHandler.canPlayType('video/' + ext);\n }\n\n return '';\n};\n\n/**\n * Pass the source to the native media element.\n *\n * @param {Tech~SourceObject} source\n * The source object\n *\n * @param {Html5} tech\n * The instance of the Html5 tech\n *\n * @param {Object} [options]\n * The options to pass to the source\n */\nHtml5.nativeSourceHandler.handleSource = function (source, tech, options) {\n tech.setSrc(source.src);\n};\n\n/**\n * A noop for the native dispose function, as cleanup is not needed.\n */\nHtml5.nativeSourceHandler.dispose = function () {};\n\n// Register the native source handler\nHtml5.registerSourceHandler(Html5.nativeSourceHandler);\n\nTech.registerTech('Html5', Html5);\n\nvar _templateObject$1 = taggedTemplateLiteralLoose(['\\n Using the tech directly can be dangerous. I hope you know what you\\'re doing.\\n See https://github.com/videojs/video.js/issues/2617 for more info.\\n '], ['\\n Using the tech directly can be dangerous. I hope you know what you\\'re doing.\\n See https://github.com/videojs/video.js/issues/2617 for more info.\\n ']);\n\n/**\n * @file player.js\n */\n// Subclasses Component\n// The following imports are used only to ensure that the corresponding modules\n// are always included in the video.js package. Importing the modules will\n// execute them and they will register themselves with video.js.\n// Import Html5 tech, at least for disposing the original video tag.\n// The following tech events are simply re-triggered\n// on the player when they happen\nvar TECH_EVENTS_RETRIGGER = [\n/**\n * Fired while the user agent is downloading media data.\n *\n * @event Player#progress\n * @type {EventTarget~Event}\n */\n/**\n * Retrigger the `progress` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechProgress_\n * @fires Player#progress\n * @listens Tech#progress\n */\n'progress',\n\n/**\n * Fires when the loading of an audio/video is aborted.\n *\n * @event Player#abort\n * @type {EventTarget~Event}\n */\n/**\n * Retrigger the `abort` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechAbort_\n * @fires Player#abort\n * @listens Tech#abort\n */\n'abort',\n\n/**\n * Fires when the browser is intentionally not getting media data.\n *\n * @event Player#suspend\n * @type {EventTarget~Event}\n */\n/**\n * Retrigger the `suspend` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechSuspend_\n * @fires Player#suspend\n * @listens Tech#suspend\n */\n'suspend',\n\n/**\n * Fires when the current playlist is empty.\n *\n * @event Player#emptied\n * @type {EventTarget~Event}\n */\n/**\n * Retrigger the `emptied` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechEmptied_\n * @fires Player#emptied\n * @listens Tech#emptied\n */\n'emptied',\n/**\n * Fires when the browser is trying to get media data, but data is not available.\n *\n * @event Player#stalled\n * @type {EventTarget~Event}\n */\n/**\n * Retrigger the `stalled` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechStalled_\n * @fires Player#stalled\n * @listens Tech#stalled\n */\n'stalled',\n\n/**\n * Fires when the browser has loaded meta data for the audio/video.\n *\n * @event Player#loadedmetadata\n * @type {EventTarget~Event}\n */\n/**\n * Retrigger the `stalled` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechLoadedmetadata_\n * @fires Player#loadedmetadata\n * @listens Tech#loadedmetadata\n */\n'loadedmetadata',\n\n/**\n * Fires when the browser has loaded the current frame of the audio/video.\n *\n * @event Player#loadeddata\n * @type {event}\n */\n/**\n * Retrigger the `loadeddata` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechLoaddeddata_\n * @fires Player#loadeddata\n * @listens Tech#loadeddata\n */\n'loadeddata',\n\n/**\n * Fires when the current playback position has changed.\n *\n * @event Player#timeupdate\n * @type {event}\n */\n/**\n * Retrigger the `timeupdate` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechTimeUpdate_\n * @fires Player#timeupdate\n * @listens Tech#timeupdate\n */\n'timeupdate',\n\n/**\n * Fires when the video's intrinsic dimensions change\n *\n * @event Player#resize\n * @type {event}\n */\n/**\n * Retrigger the `resize` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechResize_\n * @fires Player#resize\n * @listens Tech#resize\n */\n'resize',\n\n/**\n * Fires when the volume has been changed\n *\n * @event Player#volumechange\n * @type {event}\n */\n/**\n * Retrigger the `volumechange` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechVolumechange_\n * @fires Player#volumechange\n * @listens Tech#volumechange\n */\n'volumechange',\n\n/**\n * Fires when the text track has been changed\n *\n * @event Player#texttrackchange\n * @type {event}\n */\n/**\n * Retrigger the `texttrackchange` event that was triggered by the {@link Tech}.\n *\n * @private\n * @method Player#handleTechTexttrackchange_\n * @fires Player#texttrackchange\n * @listens Tech#texttrackchange\n */\n'texttrackchange'];\n\n// events to queue when playback rate is zero\n// this is a hash for the sole purpose of mapping non-camel-cased event names\n// to camel-cased function names\nvar TECH_EVENTS_QUEUE = {\n canplay: 'CanPlay',\n canplaythrough: 'CanPlayThrough',\n playing: 'Playing',\n seeked: 'Seeked'\n};\n\n/**\n * An instance of the `Player` class is created when any of the Video.js setup methods\n * are used to initialize a video.\n *\n * After an instance has been created it can be accessed globally in two ways:\n * 1. By calling `videojs('example_video_1');`\n * 2. By using it directly via `videojs.players.example_video_1;`\n *\n * @extends Component\n */\n\nvar Player = function (_Component) {\n inherits(Player, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Element} tag\n * The original video DOM element used for configuring options.\n *\n * @param {Object} [options]\n * Object of option names and values.\n *\n * @param {Component~ReadyCallback} [ready]\n * Ready callback function.\n */\n function Player(tag, options, ready) {\n classCallCheck(this, Player);\n\n // Make sure tag ID exists\n tag.id = tag.id || options.id || 'vjs_video_' + 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 // don't auto mixin the evented mixin\n options.evented = 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 // If language is not set, get the closest lang attribute\n if (!options.language) {\n if (typeof tag.closest === 'function') {\n var closest = tag.closest('[lang]');\n\n if (closest && closest.getAttribute) {\n options.language = closest.getAttribute('lang');\n }\n } else {\n var element = tag;\n\n while (element && element.nodeType === 1) {\n if (getAttributes(element).hasOwnProperty('lang')) {\n options.language = element.getAttribute('lang');\n break;\n }\n element = element.parentNode;\n }\n }\n }\n\n // Run base component initializing with new options\n\n // Tracks when a tech changes the poster\n var _this = possibleConstructorReturn(this, _Component.call(this, null, options, ready));\n\n _this.isPosterFromTech_ = false;\n\n // Holds callback info that gets queued when playback rate is zero\n // and a seek is happening\n _this.queuedCallbacks_ = [];\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n _this.isReady_ = false;\n\n // Init state hasStarted_\n _this.hasStarted_ = false;\n\n // Init state userActive_\n _this.userActive_ = false;\n\n // if the global option object was accidentally blown away by\n // someone, bail early with an informative error\n if (!_this.options_ || !_this.options_.techOrder || !_this.options_.techOrder.length) {\n throw new Error('No techOrder specified. Did you overwrite ' + 'videojs.options instead of just changing the ' + 'properties you want to override?');\n }\n\n // Store the original tag used to set options\n _this.tag = tag;\n\n // Store the tag attributes used to restore html5 element\n _this.tagAttributes = tag && getAttributes(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 var languagesToLower = {};\n\n Object.getOwnPropertyNames(options.languages).forEach(function (name$$1) {\n languagesToLower[name$$1.toLowerCase()] = options.languages[name$$1];\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 // Set default values for lastVolume\n _this.cache_.lastVolume = 1;\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 tag.removeAttribute('controls');\n\n // the attribute overrides the option\n if (tag.hasAttribute('autoplay')) {\n _this.options_.autoplay = true;\n } else {\n // otherwise use the setter to validate and\n // set the correct value.\n _this.autoplay(_this.options_.autoplay);\n }\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 // Set default value for lastPlaybackRate\n _this.cache_.lastPlaybackRate = _this.defaultPlaybackRate();\n\n // Make this an evented object and use `el_` as its event bus.\n evented(_this, { eventBusKey: 'el_' });\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 var playerOptionsCopy = mergeOptions(_this.options_);\n\n // Load plugins\n if (options.plugins) {\n var plugins = options.plugins;\n\n Object.keys(plugins).forEach(function (name$$1) {\n if (typeof this[name$$1] === 'function') {\n this[name$$1](plugins[name$$1]);\n } else {\n throw new Error('plugin \"' + name$$1 + '\" does not exist');\n }\n }, _this);\n }\n\n _this.options_.playerOptions = playerOptionsCopy;\n\n _this.middleware_ = [];\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', _this.localize('Audio Player'));\n } else {\n _this.el_.setAttribute('aria-label', _this.localize('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 (!IS_IOS) {\n _this.addClass('vjs-workinghover');\n }\n\n // Make player easily findable by ID\n Player.players[_this.id_] = _this;\n\n // Add a major version class to aid css in plugins\n var majorVersion = version.split('.')[0];\n\n _this.addClass('vjs-v' + majorVersion);\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\n _this.one('play', _this.listenForUserActivity_);\n _this.on('fullscreenchange', _this.handleFullscreenChange_);\n _this.on('stageclick', _this.handleStageClick_);\n\n _this.changingSrc_ = false;\n _this.playWaitingForReady_ = false;\n _this.playOnLoadstart_ = null;\n return _this;\n }\n\n /**\n * Destroys the video player and does any necessary cleanup.\n *\n * This is especially helpful if you are dynamically adding and removing videos\n * to/from the DOM.\n *\n * @fires Player#dispose\n */\n\n\n Player.prototype.dispose = function dispose() {\n /**\n * Called when the player is being disposed of.\n *\n * @event Player#dispose\n * @type {EventTarget~Event}\n */\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 this.styleEl_ = null;\n }\n\n // Kill reference to this player\n Player.players[this.id_] = null;\n\n if (this.tag && this.tag.player) {\n this.tag.player = null;\n }\n\n if (this.el_ && this.el_.player) {\n this.el_.player = null;\n }\n\n if (this.tech_) {\n this.tech_.dispose();\n this.isPosterFromTech_ = false;\n this.poster_ = '';\n }\n\n if (this.playerElIngest_) {\n this.playerElIngest_ = null;\n }\n\n if (this.tag) {\n this.tag = null;\n }\n\n clearCacheForPlayer(this);\n\n // the actual .el_ is removed here\n _Component.prototype.dispose.call(this);\n };\n\n /**\n * Create the `Player`'s DOM element.\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n Player.prototype.createEl = function createEl$$1() {\n var tag = this.tag;\n var el = void 0;\n var playerElIngest = this.playerElIngest_ = tag.parentNode && tag.parentNode.hasAttribute && tag.parentNode.hasAttribute('data-vjs-player');\n var divEmbed = this.tag.tagName.toLowerCase() === 'video-js';\n\n if (playerElIngest) {\n el = this.el_ = tag.parentNode;\n } else if (!divEmbed) {\n el = this.el_ = _Component.prototype.createEl.call(this, 'div');\n }\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 var attrs = getAttributes(tag);\n\n if (divEmbed) {\n el = this.el_ = tag;\n tag = this.tag = document.createElement('video');\n while (el.children.length) {\n tag.appendChild(el.firstChild);\n }\n\n if (!hasClass(el, 'video-js')) {\n addClass(el, 'video-js');\n }\n\n el.appendChild(tag);\n\n playerElIngest = this.playerElIngest_ = el;\n\n // copy over properties from the video-js element\n // ie8 doesn't support Object.keys nor hasOwnProperty\n // on dom elements so we have to specify properties individually\n ['autoplay', 'controls', 'crossOrigin', 'defaultMuted', 'defaultPlaybackRate', 'loop', 'muted', 'playbackRate', 'src', 'volume'].forEach(function (prop) {\n if (typeof el[prop] !== 'undefined') {\n tag[prop] = el[prop];\n }\n });\n }\n\n // set tabindex to -1 to remove the video element from the focus order\n tag.setAttribute('tabindex', '-1');\n // Workaround for #4583 (JAWS+IE doesn't announce BPB or play button)\n // See https://github.com/FreedomScientific/VFO-standards-support/issues/78\n // Note that we can't detect if JAWS is being used, but this ARIA attribute\n // doesn't change behavior of IE11 if JAWS is not being used\n if (IE_VERSION) {\n tag.setAttribute('role', 'application');\n }\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 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\n if (divEmbed) {\n tag.className += ' ' + attrs[attr];\n }\n } else {\n el.setAttribute(attr, attrs[attr]);\n\n if (divEmbed) {\n tag.setAttribute(attr, attrs[attr]);\n }\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_ = createStyleElement('vjs-styles-dimensions');\n var defaultsStyleEl = $('.vjs-styles-defaults');\n var head = $('head');\n\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 var links = tag.getElementsByTagName('a');\n\n for (var i = 0; i < links.length; i++) {\n var linkEl = links.item(i);\n\n addClass(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 && !playerElIngest) {\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 //\n // Breaks iPhone, fixed in HTML5 setup.\n prependTo(tag, el);\n this.children_.unshift(tag);\n\n // Set lang attr on player to ensure CSS :lang() in consistent with player\n // if it's been set to something different to the doc\n this.el_.setAttribute('lang', this.language_);\n\n this.el_ = el;\n\n return el;\n };\n\n /**\n * A getter/setter for the `Player`'s width. Returns the player's configured value.\n * To get the current width use `currentWidth()`.\n *\n * @param {number} [value]\n * The value to set the `Player`'s width to.\n *\n * @return {number}\n * The current width of the `Player` when getting.\n */\n\n\n Player.prototype.width = function width(value) {\n return this.dimension('width', value);\n };\n\n /**\n * A getter/setter for the `Player`'s height. Returns the player's configured value.\n * To get the current height use `currentheight()`.\n *\n * @param {number} [value]\n * The value to set the `Player`'s heigth to.\n *\n * @return {number}\n * The current height of the `Player` when getting.\n */\n\n\n Player.prototype.height = function height(value) {\n return this.dimension('height', value);\n };\n\n /**\n * A getter/setter for the `Player`'s width & height.\n *\n * @param {string} dimension\n * This string can be:\n * - 'width'\n * - 'height'\n *\n * @param {number} [value]\n * Value for dimension specified in the first argument.\n *\n * @return {number}\n * The dimension arguments value when getting (width/height).\n */\n\n\n Player.prototype.dimension = function dimension(_dimension, value) {\n var 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 this.updateStyleEl_();\n return;\n }\n\n var parsedVal = parseFloat(value);\n\n if (isNaN(parsedVal)) {\n log$1.error('Improper value \"' + value + '\" supplied for for ' + _dimension);\n return;\n }\n\n this[privDimension] = parsedVal;\n this.updateStyleEl_();\n };\n\n /**\n * A getter/setter/toggler for the vjs-fluid `className` on the `Player`.\n *\n * @param {boolean} [bool]\n * - A value of true adds the class.\n * - A value of false removes the class.\n * - No value will toggle the fluid class.\n *\n * @return {boolean|undefined}\n * - The value of fluid when getting.\n * - `undefined` when setting.\n */\n\n\n Player.prototype.fluid = function 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 this.updateStyleEl_();\n };\n\n /**\n * Get/Set the aspect ratio\n *\n * @param {string} [ratio]\n * Aspect ratio for player\n *\n * @return {string|undefined}\n * returns the current aspect ratio when getting\n */\n\n /**\n * A getter/setter for the `Player`'s aspect ratio.\n *\n * @param {string} [ratio]\n * The value to set the `Player's aspect ratio to.\n *\n * @return {string|undefined}\n * - The current aspect ratio of the `Player` when getting.\n * - undefined when setting\n */\n\n\n Player.prototype.aspectRatio = function 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 * @private\n * @listens Tech#loadedmetadata\n */\n\n\n Player.prototype.updateStyleEl_ = function updateStyleEl_() {\n if (window.VIDEOJS_NO_DYNAMIC_STYLE === true) {\n var _width = typeof this.width_ === 'number' ? this.width_ : this.options_.width;\n var _height = typeof this.height_ === 'number' ? this.height_ : this.options_.height;\n var 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 var width = void 0;\n var height = void 0;\n var aspectRatio = void 0;\n var idClass = void 0;\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() > 0) {\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 var ratioParts = aspectRatio.split(':');\n var 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 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/Create an instance of playback {@link Tech} including element\n * and API methods. Then append the `Tech` element in `Player` as a child.\n *\n * @param {string} techName\n * name of the playback technology\n *\n * @param {string} source\n * video source\n *\n * @private\n */\n\n\n Player.prototype.loadTech_ = function loadTech_(techName, source) {\n var _this2 = this;\n\n // Pause and remove current playback technology\n if (this.tech_) {\n this.unloadTech_();\n }\n\n var titleTechName = toTitleCase(techName);\n var camelTechName = techName.charAt(0).toLowerCase() + techName.slice(1);\n\n // get rid of the HTML5 video tag as soon as we are using another tech\n if (titleTechName !== 'Html5' && this.tag) {\n Tech.getTech('Html5').disposeMediaElement(this.tag);\n this.tag.player = null;\n this.tag = null;\n }\n\n this.techName_ = titleTechName;\n\n // Turn off API access because we're loading a new tech that might load asynchronously\n this.isReady_ = false;\n\n // if autoplay is a string we pass false to the tech\n // because the player is going to handle autoplay on `loadstart`\n var autoplay = typeof this.autoplay() === 'string' ? false : this.autoplay();\n\n // Grab tech-specific options from player options and add source and parent element to use.\n var techOptions = {\n source: source,\n autoplay: autoplay,\n 'nativeControlsForTouch': this.options_.nativeControlsForTouch,\n 'playerId': this.id(),\n 'techId': this.id() + '_' + titleTechName + '_api',\n 'playsinline': this.options_.playsinline,\n 'preload': this.options_.preload,\n 'loop': this.options_.loop,\n 'muted': this.options_.muted,\n 'poster': this.poster(),\n 'language': this.language(),\n 'playerElIngest': this.playerElIngest_ || false,\n 'vtt.js': this.options_['vtt.js'],\n 'canOverridePoster': !!this.options_.techCanOverridePoster,\n 'enableSourceset': this.options_.enableSourceset\n };\n\n ALL.names.forEach(function (name$$1) {\n var props = ALL[name$$1];\n\n techOptions[props.getterName] = _this2[props.privateName];\n });\n\n assign(techOptions, this.options_[titleTechName]);\n assign(techOptions, this.options_[camelTechName]);\n assign(techOptions, this.options_[techName.toLowerCase()]);\n\n if (this.tag) {\n techOptions.tag = this.tag;\n }\n\n if (source && source.src === this.cache_.src && this.cache_.currentTime > 0) {\n techOptions.startTime = this.cache_.currentTime;\n }\n\n // Initialize tech instance\n var TechClass = Tech.getTech(techName);\n\n if (!TechClass) {\n throw new Error('No Tech named \\'' + titleTechName + '\\' exists! \\'' + titleTechName + '\\' should be registered using videojs.registerTech()\\'');\n }\n\n this.tech_ = new TechClass(techOptions);\n\n // player.triggerReady is always async, so don't need this to be async\n this.tech_.ready(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 TECH_EVENTS_RETRIGGER.forEach(function (event) {\n _this2.on(_this2.tech_, event, _this2['handleTech' + toTitleCase(event) + '_']);\n });\n\n Object.keys(TECH_EVENTS_QUEUE).forEach(function (event) {\n _this2.on(_this2.tech_, event, function (eventObj) {\n if (_this2.tech_.playbackRate() === 0 && _this2.tech_.seeking()) {\n _this2.queuedCallbacks_.push({\n callback: _this2['handleTech' + TECH_EVENTS_QUEUE[event] + '_'].bind(_this2),\n event: eventObj\n });\n return;\n }\n _this2['handleTech' + TECH_EVENTS_QUEUE[event] + '_'](eventObj);\n });\n });\n\n this.on(this.tech_, 'loadstart', this.handleTechLoadStart_);\n this.on(this.tech_, 'sourceset', this.handleTechSourceset_);\n this.on(this.tech_, 'waiting', this.handleTechWaiting_);\n this.on(this.tech_, 'ended', this.handleTechEnded_);\n this.on(this.tech_, 'seeking', this.handleTechSeeking_);\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_, 'durationchange', this.handleTechDurationChange_);\n this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_);\n this.on(this.tech_, 'error', this.handleTechError_);\n this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_);\n this.on(this.tech_, 'posterchange', this.handleTechPosterChange_);\n this.on(this.tech_, 'textdata', this.handleTechTextData_);\n this.on(this.tech_, 'ratechange', this.handleTechRateChange_);\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() && (titleTechName !== 'Html5' || !this.tag)) {\n prependTo(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 and dispose of the current playback {@link Tech}.\n *\n * @private\n */\n\n\n Player.prototype.unloadTech_ = function unloadTech_() {\n var _this3 = this;\n\n // Save the current text tracks so that we can reuse the same text tracks with the next tech\n ALL.names.forEach(function (name$$1) {\n var props = ALL[name$$1];\n\n _this3[props.privateName] = _this3[props.getterName]();\n });\n this.textTracksJson_ = textTrackConverter.textTracksToJson(this.tech_);\n\n this.isReady_ = false;\n\n this.tech_.dispose();\n\n this.tech_ = false;\n\n if (this.isPosterFromTech_) {\n this.poster_ = '';\n this.trigger('posterchange');\n }\n\n this.isPosterFromTech_ = false;\n };\n\n /**\n * Return a reference to the current {@link Tech}.\n * It will print a warning by default about the danger of using the tech directly\n * but any argument that is passed in will silence the warning.\n *\n * @param {*} [safety]\n * Anything passed in to silence the warning\n *\n * @return {Tech}\n * The Tech\n */\n\n\n Player.prototype.tech = function tech(safety) {\n if (safety === undefined) {\n log$1.warn(tsml(_templateObject$1));\n }\n\n return this.tech_;\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 mobile devices: a click on the video toggles controls\n * which 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 *\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 */\n\n\n Player.prototype.addTechControlsListeners_ = function 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 * @private\n */\n\n\n Player.prototype.removeTechControlsListeners_ = function 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 * @private\n */\n\n\n Player.prototype.handleTechReady_ = function 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.currentSrc()) && this.tag && this.options_.autoplay && this.paused()) {\n try {\n // Chrome Fix. Fixed in Chrome v16.\n delete this.tag.poster;\n } catch (e) {\n log$1('deleting tag.poster throws in some browsers', e);\n }\n }\n };\n\n /**\n * Retrigger the `loadstart` event that was triggered by the {@link Tech}. This\n * function will also trigger {@link Player#firstplay} if it is the first loadstart\n * for a video.\n *\n * @fires Player#loadstart\n * @fires Player#firstplay\n * @listens Tech#loadstart\n * @private\n */\n\n\n Player.prototype.handleTechLoadStart_ = function handleTechLoadStart_() {\n // TODO: Update to use `emptied` event instead. See #1277.\n\n this.removeClass('vjs-ended');\n this.removeClass('vjs-seeking');\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 /**\n * Fired when the user agent begins looking for media data\n *\n * @event Player#loadstart\n * @type {EventTarget~Event}\n */\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 // autoplay happens after loadstart for the browser,\n // so we mimic that behavior\n this.manualAutoplay_(this.autoplay());\n };\n\n /**\n * Handle autoplay string values, rather than the typical boolean\n * values that should be handled by the tech. Note that this is not\n * part of any specification. Valid values and what they do can be\n * found on the autoplay getter at Player#autoplay()\n */\n\n\n Player.prototype.manualAutoplay_ = function manualAutoplay_(type) {\n var _this4 = this;\n\n if (!this.tech_ || typeof type !== 'string') {\n return;\n }\n\n var muted = function muted() {\n var previouslyMuted = _this4.muted();\n\n _this4.muted(true);\n\n var playPromise = _this4.play();\n\n if (!playPromise || !playPromise.then || !playPromise['catch']) {\n return;\n }\n\n return playPromise['catch'](function (e) {\n // restore old value of muted on failure\n _this4.muted(previouslyMuted);\n });\n };\n\n var promise = void 0;\n\n if (type === 'any') {\n promise = this.play();\n\n if (promise && promise.then && promise['catch']) {\n promise['catch'](function () {\n return muted();\n });\n }\n } else if (type === 'muted') {\n promise = muted();\n } else {\n promise = this.play();\n }\n\n if (!promise || !promise.then || !promise['catch']) {\n return;\n }\n\n return promise.then(function () {\n _this4.trigger({ type: 'autoplay-success', autoplay: type });\n })['catch'](function (e) {\n _this4.trigger({ type: 'autoplay-failure', autoplay: type });\n });\n };\n\n /**\n * Update the internal source caches so that we return the correct source from\n * `src()`, `currentSource()`, and `currentSources()`.\n *\n * > Note: `currentSources` will not be updated if the source that is passed in exists\n * in the current `currentSources` cache.\n *\n *\n * @param {Tech~SourceObject} srcObj\n * A string or object source to update our caches to.\n */\n\n\n Player.prototype.updateSourceCaches_ = function updateSourceCaches_() {\n var srcObj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n\n var src = srcObj;\n var type = '';\n\n if (typeof src !== 'string') {\n src = srcObj.src;\n type = srcObj.type;\n }\n\n // if we are a blob url, don't update the source cache\n // blob urls can arise when playback is done via Media Source Extension (MSE)\n // such as m3u8 sources with @videojs/http-streaming (VHS)\n if (/^blob:/.test(src)) {\n return;\n }\n\n // make sure all the caches are set to default values\n // to prevent null checking\n this.cache_.source = this.cache_.source || {};\n this.cache_.sources = this.cache_.sources || [];\n\n // try to get the type of the src that was passed in\n if (src && !type) {\n type = findMimetype(this, src);\n }\n\n // update `currentSource` cache always\n this.cache_.source = mergeOptions({}, srcObj, { src: src, type: type });\n\n var matchingSources = this.cache_.sources.filter(function (s) {\n return s.src && s.src === src;\n });\n var sourceElSources = [];\n var sourceEls = this.$$('source');\n var matchingSourceEls = [];\n\n for (var i = 0; i < sourceEls.length; i++) {\n var sourceObj = getAttributes(sourceEls[i]);\n\n sourceElSources.push(sourceObj);\n\n if (sourceObj.src && sourceObj.src === src) {\n matchingSourceEls.push(sourceObj.src);\n }\n }\n\n // if we have matching source els but not matching sources\n // the current source cache is not up to date\n if (matchingSourceEls.length && !matchingSources.length) {\n this.cache_.sources = sourceElSources;\n // if we don't have matching source or source els set the\n // sources cache to the `currentSource` cache\n } else if (!matchingSources.length) {\n this.cache_.sources = [this.cache_.source];\n }\n\n // update the tech `src` cache\n this.cache_.src = src;\n };\n\n /**\n * *EXPERIMENTAL* Fired when the source is set or changed on the {@link Tech}\n * causing the media element to reload.\n *\n * It will fire for the initial source and each subsequent source.\n * This event is a custom event from Video.js and is triggered by the {@link Tech}.\n *\n * The event object for this event contains a `src` property that will contain the source\n * that was available when the event was triggered. This is generally only necessary if Video.js\n * is switching techs while the source was being changed.\n *\n * It is also fired when `load` is called on the player (or media element)\n * because the {@link https://html.spec.whatwg.org/multipage/media.html#dom-media-load|specification for `load`}\n * says that the resource selection algorithm needs to be aborted and restarted.\n * In this case, it is very likely that the `src` property will be set to the\n * empty string `\"\"` to indicate we do not know what the source will be but\n * that it is changing.\n *\n * *This event is currently still experimental and may change in minor releases.*\n * __To use this, pass `enableSourceset` option to the player.__\n *\n * @event Player#sourceset\n * @type {EventTarget~Event}\n * @prop {string} src\n * The source url available when the `sourceset` was triggered.\n * It will be an empty string if we cannot know what the source is\n * but know that the source will change.\n */\n /**\n * Retrigger the `sourceset` event that was triggered by the {@link Tech}.\n *\n * @fires Player#sourceset\n * @listens Tech#sourceset\n * @private\n */\n\n\n Player.prototype.handleTechSourceset_ = function handleTechSourceset_(event) {\n var _this5 = this;\n\n // only update the source cache when the source\n // was not updated using the player api\n if (!this.changingSrc_) {\n // update the source to the intial source right away\n // in some cases this will be empty string\n this.updateSourceCaches_(event.src);\n\n // if the `sourceset` `src` was an empty string\n // wait for a `loadstart` to update the cache to `currentSrc`.\n // If a sourceset happens before a `loadstart`, we reset the state\n // as this function will be called again.\n if (!event.src) {\n var updateCache = function updateCache(e) {\n if (e.type !== 'sourceset') {\n _this5.updateSourceCaches_(_this5.techGet_('currentSrc'));\n }\n\n _this5.tech_.off(['sourceset', 'loadstart'], updateCache);\n };\n\n this.tech_.one(['sourceset', 'loadstart'], updateCache);\n }\n }\n\n this.trigger({\n src: event.src,\n type: 'sourceset'\n });\n };\n\n /**\n * Add/remove the vjs-has-started class\n *\n * @fires Player#firstplay\n *\n * @param {boolean} request\n * - true: adds the class\n * - false: remove the class\n *\n * @return {boolean}\n * the boolean value of hasStarted_\n */\n\n\n Player.prototype.hasStarted = function hasStarted(request) {\n if (request === undefined) {\n // act as getter, if we have no request to change\n return this.hasStarted_;\n }\n\n if (request === this.hasStarted_) {\n return;\n }\n\n this.hasStarted_ = request;\n\n if (this.hasStarted_) {\n this.addClass('vjs-has-started');\n this.trigger('firstplay');\n } else {\n this.removeClass('vjs-has-started');\n }\n };\n\n /**\n * Fired whenever the media begins or resumes playback\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-play}\n * @fires Player#play\n * @listens Tech#play\n * @private\n */\n\n\n Player.prototype.handleTechPlay_ = function 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 this.hasStarted(true);\n /**\n * Triggered whenever an {@link Tech#play} event happens. Indicates that\n * playback has started or resumed.\n *\n * @event Player#play\n * @type {EventTarget~Event}\n */\n this.trigger('play');\n };\n\n /**\n * Retrigger the `ratechange` event that was triggered by the {@link Tech}.\n *\n * If there were any events queued while the playback rate was zero, fire\n * those events now.\n *\n * @private\n * @method Player#handleTechRateChange_\n * @fires Player#ratechange\n * @listens Tech#ratechange\n */\n\n\n Player.prototype.handleTechRateChange_ = function handleTechRateChange_() {\n if (this.tech_.playbackRate() > 0 && this.cache_.lastPlaybackRate === 0) {\n this.queuedCallbacks_.forEach(function (queued) {\n return queued.callback(queued.event);\n });\n this.queuedCallbacks_ = [];\n }\n this.cache_.lastPlaybackRate = this.tech_.playbackRate();\n /**\n * Fires when the playing speed of the audio/video is changed\n *\n * @event Player#ratechange\n * @type {event}\n */\n this.trigger('ratechange');\n };\n\n /**\n * Retrigger the `waiting` event that was triggered by the {@link Tech}.\n *\n * @fires Player#waiting\n * @listens Tech#waiting\n * @private\n */\n\n\n Player.prototype.handleTechWaiting_ = function handleTechWaiting_() {\n var _this6 = this;\n\n this.addClass('vjs-waiting');\n /**\n * A readyState change on the DOM element has caused playback to stop.\n *\n * @event Player#waiting\n * @type {EventTarget~Event}\n */\n this.trigger('waiting');\n this.one('timeupdate', function () {\n return _this6.removeClass('vjs-waiting');\n });\n };\n\n /**\n * Retrigger the `canplay` event that was triggered by the {@link Tech}.\n * > Note: This is not consistent between browsers. See #1351\n *\n * @fires Player#canplay\n * @listens Tech#canplay\n * @private\n */\n\n\n Player.prototype.handleTechCanPlay_ = function handleTechCanPlay_() {\n this.removeClass('vjs-waiting');\n /**\n * The media has a readyState of HAVE_FUTURE_DATA or greater.\n *\n * @event Player#canplay\n * @type {EventTarget~Event}\n */\n this.trigger('canplay');\n };\n\n /**\n * Retrigger the `canplaythrough` event that was triggered by the {@link Tech}.\n *\n * @fires Player#canplaythrough\n * @listens Tech#canplaythrough\n * @private\n */\n\n\n Player.prototype.handleTechCanPlayThrough_ = function handleTechCanPlayThrough_() {\n this.removeClass('vjs-waiting');\n /**\n * The media has a readyState of HAVE_ENOUGH_DATA or greater. This means that the\n * entire media file can be played without buffering.\n *\n * @event Player#canplaythrough\n * @type {EventTarget~Event}\n */\n this.trigger('canplaythrough');\n };\n\n /**\n * Retrigger the `playing` event that was triggered by the {@link Tech}.\n *\n * @fires Player#playing\n * @listens Tech#playing\n * @private\n */\n\n\n Player.prototype.handleTechPlaying_ = function handleTechPlaying_() {\n this.removeClass('vjs-waiting');\n /**\n * The media is no longer blocked from playback, and has started playing.\n *\n * @event Player#playing\n * @type {EventTarget~Event}\n */\n this.trigger('playing');\n };\n\n /**\n * Retrigger the `seeking` event that was triggered by the {@link Tech}.\n *\n * @fires Player#seeking\n * @listens Tech#seeking\n * @private\n */\n\n\n Player.prototype.handleTechSeeking_ = function handleTechSeeking_() {\n this.addClass('vjs-seeking');\n /**\n * Fired whenever the player is jumping to a new time\n *\n * @event Player#seeking\n * @type {EventTarget~Event}\n */\n this.trigger('seeking');\n };\n\n /**\n * Retrigger the `seeked` event that was triggered by the {@link Tech}.\n *\n * @fires Player#seeked\n * @listens Tech#seeked\n * @private\n */\n\n\n Player.prototype.handleTechSeeked_ = function handleTechSeeked_() {\n this.removeClass('vjs-seeking');\n /**\n * Fired when the player has finished jumping to a new time\n *\n * @event Player#seeked\n * @type {EventTarget~Event}\n */\n this.trigger('seeked');\n };\n\n /**\n * Retrigger the `firstplay` event that was triggered by the {@link Tech}.\n *\n * @fires Player#firstplay\n * @listens Tech#firstplay\n * @deprecated As of 6.0 firstplay event is deprecated.\n * As of 6.0 passing the `starttime` option to the player and the firstplay event are deprecated.\n * @private\n */\n\n\n Player.prototype.handleTechFirstPlay_ = function 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 log$1.warn('Passing the `starttime` option to the player will be deprecated in 6.0');\n this.currentTime(this.options_.starttime);\n }\n\n this.addClass('vjs-has-started');\n /**\n * Fired the first time a video is played. Not part of the HLS spec, and this is\n * probably not the best implementation yet, so use sparingly. If you don't have a\n * reason to prevent playback, use `myPlayer.one('play');` instead.\n *\n * @event Player#firstplay\n * @deprecated As of 6.0 firstplay event is deprecated.\n * @type {EventTarget~Event}\n */\n this.trigger('firstplay');\n };\n\n /**\n * Retrigger the `pause` event that was triggered by the {@link Tech}.\n *\n * @fires Player#pause\n * @listens Tech#pause\n * @private\n */\n\n\n Player.prototype.handleTechPause_ = function handleTechPause_() {\n this.removeClass('vjs-playing');\n this.addClass('vjs-paused');\n /**\n * Fired whenever the media has been paused\n *\n * @event Player#pause\n * @type {EventTarget~Event}\n */\n this.trigger('pause');\n };\n\n /**\n * Retrigger the `ended` event that was triggered by the {@link Tech}.\n *\n * @fires Player#ended\n * @listens Tech#ended\n * @private\n */\n\n\n Player.prototype.handleTechEnded_ = function 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 /**\n * Fired when the end of the media resource is reached (currentTime == duration)\n *\n * @event Player#ended\n * @type {EventTarget~Event}\n */\n this.trigger('ended');\n };\n\n /**\n * Fired when the duration of the media resource is first known or changed\n *\n * @listens Tech#durationchange\n * @private\n */\n\n\n Player.prototype.handleTechDurationChange_ = function handleTechDurationChange_() {\n this.duration(this.techGet_('duration'));\n };\n\n /**\n * Handle a click on the media element to play/pause\n *\n * @param {EventTarget~Event} event\n * the event that caused this function to trigger\n *\n * @listens Tech#mousedown\n * @private\n */\n\n\n Player.prototype.handleTechClick_ = function handleTechClick_(event) {\n if (!isSingleLeftClick(event)) {\n return;\n }\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 return;\n }\n\n if (this.paused()) {\n silencePromise(this.play());\n } else {\n this.pause();\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 * @listens Tech#tap\n * @private\n */\n\n\n Player.prototype.handleTechTap_ = function handleTechTap_() {\n this.userActive(!this.userActive());\n };\n\n /**\n * Handle touch to start\n *\n * @listens Tech#touchstart\n * @private\n */\n\n\n Player.prototype.handleTechTouchStart_ = function handleTechTouchStart_() {\n this.userWasActive = this.userActive();\n };\n\n /**\n * Handle touch to move\n *\n * @listens Tech#touchmove\n * @private\n */\n\n\n Player.prototype.handleTechTouchMove_ = function handleTechTouchMove_() {\n if (this.userWasActive) {\n this.reportUserActivity();\n }\n };\n\n /**\n * Handle touch to end\n *\n * @param {EventTarget~Event} event\n * the touchend event that triggered\n * this function\n *\n * @listens Tech#touchend\n * @private\n */\n\n\n Player.prototype.handleTechTouchEnd_ = function 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 * @listens Player#fullscreenchange\n */\n\n\n Player.prototype.handleFullscreenChange_ = function 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 * @listens stageclick\n */\n\n\n Player.prototype.handleStageClick_ = function handleStageClick_() {\n this.reportUserActivity();\n };\n\n /**\n * Handle Tech Fullscreen Change\n *\n * @param {EventTarget~Event} event\n * the fullscreenchange event that triggered this function\n *\n * @param {Object} data\n * the data that was sent with the event\n *\n * @private\n * @listens Tech#fullscreenchange\n * @fires Player#fullscreenchange\n */\n\n\n Player.prototype.handleTechFullscreenChange_ = function handleTechFullscreenChange_(event, data) {\n if (data) {\n this.isFullscreen(data.isFullscreen);\n }\n /**\n * Fired when going in and out of fullscreen.\n *\n * @event Player#fullscreenchange\n * @type {EventTarget~Event}\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 * @listens Tech#error\n */\n\n\n Player.prototype.handleTechError_ = function handleTechError_() {\n var error = this.tech_.error();\n\n this.error(error);\n };\n\n /**\n * Retrigger the `textdata` event that was triggered by the {@link Tech}.\n *\n * @fires Player#textdata\n * @listens Tech#textdata\n * @private\n */\n\n\n Player.prototype.handleTechTextData_ = function handleTechTextData_() {\n var data = null;\n\n if (arguments.length > 1) {\n data = arguments[1];\n }\n\n /**\n * Fires when we get a textdata event from tech\n *\n * @event Player#textdata\n * @type {EventTarget~Event}\n */\n this.trigger('textdata', data);\n };\n\n /**\n * Get object for cached values.\n *\n * @return {Object}\n * get the current object cache\n */\n\n\n Player.prototype.getCache = function getCache() {\n return this.cache_;\n };\n\n /**\n * Pass values to the playback tech\n *\n * @param {string} [method]\n * the method to call\n *\n * @param {Object} arg\n * the argument to pass\n *\n * @private\n */\n\n\n Player.prototype.techCall_ = function techCall_(method, arg) {\n // If it's not ready yet, call method when it is\n\n this.ready(function () {\n if (method in allowedSetters) {\n return set$1(this.middleware_, this.tech_, method, arg);\n } else if (method in allowedMediators) {\n return mediate(this.middleware_, this.tech_, method, arg);\n }\n\n try {\n if (this.tech_) {\n this.tech_[method](arg);\n }\n } catch (e) {\n log$1(e);\n throw e;\n }\n }, true);\n };\n\n /**\n * Get calls can't wait for the tech, and sometimes don't need to.\n *\n * @param {string} method\n * Tech method\n *\n * @return {Function|undefined}\n * the method or undefined\n *\n * @private\n */\n\n\n Player.prototype.techGet_ = function techGet_(method) {\n if (!this.tech_ || !this.tech_.isReady_) {\n return;\n }\n\n if (method in allowedGetters) {\n return get$1(this.middleware_, this.tech_, method);\n } else if (method in allowedMediators) {\n return mediate(this.middleware_, this.tech_, method);\n }\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\n // When building additional tech libs, an expected method may not be defined yet\n if (this.tech_[method] === undefined) {\n log$1('Video.js: ' + method + ' method not defined for ' + this.techName_ + ' playback technology.', e);\n throw e;\n }\n\n // When a method isn't available on the object it throws a TypeError\n if (e.name === 'TypeError') {\n log$1('Video.js: ' + method + ' unavailable on ' + this.techName_ + ' playback technology element.', e);\n this.tech_.isReady_ = false;\n throw e;\n }\n\n // If error unknown, just log and throw\n log$1(e);\n throw e;\n }\n };\n\n /**\n * Attempt to begin playback at the first opportunity.\n *\n * @return {Promise|undefined}\n * Returns a promise if the browser supports Promises (or one\n * was passed in as an option). This promise will be resolved on\n * the return value of play. If this is undefined it will fulfill the\n * promise chain otherwise the promise chain will be fulfilled when\n * the promise from play is fulfilled.\n */\n\n\n Player.prototype.play = function play() {\n var _this7 = this;\n\n var PromiseClass = this.options_.Promise || window.Promise;\n\n if (PromiseClass) {\n return new PromiseClass(function (resolve) {\n _this7.play_(resolve);\n });\n }\n\n return this.play_();\n };\n\n /**\n * The actual logic for play, takes a callback that will be resolved on the\n * return value of play. This allows us to resolve to the play promise if there\n * is one on modern browsers.\n *\n * @private\n * @param {Function} [callback]\n * The callback that should be called when the techs play is actually called\n */\n\n\n Player.prototype.play_ = function play_() {\n var _this8 = this;\n\n var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : silencePromise;\n\n // If this is called while we have a play queued up on a loadstart, remove\n // that listener to avoid getting in a potentially bad state.\n if (this.playOnLoadstart_) {\n this.off('loadstart', this.playOnLoadstart_);\n }\n\n // If the player/tech is not ready, queue up another call to `play()` for\n // when it is. This will loop back into this method for another attempt at\n // playback when the tech is ready.\n if (!this.isReady_) {\n\n // Bail out if we're already waiting for `ready`!\n if (this.playWaitingForReady_) {\n return;\n }\n\n this.playWaitingForReady_ = true;\n this.ready(function () {\n _this8.playWaitingForReady_ = false;\n callback(_this8.play());\n });\n\n // If the player/tech is ready and we have a source, we can attempt playback.\n } else if (!this.changingSrc_ && (this.src() || this.currentSrc())) {\n callback(this.techGet_('play'));\n return;\n\n // If the tech is ready, but we do not have a source, we'll need to wait\n // for both the `ready` and a `loadstart` when the source is finally\n // resolved by middleware and set on the player.\n //\n // This can happen if `play()` is called while changing sources or before\n // one has been set on the player.\n } else {\n\n this.playOnLoadstart_ = function () {\n _this8.playOnLoadstart_ = null;\n callback(_this8.play());\n };\n\n this.one('loadstart', this.playOnLoadstart_);\n }\n };\n\n /**\n * Pause the video playback\n *\n * @return {Player}\n * A reference to the player object this function was called on\n */\n\n\n Player.prototype.pause = function pause() {\n this.techCall_('pause');\n };\n\n /**\n * Check if the player is paused or has yet to play\n *\n * @return {boolean}\n * - false: if the media is currently playing\n * - true: if media is not currently playing\n */\n\n\n Player.prototype.paused = function 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 * Get a TimeRange object representing the current ranges of time that the user\n * has played.\n *\n * @return {TimeRange}\n * A time range object that represents all the increments of time that have\n * been played.\n */\n\n\n Player.prototype.played = function played() {\n return this.techGet_('played') || createTimeRanges(0, 0);\n };\n\n /**\n * Returns whether or not the user is \"scrubbing\". Scrubbing is\n * when the user has clicked the progress bar handle and is\n * dragging it along the progress bar.\n *\n * @param {boolean} [isScrubbing]\n * wether the user is or is not scrubbing\n *\n * @return {boolean}\n * The value of scrubbing when getting\n */\n\n\n Player.prototype.scrubbing = function scrubbing(isScrubbing) {\n if (typeof isScrubbing === 'undefined') {\n return this.scrubbing_;\n }\n this.scrubbing_ = !!isScrubbing;\n\n if (isScrubbing) {\n this.addClass('vjs-scrubbing');\n } else {\n this.removeClass('vjs-scrubbing');\n }\n };\n\n /**\n * Get or set the current time (in seconds)\n *\n * @param {number|string} [seconds]\n * The time to seek to in seconds\n *\n * @return {number}\n * - the current time in seconds when getting\n */\n\n\n Player.prototype.currentTime = function currentTime(seconds) {\n if (typeof seconds !== 'undefined') {\n if (seconds < 0) {\n seconds = 0;\n }\n this.techCall_('setCurrentTime', seconds);\n return;\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 this.cache_.currentTime = this.techGet_('currentTime') || 0;\n return this.cache_.currentTime;\n };\n\n /**\n * Normally gets the length in time of the video in seconds;\n * in all but the rarest use cases an argument will NOT be passed to the method\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 * @fires Player#durationchange\n *\n * @param {number} [seconds]\n * The duration of the video to set in seconds\n *\n * @return {number}\n * - The duration of the video in seconds when getting\n */\n\n\n Player.prototype.duration = function duration(seconds) {\n if (seconds === undefined) {\n // return NaN if the duration is not known\n return this.cache_.duration !== undefined ? this.cache_.duration : NaN;\n }\n\n seconds = parseFloat(seconds);\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 * @event Player#durationchange\n * @type {EventTarget~Event}\n */\n this.trigger('durationchange');\n }\n };\n\n /**\n * Calculates how much time is left in the video. Not part\n * of the native video API.\n *\n * @return {number}\n * The time remaining in seconds\n */\n\n\n Player.prototype.remainingTime = function remainingTime() {\n return this.duration() - this.currentTime();\n };\n\n /**\n * A remaining time function that is intented to be used when\n * the time is to be displayed directly to the user.\n *\n * @return {number}\n * The rounded time remaining in seconds\n */\n\n\n Player.prototype.remainingTimeDisplay = function remainingTimeDisplay() {\n return Math.floor(this.duration()) - Math.floor(this.currentTime());\n };\n\n //\n // Kind of like an array of portions of the video that have been downloaded.\n\n /**\n * Get a TimeRange object with an array of the times of the video\n * that have been downloaded. If you just want the percent of the\n * video that's been downloaded, use bufferedPercent.\n *\n * @see [Buffered Spec]{@link http://dev.w3.org/html5/spec/video.html#dom-media-buffered}\n *\n * @return {TimeRange}\n * A mock TimeRange object (following HTML spec)\n */\n\n\n Player.prototype.buffered = function buffered() {\n var buffered = this.techGet_('buffered');\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(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 * This method is not a part of the native HTML video API.\n *\n * @return {number}\n * A decimal between 0 and 1 representing the percent\n * that is bufferred 0 being 0% and 1 being 100%\n */\n\n\n Player.prototype.bufferedPercent = function bufferedPercent$$1() {\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}\n * The end of the last buffered time range\n */\n\n\n Player.prototype.bufferedEnd = function bufferedEnd() {\n var buffered = this.buffered();\n var duration = this.duration();\n var 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 *\n * @param {number} [percentAsDecimal]\n * The new volume as a decimal percent:\n * - 0 is muted/0%/off\n * - 1.0 is 100%/full\n * - 0.5 is half volume or 50%\n *\n * @return {number}\n * The current volume as a percent when getting\n */\n\n\n Player.prototype.volume = function volume(percentAsDecimal) {\n var vol = void 0;\n\n if (percentAsDecimal !== undefined) {\n // Force value to between 0 and 1\n vol = Math.max(0, Math.min(1, parseFloat(percentAsDecimal)));\n this.cache_.volume = vol;\n this.techCall_('setVolume', vol);\n\n if (vol > 0) {\n this.lastVolume_(vol);\n }\n\n return;\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 * Get the current muted state, or turn mute on or off\n *\n * @param {boolean} [muted]\n * - true to mute\n * - false to unmute\n *\n * @return {boolean}\n * - true if mute is on and getting\n * - false if mute is off and getting\n */\n\n\n Player.prototype.muted = function muted(_muted) {\n if (_muted !== undefined) {\n this.techCall_('setMuted', _muted);\n return;\n }\n return this.techGet_('muted') || false;\n };\n\n /**\n * Get the current defaultMuted state, or turn defaultMuted on or off. defaultMuted\n * indicates the state of muted on intial playback.\n *\n * ```js\n * var myPlayer = videojs('some-player-id');\n *\n * myPlayer.src(\"http://www.example.com/path/to/video.mp4\");\n *\n * // get, should be false\n * console.log(myPlayer.defaultMuted());\n * // set to true\n * myPlayer.defaultMuted(true);\n * // get should be true\n * console.log(myPlayer.defaultMuted());\n * ```\n *\n * @param {boolean} [defaultMuted]\n * - true to mute\n * - false to unmute\n *\n * @return {boolean|Player}\n * - true if defaultMuted is on and getting\n * - false if defaultMuted is off and getting\n * - A reference to the current player when setting\n */\n\n\n Player.prototype.defaultMuted = function defaultMuted(_defaultMuted) {\n if (_defaultMuted !== undefined) {\n return this.techCall_('setDefaultMuted', _defaultMuted);\n }\n return this.techGet_('defaultMuted') || false;\n };\n\n /**\n * Get the last volume, or set it\n *\n * @param {number} [percentAsDecimal]\n * The new last volume as a decimal percent:\n * - 0 is muted/0%/off\n * - 1.0 is 100%/full\n * - 0.5 is half volume or 50%\n *\n * @return {number}\n * the current value of lastVolume as a percent when getting\n *\n * @private\n */\n\n\n Player.prototype.lastVolume_ = function lastVolume_(percentAsDecimal) {\n if (percentAsDecimal !== undefined && percentAsDecimal !== 0) {\n this.cache_.lastVolume = percentAsDecimal;\n return;\n }\n return this.cache_.lastVolume;\n };\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 * @return {boolean}\n * if native fullscreen is supported\n */\n\n\n Player.prototype.supportsFullScreen = function supportsFullScreen() {\n return this.techGet_('supportsFullScreen') || false;\n };\n\n /**\n * Check if the player is in fullscreen mode or tell the player that it\n * is or is not in fullscreen mode.\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]\n * Set the players current fullscreen state\n *\n * @return {boolean}\n * - true if fullscreen is on and getting\n * - false if fullscreen is off and getting\n */\n\n\n Player.prototype.isFullscreen = function isFullscreen(isFS) {\n if (isFS !== undefined) {\n this.isFullscreen_ = !!isFS;\n return;\n }\n return !!this.isFullscreen_;\n };\n\n /**\n * Increase the size of the video to full screen\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 * @fires Player#fullscreenchange\n */\n\n\n Player.prototype.requestFullscreen = function 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 on(document, fsApi.fullscreenchange, 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 off(document, fsApi.fullscreenchange, documentFullscreenChange);\n }\n /**\n * @event Player#fullscreenchange\n * @type {EventTarget~Event}\n */\n this.trigger('fullscreenchange');\n }));\n\n this.el_[fsApi.requestFullscreen]();\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 /**\n * @event Player#fullscreenchange\n * @type {EventTarget~Event}\n */\n this.trigger('fullscreenchange');\n }\n };\n\n /**\n * Return the video to its normal size after having been in full screen mode\n *\n * @fires Player#fullscreenchange\n */\n\n\n Player.prototype.exitFullscreen = function exitFullscreen() {\n var fsApi = FullscreenApi;\n\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 /**\n * @event Player#fullscreenchange\n * @type {EventTarget~Event}\n */\n this.trigger('fullscreenchange');\n }\n };\n\n /**\n * When fullscreen isn't supported we can stretch the\n * video container to as wide as the browser will let us.\n *\n * @fires Player#enterFullWindow\n */\n\n\n Player.prototype.enterFullWindow = function 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 on(document, 'keydown', bind(this, this.fullWindowOnEscKey));\n\n // Hide any scroll bars\n document.documentElement.style.overflow = 'hidden';\n\n // Apply fullscreen styles\n addClass(document.body, 'vjs-full-window');\n\n /**\n * @event Player#enterFullWindow\n * @type {EventTarget~Event}\n */\n this.trigger('enterFullWindow');\n };\n\n /**\n * Check for call to either exit full window or\n * full screen on ESC key\n *\n * @param {string} event\n * Event to check for key press\n */\n\n\n Player.prototype.fullWindowOnEscKey = function 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 * @fires Player#exitFullWindow\n */\n\n\n Player.prototype.exitFullWindow = function exitFullWindow() {\n this.isFullWindow = false;\n off(document, 'keydown', this.fullWindowOnEscKey);\n\n // Unhide scroll bars.\n document.documentElement.style.overflow = this.docOrigOverflow;\n\n // Remove fullscreen styles\n removeClass(document.body, 'vjs-full-window');\n\n // Resize the box, controller, and poster to original sizes\n // this.positionAll();\n /**\n * @event Player#exitFullWindow\n * @type {EventTarget~Event}\n */\n this.trigger('exitFullWindow');\n };\n\n /**\n * Check whether the player can play a given mimetype\n *\n * @see https://www.w3.org/TR/2011/WD-html5-20110113/video.html#dom-navigator-canplaytype\n *\n * @param {string} type\n * The mimetype to check\n *\n * @return {string}\n * 'probably', 'maybe', or '' (empty string)\n */\n\n\n Player.prototype.canPlayType = function canPlayType(type) {\n var can = void 0;\n\n // Loop through each playback technology in the options order\n for (var i = 0, j = this.options_.techOrder; i < j.length; i++) {\n var techName = j[i];\n var 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$1.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\n * The sources for a media asset\n *\n * @return {Object|boolean}\n * Object of source and tech order or false\n */\n\n\n Player.prototype.selectSource = function selectSource(sources) {\n var _this9 = this;\n\n // Get only the techs specified in `techOrder` that exist and are supported by the\n // current platform\n var techs = this.options_.techOrder.map(function (techName) {\n return [techName, Tech.getTech(techName)];\n }).filter(function (_ref) {\n var techName = _ref[0],\n tech = _ref[1];\n\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$1.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 var findFirstPassingTechSourcePair = function findFirstPassingTechSourcePair(outerArray, innerArray, tester) {\n var found = void 0;\n\n outerArray.some(function (outerChoice) {\n return innerArray.some(function (innerChoice) {\n found = tester(outerChoice, innerChoice);\n\n if (found) {\n return true;\n }\n });\n });\n\n return found;\n };\n\n var foundSourceAndTech = void 0;\n var flip = function flip(fn) {\n return function (a, b) {\n return fn(b, a);\n };\n };\n var finder = function finder(_ref2, source) {\n var techName = _ref2[0],\n tech = _ref2[1];\n\n if (tech.canPlaySource(source, _this9.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 * Get or set the video source.\n *\n * @param {Tech~SourceObject|Tech~SourceObject[]|string} [source]\n * A SourceObject, an array of SourceObjects, or a string referencing\n * a URL to a media source. It is _highly recommended_ that an object\n * or array of objects is used here, so that source selection\n * algorithms can take the `type` into account.\n *\n * If not provided, this method acts as a getter.\n *\n * @return {string|undefined}\n * If the `source` argument is missing, returns the current source\n * URL. Otherwise, returns nothing/undefined.\n */\n\n\n Player.prototype.src = function src(source) {\n var _this10 = this;\n\n // getter usage\n if (typeof source === 'undefined') {\n return this.cache_.src || '';\n }\n // filter out invalid sources and turn our source into\n // an array of source objects\n var sources = filterSource(source);\n\n // if a source was passed in then it is invalid because\n // it was filtered to a zero length Array. So we have to\n // show an error\n if (!sources.length) {\n this.setTimeout(function () {\n this.error({ code: 4, message: this.localize(this.options_.notSupportedMessage) });\n }, 0);\n return;\n }\n\n // intial sources\n this.changingSrc_ = true;\n\n this.cache_.sources = sources;\n this.updateSourceCaches_(sources[0]);\n\n // middlewareSource is the source after it has been changed by middleware\n setSource(this, sources[0], function (middlewareSource, mws) {\n _this10.middleware_ = mws;\n\n // since sourceSet is async we have to update the cache again after we select a source since\n // the source that is selected could be out of order from the cache update above this callback.\n _this10.cache_.sources = sources;\n _this10.updateSourceCaches_(middlewareSource);\n\n var err = _this10.src_(middlewareSource);\n\n if (err) {\n if (sources.length > 1) {\n return _this10.src(sources.slice(1));\n }\n\n _this10.changingSrc_ = false;\n\n // We need to wrap this in a timeout to give folks a chance to add error event handlers\n _this10.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 _this10.triggerReady();\n\n return;\n }\n\n setTech(mws, _this10.tech_);\n });\n };\n\n /**\n * Set the source object on the tech, returns a boolean that indicates wether\n * there is a tech that can play the source or not\n *\n * @param {Tech~SourceObject} source\n * The source object to set on the Tech\n *\n * @return {Boolean}\n * - True if there is no Tech to playback this source\n * - False otherwise\n *\n * @private\n */\n\n\n Player.prototype.src_ = function src_(source) {\n var _this11 = this;\n\n var sourceTech = this.selectSource([source]);\n\n if (!sourceTech) {\n return true;\n }\n\n if (!titleCaseEquals(sourceTech.tech, this.techName_)) {\n this.changingSrc_ = true;\n // load this technology with the chosen source\n this.loadTech_(sourceTech.tech, sourceTech.source);\n this.tech_.ready(function () {\n _this11.changingSrc_ = false;\n });\n return false;\n }\n\n // wait until the tech is ready to set the source\n // and set it synchronously if possible (#2326)\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 (this.tech_.constructor.prototype.hasOwnProperty('setSource')) {\n this.techCall_('setSource', source);\n } else {\n this.techCall_('src', source.src);\n }\n\n this.changingSrc_ = false;\n }, true);\n\n return false;\n };\n\n /**\n * Begin loading the src data.\n */\n\n\n Player.prototype.load = function load() {\n this.techCall_('load');\n };\n\n /**\n * Reset the player. Loads the first tech in the techOrder,\n * and calls `reset` on the tech`.\n */\n\n\n Player.prototype.reset = function reset() {\n if (this.tech_) {\n this.tech_.clearTracks('text');\n }\n this.loadTech_(this.options_.techOrder[0], null);\n this.techCall_('reset');\n };\n\n /**\n * Returns all of the current source objects.\n *\n * @return {Tech~SourceObject[]}\n * The current source objects\n */\n\n\n Player.prototype.currentSources = function currentSources() {\n var source = this.currentSource();\n var sources = [];\n\n // assume `{}` or `{ src }`\n if (Object.keys(source).length !== 0) {\n sources.push(source);\n }\n\n return this.cache_.sources || sources;\n };\n\n /**\n * Returns the current source object.\n *\n * @return {Tech~SourceObject}\n * The current source object\n */\n\n\n Player.prototype.currentSource = function currentSource() {\n return this.cache_.source || {};\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}\n * The current source\n */\n\n\n Player.prototype.currentSrc = function currentSrc() {\n return this.currentSource() && this.currentSource().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}\n * The source MIME type\n */\n\n\n Player.prototype.currentType = function currentType() {\n return this.currentSource() && this.currentSource().type || '';\n };\n\n /**\n * Get or set the preload attribute\n *\n * @param {boolean} [value]\n * - true means that we should preload\n * - false maens that we should not preload\n *\n * @return {string}\n * The preload attribute value when getting\n */\n\n\n Player.prototype.preload = function preload(value) {\n if (value !== undefined) {\n this.techCall_('setPreload', value);\n this.options_.preload = value;\n return;\n }\n return this.techGet_('preload');\n };\n\n /**\n * Get or set the autoplay option. When this is a boolean it will\n * modify the attribute on the tech. When this is a string the attribute on\n * the tech will be removed and `Player` will handle autoplay on loadstarts.\n *\n * @param {boolean|string} [value]\n * - true: autoplay using the browser behavior\n * - false: do not autoplay\n * - 'play': call play() on every loadstart\n * - 'muted': call muted() then play() on every loadstart\n * - 'any': call play() on every loadstart. if that fails call muted() then play().\n * - *: values other than those listed here will be set `autoplay` to true\n *\n * @return {boolean|string}\n * The current value of autoplay when getting\n */\n\n\n Player.prototype.autoplay = function autoplay(value) {\n // getter usage\n if (value === undefined) {\n return this.options_.autoplay || false;\n }\n\n var techAutoplay = void 0;\n\n // if the value is a valid string set it to that\n if (typeof value === 'string' && /(any|play|muted)/.test(value)) {\n this.options_.autoplay = value;\n this.manualAutoplay_(value);\n techAutoplay = false;\n\n // any falsy value sets autoplay to false in the browser,\n // lets do the same\n } else if (!value) {\n this.options_.autoplay = false;\n\n // any other value (ie truthy) sets autoplay to true\n } else {\n this.options_.autoplay = true;\n }\n\n techAutoplay = techAutoplay || this.options_.autoplay;\n\n // if we don't have a tech then we do not queue up\n // a setAutoplay call on tech ready. We do this because the\n // autoplay option will be passed in the constructor and we\n // do not need to set it twice\n if (this.tech_) {\n this.techCall_('setAutoplay', techAutoplay);\n }\n };\n\n /**\n * Set or unset the playsinline attribute.\n * Playsinline tells the browser that non-fullscreen playback is preferred.\n *\n * @param {boolean} [value]\n * - true means that we should try to play inline by default\n * - false means that we should use the browser's default playback mode,\n * which in most cases is inline. iOS Safari is a notable exception\n * and plays fullscreen by default.\n *\n * @return {string|Player}\n * - the current value of playsinline\n * - the player when setting\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/#attr-video-playsinline}\n */\n\n\n Player.prototype.playsinline = function playsinline(value) {\n if (value !== undefined) {\n this.techCall_('setPlaysinline', value);\n this.options_.playsinline = value;\n return this;\n }\n return this.techGet_('playsinline');\n };\n\n /**\n * Get or set the loop attribute on the video element.\n *\n * @param {boolean} [value]\n * - true means that we should loop the video\n * - false means that we should not loop the video\n *\n * @return {string}\n * The current value of loop when getting\n */\n\n\n Player.prototype.loop = function loop(value) {\n if (value !== undefined) {\n this.techCall_('setLoop', value);\n this.options_.loop = value;\n return;\n }\n return this.techGet_('loop');\n };\n\n /**\n * Get or set the poster image source url\n *\n * @fires Player#posterchange\n *\n * @param {string} [src]\n * Poster image source URL\n *\n * @return {string}\n * The current value of poster when getting\n */\n\n\n Player.prototype.poster = function 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 if (src === this.poster_) {\n return;\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 this.isPosterFromTech_ = false;\n\n // alert components that the poster has been set\n /**\n * This event fires when the poster image is changed on the player.\n *\n * @event Player#posterchange\n * @type {EventTarget~Event}\n */\n this.trigger('posterchange');\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 * source if the player user hasn't set a poster through\n * the normal APIs.\n *\n * @fires Player#posterchange\n * @listens Tech#posterchange\n * @private\n */\n\n\n Player.prototype.handleTechPosterChange_ = function handleTechPosterChange_() {\n if ((!this.poster_ || this.options_.techCanOverridePoster) && this.tech_ && this.tech_.poster) {\n var newPoster = this.tech_.poster() || '';\n\n if (newPoster !== this.poster_) {\n this.poster_ = newPoster;\n this.isPosterFromTech_ = true;\n\n // Let components know the poster has changed\n this.trigger('posterchange');\n }\n }\n };\n\n /**\n * Get or set whether or not the controls are showing.\n *\n * @fires Player#controlsenabled\n *\n * @param {boolean} [bool]\n * - true to turn controls on\n * - false to turn controls off\n *\n * @return {boolean}\n * The current value of controls when getting\n */\n\n\n Player.prototype.controls = function controls(bool) {\n if (bool === undefined) {\n return !!this.controls_;\n }\n\n bool = !!bool;\n\n // Don't trigger a change event unless it actually changed\n if (this.controls_ === bool) {\n return;\n }\n\n this.controls_ = bool;\n\n if (this.usingNativeControls()) {\n this.techCall_('setControls', bool);\n }\n\n if (this.controls_) {\n this.removeClass('vjs-controls-disabled');\n this.addClass('vjs-controls-enabled');\n /**\n * @event Player#controlsenabled\n * @type {EventTarget~Event}\n */\n this.trigger('controlsenabled');\n if (!this.usingNativeControls()) {\n this.addTechControlsListeners_();\n }\n } else {\n this.removeClass('vjs-controls-enabled');\n this.addClass('vjs-controls-disabled');\n /**\n * @event Player#controlsdisabled\n * @type {EventTarget~Event}\n */\n this.trigger('controlsdisabled');\n if (!this.usingNativeControls()) {\n this.removeTechControlsListeners_();\n }\n }\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 * @fires Player#usingnativecontrols\n * @fires Player#usingcustomcontrols\n *\n * @param {boolean} [bool]\n * - true to turn native controls on\n * - false to turn native controls off\n *\n * @return {boolean}\n * The current value of native controls when getting\n */\n\n\n Player.prototype.usingNativeControls = function usingNativeControls(bool) {\n if (bool === undefined) {\n return !!this.usingNativeControls_;\n }\n\n bool = !!bool;\n\n // Don't trigger a change event unless it actually changed\n if (this.usingNativeControls_ === bool) {\n return;\n }\n\n this.usingNativeControls_ = bool;\n\n if (this.usingNativeControls_) {\n this.addClass('vjs-using-native-controls');\n\n /**\n * player is using the native device controls\n *\n * @event Player#usingnativecontrols\n * @type {EventTarget~Event}\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 Player#usingcustomcontrols\n * @type {EventTarget~Event}\n */\n this.trigger('usingcustomcontrols');\n }\n };\n\n /**\n * Set or get the current MediaError\n *\n * @fires Player#error\n *\n * @param {MediaError|string|number} [err]\n * A MediaError or a string/number to be turned\n * into a MediaError\n *\n * @return {MediaError|null}\n * The current MediaError when getting (or null)\n */\n\n\n Player.prototype.error = function 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 if (this.errorDisplay) {\n this.errorDisplay.close();\n }\n return;\n }\n\n this.error_ = new MediaError(err);\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$1.error('(CODE:' + this.error_.code + ' ' + MediaError.errorTypes[this.error_.code] + ')', this.error_.message, this.error_);\n\n /**\n * @event Player#error\n * @type {EventTarget~Event}\n */\n this.trigger('error');\n\n return;\n };\n\n /**\n * Report user activity\n *\n * @param {Object} event\n * Event object\n */\n\n\n Player.prototype.reportUserActivity = function reportUserActivity(event) {\n this.userActivity_ = true;\n };\n\n /**\n * Get/set if user is active\n *\n * @fires Player#useractive\n * @fires Player#userinactive\n *\n * @param {boolean} [bool]\n * - true if the user is active\n * - false if the user is inactive\n *\n * @return {boolean}\n * The current value of userActive when getting\n */\n\n\n Player.prototype.userActive = function userActive(bool) {\n if (bool === undefined) {\n return this.userActive_;\n }\n\n bool = !!bool;\n\n if (bool === this.userActive_) {\n return;\n }\n\n this.userActive_ = bool;\n\n if (this.userActive_) {\n this.userActivity_ = true;\n this.removeClass('vjs-user-inactive');\n this.addClass('vjs-user-active');\n /**\n * @event Player#useractive\n * @type {EventTarget~Event}\n */\n this.trigger('useractive');\n return;\n }\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.userActivity_ = false;\n this.removeClass('vjs-user-active');\n this.addClass('vjs-user-inactive');\n /**\n * @event Player#userinactive\n * @type {EventTarget~Event}\n */\n this.trigger('userinactive');\n };\n\n /**\n * Listen for user activity based on timeout value\n *\n * @private\n */\n\n\n Player.prototype.listenForUserActivity_ = function listenForUserActivity_() {\n var mouseInProgress = void 0;\n var lastMoveX = void 0;\n var lastMoveY = void 0;\n var handleActivity = bind(this, this.reportUserActivity);\n\n var handleMouseMove = function handleMouseMove(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 var handleMouseDown = function handleMouseDown() {\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 var handleMouseUp = function handleMouseUp(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 var inactivityTimeout = void 0;\n\n this.setInterval(function () {\n // Check to see if mouse/touch activity has happened\n if (!this.userActivity_) {\n return;\n }\n\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\n if (timeout <= 0) {\n return;\n }\n\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 activity check loop\n // causing a flicker\n if (!this.userActivity_) {\n this.userActive(false);\n }\n }, timeout);\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 *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-playbackrate\n *\n * @param {number} [rate]\n * New playback rate to set.\n *\n * @return {number}\n * The current playback rate when getting or 1.0\n */\n\n\n Player.prototype.playbackRate = function playbackRate(rate) {\n if (rate !== undefined) {\n // NOTE: this.cache_.lastPlaybackRate is set from the tech handler\n // that is registered above\n this.techCall_('setPlaybackRate', rate);\n return;\n }\n\n if (this.tech_ && this.tech_.featuresPlaybackRate) {\n return this.cache_.lastPlaybackRate || this.techGet_('playbackRate');\n }\n return 1.0;\n };\n\n /**\n * Gets or sets the current default playback rate. A default playback rate of\n * 1.0 represents normal speed and 0.5 would indicate half-speed playback, for instance.\n * defaultPlaybackRate will only represent what the intial playbackRate of a video was, not\n * not the current playbackRate.\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-media-defaultplaybackrate\n *\n * @param {number} [rate]\n * New default playback rate to set.\n *\n * @return {number|Player}\n * - The default playback rate when getting or 1.0\n * - the player when setting\n */\n\n\n Player.prototype.defaultPlaybackRate = function defaultPlaybackRate(rate) {\n if (rate !== undefined) {\n return this.techCall_('setDefaultPlaybackRate', rate);\n }\n\n if (this.tech_ && this.tech_.featuresPlaybackRate) {\n return this.techGet_('defaultPlaybackRate');\n }\n return 1.0;\n };\n\n /**\n * Gets or sets the audio flag\n *\n * @param {boolean} bool\n * - true signals that this is an audio player\n * - false signals that this is not an audio player\n *\n * @return {boolean}\n * The current value of isAudio when getting\n */\n\n\n Player.prototype.isAudio = function isAudio(bool) {\n if (bool !== undefined) {\n this.isAudio_ = !!bool;\n return;\n }\n\n return !!this.isAudio_;\n };\n\n /**\n * A helper method for adding a {@link TextTrack} to our\n * {@link TextTrackList}.\n *\n * In addition to the W3C settings we allow adding additional info through options.\n *\n * @see http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-addtexttrack\n *\n * @param {string} [kind]\n * the kind of TextTrack you are adding\n *\n * @param {string} [label]\n * the label to give the TextTrack label\n *\n * @param {string} [language]\n * the language to set on the TextTrack\n *\n * @return {TextTrack|undefined}\n * the TextTrack that was added or undefined\n * if there is no tech\n */\n\n\n Player.prototype.addTextTrack = function addTextTrack(kind, label, language) {\n if (this.tech_) {\n return this.tech_.addTextTrack(kind, label, language);\n }\n };\n\n /**\n * Create a remote {@link TextTrack} and an {@link HTMLTrackElement}. It will\n * automatically removed from the video element whenever the source changes, unless\n * manualCleanup is set to false.\n *\n * @param {Object} options\n * Options to pass to {@link HTMLTrackElement} during creation. See\n * {@link HTMLTrackElement} for object properties that you should use.\n *\n * @param {boolean} [manualCleanup=true] if set to false, the TextTrack will be\n *\n * @return {HtmlTrackElement}\n * the HTMLTrackElement that was created and added\n * to the HtmlTrackElementList and the remote\n * TextTrackList\n *\n * @deprecated The default value of the \"manualCleanup\" parameter will default\n * to \"false\" in upcoming versions of Video.js\n */\n\n\n Player.prototype.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n if (this.tech_) {\n return this.tech_.addRemoteTextTrack(options, manualCleanup);\n }\n };\n\n /**\n * Remove a remote {@link TextTrack} from the respective\n * {@link TextTrackList} and {@link HtmlTrackElementList}.\n *\n * @param {Object} track\n * Remote {@link TextTrack} to remove\n *\n * @return {undefined}\n * does not return anything\n */\n\n\n Player.prototype.removeRemoteTextTrack = function removeRemoteTextTrack() {\n var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref3$track = _ref3.track,\n track = _ref3$track === undefined ? arguments[0] : _ref3$track;\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\n if (this.tech_) {\n return this.tech_.removeRemoteTextTrack(track);\n }\n };\n\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object|undefined}\n * An object with supported media playback quality metrics or undefined if there\n * is no tech or the tech does not support it.\n */\n\n\n Player.prototype.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return this.techGet_('getVideoPlaybackQuality');\n };\n\n /**\n * Get video width\n *\n * @return {number}\n * current video width\n */\n\n\n Player.prototype.videoWidth = function videoWidth() {\n return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;\n };\n\n /**\n * Get video height\n *\n * @return {number}\n * current video height\n */\n\n\n Player.prototype.videoHeight = function videoHeight() {\n return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;\n };\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]\n * the language code to set the player to\n *\n * @return {string}\n * The current language code when getting\n */\n\n\n Player.prototype.language = function language(code) {\n if (code === undefined) {\n return this.language_;\n }\n\n this.language_ = String(code).toLowerCase();\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}\n * An array of of supported languages\n */\n\n\n Player.prototype.languages = function languages() {\n return mergeOptions(Player.prototype.options_.languages, this.languages_);\n };\n\n /**\n * returns a JavaScript object reperesenting the current track\n * information. **DOES not return it as JSON**\n *\n * @return {Object}\n * Object representing the current of track info\n */\n\n\n Player.prototype.toJSON = function toJSON() {\n var options = mergeOptions(this.options_);\n var tracks = options.tracks;\n\n options.tracks = [];\n\n for (var i = 0; i < tracks.length; i++) {\n var 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 {@link 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 {@link ModalDialog#content}'s param of the same name.\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 {@link ModalDialog}.\n *\n * @return {ModalDialog}\n * the {@link ModalDialog} that was created\n */\n\n\n Player.prototype.createModal = function createModal(content, options) {\n var _this12 = this;\n\n options = options || {};\n options.content = content || '';\n\n var modal = new ModalDialog(this, options);\n\n this.addChild(modal);\n modal.on('dispose', function () {\n _this12.removeChild(modal);\n });\n\n modal.open();\n return modal;\n };\n\n /**\n * Gets tag settings\n *\n * @param {Element} tag\n * The player tag\n *\n * @return {Object}\n * An object containing all of the settings\n * for a player tag\n */\n\n\n Player.getTagSettings = function getTagSettings(tag) {\n var baseOptions = {\n sources: [],\n tracks: []\n };\n\n var tagOptions = getAttributes(tag);\n var dataSetup = tagOptions['data-setup'];\n\n if (hasClass(tag, 'vjs-fluid')) {\n tagOptions.fluid = true;\n }\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 var _safeParseTuple = safeParseTuple(dataSetup || '{}'),\n err = _safeParseTuple[0],\n data = _safeParseTuple[1];\n\n if (err) {\n log$1.error(err);\n }\n assign(tagOptions, data);\n }\n\n assign(baseOptions, tagOptions);\n\n // Get tag children settings\n if (tag.hasChildNodes()) {\n var children = tag.childNodes;\n\n for (var i = 0, j = children.length; i < j; i++) {\n var child = children[i];\n // Change case needed: http://ejohn.org/blog/nodename-case-sensitivity/\n var childName = child.nodeName.toLowerCase();\n\n if (childName === 'source') {\n baseOptions.sources.push(getAttributes(child));\n } else if (childName === 'track') {\n baseOptions.tracks.push(getAttributes(child));\n }\n }\n }\n\n return baseOptions;\n };\n\n /**\n * Determine wether or not flexbox is supported\n *\n * @return {boolean}\n * - true if flexbox is supported\n * - false if flexbox is not supported\n */\n\n\n Player.prototype.flexNotSupported_ = function flexNotSupported_() {\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 || 'webkitFlexBasis' in elem.style || 'mozFlexBasis' in elem.style || 'msFlexBasis' in elem.style ||\n // IE10-specific (2012 flex spec)\n 'msFlexOrder' in elem.style);\n };\n\n return Player;\n}(Component);\n\n/**\n * Get the {@link VideoTrackList}\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist\n *\n * @return {VideoTrackList}\n * the current video track list\n *\n * @method Player.prototype.videoTracks\n */\n\n/**\n * Get the {@link AudioTrackList}\n * @link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist\n *\n * @return {AudioTrackList}\n * the current audio track list\n *\n * @method Player.prototype.audioTracks\n */\n\n/**\n * Get the {@link TextTrackList}\n *\n * @link http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#dom-media-texttracks\n *\n * @return {TextTrackList}\n * the current text track list\n *\n * @method Player.prototype.textTracks\n */\n\n/**\n * Get the remote {@link TextTrackList}\n *\n * @return {TextTrackList}\n * The current remote text track list\n *\n * @method Player.prototype.remoteTextTracks\n */\n\n/**\n * Get the remote {@link HtmlTrackElementList} tracks.\n *\n * @return {HtmlTrackElementList}\n * The current remote text track element list\n *\n * @method Player.prototype.remoteTextTrackEls\n */\n\nALL.names.forEach(function (name$$1) {\n var props = ALL[name$$1];\n\n Player.prototype[props.getterName] = function () {\n if (this.tech_) {\n return this.tech_[props.getterName]();\n }\n\n // if we have not yet loadTech_, we create {video,audio,text}Tracks_\n // these will be passed to the tech during loading\n this[props.privateName] = this[props.privateName] || new props.ListClass();\n return this[props.privateName];\n };\n});\n\n/**\n * Global player list\n *\n * @type {Object}\n */\nPlayer.players = {};\n\nvar navigator = window.navigator;\n\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: Tech.defaultTechOrder_,\n\n html5: {},\n flash: {},\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: ['mediaLoader', 'posterImage', 'textTrackDisplay', 'loadingSpinner', 'bigPlayButton', 'controlBar', 'errorDisplay', 'textTrackSettings'],\n\n language: navigator && (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\nif (!IS_IE8) {\n Player.prototype.options_.children.push('resizeManager');\n}\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 Player#ended\n */\n'ended',\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 Player#seeking\n */\n'seeking',\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 Player#seekable\n */\n'seekable',\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 Player#networkState\n */\n'networkState',\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 Player#readyState\n */\n'readyState'].forEach(function (fn) {\n Player.prototype[fn] = function () {\n return this.techGet_(fn);\n };\n});\n\nTECH_EVENTS_RETRIGGER.forEach(function (event) {\n Player.prototype['handleTech' + toTitleCase(event) + '_'] = function () {\n return this.trigger(event);\n };\n});\n\n/**\n * Fired when the player has initial duration and dimension information\n *\n * @event Player#loadedmetadata\n * @type {EventTarget~Event}\n */\n\n/**\n * Fired when the player has downloaded data at the current playback position\n *\n * @event Player#loadeddata\n * @type {EventTarget~Event}\n */\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 Player#timeupdate\n * @type {EventTarget~Event}\n */\n\n/**\n * Fired when the volume changes\n *\n * @event Player#volumechange\n * @type {EventTarget~Event}\n */\n\n/**\n * Reports whether or not a player has a plugin available.\n *\n * This does not report whether or not the plugin has ever been initialized\n * on this player. For that, [usingPlugin]{@link Player#usingPlugin}.\n *\n * @method Player#hasPlugin\n * @param {string} name\n * The name of a plugin.\n *\n * @return {boolean}\n * Whether or not this player has the requested plugin available.\n */\n\n/**\n * Reports whether or not a player is using a plugin by name.\n *\n * For basic plugins, this only reports whether the plugin has _ever_ been\n * initialized on this player.\n *\n * @method Player#usingPlugin\n * @param {string} name\n * The name of a plugin.\n *\n * @return {boolean}\n * Whether or not this player is using the requested plugin.\n */\n\nComponent.registerComponent('Player', Player);\n\n/**\n * @file plugin.js\n */\n/**\n * The base plugin name.\n *\n * @private\n * @constant\n * @type {string}\n */\nvar BASE_PLUGIN_NAME = 'plugin';\n\n/**\n * The key on which a player's active plugins cache is stored.\n *\n * @private\n * @constant\n * @type {string}\n */\nvar PLUGIN_CACHE_KEY = 'activePlugins_';\n\n/**\n * Stores registered plugins in a private space.\n *\n * @private\n * @type {Object}\n */\nvar pluginStorage = {};\n\n/**\n * Reports whether or not a plugin has been registered.\n *\n * @private\n * @param {string} name\n * The name of a plugin.\n *\n * @returns {boolean}\n * Whether or not the plugin has been registered.\n */\nvar pluginExists = function pluginExists(name) {\n return pluginStorage.hasOwnProperty(name);\n};\n\n/**\n * Get a single registered plugin by name.\n *\n * @private\n * @param {string} name\n * The name of a plugin.\n *\n * @returns {Function|undefined}\n * The plugin (or undefined).\n */\nvar getPlugin = function getPlugin(name) {\n return pluginExists(name) ? pluginStorage[name] : undefined;\n};\n\n/**\n * Marks a plugin as \"active\" on a player.\n *\n * Also, ensures that the player has an object for tracking active plugins.\n *\n * @private\n * @param {Player} player\n * A Video.js player instance.\n *\n * @param {string} name\n * The name of a plugin.\n */\nvar markPluginAsActive = function markPluginAsActive(player, name) {\n player[PLUGIN_CACHE_KEY] = player[PLUGIN_CACHE_KEY] || {};\n player[PLUGIN_CACHE_KEY][name] = true;\n};\n\n/**\n * Triggers a pair of plugin setup events.\n *\n * @private\n * @param {Player} player\n * A Video.js player instance.\n *\n * @param {Plugin~PluginEventHash} hash\n * A plugin event hash.\n *\n * @param {Boolean} [before]\n * If true, prefixes the event name with \"before\". In other words,\n * use this to trigger \"beforepluginsetup\" instead of \"pluginsetup\".\n */\nvar triggerSetupEvent = function triggerSetupEvent(player, hash, before) {\n var eventName = (before ? 'before' : '') + 'pluginsetup';\n\n player.trigger(eventName, hash);\n player.trigger(eventName + ':' + hash.name, hash);\n};\n\n/**\n * Takes a basic plugin function and returns a wrapper function which marks\n * on the player that the plugin has been activated.\n *\n * @private\n * @param {string} name\n * The name of the plugin.\n *\n * @param {Function} plugin\n * The basic plugin.\n *\n * @returns {Function}\n * A wrapper function for the given plugin.\n */\nvar createBasicPlugin = function createBasicPlugin(name, plugin) {\n var basicPluginWrapper = function basicPluginWrapper() {\n\n // We trigger the \"beforepluginsetup\" and \"pluginsetup\" events on the player\n // regardless, but we want the hash to be consistent with the hash provided\n // for advanced plugins.\n //\n // The only potentially counter-intuitive thing here is the `instance` in\n // the \"pluginsetup\" event is the value returned by the `plugin` function.\n triggerSetupEvent(this, { name: name, plugin: plugin, instance: null }, true);\n\n var instance = plugin.apply(this, arguments);\n\n markPluginAsActive(this, name);\n triggerSetupEvent(this, { name: name, plugin: plugin, instance: instance });\n\n return instance;\n };\n\n Object.keys(plugin).forEach(function (prop) {\n basicPluginWrapper[prop] = plugin[prop];\n });\n\n return basicPluginWrapper;\n};\n\n/**\n * Takes a plugin sub-class and returns a factory function for generating\n * instances of it.\n *\n * This factory function will replace itself with an instance of the requested\n * sub-class of Plugin.\n *\n * @private\n * @param {string} name\n * The name of the plugin.\n *\n * @param {Plugin} PluginSubClass\n * The advanced plugin.\n *\n * @returns {Function}\n */\nvar createPluginFactory = function createPluginFactory(name, PluginSubClass) {\n\n // Add a `name` property to the plugin prototype so that each plugin can\n // refer to itself by name.\n PluginSubClass.prototype.name = name;\n\n return function () {\n triggerSetupEvent(this, { name: name, plugin: PluginSubClass, instance: null }, true);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var instance = new (Function.prototype.bind.apply(PluginSubClass, [null].concat([this].concat(args))))();\n\n // The plugin is replaced by a function that returns the current instance.\n this[name] = function () {\n return instance;\n };\n\n triggerSetupEvent(this, instance.getEventHash());\n\n return instance;\n };\n};\n\n/**\n * Parent class for all advanced plugins.\n *\n * @mixes module:evented~EventedMixin\n * @mixes module:stateful~StatefulMixin\n * @fires Player#beforepluginsetup\n * @fires Player#beforepluginsetup:$name\n * @fires Player#pluginsetup\n * @fires Player#pluginsetup:$name\n * @listens Player#dispose\n * @throws {Error}\n * If attempting to instantiate the base {@link Plugin} class\n * directly instead of via a sub-class.\n */\n\nvar Plugin = function () {\n\n /**\n * Creates an instance of this class.\n *\n * Sub-classes should call `super` to ensure plugins are properly initialized.\n *\n * @param {Player} player\n * A Video.js player instance.\n */\n function Plugin(player) {\n classCallCheck(this, Plugin);\n\n if (this.constructor === Plugin) {\n throw new Error('Plugin must be sub-classed; not directly instantiated.');\n }\n\n this.player = player;\n\n // Make this object evented, but remove the added `trigger` method so we\n // use the prototype version instead.\n evented(this);\n delete this.trigger;\n\n stateful(this, this.constructor.defaultState);\n markPluginAsActive(player, this.name);\n\n // Auto-bind the dispose method so we can use it as a listener and unbind\n // it later easily.\n this.dispose = bind(this, this.dispose);\n\n // If the player is disposed, dispose the plugin.\n player.on('dispose', this.dispose);\n }\n\n /**\n * Get the version of the plugin that was set on <pluginName>.VERSION\n */\n\n\n Plugin.prototype.version = function version() {\n return this.constructor.VERSION;\n };\n\n /**\n * Each event triggered by plugins includes a hash of additional data with\n * conventional properties.\n *\n * This returns that object or mutates an existing hash.\n *\n * @param {Object} [hash={}]\n * An object to be used as event an event hash.\n *\n * @returns {Plugin~PluginEventHash}\n * An event hash object with provided properties mixed-in.\n */\n\n\n Plugin.prototype.getEventHash = function getEventHash() {\n var hash = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n hash.name = this.name;\n hash.plugin = this.constructor;\n hash.instance = this;\n return hash;\n };\n\n /**\n * Triggers an event on the plugin object and overrides\n * {@link module:evented~EventedMixin.trigger|EventedMixin.trigger}.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash={}]\n * Additional data hash to merge with a\n * {@link Plugin~PluginEventHash|PluginEventHash}.\n *\n * @returns {boolean}\n * Whether or not default was prevented.\n */\n\n\n Plugin.prototype.trigger = function trigger$$1(event) {\n var hash = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return trigger(this.eventBusEl_, event, this.getEventHash(hash));\n };\n\n /**\n * Handles \"statechanged\" events on the plugin. No-op by default, override by\n * subclassing.\n *\n * @abstract\n * @param {Event} e\n * An event object provided by a \"statechanged\" event.\n *\n * @param {Object} e.changes\n * An object describing changes that occurred with the \"statechanged\"\n * event.\n */\n\n\n Plugin.prototype.handleStateChanged = function handleStateChanged(e) {};\n\n /**\n * Disposes a plugin.\n *\n * Subclasses can override this if they want, but for the sake of safety,\n * it's probably best to subscribe the \"dispose\" event.\n *\n * @fires Plugin#dispose\n */\n\n\n Plugin.prototype.dispose = function dispose() {\n var name = this.name,\n player = this.player;\n\n /**\n * Signals that a advanced plugin is about to be disposed.\n *\n * @event Plugin#dispose\n * @type {EventTarget~Event}\n */\n\n this.trigger('dispose');\n this.off();\n player.off('dispose', this.dispose);\n\n // Eliminate any possible sources of leaking memory by clearing up\n // references between the player and the plugin instance and nulling out\n // the plugin's state and replacing methods with a function that throws.\n player[PLUGIN_CACHE_KEY][name] = false;\n this.player = this.state = null;\n\n // Finally, replace the plugin name on the player with a new factory\n // function, so that the plugin is ready to be set up again.\n player[name] = createPluginFactory(name, pluginStorage[name]);\n };\n\n /**\n * Determines if a plugin is a basic plugin (i.e. not a sub-class of `Plugin`).\n *\n * @param {string|Function} plugin\n * If a string, matches the name of a plugin. If a function, will be\n * tested directly.\n *\n * @returns {boolean}\n * Whether or not a plugin is a basic plugin.\n */\n\n\n Plugin.isBasic = function isBasic(plugin) {\n var p = typeof plugin === 'string' ? getPlugin(plugin) : plugin;\n\n return typeof p === 'function' && !Plugin.prototype.isPrototypeOf(p.prototype);\n };\n\n /**\n * Register a Video.js plugin.\n *\n * @param {string} name\n * The name of the plugin to be registered. Must be a string and\n * must not match an existing plugin or a method on the `Player`\n * prototype.\n *\n * @param {Function} plugin\n * A sub-class of `Plugin` or a function for basic plugins.\n *\n * @returns {Function}\n * For advanced plugins, a factory function for that plugin. For\n * basic plugins, a wrapper function that initializes the plugin.\n */\n\n\n Plugin.registerPlugin = function registerPlugin(name, plugin) {\n if (typeof name !== 'string') {\n throw new Error('Illegal plugin name, \"' + name + '\", must be a string, was ' + (typeof name === 'undefined' ? 'undefined' : _typeof(name)) + '.');\n }\n\n if (pluginExists(name)) {\n log$1.warn('A plugin named \"' + name + '\" already exists. You may want to avoid re-registering plugins!');\n } else if (Player.prototype.hasOwnProperty(name)) {\n throw new Error('Illegal plugin name, \"' + name + '\", cannot share a name with an existing player method!');\n }\n\n if (typeof plugin !== 'function') {\n throw new Error('Illegal plugin for \"' + name + '\", must be a function, was ' + (typeof plugin === 'undefined' ? 'undefined' : _typeof(plugin)) + '.');\n }\n\n pluginStorage[name] = plugin;\n\n // Add a player prototype method for all sub-classed plugins (but not for\n // the base Plugin class).\n if (name !== BASE_PLUGIN_NAME) {\n if (Plugin.isBasic(plugin)) {\n Player.prototype[name] = createBasicPlugin(name, plugin);\n } else {\n Player.prototype[name] = createPluginFactory(name, plugin);\n }\n }\n\n return plugin;\n };\n\n /**\n * De-register a Video.js plugin.\n *\n * @param {string} name\n * The name of the plugin to be deregistered.\n */\n\n\n Plugin.deregisterPlugin = function deregisterPlugin(name) {\n if (name === BASE_PLUGIN_NAME) {\n throw new Error('Cannot de-register base plugin.');\n }\n if (pluginExists(name)) {\n delete pluginStorage[name];\n delete Player.prototype[name];\n }\n };\n\n /**\n * Gets an object containing multiple Video.js plugins.\n *\n * @param {Array} [names]\n * If provided, should be an array of plugin names. Defaults to _all_\n * plugin names.\n *\n * @returns {Object|undefined}\n * An object containing plugin(s) associated with their name(s) or\n * `undefined` if no matching plugins exist).\n */\n\n\n Plugin.getPlugins = function getPlugins() {\n var names = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.keys(pluginStorage);\n\n var result = void 0;\n\n names.forEach(function (name) {\n var plugin = getPlugin(name);\n\n if (plugin) {\n result = result || {};\n result[name] = plugin;\n }\n });\n\n return result;\n };\n\n /**\n * Gets a plugin's version, if available\n *\n * @param {string} name\n * The name of a plugin.\n *\n * @returns {string}\n * The plugin's version or an empty string.\n */\n\n\n Plugin.getPluginVersion = function getPluginVersion(name) {\n var plugin = getPlugin(name);\n\n return plugin && plugin.VERSION || '';\n };\n\n return Plugin;\n}();\n\n/**\n * Gets a plugin by name if it exists.\n *\n * @static\n * @method getPlugin\n * @memberOf Plugin\n * @param {string} name\n * The name of a plugin.\n *\n * @returns {Function|undefined}\n * The plugin (or `undefined`).\n */\n\n\nPlugin.getPlugin = getPlugin;\n\n/**\n * The name of the base plugin class as it is registered.\n *\n * @type {string}\n */\nPlugin.BASE_PLUGIN_NAME = BASE_PLUGIN_NAME;\n\nPlugin.registerPlugin(BASE_PLUGIN_NAME, Plugin);\n\n/**\n * Documented in player.js\n *\n * @ignore\n */\nPlayer.prototype.usingPlugin = function (name) {\n return !!this[PLUGIN_CACHE_KEY] && this[PLUGIN_CACHE_KEY][name] === true;\n};\n\n/**\n * Documented in player.js\n *\n * @ignore\n */\nPlayer.prototype.hasPlugin = function (name) {\n return !!pluginExists(name);\n};\n\n/**\n * Signals that a plugin is about to be set up on a player.\n *\n * @event Player#beforepluginsetup\n * @type {Plugin~PluginEventHash}\n */\n\n/**\n * Signals that a plugin is about to be set up on a player - by name. The name\n * is the name of the plugin.\n *\n * @event Player#beforepluginsetup:$name\n * @type {Plugin~PluginEventHash}\n */\n\n/**\n * Signals that a plugin has just been set up on a player.\n *\n * @event Player#pluginsetup\n * @type {Plugin~PluginEventHash}\n */\n\n/**\n * Signals that a plugin has just been set up on a player - by name. The name\n * is the name of the plugin.\n *\n * @event Player#pluginsetup:$name\n * @type {Plugin~PluginEventHash}\n */\n\n/**\n * @typedef {Object} Plugin~PluginEventHash\n *\n * @property {string} instance\n * For basic plugins, the return value of the plugin function. For\n * advanced plugins, the plugin instance on which the event is fired.\n *\n * @property {string} name\n * The name of the plugin.\n *\n * @property {string} plugin\n * For basic plugins, the plugin function. For advanced plugins, the\n * plugin class/constructor.\n */\n\n/**\n * @file extend.js\n * @module extend\n */\n\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 *\n * @param {Object} subClass\n * The class to inherit to\n *\n * @param {Object} superClass\n * The class to inherit from\n *\n * @private\n */\nvar _inherits = function _inherits(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 === 'undefined' ? 'undefined' : _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 *\n * @static\n * @const\n *\n * @param {Object} superClass\n * The class to inherit from\n *\n * @param {Object} [subClassMethods={}]\n * The class to inherit to\n *\n * @return {Object}\n * The new object with subClassMethods that inherited superClass.\n */\nvar extendFn = function extendFn(superClass) {\n var subClassMethods = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var subClass = function subClass() {\n superClass.apply(this, arguments);\n };\n\n var methods = {};\n\n if ((typeof subClassMethods === 'undefined' ? 'undefined' : _typeof(subClassMethods)) === 'object') {\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\n/**\n * @file video.js\n * @module videojs\n */\n// Include the built-in techs\n// HTML5 Element Shim for IE8\nif (typeof HTMLVideoElement === 'undefined' && isReal()) {\n document.createElement('video');\n document.createElement('audio');\n document.createElement('track');\n document.createElement('video-js');\n}\n\n/**\n * Normalize an `id` value by trimming off a leading `#`\n *\n * @param {string} id\n * A string, maybe with a leading `#`.\n *\n * @returns {string}\n * The string, without any leading `#`.\n */\nvar normalizeId = function normalizeId(id) {\n return id.indexOf('#') === 0 ? id.slice(1) : id;\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 *\n * @param {string|Element} id\n * Video element or video element ID\n *\n * @param {Object} [options]\n * Optional options object for config/settings\n *\n * @param {Component~ReadyCallback} [ready]\n * Optional ready callback\n *\n * @return {Player}\n * A player instance\n */\nfunction videojs(id, options, ready) {\n var player = videojs.getPlayer(id);\n\n if (player) {\n if (options) {\n log$1.warn('Player \"' + id + '\" is already initialised. Options will not be applied.');\n }\n if (ready) {\n player.ready(ready);\n }\n return player;\n }\n\n var el = typeof id === 'string' ? $('#' + normalizeId(id)) : id;\n\n if (!isEl(el)) {\n throw new TypeError('The element or ID supplied is not valid. (videojs)');\n }\n\n if (!document.body.contains(el)) {\n log$1.warn('The element supplied is not included in the DOM');\n }\n\n options = options || {};\n\n videojs.hooks('beforesetup').forEach(function (hookFunction) {\n var opts = hookFunction(el, mergeOptions(options));\n\n if (!isObject(opts) || Array.isArray(opts)) {\n log$1.error('please return an object in beforesetup hooks');\n return;\n }\n\n options = mergeOptions(options, opts);\n });\n\n // We get the current \"Player\" component here in case an integration has\n // replaced it with a custom player.\n var PlayerComponent = Component.getComponent('Player');\n\n player = new PlayerComponent(el, options, ready);\n\n videojs.hooks('setup').forEach(function (hookFunction) {\n return hookFunction(player);\n });\n\n return player;\n}\n\n/**\n * An Object that contains lifecycle hooks as keys which point to an array\n * of functions that are run when a lifecycle is triggered\n */\nvideojs.hooks_ = {};\n\n/**\n * Get a list of hooks for a specific lifecycle\n * @function videojs.hooks\n *\n * @param {string} type\n * the lifecyle to get hooks from\n *\n * @param {Function|Function[]} [fn]\n * Optionally add a hook (or hooks) to the lifecycle that your are getting.\n *\n * @return {Array}\n * an array of hooks, or an empty array if there are none.\n */\nvideojs.hooks = function (type, fn) {\n videojs.hooks_[type] = videojs.hooks_[type] || [];\n if (fn) {\n videojs.hooks_[type] = videojs.hooks_[type].concat(fn);\n }\n return videojs.hooks_[type];\n};\n\n/**\n * Add a function hook to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\nvideojs.hook = function (type, fn) {\n videojs.hooks(type, fn);\n};\n\n/**\n * Add a function hook that will only run once to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\nvideojs.hookOnce = function (type, fn) {\n videojs.hooks(type, [].concat(fn).map(function (original) {\n var wrapper = function wrapper() {\n videojs.removeHook(type, wrapper);\n return original.apply(undefined, arguments);\n };\n\n return wrapper;\n }));\n};\n\n/**\n * Remove a hook from a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle that the function hooked to\n *\n * @param {Function} fn\n * The hooked function to remove\n *\n * @return {boolean}\n * The function that was removed or undef\n */\nvideojs.removeHook = function (type, fn) {\n var index = videojs.hooks(type).indexOf(fn);\n\n if (index <= -1) {\n return false;\n }\n\n videojs.hooks_[type] = videojs.hooks_[type].slice();\n videojs.hooks_[type].splice(index, 1);\n\n return true;\n};\n\n// Add default styles\nif (window.VIDEOJS_NO_DYNAMIC_STYLE !== true && isReal()) {\n var style = $('.vjs-styles-defaults');\n\n if (!style) {\n style = createStyleElement('vjs-styles-defaults');\n var head = $('head');\n\n if (head) {\n head.insertBefore(style, head.firstChild);\n }\n 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\n// video in the DOM (weird behavior only with minified version)\nautoSetupTimeout(1, videojs);\n\n/**\n * Current software version. Follows 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 * @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}\n * The created players\n */\nvideojs.getPlayers = function () {\n return Player.players;\n};\n\n/**\n * Get a single player based on an ID or DOM element.\n *\n * This is useful if you want to check if an element or ID has an associated\n * Video.js player, but not create one if it doesn't.\n *\n * @param {string|Element} id\n * An HTML element - `<video>`, `<audio>`, or `<video-js>` -\n * or a string matching the `id` of such an element.\n *\n * @returns {Player|undefined}\n * A player instance or `undefined` if there is no player instance\n * matching the argument.\n */\nvideojs.getPlayer = function (id) {\n var players = Player.players;\n var tag = void 0;\n\n if (typeof id === 'string') {\n var nId = normalizeId(id);\n var player = players[nId];\n\n if (player) {\n return player;\n }\n\n tag = $('#' + nId);\n } else {\n tag = id;\n }\n\n if (isEl(tag)) {\n var _tag = tag,\n _player = _tag.player,\n playerId = _tag.playerId;\n\n // Element may have a `player` property referring to an already created\n // player instance. If so, return that.\n\n if (_player || players[playerId]) {\n return _player || players[playerId];\n }\n }\n};\n\n/**\n * Returns an array of all current players.\n *\n * @return {Array}\n * An array of all players. The array will be in the order that\n * `Object.keys` provides, which could potentially vary between\n * JavaScript engines.\n *\n */\nvideojs.getAllPlayers = function () {\n return (\n\n // Disposed players leave a key with a `null` value, so we need to make sure\n // we filter those out.\n Object.keys(Player.players).map(function (k) {\n return Player.players[k];\n }).filter(Boolean)\n );\n};\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 *\n * @borrows Component.getComponent as videojs.getComponent\n */\nvideojs.getComponent = Component.getComponent;\n\n/**\n * Register a component so it can referred to by name. Used when adding to other\n * components, either through addChild `component.addChild('myComponent')` or through\n * default children options `{ children: ['myComponent'] }`.\n *\n * > NOTE: You could also just initialize the component before adding.\n * `component.addChild(new MyComponent());`\n *\n * @param {string} name\n * The class name of the component\n *\n * @param {Component} comp\n * The component class\n *\n * @return {Component}\n * The newly registered component\n */\nvideojs.registerComponent = function (name$$1, comp) {\n if (Tech.isTech(comp)) {\n log$1.warn('The ' + name$$1 + ' tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)');\n }\n\n Component.registerComponent.call(Component, name$$1, comp);\n};\n\n/**\n * Get a Tech class object by name\n *\n * @borrows Tech.getTech as videojs.getTech\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 * @borrows Tech.registerTech as videojs.registerTech\n */\nvideojs.registerTech = Tech.registerTech;\n\n/**\n * Register a middleware to a source type.\n *\n * @param {String} type A string representing a MIME type.\n * @param {function(player):object} middleware A middleware factory that takes a player.\n */\nvideojs.use = use;\n\n/**\n * An object that can be returned by a middleware to signify\n * that the middleware is being terminated.\n *\n * @type {object}\n * @memberOf {videojs}\n * @property {object} middleware.TERMINATOR\n */\n// Object.defineProperty is not available in IE8\nif (!IS_IE8 && Object.defineProperty) {\n Object.defineProperty(videojs, 'middleware', {\n value: {},\n writeable: false,\n enumerable: true\n });\n\n Object.defineProperty(videojs.middleware, 'TERMINATOR', {\n value: TERMINATOR,\n writeable: false,\n enumerable: true\n });\n} else {\n videojs.middleware = { TERMINATOR: TERMINATOR };\n}\n\n/**\n * A suite of browser and device tests from {@link browser}.\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 since version 5.0\n * @type {boolean}\n */\nvideojs.TOUCH_ENABLED = TOUCH_ENABLED;\n\n/**\n * Subclass an existing class\n * Mimics ES6 subclassing with the `extend` keyword\n *\n * @borrows extend:extendFn as videojs.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 *\n * @borrows merge-options:mergeOptions as videojs.mergeOptions\n */\nvideojs.mergeOptions = mergeOptions;\n\n/**\n * Change the context (this) of a function\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 * @borrows fn:bind as videojs.bind\n */\nvideojs.bind = bind;\n\n/**\n * Register a Video.js plugin.\n *\n * @borrows plugin:registerPlugin as videojs.registerPlugin\n * @method registerPlugin\n *\n * @param {string} name\n * The name of the plugin to be registered. Must be a string and\n * must not match an existing plugin or a method on the `Player`\n * prototype.\n *\n * @param {Function} plugin\n * A sub-class of `Plugin` or a function for basic plugins.\n *\n * @return {Function}\n * For advanced plugins, a factory function for that plugin. For\n * basic plugins, a wrapper function that initializes the plugin.\n */\nvideojs.registerPlugin = Plugin.registerPlugin;\n\n/**\n * Deregister a Video.js plugin.\n *\n * @borrows plugin:deregisterPlugin as videojs.deregisterPlugin\n * @method deregisterPlugin\n *\n * @param {string} name\n * The name of the plugin to be deregistered. Must be a string and\n * must match an existing plugin or a method on the `Player`\n * prototype.\n *\n */\nvideojs.deregisterPlugin = Plugin.deregisterPlugin;\n\n/**\n * Deprecated method to register a plugin with Video.js\n *\n * @deprecated\n * videojs.plugin() is deprecated; use videojs.registerPlugin() instead\n *\n * @param {string} name\n * The plugin name\n *\n * @param {Plugin|Function} plugin\n * The plugin sub-class or function\n */\nvideojs.plugin = function (name$$1, plugin) {\n log$1.warn('videojs.plugin() is deprecated; use videojs.registerPlugin() instead');\n return Plugin.registerPlugin(name$$1, plugin);\n};\n\n/**\n * Gets an object containing multiple Video.js plugins.\n *\n * @param {Array} [names]\n * If provided, should be an array of plugin names. Defaults to _all_\n * plugin names.\n *\n * @return {Object|undefined}\n * An object containing plugin(s) associated with their name(s) or\n * `undefined` if no matching plugins exist).\n */\nvideojs.getPlugins = Plugin.getPlugins;\n\n/**\n * Gets a plugin by name if it exists.\n *\n * @param {string} name\n * The name of a plugin.\n *\n * @return {Function|undefined}\n * The plugin (or `undefined`).\n */\nvideojs.getPlugin = Plugin.getPlugin;\n\n/**\n * Gets a plugin's version, if available\n *\n * @param {string} name\n * The name of a plugin.\n *\n * @return {string}\n * The plugin's version or an empty string.\n */\nvideojs.getPluginVersion = Plugin.getPluginVersion;\n\n/**\n * Adding languages so that they're available to all players.\n * Example: `videojs.addLanguage('es', { 'Hello': 'Hola' });`\n *\n * @param {string} code\n * The language code or dictionary property\n *\n * @param {Object} data\n * The data values to be translated\n *\n * @return {Object}\n * The resulting language dictionary object\n */\nvideojs.addLanguage = function (code, data) {\n var _mergeOptions;\n\n code = ('' + code).toLowerCase();\n\n videojs.options.languages = mergeOptions(videojs.options.languages, (_mergeOptions = {}, _mergeOptions[code] = data, _mergeOptions));\n\n return videojs.options.languages[code];\n};\n\n/**\n * Log messages\n *\n * @borrows log:log as videojs.log\n */\nvideojs.log = log$1;\n\n/**\n * Creates an emulated TimeRange object.\n *\n * @borrows time-ranges:createTimeRanges as videojs.createTimeRange\n */\n/**\n * @borrows time-ranges:createTimeRanges as videojs.createTimeRanges\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 * @borrows format-time:formatTime as videojs.formatTime\n */\nvideojs.formatTime = formatTime;\n\n/**\n * Replaces format-time with a custom implementation, to be used in place of the default.\n *\n * @borrows format-time:setFormatTime as videojs.setFormatTime\n *\n * @method setFormatTime\n *\n * @param {Function} customFn\n * A custom format-time function which will be called with the current time and guide (in seconds) as arguments.\n * Passed fn should return a string.\n */\nvideojs.setFormatTime = setFormatTime;\n\n/**\n * Resets format-time to the default implementation.\n *\n * @borrows format-time:resetFormatTime as videojs.resetFormatTime\n *\n * @method resetFormatTime\n */\nvideojs.resetFormatTime = resetFormatTime;\n\n/**\n * Resolve and parse the elements of a URL\n *\n * @borrows url:parseUrl as videojs.parseUrl\n *\n */\nvideojs.parseUrl = parseUrl;\n\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @borrows url:isCrossOrigin as videojs.isCrossOrigin\n */\nvideojs.isCrossOrigin = isCrossOrigin;\n\n/**\n * Event target class.\n *\n * @borrows EventTarget as videojs.EventTarget\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 * @borrows events:on as videojs.on\n */\nvideojs.on = on;\n\n/**\n * Trigger a listener only once for an event\n *\n * @borrows events:one as videojs.one\n */\nvideojs.one = one;\n\n/**\n * Removes event listeners from an element\n *\n * @borrows events:off as videojs.off\n */\nvideojs.off = off;\n\n/**\n * Trigger an event for an element\n *\n * @borrows events:trigger as videojs.trigger\n */\nvideojs.trigger = trigger;\n\n/**\n * A cross-browser XMLHttpRequest wrapper. Here's a simple example:\n *\n * @param {Object} options\n * settings for the request.\n *\n * @return {XMLHttpRequest|XDomainRequest}\n * The request object.\n *\n * @see https://github.com/Raynos/xhr\n */\nvideojs.xhr = xhr;\n\n/**\n * TextTrack class\n *\n * @borrows TextTrack as videojs.TextTrack\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 * @borrows AudioTrack as videojs.AudioTrack\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 * @borrows VideoTrack as videojs.VideoTrack\n */\nvideojs.VideoTrack = VideoTrack;\n\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @borrows dom:isEl as videojs.isEl\n * @deprecated Use videojs.dom.isEl() instead\n */\n\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @borrows dom:isTextNode as videojs.isTextNode\n * @deprecated Use videojs.dom.isTextNode() instead\n */\n\n/**\n * Creates an element and applies properties.\n *\n * @borrows dom:createEl as videojs.createEl\n * @deprecated Use videojs.dom.createEl() instead\n */\n\n/**\n * Check if an element has a CSS class\n *\n * @borrows dom:hasElClass as videojs.hasClass\n * @deprecated Use videojs.dom.hasClass() instead\n */\n\n/**\n * Add a CSS class name to an element\n *\n * @borrows dom:addElClass as videojs.addClass\n * @deprecated Use videojs.dom.addClass() instead\n */\n\n/**\n * Remove a CSS class name from an element\n *\n * @borrows dom:removeElClass as videojs.removeClass\n * @deprecated Use videojs.dom.removeClass() instead\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 * @borrows dom:toggleElClass as videojs.toggleClass\n * @deprecated Use videojs.dom.toggleClass() instead\n */\n\n/**\n * Apply attributes to an HTML element.\n *\n * @borrows dom:setElAttributes as videojs.setAttribute\n * @deprecated Use videojs.dom.setAttributes() instead\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 * @borrows dom:getElAttributes as videojs.getAttributes\n * @deprecated Use videojs.dom.getAttributes() instead\n */\n\n/**\n * Empties the contents of an element.\n *\n * @borrows dom:emptyEl as videojs.emptyEl\n * @deprecated Use videojs.dom.emptyEl() instead\n */\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 * @borrows dom:appendContents as videojs.appendContet\n * @deprecated Use videojs.dom.appendContent() instead\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 * 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 * @borrows dom:insertContent as videojs.insertContent\n * @deprecated Use videojs.dom.insertContent() instead\n */\n['isEl', 'isTextNode', 'createEl', 'hasClass', 'addClass', 'removeClass', 'toggleClass', 'setAttributes', 'getAttributes', 'emptyEl', 'appendContent', 'insertContent'].forEach(function (k) {\n videojs[k] = function () {\n log$1.warn('videojs.' + k + '() is deprecated; use videojs.dom.' + k + '() instead');\n return Dom[k].apply(null, arguments);\n };\n});\n\n/**\n * A safe getComputedStyle with an IE8 fallback.\n *\n * This is because in Firefox, if the player is loaded in an iframe with `display:none`,\n * then `getComputedStyle` returns `null`, so, we do a null-check to make sure\n * that the player doesn't break in these cases.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=548397 for more details.\n *\n * @borrows computed-style:computedStyle as videojs.computedStyle\n */\nvideojs.computedStyle = computedStyle;\n\n/**\n * Export the Dom utilities for use in external plugins\n * and Tech's\n */\nvideojs.dom = Dom;\n\n/**\n * Export the Url utilities for use in external plugins\n * and Tech's\n */\nvideojs.url = Url;\n\nmodule.exports = videojs;\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\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","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\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","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"vue\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"zircle\"] = factory(require(\"vue\"));\n\telse\n\t\troot[\"zircle\"] = factory(root[\"Vue\"]);\n})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__8bbf__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = \"fb15\");\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"01f9\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar LIBRARY = __webpack_require__(\"2d00\");\nvar $export = __webpack_require__(\"5ca1\");\nvar redefine = __webpack_require__(\"2aba\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar $iterCreate = __webpack_require__(\"41a0\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar getPrototypeOf = __webpack_require__(\"38fd\");\nvar ITERATOR = __webpack_require__(\"2b4c\")('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"03dd\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-canvas.vue?vue&type=template&id=473e85dd&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"z-canvas\",class:[_vm.classes, _vm.$zircle.getTheme(), _vm.$zircle.getThemeMode()],style:([_vm.$zircle.getPreviousViewName() !== '' ? {cursor: 'zoom-out'} : {}]),attrs:{\"id\":\"z-container\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.goback($event)}}},[_c('div',{ref:\"zoom\",style:(_vm.zoom),attrs:{\"id\":\"z-zoomable-layer\"},on:{\"transitionend\":_vm.notify}},[_c('z-view-manager')],1)])}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/z-canvas.vue?vue&type=template&id=473e85dd&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-view-manager.vue?vue&type=template&id=4d70a21d&\nvar z_view_managervue_type_template_id_4d70a21d_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition-group',{attrs:{\"name\":_vm.$zircle.getNavigationMode() === 'forward' ? 'z-next' : 'z-prev',\"tag\":\"section\"}},[_vm._l((_vm.views),function(view){return _c(view.component,{key:view.name,tag:\"component\",class:{\n 'is-current-view': _vm.$zircle.getCurrentViewName() === view.name && _vm.$zircle.getRouterState() === false,\n 'is-previous-view': _vm.$zircle.getPreviousViewName() === view.name,\n 'is-past-view': _vm.$zircle.getPastViewName() === view.name\n }})}),(_vm.$zircle.getRouterState() === true && _vm.$zircle.getHistoryLength() >= 1)?_c('router-view',{key:_vm.$zircle.getCurrentViewName(),staticClass:\"is-current-view\"}):_vm._e()],2)}\nvar z_view_managervue_type_template_id_4d70a21d_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/child-components/z-view-manager.vue?vue&type=template&id=4d70a21d&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-view-manager.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* eslint-disable */\n/* harmony default export */ var z_view_managervue_type_script_lang_js_ = ({\n name: 'z-view-manager',\n computed: {\n views: function views() {\n return this.$zircle.getRouterState() === false ? this.$zircle.getHistory().slice(-3) : this.$zircle.getHistory().slice(-3, -1);\n }\n }\n});\n// CONCATENATED MODULE: ./src/components/child-components/z-view-manager.vue?vue&type=script&lang=js&\n /* harmony default export */ var child_components_z_view_managervue_type_script_lang_js_ = (z_view_managervue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(\"2877\");\n\n// CONCATENATED MODULE: ./src/components/child-components/z-view-manager.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n child_components_z_view_managervue_type_script_lang_js_,\n z_view_managervue_type_template_id_4d70a21d_render,\n z_view_managervue_type_template_id_4d70a21d_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"z-view-manager.vue\"\n/* harmony default export */ var z_view_manager = (component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-canvas.vue?vue&type=script&lang=js&\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* eslint-disable no-new */\n\n/* harmony default export */ var z_canvasvue_type_script_lang_js_ = ({\n name: 'z-canvas',\n props: {\n views: {\n type: [Object],\n required: true\n }\n },\n components: {\n ZViewManager: z_view_manager\n },\n computed: {\n zoom: function zoom() {\n var pos = {};\n this.$zircle.getHistoryLength() === 0 ? pos = {\n X: 0,\n Y: 0,\n Xi: 0,\n Yi: 0,\n scale: 1,\n scalei: 1\n } : pos = this.$zircle.getCurrentPosition();\n return {\n transform: 'scale(' + pos.scale + ') translate3d(' + pos.Xi + 'px, ' + pos.Yi + 'px, 0px)',\n transition: 'transform 1000ms ease-in-out'\n };\n },\n classes: function classes() {\n return {\n 'is-full-mode': this.$zircle.getAppMode() === 'full',\n 'is-mixed-mode': this.$zircle.getAppMode() === 'mixed'\n };\n }\n },\n methods: {\n notify: function notify() {\n this.$zircle.setNavigationMode('');\n },\n goback: function goback() {\n if (this.$zircle.getPreviousViewName() !== '' && this.$zircle.getBackwardNavigationState() === false) {\n if (this.$zircle.getRouterState() === false) {\n this.$zircle.goBack();\n } else {\n this.$router.back();\n }\n }\n }\n },\n created: function created() {\n this.$zircle.setComponentList(this.views);\n },\n mounted: function mounted() {\n var vm = this; // Get window dimension to set the initial width of ui components such as z-panel\n\n this.$zircle.getDimensions();\n window.addEventListener('resize', function (event) {\n // On resize change the width of ui components\n vm.$zircle.getDimensions();\n });\n }\n});\n// CONCATENATED MODULE: ./src/components/z-canvas.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_z_canvasvue_type_script_lang_js_ = (z_canvasvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./src/components/z-canvas.vue?vue&type=style&index=0&lang=sass&\nvar z_canvasvue_type_style_index_0_lang_sass_ = __webpack_require__(\"a296\");\n\n// CONCATENATED MODULE: ./src/components/z-canvas.vue\n\n\n\n\n\n\n/* normalize component */\n\nvar z_canvas_component = Object(componentNormalizer[\"a\" /* default */])(\n components_z_canvasvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nz_canvas_component.options.__file = \"z-canvas.vue\"\n/* harmony default export */ var z_canvas = __webpack_exports__[\"a\"] = (z_canvas_component.exports);\n\n/***/ }),\n\n/***/ \"07a4\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// EXTERNAL MODULE: external {\"commonjs\":\"vue\",\"commonjs2\":\"vue\",\"root\":\"Vue\"}\nvar external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(\"8bbf\");\nvar external_commonjs_vue_commonjs2_vue_root_Vue_default = /*#__PURE__*/__webpack_require__.n(external_commonjs_vue_commonjs2_vue_root_Vue_);\n\n// CONCATENATED MODULE: ./src/store/state.js\n\nvar state = new external_commonjs_vue_commonjs2_vue_root_Vue_default.a({\n data: {\n // app Mode\n appMode: 'full',\n // navigation\n navigationMode: 'forward',\n isRouterEnabled: false,\n router: {},\n history: [],\n backwardNavigation: false,\n componentList: {},\n // look & feel\n diameters: {\n xxl: 200,\n xl: 124,\n l: 76,\n m: 47,\n s: 29,\n xs: 18\n },\n appStyle: {\n theme: 'theme-black',\n mode: 'mode-dark'\n },\n // pagination components\n currentPage: 0,\n items: [],\n pages: [],\n params: {},\n // debug\n debug: false\n }\n});\n/* harmony default export */ var store_state = (state);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.assign.js\nvar es6_object_assign = __webpack_require__(\"f751\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\nvar es6_function_name = __webpack_require__(\"7f7f\");\n\n// CONCATENATED MODULE: ./src/store/modules/router.js\n\n\nvar router = {\n getRouterState: function getRouterState() {\n return store_store.state.isRouterEnabled;\n },\n setRouterHooks: function setRouterHooks() {\n store_store.state.router.beforeEach(function (to, from, next) {\n if (store_store.actions.getNavigationMode() === 'forward' && store_store.state.history.length >= 1) {\n store_store.actions.setLog('VueRouter: zoom-in to ' + to.name);\n next();\n } else {\n if (store_store.state.history.length > 1) {\n store_store.actions.goBack();\n store_store.actions.setLog('VueRouter: zoom-out to ' + to.name);\n next();\n }\n }\n });\n }\n};\n/* harmony default export */ var modules_router = (router);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js\nvar es6_number_constructor = __webpack_require__(\"c5f6\");\n\n// CONCATENATED MODULE: ./src/store/modules/position.js\n\n\n\nfunction calcCoords(distance, angle, parentSize) {\n var X = 0;\n var Y = 0;\n var Xi = 0;\n var Yi = 0;\n\n if (distance !== 0) {\n X = store_store.actions.getComponentWidth(parentSize) / 2 * distance / 100 * Math.cos(angle * (Math.PI / 180));\n Y = store_store.actions.getComponentWidth(parentSize) / 2 * distance / 100 * Math.sin(angle * (Math.PI / 180));\n X > 0 ? Xi = -Math.abs(Number(X)) : Xi = Math.abs(Number(X));\n Y > 0 ? Yi = -Math.abs(Number(Y)) : Yi = Math.abs(Number(Y));\n }\n\n return {\n X: X,\n Y: Y,\n Xi: Xi,\n Yi: Yi\n };\n}\n\nfunction determinePosition(pos) {\n if (store_store.state.history[store_store.state.history.length - pos]) {\n return store_store.state.history[store_store.state.history.length - pos].position;\n } else {\n return {\n X: 0,\n Y: 0,\n Xi: 0,\n Yi: 0,\n scale: 0,\n scalei: 0\n };\n }\n}\n\nvar position_position = {\n getCurrentPosition: function getCurrentPosition() {\n return store_store.state.history[store_store.state.history.length - 1].position;\n },\n getPreviousPosition: function getPreviousPosition() {\n return determinePosition(2);\n },\n getPastPosition: function getPastPosition() {\n return determinePosition(3);\n },\n calcViewPosition: function calcViewPosition(viewName) {\n store_store.actions.setLog('calcViewPosition() ' + viewName);\n return store_store.actions.getCurrentViewName() === viewName ? store_store.actions.getCurrentPosition() : store_store.actions.getPastPosition();\n },\n calcPosition: function calcPosition(component) {\n store_store.actions.setLog('calcPosition() => ' + component.componentType); // Variable declaration\n\n var parentPosition = {\n Xi: 0,\n Yi: 0,\n X: 0,\n Y: 0,\n scalei: 1,\n scale: 1\n };\n var newCoords = calcCoords(component.distance, component.angle, component.$parent.size);\n if (component.$parent.componentType === 'z-view' || component.$parent.componentType === 'z-list' || component.$parent.componentType === 'z-spot') parentPosition = {\n Xi: component.$parent.position.Xi,\n Yi: component.$parent.position.Yi,\n X: component.$parent.position.X,\n Y: component.$parent.position.Y,\n scalei: component.$parent.position.scalei,\n scale: component.$parent.position.scale\n };\n var newPosition = {\n X: newCoords.X,\n Y: newCoords.Y,\n Xi: parentPosition.Xi + newCoords.Xi * parentPosition.scalei,\n Yi: parentPosition.Yi + newCoords.Yi * parentPosition.scalei,\n scale: parentPosition.scale * store_store.state.diameters.xxl / store_store.actions.getComponentWidth(component.size),\n scalei: parentPosition.scalei * store_store.actions.getComponentWidth(component.size) / store_store.state.diameters.xxl,\n Xabs: parentPosition.X + newCoords.X * parentPosition.scalei,\n Yabs: parentPosition.Y + newCoords.Y * parentPosition.scalei\n };\n return newPosition;\n }\n};\n/* harmony default export */ var modules_position = (position_position);\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.find.js\nvar es6_array_find = __webpack_require__(\"7514\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.array.iterator.js\nvar es6_array_iterator = __webpack_require__(\"cadf\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.object.keys.js\nvar es6_object_keys = __webpack_require__(\"456d\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/web.dom.iterable.js\nvar web_dom_iterable = __webpack_require__(\"ac6a\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.split.js\nvar es6_regexp_split = __webpack_require__(\"28a5\");\n\n// CONCATENATED MODULE: ./src/store/modules/navigation.js\n\n\n\n\n\n\n\n\n\n\nfunction retrieveViewName(pos) {\n var viewName = '';\n\n if (store_store.state.history.length >= pos) {\n viewName = store_store.state.history[store_store.state.history.length - pos].name;\n }\n\n return viewName;\n}\n\nfunction papa(view, position, params) {\n return store_store.state.history.push({\n name: view.name,\n position: position,\n params: params,\n component: store_store.actions.resolveComponent(store_store.actions.getComponentList(), view.name)\n });\n}\n\nfunction transformViewName(view) {\n view = view.toLowerCase();\n var count = 0;\n\n for (var i = 1; i <= store_store.state.history.length; i++) {\n if (store_store.state.history[store_store.state.history.length - i].name.split('--')[0] === view) {\n count += 1;\n }\n }\n\n return view + '--' + count;\n}\n\nfunction createRoute(path, name, component) {\n if (store_store.state.isRouterEnabled && store_store.state.router.resolve(path).route.matched[0] === undefined) {\n store_store.state.router.addRoutes([{\n path: path,\n name: name,\n component: component\n }]);\n store_store.actions.setLog('VueRouter: route added ' + name, component);\n }\n}\n\nfunction parseView(data) {\n if (typeof data === 'string') {\n var name = transformViewName(data);\n var route = '/' + name;\n createRoute(route, name, store_store.actions.resolveComponent(store_store.actions.getComponentList(), name));\n } else {\n name = transformViewName(data.name);\n var params = data.params;\n var paramPath = '';\n Object.keys(params).forEach(function (key) {\n paramPath += '/' + key + '/:' + key;\n });\n var path = '/' + name + paramPath;\n route = {\n name: name,\n params: data.params\n };\n createRoute(path, name, store_store.actions.resolveComponent(store_store.actions.getComponentList(), name));\n }\n\n return {\n name: name,\n route: route\n };\n}\n\nvar navigation = {\n resolveComponent: function resolveComponent(list, view) {\n view = view.split('--')[0];\n var key = Object.keys(list).find(function (k) {\n if (k.toLowerCase() === view) return k;\n });\n\n if (key) {\n return list[key];\n } else {\n return external_commonjs_vue_commonjs2_vue_root_Vue_default.a.component('missing', {\n render: function render(h) {\n return h('z-view', view + ' not found');\n }\n });\n }\n },\n setComponentList: function setComponentList(list) {\n store_store.state.componentList = Object.assign({}, store_store.state.componentList, list);\n },\n getComponentList: function getComponentList() {\n return store_store.state.componentList;\n },\n getCurrentViewName: function getCurrentViewName() {\n return retrieveViewName(1);\n },\n getPreviousViewName: function getPreviousViewName() {\n return retrieveViewName(2);\n },\n getPastViewName: function getPastViewName() {\n return retrieveViewName(3);\n },\n getHistoryLength: function getHistoryLength() {\n return store_store.state.history.length;\n },\n getHistory: function getHistory() {\n return store_store.state.history.slice(0);\n },\n setNavigationMode: function setNavigationMode(value) {\n if (value === 'forward' || value === 'backward' || value === '') {\n store_store.state.navigationMode = value;\n if (value === '') value = 'iddle';\n store_store.actions.setLog('Navigation mode is ' + value);\n }\n },\n getNavigationMode: function getNavigationMode() {\n return store_store.state.navigationMode;\n },\n getBackwardNavigationState: function getBackwardNavigationState() {\n return store_store.state.backwardNavigation;\n },\n allowBackwardNavigation: function allowBackwardNavigation(value) {\n if (value !== store_store.state.backwardNavigation) {\n store_store.state.backwardNavigation = value;\n }\n },\n setView: function setView(data, options) {\n if (store_store.state.history.length < 6) {\n var view = parseView(data);\n var position = {};\n !options ? position = {\n X: 0,\n Y: 0,\n scale: 1,\n Xi: 0,\n Yi: 0,\n scalei: 1\n } : position = options.position;\n papa(view, position, view.route.params);\n store_store.actions.setNavigationMode('forward');\n view.route && store_store.state.isRouterEnabled === true ? store_store.state.router.push(view.route) : store_store.state.params = view.route.params;\n } else {\n store_store.actions.setLog('Max zoom level reached');\n }\n },\n goBack: function goBack() {\n if (store_store.state.history.length > 1) {\n store_store.actions.setNavigationMode('backward');\n store_store.state.history.pop();\n store_store.state.isRouterEnabled === true ? store_store.state.params = '' : store_store.state.params = store_store.state.history[store_store.state.history.length - 1].params;\n store_store.actions.setLog('goBack() => ' + store_store.state.history[store_store.state.history.length - 1].name);\n }\n }\n};\n/* harmony default export */ var modules_navigation = (navigation);\n// CONCATENATED MODULE: ./src/store/modules/responsiveness.js\n\n\nfunction setDiameter(size) {\n var diameter = store_store.state.diameters[size];\n return diameter;\n}\n\nvar mediaQuery = [{\n // small devices\n media: window.matchMedia('(max-width: 319px)'),\n width: {\n xxl: 200,\n xl: 124,\n l: 76,\n m: 47,\n s: 29,\n xs: 18,\n xxs: 9\n }\n}, {\n // medium\n media: window.matchMedia('(min-width: 320px)'),\n width: {\n xxl: 230,\n xl: 142,\n l: 88,\n m: 54,\n s: 34,\n xs: 21,\n xxs: 10\n }\n}, {\n // medium - large devices portrait\n media: window.matchMedia('(min-width: 375px) and (orientation: portrait)'),\n width: {\n xxl: 260,\n xl: 161,\n l: 99,\n m: 61,\n s: 38,\n xs: 23,\n xxs: 11\n }\n}, {\n // medium - large devices landscape\n media: window.matchMedia('(min-width: 375px) and (orientation: landscape)'),\n width: {\n xxl: 270,\n xl: 167,\n l: 103,\n m: 64,\n s: 39,\n xs: 24,\n xxs: 12\n }\n}, {\n // tablets portrait\n media: window.matchMedia('(min-width: 768px) and (orientation: portrait) and (min-pixel-ratio: 2)'),\n width: {\n xxl: 340,\n xl: 210,\n l: 130,\n m: 80,\n s: 50,\n xs: 31,\n xxs: 14\n }\n}, {\n // tablets landscape\n media: window.matchMedia('(min-width: 768px) and (orientation: landscape)'),\n width: {\n xxl: 360,\n xl: 222,\n l: 138,\n m: 85,\n s: 53,\n xs: 32,\n xxs: 15\n }\n}, {\n // desktop or large tablets portrait\n media: window.matchMedia('(min-width: 992px) and (orientation: portrait)'),\n width: {\n xxl: 420,\n xl: 260,\n l: 160,\n m: 99,\n s: 61,\n xs: 38,\n xxs: 16\n }\n}, {\n // desktop or large tablets landscape\n media: window.matchMedia('(min-width: 992px) and (orientation: landscape)'),\n width: {\n xxl: 420,\n xl: 260,\n l: 160,\n m: 99,\n s: 61,\n xs: 38,\n xxs: 16\n }\n}, {\n // large desktop\n media: window.matchMedia('(min-width: 1200px) and (orientation: portrait)'),\n width: {\n xxl: 450,\n xl: 278,\n l: 172,\n m: 106,\n s: 66,\n xs: 41,\n xxs: 20\n }\n}, {\n // xxl desktop\n media: window.matchMedia('(min-width: 1800px)'),\n width: {\n xxl: 450,\n xl: 278,\n l: 172,\n m: 106,\n s: 66,\n xs: 41,\n xxs: 20\n }\n}];\nvar responsiveness = {\n getComponentWidth: function getComponentWidth(size) {\n var sizes = size.toLowerCase();\n if (sizes === 'extralarge') sizes = 'xl';\n if (sizes === 'large') sizes = 'l';\n if (sizes === 'medium') sizes = 'm';\n if (sizes === 'small') sizes = 's';\n if (sizes === 'extrasmall') sizes = 'xs';\n var result = setDiameter(sizes);\n return result;\n },\n getDimensions: function getDimensions() {\n if (store_store.actions.getAppMode() === 'full') {\n for (var i = 0; i < mediaQuery.length; i++) {\n if (mediaQuery[i].media.matches) store_store.state.diameters = mediaQuery[i].width;\n }\n\n store_store.actions.setLog('getDimensions() at appMode full. z-view new diameter: ' + store_store.state.diameters.xxl);\n } else if (store_store.actions.getAppMode() === 'mixed') {\n var vp = document.getElementById('z-container').offsetWidth;\n\n if (vp <= 319) {\n store_store.state.diameters = mediaQuery[0].width;\n } else if (vp >= 320 && vp <= 374) {\n store_store.state.diameters = mediaQuery[1].width;\n } else if (vp >= 375 && vp <= 767) {\n store_store.state.diameters = mediaQuery[2].width;\n } else if (vp >= 768 && vp <= 991) {\n store_store.state.diameters = mediaQuery[4].width;\n } else if (vp >= 992 && vp <= 1199) {\n store_store.state.diameters = mediaQuery[6].width;\n } else if (vp >= 1200 && vp <= 1799) {\n store_store.state.diameters = mediaQuery[8].width;\n } else if (vp >= 1800) {\n store_store.state.diameters = mediaQuery[9].width;\n }\n\n store_store.actions.setLog('getDimensions() at appMode mixed. z-view new diameter: ' + store_store.state.diameters.xxl);\n }\n }\n};\n/* harmony default export */ var modules_responsiveness = (responsiveness);\n// CONCATENATED MODULE: ./src/store/modules/themes.js\n\nvar themes = {\n getTheme: function getTheme() {\n return store_store.state.appStyle.theme;\n },\n getThemeMode: function getThemeMode() {\n return store_store.state.appStyle.mode;\n }\n};\n/* harmony default export */ var modules_themes = (themes);\n// CONCATENATED MODULE: ./src/store/modules/debug.js\n\nvar debug = {\n setLog: function setLog(msg, type) {\n var bgColor = '';\n var color = '';\n type === 'warn' ? (bgColor = 'yellow', color = 'black') : type === 'error' ? (bgColor = 'red', color = 'white') : (bgColor = 'green', color = 'white'); // eslint-disable-line\n\n if (store_store.state.debug && msg === 'Navigation mode is forward' && store_store.actions.getHistoryLength() === 1) {\n console.groupCollapsed('%c Z ', 'background: gray; color: white', 'Initial view'); // eslint-disable-line no-console\n } else if (store_store.state.debug && msg === 'Navigation mode is forward' && store_store.actions.getHistoryLength() >= 1) {\n console.groupCollapsed('%c Z ', 'background: gray; color: white', 'Zoom-in to new view'); // eslint-disable-line no-console\n } else if (store_store.state.debug && msg === 'Navigation mode is backward') {\n console.groupCollapsed('%c Z ', 'background: gray; color: white', 'Zoom-out to previous view'); // eslint-disable-line no-console\n } else if (store_store.state.debug && msg === 'Navigation mode is iddle') {\n console.groupEnd(); // eslint-disable-line no-console\n } else if (store_store.state.debug) {\n console.log('%c z ', 'background: ' + bgColor + '; color: ' + color + '', msg); // eslint-disable-line no-console\n }\n },\n getState: function getState() {\n return store_store.state.$data;\n }\n};\n/* harmony default export */ var modules_debug = (debug);\n// CONCATENATED MODULE: ./src/store/modules/list.js\n\nvar list_list = {\n setPages: function setPages(value) {\n store_store.state.pages = value;\n },\n getPages: function getPages() {\n return store_store.state.pages;\n },\n getNumberOfPages: function getNumberOfPages() {\n return store_store.state.pages.length;\n },\n getCurrentPage: function getCurrentPage() {\n return store_store.state.pages[store_store.state.currentPage];\n },\n getCurrentPageIndex: function getCurrentPageIndex() {\n return store_store.state.currentPage;\n },\n setCurrentPageIndex: function setCurrentPageIndex(value) {\n store_store.state.currentPage = value;\n },\n getNumberOfItemsInCurrentPage: function getNumberOfItemsInCurrentPage() {\n return store_store.state.pages[store_store.state.currentPage].length;\n },\n setParams: function setParams(value) {\n store_store.state.params = value;\n },\n getParams: function getParams() {\n return store_store.state.params;\n }\n};\n/* harmony default export */ var modules_list = (list_list);\n// CONCATENATED MODULE: ./src/store/modules/app.js\n\nvar app = {\n getAppMode: function getAppMode() {\n return store_store.state.appMode;\n },\n config: function config(_config) {\n if (_config.debug === true || _config.debug === false) store_store.state.debug = _config.debug;\n\n if (store_store.state.debug === true) {\n store_store.actions.setLog('config:');\n store_store.actions.setLog('- Debug enabled');\n }\n\n if (_config.mode === 'full' || _config.mode === 'mixed') {\n store_store.state.appMode = _config.mode;\n store_store.actions.setLog('- Mode: ' + _config.mode);\n }\n\n if (_config.style && _config.style.theme) {\n store_store.state.appStyle.theme = 'theme-' + _config.style.theme;\n store_store.actions.setLog('- Theme: ' + _config.style.theme);\n }\n\n if (_config.style && _config.style.mode) {\n store_store.state.appStyle.mode = 'mode-' + _config.style.mode;\n store_store.actions.setLog('- Theme mode: ' + _config.style.mode);\n }\n\n if (_config.router) {\n store_store.state.router = _config.router;\n store_store.state.isRouterEnabled = true;\n store_store.actions.setRouterHooks();\n store_store.actions.setLog('- VueRouter enabled');\n if (store_store.actions.getAppMode() === 'mixed') store_store.actions.setLog('You should not use VueRouter when Zircle is in mixed mode.', 'warn');\n }\n }\n};\n/* harmony default export */ var modules_app = (app);\n// CONCATENATED MODULE: ./src/store/actions.js\n\n\n\n\n\n\n\n\n\nvar actions = Object.assign({}, modules_router, modules_position, modules_navigation, modules_responsiveness, modules_themes, modules_list, modules_debug, modules_app);\n/* harmony default export */ var store_actions = (actions);\n// CONCATENATED MODULE: ./src/store/store.js\n\n\nvar store = {\n state: store_state,\n actions: store_actions\n};\n/* harmony default export */ var store_store = __webpack_exports__[\"a\"] = (store);\n\n/***/ }),\n\n/***/ \"0a49\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = __webpack_require__(\"9b43\");\nvar IObject = __webpack_require__(\"626a\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar toLength = __webpack_require__(\"9def\");\nvar asc = __webpack_require__(\"cd1c\");\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n\n\n/***/ }),\n\n/***/ \"0d58\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"0dda\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-spot.vue?vue&type=template&id=5777992c&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"z-shape is-extension\",class:[_vm.componentType, _vm.classes],style:(_vm.responsive === true ? _vm.styles.main : _vm.zpos.main),attrs:{\"role\":_vm.button === true ? 'button' : ''},on:{\"mouseover\":_vm.spotin,\"mouseout\":_vm.spotout,\"mousedown\":_vm.pulse,\"touchstart\":_vm.pulse,\"mouseup\":_vm.move}},[(!_vm.button)?_c('div',{ref:\"spot\",staticClass:\"z-outer-spot\",style:(_vm.styles.plate)}):_vm._e(),_c('div',{ref:\"pulse\",staticClass:\"z-pulse\"}),(_vm.knob)?_c('z-knob',{attrs:{\"qty\":_vm.computedQty,\"unit\":_vm.unit,\"min\":_vm.min,\"max\":_vm.max},on:{\"update:qty\":function($event){_vm.computedQty=$event}}}):_vm._e(),(_vm.slider === true)?_c('z-slider',{attrs:{\"progress\":_vm.progress}}):_vm._e(),(_vm.label)?_c('div',{staticClass:\"z-label\",class:_vm.labelPos,style:(_vm.$zircle.getThemeMode() === 'mode-light-filled' ? 'color: var(--accent-text-and-border-color);' : '')},[_c('div',{staticClass:\"inside\"},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\" \"),(_vm.pos === 'outside')?_c('span',[_vm._v(\" \"+_vm._s(_vm.progressLabel))]):_vm._e()])]):_vm._e(),_c('div',{staticClass:\"z-content\"},[(_vm.imagePath)?_c('img',{attrs:{\"src\":_vm.imagePath,\"width\":\"100%\",\"height\":\"100%\"}}):_vm._e(),(!_vm.imagePath)?_vm._t(\"image\"):_vm._e()],2),_c('div',{staticClass:\"z-content\",staticStyle:{\"z-index\":\"10\"}},[_c('span',{staticClass:\"overflow\"},[(_vm.pos === 'inside' || _vm.pos === undefined )?_c('span',[_vm._v(_vm._s(_vm.progressLabel))]):_vm._e(),_vm._t(\"default\")],2)]),_vm._t(\"extension\")],2)}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/z-spot.vue?vue&type=template&id=5777992c&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\nvar es6_function_name = __webpack_require__(\"7f7f\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js\nvar es6_number_constructor = __webpack_require__(\"c5f6\");\n\n// EXTERNAL MODULE: ./src/components/child-components/z-slider.vue + 4 modules\nvar z_slider = __webpack_require__(\"0e89\");\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-knob.vue?vue&type=template&id=aa866fa2&\nvar z_knobvue_type_template_id_aa866fa2_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('svg',{ref:\"bar\",staticClass:\"z-range-bar\",attrs:{\"viewBox\":\"0 0 100 100\",\"xmlns\":\"http://www.w3.org/2000/svg\"},on:{\"click\":function($event){$event.preventDefault();return _vm.bar($event)}}},[_c('circle',{style:([_vm.styles]),attrs:{\"r\":\"52\",\"cx\":\"50\",\"cy\":\"50\"}})]),_c('svg',{staticClass:\"z-range-bar-bar\",style:(_vm.circleStyle),attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\"},on:{\"touchstart\":function($event){_vm.drag = true},\"touchmove\":function($event){$event.preventDefault();return _vm.handleBar($event)},\"touchend\":function($event){_vm.drag = false},\"mousedown\":function($event){_vm.drag = true},\"mousemove\":function($event){$event.preventDefault();return _vm.handleBar($event)},\"mouseup\":function($event){_vm.drag = false}}},[_c('circle',{staticClass:\"z-range-bar-handlebar\",attrs:{\"r\":\"8\",\"cx\":\"20\",\"cy\":\"20\"}})])])}\nvar z_knobvue_type_template_id_aa866fa2_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/child-components/z-knob.vue?vue&type=template&id=aa866fa2&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-knob.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var z_knobvue_type_script_lang_js_ = ({\n name: 'z-knob',\n props: {\n qty: {\n type: [Number]\n },\n min: {\n type: [Number]\n },\n max: {\n type: [Number]\n },\n pos: {\n type: [String]\n }\n },\n data: function data() {\n return {\n componentType: this.$options.name,\n drag: false,\n angle: 0,\n prevAngle: 0\n };\n },\n computed: {\n position: function position() {\n var diameter = this.$zircle.getComponentWidth(this.$parent.size) / 2;\n return {\n X: (diameter - 3) * Math.cos(this.angle * (Math.PI / 180)),\n Y: (diameter - 3) * Math.sin(this.angle * (Math.PI / 180)),\n arc: Math.PI * 100 * ((this.angle - 360) / 360)\n };\n },\n styles: function styles() {\n var circleLength = 2 * Math.PI * 50;\n return {\n transformOrigin: '50% 50%',\n transform: 'rotate(0deg)',\n strokeDasharray: circleLength,\n strokeDashoffset: -this.position.arc,\n strokeWidth: 11\n };\n },\n circleStyle: function circleStyle() {\n return {\n transformOrigin: '50% 50%',\n transform: 'translate3d(' + this.position.X + 'px, ' + this.position.Y + 'px, 0px)'\n };\n }\n },\n watch: {\n qty: function qty() {\n this.angle = Math.round((this.qty - this.min) * 360 / (this.max - this.min));\n }\n },\n methods: {\n bar: function bar(e) {\n e = e.changedTouches ? e.changedTouches[0] : e;\n var dimensions = this.$refs.bar.getBoundingClientRect();\n var centerx = dimensions.width / 2 + dimensions.left;\n var centery = dimensions.height / 2 + dimensions.top;\n var posx = e.pageX;\n var posy = e.pageY;\n var deltay = centery - posy;\n var deltax = centerx - posx;\n var tangle = Math.atan2(deltay, deltax) * (180 / Math.PI);\n tangle -= 180;\n tangle = Math.round(tangle);\n if (tangle < 0) tangle = 360 + tangle;\n var prevAngle = Math.round(this.angle);\n var vm = this;\n var id = setInterval(function () {\n if (prevAngle > tangle) {\n prevAngle--;\n } else if (prevAngle < tangle) {\n prevAngle++;\n } else {\n clearInterval(id);\n }\n\n vm.angle = prevAngle;\n vm.$emit('update:qty', Math.round(prevAngle / 360 * (vm.max - vm.min)) + vm.min);\n }, 0);\n },\n handleBar: function handleBar(e) {\n if (this.drag === true) {\n e = e.changedTouches ? e.changedTouches[0] : e;\n var dimensions = this.$refs.bar.getBoundingClientRect();\n var centerx = dimensions.width / 2 + dimensions.left;\n var centery = dimensions.height / 2 + dimensions.top;\n var posx = e.pageX;\n var posy = e.pageY;\n var deltay = centery - posy;\n var deltax = centerx - posx;\n var tangle = Math.atan2(deltay, deltax) * (180 / Math.PI);\n tangle -= 180;\n tangle = Math.round(tangle);\n if (tangle < 0) tangle = 360 + tangle;\n this.angle = tangle;\n this.$emit('update:qty', Math.round(tangle / 360 * (this.max - this.min)) + this.min);\n }\n }\n },\n mounted: function mounted() {\n this.angle = Math.round((this.qty - this.min) * 360 / (this.max - this.min));\n this.$emit('update:qty', this.qty);\n }\n});\n// CONCATENATED MODULE: ./src/components/child-components/z-knob.vue?vue&type=script&lang=js&\n /* harmony default export */ var child_components_z_knobvue_type_script_lang_js_ = (z_knobvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(\"2877\");\n\n// CONCATENATED MODULE: ./src/components/child-components/z-knob.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n child_components_z_knobvue_type_script_lang_js_,\n z_knobvue_type_template_id_aa866fa2_render,\n z_knobvue_type_template_id_aa866fa2_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"z-knob.vue\"\n/* harmony default export */ var z_knob = (component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-spot.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var z_spotvue_type_script_lang_js_ = ({\n name: 'z-spot',\n props: {\n distance: {\n type: Number,\n default: 100\n },\n angle: {\n type: Number,\n default: 0\n },\n index: {\n type: Number\n },\n size: {\n type: String,\n default: 'medium'\n },\n label: {\n type: [String]\n },\n labelPos: {\n type: [String],\n default: 'bottom'\n },\n imagePath: {\n type: [String]\n },\n progress: {\n type: [Number, Object],\n default: 0\n },\n qty: {\n type: [Number],\n default: 0\n },\n unit: {\n type: [String]\n },\n min: {\n type: [Number],\n default: 0\n },\n max: {\n type: [Number],\n default: 100\n },\n pos: {\n type: [String]\n },\n slider: {\n type: [Boolean],\n default: false\n },\n button: {\n type: [Boolean],\n default: false\n },\n knob: {\n type: [Boolean],\n default: false\n },\n toView: {\n type: [String, Object]\n }\n },\n inject: ['view'],\n components: {\n ZSlider: z_slider[\"a\" /* default */],\n ZKnob: z_knob\n },\n data: function data() {\n return {\n componentType: this.$options.name,\n zpos: {},\n innerpos: {},\n extrainfo: '',\n val: 0\n };\n },\n computed: {\n position: function position() {\n var component = {\n componentType: this.componentType,\n distance: this.$parent.componentType === 'z-list' ? this.distanceItem : this.distance,\n angle: this.$parent.componentType === 'z-list' ? this.angleItem : this.angle,\n size: this.size,\n $parent: this.$parent\n };\n return this.$zircle.calcPosition(component);\n },\n angleItem: function angleItem() {\n return 360 / this.$zircle.getNumberOfItemsInCurrentPage() * this.index - 90;\n },\n distanceItem: function distanceItem() {\n return this.$zircle.getNumberOfItemsInCurrentPage() === 1 ? 0 : this.distance;\n },\n responsive: function responsive() {\n if (this.view === this.$zircle.getCurrentViewName()) {\n // eslint-disable-next-line\n this.zpos = this.styles;\n return true;\n } else {\n return false;\n }\n },\n styles: function styles() {\n var width = this.$zircle.getComponentWidth(this.size);\n return {\n main: {\n width: width + 'px',\n height: width + 'px',\n margin: -(width / 2) + 'px 0 0 ' + -(width / 2) + 'px',\n transform: 'translate3d(' + this.position.X + 'px, ' + this.position.Y + 'px, 0px)'\n },\n plate: {\n width: width + 15 + 'px',\n height: width + 15 + 'px',\n margin: -((width + 15) / 2) + 'px 0 0 ' + -((width + 15) / 2) + 'px'\n }\n };\n },\n classes: function classes() {\n return {\n 'z-zoom-in-cursor': this.componentType === 'z-spot' && this.toView !== undefined,\n primary: this.$parent.componentType !== 'z-list',\n accent: this.$parent.componentType === 'z-list'\n };\n },\n progressLabel: function progressLabel() {\n if (this.computedQty) {\n var unit = '';\n this.unit ? unit = this.unit : unit = '';\n return this.qty + '' + unit;\n }\n },\n computedQty: {\n get: function get() {\n return this.qty;\n },\n set: function set(newValue) {\n // this.val = newValue\n this.$emit('update:qty', newValue);\n }\n }\n },\n methods: {\n pulse: function pulse() {\n var pulse = this.$refs.pulse;\n pulse.classList.add('pulse-animation');\n pulse.addEventListener('animationend', function () {\n pulse.classList.remove('pulse-animation');\n }, false);\n },\n spotin: function spotin() {\n if (this.button === false && this.view === this.$zircle.getCurrentViewName() && this.toView) this.$refs.spot.classList.add('spot-animation');\n },\n spotout: function spotout() {\n if (this.button === false && this.view === this.$zircle.getCurrentViewName() && this.toView) this.$refs.spot.classList.remove('spot-animation');\n },\n move: function move() {\n if (this.toView) {\n this.$zircle.setView(this.toView, {\n position: {\n X: this.position.Xabs,\n Y: this.position.Yabs,\n scale: this.position.scale,\n Xi: this.position.Xi,\n Yi: this.position.Yi,\n scalei: this.position.scalei\n }\n });\n }\n }\n },\n mounted: function mounted() {\n this.zpos = this.styles;\n }\n});\n// CONCATENATED MODULE: ./src/components/z-spot.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_z_spotvue_type_script_lang_js_ = (z_spotvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/z-spot.vue\n\n\n\n\n\n/* normalize component */\n\nvar z_spot_component = Object(componentNormalizer[\"a\" /* default */])(\n components_z_spotvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nz_spot_component.options.__file = \"z-spot.vue\"\n/* harmony default export */ var z_spot = __webpack_exports__[\"a\"] = (z_spot_component.exports);\n\n/***/ }),\n\n/***/ \"0e89\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-slider.vue?vue&type=template&id=ce324454&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('svg',{staticClass:\"z-slider\",attrs:{\"viewBox\":\"0 0 100 100\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('circle',{style:([_vm.styles]),attrs:{\"r\":\"51\",\"cx\":\"50\",\"cy\":\"50\"}})])}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/child-components/z-slider.vue?vue&type=template&id=ce324454&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\nvar es6_function_name = __webpack_require__(\"7f7f\");\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-slider.vue?vue&type=script&lang=js&\n\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var z_slidervue_type_script_lang_js_ = ({\n name: 'z-slider',\n props: ['progress'],\n data: function data() {\n return {\n componentType: this.$options.name\n };\n },\n computed: {\n styles: function styles() {\n var zwidth = this.$parent.size;\n\n if (zwidth === 'xxl') {\n var strokeWidth = 3;\n } else if (zwidth === 'large' || zwidth === 'xl') {\n strokeWidth = 7;\n } else if (zwidth === 'medium') {\n strokeWidth = 8;\n } else if (zwidth === 'small') {\n strokeWidth = 9;\n } else if (zwidth === 'xs' || zwidth === 'extrasmall') {\n strokeWidth = 10;\n } else if (zwidth === 'xxs') {}\n\n var circleLength = 2 * Math.PI * 51;\n return {\n transformOrigin: '50% 50%',\n transform: 'rotate(-90deg)',\n strokeDasharray: circleLength,\n strokeDashoffset: circleLength - this.progress * circleLength / 100,\n strokeWidth: strokeWidth\n };\n }\n }\n});\n// CONCATENATED MODULE: ./src/components/child-components/z-slider.vue?vue&type=script&lang=js&\n /* harmony default export */ var child_components_z_slidervue_type_script_lang_js_ = (z_slidervue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(\"2877\");\n\n// CONCATENATED MODULE: ./src/components/child-components/z-slider.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n child_components_z_slidervue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"z-slider.vue\"\n/* harmony default export */ var z_slider = __webpack_exports__[\"a\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"1169\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.2 IsArray(argument)\nvar cof = __webpack_require__(\"2d95\");\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n\n\n/***/ }),\n\n/***/ \"11e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pIE = __webpack_require__(\"52a7\");\nvar createDesc = __webpack_require__(\"4630\");\nvar toIObject = __webpack_require__(\"6821\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar has = __webpack_require__(\"69a8\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = __webpack_require__(\"9e1e\") ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"1495\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar getKeys = __webpack_require__(\"0d58\");\n\nmodule.exports = __webpack_require__(\"9e1e\") ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"1eb2\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// This file is imported into lib/wc client bundles.\n\nif (typeof window !== 'undefined') {\n var i\n if ((i = window.document.currentScript) && (i = i.src.match(/(.+\\/)[^/]+\\.js$/))) {\n __webpack_require__.p = i[1] // eslint-disable-line\n }\n}\n\n\n/***/ }),\n\n/***/ \"214f\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar fails = __webpack_require__(\"79e5\");\nvar defined = __webpack_require__(\"be13\");\nvar wks = __webpack_require__(\"2b4c\");\n\nmodule.exports = function (KEY, length, exec) {\n var SYMBOL = wks(KEY);\n var fns = exec(defined, SYMBOL, ''[KEY]);\n var strfn = fns[0];\n var rxfn = fns[1];\n if (fails(function () {\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n })) {\n redefine(String.prototype, KEY, strfn);\n hide(RegExp.prototype, SYMBOL, length == 2\n // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) { return rxfn.call(string, this, arg); }\n // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) { return rxfn.call(string, this); }\n );\n }\n};\n\n\n/***/ }),\n\n/***/ \"230e\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar document = __webpack_require__(\"7726\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"2621\":\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"2877\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return normalizeComponent; });\n/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nfunction normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functioal component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n\n/***/ \"28a5\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// @@split logic\n__webpack_require__(\"214f\")('split', 2, function (defined, SPLIT, $split) {\n 'use strict';\n var isRegExp = __webpack_require__(\"aae3\");\n var _split = $split;\n var $push = [].push;\n var $SPLIT = 'split';\n var LENGTH = 'length';\n var LAST_INDEX = 'lastIndex';\n if (\n 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||\n 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||\n 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||\n '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||\n '.'[$SPLIT](/()()/)[LENGTH] > 1 ||\n ''[$SPLIT](/.?/)[LENGTH]\n ) {\n var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group\n // based on es5-shim implementation, need to rework it\n $split = function (separator, limit) {\n var string = String(this);\n if (separator === undefined && limit === 0) return [];\n // If `separator` is not a regex, use native split\n if (!isRegExp(separator)) return _split.call(string, separator, limit);\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') +\n (separator.multiline ? 'm' : '') +\n (separator.unicode ? 'u' : '') +\n (separator.sticky ? 'y' : '');\n var lastLastIndex = 0;\n var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;\n // Make `global` and avoid `lastIndex` issues by working with a copy\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var separator2, match, lastIndex, lastLength, i;\n // Doesn't need flags gy, but they don't hurt\n if (!NPCG) separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\\\s)', flags);\n while (match = separatorCopy.exec(string)) {\n // `separatorCopy.lastIndex` is not reliable cross-browser\n lastIndex = match.index + match[0][LENGTH];\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG\n // eslint-disable-next-line no-loop-func\n if (!NPCG && match[LENGTH] > 1) match[0].replace(separator2, function () {\n for (i = 1; i < arguments[LENGTH] - 2; i++) if (arguments[i] === undefined) match[i] = undefined;\n });\n if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));\n lastLength = match[0][LENGTH];\n lastLastIndex = lastIndex;\n if (output[LENGTH] >= splitLimit) break;\n }\n if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop\n }\n if (lastLastIndex === string[LENGTH]) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;\n };\n // Chakra, V8\n } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {\n $split = function (separator, limit) {\n return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);\n };\n }\n // 21.1.3.17 String.prototype.split(separator, limit)\n return [function split(separator, limit) {\n var O = defined(this);\n var fn = separator == undefined ? undefined : separator[SPLIT];\n return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);\n }, $split];\n});\n\n\n/***/ }),\n\n/***/ \"2aba\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar has = __webpack_require__(\"69a8\");\nvar SRC = __webpack_require__(\"ca5a\")('src');\nvar TO_STRING = 'toString';\nvar $toString = Function[TO_STRING];\nvar TPL = ('' + $toString).split(TO_STRING);\n\n__webpack_require__(\"8378\").inspectSource = function (it) {\n return $toString.call(it);\n};\n\n(module.exports = function (O, key, val, safe) {\n var isFunction = typeof val == 'function';\n if (isFunction) has(val, 'name') || hide(val, 'name', key);\n if (O[key] === val) return;\n if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));\n if (O === global) {\n O[key] = val;\n } else if (!safe) {\n delete O[key];\n hide(O, key, val);\n } else if (O[key]) {\n O[key] = val;\n } else {\n hide(O, key, val);\n }\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, TO_STRING, function toString() {\n return typeof this == 'function' && this[SRC] || $toString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"2aeb\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(\"cb7c\");\nvar dPs = __webpack_require__(\"1495\");\nvar enumBugKeys = __webpack_require__(\"e11e\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = __webpack_require__(\"230e\")('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n __webpack_require__(\"fab2\").appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n/***/ }),\n\n/***/ \"2b4c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar store = __webpack_require__(\"5537\")('wks');\nvar uid = __webpack_require__(\"ca5a\");\nvar Symbol = __webpack_require__(\"7726\").Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n/***/ }),\n\n/***/ \"2d00\":\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"2d95\":\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"32e9\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\");\nvar createDesc = __webpack_require__(\"4630\");\nmodule.exports = __webpack_require__(\"9e1e\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"38fd\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = __webpack_require__(\"69a8\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n\n\n/***/ }),\n\n/***/ \"41a0\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar create = __webpack_require__(\"2aeb\");\nvar descriptor = __webpack_require__(\"4630\");\nvar setToStringTag = __webpack_require__(\"7f20\");\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\n__webpack_require__(\"32e9\")(IteratorPrototype, __webpack_require__(\"2b4c\")('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n/***/ }),\n\n/***/ \"456d\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 Object.keys(O)\nvar toObject = __webpack_require__(\"4bf8\");\nvar $keys = __webpack_require__(\"0d58\");\n\n__webpack_require__(\"5eda\")('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n\n\n/***/ }),\n\n/***/ \"4588\":\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"4630\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"4917\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// @@match logic\n__webpack_require__(\"214f\")('match', 1, function (defined, MATCH, $match) {\n // 21.1.3.11 String.prototype.match(regexp)\n return [function match(regexp) {\n 'use strict';\n var O = defined(this);\n var fn = regexp == undefined ? undefined : regexp[MATCH];\n return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));\n }, $match];\n});\n\n\n/***/ }),\n\n/***/ \"4bf8\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"52a7\":\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"5537\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(\"8378\");\nvar global = __webpack_require__(\"7726\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(\"2d00\") ? 'pure' : 'global',\n copyright: '© 2018 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"5ca1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(\"7726\");\nvar core = __webpack_require__(\"8378\");\nvar hide = __webpack_require__(\"32e9\");\nvar redefine = __webpack_require__(\"2aba\");\nvar ctx = __webpack_require__(\"9b43\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"5dbc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar setPrototypeOf = __webpack_require__(\"8b97\").set;\nmodule.exports = function (that, target, C) {\n var S = target.constructor;\n var P;\n if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {\n setPrototypeOf(that, P);\n } return that;\n};\n\n\n/***/ }),\n\n/***/ \"5eda\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// most Object methods by ES6 should accept primitives\nvar $export = __webpack_require__(\"5ca1\");\nvar core = __webpack_require__(\"8378\");\nvar fails = __webpack_require__(\"79e5\");\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n\n\n/***/ }),\n\n/***/ \"613b\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(\"5537\")('keys');\nvar uid = __webpack_require__(\"ca5a\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"626a\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(\"2d95\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"6821\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(\"626a\");\nvar defined = __webpack_require__(\"be13\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"69a8\":\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"6a99\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(\"d3f4\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"7333\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar getKeys = __webpack_require__(\"0d58\");\nvar gOPS = __webpack_require__(\"2621\");\nvar pIE = __webpack_require__(\"52a7\");\nvar toObject = __webpack_require__(\"4bf8\");\nvar IObject = __webpack_require__(\"626a\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(\"79e5\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key];\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"7514\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)\nvar $export = __webpack_require__(\"5ca1\");\nvar $find = __webpack_require__(\"0a49\")(5);\nvar KEY = 'find';\nvar forced = true;\n// Shouldn't skip holes\nif (KEY in []) Array(1)[KEY](function () { forced = false; });\n$export($export.P + $export.F * forced, 'Array', {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n__webpack_require__(\"9c6c\")(KEY);\n\n\n/***/ }),\n\n/***/ \"7726\":\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"77f1\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(\"4588\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"79e5\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"7f20\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar def = __webpack_require__(\"86cc\").f;\nvar has = __webpack_require__(\"69a8\");\nvar TAG = __webpack_require__(\"2b4c\")('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n/***/ }),\n\n/***/ \"7f7f\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(\"86cc\").f;\nvar FProto = Function.prototype;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// 19.2.4.2 name\nNAME in FProto || __webpack_require__(\"9e1e\") && dP(FProto, NAME, {\n configurable: true,\n get: function () {\n try {\n return ('' + this).match(nameRE)[1];\n } catch (e) {\n return '';\n }\n }\n});\n\n\n/***/ }),\n\n/***/ \"807d\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-view.vue?vue&type=template&id=17e0d233&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"z-shape primary\",class:[_vm.componentType],staticStyle:{\"overflow\":\"visible\"},style:(_vm.responsive === true ? _vm.styles.main : _vm.zpos.main),on:{\"animationend\":_vm.notify,\"mouseover\":function($event){_vm.$zircle.allowBackwardNavigation(true)},\"mouseleave\":function($event){_vm.$zircle.allowBackwardNavigation(false)}}},[(_vm.$slots['image'] || _vm.imagePath)?_c('div',{staticClass:\"z-content\",attrs:{\"id\":_vm.fullView}},[(_vm.imagePath)?_c('img',{attrs:{\"src\":_vm.imagePath,\"width\":\"100%\",\"height\":\"100%\"}}):_vm._e(),(!_vm.imagePath)?_vm._t(\"image\"):_vm._e()],2):_vm._e(),_c('section',{staticStyle:{\"opacity\":\"0\"},style:(_vm.animation)},[_c('div',{staticClass:\"z-outer-circle\",style:(_vm.responsive === true ? _vm.styles.plate : _vm.zpos.plate)}),(_vm.scrollBar)?_c('z-scroll',{staticStyle:{\"overflow\":\"visible\"},attrs:{\"scrollVal\":_vm.scrollVal},on:{\"update:scrollVal\":function($event){_vm.scrollVal=$event}}}):_vm._e(),(_vm.slider === true)?_c('z-slider',{attrs:{\"progress\":_vm.progress}}):_vm._e(),(_vm.label)?_c('div',{staticClass:\"z-label\",class:_vm.labelPos},[_c('div',{staticClass:\"inside\"},[_vm._v(\"\\n \"+_vm._s(_vm.label)+\"\\n \")])]):_vm._e(),(_vm.$slots['image'] || _vm.imagePath)?_c('div',{staticClass:\"z-content\"},[(_vm.imagePath)?_c('img',{attrs:{\"src\":_vm.imagePath,\"width\":\"100%\",\"height\":\"100%\"}}):_vm._e(),(!_vm.imagePath)?_vm._t(\"image\"):_vm._e()],2):_vm._e(),_c('div',{ref:\"maincontent\",staticClass:\"z-content maincontent\",class:[_vm.longContent, _vm.firefoxScroll],on:{\"&scroll\":function($event){return _vm.scroll($event)}}},[_c('div',{ref:\"ztext\"},[_vm._t(\"default\")],2)]),(_vm.$slots['media'])?_c('div',{staticClass:\"z-content\",staticStyle:{\"z-index\":\"60\"}},[_vm._t(\"media\")],2):_vm._e(),_vm._t(\"extension\")],2)])}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/z-view.vue?vue&type=template&id=17e0d233&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.regexp.match.js\nvar es6_regexp_match = __webpack_require__(\"4917\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\nvar es6_function_name = __webpack_require__(\"7f7f\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js\nvar es6_number_constructor = __webpack_require__(\"c5f6\");\n\n// EXTERNAL MODULE: ./src/components/child-components/z-slider.vue + 4 modules\nvar z_slider = __webpack_require__(\"0e89\");\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-scroll.vue?vue&type=template&id=0e22744f&\nvar z_scrollvue_type_template_id_0e22744f_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticStyle:{\"border-radius\":\"50%\"}},[_c('svg',{staticClass:\"z-scroll\",attrs:{\"viewBox\":\"0 0 100 100\",\"xmlns\":\"http://www.w3.org/2000/svg\"},on:{\"click\":function($event){$event.preventDefault();return _vm.point($event)}}},[_c('circle',{style:(_vm.arcStyle),attrs:{\"r\":\"51\",\"cx\":\"50\",\"cy\":\"50\"}})]),_c('svg',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hidden === false),expression:\"hidden === false\"}],staticClass:\"z-scroll-bar\",style:(_vm.circleStyle),attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\"},on:{\"touchstart\":function($event){_vm.drag = true},\"touchmove\":function($event){$event.preventDefault();return _vm.slide($event)},\"touchend\":function($event){_vm.drag = false},\"mousedown\":function($event){_vm.drag = true},\"mousemove\":function($event){$event.preventDefault();return _vm.slide($event)},\"mouseup\":function($event){_vm.drag = false}}},[_c('circle',{staticClass:\"z-scroll-handlebar\",attrs:{\"r\":\"10\",\"cx\":\"20\",\"cy\":\"20\"}})])])}\nvar z_scrollvue_type_template_id_0e22744f_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/child-components/z-scroll.vue?vue&type=template&id=0e22744f&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-scroll.vue?vue&type=script&lang=js&\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var z_scrollvue_type_script_lang_js_ = ({\n props: ['scrollVal'],\n name: 'z-scroll',\n data: function data() {\n return {\n componentType: this.$options.name,\n drag: false,\n hidden: false\n };\n },\n computed: {\n arcStyle: function arcStyle() {\n var circleLength = 2 * Math.PI * 50;\n return {\n transformOrigin: '50% 50%',\n transform: 'rotate(-45deg)',\n strokeDasharray: circleLength - 2,\n strokeDashoffset: -(Math.PI * 100) * ((90 - 360) / 360),\n strokeWidth: '3px',\n fill: 'none'\n };\n },\n position: function position() {\n var zwidth = this.$zircle.getComponentWidth(this.$parent.size) / 2;\n return {\n X: zwidth * Math.cos(this.scrollVal * (Math.PI / 180)),\n Y: zwidth * Math.sin(this.scrollVal * (Math.PI / 180))\n };\n },\n circleStyle: function circleStyle() {\n return {\n transformOrigin: '50% 50%',\n transform: 'translate3d(' + this.position.X + 'px, ' + this.position.Y + 'px, 0px)'\n };\n }\n },\n methods: {\n point: function point(e) {\n var dimensions = this.$el.querySelector('.z-scroll').getBoundingClientRect();\n var centerx = dimensions.width / 2 + dimensions.left;\n var centery = dimensions.height / 2 + dimensions.top;\n var posx = e.x;\n var posy = e.y;\n var deltay = centery - posy;\n var deltax = centerx - posx;\n var tangle = Math.atan2(deltay, deltax) * (180 / Math.PI);\n tangle -= 135;\n if (tangle < 0) tangle = 360 + tangle;\n if (tangle >= 135) tangle = 0;\n if (tangle > 90) tangle = 90;\n tangle = Math.round(tangle) - 45;\n this.$emit('update:scrollVal', tangle);\n },\n slide: function slide(e) {\n if (this.drag === true) {\n e = e.changedTouches ? e.changedTouches[0] : e;\n var dimensions = this.$el.querySelector('.z-scroll').getBoundingClientRect();\n var centerx = dimensions.width / 2 + dimensions.left;\n var centery = dimensions.height / 2 + dimensions.top;\n var posx = e.pageX;\n var posy = e.pageY;\n var deltay = centery - posy;\n var deltax = centerx - posx;\n var tangle = Math.atan2(deltay, deltax) * (180 / Math.PI);\n tangle -= 135;\n if (tangle < 0) tangle = 360 + tangle;\n if (tangle >= 135) tangle = 0;\n if (tangle > 90) tangle = 90;\n tangle = Math.round(tangle) - 45;\n this.$emit('update:scrollVal', tangle);\n }\n }\n }\n});\n// CONCATENATED MODULE: ./src/components/child-components/z-scroll.vue?vue&type=script&lang=js&\n /* harmony default export */ var child_components_z_scrollvue_type_script_lang_js_ = (z_scrollvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(\"2877\");\n\n// CONCATENATED MODULE: ./src/components/child-components/z-scroll.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n child_components_z_scrollvue_type_script_lang_js_,\n z_scrollvue_type_template_id_0e22744f_render,\n z_scrollvue_type_template_id_0e22744f_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"z-scroll.vue\"\n/* harmony default export */ var z_scroll = (component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-view.vue?vue&type=script&lang=js&\n\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\n/* harmony default export */ var z_viewvue_type_script_lang_js_ = ({\n name: 'z-view',\n props: {\n distance: {\n type: Number,\n default: 0\n },\n angle: {\n type: Number,\n default: 0\n },\n size: {\n type: String,\n default: 'xxl'\n },\n label: {\n type: [String]\n },\n labelPos: {\n type: [String],\n default: 'bottom'\n },\n imagePath: {\n type: [String]\n },\n progress: {\n type: Number,\n default: 0\n },\n slider: {\n type: [Boolean],\n default: false\n }\n },\n components: {\n ZScroll: z_scroll,\n ZSlider: z_slider[\"a\" /* default */]\n },\n data: function data() {\n return {\n componentType: this.$options.name,\n scrollVal: -45,\n zpos: {},\n isMounted: false,\n ffox: false,\n fullView: this.$zircle.getNavigationMode() === 'forward' ? this.$zircle.getCurrentViewName() : this.$zircle.getPastViewName()\n };\n },\n provide: function provide() {\n return {\n view: this.fullView\n };\n },\n computed: {\n position: function position() {\n return this.$zircle.calcViewPosition(this.fullView);\n },\n scrollBar: function scrollBar() {\n var isScrollNeeded = false;\n\n if (this.isMounted === true && this.fullView === this.$zircle.getCurrentViewName() && this.$refs.ztext.clientHeight > this.$zircle.getComponentWidth(this.size)) {\n isScrollNeeded = true;\n }\n\n return isScrollNeeded;\n },\n responsive: function responsive() {\n if (this.fullView === this.$zircle.getCurrentViewName()) {\n // eslint-disable-next-line\n this.zpos = this.styles;\n return true;\n } else {\n return false;\n }\n },\n styles: function styles() {\n var width = this.$zircle.getComponentWidth(this.size);\n return {\n main: {\n width: width + 'px',\n height: width + 'px',\n margin: -(width / 2) + 'px 0 0 ' + -(width / 2) + 'px',\n transform: 'translate3d(' + this.position.X + 'px, ' + this.position.Y + 'px, 0px) scale(' + this.position.scalei + ')'\n },\n plate: {\n width: width + 75 + 'px',\n height: width + 75 + 'px',\n margin: -((width + 75) / 2) + 'px 0 0 ' + -((width + 75) / 2) + 'px'\n }\n };\n },\n animation: function animation() {\n if (this.fullView === this.$zircle.getCurrentViewName() && this.$zircle.getNavigationMode() === 'forward') {\n var zstyle = 'opacity: 1; transition: opacity 1000ms linear;';\n } else if (this.fullView === this.$zircle.getCurrentViewName() && this.$zircle.getNavigationMode() !== 'forward') {\n var zstyle = 'opacity: 1;';\n } else {\n zstyle = 'opacity: 0; transition: opacity 500ms linear;';\n }\n\n return zstyle;\n },\n longContent: function longContent() {\n return {\n 'long-content': this.scrollBar === true\n };\n },\n firefoxScroll: function firefoxScroll() {\n return {\n 'z-scroll-disabled-for-firefox': this.scrollBar === true && this.ffox === true\n };\n }\n },\n methods: {\n notify: function notify() {\n if (this.$zircle.getHistoryLength() === 1) this.$zircle.setNavigationMode('');\n },\n scroll: function scroll() {\n if (this.scrollBar === true) {\n var container = this.$refs.maincontent;\n this.scrollVal = -45 + container.scrollTop * 100 / (container.scrollHeight - container.clientHeight) * 86 / 100;\n }\n }\n },\n watch: {\n scrollVal: function scrollVal() {\n if (this.scrollBar === true) {\n var container = this.$refs.maincontent;\n container.scrollTop = (45 + this.scrollVal) * 100 / 86 * (container.scrollHeight - container.clientHeight) / 100;\n }\n }\n },\n mounted: function mounted() {\n if (navigator.userAgent.match('Firefox')) {\n this.$zircle.setLog('Firefox desktop detected. Scroll events disabled');\n this.ffox = true;\n }\n\n this.zpos = this.styles;\n var vm = this;\n setTimeout(function () {\n vm.isMounted = true;\n }, 1000);\n }\n});\n// CONCATENATED MODULE: ./src/components/z-view.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_z_viewvue_type_script_lang_js_ = (z_viewvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/z-view.vue\n\n\n\n\n\n/* normalize component */\n\nvar z_view_component = Object(componentNormalizer[\"a\" /* default */])(\n components_z_viewvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nz_view_component.options.__file = \"z-view.vue\"\n/* harmony default export */ var z_view = __webpack_exports__[\"a\"] = (z_view_component.exports);\n\n/***/ }),\n\n/***/ \"8378\":\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"84f2\":\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"86cc\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(\"cb7c\");\nvar IE8_DOM_DEFINE = __webpack_require__(\"c69a\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(\"9e1e\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"8b97\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = __webpack_require__(\"d3f4\");\nvar anObject = __webpack_require__(\"cb7c\");\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = __webpack_require__(\"9b43\")(Function.call, __webpack_require__(\"11e9\").f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n\n\n/***/ }),\n\n/***/ \"8bbf\":\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;\n\n/***/ }),\n\n/***/ \"9093\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = __webpack_require__(\"ce10\");\nvar hiddenKeys = __webpack_require__(\"e11e\").concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"9b43\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(\"d8e8\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"9c6c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = __webpack_require__(\"2b4c\")('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(\"32e9\")(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n\n\n/***/ }),\n\n/***/ \"9def\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(\"4588\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"9e1e\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"a296\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_z_canvas_vue_vue_type_style_index_0_lang_sass___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"b346\");\n/* harmony import */ var _node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_z_canvas_vue_vue_type_style_index_0_lang_sass___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_z_canvas_vue_vue_type_style_index_0_lang_sass___WEBPACK_IMPORTED_MODULE_0__);\n/* unused harmony reexport * */\n /* unused harmony default export */ var _unused_webpack_default_export = (_node_modules_mini_css_extract_plugin_dist_loader_js_node_modules_css_loader_index_js_ref_9_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_postcss_loader_lib_index_js_ref_9_oneOf_1_2_node_modules_sass_loader_lib_loader_js_ref_9_oneOf_1_3_node_modules_cache_loader_dist_cjs_js_ref_0_0_node_modules_vue_loader_lib_index_js_vue_loader_options_z_canvas_vue_vue_type_style_index_0_lang_sass___WEBPACK_IMPORTED_MODULE_0___default.a); \n\n/***/ }),\n\n/***/ \"a517\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-list.vue?vue&type=template&id=28c83e34&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{attrs:{\"title\":\"z-list\"}},[_vm._l((_vm.$zircle.getCurrentPage()),function(item,index){return _vm._t(\"default\",null,{index:index},item)}),_vm._l((_vm.$zircle.getNumberOfPages()),function(page,index){return (_vm.$zircle.getNumberOfPages() > 1)?_c('z-pagination',{key:index + '_page',attrs:{\"index\":index,\"distance\":112,\"angle\":(180 - (180 - (_vm.$zircle.getNumberOfPages() * 10))) / _vm.$zircle.getNumberOfPages() * (_vm.$zircle.getNumberOfPages() - index) + ((180 - (180 - (180 - (_vm.$zircle.getNumberOfPages() * 10)))) - ((180 - (180 - (_vm.$zircle.getNumberOfPages() * 10))) / _vm.$zircle.getNumberOfPages())) / 2,\"active\":_vm.$zircle.getCurrentPageIndex()},nativeOn:{\"mouseover\":function($event){_vm.$zircle.allowBackwardNavigation(true)},\"mouseleave\":function($event){_vm.$zircle.allowBackwardNavigation(false)},\"click\":function($event){_vm.$zircle.setCurrentPageIndex(index)}}}):_vm._e()})],2)}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/z-list.vue?vue&type=template&id=28c83e34&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\nvar es6_function_name = __webpack_require__(\"7f7f\");\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.number.constructor.js\nvar es6_number_constructor = __webpack_require__(\"c5f6\");\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-pagination.vue?vue&type=template&id=481fce92&\nvar z_paginationvue_type_template_id_481fce92_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.hidden === false),expression:\"hidden === false\"}],staticClass:\"z-shape is-extension\",class:[_vm.componentType, _vm.activated],style:(_vm.responsive === true ? _vm.styles.main : _vm.zpos.main)},[_c('div',{staticClass:\"z-outer-point\",style:(_vm.responsive === true ? _vm.styles.plate : _vm.zpos.plate)})])}\nvar z_paginationvue_type_template_id_481fce92_staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/child-components/z-pagination.vue?vue&type=template&id=481fce92&\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/child-components/z-pagination.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n/* harmony default export */ var z_paginationvue_type_script_lang_js_ = ({\n name: 'z-pagination',\n props: {\n distance: {\n type: Number,\n default: 100\n },\n angle: {\n type: Number,\n default: 0\n },\n size: {\n type: String,\n default: 'xs'\n },\n index: {\n type: Number,\n default: 0\n },\n active: {\n type: Number,\n default: 0\n }\n },\n inject: ['view'],\n data: function data() {\n return {\n componentType: this.$options.name,\n hidden: false,\n zpos: {}\n };\n },\n computed: {\n responsive: function responsive() {\n if (this.view === this.$zircle.getCurrentViewName()) {\n // eslint-disable-next-line\n this.zpos = this.styles;\n return true;\n } else {\n return false;\n }\n },\n position: function position() {\n return this.$zircle.calcPosition(this);\n },\n activated: function activated() {\n return {\n 'active': this.active === this.index,\n 'deactive': this.active < this.index || this.active > this.index\n };\n },\n styles: function styles() {\n var zwidth = this.$zircle.getComponentWidth(this.size) / 2;\n return {\n main: {\n width: zwidth + 'px',\n height: zwidth + 'px',\n margin: -(zwidth / 2) + 'px 0 0 ' + -(zwidth / 2) + 'px',\n transform: 'translate3d(' + this.position.X + 'px, ' + this.position.Y + 'px, 0px)'\n },\n plate: {\n width: zwidth + 12 + 'px',\n height: zwidth + 12 + 'px',\n margin: -((zwidth + 12) / 2) + 'px 0 0 ' + -((zwidth + 12) / 2) + 'px'\n }\n };\n }\n },\n mounted: function mounted() {\n this.zpos = this.styles;\n }\n});\n// CONCATENATED MODULE: ./src/components/child-components/z-pagination.vue?vue&type=script&lang=js&\n /* harmony default export */ var child_components_z_paginationvue_type_script_lang_js_ = (z_paginationvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(\"2877\");\n\n// CONCATENATED MODULE: ./src/components/child-components/z-pagination.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n child_components_z_paginationvue_type_script_lang_js_,\n z_paginationvue_type_template_id_481fce92_render,\n z_paginationvue_type_template_id_481fce92_staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"z-pagination.vue\"\n/* harmony default export */ var z_pagination = (component.exports);\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-list.vue?vue&type=script&lang=js&\n\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n\nfunction chunk(myArray, chunkSize) {\n var res = [];\n\n while (myArray.length) {\n res.push(myArray.splice(0, chunkSize));\n }\n\n return res;\n}\n\n/* harmony default export */ var z_listvue_type_script_lang_js_ = ({\n name: 'z-list',\n props: {\n size: {\n type: String,\n default: 'xxl'\n },\n items: {\n type: Array,\n required: true\n },\n perPage: {\n type: [Number],\n default: 5\n }\n },\n inject: ['view'],\n components: {\n ZPagination: z_pagination\n },\n data: function data() {\n return {\n componentType: this.$options.name // fix\n\n };\n },\n computed: {\n position: function position() {\n return this.$zircle.calcViewPosition(this.$parent.fullView);\n },\n collectionCopy: function collectionCopy() {\n return this.items.slice(0);\n }\n },\n mounted: function mounted() {\n this.$zircle.setPages(chunk(this.collectionCopy, this.perPage));\n },\n created: function created() {\n this.$zircle.setCurrentPageIndex(0);\n }\n});\n// CONCATENATED MODULE: ./src/components/z-list.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_z_listvue_type_script_lang_js_ = (z_listvue_type_script_lang_js_); \n// CONCATENATED MODULE: ./src/components/z-list.vue\n\n\n\n\n\n/* normalize component */\n\nvar z_list_component = Object(componentNormalizer[\"a\" /* default */])(\n components_z_listvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nz_list_component.options.__file = \"z-list.vue\"\n/* harmony default export */ var z_list = __webpack_exports__[\"a\"] = (z_list_component.exports);\n\n/***/ }),\n\n/***/ \"aa77\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $export = __webpack_require__(\"5ca1\");\nvar defined = __webpack_require__(\"be13\");\nvar fails = __webpack_require__(\"79e5\");\nvar spaces = __webpack_require__(\"fdef\");\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n\n\n/***/ }),\n\n/***/ \"aae3\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.2.8 IsRegExp(argument)\nvar isObject = __webpack_require__(\"d3f4\");\nvar cof = __webpack_require__(\"2d95\");\nvar MATCH = __webpack_require__(\"2b4c\")('match');\nmodule.exports = function (it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');\n};\n\n\n/***/ }),\n\n/***/ \"ac6a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $iterators = __webpack_require__(\"cadf\");\nvar getKeys = __webpack_require__(\"0d58\");\nvar redefine = __webpack_require__(\"2aba\");\nvar global = __webpack_require__(\"7726\");\nvar hide = __webpack_require__(\"32e9\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar wks = __webpack_require__(\"2b4c\");\nvar ITERATOR = wks('iterator');\nvar TO_STRING_TAG = wks('toStringTag');\nvar ArrayValues = Iterators.Array;\n\nvar DOMIterables = {\n CSSRuleList: true, // TODO: Not spec compliant, should be false.\n CSSStyleDeclaration: false,\n CSSValueList: false,\n ClientRectList: false,\n DOMRectList: false,\n DOMStringList: false,\n DOMTokenList: true,\n DataTransferItemList: false,\n FileList: false,\n HTMLAllCollection: false,\n HTMLCollection: false,\n HTMLFormElement: false,\n HTMLSelectElement: false,\n MediaList: true, // TODO: Not spec compliant, should be false.\n MimeTypeArray: false,\n NamedNodeMap: false,\n NodeList: true,\n PaintRequestList: false,\n Plugin: false,\n PluginArray: false,\n SVGLengthList: false,\n SVGNumberList: false,\n SVGPathSegList: false,\n SVGPointList: false,\n SVGStringList: false,\n SVGTransformList: false,\n SourceBufferList: false,\n StyleSheetList: true, // TODO: Not spec compliant, should be false.\n TextTrackCueList: false,\n TextTrackList: false,\n TouchList: false\n};\n\nfor (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {\n var NAME = collections[i];\n var explicit = DOMIterables[NAME];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n var key;\n if (proto) {\n if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);\n if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = ArrayValues;\n if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);\n }\n}\n\n\n/***/ }),\n\n/***/ \"b346\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"b635\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _store_store__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"07a4\");\n/* harmony import */ var _components_z_canvas_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"03dd\");\n/* harmony import */ var _components_z_view_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(\"807d\");\n/* harmony import */ var _components_z_list_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(\"a517\");\n/* harmony import */ var _components_z_spot_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(\"0dda\");\n/* harmony import */ var _components_z_dialog_vue__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(\"e34c\");\n\n\n\n\n\n\nvar zircle = {\n install: function install(Vue, options) {\n Object.defineProperty(Vue.prototype, '$zircle', {\n get: function get() {\n return _store_store__WEBPACK_IMPORTED_MODULE_0__[/* default */ \"a\"].actions;\n }\n });\n Vue.component('z-canvas', _components_z_canvas_vue__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"]);\n Vue.component('z-view', _components_z_view_vue__WEBPACK_IMPORTED_MODULE_2__[/* default */ \"a\"]);\n Vue.component('z-list', _components_z_list_vue__WEBPACK_IMPORTED_MODULE_3__[/* default */ \"a\"]);\n Vue.component('z-spot', _components_z_spot_vue__WEBPACK_IMPORTED_MODULE_4__[/* default */ \"a\"]);\n Vue.component('z-dialog', _components_z_dialog_vue__WEBPACK_IMPORTED_MODULE_5__[/* default */ \"a\"]);\n }\n};\n/* harmony default export */ __webpack_exports__[\"a\"] = (zircle);\nvar GlobalVue = null;\n\nif (typeof window !== 'undefined') {\n GlobalVue = window.Vue;\n} else if (typeof global !== 'undefined') {\n GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n GlobalVue.use(zircle);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(\"c8ba\")))\n\n/***/ }),\n\n/***/ \"be13\":\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"c366\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(\"6821\");\nvar toLength = __webpack_require__(\"9def\");\nvar toAbsoluteIndex = __webpack_require__(\"77f1\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"c5f6\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar global = __webpack_require__(\"7726\");\nvar has = __webpack_require__(\"69a8\");\nvar cof = __webpack_require__(\"2d95\");\nvar inheritIfRequired = __webpack_require__(\"5dbc\");\nvar toPrimitive = __webpack_require__(\"6a99\");\nvar fails = __webpack_require__(\"79e5\");\nvar gOPN = __webpack_require__(\"9093\").f;\nvar gOPD = __webpack_require__(\"11e9\").f;\nvar dP = __webpack_require__(\"86cc\").f;\nvar $trim = __webpack_require__(\"aa77\").trim;\nvar NUMBER = 'Number';\nvar $Number = global[NUMBER];\nvar Base = $Number;\nvar proto = $Number.prototype;\n// Opera ~12 has broken Object#toString\nvar BROKEN_COF = cof(__webpack_require__(\"2aeb\")(proto)) == NUMBER;\nvar TRIM = 'trim' in String.prototype;\n\n// 7.1.3 ToNumber(argument)\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n if (typeof it == 'string' && it.length > 2) {\n it = TRIM ? it.trim() : $trim(it, 3);\n var first = it.charCodeAt(0);\n var third, radix, maxCode;\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i\n default: return +it;\n }\n for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {\n code = digits.charCodeAt(i);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\nif (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {\n $Number = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var that = this;\n return that instanceof $Number\n // check on 1..constructor(foo) case\n && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)\n ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);\n };\n for (var keys = __webpack_require__(\"9e1e\") ? gOPN(Base) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES6 (in case, if modules with ES6 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(Base, key = keys[j]) && !has($Number, key)) {\n dP($Number, key, gOPD(Base, key));\n }\n }\n $Number.prototype = proto;\n proto.constructor = $Number;\n __webpack_require__(\"2aba\")(global, NUMBER, $Number);\n}\n\n\n/***/ }),\n\n/***/ \"c69a\":\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(\"9e1e\") && !__webpack_require__(\"79e5\")(function () {\n return Object.defineProperty(__webpack_require__(\"230e\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"c8ba\":\n/***/ (function(module, exports) {\n\nvar g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n/***/ }),\n\n/***/ \"ca5a\":\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"cadf\":\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar addToUnscopables = __webpack_require__(\"9c6c\");\nvar step = __webpack_require__(\"d53b\");\nvar Iterators = __webpack_require__(\"84f2\");\nvar toIObject = __webpack_require__(\"6821\");\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = __webpack_require__(\"01f9\")(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n/***/ }),\n\n/***/ \"cb7c\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"cd1c\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = __webpack_require__(\"e853\");\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n\n\n/***/ }),\n\n/***/ \"ce10\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(\"69a8\");\nvar toIObject = __webpack_require__(\"6821\");\nvar arrayIndexOf = __webpack_require__(\"c366\")(false);\nvar IE_PROTO = __webpack_require__(\"613b\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"d3f4\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"d53b\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n\n\n/***/ }),\n\n/***/ \"d8e8\":\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"e11e\":\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"e34c\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{\"cacheDirectory\":\"node_modules/.cache/vue-loader\",\"cacheIdentifier\":\"47426207-vue-loader-template\"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-dialog.vue?vue&type=template&id=7ae52d68&\nvar render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"z-dialog-transition\"}},[_c('div',{staticClass:\"z-shape is-extension primary\",class:[_vm.componentType],style:(_vm.styles.main)},[(_vm.selfClose)?_c('z-slider',{attrs:{\"progress\":_vm.progress}}):_vm._e(),_c('div',{staticClass:\"z-outer-circle\",style:(_vm.styles.plate)}),_c('div',{staticClass:\"z-content\"},[_vm._t(\"default\")],2),_vm._t(\"extension\")],2)])}\nvar staticRenderFns = []\n\n\n// CONCATENATED MODULE: ./src/components/z-dialog.vue?vue&type=template&id=7ae52d68&\n\n// EXTERNAL MODULE: ./node_modules/core-js/modules/es6.function.name.js\nvar es6_function_name = __webpack_require__(\"7f7f\");\n\n// EXTERNAL MODULE: ./src/components/child-components/z-slider.vue + 4 modules\nvar z_slider = __webpack_require__(\"0e89\");\n\n// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./src/components/z-dialog.vue?vue&type=script&lang=js&\n\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/* harmony default export */ var z_dialogvue_type_script_lang_js_ = ({\n name: 'z-dialog',\n props: {\n selfClose: {\n type: Boolean,\n default: false\n },\n size: {\n type: String,\n default: 'xxl'\n }\n },\n components: {\n ZSlider: z_slider[\"a\" /* default */]\n },\n data: function data() {\n return {\n componentType: this.$options.name,\n progress: 0\n };\n },\n computed: {\n styles: function styles() {\n var zwidth = this.$zircle.getComponentWidth(this.size);\n return {\n main: {\n width: zwidth + 50 + 'px',\n height: zwidth + 50 + 'px',\n margin: -((zwidth + 50) / 2) + 'px 0 0 ' + -((zwidth + 50) / 2) + 'px'\n },\n plate: {\n width: zwidth + 180 + 'px',\n height: zwidth + 180 + 'px',\n margin: -((zwidth + 180) / 2) + 'px 0 0 ' + -((zwidth + 180) / 2) + 'px'\n }\n };\n }\n },\n mounted: function mounted() {\n if (this.selfClose) {\n var vm = this;\n this.progress = 5;\n var id = setInterval(function () {\n if (vm.progress >= 100) {\n clearInterval(id);\n vm.$emit('done');\n } else {\n vm.progress++;\n }\n }, 100);\n }\n }\n});\n// CONCATENATED MODULE: ./src/components/z-dialog.vue?vue&type=script&lang=js&\n /* harmony default export */ var components_z_dialogvue_type_script_lang_js_ = (z_dialogvue_type_script_lang_js_); \n// EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js\nvar componentNormalizer = __webpack_require__(\"2877\");\n\n// CONCATENATED MODULE: ./src/components/z-dialog.vue\n\n\n\n\n\n/* normalize component */\n\nvar component = Object(componentNormalizer[\"a\" /* default */])(\n components_z_dialogvue_type_script_lang_js_,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\ncomponent.options.__file = \"z-dialog.vue\"\n/* harmony default export */ var z_dialog = __webpack_exports__[\"a\"] = (component.exports);\n\n/***/ }),\n\n/***/ \"e853\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(\"d3f4\");\nvar isArray = __webpack_require__(\"1169\");\nvar SPECIES = __webpack_require__(\"2b4c\")('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n\n\n/***/ }),\n\n/***/ \"f751\":\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(\"5ca1\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(\"7333\") });\n\n\n/***/ }),\n\n/***/ \"fab2\":\n/***/ (function(module, exports, __webpack_require__) {\n\nvar document = __webpack_require__(\"7726\").document;\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"fb15\":\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _setPublicPath__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(\"1eb2\");\n/* harmony import */ var _setPublicPath__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_setPublicPath__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _entry__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(\"b635\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_entry__WEBPACK_IMPORTED_MODULE_1__[/* default */ \"a\"]);\n\n\n\n/***/ }),\n\n/***/ \"fdef\":\n/***/ (function(module, exports) {\n\nmodule.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n/***/ })\n\n/******/ });\n});","var global = require('./_global');\nvar core = require('./_core');\nvar hide = require('./_hide');\nvar redefine = require('./_redefine');\nvar ctx = require('./_ctx');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});\n var key, own, out, exp;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n // export native or passed\n out = (own ? target : source)[key];\n // bind timers to global for call from export context\n exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // extend global\n if (target) redefine(target, key, out, type & $export.U);\n // export\n if (exports[key] != out) hide(exports, key, exp);\n if (IS_PROTO && expProto[key] != out) expProto[key] = out;\n }\n};\nglobal.core = core;\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\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}","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","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 core = module.exports = { version: '2.5.7' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","module.exports = {};\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\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","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","// 22.1.3.31 Array.prototype[@@unscopables]\nvar UNSCOPABLES = require('./_wks')('unscopables');\nvar ArrayProto = Array.prototype;\nif (ArrayProto[UNSCOPABLES] == undefined) require('./_hide')(ArrayProto, UNSCOPABLES, {});\nmodule.exports = function (key) {\n ArrayProto[UNSCOPABLES][key] = true;\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","'use strict';\n// 25.4.1.5 NewPromiseCapability(C)\nvar aFunction = require('./_a-function');\n\nfunction PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction(resolve);\n this.reject = aFunction(reject);\n}\n\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar autoKeyword = \"auto\";\nvar directionSetting = {\n \"\": true,\n \"lr\": true,\n \"rl\": true\n};\nvar alignSetting = {\n \"start\": true,\n \"middle\": true,\n \"end\": true,\n \"left\": true,\n \"right\": true\n};\n\nfunction findDirectionSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var dir = directionSetting[value.toLowerCase()];\n return dir ? value.toLowerCase() : false;\n}\n\nfunction findAlignSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var align = alignSetting[value.toLowerCase()];\n return align ? value.toLowerCase() : false;\n}\n\nfunction extend(obj) {\n var i = 1;\n for (; i < arguments.length; i++) {\n var cobj = arguments[i];\n for (var p in cobj) {\n obj[p] = cobj[p];\n }\n }\n\n return obj;\n}\n\nfunction VTTCue(startTime, endTime, text) {\n var cue = this;\n var isIE8 = (/MSIE\\s8\\.0/).test(navigator.userAgent);\n var baseObj = {};\n\n if (isIE8) {\n cue = document.createElement('custom');\n } else {\n baseObj.enumerable = true;\n }\n\n /**\n * Shim implementation specific properties. These properties are not in\n * the spec.\n */\n\n // Lets us know when the VTTCue's data has changed in such a way that we need\n // to recompute its display state. This lets us compute its display state\n // lazily.\n cue.hasBeenReset = false;\n\n /**\n * VTTCue and TextTrackCue properties\n * http://dev.w3.org/html5/webvtt/#vttcue-interface\n */\n\n var _id = \"\";\n var _pauseOnExit = false;\n var _startTime = startTime;\n var _endTime = endTime;\n var _text = text;\n var _region = null;\n var _vertical = \"\";\n var _snapToLines = true;\n var _line = \"auto\";\n var _lineAlign = \"start\";\n var _position = 50;\n var _positionAlign = \"middle\";\n var _size = 50;\n var _align = \"middle\";\n\n Object.defineProperty(cue,\n \"id\", extend({}, baseObj, {\n get: function() {\n return _id;\n },\n set: function(value) {\n _id = \"\" + value;\n }\n }));\n\n Object.defineProperty(cue,\n \"pauseOnExit\", extend({}, baseObj, {\n get: function() {\n return _pauseOnExit;\n },\n set: function(value) {\n _pauseOnExit = !!value;\n }\n }));\n\n Object.defineProperty(cue,\n \"startTime\", extend({}, baseObj, {\n get: function() {\n return _startTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Start time must be set to a number.\");\n }\n _startTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"endTime\", extend({}, baseObj, {\n get: function() {\n return _endTime;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"End time must be set to a number.\");\n }\n _endTime = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"text\", extend({}, baseObj, {\n get: function() {\n return _text;\n },\n set: function(value) {\n _text = \"\" + value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"region\", extend({}, baseObj, {\n get: function() {\n return _region;\n },\n set: function(value) {\n _region = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"vertical\", extend({}, baseObj, {\n get: function() {\n return _vertical;\n },\n set: function(value) {\n var setting = findDirectionSetting(value);\n // Have to check for false because the setting an be an empty string.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _vertical = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"snapToLines\", extend({}, baseObj, {\n get: function() {\n return _snapToLines;\n },\n set: function(value) {\n _snapToLines = !!value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"line\", extend({}, baseObj, {\n get: function() {\n return _line;\n },\n set: function(value) {\n if (typeof value !== \"number\" && value !== autoKeyword) {\n throw new SyntaxError(\"An invalid number or illegal string was specified.\");\n }\n _line = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"lineAlign\", extend({}, baseObj, {\n get: function() {\n return _lineAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _lineAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"position\", extend({}, baseObj, {\n get: function() {\n return _position;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Position must be between 0 and 100.\");\n }\n _position = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"positionAlign\", extend({}, baseObj, {\n get: function() {\n return _positionAlign;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _positionAlign = setting;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"size\", extend({}, baseObj, {\n get: function() {\n return _size;\n },\n set: function(value) {\n if (value < 0 || value > 100) {\n throw new Error(\"Size must be between 0 and 100.\");\n }\n _size = value;\n this.hasBeenReset = true;\n }\n }));\n\n Object.defineProperty(cue,\n \"align\", extend({}, baseObj, {\n get: function() {\n return _align;\n },\n set: function(value) {\n var setting = findAlignSetting(value);\n if (!setting) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _align = setting;\n this.hasBeenReset = true;\n }\n }));\n\n /**\n * Other <track> spec defined properties\n */\n\n // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-video-element.html#text-track-cue-display-state\n cue.displayState = undefined;\n\n if (isIE8) {\n return cue;\n }\n}\n\n/**\n * VTTCue methods\n */\n\nVTTCue.prototype.getCueAsHTML = function() {\n // Assume WebVTT.convertCueToDOMTree is on the global.\n return WebVTT.convertCueToDOMTree(window, this.text);\n};\n\nmodule.exports = VTTCue;\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (hasOwnProperty.call(array, i)) {\n if (receiver == null) {\n iterator(array[i], i, array);\n } else {\n iterator.call(receiver, array[i], i, array);\n }\n }\n }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n for (var i = 0, len = string.length; i < len; i++) {\n // no such thing as a sparse string.\n if (receiver == null) {\n iterator(string.charAt(i), i, string);\n } else {\n iterator.call(receiver, string.charAt(i), i, string);\n }\n }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) {\n if (receiver == null) {\n iterator(object[k], k, object);\n } else {\n iterator.call(receiver, object[k], k, object);\n }\n }\n }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n if (!isCallable(iterator)) {\n throw new TypeError('iterator must be a function');\n }\n\n var receiver;\n if (arguments.length >= 3) {\n receiver = thisArg;\n }\n\n if (toStr.call(list) === '[object Array]') {\n forEachArray(list, iterator, receiver);\n } else if (typeof list === 'string') {\n forEachString(list, iterator, receiver);\n } else {\n forEachObject(list, iterator, receiver);\n }\n};\n\nmodule.exports = forEach;\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\nvar _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n})();\n\n// Creates a new ParserError object from an errorData object. The errorData\n// object should have default code and message properties. The default message\n// property can be overriden by passing in a message parameter.\n// See ParsingError.Errors below for acceptable errors.\nfunction ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n}\nParsingError.prototype = _objCreate(Error.prototype);\nParsingError.prototype.constructor = ParsingError;\n\n// ParsingError metadata for acceptable ParsingErrors.\nParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n};\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{2})(:\\d{2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = _objCreate(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0];\n var v = kv[1];\n callback(k, v);\n }\n}\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"middle\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"middle\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"middle\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n cue.line = settings.get(\"line\", \"auto\");\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n cue.align = settings.get(\"align\", \"middle\");\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n middle: \"middle\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") { // (3) next characters must match \"-->\"\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\nvar ESCAPE = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n \"‎\": \"\\u200e\",\n \"‏\": \"\\u200f\",\n \" \": \"\\u00a0\"\n};\n\nvar TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n};\n\nvar TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n};\n\nvar NEEDS_PARENT = {\n rt: \"ruby\"\n};\n\n// Parse content into a document fragment.\nfunction parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]*>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n // Unescape a string 's'.\n function unescape1(e) {\n return ESCAPE[e];\n }\n function unescape(s) {\n while ((m = s.match(/&(amp|lt|gt|lrm|rlm|nbsp);/))) {\n s = s.replace(m[0], unescape1);\n }\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n element.localName = tagName;\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n node.className = m[2].substr(1).replace('.', ' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n}\n\n// This is a list of all the Unicode characters that have a strong\n// right-to-left category. What this means is that these characters are\n// written right-to-left for sure. It was generated by pulling all the strong\n// right-to-left characters out of the Unicode data table. That table can\n// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\nfunction isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n}\n\nfunction computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n}\n\nfunction StyleBox() {\n}\n\n// Apply styles to a div. If there is no div passed then it defaults to the\n// div on 'this'.\nStyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n};\n\nStyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n};\n\n// Constructs the computed display state of the cue (a div). Places the div\n// into the overlay which should be a block level element (usually a div).\nfunction CueStyleBox(window, cue, styleOptions) {\n var isIE8 = (/MSIE\\s8\\.0/).test(navigator.userAgent);\n var color = \"rgba(255, 255, 255, 1)\";\n var backgroundColor = \"rgba(0, 0, 0, 0.8)\";\n\n if (isIE8) {\n color = \"rgb(255, 255, 255)\";\n backgroundColor = \"rgb(0, 0, 0)\";\n }\n\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: color,\n backgroundColor: backgroundColor,\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\"\n };\n\n if (!isIE8) {\n styles.writingMode = cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\";\n styles.unicodeBidi = \"plaintext\";\n }\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except \"middle\" which is \"center\" in CSS.\n this.div = window.document.createElement(\"div\");\n styles = {\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n if (!isIE8) {\n styles.direction = determineBidi(this.cueDiv);\n styles.writingMode = cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\".\n stylesunicodeBidi = \"plaintext\";\n }\n\n this.applyStyles(styles);\n\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n textPos = cue.position;\n break;\n case \"middle\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n}\nCueStyleBox.prototype = _objCreate(StyleBox.prototype);\nCueStyleBox.prototype.constructor = CueStyleBox;\n\n// Represents the co-ordinates of an Element in a way that we can easily\n// compute things with such as if it overlaps or intersects with another Element.\n// Can initialize it with either a StyleBox or another BoxPosition.\nfunction BoxPosition(obj) {\n var isIE8 = (/MSIE\\s8\\.0/).test(navigator.userAgent);\n\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n\n if (isIE8 && !this.lineHeight) {\n this.lineHeight = 13;\n }\n}\n\n// Move the box along a particular axis. Optionally pass in an amount to move\n// the box. If no amount is passed then the default is the line height of the\n// box.\nBoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n};\n\n// Check if this box overlaps another box, b2.\nBoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n};\n\n// Check if this box overlaps any other boxes in boxes.\nBoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n};\n\n// Check if this box is within another box.\nBoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n};\n\n// Check if this box is entirely within the container or it is overlapping\n// on the edge opposite of the axis direction passed. For example, if \"+x\" is\n// passed and the box is overlapping on the left edge of the container, then\n// return true.\nBoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n};\n\n// Find the percentage of the area that this box is overlapping with another\n// box.\nBoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n};\n\n// Convert the positions from this box to CSS compatible positions using\n// the reference container's positions. This has to be done because this\n// box's positions are in reference to the viewport origin, whereas, CSS\n// values are in referecne to their respective edges.\nBoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n};\n\n// Get an object that represents the box's position without anything extra.\n// Can pass a StyleBox, HTMLElement, or another BoxPositon.\nBoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n};\n\n// Move a StyleBox to its specified, or next best, position. The containerBox\n// is the box that contains the StyleBox, such as a div. boxPositions are\n// a list of other boxes that the styleBox can't overlap with.\nfunction moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"middle\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n}\n\nfunction WebVTT() {\n // Nothing\n}\n\n// Helper to allow strings to be decoded instead of the default binary utf8 data.\nWebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nWebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n};\n\nvar FONT_SIZE_PERCENT = 0.05;\nvar FONT_STYLE = \"sans-serif\";\nvar CUE_BACKGROUND_PADDING = \"1.5%\";\n\n// Runs the processing model over the cues and regions passed to it.\n// @param overlay A block level element (usually a div) that the computed cues\n// and regions will be placed into.\nWebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: fontSize + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n};\n\nWebVTT.Parser = function(window, vttjs, decoder) {\n if (!decoder) {\n decoder = vttjs;\n vttjs = {};\n }\n if (!vttjs) {\n vttjs = {};\n }\n\n this.window = window;\n this.vttjs = vttjs;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n};\n\nWebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line;\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n continue;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, \"\");\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n self.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n continue;\n }\n self.state = \"CUETEXT\";\n continue;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n continue;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line;\n continue;\n case \"BADCUE\": // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n }\n }\n } catch (e) {\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n }\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n};\n\nmodule.exports = WebVTT;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t(require(\"video.js\")):\"function\"==typeof define&&define.amd?define([\"videojs\"],t):\"object\"==typeof exports?exports.VueVideoPlayer=t(require(\"video.js\")):e.VueVideoPlayer=t(e.videojs)}(this,function(e){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"/\",t(t.s=3)}([function(t,n){t.exports=e},function(e,t,n){\"use strict\";function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,\"__esModule\",{value:!0});var r=n(0),o=function(e){return e&&e.__esModule?e:{default:e}}(r),s=window.videojs||o.default;\"function\"!=typeof Object.assign&&Object.defineProperty(Object,\"assign\",{value:function(e,t){if(null==e)throw new TypeError(\"Cannot convert undefined or null to object\");for(var n=Object(e),i=1;i<arguments.length;i++){var r=arguments[i];if(null!=r)for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(n[o]=r[o])}return n},writable:!0,configurable:!0});var a=[\"loadeddata\",\"canplay\",\"canplaythrough\",\"play\",\"pause\",\"waiting\",\"playing\",\"ended\",\"error\"];t.default={name:\"video-player\",props:{start:{type:Number,default:0},crossOrigin:{type:String,default:\"\"},playsinline:{type:Boolean,default:!1},customEventName:{type:String,default:\"statechanged\"},options:{type:Object,required:!0},events:{type:Array,default:function(){return[]}},globalOptions:{type:Object,default:function(){return{controls:!0,controlBar:{remainingTimeDisplay:!1,playToggle:{},progressControl:{},fullscreenToggle:{},volumeMenuButton:{inline:!1,vertical:!0}},techOrder:[\"html5\"],plugins:{}}}},globalEvents:{type:Array,default:function(){return[]}}},data:function(){return{player:null,reseted:!0}},mounted:function(){this.player||this.initialize()},beforeDestroy:function(){this.player&&this.dispose()},methods:{initialize:function(){var e=this,t=Object.assign({},this.globalOptions,this.options);this.playsinline&&(this.$refs.video.setAttribute(\"playsinline\",this.playsinline),this.$refs.video.setAttribute(\"webkit-playsinline\",this.playsinline),this.$refs.video.setAttribute(\"x5-playsinline\",this.playsinline),this.$refs.video.setAttribute(\"x5-video-player-type\",\"h5\"),this.$refs.video.setAttribute(\"x5-video-player-fullscreen\",!1)),\"\"!==this.crossOrigin&&(this.$refs.video.crossOrigin=this.crossOrigin,this.$refs.video.setAttribute(\"crossOrigin\",this.crossOrigin));var n=function(t,n){t&&e.$emit(t,e.player),n&&e.$emit(e.customEventName,i({},t,n))};t.plugins&&delete t.plugins.__ob__;var r=this;this.player=s(this.$refs.video,t,function(){for(var e=this,t=a.concat(r.events).concat(r.globalEvents),i={},o=0;o<t.length;o++)\"string\"==typeof t[o]&&void 0===i[t[o]]&&function(t){i[t]=null,e.on(t,function(){n(t,!0)})}(t[o]);this.on(\"timeupdate\",function(){n(\"timeupdate\",this.currentTime())}),r.$emit(\"ready\",this)})},dispose:function(e){var t=this;this.player&&this.player.dispose&&(\"Flash\"!==this.player.techName_&&this.player.pause&&this.player.pause(),this.player.dispose(),this.player=null,this.$nextTick(function(){t.reseted=!1,t.$nextTick(function(){t.reseted=!0,t.$nextTick(function(){e&&e()})})}))}},watch:{options:{deep:!0,handler:function(e,t){var n=this;this.dispose(function(){e&&e.sources&&e.sources.length&&n.initialize()})}}}}},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(1),r=n.n(i);for(var o in i)[\"default\",\"default\"].indexOf(o)<0&&function(e){n.d(t,e,function(){return i[e]})}(o);var s=n(5),a=n(4),l=a(r.a,s.a,!1,null,null,null);t.default=l.exports},function(e,t,n){\"use strict\";function i(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0}),t.install=t.videoPlayer=t.videojs=void 0;var r=n(0),o=i(r),s=n(2),a=i(s),l=window.videojs||o.default,u=function(e,t){t&&(t.options&&(a.default.props.globalOptions.default=function(){return t.options}),t.events&&(a.default.props.globalEvents.default=function(){return t.events})),e.component(a.default.name,a.default)},d={videojs:l,videoPlayer:a.default,install:u};t.default=d,t.videojs=l,t.videoPlayer=a.default,t.install=u},function(e,t){e.exports=function(e,t,n,i,r,o){var s,a=e=e||{},l=typeof e.default;\"object\"!==l&&\"function\"!==l||(s=e,a=e.default);var u=\"function\"==typeof a?a.options:a;t&&(u.render=t.render,u.staticRenderFns=t.staticRenderFns,u._compiled=!0),n&&(u.functional=!0),r&&(u._scopeId=r);var d;if(o?(d=function(e){e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext,e||\"undefined\"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),i&&i.call(this,e),e&&e._registeredComponents&&e._registeredComponents.add(o)},u._ssrRegister=d):i&&(d=i),d){var c=u.functional,f=c?u.render:u.beforeCreate;c?(u._injectStyles=d,u.render=function(e,t){return d.call(t),f(e,t)}):u.beforeCreate=f?[].concat(f,d):[d]}return{esModule:s,exports:a,options:u}}},function(e,t,n){\"use strict\";var i=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.reseted?n(\"div\",{staticClass:\"video-player\"},[n(\"video\",{ref:\"video\",staticClass:\"video-js\"})]):e._e()},r=[],o={render:i,staticRenderFns:r};t.a=o}])});","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","var redefine = require('./_redefine');\nmodule.exports = function (target, src, safe) {\n for (var key in src) redefine(target, key, src[key], safe);\n return target;\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","\"use strict\";\nvar window = require(\"global/window\")\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 if(typeof options.callback === \"undefined\"){\n throw new Error(\"callback argument missing\")\n }\n\n var called = false\n var callback = function cbOnce(err, response, body){\n if(!called){\n called = true\n options.callback(err, response, body)\n }\n }\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0)\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 {\n body = xhr.responseText || getXml(xhr)\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body)\n } catch (e) {}\n }\n\n return body\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 return 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 return callback(err, response, response.body)\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\n var headers = xhr.headers = options.headers || {}\n var sync = !!options.sync\n var isJson = false\n var timeoutTimer\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n }\n\n if (\"json\" in options && options.json !== false) {\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 === true ? body : 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.onabort = function(){\n aborted = true;\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 if (aborted) return\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 // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n xhr.send(body || null)\n\n return xhr\n\n\n}\n\nfunction getXml(xhr) {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML\n }\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\"\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML\n }\n\n return null\n}\n\nfunction noop() {}\n","var topLevel = typeof global !== 'undefined' ? global :\n typeof window !== 'undefined' ? window : {}\nvar minDoc = require('min-document');\n\nvar doccy;\n\nif (typeof document !== 'undefined') {\n doccy = document;\n} else {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];\n\n if (!doccy) {\n doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;\n }\n}\n\nmodule.exports = doccy;\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar scrollSetting = {\n \"\": true,\n \"up\": true\n};\n\nfunction findScrollSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var scroll = scrollSetting[value.toLowerCase()];\n return scroll ? value.toLowerCase() : false;\n}\n\nfunction isValidPercentValue(value) {\n return typeof value === \"number\" && (value >= 0 && value <= 100);\n}\n\n// VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface\nfunction VTTRegion() {\n var _width = 100;\n var _lines = 3;\n var _regionAnchorX = 0;\n var _regionAnchorY = 100;\n var _viewportAnchorX = 0;\n var _viewportAnchorY = 100;\n var _scroll = \"\";\n\n Object.defineProperties(this, {\n \"width\": {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"Width must be between 0 and 100.\");\n }\n _width = value;\n }\n },\n \"lines\": {\n enumerable: true,\n get: function() {\n return _lines;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Lines must be set to a number.\");\n }\n _lines = value;\n }\n },\n \"regionAnchorY\": {\n enumerable: true,\n get: function() {\n return _regionAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorX must be between 0 and 100.\");\n }\n _regionAnchorY = value;\n }\n },\n \"regionAnchorX\": {\n enumerable: true,\n get: function() {\n return _regionAnchorX;\n },\n set: function(value) {\n if(!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorY must be between 0 and 100.\");\n }\n _regionAnchorX = value;\n }\n },\n \"viewportAnchorY\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorY must be between 0 and 100.\");\n }\n _viewportAnchorY = value;\n }\n },\n \"viewportAnchorX\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorX;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorX must be between 0 and 100.\");\n }\n _viewportAnchorX = value;\n }\n },\n \"scroll\": {\n enumerable: true,\n get: function() {\n return _scroll;\n },\n set: function(value) {\n var setting = findScrollSetting(value);\n // Have to check for false as an empty string is a legal value.\n if (setting === false) {\n throw new SyntaxError(\"An invalid or illegal string was specified.\");\n }\n _scroll = setting;\n }\n }\n });\n}\n\nmodule.exports = VTTRegion;\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n"],"sourceRoot":""}