{"version":3,"sources":["webpack://_N_E/./node_modules/es5-ext/string/#/contains/shim.js","webpack://_N_E/./node_modules/es5-ext/string/#/contains/index.js","webpack://_N_E/./node_modules/xgplayer/es/utils/debug.js","webpack://_N_E/./node_modules/xgplayer/es/plugin/plugin.js","webpack://_N_E/./node_modules/es5-ext/function/noop.js","webpack://_N_E/./node_modules/es5-ext/object/keys/is-implemented.js","webpack://_N_E/./node_modules/es5-ext/object/normalize-options.js","webpack://_N_E/./node_modules/d/index.js","webpack://_N_E/./node_modules/es5-ext/object/assign/shim.js","webpack://_N_E/./node_modules/xgplayer/es/plugin/pluginsManager.js","webpack://_N_E/./node_modules/type/plain-function/is.js","webpack://_N_E/./node_modules/es5-ext/object/assign/is-implemented.js","webpack://_N_E/./node_modules/es5-ext/string/#/contains/is-implemented.js","webpack://_N_E/./node_modules/es5-ext/object/valid-callable.js","webpack://_N_E/./node_modules/es5-ext/object/assign/index.js","webpack://_N_E/./node_modules/es5-ext/object/is-object.js","webpack://_N_E/./node_modules/xgplayer/es/plugin/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugin/hooksDescriptor.js","webpack://_N_E/./node_modules/xgplayer/es/error.js","webpack://_N_E/./node_modules/xgplayer/es/plugin/basePlugin.js","webpack://_N_E/./node_modules/xgplayer/es/proxy.js","webpack://_N_E/./node_modules/xgplayer/es/utils/database.js","webpack://_N_E/./node_modules/xgplayer/es/constant.js","webpack://_N_E/./node_modules/xgplayer/es/plugin/preset.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/controls/index.js","webpack://_N_E/./node_modules/xgplayer/es/player.js","webpack://_N_E/./node_modules/xgplayer/es/defaultConfig.js","webpack://_N_E/./node_modules/type/object/is.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/common/optionList.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/common/optionsIcon.js","webpack://_N_E/./node_modules/es5-ext/object/is-value.js","webpack://_N_E/./node_modules/type/function/is.js","webpack://_N_E/./node_modules/xgplayer/es/utils/draggabilly.js","webpack://_N_E/./node_modules/es5-ext/object/valid-object.js","webpack://_N_E/./node_modules/es5-ext/object/keys/shim.js","webpack://_N_E/./node_modules/es5-ext/object/keys/index.js","webpack://_N_E/./node_modules/delegate/src/delegate.js","webpack://_N_E/./node_modules/event-emitter/all-off.js","webpack://_N_E/./node_modules/type/value/is.js","webpack://_N_E/./node_modules/type/prototype/is.js","webpack://_N_E/./node_modules/delegate/src/closest.js","webpack://_N_E/./node_modules/es5-ext/object/valid-value.js","webpack://_N_E/./node_modules/xgplayer/es/utils/util.js","webpack://_N_E/./node_modules/xgplayer/es/lang/index.js","webpack://_N_E/./node_modules/xgplayer/es/lang/en.js","webpack://_N_E/./node_modules/xgplayer/es/lang/zh-cn.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/replay/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/poster/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/start/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/enter/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/miniScreen/miniScreenIcon.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/miniScreen/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/pc/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/mobile/touch.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/mobile/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/keyboard/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/loading/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/progress/innerList.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/progress/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/play/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/fullscreen/backicon.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/fullscreen/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/time/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/volume/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/rotate/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/pip/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/playNext/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/download/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/screenShot/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/definition/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/playbackRate/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/cssFullScreen/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/error/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/prompt/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/progressPreview/dotsApi.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/progressPreview/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/common/thumbnail.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/track/index.js","webpack://_N_E/./node_modules/xgplayer/es/plugins/progress/miniProgress.js","webpack://_N_E/./node_modules/xgplayer/es/presets/default.js","webpack://_N_E/./node_modules/xgplayer/es/index-umd.js","webpack://_N_E/./node_modules/downloadjs/download.js","webpack://_N_E/./node_modules/xgplayer/es/stateClassMap.js","webpack://_N_E/./node_modules/xgplayer/es/events.js","webpack://_N_E/./node_modules/xgplayer-subtitles/dist/index.min.js","webpack://_N_E/./node_modules/xgplayer/es/utils/sniffer.js","webpack://_N_E/./node_modules/event-emitter/index.js"],"names":["indexOf","String","prototype","module","exports","searchString","call","this","arguments","contains","XG_DEBUG_OPEN","window","location","href","STYLE","info","error","warn","XGTAG","XG_DEBUG","config","debug","logInfo","message","_console","_len","length","optionalParams","Array","_key","console","log","apply","concat","logWarn","_console2","_len2","_key2","logError","_console3","_len3","_key3","bindDebug","player","bind","_get","get","object","property","receiver","Function","desc","Object","getOwnPropertyDescriptor","undefined","parent","getPrototypeOf","value","getter","_createClass","defineProperties","target","props","i","descriptor","enumerable","configurable","writable","defineProperty","key","Constructor","protoProps","staticProps","_typeof","Symbol","iterator","obj","constructor","_classCallCheck","instance","TypeError","_possibleConstructorReturn","self","ReferenceError","isUrl","str","test","createIcon","icon","classname","attr","pluginName","newIcon","Element","addClass","keys","map","setAttribute","url","src","createDom","tag","e","createDomFromHtml","registerIconsObj","iconsConfig","plugin","_icons","icons","playerConfig","orgIcon","class","mergeIconClass","mergeIconAttr","Plugin","_BasePlugin","args","_this","__proto__","__delegates","subClass","superClass","create","setPrototypeOf","_inherits","html","index","len","children","insertIdx","Number","isDomElement","Node","coordinate","mode","curIdx","getAttribute","appendChild","insertBefore","insertAdjacentHTML","root","querySelector","eventType","callback","capture","dels","isArray","forEach","item","ret","push","_parent","_el","registerIcons","langText","textConfig","defaultTexConfig","registerLangauageTexts","lang","renderStr","render","Error","insert","name","defineGetterOrSetter","style","setAttr","setStyle","__registeChildren","_this2","_children","_plugin","options","deepCopy","registerPlugin","i18n","checkChildren","node","langKey","langTextShow","toUpperCase","innerHTML","dom","text","_c","qs","_this3","bindEL","delegate","_this4","unbindEL","destroy","splice","_this5","typeOf","_this6","htmlStr","innerHtml","event","eventHandle","isBubble","addEventListener","removeEventListener","display","getComputedStyle","getPropertyValue","pdom","child","find","err","_this7","unRegisterPlugin","hasOwnProperty","remove","parentNode","removeChild","POSITIONS","ROOT","ROOT_LEFT","ROOT_RIGHT","ROOT_TOP","CONTROLS_LEFT","CONTROLS_RIGTH","CONTROLS_RIGHT","CONTROLS_CENTER","CONTROLS","ROOT_TYPES","isValue","process","opts1","result","isPlainFunction","assign","normalizeOpts","dscr","c","w","gs","set","max","Math","dest","typeIsObject","toString","match","pluginsManager","init","cgid","_pluginInfoId","Date","getTime","pluginGroup","checkPlayerRoot","_keys","_p","_player","lazyRegister","lazyPlugin","timeout","Promise","race","loader","then","__esModule","default","register","resolve","reject","setTimeout","_plugins","plugins","originalOptions","_originalOptions","isSupported","toLowerCase","defaultConfig","unRegister","_instance","func","afterCreate","__destroy","deletePlugin","getPlugins","findPlugin","cName","beforeInit","retPromise","fun","_loadingPlugins","all","pluginsRet","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","next","done","beforePlayerInit","return","catch","afterInit","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","afterPlayerInit","setLang","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","updateLang","reRender","pluginsMap","_iteratorNormalCompletion4","_didIteratorError4","_iteratorError4","_step4","_iterator4","_args","_iteratorNormalCompletion5","_didIteratorError5","_iteratorError5","_step5","_iterator5","_item","onPluginsReady","_iteratorNormalCompletion6","_didIteratorError6","_iteratorError6","_step6","_iterator6","isFunction","classRe","functionToString","foo","bar","trzy","fn","function","callHandler","handler","hook","hookName","preset","pre","__hooks","_arguments","_preset$pre","slice","_hooks$hookName","preRet","isContinue","useHooks","usePluginHooks","hooksDescriptor","ErrorTypes","network","code","msg","remark","mse","parse","format","decoder","runtime","other","Errors","type","currentTime","duration","networkState","readyState","currentSrc","ended","errd","line","handle","version","errorCode","mediaError","r","playerVersion","errorType","domain","document","ex","arg","showErrorMsg","BasePlugin","checkIsFunction","beforeCreate","__args","__events","__init","Obj","logger","on","once","off","res","emit","getPlugin","offAll","clearAllTimers","i18nKeys","VIDEO_EVENTS","emitEvents","eventKey","errorHandler","Proxy","_hasStart","_currentTime","_duration","videoConfig","controls","autoplay","playsinline","airplay","tabindex","mediaType","videoAttrbutes","playerType","isWeixin","os","isAndroid","loop","video","defaultPlaybackRate","playbackRate","autoplayMuted","muted","_interval","videoEventMiddleware","attachVideoEvents","middlewares","evHandlers","_evHandlers","eventName","funName","charAt","getHandler","k","pause","removeAttribute","clearInterval","detachVideoEvents","play","canPlayType","range","buffered","start","end","bool","isTrue","_buffered","crossOrigin","time","defaultMuted","paused","rate","played","preload","seekable","seeking","onWaiting","volume","vol","INDEXDB","mydb","db","ojstore","keypath","indexedDB","webkitindexedDB","IDBKeyRange","webkitIDBKeyRange","myDB","request","open","onerror","onsuccess","onupgradeneeded","transaction","objectStoreNames","createObjectStore","keyPath","deleteDatabase","close","storename","data","store","objectStore","add","put","delete","clear","FULLSCREEN_EVENTS","GET_FULLSCREEN_API","EXIT_FULLSCREEN_API","_toConsumableArray","arr","arr2","from","_Plugin","Controls","_ref","_temp","onMouseEnter","userTimer","clearTimeout","onMouseLeave","closeControlsBlur","PLAYER_FOCUS","disable","device","marginControls","autoHide","_config","height","FLEX_CONTROLS","AUTOHIDE","left","center","right","innerRoot","MINI_STATE_CHANGE","isMini","removeClass","PLAYER_BLUR","ignoreStatus","position","unbind","className","initShow","PlAYER_HOOKS","_Proxy","Player","deepMerge","id","el","nullUrlStart","width","fluid","fitVideoSize","videoFillMode","videoInit","poster","isMobileSimulateMode","execBeforePluginsCall","allowSeekAfterEnded","enableContextmenu","closeVideoClick","closeVideoDblclick","closePlayerBlur","leavePlayerTime","closePlayVideoFocus","closePauseVideoFocus","closeFocusVideoFocus","closeDelayBlur","startTime","seekedStatus","miniprogress","disableSwipeHandler","enableSwipeHandler","ignores","whitelist","inactive","documentElement","navigator","language","toLocaleLowerCase","controlsList","screenShot","rotate","pip","mini","cssFullscreen","keyShortcut","presets","customDuration","timeOffset","commonStyle","progressColor","playedColor","cachedColor","sliderBtnStyle","volumeColor","defaultIdx","defaultPreset","waitTimer","isReady","isPlaying","isSeeking","isCanplay","_runPending","rotateDeg","isActive","isCssfullScreen","fullscreen","_fullscreenEl","_originCssText","_fullScreenOffset","_videoHeight","_videoWidth","_played","begin","acc","database","_initDOM","_bindEvents","_registerPresets","_registerPlugins","onReady","hasStart","getElementById","nodeType","vid","_initBaseDoms","DEFAULT","ACTIVE","NO_CONTROLS","ENTER","NO_START","topBar","leftBar","rightBar","innerContainer","resetFullState","onFullscreenChange","isFullScreen","fullEl","getFullScreenEl","tagName","FULLSCREEN","exitCssFullscreen","needFullsreenScroll","scrollTo","top","focus","setStyleFromCsstext","__webkitbeginfullscreen","__webkitendfullscreen","isIos","getVideoSize","playFunc","mousemoveFunc","canPlayFunc","videoPlay","loadeddataFunc","firstChild","load","isPhone","ignoresStr","join","split","lazy","loadingPlugin","forceBeforeInit","Preset","_player$config$plugin","_player$config$ignore","_presetInst","_presetInst$plugins","_presetInst$ignores","_presetInst$icons","usePreset","PLUFGIN","_pConfig","hasClass","_this8","_startInit","fileName","lineNumber","_this9","playPromise","NOT_ALLOW_AUTOPLAY","PLAYING","onError","_errorTimer","_this10","PAUSED","_this11","isNaN","_config2","isSeekedPlay","_status","parseInt","reloadFunc","_this12","REPLAY","ENDED","ERROR","cls","isDelDom","_unbindEvents","classNameList","filter","_this13","onPlay","LOADING","cur","scrollTop","scrollLeft","cssText","webkitRequestFullscreen","ALLOW_KEYBOARD_INPUT","fullscreenEnabled","webkitSupportsFullscreen","webkitEnterFullscreen","webkitExitFullScreen","CSS_FULLSCREEN","exitFullscreen","_this14","delay","SEEKING","_this15","_this16","checkBuffer","videoWidth","videoHeight","_config3","containerSize","getBoundingClientRect","controlsHeight","videoFit","fit","rWidth","rHeight","videoScale","vWidth","vHeight","cWidth","cHeight","updateObjectPosition","objectPosition","langKeys","textKeys","__url","posterUrl","update","_isFullScreen","val","_played2","possibleTypes","OptionList","onItemClick","renderItemList","_delegates","attrKeys","isCurrent","showText","delegateTarget","changeCallback","curlSelected","getAttrObj","to","IS_MOBILE","OptionsIcon","curValue","curIndex","list","listType","listStyle","hidePortrait","CANPLAY","show","optionsList","hide","activeEvent","onEnter","onLeave","isUndefined","preventDefault","stopPropagation","onToggle","blur","unFocus","curItem","changeCurrentText","getTextByLang","itemList","_undefined","isPrototype","getStyleSize","num","parseFloat","measurements","measurementsLength","getSize","elem","getStyle","size","innerWidth","innerHeight","outerWidth","outerHeight","getZeroSize","offsetWidth","offsetHeight","isBorderBox","boxSizing","measurement","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderWidth","borderLeftWidth","borderRightWidth","borderHeight","borderTopWidth","borderBottomWidth","isBorderBoxSizeOuter","styleWidth","styleHeight","getTouch","touches","dentifier","touch","identifier","EVENTS","POST_START_EVENTS","mousedown","touchstart","pointerdown","Draggabilly","isEnabled","isDragging","isDown","downPoint","dragPoint","x","y","startPos","_root","_handlerDom","_bindStartEvent","_startKey","events","_boundPointerEvents","onUp","positionDrag","requestAnimationFrame","animate","transform","webKitTransform","dragStart","dragMove","dragEnd","changedTouches","touchIdentifier","pointerId","dragCancel","pointer","_getPosition","maxY","maxX","setLeftTop","_bindPostStartEvents","_unbindPostStartEvents","presetInfo","moveVector","pageX","pageY","hasDragStarted","dragRealStart","_startPos","_dragPointerMove","dragX","dragY","checkContain","_unbindStartEvent","abs","axis","drag","grid","_getPositionCoord","_addTransformPosition","matrixValues","xIndex","translateX","translateY","styleSide","measure","parentSize","isObject","closest","_delegate","element","selector","useCapture","listenerFn","listener","elements","querySelectorAll","emitter","__ee__","matches","proto","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","util","tpl","attrs","cname","createElement","doc","classList","some","orgClassName","RegExp","replace","reg","sel","currentStyle","defaultView","pad","charstr","maxlen","ceil","chars","substring","round","hour","padStart","floor","minute","second","clientX","clientY","offsetX","offsetLeft","offsetY","offsetTop","_target","srcElement","dst","_dst$key","getBgImage","backgroundImage","a","copyDom","back","attributes","setInterval","context","intervalFunc","frequency","_timers","_timerIds","createImgBtn","imgUrl","btn","h","unit","every","trim","backgroundSize","margin","Hex2RGBA","hex","alpha","rgb","sixHex","kw","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","checkIsObject","preloadImg","onload","img","Image","complete","cancelable","pageYOffset","body","pageXOffset","checkTouchSupport","XGI18nLang","XGI18nTextKeys","XGI18nLangKeys","updateKeys","en","use","LANG","texts","TEXT","HAVE_NOTHING","HAVE_METADATA","HAVE_CURRENT_DATA","HAVE_FUTURE_DATA","HAVE_ENOUGH_DATA","NETWORK_EMPTY","NETWORK_IDLE","NETWORK_LOADING","NETWORK_NO_SOURCE","MEDIA_ERR_ABORTED","MEDIA_ERR_NETWORK","MEDIA_ERR_DECODE","MEDIA_ERR_SRC_NOT_SUPPORTED","PLAY_TIPS","PAUSE_TIPS","PLAYNEXT_TIPS","DOWNLOAD_TIPS","ROTATE_TIPS","RELOAD_TIPS","FULLSCREEN_TIPS","EXITFULLSCREEN_TIPS","CSSFULLSCREEN_TIPS","EXITCSSFULLSCREEN_TIPS","TEXTTRACK","PIP","SCREENSHOT","LIVE","OFF","OPEN","MINI_DRAG","MINISCREEN","REFRESH_TIPS","REFRESH","extend","XGI18nText","Replay","replay","__handleReplay","path","PLAY","Poster","isEndedShow","hideCanplay","TIME_UPDATE","onTimeUpdate","URL_CHANGE","AnimateMap","Start","autoPlayStart","isShowPause","isShowEnd","disableAnimate","initIcons","READY","AUTOPLAY_STARTED","onPlayPause","AUTOPLAY_PREVENTED","PAUSE","clickHandler","switchPausePlay","startPlay","startPause","isAnimate","endShow","seconds","addAnimate","switchStatus","status","Enter","HTMLElement","barStr","logo","MiniScreenIcon","getMini","exitMini","onClick","MiniScreen","onCancelClick","isClose","onCenterClick","onScroll","scrollY","pos","scrollHeight","getCss","lastStyle","isShowIcon","isScrollSwitch","disableDrag","_draggabilly","MOUSE_EVENTS","mouseenter","mouseleave","mousemove","PCPlugin","onMouseMove","_this$playerConfig","onVideoClick","closeVideoStopPropagation","clickTimer","Infinity","onVideoDblClick","getFullscreen","_playerConfig","disableContextmenu","initEvents","onContextmenu","returnValue","cancelBubble","_player2","TOUCHS","move","cancel","MOUSES","Touche","_pos","moving","pressDelay","dbClickDelay","disablePress","disableDbClick","miniStep","pressIntrvalId","dbIntrvalId","__handlers","_initEvent","timstamp","performance","now","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","__clearPress","trigger","press","__clearDb","handlers","__setPress","__setDb","diffx","diffy","touchend","touchmove","ACTIONS","MobilePlugin","touche","getTouche","disableGesture","isStart","rect","scopeL","scopeR","scopeM1","scopeM","scopeM2","miniMoveStep","hideControlsActive","scope","checkScope","gestureY","gestureX","executeMove","endLastMove","resetSeekState","resetPos","changeAction","onRootTouchMove","checkIsRootTarget","onRootTouchEnd","recoverAutoHide","light","timer","updateGesture","gradient","isTouchingSeek","miniYPer","pressRate","darkness","maxDarkness","disableActive","disableTimeProgress","hideControlsEnd","moveDuration","closedbClick","disableSeekIcon","seekTipIcon","xgMask","initCustomStyle","registerThumbnail","DURATION_CHANGE","eventsMap","progressPlugin","progress","addCallBack","activeSeekNote","forward","thumbnail","usable","createThumbnail","timePreview","backgroundColor","color","action","startPlugin","recover","mold","updateTime","updateBrightness","updateVolume","lastScope","seek","toFixed","switchPlayPause","percent","updatePercent","isForward","isLive","focusHide","updateThumbnails","Keyboard","extendkeyCodeMap","keyCodeMap","key1","seekStep","keyCode","noBodyTarget","mergekeyCodeMap","onKeydown","onBodyKeyDown","rec","bottom","isBodyTarget","flag","checkIsVisible","checkCode","handleKeyCode","funKey","Loading","loadingIcon","TPL","styleKey","InnerList","fragments","focusClass","cachedIndex","playedIndex","newIndex","millisecond","progressList","curPFrag","per","cached","updateDuration","newPIndex","findIndex","updateProgress","newCIndex","inner","isFocus","Progress","onMoveOnly","computeTime","triggerCallbacks","onBodyClick","onMouseDown","closeMoveSeek","onMoveStart","isProgressMoving","progressBtn","_state","updateWidth","isMobile","onMouseUp","onMoveEnd","isEnter","diff","miniStartStep","isPauseMoving","useable","__dragCallBacks","direc","isDragingSeek","isCloseClickSeek","innerList","outer","createInner","onTimeupdate","SEEKED","onCacheUpdate","PROGRESS","bindDomEvents","boxShadow","_index","pauseAutoHide","realTime","_root$getBoundingClie","rLeft","offset","timeIcon","resetActive","notSeek","point","bufferedPoint","thumbnailPlugin","Play","btnClick","changeLangTextKey","TopBackIcon","screenBack","Fullscreen","fullSreenHandler","changeFullScreen","FULLSCREEN_CHANGE","needBackIcon","topBackIcon","rotateFullscreen","orientation","setRotateDeg","deg","ROTATE_FULLSCREEN","useCssFullscreen","getCssFullscreen","exitRotateFullscreen","getRotateFullscreen","switchCallback","Time","isActiving","constrolsMode","createCenterTime","durationDom","timeDom","current","centerCurDom","centerDurDom","updateState","Volume","volumeSmall","volumeLarge","volumeMuted","changeMutedHandler","onBarMousedown","onMouseenter","onMouseleave","VOLUME_CHANGE","onVolumeChange","slider","barRect","updateVolumePos","isMoveing","onMove","min","Rotate","innerRotate","clockwise","onBtnClick","CSS_FULLSCREEN_CHANGE","VIDEO_RESIZE","updateRotateDeg","_transform","_styles","transformOrigin","times","factor","PresentationMode","showIcon","pMode","pipIcon","switchPIP","COMPLETE","isPIPAvailable","initPipEvents","leavePIPCallback","enterPIPCallback","pipWindow","pictureInPictureWindow","onWebkitpresentationmodechanged","webkitPresentationMode","checkWebkitSetPresentationMode","isPip","exitPIP","requestPIP","webkitSetPresentationMode","requestPictureInPicture","reason","exitPictureInPicture","pictureInPictureEnabled","disablePictureInPicture","webkitSupportsPresentationMode","pictureInPictureElement","PlayNextIcon","idx","urlList","playNext","Download","isLock","download","getAbsoluteURL","div","ScreenShot","screenshotIcon","initSize","fitVideo","onClickBtn","filename","saveLink","createEvent","initMouseEvent","dispatchEvent","canvas","canvasCtx","getContext","shot","saveScreenShot","option","quality","createCanvans","drawImage","toDataURL","_OptionsIcon","DefinitionIcon","curTime","isPaused","changeDefinitionList","switchURL","curRUL","originUrl","items","showItem","definition","defaultDefinition","AFTER_DEFINITION_CHANGE","onCanplayChangeDefinition","lastATag","_options","_mediaDataSource","switchUrl","userAgent","onTimeupdateChangeDefinition","BEFORE_DEFINITION_CHANGE","changeDefinition","DEFINITION_CHANGE","PlaybackRate","curRate","RATE_CHANGE","itemInfo","CssFullScreen","contentIcon","switchTips","ErrorPlugin","errorRetry","handleError","handleCanPlay","retry","errorNote","Prompt","intervalId","customConfig","customOnClick","showPrompt","hidePrompt","detail","interval","highlight","hideinterval","CONTROLS_FOLLOW","ISPOT","mergeISPOT","iSpot","APIS","initDots","_ispots","createDot","_ispotsInit","isNew","calcuPosition","dotDom","findDot","updateDot","needShow","dot","showDot","deleteDot","del","_i","parentElement","deleteAllDots","dotDoms","getElementsByTagName","updateAllDots","iSpots","ispot","CALLBACK_MAP","ProgressPreview","onMousemove","f","onMousedown","videoPreview","videothumbnail","previewLine","timePoint","timeText","tipText","_hasThumnail","ispots","progressDot","initDotsAPI","bindEvents","handlerPreviewClick","updatePosition","isDrag","cwidth","isflex","lwidth","tWidth","_t","_tt","timeStr","textContent","updateLinePos","showTips","isFocusDots","defaultText","hideTips","updateTimeText","thumbnailConfig","isShowThumbnail","tRoot","isShowCoverPreview","totalWidth","widthPerSeconds","isDefault","removeCallBack","miniWidth","Thumbnail","ratio","preloadMark","isShow","urls","pic_num","col","row","scale","initThumbnail","containerWidth","containerHeight","urlIndex","indexInPage","rowIndex","colIndex","swidth","sHeight","getUrlByIndex","backgroundPosition","customStyle","getPosition","_config4","formartList","defaultIndex","label","srclang","TextTrack","isDefaultOpen","follow","followBottom","offsetBottom","baseSizeX","baseSizeY","minSize","minMobileSize","fontColor","closeText","iconText","texttrack","textTrack","subTitles","defaultOpen","attachPlayer","curLanguage","currentText","cuIndex","switchOff","switch","MiniProgress","DefaultPreset","_plugins2","_plugins3","simulateMode","contolsIcons","barIcons","layers","sniffer","Util","Sniffer","Events","I18N","strFileName","strMimeType","blob","reader","defaultMime","mimeType","payload","anchor","myBlob","Blob","MozBlob","WebKitBlob","pop","ajax","XMLHttpRequest","responseType","response","send","msSaveBlob","dataUrlToBlob","saver","tempUiArr","Uint8Array","mx","charCodeAt","strUrl","parts","binData","atob","decodeURIComponent","uiArr","winMode","click","URL","revokeObjectURL","confirm","createObjectURL","btoa","encodeURIComponent","FileReader","readAsDataURL","DEFAULT_SKIN","PC","MOBILE","MINI","WAITING","CANPLAY_THROUGH","LOADED_DATA","LOAD_START","EMPTIED","STALLED","SUSPEND","ABORT","BUFFER_CHANGE","URL_NULL","DESTROY","SEI_PARSED","RETRY","PIP_CHANGE","t","n","promise","o","s","Ur","u","l","p","head","styleSheet","disabled","createTextNode","d","Kr","$r","addObserver","v","unObserver","Xr","an","g","rn","Cn","Un","trace","styles","statusText","m","_","b","__g","__e","T","S","O","j","P","E","M","A","R","valueOf","L","C","N","I","F","z","B","G","W","virtual","U","H","V","D","$","K","X","Y","J","q","Z","Q","propertyIsEnumerable","tt","et","nt","rt","it","ot","at","copyright","st","ct","random","ut","lt","ft","ht","pt","dt","vt","yt","gt","mt","bt","xt","kt","contentWindow","write","wt","Tt","St","Ot","jt","Pt","Et","Mt","At","Rt","Lt","Ct","Nt","It","Ft","entries","values","zt","Bt","_k","Arguments","Ht","Vt","Dt","Wt","Gt","Ut","$t","Kt","Xt","Yt","Jt","qt","Zt","callee","Qt","te","ee","ne","re","ie","oe","getIteratorMethod","ae","BREAK","RETURN","se","ce","ue","le","fe","setImmediate","he","clearImmediate","pe","MessageChannel","de","Dispatch","ve","ye","ge","me","nextTick","port2","port1","onmessage","postMessage","importScripts","onreadystatechange","_e","be","xe","MutationObserver","WebKitMutationObserver","ke","we","Te","Se","Oe","je","Pe","Ee","Me","Ae","Re","Le","Ce","Ne","Ie","Fe","ze","Be","exit","enter","standalone","observe","characterData","He","Ve","De","versions","We","v8","Ge","Ue","$e","Ke","Xe","PromiseRejectionEvent","Ye","Je","_n","_v","_s","ok","fail","_h","Qe","qe","Ze","onunhandledrejection","_a","onrejectionhandled","tn","_d","_w","finally","try","nn","sn","cn","un","ln","hn","pn","dn","vn","yn","gn","mn","bn","xn","kn","wn","Tn","Sn","On","jn","Pn","En","Mn","An","Rn","Ln","__eeOnceListener__","methods","method","ontimeout","onabort","setRequestHeader","Nn","In","Fn","zn","Bn","Hn","Vn","Dn","Wn","Gn","checkFormat","parseASS","parseVTT","textTag","parseASSItem","exec","checkIsTime","parseVttTime","parseVttText","$n","Kn","Xn","Yn","isExtensible","preventExtensions","NEED","KEY","fastKey","getWeak","onFreeze","Jn","qn","Zn","getOwnPropertySymbols","Qn","tr","er","nr","rr","getOwnPropertyNames","ir","or","ar","sr","cr","ur","lr","fr","hr","pr","dr","vr","yr","JSON","gr","stringify","mr","_r","br","xr","kr","wr","Tr","Sr","Or","QObject","jr","findChild","Pr","Er","Mr","Ar","Rr","Lr","Cr","Nr","Ir","Fr","zr","Br","Hr","Vr","for","keyFor","useSetter","useSimple","Dr","Wr","Gr","ResizeObserver","observer","__trigger","unobserve","disconnect","contentRect","__runHandler","insertAt","Yr","RESIZE","Jr","_cid","_gid","_iId","_iC","_loadingTrack","_isOpen","_videoMeta","lheight","vBottom","vLeft","setSubTitles","addStyles","detachPlayer","__onTimeupdate","_onResize","_updateCurrent","__render","__startResize","fontSize","resize","isPc","ua","firfox","chrome","opera","safari","isWindowsPhone","isSymbian","isFireFox","isTablet","descriptors","base","callable","listeners","candidate"],"mappings":"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","file":"static/chunks/a2a33ece8e8a316bb9838470b8fbb3489a5b1c7f.e105de4d57dc73cae914.js","sourcesContent":["\"use strict\";\n\nvar indexOf = String.prototype.indexOf;\n\nmodule.exports = function (searchString/*, position*/) {\n\treturn indexOf.call(this, searchString, arguments[1]) > -1;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? String.prototype.contains : require(\"./shim\");\n","\nvar XG_DEBUG_OPEN = typeof window !== 'undefined' && window.location && window.location.href.indexOf('xgplayerdebug=1') > -1;\n\nvar STYLE = {\n info: 'color: #525252; background-color: #90ee90;',\n error: 'color: #525252; background-color: red;',\n warn: 'color: #525252; background-color: yellow; '\n};\n\nvar XGTAG = '%c[xgplayer]》》';\n\nvar XG_DEBUG = {\n config: {\n debug: typeof window !== 'undefined' && window.location && window.location.href.indexOf('playerdebug') > -1\n },\n logInfo: function logInfo(message) {\n var _console;\n\n for (var _len = arguments.length, optionalParams = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n optionalParams[_key - 1] = arguments[_key];\n }\n\n (XG_DEBUG_OPEN || this.config.debug) && (_console = console).log.apply(_console, [XGTAG, STYLE.info, message].concat(optionalParams));\n },\n\n logWarn: function logWarn(message) {\n var _console2;\n\n for (var _len2 = arguments.length, optionalParams = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n optionalParams[_key2 - 1] = arguments[_key2];\n }\n\n (_console2 = console).warn.apply(_console2, [XGTAG, STYLE.warn, message].concat(optionalParams));\n },\n\n logError: function logError(message) {\n var _console3;\n\n for (var _len3 = arguments.length, optionalParams = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n optionalParams[_key3 - 1] = arguments[_key3];\n }\n\n (_console3 = console).error.apply(_console3, [XGTAG, STYLE.error, message].concat(optionalParams));\n }\n};\n\nfunction bindDebug(player) {\n player.logInfo = XG_DEBUG.logInfo.bind(player);\n player.logWarn = XG_DEBUG.logWarn.bind(player);\n player.logError = XG_DEBUG.logError.bind(player);\n}\n\nexport { XG_DEBUG as default, bindDebug };","var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n* an ui Plugin class\n*\n**/\nimport BasePlugin, { Util, XG_DEBUG } from './basePlugin';\nimport _delegate from 'delegate';\n\n/**\n * Check if the url is a link address\n * @param {String} str\n */\nfunction isUrl(str) {\n if (!str) {\n return false;\n }\n return str.indexOf && /^http/.test(str);\n}\n\nfunction mergeIconClass(icon, classname) {\n if ((typeof icon === 'undefined' ? 'undefined' : _typeof(icon)) === 'object' && icon.class && typeof icon.class === 'string') {\n return classname + ' ' + icon.class;\n }\n return classname;\n}\n\nfunction mergeIconAttr(icon, attr) {\n if ((typeof icon === 'undefined' ? 'undefined' : _typeof(icon)) === 'object' && icon.attr && _typeof(icon.attr) === 'object') {\n Object.keys(icon.attr).map(function (key) {\n attr[key] = icon.attr[key];\n });\n }\n return attr;\n}\n\nfunction createIcon(icon, key) {\n var classname = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var attr = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var pluginName = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n\n var newIcon = null;\n if (icon instanceof window.Element) {\n Util.addClass(icon, classname);\n Object.keys(attr).map(function (key) {\n icon.setAttribute(key, attr[key]);\n });\n return icon;\n }\n\n if (isUrl(icon) || isUrl(icon.url)) {\n attr.src = isUrl(icon) ? icon : icon.url || '';\n newIcon = Util.createDom(icon.tag || 'img', '', attr, 'xg-img ' + classname);\n return newIcon;\n }\n\n if (typeof icon === 'function') {\n try {\n newIcon = icon();\n if (newIcon instanceof window.Element) {\n Util.addClass(newIcon, classname);\n Object.keys(attr).map(function (key) {\n newIcon.setAttribute(key, attr[key]);\n });\n return newIcon;\n } else {\n XG_DEBUG.logWarn('warn>>icons.' + key + ' in config of plugin named [' + pluginName + '] is a function mast return an Element Object');\n }\n return null;\n } catch (e) {\n XG_DEBUG.logError('Plugin named [' + pluginName + ']:createIcon', e);\n return null;\n }\n }\n\n if (typeof icon === 'string') {\n return Util.createDomFromHtml(icon, attr, classname);\n }\n XG_DEBUG.logWarn('warn>>icons.' + key + ' in config of plugin named [' + pluginName + '] is invalid');\n return null;\n}\n\nfunction registerIconsObj(iconsConfig, plugin) {\n var _icons = plugin.config.icons || plugin.playerConfig.icons;\n Object.keys(iconsConfig).map(function (key) {\n var orgIcon = iconsConfig[key];\n var classname = orgIcon && orgIcon.class ? orgIcon.class : '';\n var attr = orgIcon && orgIcon.attr ? orgIcon.attr : {};\n var newIcon = null;\n if (_icons && _icons[key]) {\n classname = mergeIconClass(_icons[key], classname);\n attr = mergeIconAttr(_icons[key], attr);\n newIcon = createIcon(_icons[key], key, classname, attr, plugin.pluginName);\n }\n if (!newIcon && orgIcon) {\n newIcon = createIcon(orgIcon.icon ? orgIcon.icon : orgIcon, attr, classname, {}, plugin.pluginName);\n }\n plugin.icons[key] = newIcon;\n });\n}\n\nfunction registerTextObj(textConfig, plugin) {\n Object.keys(textConfig).map(function (key) {\n Object.defineProperty(plugin.langText, key, {\n get: function get() {\n var lang = plugin.lang;\n return textConfig[key][lang] || textConfig[key]['zh'];\n }\n });\n });\n}\n\nvar Plugin = function (_BasePlugin) {\n _inherits(Plugin, _BasePlugin);\n\n _createClass(Plugin, null, [{\n key: 'insert',\n\n /**\n * 插入dom结构\n * @param {String | Element} html html字符串或者dom\n * @param {Element} parent\n * @param {*} index\n */\n value: function insert(html, parent) {\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n\n var len = parent.children.length;\n var insertIdx = Number(index);\n var isDomElement = html instanceof window.Node;\n\n if (len) {\n var i = 0;\n var coordinate = null;\n var mode = '';\n for (; i < len; i++) {\n coordinate = parent.children[i];\n var curIdx = Number(coordinate.getAttribute('data-index'));\n if (curIdx >= insertIdx) {\n mode = 'beforebegin';\n break;\n } else if (curIdx < insertIdx) {\n mode = 'afterend';\n }\n }\n\n if (isDomElement) {\n if (mode === 'afterend') {\n // as last element\n parent.appendChild(html);\n } else {\n parent.insertBefore(html, coordinate);\n }\n } else {\n coordinate.insertAdjacentHTML(mode, html);\n }\n return mode === 'afterend' ? parent.children[parent.children.length - 1] : parent.children[i];\n } else {\n isDomElement ? parent.appendChild(html) : parent.insertAdjacentHTML('beforeend', html);\n return parent.children[parent.children.length - 1];\n }\n }\n }, {\n key: 'delegate',\n value: function delegate(root, querySelector, eventType, callback) {\n var capture = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n var dels = [];\n if (root instanceof window.Node && typeof callback === 'function') {\n if (Array.isArray(eventType)) {\n eventType.forEach(function (item) {\n var ret = _delegate(root, querySelector, item, callback, capture);\n ret.key = querySelector + '_' + item;\n dels.push(ret);\n });\n } else {\n var ret = _delegate(root, querySelector, eventType, callback, capture);\n ret.key = querySelector + '_' + eventType;\n dels.push(ret);\n }\n }\n return dels;\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {};\n }\n }]);\n\n function Plugin() {\n var args = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Plugin);\n\n var _this = _possibleConstructorReturn(this, (Plugin.__proto__ || Object.getPrototypeOf(Plugin)).call(this, args));\n\n _this.__delegates = [];\n return _this;\n }\n\n _createClass(Plugin, [{\n key: '__init',\n value: function __init(args) {\n _get(Plugin.prototype.__proto__ || Object.getPrototypeOf(Plugin.prototype), '__init', this).call(this, args);\n var _parent = args.root;\n var _el = null;\n this.icons = {};\n var _orgicons = this.registerIcons() || {};\n registerIconsObj(_orgicons, this);\n\n this.langText = {};\n var defaultTexConfig = this.registerLangauageTexts() || {};\n registerTextObj(defaultTexConfig, this);\n var renderStr = '';\n try {\n renderStr = this.render();\n } catch (e) {\n XG_DEBUG.logError('Plugin:' + this.pluginName + ':render', e);\n throw new Error('Plugin:' + this.pluginName + ':render:' + e.message);\n }\n\n if (renderStr) {\n _el = Plugin.insert(renderStr, _parent, args.index);\n _el.setAttribute('data-index', args.index);\n } else if (args.tag) {\n _el = Util.createDom(args.tag, '', args.attr, args.name);\n _el.setAttribute('data-index', args.index);\n _parent.appendChild(_el);\n } else {\n return;\n }\n\n Plugin.defineGetterOrSetter(this, {\n 'root': {\n get: function get() {\n return _el;\n },\n configurable: true\n },\n 'parent': {\n get: function get() {\n return _parent;\n },\n configurable: true\n }\n });\n\n var attr = this.config.attr || {};\n var style = this.config.style || {};\n\n this.setAttr(attr);\n this.setStyle(style);\n if (this.config.index) {\n this.root.setAttribute('data-index', this.config.index);\n }\n this.__registeChildren();\n }\n }, {\n key: '__registeChildren',\n value: function __registeChildren() {\n var _this2 = this;\n\n if (!this.root) {\n return;\n }\n var children = this.children();\n if (children && (typeof children === 'undefined' ? 'undefined' : _typeof(children)) === 'object') {\n if (!this._children) {\n this._children = [];\n }\n if (Object.keys(children).length > 0) {\n Object.keys(children).map(function (item) {\n var name = item;\n var _plugin = children[name];\n var options = {\n root: _this2.root\n // eslint-disable-next-line no-unused-vars\n };var config = void 0,\n Plugin = void 0;\n if (typeof _plugin === 'function') {\n config = _this2.config[name] || {};\n Plugin = _plugin;\n } else if ((typeof _plugin === 'undefined' ? 'undefined' : _typeof(_plugin)) === 'object' && typeof _plugin.plugin === 'function') {\n config = _plugin.options ? Util.deepCopy(_this2.config[name] || {}, _plugin.options) : _this2.config[name] || {};\n Plugin = _plugin.plugin;\n }\n options.config = config;\n config.index !== undefined && (options.index = config.index);\n config.root && (options.root = config.root);\n _this2.registerPlugin(Plugin, options, name);\n });\n }\n }\n }\n }, {\n key: 'updateLang',\n value: function updateLang(lang) {\n if (!lang) {\n lang = this.lang;\n }\n function checkChildren(node, callback) {\n for (var i = 0; i < node.children.length; i++) {\n if (node.children[i].children.length > 0) {\n checkChildren(node.children[i], callback);\n } else {\n callback(node.children[i]);\n }\n }\n }\n var root = this.root,\n i18n = this.i18n,\n langText = this.langText;\n\n if (root) {\n checkChildren(root, function (node) {\n var langKey = node.getAttribute && node.getAttribute('lang-key');\n if (!langKey) {\n return;\n }\n var langTextShow = i18n[langKey.toUpperCase()] || langText[langKey];\n if (langTextShow) {\n node.innerHTML = typeof langTextShow === 'function' ? langTextShow(lang) : langTextShow;\n }\n });\n }\n }\n }, {\n key: 'changeLangTextKey',\n value: function changeLangTextKey(dom) {\n var key = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var i18n = this.i18n || {};\n var langText = this.langText;\n dom.setAttribute && dom.setAttribute('lang-key', key);\n var text = i18n[key.toUpperCase()] || langText[key];\n if (text) {\n dom.innerHTML = text;\n }\n }\n }, {\n key: 'plugins',\n value: function plugins() {\n return this._children;\n }\n }, {\n key: 'children',\n value: function children() {\n return {};\n }\n }, {\n key: 'registerPlugin',\n value: function registerPlugin(plugin) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n options.root = options.root || this.root;\n var _c = _get(Plugin.prototype.__proto__ || Object.getPrototypeOf(Plugin.prototype), 'registerPlugin', this).call(this, plugin, options, name);\n this._children.push(_c);\n return _c;\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {};\n }\n }, {\n key: 'registerLangauageTexts',\n value: function registerLangauageTexts() {\n return {};\n }\n }, {\n key: 'find',\n value: function find(qs) {\n if (!this.root) {\n return;\n }\n return this.root.querySelector(qs);\n }\n }, {\n key: 'bind',\n value: function bind(querySelector, eventType, callback) {\n var _this3 = this;\n\n if (arguments.length < 3 && typeof eventType === 'function') {\n if (Array.isArray(querySelector)) {\n querySelector.forEach(function (item) {\n _this3.bindEL(item, eventType);\n });\n } else {\n this.bindEL(querySelector, eventType);\n }\n } else {\n var ret = Plugin.delegate.call(this, this.root, querySelector, eventType, callback);\n this.__delegates = this.__delegates.concat(ret);\n }\n }\n }, {\n key: 'unbind',\n value: function unbind(querySelector, eventType, callback) {\n var _this4 = this;\n\n if (arguments.length < 3 && typeof eventType === 'function') {\n if (Array.isArray(querySelector)) {\n querySelector.forEach(function (item) {\n _this4.unbindEL(item, eventType);\n });\n } else {\n this.unbindEL(querySelector, eventType);\n }\n } else {\n var key = querySelector + '_' + eventType;\n for (var i = 0; i < this.__delegates.length; i++) {\n if (this.__delegates[i].key === key) {\n this.__delegates[i].destroy();\n this.__delegates.splice(i, 1);\n break;\n }\n }\n }\n }\n }, {\n key: 'setStyle',\n value: function setStyle(name, value) {\n var _this5 = this;\n\n if (!this.root) {\n return;\n }\n if (Util.typeOf(name) === 'String') {\n return this.root.style[name] = value;\n } else if (Util.typeOf(name) === 'Object') {\n Object.keys(name).map(function (key) {\n _this5.root.style[key] = name[key];\n });\n }\n }\n }, {\n key: 'setAttr',\n value: function setAttr(name, value) {\n var _this6 = this;\n\n if (!this.root) {\n return;\n }\n if (Util.typeOf(name) === 'String') {\n return this.root.setAttribute(name, value);\n } else if (Util.typeOf(name) === 'Object') {\n Object.keys(name).map(function (key) {\n _this6.root.setAttribute(key, name[key]);\n });\n }\n }\n }, {\n key: 'setHtml',\n value: function setHtml(htmlStr, callback) {\n if (!this.root) {\n return;\n }\n this.root.innerHtml = htmlStr;\n if (typeof callback === 'function') {\n callback();\n }\n }\n }, {\n key: 'bindEL',\n value: function bindEL(event, eventHandle) {\n var isBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!this.root) {\n return;\n }\n if ('on' + event in this.root && typeof eventHandle === 'function') {\n this.root.addEventListener(event, eventHandle, isBubble);\n }\n }\n }, {\n key: 'unbindEL',\n value: function unbindEL(event, eventHandle) {\n var isBubble = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (!this.root) {\n return;\n }\n if ('on' + event in this.root && typeof eventHandle === 'function') {\n this.root.removeEventListener(event, eventHandle, isBubble);\n }\n }\n }, {\n key: 'show',\n value: function show(value) {\n if (!this.root) {\n return;\n }\n this.root.style.display = value !== undefined ? value : 'block';\n var cs = window.getComputedStyle(this.root, null);\n var cssDisplayValue = cs.getPropertyValue('display');\n if (cssDisplayValue === 'none') {\n return this.root.style.display = 'block';\n }\n }\n }, {\n key: 'hide',\n value: function hide() {\n this.root && (this.root.style.display = 'none');\n }\n }, {\n key: 'appendChild',\n value: function appendChild(pdom, child) {\n if (arguments.length < 2 && arguments[0] instanceof window.Element) {\n return this.root.appendChild(arguments[0]);\n }\n if (!child || !(child instanceof window.Element)) {\n return null;\n }\n try {\n if (typeof pdom === 'string') {\n return this.find(pdom).appendChild(child);\n } else {\n return pdom.appendChild(child);\n }\n } catch (err) {\n XG_DEBUG.logError('Plugin:appendChild', err);\n return null;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return '';\n }\n }, {\n key: 'destroy',\n value: function destroy() {}\n }, {\n key: '__destroy',\n value: function __destroy() {\n var _this7 = this;\n\n var player = this.player;\n\n this.__delegates.map(function (item) {\n item.destroy();\n });\n this.__delegates = [];\n // destroy the sub-plugin instance\n if (this._children instanceof Array) {\n this._children.map(function (item) {\n player.unRegisterPlugin(item.pluginName);\n });\n this._children = null;\n }\n if (this.root) {\n if (this.root.hasOwnProperty('remove')) {\n this.root.remove();\n } else if (this.root.parentNode) {\n this.root.parentNode.removeChild(this.root);\n }\n }\n\n _get(Plugin.prototype.__proto__ || Object.getPrototypeOf(Plugin.prototype), '__destroy', this).call(this);\n\n ['root', 'parent'].map(function (item) {\n Object.defineProperty(_this7, item, {\n writable: true\n });\n });\n }\n }, {\n key: 'lang',\n get: function get() {\n return this.player.lang;\n }\n }]);\n\n return Plugin;\n}(BasePlugin);\n\nvar ROOT_TYPES = {\n CONTROLS: 'controls',\n ROOT: 'root'\n};\n\nvar POSITIONS = {\n ROOT: 'root',\n ROOT_LEFT: 'rootLeft',\n ROOT_RIGHT: 'rootRight',\n ROOT_TOP: 'rootTop',\n CONTROLS_LEFT: 'controlsLeft',\n CONTROLS_RIGTH: 'controlsRight',\n CONTROLS_RIGHT: 'controlsRight',\n CONTROLS_CENTER: 'controlsCenter',\n CONTROLS: 'controls'\n};\n\nPlugin.POSITIONS = POSITIONS;\nPlugin.ROOT_TYPES = ROOT_TYPES;\n\nexport { Plugin as default, ROOT_TYPES, POSITIONS };","\"use strict\";\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\n","\"use strict\";\n\nmodule.exports = function () {\n\ttry {\n\t\tObject.keys(\"primitive\");\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nvar forEach = Array.prototype.forEach, create = Object.create;\n\nvar process = function (src, obj) {\n\tvar key;\n\tfor (key in src) obj[key] = src[key];\n};\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function (opts1/*, …options*/) {\n\tvar result = create(null);\n\tforEach.call(arguments, function (options) {\n\t\tif (!isValue(options)) return;\n\t\tprocess(Object(options), result);\n\t});\n\treturn result;\n};\n","\"use strict\";\n\nvar isValue = require(\"type/value/is\")\n , isPlainFunction = require(\"type/plain-function/is\")\n , assign = require(\"es5-ext/object/assign\")\n , normalizeOpts = require(\"es5-ext/object/normalize-options\")\n , contains = require(\"es5-ext/string/#/contains\");\n\nvar d = (module.exports = function (dscr, value/*, options*/) {\n\tvar c, e, w, options, desc;\n\tif (arguments.length < 2 || typeof dscr !== \"string\") {\n\t\toptions = value;\n\t\tvalue = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[2];\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t\tw = contains.call(dscr, \"w\");\n\t} else {\n\t\tc = w = true;\n\t\te = false;\n\t}\n\n\tdesc = { value: value, configurable: c, enumerable: e, writable: w };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n});\n\nd.gs = function (dscr, get, set/*, options*/) {\n\tvar c, e, options, desc;\n\tif (typeof dscr !== \"string\") {\n\t\toptions = set;\n\t\tset = get;\n\t\tget = dscr;\n\t\tdscr = null;\n\t} else {\n\t\toptions = arguments[3];\n\t}\n\tif (!isValue(get)) {\n\t\tget = undefined;\n\t} else if (!isPlainFunction(get)) {\n\t\toptions = get;\n\t\tget = set = undefined;\n\t} else if (!isValue(set)) {\n\t\tset = undefined;\n\t} else if (!isPlainFunction(set)) {\n\t\toptions = set;\n\t\tset = undefined;\n\t}\n\tif (isValue(dscr)) {\n\t\tc = contains.call(dscr, \"c\");\n\t\te = contains.call(dscr, \"e\");\n\t} else {\n\t\tc = true;\n\t\te = false;\n\t}\n\n\tdesc = { get: get, set: set, configurable: c, enumerable: e };\n\treturn !options ? desc : assign(normalizeOpts(options), desc);\n};\n","\"use strict\";\n\nvar keys = require(\"../keys\")\n , value = require(\"../valid-value\")\n , max = Math.max;\n\nmodule.exports = function (dest, src/*, …srcn*/) {\n\tvar error, i, length = max(arguments.length, 2), assign;\n\tdest = Object(value(dest));\n\tassign = function (key) {\n\t\ttry {\n\t\t\tdest[key] = src[key];\n\t\t} catch (e) {\n\t\t\tif (!error) error = e;\n\t\t}\n\t};\n\tfor (i = 1; i < length; ++i) {\n\t\tsrc = arguments[i];\n\t\tkeys(src).forEach(assign);\n\t}\n\tif (error !== undefined) throw error;\n\treturn dest;\n};\n","function typeIsObject(obj) {\n return Object.prototype.toString.call(obj).match(/([^\\s.*]+)(?=]$)/g)[0] === 'Object';\n}\n\n/**\n* a plugins manager to register and search\n**/\n\nvar pluginsManager = {\n init: function init(player) {\n // 标记每一个播放器实例\n var cgid = player._pluginInfoId;\n if (!cgid) {\n cgid = new Date().getTime();\n player._pluginInfoId = cgid;\n }\n if (!this.pluginGroup) {\n this.pluginGroup = {};\n }\n this.pluginGroup[cgid] = {\n '_player': player,\n '_originalOptions': player.config || {}\n };\n },\n\n\n /**\n * 检测当前dom中是否已经有初始化播放器\n * @param {Element} root\n */\n checkPlayerRoot: function checkPlayerRoot(root) {\n if (this.pluginGroup) {\n var _keys = Object.keys(this.pluginGroup);\n for (var i = 0; i < _keys.length; i++) {\n var _p = this.pluginGroup[_keys[i]]._player;\n if (_p.root === root) {\n return _p;\n }\n }\n return null;\n }\n return null;\n },\n\n\n /**\n * register a lazy plugin\n * @param { object } player instance\n * @param { object } lazyPlugin config\n *\n */\n lazyRegister: function lazyRegister(player, lazyPlugin) {\n var _this = this;\n\n var timeout = lazyPlugin.timeout || 1500;\n return Promise.race([lazyPlugin.loader().then(function (plugin) {\n var result = void 0;\n if (plugin && plugin.__esModule) {\n result = plugin.default;\n } else {\n result = plugin;\n }\n _this.register(player, result, plugin.options);\n }), new Promise(function (resolve, reject) {\n setTimeout(function () {\n reject(new Error('timeout'));\n }, timeout);\n })]);\n },\n\n /**\n * register a Plugin\n * @param { object } player the plugins install\n * @param { function } plugin the plugin contructor\n * @param { object } options the plugin configuration\n * @return { object } Plugin the plugin instance\n **/\n register: function register(player, plugin) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!player || !plugin || typeof plugin !== 'function' || plugin.prototype === undefined) {\n return;\n }\n var cgid = player._pluginInfoId;\n if (!cgid || !this.pluginGroup || !this.pluginGroup[cgid]) {\n this.init(player);\n cgid = player._pluginInfoId;\n }\n if (!this.pluginGroup[cgid]._plugins) {\n this.pluginGroup[cgid]._plugins = [];\n }\n var plugins = this.pluginGroup[cgid]._plugins;\n var originalOptions = this.pluginGroup[cgid]._originalOptions;\n options.player = this.pluginGroup[cgid]._player;\n\n var pluginName = options.pluginName || plugin.pluginName;\n if (!pluginName) {\n throw new Error('The property pluginName is necessary');\n }\n\n if (plugin.isSupported && !plugin.isSupported()) {\n console.warn('not supported plugin [' + pluginName + ']');\n return;\n }\n\n if (!options.config) {\n options.config = {};\n }\n\n // 读取播放器整体配置上的配置数据\n var keys = Object.keys(originalOptions);\n for (var i = 0; i < keys.length; i++) {\n if (pluginName.toLowerCase() === keys[i].toLowerCase()) {\n var config = originalOptions[keys[i]];\n if (typeIsObject(config)) {\n options.config = Object.assign({}, options.config, originalOptions[keys[i]]);\n }\n break;\n }\n }\n\n // 复制插件的默认配置项\n if (plugin.defaultConfig) {\n Object.keys(plugin.defaultConfig).map(function (key) {\n if (typeof options.config[key] === 'undefined') {\n options.config[key] = plugin.defaultConfig[key];\n }\n });\n }\n\n // 获取插件添加的父节点\n if (!options.root) {\n options.root = player.root;\n } else if (typeof options.root === 'string') {\n options.root = player[options.root];\n }\n\n options.index = options.config.index || 0;\n try {\n // 如果已经存在 则将其销毁\n if (plugins[pluginName.toLowerCase()]) {\n this.unRegister(cgid, pluginName.toLowerCase());\n console.warn('the is one plugin with same pluginName [' + pluginName + '] exist, destroy the old instance');\n }\n // eslint-disable-next-line new-cap\n var _instance = new plugin(options);\n plugins[pluginName.toLowerCase()] = _instance;\n plugins[pluginName.toLowerCase()].func = plugin;\n if (_instance && typeof _instance.afterCreate === 'function') {\n _instance.afterCreate();\n }\n return _instance;\n } catch (err) {\n console.error(err);\n throw err;\n }\n },\n\n\n /**\n * Unregister a plugin from player instance\n * @param {String} cgid\n * @param {String} name\n */\n unRegister: function unRegister(cgid, name) {\n if (cgid._pluginInfoId) {\n cgid = cgid._pluginInfoId;\n }\n try {\n var plugin = this.pluginGroup[cgid]._plugins[name];\n if (plugin) {\n plugin.pluginName && plugin.__destroy();\n delete this.pluginGroup[cgid]._plugins[name];\n }\n } catch (e) {\n console.error('[unRegister:' + name + '] cgid:[' + cgid + '] error', e);\n }\n },\n\n\n /**\n * remove a plugin instance from the player plugin list\n * @param {Object} player\n * @param {String} name\n */\n deletePlugin: function deletePlugin(player, name) {\n var cgid = player._pluginInfoId;\n if (cgid && this.pluginGroup && this.pluginGroup[cgid] && this.pluginGroup[cgid]._plugins) {\n var _plugins = this.pluginGroup[cgid]._plugins;\n delete _plugins[name];\n }\n },\n\n\n /**\n * get all plugin instance of player\n * @param {*} player\n */\n getPlugins: function getPlugins(player) {\n var cgid = player._pluginInfoId;\n return cgid ? this.pluginGroup[cgid]._plugins : {};\n },\n findPlugin: function findPlugin(player, name) {\n if (!this.pluginGroup) {\n return null;\n }\n var cgid = player._pluginInfoId;\n var cName = name.toLowerCase();\n return this.pluginGroup[cgid]._plugins[cName];\n },\n beforeInit: function beforeInit(player) {\n var _this2 = this;\n\n function retPromise(fun) {\n if (!fun || !fun.then) {\n return new Promise(function (resolve) {\n resolve();\n });\n } else {\n return fun;\n }\n }\n return new Promise(function (resolve) {\n if (!_this2.pluginGroup) {\n return;\n }\n\n var prevTask = void 0;\n if (player._loadingPlugins && player._loadingPlugins.length) {\n prevTask = Promise.all(player._loadingPlugins);\n } else {\n prevTask = Promise.resolve();\n }\n\n return prevTask.then(function () {\n var cgid = player._pluginInfoId;\n if (!_this2.pluginGroup[cgid]) {\n resolve();\n return;\n }\n var plugins = _this2.pluginGroup[cgid]._plugins;\n var pluginsRet = [];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.keys(plugins)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var item = _step.value;\n\n if (plugins[item] && plugins[item].beforePlayerInit) {\n try {\n var ret = plugins[item].beforePlayerInit();\n pluginsRet.push(retPromise(ret));\n } catch (e) {\n pluginsRet.push(retPromise(null));\n throw e;\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n Promise.all([].concat(pluginsRet)).then(function () {\n resolve();\n }).catch(function (e) {\n console.error(e);\n resolve();\n });\n });\n });\n },\n afterInit: function afterInit(player) {\n if (!this.pluginGroup) {\n return;\n }\n var cgid = player._pluginInfoId;\n var plugins = this.pluginGroup[cgid]._plugins;\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = Object.keys(plugins)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var item = _step2.value;\n\n if (plugins[item] && plugins[item].afterPlayerInit) {\n plugins[item].afterPlayerInit();\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n },\n setLang: function setLang(lang, player) {\n if (!this.pluginGroup) {\n return;\n }\n var cgid = player._pluginInfoId;\n var plugins = this.pluginGroup[cgid]._plugins;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = Object.keys(plugins)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var item = _step3.value;\n\n if (plugins[item].updateLang) {\n plugins[item].updateLang(lang);\n }\n // 兼容旧版本通过set lang更新语言的问题\n try {\n plugins[item].lang = lang;\n } catch (error) {\n console.warn(error);\n //\n }\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n },\n reRender: function reRender(player) {\n var cgid = player._pluginInfoId;\n var pluginsMap = {};\n var plugins = this.pluginGroup[cgid]._plugins;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = Object.keys(plugins)[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var item = _step4.value;\n\n pluginsMap[item] = {\n plugin: plugins[item].func,\n options: plugins[item]._args\n };\n this.unRegister(cgid, item);\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = Object.keys(pluginsMap)[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var _item = _step5.value;\n\n this.register(cgid, _item, pluginsMap[_item].plugin, pluginsMap[_item].options);\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n },\n onPluginsReady: function onPluginsReady(player) {\n var cgid = player._pluginInfoId;\n var plugins = this.pluginGroup[cgid]._plugins;\n if (!cgid || !plugins) {\n return;\n }\n Object.keys(plugins).map(function (key) {\n if (plugins[key].onPluginsReady && typeof plugins[key].onPluginsReady === 'function') {\n plugins[key].onPluginsReady();\n }\n });\n },\n destroy: function destroy(player) {\n var cgid = player._pluginInfoId;\n if (!this.pluginGroup[cgid]) {\n return;\n }\n var plugins = this.pluginGroup[cgid]._plugins;\n var _iteratorNormalCompletion6 = true;\n var _didIteratorError6 = false;\n var _iteratorError6 = undefined;\n\n try {\n for (var _iterator6 = Object.keys(plugins)[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {\n var item = _step6.value;\n\n this.unRegister(cgid, item);\n }\n } catch (err) {\n _didIteratorError6 = true;\n _iteratorError6 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion6 && _iterator6.return) {\n _iterator6.return();\n }\n } finally {\n if (_didIteratorError6) {\n throw _iteratorError6;\n }\n }\n }\n\n delete this.pluginGroup[cgid];\n }\n};\n\nexport default pluginsManager;","\"use strict\";\n\nvar isFunction = require(\"../function/is\");\n\nvar classRe = /^\\s*class[\\s{/}]/, functionToString = Function.prototype.toString;\n\nmodule.exports = function (value) {\n\tif (!isFunction(value)) return false;\n\tif (classRe.test(functionToString.call(value))) return false;\n\treturn true;\n};\n","\"use strict\";\n\nmodule.exports = function () {\n\tvar assign = Object.assign, obj;\n\tif (typeof assign !== \"function\") return false;\n\tobj = { foo: \"raz\" };\n\tassign(obj, { bar: \"dwa\" }, { trzy: \"trzy\" });\n\treturn obj.foo + obj.bar + obj.trzy === \"razdwatrzy\";\n};\n","\"use strict\";\n\nvar str = \"razdwatrzy\";\n\nmodule.exports = function () {\n\tif (typeof str.contains !== \"function\") return false;\n\treturn str.contains(\"dwa\") === true && str.contains(\"foo\") === false;\n};\n","\"use strict\";\n\nmodule.exports = function (fn) {\n\tif (typeof fn !== \"function\") throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.assign : require(\"./shim\");\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nvar map = { function: true, object: true };\n\nmodule.exports = function (value) { return (isValue(value) && map[typeof value]) || false; };\n","import Util from '../utils/util';\nimport Sniffer from '../utils/sniffer';\nimport Errors from '../error';\nimport * as Events from '../events';\nimport BasePlugin from './basePlugin';\nimport Plugin, { ROOT_TYPES, POSITIONS } from './plugin';\nimport pluginsManager from './pluginsManager';\nimport hooksDescriptor from './hooksDescriptor';\nimport STATE_CLASS from '../stateClassMap';\nexport { pluginsManager, BasePlugin, hooksDescriptor, STATE_CLASS, POSITIONS, ROOT_TYPES, Sniffer, Errors, Util, Events, Plugin as default };","\nfunction callHandler(obj, handler, next) {\n for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var ret = handler.call.apply(handler, [obj].concat(args));\n if (!next || typeof next !== 'function') {\n return;\n }\n if (ret && ret.then) {\n ret.then(function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n next.call.apply(next, [obj].concat(args));\n });\n } else {\n next.call.apply(next, [obj].concat(args));\n }\n}\n\n/**\n * 给某个处理函数添加hook能力\n * @param {String} hookName\n * @param {Function} handler\n * @param {Object} preset\n * {\n * pre: () => { // run beafore hook},\n * next: () => { // run after hook return}\n * }\n */\nfunction hook(hookName, handler) {\n var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { pre: null, next: null };\n\n if (!this.__hooks) {\n this.__hooks = {};\n }\n !this.__hooks[hookName] && (this.__hooks[hookName] = null);\n return function () {\n var _this = this,\n _arguments = arguments;\n\n if (preset.pre) {\n try {\n var _preset$pre;\n\n (_preset$pre = preset.pre).call.apply(_preset$pre, [this].concat(Array.prototype.slice.call(arguments)));\n } catch (e) {\n e.message = '[pluginName: ' + this.pluginName + ':' + hookName + ':pre error] >> ' + e.message;\n throw e;\n }\n }\n if (this.__hooks && this.__hooks[hookName]) {\n try {\n var _hooks$hookName;\n\n var preRet = (_hooks$hookName = this.__hooks[hookName]).call.apply(_hooks$hookName, [this].concat(Array.prototype.slice.call(arguments)));\n if (preRet) {\n if (preRet.then) {\n preRet.then(function (isContinue) {\n if (isContinue) {\n callHandler.apply(undefined, [_this, handler, preset.next].concat(Array.prototype.slice.call(_arguments)));\n // handler.call(this, ...arguments)\n }\n }).catch(function (e) {\n throw e;\n });\n } else {\n callHandler.apply(undefined, [this, handler, preset.next].concat(Array.prototype.slice.call(arguments)));\n // handler.call(this, ...arguments)\n }\n }\n } catch (e) {\n e.message = '[pluginName: ' + this.pluginName + ':' + hookName + '] >> ' + e.message;\n throw e;\n }\n } else {\n callHandler.apply(undefined, [this, handler, preset.next].concat(Array.prototype.slice.call(arguments)));\n }\n }.bind(this);\n}\n\n/**\n * 添加hooks\n * @param {String} 支持的hook名称\n * @param {Function} 具体的处理函数\n */\nfunction useHooks(hookName, handler) {\n var __hooks = this.__hooks;\n\n if (!__hooks.hasOwnProperty(hookName)) {\n console.warn('has no supported hook which name [' + hookName + ']');\n return false;\n }\n __hooks && (__hooks[hookName] = handler);\n return true;\n}\n\n/**\n * 给某个插件添加hooks\n * @param {String} pluginName\n * @param {...any} args\n */\nfunction usePluginHooks(pluginName) {\n if (!this.plugins || !this.plugins[pluginName.toLowerCase()]) {\n return;\n }\n var plugin = this.plugins[pluginName.toLowerCase()];\n\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n plugin.useHooks && plugin.useHooks.apply(plugin, args);\n}\n\n/**\n * hook装饰器,为某个实例添加usePluginHooks/hook/useHooks的能力\n * @param {*} instance\n */\nfunction hooksDescriptor(instance) {\n instance.__hooks = {};\n Object.defineProperty(instance, 'hooks', {\n get: function get() {\n return Object.keys(instance.__hooks).map(function (key) {\n if (instance.__hooks[key]) {\n return key;\n }\n });\n }\n });\n instance.hook = hook.bind(instance);\n instance.useHooks = useHooks.bind(instance);\n if (instance.plugins) {\n instance.usePluginHooks = usePluginHooks.bind(instance);\n }\n}\n\nexport { hooksDescriptor as default };","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { version } from '../package.json';\nvar ErrorTypes = {\n network: {\n code: 1,\n msg: '视频下载错误',\n remark: '只要视频下载错误就使用此类型,无论是video本身的超时还是xhr的分段请求超时或者资源不存在'\n },\n mse: {\n code: 2,\n msg: '流追加错误',\n remark: '追加流的时候如果类型不对、无法被正确解码则会触发此类错误'\n },\n parse: {\n code: 3,\n msg: '解析错误',\n remark: 'mp4、hls、flv我们都是使用js进行格式解析,如果解析失败则会触发此类错误'\n },\n format: {\n code: 4,\n msg: '格式错误',\n remark: '如果浏览器不支持的格式导致播放错误'\n },\n decoder: {\n code: 5,\n msg: '解码错误',\n remark: '浏览器解码异常会抛出此类型错误'\n },\n runtime: {\n code: 6,\n msg: '语法错误',\n remark: '播放器语法错误'\n },\n timeout: {\n code: 7,\n msg: '播放超时',\n remark: '播放过程中无法正常请求下一个分段导致播放中断'\n },\n other: {\n code: 8,\n msg: '其他错误',\n remark: '不可知的错误或被忽略的错误类型'\n }\n};\n\nvar Errors = function Errors(type, currentTime, duration, networkState, readyState, src, currentSrc, ended) {\n var errd = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : { line: '', handle: '', msg: '', version: '' };\n var errorCode = arguments[9];\n var mediaError = arguments[10];\n\n _classCallCheck(this, Errors);\n\n var r = {};\n if (arguments.length > 1) {\n r.playerVersion = version; // 播放器版本\n r.errorType = type;\n r.domain = document.domain; // domain\n r.duration = duration; // 视频时长\n r.currentTime = currentTime;\n r.networkState = networkState;\n r.readyState = readyState;\n r.currentSrc = currentSrc;\n r.src = src;\n r.ended = ended;\n r.errd = errd; // 错误详情\n r.ex = (ErrorTypes[type] || {}).msg; // 补充信息\n r.errorCode = errorCode;\n r.mediaError = mediaError;\n } else {\n var arg = arguments[0];\n Object.keys(arg).map(function (key) {\n r[key] = arg[key];\n });\n r.ex = (arg.type && ErrorTypes[arg.type] || {}).msg;\n }\n return r;\n};\n\nexport default Errors;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport Util from '../utils/util';\nimport Sniffer from '../utils/sniffer';\nimport Errors from '../error';\nimport * as Events from '../events';\nimport XG_DEBUG from '../utils/debug';\n\nfunction showErrorMsg(pluginName, msg) {\n console.error('[' + pluginName + '] event or callback cant be undefined or null when call ' + msg);\n}\n\nvar BasePlugin = function () {\n _createClass(BasePlugin, null, [{\n key: 'defineGetterOrSetter',\n value: function defineGetterOrSetter(Obj, map) {\n for (var key in map) {\n Object.defineProperty(Obj, key, map[key]);\n }\n }\n }]);\n\n function BasePlugin(args) {\n _classCallCheck(this, BasePlugin);\n\n if (Util.checkIsFunction(this.beforeCreate)) {\n this.beforeCreate(args);\n }\n this.__args = args;\n this.__events = {}; // 对player的事件监听缓存\n this.config = args.config || {};\n this.__init(args);\n }\n\n _createClass(BasePlugin, [{\n key: 'onPluginsReady',\n value: function onPluginsReady() {}\n }, {\n key: '__init',\n value: function __init(args) {\n var _this = this;\n\n BasePlugin.defineGetterOrSetter(this, {\n 'player': {\n get: function get() {\n return args.player;\n },\n configurable: true\n },\n 'playerConfig': {\n get: function get() {\n return args.player && args.player.config;\n },\n configurable: true\n },\n 'pluginName': {\n get: function get() {\n if (args.pluginName) {\n return args.pluginName.toLowerCase();\n } else {\n return _this.constructor.pluginName.toLowerCase();\n }\n },\n configurable: true\n },\n 'logger': {\n get: function get() {\n return args.player.logger;\n },\n configurable: true\n }\n });\n }\n }, {\n key: 'updateLang',\n value: function updateLang(lang) {\n if (!lang) {\n lang = this.lang;\n }\n }\n }, {\n key: 'on',\n value: function on(event, callback) {\n var _this2 = this;\n\n if (!event || !callback) {\n showErrorMsg(this.pluginName, 'plugin.on(event, callback)');\n return;\n }\n if (typeof event === 'string') {\n this.__events[event] = callback;\n this.player.on(event, callback);\n } else if (Array.isArray(event)) {\n event.forEach(function (item) {\n _this2.__events[item] = callback;\n _this2.player.on(item, callback);\n });\n }\n }\n }, {\n key: 'once',\n value: function once(event, callback) {\n if (!event || !callback) {\n showErrorMsg(this.pluginName, 'plugin.once(event, callback)');\n return;\n }\n this.player.once(event, callback);\n }\n }, {\n key: 'off',\n value: function off(event, callback) {\n var _this3 = this;\n\n if (!event || !callback) {\n showErrorMsg(this.pluginName, 'plugin.off(event, callback)');\n return;\n }\n if (typeof event === 'string') {\n delete this.__events[event];\n this.player.off(event, callback);\n } else if (Array.isArray(event)) {\n event.forEach(function (item) {\n delete _this3.__events[event];\n _this3.player.off(item, callback);\n });\n }\n }\n }, {\n key: 'offAll',\n value: function offAll() {\n var _this4 = this;\n\n Object.keys(this.__events).map(function (item) {\n _this4.__events[item] && _this4.off(item, _this4.__events[item]);\n item && delete _this4.__events[item];\n });\n this.__events = {};\n }\n }, {\n key: 'emit',\n value: function emit(event, res) {\n this.player.emit(event, res);\n }\n }, {\n key: 'registerPlugin',\n value: function registerPlugin(plugin) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n name && (options.pluginName = name);\n return this.player.registerPlugin({ plugin: plugin, options: options });\n }\n }, {\n key: 'getPlugin',\n value: function getPlugin(name) {\n return this.player.getPlugin(name);\n }\n }, {\n key: '__destroy',\n value: function __destroy() {\n var _this5 = this;\n\n var player = this.player;\n var pluginName = this.pluginName;\n this.offAll();\n Util.clearAllTimers(this);\n if (Util.checkIsFunction(this.destroy)) {\n this.destroy();\n }\n\n ['player', 'playerConfig', 'pluginName', 'logger'].map(function (item) {\n Object.defineProperty(_this5, item, {\n writable: true\n });\n });\n Object.keys(this).map(function (key) {\n _this5[key] = null;\n delete _this5[key];\n });\n Object.setPrototypeOf && Object.setPrototypeOf(this, null);\n player.unRegisterPlugin(pluginName);\n }\n }, {\n key: 'lang',\n get: function get() {\n return this.player.lang;\n }\n }, {\n key: 'i18n',\n get: function get() {\n return this.player.i18n;\n }\n }, {\n key: 'i18nKeys',\n get: function get() {\n return this.player.i18nKeys;\n }\n }]);\n\n return BasePlugin;\n}();\n\n// BasePlugin.Util = Util\n// BasePlugin.Sniffer = Sniffer\n// BasePlugin.Errors = Errors\n// BasePlugin.Events = Events\n// BasePlugin.XG_DEBUG = XG_DEBUG\n\n\nexport { BasePlugin as default, Util, Sniffer, Errors, Events, XG_DEBUG };","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport EventEmitter from 'event-emitter';\nimport allOff from 'event-emitter/all-off';\nimport Util from './utils/util';\nimport Sniffer from './utils/sniffer';\nimport Errors from './error';\nimport { URL_CHANGE, DESTROY } from './events';\n\nvar VIDEO_EVENTS = ['play', 'playing', 'pause', 'ended', 'error', 'seeking', 'seeked', 'timeupdate', 'waiting', 'canplay', 'canplaythrough', 'durationchange', 'volumechange', 'loadeddata', 'loadstart', 'emptied', 'ratechange', 'progress', 'stalled', 'suspend', 'abort'];\n\nfunction emitEvents(eventKey, e) {\n if (!this || !this.emit) {\n return;\n }\n if (eventKey === 'error') {\n this.errorHandler(eventKey);\n } else {\n this.emit(eventKey, e);\n }\n}\n\nfunction getHandler(eventName, player) {\n var funName = 'on' + eventName.charAt(0).toUpperCase() + eventName.slice(1);\n if (player[funName] && typeof player[funName] === 'function') {\n player.on(eventName, player[funName]);\n }\n return function (e) {\n var eventKey = eventName;\n e.player = player;\n e.eventName = eventName;\n\n if (eventKey === 'timeupdate') {\n player._currentTime = player.video && player.video.currentTime;\n }\n\n if (eventName === 'durationchange') {\n player._duration = player.video.duration;\n }\n\n // 执行video相关事件中间件能力\n if (player.videoEventMiddleware[eventName]) {\n var callback = emitEvents.bind(player);\n try {\n player.videoEventMiddleware[eventName].call(player, e, callback);\n } catch (e) {\n emitEvents.call(player, eventKey, e);\n throw e;\n }\n } else {\n emitEvents.call(player, eventKey, e);\n }\n };\n}\n\nvar Proxy = function () {\n function Proxy(options) {\n _classCallCheck(this, Proxy);\n\n this._hasStart = false;\n this._currentTime = 0;\n this._duration = 0;\n this.videoConfig = Object.assign({}, {\n controls: false,\n autoplay: options.autoplay,\n playsinline: options.playsinline,\n 'x5-playsinline': options.playsinline,\n 'webkit-playsinline': options.playsinline,\n 'x5-video-player-fullscreen': options['x5-video-player-fullscreen'] || options['x5VideoPlayerFullscreen'],\n 'x5-video-orientation': options['x5-video-orientation'] || options['x5VideoOrientation'],\n airplay: options['airplay'],\n 'webkit-airplay': options['airplay'],\n tabindex: 2,\n mediaType: options.mediaType || 'video'\n }, options.videoConfig, options.videoAttrbutes);\n /**\n * @description 微信内部同层播放兼容\n * x5-playsinline和x5-video-player-type互斥,只需要存在一个即可\n * @doc https://x5.tencent.com/docs/video.html\n */\n var playerType = options['x5-video-player-type'] || options['x5VideoPlayerType'];\n if (Sniffer.isWeixin && Sniffer.os.isAndroid && playerType) {\n this.videoConfig['x5-video-player-type'] = playerType;\n delete this.videoConfig['playsinline'];\n delete this.videoConfig['webkit-playsinline'];\n delete this.videoConfig['x5-playsinline'];\n }\n\n if (options.loop) {\n this.videoConfig.loop = 'loop';\n }\n\n this.video = Util.createDom(this.videoConfig.mediaType, '', this.videoConfig, '');\n\n if (options.defaultPlaybackRate) {\n this.video.defaultPlaybackRate = this.video.playbackRate = options.defaultPlaybackRate;\n }\n\n if (options.autoplayMuted) {\n this.video.muted = true;\n }\n if (options.autoplay) {\n this.video.autoplay = true;\n }\n\n EventEmitter(this);\n this._interval = {};\n this.videoEventMiddleware = {};\n this.attachVideoEvents();\n }\n\n _createClass(Proxy, [{\n key: 'setEventsMiddleware',\n value: function setEventsMiddleware(middlewares) {\n var _this = this;\n\n Object.keys(middlewares).map(function (key) {\n _this.videoEventMiddleware[key] = middlewares[key];\n });\n }\n }, {\n key: 'removeEventsMiddleware',\n value: function removeEventsMiddleware(middlewares) {\n var _this2 = this;\n\n Object.keys(middlewares).map(function (key) {\n delete _this2.videoEventMiddleware[key];\n });\n }\n }, {\n key: 'attachVideoEvents',\n value: function attachVideoEvents(video) {\n var _this3 = this;\n\n if (!this.evHandlers) {\n this._evHandlers = VIDEO_EVENTS.map(function (item) {\n return _defineProperty({}, item, getHandler(item, _this3));\n });\n }\n if (!video) {\n video = this.video;\n }\n this._evHandlers.map(function (item) {\n var eventKey = Object.keys(item)[0];\n video.addEventListener(eventKey, item[eventKey], false);\n });\n }\n\n /**\n * 解除video事件回调\n */\n\n }, {\n key: 'detachVideoEvents',\n value: function detachVideoEvents(video) {\n if (!video) {\n video = this.video;\n }\n this._evHandlers.map(function (item) {\n var eventKey = Object.keys(item)[0];\n video.removeEventListener(Object.keys(item)[0], item[eventKey], false);\n });\n }\n\n /**\n * 错误监听处理逻辑抽离\n */\n\n }, {\n key: 'errorHandler',\n value: function errorHandler(name) {\n if (this.video && this.video.error) {\n this.emit(name, new Errors('other', this.currentTime, this.duration, this.networkState, this.readyState, this.currentSrc, this.src, this.ended, {\n line: 162,\n msg: this.error,\n handle: 'Constructor'\n }, this.video.error.code, this.video.error));\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n if (this.video) {\n this.video.pause();\n this.video.removeAttribute('src'); // empty source\n // this.video.load()\n }\n this._currentTime = 0;\n this._duration = 0;\n for (var k in this._interval) {\n clearInterval(this._interval[k]);\n this._interval[k] = null;\n }\n this.emit(DESTROY);\n this.detachVideoEvents();\n this._evHandlers.map(function (item) {\n var eventKey = Object.keys(item)[0];\n var funName = 'on' + eventKey.charAt(0).toUpperCase() + eventKey.slice(1);\n if (typeof _this4[funName] === 'function') {\n _this4.off(eventKey, _this4[funName]);\n }\n });\n allOff(this);\n }\n }, {\n key: 'play',\n value: function play() {\n return this.video ? this.video.play() : null;\n }\n }, {\n key: 'pause',\n value: function pause() {\n this.video && this.video.pause();\n }\n }, {\n key: 'canPlayType',\n value: function canPlayType(type) {\n return this.video.canPlayType(type);\n }\n }, {\n key: 'getBufferedRange',\n value: function getBufferedRange() {\n var range = [0, 0];\n if (!this.video) {\n return range;\n }\n var video = this.video;\n var buffered = video.buffered;\n var currentTime = video.currentTime;\n if (buffered) {\n for (var i = 0, len = buffered.length; i < len; i++) {\n range[0] = buffered.start(i);\n range[1] = buffered.end(i);\n if (range[0] <= currentTime && currentTime <= range[1]) {\n break;\n }\n }\n }\n if (range[0] - currentTime <= 0 && currentTime - range[1] <= 0) {\n return range;\n } else {\n return [0, 0];\n }\n }\n }, {\n key: 'hasStart',\n get: function get() {\n return this._hasStart;\n },\n set: function set(bool) {\n if (typeof bool === 'boolean') {\n this._hasStart = bool;\n this.emit('hasstart');\n }\n }\n }, {\n key: 'autoplay',\n set: function set(isTrue) {\n this.video.autoplay = isTrue;\n },\n get: function get() {\n return this.video.autoplay;\n }\n }, {\n key: 'buffered',\n get: function get() {\n return this.video.buffered;\n }\n }, {\n key: 'bufferedPoint',\n get: function get() {\n var _buffered = this.video.buffered;\n var ret = {\n start: 0,\n end: 0\n };\n if (!_buffered || _buffered.length === 0) {\n return ret;\n }\n for (var i = 0; i < _buffered.length; i++) {\n if (_buffered.start(i) <= this.currentTime && _buffered.end(i) >= this.currentTime) {\n return {\n start: _buffered.start(i),\n end: _buffered.end(i)\n };\n }\n }\n return ret;\n }\n }, {\n key: 'crossOrigin',\n get: function get() {\n return this.video.crossOrigin;\n },\n set: function set(isTrue) {\n this.video.crossOrigin = isTrue;\n }\n }, {\n key: 'currentSrc',\n get: function get() {\n return this.video.currentSrc;\n },\n set: function set(src) {\n this.video.currentSrc = src;\n }\n }, {\n key: 'currentTime',\n get: function get() {\n return this.video.currentTime || this._currentTime;\n },\n set: function set(time) {\n this.video.currentTime = time;\n }\n }, {\n key: 'defaultMuted',\n get: function get() {\n return this.video.defaultMuted;\n },\n set: function set(isTrue) {\n this.video.defaultMuted = isTrue;\n }\n }, {\n key: 'duration',\n get: function get() {\n return this._duration;\n }\n }, {\n key: 'ended',\n get: function get() {\n return this.video.ended;\n }\n }, {\n key: 'error',\n get: function get() {\n var err = this.video.error;\n if (!err) {\n return null;\n }\n var status = ['MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED'];\n return status[err.code - 1];\n }\n }, {\n key: 'loop',\n get: function get() {\n return this.video.loop;\n },\n set: function set(isTrue) {\n this.video.loop = isTrue;\n }\n }, {\n key: 'muted',\n get: function get() {\n return this.video.muted;\n },\n set: function set(isTrue) {\n this.video.muted = isTrue;\n }\n }, {\n key: 'networkState',\n get: function get() {\n var status = ['NETWORK_EMPTY', 'NETWORK_IDLE', 'NETWORK_LOADING', 'NETWORK_NO_SOURCE'];\n return status[this.video.networkState];\n }\n }, {\n key: 'paused',\n get: function get() {\n return this.video.paused;\n }\n }, {\n key: 'playbackRate',\n get: function get() {\n return this.video.playbackRate;\n },\n set: function set(rate) {\n this.video.defaultPlaybackRate = rate;\n this.video.playbackRate = rate;\n }\n }, {\n key: 'played',\n get: function get() {\n return this.video.played;\n }\n }, {\n key: 'preload',\n get: function get() {\n return this.video.preload;\n },\n set: function set(isTrue) {\n this.video.preload = isTrue;\n }\n }, {\n key: 'readyState',\n get: function get() {\n var status = ['HAVE_NOTHING', 'HAVE_METADATA', 'HAVE_CURRENT_DATA', 'HAVE_FUTURE_DATA', 'HAVE_ENOUGH_DATA'];\n return status[this.video.readyState];\n }\n }, {\n key: 'seekable',\n get: function get() {\n return this.video.seekable;\n }\n }, {\n key: 'seeking',\n get: function get() {\n return this.video.seeking;\n }\n }, {\n key: 'src',\n get: function get() {\n return this.video.src;\n },\n set: function set(url) {\n this.emit(URL_CHANGE, url);\n // this.video.pause()\n this._currentTime = 0;\n this._duration = 0;\n // firefox有些版本无法识别blob类型的currentSrc\n if (/^blob/.test(this.video.currentSrc) || /^blob/.test(this.video.src)) {\n // has transmuxer core\n this.onWaiting();\n return;\n }\n this.video.src = url;\n }\n }, {\n key: 'volume',\n get: function get() {\n return this.video.volume;\n },\n set: function set(vol) {\n this.video.volume = vol;\n }\n }]);\n\n return Proxy;\n}();\n\nexport default Proxy;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar INDEXDB = function () {\n function INDEXDB() {\n var mydb = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { name: 'xgplayer', version: 1, db: null, ojstore: { name: 'xg-m4a', keypath: 'vid' } };\n\n _classCallCheck(this, INDEXDB);\n\n this.indexedDB = window.indexedDB || window.webkitindexedDB;\n this.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange; // 键范围\n this.myDB = mydb;\n }\n\n _createClass(INDEXDB, [{\n key: 'openDB',\n value: function openDB(callback) {\n var _this = this;\n\n // 建立或打开数据库,建立对象存储空间(ObjectStore)\n var self = this;\n var version = this.myDB.version || 1;\n var request = self.indexedDB.open(self.myDB.name, version);\n request.onerror = function (e) {\n // console.log('e.currentTarget.error.message')\n };\n request.onsuccess = function (e) {\n _this.myDB.db = e.target.result;\n // console.log('成功建立并打开数据库:' + this.myDB.name + ' version' + this.myDB.version)\n callback.call(self);\n };\n request.onupgradeneeded = function (e) {\n var db = e.target.result;\n // eslint-disable-next-line no-unused-vars\n var transaction = e.target.transaction;\n // eslint-disable-next-line no-unused-vars\n var store = void 0;\n if (!db.objectStoreNames.contains(self.myDB.ojstore.name)) {\n // 没有该对象空间时创建该对象空间\n store = db.createObjectStore(self.myDB.ojstore.name, { keyPath: self.myDB.ojstore.keypath });\n // console.log('成功建立对象存储空间:' + this.myDB.ojstore.name)\n }\n };\n }\n }, {\n key: 'deletedb',\n value: function deletedb() {\n // 删除数据库\n var self = this;\n self.indexedDB.deleteDatabase(this.myDB.name);\n // console.log(this.myDB.name + '数据库已删除')\n }\n }, {\n key: 'closeDB',\n value: function closeDB() {\n // 关闭数据库\n this.myDB.db.close();\n // console.log('数据库已关闭')\n }\n }, {\n key: 'addData',\n value: function addData(storename, data) {\n // 添加数据,重复添加会报错\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n var request = void 0;\n for (var i = 0; i < data.length; i++) {\n request = store.add(data[i]);\n request.onerror = function () {\n // console.error('add添加数据库中已有该数据')\n };\n request.onsuccess = function () {\n // console.log('add添加数据已存入数据库')\n };\n }\n }\n }, {\n key: 'putData',\n value: function putData(storename, data) {\n // 添加数据,重复添加会更新原有数据\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n var request = void 0;\n for (var i = 0; i < data.length; i++) {\n request = store.put(data[i]);\n request.onerror = function () {\n // console.error('put添加数据库中已有该数据')\n };\n request.onsuccess = function () {\n // console.log('put添加数据已存入数据库')\n };\n }\n }\n }, {\n key: 'getDataByKey',\n value: function getDataByKey(storename, key, callback) {\n var self = this;\n // 根据存储空间的键找到对应数据\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n var request = store.get(key);\n request.onerror = function () {\n // console.error('getDataByKey error')\n callback.call(self, null);\n };\n request.onsuccess = function (e) {\n var result = e.target.result;\n // console.log('查找数据成功')\n callback.call(self, result);\n };\n }\n }, {\n key: 'deleteData',\n value: function deleteData(storename, key) {\n // 删除某一条记录\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n store.delete(key);\n // console.log('已删除存储空间' + storename + '中' + key + '记录')\n }\n }, {\n key: 'clearData',\n value: function clearData(storename) {\n // 删除存储空间全部记录\n var store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename);\n store.clear();\n // console.log('已删除存储空间' + storename + '全部记录')\n }\n }]);\n\n return INDEXDB;\n}();\n\nexport default INDEXDB;","export var FULLSCREEN_EVENTS = ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'];\n\nexport var GET_FULLSCREEN_API = ['requestFullscreen', 'webkitRequestFullscreen', 'mozRequestFullScreen', 'msRequestFullscreen'];\n\nexport var EXIT_FULLSCREEN_API = ['exitFullscreen', 'webkitExitFullscreen', 'mozCancelFullScreen', 'msExitFullscreen'];","function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nexport var usePreset = function usePreset(player, Preset) {\n var _player$config$plugin, _player$config$ignore;\n\n var presetInst = void 0;\n if (Preset.preset && Preset.options) {\n // eslint-disable-next-line new-cap\n presetInst = new Preset.preset(Preset.options, player.config);\n } else {\n presetInst = new Preset({}, player.config);\n }\n var _presetInst = presetInst,\n _presetInst$plugins = _presetInst.plugins,\n plugins = _presetInst$plugins === undefined ? [] : _presetInst$plugins,\n _presetInst$ignores = _presetInst.ignores,\n ignores = _presetInst$ignores === undefined ? [] : _presetInst$ignores,\n _presetInst$icons = _presetInst.icons,\n icons = _presetInst$icons === undefined ? {} : _presetInst$icons;\n\n if (!player.config.plugins) {\n player.config.plugins = [];\n }\n\n if (!player.config.ignores) {\n player.config.ignores = [];\n }\n\n (_player$config$plugin = player.config.plugins).push.apply(_player$config$plugin, _toConsumableArray(plugins));\n (_player$config$ignore = player.config.ignores).push.apply(_player$config$ignore, _toConsumableArray(ignores));\n Object.keys(icons).map(function (key) {\n if (!player.config.icons[key]) {\n player.config.icons[key] = icons[key];\n }\n });\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Events, Util, POSITIONS, Sniffer, STATE_CLASS } from '../../plugin';\n\nvar Controls = function (_Plugin) {\n _inherits(Controls, _Plugin);\n\n function Controls() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Controls);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Controls.__proto__ || Object.getPrototypeOf(Controls)).call.apply(_ref, [this].concat(args))), _this), _this.onMouseEnter = function (e) {\n var _this2 = _this,\n player = _this2.player;\n\n if (player.userTimer) {\n clearTimeout(player.userTimer);\n }\n }, _this.onMouseLeave = function () {\n var _this3 = _this,\n player = _this3.player,\n playerConfig = _this3.playerConfig;\n\n if (!playerConfig.closeControlsBlur) {\n player.emit(Events.PLAYER_FOCUS);\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Controls, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.controls === 'boolean') {\n args.config.disable = !args.player.config.controls;\n }\n if (!args.config.mode && Sniffer.device === 'mobile') {\n args.config.mode = 'flex';\n }\n if (args.player.config.marginControls) {\n args.config.autoHide = false;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this4 = this;\n\n var _config = this.config,\n disable = _config.disable,\n height = _config.height,\n mode = _config.mode,\n autoHide = _config.autoHide;\n\n if (disable) {\n return;\n }\n\n mode === 'flex' && this.player.addClass(STATE_CLASS.FLEX_CONTROLS);\n autoHide && this.player.addClass(STATE_CLASS.AUTOHIDE);\n var style = {\n height: height + 'px'\n };\n Object.keys(style).map(function (key) {\n _this4.root.style[key] = style[key];\n });\n this.left = this.find('xg-left-grid');\n this.center = this.find('xg-center-grid');\n this.right = this.find('xg-right-grid');\n this.innerRoot = this.find('xg-inner-controls');\n\n // 切换为小窗状态的时候进度条同步切换\n this.on(Events.MINI_STATE_CHANGE, function (isMini) {\n isMini ? Util.addClass(_this4.root, 'mini-controls') : Util.removeClass(_this4.root, 'mini-controls');\n });\n if (Sniffer.device !== 'mobile') {\n this.bind('mouseenter', this.onMouseEnter);\n this.bind('mouseleave', this.onMouseLeave);\n }\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.player.emit(Events.PLAYER_FOCUS, { autoHide: false });\n }\n }, {\n key: 'unFocus',\n value: function unFocus() {\n this.player.emit(Events.PLAYER_FOCUS, { autoHide: true });\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.player.emit(Events.PLAYER_BLUR, { ignoreStatus: true });\n }\n }, {\n key: 'recoverAutoHide',\n value: function recoverAutoHide() {\n this.config.autoHide && Util.addClass(this.root, 'control_autohide');\n }\n }, {\n key: 'pauseAutoHide',\n value: function pauseAutoHide() {\n Util.removeClass(this.root, 'control_autohide');\n }\n }, {\n key: 'show',\n value: function show() {\n Util.addClass(this.root, 'show');\n }\n }, {\n key: 'hide',\n value: function hide() {\n Util.removeClass(this.root, 'show');\n }\n }, {\n key: 'registerPlugin',\n value: function registerPlugin(plugin) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var name = arguments[2];\n\n if (!this.root) {\n return;\n }\n var defaultConfig = plugin.defaultConfig || {};\n if (!options.root) {\n var position = options.position ? options.position : options.config && options.config.position ? options.config.position : defaultConfig.position;\n switch (position) {\n case POSITIONS.CONTROLS_LEFT:\n options.root = this.left;\n break;\n case POSITIONS.CONTROLS_RIGHT:\n options.root = this.right;\n break;\n case POSITIONS.CONTROLS_CENTER:\n options.root = this.center;\n break;\n case POSITIONS.CONTROLS:\n options.root = this.root;\n break;\n default:\n options.root = this.left;\n }\n return _get(Controls.prototype.__proto__ || Object.getPrototypeOf(Controls.prototype), 'registerPlugin', this).call(this, plugin, options, name);\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n if (Sniffer.device === 'mobile') {\n this.unbind('mouseenter', this.onMouseEnter);\n this.unbind('mouseleave', this.onMouseLeave);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n var className = this.config.mode === 'flex' ? 'flex-controls ' : '';\n className += this.config.autoHide ? 'control_autohide' : 'controls_permanent xgplayer-controls-initshow';\n className += this.config.initShow ? ' xgplayer-controls-initshow' : '';\n return '\\n \\n \\n \\n \\n \\n \\n \\n ';\n }\n }, {\n key: 'mode',\n get: function get() {\n return this.config.mode;\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'controls';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n disable: false,\n autoHide: true, // 是否自动隐藏\n mode: '', // 显示模式, flex和normal\n initShow: false // 是否初始化的时候就显示\n };\n }\n }]);\n\n return Controls;\n}(Plugin);\n\nexport default Controls;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Proxy from './proxy';\nimport Util from './utils/util';\nimport Sniffer from './utils/sniffer';\nimport Database from './utils/database';\nimport Errors from './error';\nimport * as Events from './events';\nimport { FULLSCREEN_EVENTS, GET_FULLSCREEN_API, EXIT_FULLSCREEN_API } from './constant';\nimport Plugin, { pluginsManager, BasePlugin } from './plugin';\nimport STATE_CLASS from './stateClassMap';\nimport getDefaultConfig from './defaultConfig';\nimport { usePreset } from './plugin/preset';\nimport hooksDescriptor from './plugin/hooksDescriptor';\nimport Controls from './plugins/controls';\nimport XG_DEBUG, { bindDebug } from './utils/debug';\n\nimport { version } from '../package.json';\nimport I18N from './lang';\n/* eslint-disable camelcase */\nvar PlAYER_HOOKS = ['play'];\n\nvar Player = function (_Proxy) {\n _inherits(Player, _Proxy);\n\n function Player(options) {\n _classCallCheck(this, Player);\n\n var config = Util.deepMerge(getDefaultConfig(), options);\n\n var _this = _possibleConstructorReturn(this, (Player.__proto__ || Object.getPrototypeOf(Player)).call(this, config));\n\n hooksDescriptor(_this);\n PlAYER_HOOKS.map(function (item) {\n _this.__hooks[item] = null;\n });\n _this.config = config;\n bindDebug(_this);\n // resolve default preset\n if (_this.config.presets.length) {\n var defaultIdx = _this.config.presets.indexOf('default');\n if (defaultIdx >= 0 && Player.defaultPreset) {\n _this.config.presets[defaultIdx] = Player.defaultPreset;\n }\n } else if (Player.defaultPreset) {\n _this.config.presets.push(Player.defaultPreset);\n }\n\n // timer and flags\n _this.userTimer = null;\n _this.waitTimer = null;\n _this.isReady = false;\n // 是否进入正常播放流程\n _this.isPlaying = false;\n // 是否处于seeking进行状态\n _this.isSeeking = false;\n _this.isCanplay = false;\n _this._runPending = false;\n _this.rotateDeg = 0;\n // 当前是否处于焦点状态\n _this.isActive = false;\n _this.isCssfullScreen = false;\n _this.fullscreen = false;\n _this._fullscreenEl = null;\n _this._originCssText = '';\n _this._fullScreenOffset = null;\n _this._videoHeight = 0;\n _this._videoWidth = 0;\n _this._played = {\n begin: -1,\n end: -1,\n acc: 0\n };\n\n _this.database = new Database();\n\n var rootInit = _this._initDOM();\n if (!rootInit) {\n console.error(new Error('can\\'t find the dom which id is ' + _this.config.id + ' or this.config.el does not exist'));\n return _possibleConstructorReturn(_this);\n }\n\n _this._bindEvents();\n _this._registerPresets();\n _this._registerPlugins();\n pluginsManager.onPluginsReady(_this);\n\n Util.setTimeout(_this, function () {\n _this.emit(Events.READY);\n _this.onReady && _this.onReady();\n _this.isReady = true;\n }, 0);\n\n if (_this.config.videoInit || _this.config.autoplay) {\n if (!_this.hasStart) {\n _this.start();\n }\n }\n return _this;\n }\n\n /**\n * init control bar\n * @private\n */\n\n\n _createClass(Player, [{\n key: '_initDOM',\n value: function _initDOM() {\n var _this2 = this;\n\n this.root = this.config.id ? document.getElementById(this.config.id) : null;\n if (!this.root) {\n var el = this.config.el;\n if (el && el.nodeType === 1) {\n this.root = el;\n } else {\n this.emit(Events.ERROR, new Errors('use', this.config.vid, {\n line: 32,\n handle: 'Constructor',\n msg: 'container id can\\'t be empty'\n }));\n console.error('this.confg.id or this.config.el can\\'t be empty');\n return false;\n }\n }\n var ret = pluginsManager.checkPlayerRoot(this.root);\n if (ret) {\n XG_DEBUG.logWarn('The is an Player instance already exists in this.root, destroy it and reinitialize');\n ret.destroy();\n }\n this._initBaseDoms();\n if (this.config.controls) {\n var controls = pluginsManager.register(this, Controls);\n this.controls = controls;\n }\n var device = this.config.isMobileSimulateMode ? 'mobile' : Sniffer.device;\n this.addClass(STATE_CLASS.DEFAULT + ' ' + STATE_CLASS.ACTIVE + ' xgplayer-' + device + ' ' + (this.config.controls ? '' : STATE_CLASS.NO_CONTROLS));\n if (this.config.autoplay) {\n this.addClass(STATE_CLASS.ENTER);\n } else {\n this.addClass(STATE_CLASS.NO_START);\n }\n if (this.config.fluid) {\n var style = {\n 'max-width': '100%',\n 'width': '100%',\n 'height': '0',\n 'padding-top': this.config.height * 100 / this.config.width + '%',\n 'position': 'position',\n 'top': '0',\n 'left': '0'\n };\n Object.keys(style).map(function (key) {\n _this2.root.style[key] = style[key];\n });\n } else {\n ['width', 'height'].map(function (key) {\n if (_this2.config[key]) {\n if (typeof _this2.config[key] !== 'number') {\n _this2.root.style[key] = _this2.config[key];\n } else {\n _this2.root.style[key] = _this2.config[key] + 'px';\n }\n }\n });\n }\n return true;\n }\n }, {\n key: '_initBaseDoms',\n value: function _initBaseDoms() {\n this.topBar = Util.createDom('xg-bar', '', { 'data-index': -1 }, 'xg-top-bar');\n this.leftBar = Util.createDom('xg-bar', '', { 'data-index': -1 }, 'xg-left-bar');\n this.rightBar = Util.createDom('xg-bar', '', { 'data-index': -1 }, 'xg-right-bar');\n if (this.config.marginControls) {\n this.innerContainer = Util.createDom('xg-video-container', '', { 'data-index': -1 }, 'xg-video-container');\n this.root.appendChild(this.innerContainer);\n }\n this.root.appendChild(this.topBar);\n this.root.appendChild(this.leftBar);\n this.root.appendChild(this.rightBar);\n }\n }, {\n key: '_bindEvents',\n value: function _bindEvents() {\n var _this3 = this;\n\n ['focus', 'blur'].forEach(function (item) {\n _this3.on(item, _this3['on' + item.charAt(0).toUpperCase() + item.slice(1)]);\n });\n var resetFullState = function resetFullState() {\n _this3.fullscreen = false;\n _this3._fullScreenOffset = null;\n _this3._fullscreenEl = null;\n };\n\n this.onFullscreenChange = function (event, isFullScreen) {\n var fullEl = Util.getFullScreenEl();\n if (isFullScreen || fullEl && (fullEl === _this3._fullscreenEl || fullEl.tagName === 'VIDEO')) {\n _this3.fullscreen = true;\n _this3.addClass(STATE_CLASS.FULLSCREEN);\n _this3.emit(Events.FULLSCREEN_CHANGE, true, _this3._fullScreenOffset);\n if (_this3.isCssfullScreen) {\n _this3.exitCssFullscreen();\n }\n } else if (_this3.fullscreen) {\n var _fullScreenOffset = _this3._fullScreenOffset,\n config = _this3.config;\n\n if (config.needFullsreenScroll) {\n try {\n window.scrollTo(_fullScreenOffset.left, _fullScreenOffset.top);\n Util.setTimeout(_this3, function () {\n resetFullState();\n }, 100);\n } catch (e) {\n XG_DEBUG.logError(e);\n resetFullState();\n }\n } else {\n // 保证页面scroll的情况下退出全屏 页面定位在播放器位置\n _this3.video.focus();\n resetFullState();\n }\n if (_this3._originCssText && !_this3.isCssfullScreen) {\n Util.setStyleFromCsstext(_this3.root, _this3._originCssText);\n _this3._originCssText = '';\n }\n _this3.removeClass(STATE_CLASS.FULLSCREEN);\n _this3.emit(Events.FULLSCREEN_CHANGE, false);\n }\n };\n\n FULLSCREEN_EVENTS.forEach(function (item) {\n document && document.addEventListener(item, _this3.onFullscreenChange);\n });\n\n this.__webkitbeginfullscreen = function (e) {\n _this3._fullscreenEl = _this3.video;\n _this3.onFullscreenChange(e, true);\n };\n this.__webkitendfullscreen = function (e) {\n _this3.onFullscreenChange(e, false);\n };\n if (Sniffer.os.isIos) {\n this.video.addEventListener('webkitbeginfullscreen', this.__webkitbeginfullscreen);\n this.video.addEventListener('webkitendfullscreen', this.__webkitendfullscreen);\n }\n this.once('loadeddata', this.getVideoSize);\n\n this.playFunc = function () {\n if (!_this3.config.closeFocusVideoFocus) {\n _this3.video.focus();\n }\n };\n this.once('play', this.playFunc);\n }\n }, {\n key: '_unbindEvents',\n value: function _unbindEvents() {\n var _this4 = this;\n\n this.root.removeEventListener('mousemove', this.mousemoveFunc);\n FULLSCREEN_EVENTS.forEach(function (item) {\n document.removeEventListener(item, _this4.onFullscreenChange);\n });\n this.playFunc && this.off('play', this.playFunc);\n this.canPlayFunc && this.off('canplay', this.canPlayFunc);\n this.video.removeEventListener('webkitbeginfullscreen', this.__webkitbeginfullscreen);\n this.video.removeEventListener('webkitendfullscreen', this.__webkitendfullscreen);\n }\n }, {\n key: '_startInit',\n value: function _startInit(url) {\n var _this5 = this;\n\n var root = this.root,\n innerContainer = this.innerContainer;\n\n if (!url || url === '') {\n this.emit(Events.URL_NULL);\n XG_DEBUG.logWarn('config.url is null, please get url and run player._startInit(url)');\n if (this.config.nullUrlStart) {\n return;\n }\n }\n this.canPlayFunc = function () {\n if (!_this5.config) {\n return;\n }\n var _config = _this5.config,\n autoplay = _config.autoplay,\n startTime = _config.startTime,\n volume = _config.volume;\n\n XG_DEBUG.logInfo('player', 'canPlayFunc', startTime);\n if (Util.typeOf(volume) === 'Number') {\n _this5.volume = volume;\n }\n if (startTime) {\n _this5.currentTime = startTime > _this5.duration ? _this5.duration : startTime;\n }\n autoplay && _this5.videoPlay();\n _this5.off(Events.CANPLAY, _this5.canPlayFunc);\n _this5.removeClass(STATE_CLASS.ENTER);\n };\n\n if (Util.typeOf(url) === 'String') {\n this.video.src = url;\n } else {\n url.forEach(function (item) {\n _this5.video.appendChild(Util.createDom('source', '', {\n src: '' + item.src,\n type: '' + (item.type || '')\n }));\n });\n }\n\n this.loadeddataFunc && this.once('loadeddata', this.loadeddataFunc);\n\n if (innerContainer) {\n innerContainer.firstChild !== this.video && this.innerContainer.insertBefore(this.video, this.innerContainer.firstChild);\n } else {\n root.firstChild !== this.video && root.insertBefore(this.video, root.firstChild);\n }\n\n this.once(Events.CANPLAY, this.canPlayFunc);\n XG_DEBUG.logInfo('_startInit');\n if (this.config.autoplay) {\n this.load();\n // ios端无法自动播放的场景下,不调用play不会触发canplay loadeddata等事件\n Sniffer.os.isPhone && this.videoPlay();\n }\n\n Util.setTimeout(this, function () {\n _this5.emit(Events.COMPLETE);\n }, 1);\n if (!this.hasStart) {\n pluginsManager.afterInit(this);\n }\n this.hasStart = true;\n }\n /**\n * 注册组件 组件列表config.plugins\n */\n\n }, {\n key: '_registerPlugins',\n value: function _registerPlugins() {\n var _this6 = this;\n\n this._loadingPlugins = [];\n var ignores = this.config.ignores || [];\n var plugins = this.config.plugins || [];\n var ignoresStr = ignores.join('||').toLowerCase().split('||');\n plugins.map(function (plugin) {\n try {\n var pluginName = plugin.plugin ? plugin.plugin.pluginName : plugin.pluginName;\n // 在ignores中的不做组装\n if (pluginName && ignoresStr.indexOf(pluginName.toLowerCase()) > -1) {\n return null;\n }\n if (plugin.lazy && plugin.loader) {\n var loadingPlugin = pluginsManager.lazyRegister(_this6, plugin);\n if (plugin.forceBeforeInit) {\n loadingPlugin.then(function () {\n _this6._loadingPlugins.splice(_this6._loadingPlugins.indexOf(loadingPlugin), 1);\n }).catch(function (e) {\n XG_DEBUG.logError('_registerPlugins:loadingPlugin', e);\n _this6._loadingPlugins.splice(_this6._loadingPlugins.indexOf(loadingPlugin), 1);\n });\n _this6._loadingPlugins.push(loadingPlugin);\n }\n\n return;\n }\n return _this6.registerPlugin(plugin);\n } catch (err) {\n XG_DEBUG.logError('_registerPlugins:', err);\n return null;\n }\n });\n }\n }, {\n key: '_registerPresets',\n value: function _registerPresets() {\n var _this7 = this;\n\n this.config.presets.forEach(function (preset) {\n usePreset(_this7, preset);\n });\n }\n }, {\n key: 'registerPlugin',\n value: function registerPlugin(plugin) {\n var PLUFGIN = null;\n var options = null;\n if (plugin.plugin && typeof plugin.plugin === 'function') {\n PLUFGIN = plugin.plugin;\n options = plugin.options;\n } else {\n PLUFGIN = plugin;\n options = {};\n }\n\n // 获取配置的position或者root\n var keys = Object.keys(this.config);\n for (var i = 0; i < keys.length; i++) {\n if (PLUFGIN.pluginName.toLowerCase() === keys[i].toLowerCase()) {\n var _pConfig = this.config[keys[i]];\n if (Util.typeOf(_pConfig) === 'Object') {\n _pConfig.root && (options.root = _pConfig.root);\n _pConfig.position && (options.position = _pConfig.position);\n }\n break;\n }\n }\n\n var position = options.position ? options.position : options.config && options.config.position || PLUFGIN.defaultConfig && PLUFGIN.defaultConfig.position;\n var POSITIONS = Plugin.POSITIONS;\n\n if (!options.root && typeof position === 'string' && position.indexOf('controls') > -1) {\n return this.controls && this.controls.registerPlugin(PLUFGIN, options, PLUFGIN.pluginName);\n }\n if (!options.root) {\n switch (position) {\n case POSITIONS.ROOT_RIGHT:\n options.root = this.rightBar;\n break;\n case POSITIONS.ROOT_LEFT:\n options.root = this.leftBar;\n break;\n case POSITIONS.ROOT_TOP:\n options.root = this.topBar;\n break;\n default:\n options.root = this.innerContainer || this.root;\n break;\n }\n }\n return pluginsManager.register(this, PLUFGIN, options);\n }\n }, {\n key: 'unRegisterPlugin',\n value: function unRegisterPlugin(plugin) {\n if (typeof plugin === 'string') {\n pluginsManager.unRegister(this, plugin);\n } else if (plugin instanceof BasePlugin) {\n pluginsManager.unRegister(this, plugin.pluginName);\n }\n }\n\n /**\n * 当前播放器挂在的插件实例代码\n */\n\n }, {\n key: 'getPlugin',\n value: function getPlugin(pluginName) {\n var plugin = pluginsManager.findPlugin(this, pluginName);\n return plugin && plugin.pluginName ? plugin : null;\n }\n }, {\n key: 'addClass',\n value: function addClass(className) {\n if (!this.root) {\n return;\n }\n if (!Util.hasClass(this.root, className)) {\n Util.addClass(this.root, className);\n }\n }\n }, {\n key: 'removeClass',\n value: function removeClass(className) {\n if (!this.root) {\n return;\n }\n Util.removeClass(this.root, className);\n }\n }, {\n key: 'hasClass',\n value: function hasClass(className) {\n if (!this.root) {\n return;\n }\n return Util.hasClass(this.root, className);\n }\n }, {\n key: 'setAttribute',\n value: function setAttribute(key, value) {\n if (!this.root) {\n return;\n }\n this.root.setAttribute(key, value);\n }\n }, {\n key: 'removeAttribute',\n value: function removeAttribute(key, value) {\n if (!this.root) {\n return;\n }\n this.root.removeAttribute(key, value);\n }\n }, {\n key: 'start',\n value: function start(url) {\n var _this8 = this;\n\n // 已经开始初始化播放了 则直接调用play\n if (this.hasStart) {\n return;\n }\n this.hasStart = true;\n return pluginsManager.beforeInit(this).then(function () {\n // this.config为空即已经销毁,不再执行后面的异步流程\n if (!_this8.config) {\n return;\n }\n if (!url) {\n url = _this8.url || _this8.config.url;\n }\n var ret = _this8._startInit(url);\n return ret;\n }).catch(function (e) {\n e.fileName = 'player';\n e.lineNumber = '236';\n XG_DEBUG.logError('start:beforeInit:', e);\n throw e;\n });\n }\n }, {\n key: 'load',\n value: function load() {\n this.video && this.video.load();\n }\n }, {\n key: 'videoPlay',\n value: function videoPlay() {\n var _this9 = this;\n\n if (!this.hasStart) {\n this.removeClass(STATE_CLASS.NO_START);\n this.addClass(STATE_CLASS.ENTER);\n this.start().then(function (resolve) {\n !_this9.config.autoplay && _this9.videoPlay();\n });\n return;\n }\n if (!this.isPlaying) {\n this.removeClass(STATE_CLASS.NO_START);\n !this.isCanplay && this.addClass(STATE_CLASS.ENTER);\n }\n var playPromise = _get(Player.prototype.__proto__ || Object.getPrototypeOf(Player.prototype), 'play', this).call(this);\n if (playPromise !== undefined && playPromise && playPromise.then) {\n playPromise.then(function () {\n _this9.removeClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY);\n _this9.addClass(STATE_CLASS.PLAYING);\n if (!_this9.isPlaying) {\n XG_DEBUG.logInfo('>>>>playPromise.then');\n _this9.isPlaying = true;\n _this9.emit(Events.AUTOPLAY_STARTED);\n }\n }).catch(function (e) {\n XG_DEBUG.logWarn('>>>>playPromise.catch', e.name);\n if (_this9.video && _this9.video.error) {\n _this9.onError();\n // this.errorHandler('error')\n _this9.removeClass(STATE_CLASS.ENTER);\n return;\n }\n // 避免AUTOPLAY_PREVENTED先于playing和play触发\n if (e.name === 'NotAllowedError') {\n _this9._errorTimer = Util.setTimeout(_this9, function () {\n _this9._errorTimer = null;\n _this9.emit(Events.AUTOPLAY_PREVENTED);\n _this9.addClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY);\n _this9.removeClass(STATE_CLASS.ENTER);\n _this9.pause();\n }, 0);\n }\n });\n } else {\n XG_DEBUG.logWarn('video.play not return promise');\n if (!this.isPlaying) {\n this.isPlaying = true;\n this.removeClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY);\n this.removeClass(STATE_CLASS.NO_START);\n this.removeClass(STATE_CLASS.ENTER);\n this.addClass(STATE_CLASS.PLAYING);\n this.emit(Events.AUTOPLAY_STARTED);\n }\n }\n return playPromise;\n }\n }, {\n key: 'play',\n value: function play() {\n var _this10 = this;\n\n this.removeClass(STATE_CLASS.PAUSED);\n var __hooks = this.__hooks;\n\n if (__hooks && __hooks.play) {\n var ret = __hooks.play.call(this);\n if (ret && ret.then) {\n ret.then(function () {\n return _this10.videoPlay();\n }).catch(function (e) {\n return _this10.videoPlay();\n });\n } else {\n return this.videoPlay();\n }\n } else {\n return this.videoPlay();\n }\n }\n }, {\n key: 'seek',\n value: function seek(time) {\n var _this11 = this;\n\n if (!this.video || isNaN(Number(time))) {\n return;\n }\n var _config2 = this.config,\n isSeekedPlay = _config2.isSeekedPlay,\n seekedStatus = _config2.seekedStatus;\n\n var _status = isSeekedPlay ? 'play' : seekedStatus;\n time = time < 0 ? 0 : time > this.duration ? parseInt(this.duration, 10) : time;\n this.once(Events.CANPLAY, function () {\n _this11.removeClass(STATE_CLASS.ENTER);\n _this11.isSeeking = false;\n switch (_status) {\n case 'play':\n _this11.play();\n break;\n case 'pause':\n _this11.pause();\n break;\n default:\n !_this11.paused && _this11.play();\n }\n });\n if (!this.isPlaying) {\n this.removeClass(STATE_CLASS.NO_START);\n this.addClass(STATE_CLASS.ENTER);\n this.currentTime = time;\n _status === 'play' && this.play();\n } else {\n this.currentTime = time;\n }\n }\n }, {\n key: 'reload',\n value: function reload() {\n this.load();\n this.reloadFunc = function () {\n this.play().catch(function (err) {\n console.log(err);\n });\n };\n this.once('loadeddata', this.reloadFunc);\n }\n }, {\n key: 'resetClasses',\n value: function resetClasses() {\n var _this12 = this;\n\n var NOT_ALLOW_AUTOPLAY = STATE_CLASS.NOT_ALLOW_AUTOPLAY,\n PLAYING = STATE_CLASS.PLAYING,\n NO_START = STATE_CLASS.NO_START,\n PAUSED = STATE_CLASS.PAUSED,\n REPLAY = STATE_CLASS.REPLAY,\n ENTER = STATE_CLASS.ENTER,\n ENDED = STATE_CLASS.ENDED,\n ERROR = STATE_CLASS.ERROR;\n\n var clsList = [NOT_ALLOW_AUTOPLAY, PLAYING, NO_START, PAUSED, REPLAY, ENTER, ENDED, ERROR];\n clsList.forEach(function (cls) {\n _this12.removeClass(cls);\n });\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var isDelDom = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n var innerContainer = this.innerContainer,\n root = this.root,\n video = this.video;\n\n if (!root) {\n return;\n }\n this._unbindEvents();\n // clearTimeout(this.waitTimer)\n // clearTimeout(this._errorTimer)\n Util.clearAllTimers(this);\n pluginsManager.destroy(this);\n root.removeChild(this.topBar);\n root.removeChild(this.leftBar);\n root.removeChild(this.rightBar);\n _get(Player.prototype.__proto__ || Object.getPrototypeOf(Player.prototype), 'destroy', this).call(this);\n if (innerContainer) {\n var _c = innerContainer.children;\n for (var i = 0; i < _c.length; i++) {\n innerContainer.removeChild(_c[i]);\n }\n root.removeChild(innerContainer);\n } else {\n root.contains(video) && root.removeChild(video);\n }\n if (isDelDom) {\n var classNameList = this.root.className.split(' ');\n if (classNameList.length > 0) {\n root.className = classNameList.filter(function (name) {\n return name.indexOf('xgplayer') < 0;\n }).join(' ');\n } else {\n root.className = '';\n }\n this.removeAttribute('data-xgfill');\n }\n for (var k in this) {\n delete this[k];\n }\n Object.setPrototypeOf && Object.setPrototypeOf(this, null);\n }\n }, {\n key: 'replay',\n value: function replay() {\n var _this13 = this;\n\n this.removeClass(STATE_CLASS.ENDED);\n this.once(Events.CANPLAY, function () {\n var playPromise = _this13.play();\n if (playPromise && playPromise.catch) {\n playPromise.catch(function (err) {\n console.log(err);\n });\n }\n });\n this.currentTime = 0;\n this.isSeeking = false;\n this.play();\n this.emit(Events.REPLAY);\n this.onPlay();\n }\n }, {\n key: 'retry',\n value: function retry() {\n this.removeClass(STATE_CLASS.ERROR);\n this.addClass(STATE_CLASS.LOADING);\n var cur = this.currentTime;\n this.pause();\n this.src = this.config.url;\n this.currentTime = cur;\n this.play();\n }\n }, {\n key: 'getFullscreen',\n value: function getFullscreen(el) {\n var root = this.root,\n video = this.video;\n\n if (!el) {\n el = root;\n }\n this._fullScreenOffset = {\n top: Util.scrollTop(),\n left: Util.scrollLeft()\n };\n if (root.getAttribute('style')) {\n this._originCssText = root.style.cssText;\n root.removeAttribute('style');\n }\n this._fullscreenEl = el;\n for (var i = 0; i < GET_FULLSCREEN_API.length; i++) {\n var key = GET_FULLSCREEN_API[i];\n if (el[key]) {\n var ret = key === 'webkitRequestFullscreen' ? el.webkitRequestFullscreen(window.Element.ALLOW_KEYBOARD_INPUT) : el[key]();\n if (ret && ret.then) {\n return ret;\n } else {\n return Promise.resolve();\n }\n }\n }\n if (video.fullscreenEnabled || video.webkitSupportsFullscreen) {\n video.webkitEnterFullscreen();\n return Promise.resolve();\n }\n return Promise.reject(new Error('call getFullscreen fail'));\n }\n }, {\n key: 'exitFullscreen',\n value: function exitFullscreen(el) {\n if (!this._fullscreenEl) {\n return;\n }\n var root = this.root,\n video = this.video;\n\n if (el) {\n el = root;\n }\n for (var i = 0; i < EXIT_FULLSCREEN_API.length; i++) {\n var key = EXIT_FULLSCREEN_API[i];\n if (document[key]) {\n var ret = document[key]();\n if (ret && ret.then) {\n return ret;\n } else {\n return Promise.resolve();\n }\n }\n }\n if (video && video.webkitSupportsFullscreen) {\n video.webkitExitFullScreen();\n return Promise.resolve();\n }\n return Promise.reject(new Error('call exitFullscreen fail'));\n }\n }, {\n key: 'getCssFullscreen',\n value: function getCssFullscreen() {\n this.addClass(STATE_CLASS.CSS_FULLSCREEN);\n if (this.root.getAttribute('style')) {\n this._originCssText = this.root.style.cssText;\n this.root.removeAttribute('style');\n }\n this.isCssfullScreen = true;\n this.emit(Events.CSS_FULLSCREEN_CHANGE, true);\n if (this.fullscreen) {\n this.exitFullscreen();\n }\n }\n }, {\n key: 'exitCssFullscreen',\n value: function exitCssFullscreen() {\n this.removeClass(STATE_CLASS.CSS_FULLSCREEN);\n if (!this.fullscreen) {\n this._originCssText && Util.setStyleFromCsstext(this.root, this._originCssText);\n this._originCssText = '';\n }\n this.isCssfullScreen = false;\n this.emit(Events.CSS_FULLSCREEN_CHANGE, false);\n }\n }, {\n key: 'onFocus',\n value: function onFocus() {\n var _this14 = this;\n\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { autoHide: true, delay: 0 };\n\n this.isActive = true;\n this.removeClass(STATE_CLASS.ACTIVE);\n if (this.userTimer) {\n Util.clearTimeout(this, this.userTimer);\n }\n if (data.autoHide === false) {\n return;\n }\n var time = data && data.delay ? data.delay : this.config.inactive;\n this.userTimer = Util.setTimeout(this, function () {\n _this14.emit(Events.PLAYER_BLUR);\n }, time);\n }\n }, {\n key: 'onBlur',\n value: function onBlur() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { ignoreStatus: false };\n\n if (!this.isActive) {\n return;\n }\n var closePauseVideoFocus = this.config.closePauseVideoFocus;\n\n this.isActive = false;\n if (data.ignoreStatus || closePauseVideoFocus || !this.paused && !this.ended) {\n this.addClass(STATE_CLASS.ACTIVE);\n }\n }\n }, {\n key: 'onCanplay',\n value: function onCanplay() {\n this.removeClass(STATE_CLASS.ENTER);\n this.isCanplay = true;\n }\n }, {\n key: 'onPlay',\n value: function onPlay() {\n // this.addClass(STATE_CLASS.PLAYING)\n // this.removeClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY)\n this.removeClass(STATE_CLASS.PAUSED);\n this.ended && this.removeClass(STATE_CLASS.ENDED);\n !this.config.closePlayVideoFocus && this.emit(Events.PLAYER_FOCUS);\n }\n }, {\n key: 'onPause',\n value: function onPause() {\n this.addClass(STATE_CLASS.PAUSED);\n if (this.config.closePauseVideoFocus) {\n if (this.userTimer) {\n Util.clearTimeout(this, this.userTimer);\n }\n this.emit(Events.PLAYER_FOCUS);\n }\n }\n }, {\n key: 'onEnded',\n value: function onEnded() {\n this.addClass(STATE_CLASS.ENDED);\n // this.removeClass(STATE_CLASS.PLAYING)\n }\n }, {\n key: 'onError',\n value: function onError() {\n this.removeClass(STATE_CLASS.NOT_ALLOW_AUTOPLAY);\n this.removeClass(STATE_CLASS.NO_START);\n this.removeClass(STATE_CLASS.ENTER);\n this.addClass(STATE_CLASS.ERROR);\n }\n }, {\n key: 'onSeeking',\n value: function onSeeking() {\n if (!this.isSeeking) {\n var _played = this._played;\n\n _played.acc += _played.begin < _played.end && _played.end > -1 ? _played.end - _played.begin : 0;\n _played.begin = parseInt(this.video.currentTime * 1000, 10);\n _played.end = -1;\n }\n this.isSeeking = true;\n this.addClass(STATE_CLASS.SEEKING);\n }\n }, {\n key: 'onSeeked',\n value: function onSeeked() {\n this.isSeeking = false;\n // for ie,playing fired before waiting\n if (this.waitTimer) {\n Util.clearTimeout(this, this.waitTimer);\n }\n this.removeClass(STATE_CLASS.LOADING);\n this.removeClass(STATE_CLASS.SEEKING);\n }\n }, {\n key: 'onWaiting',\n value: function onWaiting() {\n var _this15 = this;\n\n if (this.waitTimer) {\n Util.clearTimeout(this, this.waitTimer);\n }\n this.waitTimer = Util.setTimeout(this, function () {\n _this15.addClass(STATE_CLASS.LOADING);\n Util.clearTimeout(_this15, _this15.waitTimer);\n _this15.waitTimer = null;\n }, 500);\n }\n }, {\n key: 'onPlaying',\n value: function onPlaying() {\n var _this16 = this;\n\n var NO_START = STATE_CLASS.NO_START,\n PAUSED = STATE_CLASS.PAUSED,\n ENDED = STATE_CLASS.ENDED,\n ERROR = STATE_CLASS.ERROR,\n REPLAY = STATE_CLASS.REPLAY;\n\n var clsList = [NO_START, PAUSED, ENDED, ERROR, REPLAY];\n clsList.forEach(function (cls) {\n _this16.removeClass(cls);\n });\n }\n }, {\n key: 'onTimeupdate',\n value: function onTimeupdate() {\n !this._videoHeight && this.getVideoSize();\n if (this.waitTimer || this.hasClass(STATE_CLASS.LOADING)) {\n if (this.checkBuffer()) {\n this.removeClass(STATE_CLASS.LOADING);\n Util.clearTimeout(this, this.waitTimer);\n this.waitTimer = null;\n }\n }\n\n if (this._played.begin < 0) {\n this._played.begin = parseInt(this.video.currentTime * 1000, 10);\n }\n this._played.end = parseInt(this.video.currentTime * 1000, 10);\n }\n }, {\n key: 'checkBuffer',\n value: function checkBuffer(time) {\n var buffered = this.video.buffered;\n if (!buffered || buffered.length === 0) {\n return true;\n }\n var currentTime = time || this.video.currentTime + 0.2;\n var len = buffered.length;\n for (var i = 0; i < len; i++) {\n if (buffered.start(i) <= currentTime && buffered.end(i) > currentTime) {\n return true;\n }\n }\n return false;\n }\n }, {\n key: 'getVideoSize',\n value: function getVideoSize() {\n var videoWidth = this.video.videoWidth;\n var videoHeight = this.video.videoHeight;\n var _config3 = this.config,\n fitVideoSize = _config3.fitVideoSize,\n videoFillMode = _config3.videoFillMode;\n\n\n if (videoFillMode === 'fill' || videoFillMode === 'cover') {\n this.setAttribute('data-xgfill', videoFillMode);\n }\n\n if (!videoHeight || !videoWidth) {\n return;\n }\n this._videoHeight = videoHeight;\n this._videoWidth = videoWidth;\n var containerSize = this.root.getBoundingClientRect();\n var controlsHeight = this.controls && this.innerContainer ? this.controls.root.getBoundingClientRect().height : 0;\n var width = containerSize.width;\n var height = containerSize.height - controlsHeight;\n var videoFit = parseInt(videoWidth / videoHeight * 1000, 10);\n var fit = parseInt(width / height * 1000, 10);\n var rWidth = width;\n var rHeight = height;\n if (fitVideoSize === 'auto' && fit > videoFit || fitVideoSize === 'fixWidth') {\n rHeight = width / videoFit * 1000;\n this.root.style.height = rHeight + controlsHeight + 'px';\n } else if (fitVideoSize === 'auto' && fit < videoFit || fitVideoSize === 'fixHeight') {\n rWidth = videoFit * height / 1000;\n this.root.style.width = rWidth + 'px';\n }\n // video填充模式\n if (videoFillMode === 'fillHeight' && fit < videoFit || videoFillMode === 'fillWidth' && fit > videoFit) {\n this.setAttribute('data-xgfill', 'cover');\n }\n this.emit(Events.VIDEO_RESIZE, { videoScale: videoFit, vWidth: rWidth, vHeight: rHeight, cWidth: rWidth, cHeight: rHeight + controlsHeight });\n }\n }, {\n key: 'updateObjectPosition',\n value: function updateObjectPosition() {\n var left = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var top = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (this.video.updateObjectPosition) {\n this.video.updateObjectPosition(left, top);\n return;\n }\n this.video.style.objectPosition = left * 100 + '% ' + top * 100 + '%';\n }\n }, {\n key: 'plugins',\n get: function get() {\n return pluginsManager.getPlugins(this);\n }\n }, {\n key: 'lang',\n set: function set(lang) {\n var result = I18N.langKeys.filter(function (key) {\n return key === lang;\n });\n if (result.length === 0 && lang !== 'zh') {\n console.error('Sorry, set lang fail, because the language [' + lang + '] is not supported now, list of all supported languages is [' + I18N.langKeys.join() + '] ');\n return;\n }\n this.config.lang = lang;\n pluginsManager.setLang(lang, this);\n },\n get: function get() {\n return this.config.lang;\n }\n }, {\n key: 'i18n',\n get: function get() {\n var lang = this.config.lang;\n\n return I18N.lang[lang] || {};\n }\n }, {\n key: 'i18nKeys',\n get: function get() {\n return I18N.textKeys || {};\n }\n }, {\n key: 'version',\n get: function get() {\n return version;\n }\n }, {\n key: 'url',\n set: function set(url) {\n this.__url = url;\n },\n get: function get() {\n return this.__url || this.config.url;\n }\n }, {\n key: 'poster',\n set: function set(posterUrl) {\n this.plugins.poster && this.plugins.poster.update(posterUrl);\n }\n }, {\n key: 'fullscreen',\n get: function get() {\n return this._isFullScreen;\n },\n set: function set(val) {\n this._isFullScreen = val;\n }\n }, {\n key: 'readyState',\n get: function get() {\n var key = _get(Player.prototype.__proto__ || Object.getPrototypeOf(Player.prototype), 'readyState', this);\n return this.i18n[key] || key;\n }\n }, {\n key: 'error',\n get: function get() {\n var key = _get(Player.prototype.__proto__ || Object.getPrototypeOf(Player.prototype), 'error', this);\n return this.i18n[key] || key;\n }\n }, {\n key: 'networkState',\n get: function get() {\n var key = _get(Player.prototype.__proto__ || Object.getPrototypeOf(Player.prototype), 'networkState', this);\n return this.i18n[key] || key;\n }\n }, {\n key: 'fullscreenChanging',\n get: function get() {\n return !(this._fullScreenOffset === null);\n }\n }, {\n key: 'cumulateTime',\n get: function get() {\n var _played2 = this._played,\n acc = _played2.acc,\n end = _played2.end,\n begin = _played2.begin;\n\n return begin > -1 && end > begin ? (acc + end - begin) / 1000 : acc / 1000;\n }\n\n /***\n * TODO\n * 插件全部迁移完成再做删除\n */\n\n }], [{\n key: 'install',\n value: function install(name, descriptor) {\n if (!Player.plugins) {\n Player.plugins = {};\n }\n if (!Player.plugins[name]) {\n Player.plugins[name] = descriptor;\n }\n }\n\n /***\n * TODO\n * 插件全部迁移完成再做删除\n */\n\n }, {\n key: 'use',\n value: function use(name, descriptor) {\n if (!Player.plugins) {\n Player.plugins = {};\n }\n Player.plugins[name] = descriptor;\n }\n }]);\n\n return Player;\n}(Proxy);\n\nexport { Player as default, BasePlugin, Plugin, Events, Errors, Sniffer, Util, STATE_CLASS, I18N };","export default function getDefaultConfig() {\n return {\n id: '', // 播放器容器id\n el: null, // 播放器容器dom\n url: '', // 播放url\n nullUrlStart: false, // 空url起播\n width: 600, // 播放器宽度,单位px\n height: 337.5, // 播放器高度,单位px\n fluid: false, // 是否启用流式布局\n fitVideoSize: 'fixed', // 播放器容器适配方式 fixWidth/fixHeight/fixed\n videoFillMode: 'auto', // video画面填充模式 fillHeight/fillWidth/fill/auto\n volume: 0.6, // 默认音量\n autoplay: false, // 是否自动播放\n autoplayMuted: false, // 是否自动静音\n loop: false, // 是否循环播放\n videoInit: true, // 是否优先显示视频首帧\n poster: '', // 封面图地址\n isMobileSimulateMode: false, // 模拟状态,取值mobile/pc\n defaultPlaybackRate: 1, // 默认播放倍数\n execBeforePluginsCall: null, // 默认插件组装前回调\n allowSeekAfterEnded: true, // 播放结束之后是否允许seek\n enableContextmenu: false, // 启用右键菜单\n closeVideoClick: false, // 是否通过video的click/touchend行为切换播放暂停\n closeVideoDblclick: false, // 是否通过双击行为触发全屏切换\n closePlayerBlur: false, // 是否关闭鼠标移出播放器范围触发blur操作\n leavePlayerTime: 3000, // 延迟触发时间\n closePlayVideoFocus: false, // 是否关闭play时触发focus\n closePauseVideoFocus: false, // 是否关闭pause时触发focus\n closeFocusVideoFocus: false, // 是否关闭播放器移动鼠标时触发focus\n closeDelayBlur: false, // 是否关闭自动隐藏控制条\n closeControlsBlur: false, // 鼠标移出播放器控制条范围时触发focus事件\n videoAttrbutes: {}, // video扩展属性\n startTime: 0, // 自动播放起始时间点\n // isSeekedPlay: true, // seek结束之后是否默认播放\n seekedStatus: 'play', // seek结束之后播放状态 play/pause/auto\n miniprogress: false, // 是否启用迷你控制栏\n disableSwipeHandler: function disableSwipeHandler() {},\n enableSwipeHandler: function enableSwipeHandler() {},\n // 是否删除\n ignores: [],\n whitelist: [],\n inactive: 3000, // 进度条自动消失延时\n lang: (document.documentElement.getAttribute('lang') || navigator.language || 'zh-cn').toLocaleLowerCase(),\n controls: true,\n marginControls: false, // 控制栏是否位于画面底部,不与画面重合\n controlsList: [],\n // 内置插件相关配置\n screenShot: false, // 截图插件\n rotate: false, // 旋转插件\n pip: false, // pip插件\n mini: false, // 迷你小窗插件\n cssFullscreen: true, // 页面全屏\n keyShortcut: true, // 是否开启快捷键\n presets: [],\n plugins: [],\n playbackRate: 1,\n playsinline: true,\n customDuration: 0, // 用户自定义时长\n timeOffset: 0, // 当前时长偏移\n icons: {},\n commonStyle: { // 用于配置一些通用样式结构\n progressColor: '', // 进度条底色\n playedColor: '', // 播放完成部分进度条底色\n cachedColor: '', // 缓存部分进度条底色\n sliderBtnStyle: '', // 进度条滑块样式\n volumeColor: ''\n }\n };\n}","\"use strict\";\n\nvar isValue = require(\"../value/is\");\n\n// prettier-ignore\nvar possibleTypes = { \"object\": true, \"function\": true, \"undefined\": true /* document.all */ };\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) return false;\n\treturn hasOwnProperty.call(possibleTypes, typeof value);\n};\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport Plugin, { Util, Sniffer } from '../../plugin';\n\nvar OptionList = function () {\n function OptionList(args) {\n _classCallCheck(this, OptionList);\n\n this.config = args.config;\n this.parent = args.root;\n this.root = Util.createDom('ul', '', {}, 'xg-options-list ' + this.config.className);\n args.root.appendChild(this.root);\n this.onItemClick = this.onItemClick.bind(this);\n this.renderItemList();\n var eventName = Sniffer.device === 'mobile' ? 'touchend' : 'click';\n this._delegates = Plugin.delegate.call(this, this.root, 'li', eventName, this.onItemClick);\n }\n\n _createClass(OptionList, [{\n key: 'renderItemList',\n value: function renderItemList(data) {\n var _this = this;\n\n var config = this.config,\n root = this.root;\n\n if (data) {\n config.data = data;\n } else {\n data = config.data;\n }\n\n if (config.style) {\n Object.keys(config.style).map(function (key) {\n root.style[key] = config[key];\n });\n }\n\n if (data.length > 0) {\n this.attrKeys = Object.keys(data[0]);\n }\n\n this.root.innerHTML = '';\n\n data.map(function (item, index) {\n var className = item.isCurrent ? 'option-item selected' : 'option-item';\n item['data-index'] = index;\n _this.root.appendChild(Util.createDom('li', '' + item.showText + '', item, className));\n });\n }\n }, {\n key: 'onItemClick',\n value: function onItemClick(e) {\n if (!e.delegateTarget) {\n e.delegateTarget = e.target;\n }\n var target = e.delegateTarget;\n if (target && Util.hasClass(target, 'selected')) {\n return false;\n }\n var changeCallback = typeof this.config.onItemClick === 'function' ? this.config.onItemClick : null;\n var curlSelected = this.root.querySelector('.selected');\n Util.addClass(target, 'selected');\n curlSelected && Util.removeClass(curlSelected, 'selected');\n changeCallback(e, {\n from: curlSelected ? this.getAttrObj(curlSelected, this.attrKeys) : null,\n to: this.getAttrObj(target, this.attrKeys)\n });\n }\n }, {\n key: 'getAttrObj',\n value: function getAttrObj(dom, keys) {\n if (!dom || !keys) {\n return {};\n }\n var obj = {};\n keys.map(function (key) {\n obj[key] = dom.getAttribute(key);\n });\n var index = dom.getAttribute('data-index');\n if (index) {\n obj.index = Number(index);\n }\n return obj;\n }\n }, {\n key: 'show',\n value: function show() {\n Util.removeClass(this.root, 'hide');\n Util.addClass(this.root, 'active');\n }\n }, {\n key: 'hide',\n value: function hide() {\n Util.removeClass(this.root, 'active');\n Util.addClass(this.root, 'hide');\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n if (this._delegates) {\n this._delegates.map(function (item) {\n item.destroy && item.destroy();\n });\n this._delegates = null;\n }\n this.root.innerHTML = null;\n this.parent.removeChild(this.root);\n this.root = null;\n }\n }]);\n\n return OptionList;\n}();\n\nexport default OptionList;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Events, Util, Sniffer, POSITIONS } from '../../plugin';\nimport OptionList from './optionList';\n\nvar IS_MOBILE = Sniffer.device === 'mobile';\n\nvar OptionsIcon = function (_Plugin) {\n _inherits(OptionsIcon, _Plugin);\n\n _createClass(OptionsIcon, null, [{\n key: 'pluginName',\n get: function get() {\n return 'optionsIcon';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 100,\n list: [],\n listType: 'middle', // 模式 rightSide-右侧边栏 middle-中间显示\n listStyle: {},\n hidePortrait: true\n };\n }\n }]);\n\n function OptionsIcon(args) {\n _classCallCheck(this, OptionsIcon);\n\n var _this = _possibleConstructorReturn(this, (OptionsIcon.__proto__ || Object.getPrototypeOf(OptionsIcon)).call(this, args));\n\n _this.isActive = false;\n _this.curValue = null; // 当前值\n _this.curIndex = 0;\n return _this;\n }\n\n _createClass(OptionsIcon, [{\n key: 'updateLang',\n value: function updateLang(value) {\n this.renderItemList(this.config.list, this.curIndex);\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n var config = this.config;\n\n if (IS_MOBILE && config.listType !== 'middle') {\n config.listType = 'rightSide';\n }\n\n config.hidePortrait && Util.addClass(this.root, 'portrait');\n\n this.once(Events.CANPLAY, function () {\n if (config.list && config.list.length > 0) {\n _this2.renderItemList(config.list);\n _this2.show();\n }\n });\n // 移动端控制栏和列表互斥\n IS_MOBILE && this.on(Events.PLAYER_FOCUS, function () {\n if (!_this2.isActive) {\n return;\n }\n _this2.optionsList && _this2.optionsList.hide();\n _this2.isActive = false;\n });\n this.activeEvent = IS_MOBILE ? 'touchend' : 'mouseenter';\n this.onEnter = this.onEnter.bind(this);\n this.onLeave = this.onLeave.bind(this);\n this.bind(this.activeEvent, this.onEnter);\n this.bind('mouseleave', this.onLeave);\n }\n }, {\n key: 'show',\n value: function show() {\n if (!this.config.list || this.config.list.length === 0) {\n return;\n }\n Util.addClass(this.root, 'show');\n }\n }, {\n key: 'getTextByLang',\n value: function getTextByLang(item, key, lang) {\n if (item === undefined) {\n return '';\n }\n var list = this.config.list;\n\n !lang && (lang = this.player.lang);\n key = !key || Util.isUndefined(item[key]) ? 'text' : key;\n typeof item === 'number' && (item = list[item]);\n try {\n if (_typeof(item[key]) === 'object') {\n return item[key][lang] || item[key]['zh'];\n } else {\n return item[key];\n }\n } catch (err) {\n console.warn(err);\n return '';\n }\n }\n }, {\n key: 'onEnter',\n value: function onEnter(e) {\n e.preventDefault();\n e.stopPropagation();\n this.onToggle(true);\n }\n }, {\n key: 'onLeave',\n value: function onLeave(e) {\n e.preventDefault();\n e.stopPropagation();\n this.isActive && this.onToggle(false);\n }\n\n // 状态切换\n\n }, {\n key: 'onToggle',\n value: function onToggle(isActive) {\n if (isActive === this.isActive) return;\n var controls = this.player.controls;\n var listType = this.config.listType;\n\n if (isActive) {\n listType === 'rightSide' ? controls.blur() : controls.focus();\n this.optionsList && this.optionsList.show();\n } else {\n listType === 'rightSide' ? controls.focus() : controls.unFocus();\n this.optionsList && this.optionsList.hide();\n }\n this.isActive = isActive;\n }\n\n // 列表点击回调\n\n }, {\n key: 'onItemClick',\n value: function onItemClick(e, data) {\n e.preventDefault();\n e.stopPropagation();\n var _config = this.config,\n listType = _config.listType,\n list = _config.list;\n\n (IS_MOBILE || listType === 'rightSide') && this.onToggle(false);\n this.curIndex = data.to.index;\n this.curItem = list[this.curIndex];\n this.changeCurrentText();\n }\n }, {\n key: 'changeCurrentText',\n value: function changeCurrentText() {\n var list = this.config.list;\n\n var index = this.curIndex < list.length ? this.curIndex : 0;\n var curItem = list[index];\n if (!curItem) return;\n this.find('.icon-text').innerHTML = this.getTextByLang(curItem, 'iconText');\n }\n }, {\n key: 'renderItemList',\n value: function renderItemList(itemList, curIndex) {\n var _this3 = this;\n\n var config = this.config,\n optionsList = this.optionsList,\n player = this.player;\n\n if (typeof curIndex === 'number') {\n this.curIndex = curIndex;\n this.curItem = config.list[curIndex];\n }\n\n if (optionsList) {\n optionsList.renderItemList(itemList);\n this.changeCurrentText();\n return;\n }\n\n var options = {\n config: {\n data: itemList || [],\n className: config.listType === 'rightSide' ? 'right-side' : '',\n onItemClick: function onItemClick(e, data) {\n _this3.onItemClick(e, data);\n }\n },\n root: config.listType === 'rightSide' ? player.root : this.root\n };\n\n this.optionsList = new OptionList(options);\n this.changeCurrentText();\n this.show();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind(this.activeEvent, this.onToggle);\n this.unbind('mouseleave', this.onToggle);\n if (this.optionsList) {\n this.optionsList.destroy();\n this.optionsList = null;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return '\\n
\\n \\n
\\n
';\n }\n }]);\n\n return OptionsIcon;\n}(Plugin);\n\nexport default OptionsIcon;","\"use strict\";\n\nvar _undefined = require(\"../function/noop\")(); // Support ES3 engines\n\nmodule.exports = function (val) { return val !== _undefined && val !== null; };\n","\"use strict\";\n\nvar isPrototype = require(\"../prototype/is\");\n\nmodule.exports = function (value) {\n\tif (typeof value !== \"function\") return false;\n\n\tif (!hasOwnProperty.call(value, \"length\")) return false;\n\n\ttry {\n\t\tif (typeof value.length !== \"number\") return false;\n\t\tif (typeof value.call !== \"function\") return false;\n\t\tif (typeof value.apply !== \"function\") return false;\n\t} catch (error) {\n\t\treturn false;\n\t}\n\n\treturn !isPrototype(value);\n};\n","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport EventEmitter from 'event-emitter';\n\nfunction getStyleSize(value) {\n var num = parseFloat(value);\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') === -1 && !isNaN(num);\n return isValid && num;\n}\n\nvar measurements = ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom', 'marginLeft', 'marginRight', 'marginTop', 'marginBottom', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth', 'borderBottomWidth'];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n size[measurement] = 0;\n }\n return size;\n}\n\nfunction getStyle(elem) {\n var style = window.getComputedStyle(elem);\n // if ( !style ) {\n // logError( 'Style returned ' + style +\n // '. Are you running this code in a hidden iframe on Firefox? ' +\n // 'See http://bit.ly/getsizebug1' );\n // }\n return style;\n}\n\nfunction getSize(elem) {\n // use querySeletor if elem is string\n if (typeof elem === 'string') {\n elem = document.querySelector(elem);\n }\n\n // do not proceed on non-objects\n if (!elem || (typeof elem === 'undefined' ? 'undefined' : _typeof(elem)) !== 'object' || !elem.nodeType) {\n return;\n }\n\n var style = getStyle(elem);\n\n // if hidden, everything is 0\n if (style.display === 'none') {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing === 'border-box';\n\n // get all measurements\n for (var i = 0; i < measurementsLength; i++) {\n var measurement = measurements[i];\n var value = style[measurement];\n var num = parseFloat(value);\n // any 'auto', 'medium' value will be 0\n size[measurement] = !isNaN(num) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox; // isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize(style.width);\n if (styleWidth !== false) {\n size.width = styleWidth + (\n // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth);\n }\n\n var styleHeight = getStyleSize(style.height);\n if (styleHeight !== false) {\n size.height = styleHeight + (\n // add padding and border unless it's already including it\n isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight);\n }\n\n size.innerWidth = size.width - (paddingWidth + borderWidth);\n size.innerHeight = size.height - (paddingHeight + borderHeight);\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nfunction getTouch(touches, dentifier) {\n for (var i = 0; i < touches.length; i++) {\n var touch = touches[i];\n if (touch.identifier === dentifier) {\n return touch;\n }\n }\n};\n\nvar EVENTS = {\n START: 'dragStart',\n MOVE: 'dragMove',\n ENDED: 'dragEnded'\n};\n\nvar POST_START_EVENTS = {\n mousedown: ['mousemove', 'mouseup'],\n touchstart: ['touchmove', 'touchend', 'touchcancel'],\n pointerdown: ['pointermove', 'pointerup', 'pointercancel']\n};\n\nvar Draggabilly = function () {\n function Draggabilly(root) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Draggabilly);\n\n EventEmitter(this);\n this.isEnabled = true;\n this.isDragging = false;\n this.isDown = false;\n this.position = {};\n this.downPoint = {};\n this.dragPoint = { x: 0, y: 0 };\n this.startPos = { x: 0, y: 0\n // eslint-disable-next-line no-undef\n };this._root = root instanceof Element ? root : document.querySelector(root);\n // eslint-disable-next-line no-undef\n this._handlerDom = options.handle instanceof Element ? options.handle : document.querySelector(options.handle);\n if (!this._root || !this._handlerDom) {\n return;\n }\n // ['onDown', 'onUp', 'onMove', 'onCancel', 'onDocUp'].map(key => {\n // this[key] = this[key].bind(this)\n // })\n\n // if ('ontouchstart' in window) {\n // this._handlerKeys = TOUCH_HANDLERS\n // this._startKey = 'touchstart'\n // this._endKey = 'touchend'\n // } else {\n // this._handlerKeys = HANDLERS\n // this._startKey = 'mousedown'\n // this._endKey = 'mouseup'\n // }\n // this._handlerDom.addEventListener(this._startKey, this.onDown)\n this._bindStartEvent();\n }\n\n _createClass(Draggabilly, [{\n key: '_bindStartEvent',\n value: function _bindStartEvent() {\n var _this = this;\n\n if ('ontouchstart' in window) {\n this._startKey = 'touchstart';\n } else {\n this._startKey = 'mousedown';\n }\n this['on' + this._startKey] = this['on' + this._startKey].bind(this);\n this._handlerDom.addEventListener(this._startKey, this['on' + this._startKey]);\n POST_START_EVENTS[this._startKey].map(function (key) {\n _this['on' + key] = _this['on' + key].bind(_this);\n });\n }\n }, {\n key: '_unbindStartEvent',\n value: function _unbindStartEvent() {\n this._handlerDom.removeEventListener(this._startKey, this['on' + this._startKey]);\n }\n }, {\n key: '_bindPostStartEvents',\n value: function _bindPostStartEvents(event) {\n var _this2 = this;\n\n if (!event) {\n return;\n }\n var events = POST_START_EVENTS[this._startKey];\n // bind events to node\n events.map(function (eventName) {\n window.addEventListener(eventName, _this2['on' + eventName]);\n });\n // save these arguments\n this._boundPointerEvents = events;\n }\n }, {\n key: '_unbindPostStartEvents',\n value: function _unbindPostStartEvents() {\n var _this3 = this;\n\n if (!this._boundPointerEvents) {\n return;\n }\n this._boundPointerEvents.map(function (eventName) {\n // console.log('eventName', eventName, this[`on${eventName}`])\n window.removeEventListener(eventName, _this3['on' + eventName]);\n });\n\n delete this._boundPointerEvents;\n }\n }, {\n key: 'enable',\n value: function enable() {\n this.isEnabled = true;\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.isEnabled = false;\n if (this.isDragging) {\n this.onUp();\n }\n }\n }, {\n key: 'onDocUp',\n value: function onDocUp(e) {\n this.onUp();\n }\n }, {\n key: 'animate',\n value: function animate() {\n var _this4 = this;\n\n // only render and animate if dragging\n if (!this.isDragging) {\n return;\n }\n\n this.positionDrag();\n\n window.requestAnimationFrame(function () {\n _this4.animate();\n });\n }\n }, {\n key: 'positionDrag',\n value: function positionDrag() {\n // this._root.style.transform = 'translate3d( ' + this.dragPoint.x +\n // 'px, ' + this.dragPoint.y + 'px, 0)';\n var transform = 'translate3d(' + this.dragPoint.x + 'px, ' + this.dragPoint.y + 'px, 0)';\n this._root.style.transform = transform;\n this._root.style.webKitTransform = transform;\n }\n }, {\n key: 'setLeftTop',\n value: function setLeftTop() {\n this._root.style.left = this.position.x + 'px';\n this._root.style.top = this.position.y + 'px';\n }\n }, {\n key: 'onmousedown',\n value: function onmousedown(e) {\n this.dragStart(e, e);\n }\n }, {\n key: 'onmousemove',\n value: function onmousemove(e) {\n this.dragMove(e, e);\n }\n }, {\n key: 'onmouseup',\n value: function onmouseup(e) {\n this.dragEnd(e, e);\n }\n }, {\n key: 'ontouchstart',\n value: function ontouchstart(e) {\n var touch = e.changedTouches[0];\n this.dragStart(e, touch);\n this.touchIdentifier = touch.pointerId !== undefined ? touch.pointerId : touch.identifier;\n e.preventDefault();\n }\n }, {\n key: 'ontouchmove',\n value: function ontouchmove(e) {\n var touch = getTouch(e.changedTouches, this.touchIdentifier);\n if (touch) {\n this.dragMove(e, touch);\n }\n }\n }, {\n key: 'ontouchend',\n value: function ontouchend(e) {\n var touch = getTouch(e.changedTouches, this.touchIdentifier);\n if (touch) {\n this.dragEnd(e, touch);\n }\n e.preventDefault();\n }\n }, {\n key: 'ontouchcancel',\n value: function ontouchcancel(e) {\n var touch = getTouch(e.changedTouches, this.touchIdentifier);\n if (touch) {\n this.dragCancel(e, touch);\n }\n }\n }, {\n key: 'dragStart',\n value: function dragStart(e, pointer) {\n if (!this._root || this.isDown || !this.isEnabled) {\n return;\n }\n this.downPoint = pointer;\n this.dragPoint.x = 0;\n this.dragPoint.y = 0;\n\n this._getPosition();\n\n var size = getSize(this._root);\n\n this.startPos.x = this.position.x;\n this.startPos.y = this.position.y;\n this.startPos.maxY = window.innerHeight - size.height;\n this.startPos.maxX = window.innerWidth - size.width;\n this.setLeftTop();\n\n this.isDown = true;\n this._bindPostStartEvents(e);\n }\n }, {\n key: 'dragRealStart',\n value: function dragRealStart(e, pointer) {\n this.isDragging = true;\n this.animate();\n this.emit(EVENTS.START, this.startPos);\n }\n }, {\n key: 'dragEnd',\n value: function dragEnd(e, pointer) {\n if (!this._root) {\n return;\n }\n this._unbindPostStartEvents();\n if (this.isDragging) {\n this._root.style.transform = '';\n this.setLeftTop();\n this.emit(EVENTS.ENDED);\n }\n this.presetInfo();\n }\n }, {\n key: '_dragPointerMove',\n value: function _dragPointerMove(e, pointer) {\n var moveVector = {\n x: pointer.pageX - this.downPoint.pageX,\n y: pointer.pageY - this.downPoint.pageY\n };\n // 检测是否有移动\n if (!this.isDragging && this.hasDragStarted(moveVector)) {\n this.dragRealStart(e, pointer);\n }\n return moveVector;\n }\n }, {\n key: 'dragMove',\n value: function dragMove(e, pointer) {\n e = e || window.event;\n if (!this.isDown) {\n return;\n }\n var _startPos = this.startPos,\n x = _startPos.x,\n y = _startPos.y;\n\n var moveVector = this._dragPointerMove(e, pointer);\n var dragX = moveVector.x;\n var dragY = moveVector.y;\n dragX = this.checkContain('x', dragX, x);\n dragY = this.checkContain('y', dragY, y);\n this.position.x = x + dragX;\n this.position.y = y + dragY;\n this.dragPoint.x = dragX;\n this.dragPoint.y = dragY;\n this.emit(EVENTS.MOVE, this.position);\n }\n }, {\n key: 'dragCancel',\n value: function dragCancel(e, pointer) {\n this.dragEnd(e, pointer);\n }\n }, {\n key: 'presetInfo',\n value: function presetInfo() {\n this.isDragging = false;\n this.startPos = {\n x: 0,\n y: 0\n };\n this.dragPoint = {\n x: 0,\n y: 0\n };\n this.isDown = false;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this._unbindStartEvent();\n this._unbindPostStartEvents();\n if (this.isDragging) {\n this.dragEnd();\n }\n this._handlerDom = null;\n }\n }, {\n key: 'hasDragStarted',\n value: function hasDragStarted(moveVector) {\n return Math.abs(moveVector.x) > 3 || Math.abs(moveVector.y) > 3;\n }\n }, {\n key: 'checkContain',\n value: function checkContain(axis, drag, grid) {\n if (drag + grid < 0) {\n return 0 - grid;\n }\n\n if (axis === 'x' && drag + grid > this.startPos.maxX) {\n return this.startPos.maxX - grid;\n }\n if (axis === 'y' && drag + grid > this.startPos.maxY) {\n return this.startPos.maxY - grid;\n }\n return drag;\n }\n }, {\n key: '_getPosition',\n value: function _getPosition() {\n var style = window.getComputedStyle(this._root);\n var x = this._getPositionCoord(style.left, 'width');\n var y = this._getPositionCoord(style.top, 'height');\n // clean up 'auto' or other non-integer values\n this.position.x = isNaN(x) ? 0 : x;\n this.position.y = isNaN(y) ? 0 : y;\n\n this._addTransformPosition(style);\n }\n }, {\n key: '_addTransformPosition',\n value: function _addTransformPosition(style) {\n var transform = style.transform;\n // bail out if value is 'none'\n if (transform.indexOf('matrix') !== 0) {\n return;\n }\n // split matrix(1, 0, 0, 1, x, y)\n var matrixValues = transform.split(',');\n // translate X value is in 12th or 4th position\n var xIndex = transform.indexOf('matrix3d') === 0 ? 12 : 4;\n var translateX = parseInt(matrixValues[xIndex], 10);\n // translate Y value is in 13th or 5th position\n var translateY = parseInt(matrixValues[xIndex + 1], 10);\n this.position.x += translateX;\n this.position.y += translateY;\n }\n }, {\n key: '_getPositionCoord',\n value: function _getPositionCoord(styleSide, measure) {\n if (styleSide.indexOf('%') !== -1) {\n // convert percent into pixel for Safari, #75\n var parentSize = getSize(this._root.parentNode);\n // prevent not-in-DOM element throwing bug, #131\n return !parentSize ? 0 : parseFloat(styleSide) / 100 * parentSize[measure];\n }\n return parseInt(styleSide, 10);\n }\n }]);\n\n return Draggabilly;\n}();\n\nexport default Draggabilly;","\"use strict\";\n\nvar isObject = require(\"./is-object\");\n\nmodule.exports = function (value) {\n\tif (!isObject(value)) throw new TypeError(value + \" is not an Object\");\n\treturn value;\n};\n","\"use strict\";\n\nvar isValue = require(\"../is-value\");\n\nvar keys = Object.keys;\n\nmodule.exports = function (object) { return keys(isValue(object) ? Object(object) : object); };\n","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.keys : require(\"./shim\");\n","var closest = require('./closest');\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n","'use strict';\n\nvar value = require('es5-ext/object/valid-object')\n\n , hasOwnProperty = Object.prototype.hasOwnProperty;\n\nmodule.exports = function (emitter/*, type*/) {\n\tvar type = arguments[1], data;\n\n\tvalue(emitter);\n\n\tif (type !== undefined) {\n\t\tdata = hasOwnProperty.call(emitter, '__ee__') && emitter.__ee__;\n\t\tif (!data) return;\n\t\tif (data[type]) delete data[type];\n\t\treturn;\n\t}\n\tif (hasOwnProperty.call(emitter, '__ee__')) delete emitter.__ee__;\n};\n","\"use strict\";\n\n// ES3 safe\nvar _undefined = void 0;\n\nmodule.exports = function (value) { return value !== _undefined && value !== null; };\n","\"use strict\";\n\nvar isObject = require(\"../object/is\");\n\nmodule.exports = function (value) {\n\tif (!isObject(value)) return false;\n\ttry {\n\t\tif (!value.constructor) return false;\n\t\treturn value.constructor.prototype === value;\n\t} catch (error) {\n\t\treturn false;\n\t}\n};\n","var DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n","\"use strict\";\n\nvar isValue = require(\"./is-value\");\n\nmodule.exports = function (value) {\n\tif (!isValue(value)) throw new TypeError(\"Cannot use null or undefined\");\n\treturn value;\n};\n","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nimport XG_DEBUG from './debug';\nvar util = {};\n\nutil.createDom = function () {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'div';\n var tpl = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var attrs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var cname = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n\n var dom = document.createElement(el);\n dom.className = cname;\n dom.innerHTML = tpl;\n Object.keys(attrs).forEach(function (item) {\n var key = item;\n var value = attrs[item];\n if (el === 'video' || el === 'audio' || el === 'mobile-video') {\n if (value) {\n dom.setAttribute(key, value);\n }\n } else {\n dom.setAttribute(key, value);\n }\n });\n return dom;\n};\n\nutil.createDomFromHtml = function (html) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var classname = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n try {\n var doc = document.createElement('div');\n doc.innerHTML = html;\n var dom = doc.children;\n doc = null;\n if (dom.length > 0) {\n dom = dom[0];\n classname && util.addClass(dom, classname);\n if (attrs) {\n Object.keys(attrs).forEach(function (key) {\n dom.setAttribute(key, attrs[key]);\n });\n }\n return dom;\n }\n return null;\n } catch (err) {\n XG_DEBUG.logError('util.createDomFromHtml', err);\n return null;\n }\n};\n\nutil.hasClass = function (el, className) {\n if (!el) {\n return false;\n }\n if (el.classList) {\n return Array.prototype.some.call(el.classList, function (item) {\n return item === className;\n });\n } else {\n var orgClassName = el.className && _typeof(el.className) === 'object' ? el.getAttribute('class') : el.className;\n return orgClassName && !!orgClassName.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'));\n }\n};\n\nutil.addClass = function (el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n className.replace(/(^\\s+|\\s+$)/g, '').split(/\\s+/g).forEach(function (item) {\n item && el.classList.add(item);\n });\n } else if (!util.hasClass(el, className)) {\n if (el.className && _typeof(el.className) === 'object') {\n el.setAttribute('class', el.getAttribute('class') + ' ' + className);\n } else {\n el.className += ' ' + className;\n }\n }\n};\n\nutil.removeClass = function (el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n className.split(/\\s+/g).forEach(function (item) {\n el.classList.remove(item);\n });\n } else if (util.hasClass(el, className)) {\n className.split(/\\s+/g).forEach(function (item) {\n var reg = new RegExp('(\\\\s|^)' + item + '(\\\\s|$)');\n if (el.className && _typeof(el.className) === 'object') {\n el.setAttribute('class', el.getAttribute('class').replace(reg, ' '));\n } else {\n el.className = el.className.replace(reg, ' ');\n }\n });\n }\n};\n\nutil.toggleClass = function (el, className) {\n if (!el) {\n return;\n }\n\n className.split(/\\s+/g).forEach(function (item) {\n if (util.hasClass(el, item)) {\n util.removeClass(el, item);\n } else {\n util.addClass(el, item);\n }\n });\n};\n\nutil.findDom = function () {\n var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n var sel = arguments[1];\n\n var dom = void 0;\n // fix querySelector IDs that start with a digit\n // https://stackoverflow.com/questions/37270787/uncaught-syntaxerror-failed-to-execute-queryselector-on-document\n try {\n dom = el.querySelector(sel);\n } catch (e) {\n XG_DEBUG.logError('util.findDom', e);\n if (sel.indexOf('#') === 0) {\n dom = el.getElementById(sel.slice(1));\n }\n }\n return dom;\n};\n\nutil.getCss = function (dom, key) {\n return dom.currentStyle ? dom.currentStyle[key] : document.defaultView.getComputedStyle(dom, false)[key];\n};\n\nutil.padStart = function (str, length, pad) {\n var charstr = String(pad);\n var len = length >> 0;\n var maxlen = Math.ceil(len / charstr.length);\n var chars = [];\n var r = String(str);\n while (maxlen--) {\n chars.push(charstr);\n }\n return chars.join('').substring(0, len - r.length) + r;\n};\n\nutil.format = function (time) {\n if (window.isNaN(time)) {\n return '';\n }\n time = Math.round(time);\n var hour = util.padStart(Math.floor(time / 3600), 2, 0);\n var minute = util.padStart(Math.floor((time - hour * 3600) / 60), 2, 0);\n var second = util.padStart(Math.floor(time - hour * 3600 - minute * 60), 2, 0);\n return (hour === '00' ? [minute, second] : [hour, minute, second]).join(':');\n};\n\nutil.event = function (e) {\n if (e.touches) {\n var touch = e.touches[0] || e.changedTouches[0];\n e.clientX = touch.clientX || 0;\n e.clientY = touch.clientY || 0;\n e.offsetX = touch.pageX - touch.target.offsetLeft;\n e.offsetY = touch.pageY - touch.target.offsetTop;\n }\n e._target = e.target || e.srcElement;\n};\n\nutil.typeOf = function (obj) {\n return Object.prototype.toString.call(obj).match(/([^\\s.*]+)(?=]$)/g)[0];\n};\n\nutil.deepCopy = function (dst, src) {\n if (util.typeOf(src) === 'Object' && util.typeOf(dst) === 'Object') {\n Object.keys(src).forEach(function (key) {\n // eslint-disable-next-line no-undef\n if (util.typeOf(src[key]) === 'Object' && !(src[key] instanceof Node)) {\n if (dst[key] === undefined || dst[key] === undefined) {\n dst[key] = src[key];\n } else {\n util.deepCopy(dst[key], src[key]);\n }\n } else if (util.typeOf(src[key]) === 'Array') {\n dst[key] = util.typeOf(dst[key]) === 'Array' ? dst[key].concat(src[key]) : src[key];\n } else {\n dst[key] = src[key];\n }\n });\n return dst;\n }\n};\n\nutil.deepMerge = function (dst, src) {\n Object.keys(src).map(function (key) {\n if (util.typeOf(src[key]) === 'Array' && util.typeOf(dst[key]) === 'Array') {\n if (util.typeOf(dst[key]) === 'Array') {\n var _dst$key;\n\n (_dst$key = dst[key]).push.apply(_dst$key, _toConsumableArray(src[key]));\n }\n } else if (util.typeOf(dst[key]) === util.typeOf(src[key]) && dst[key] !== null && util.typeOf(dst[key]) === 'Object' && !(src[key] instanceof window.Node)) {\n util.deepMerge(dst[key], src[key]);\n } else {\n src[key] !== null && (dst[key] = src[key]);\n }\n });\n return dst;\n};\n\nutil.getBgImage = function (el) {\n // fix: return current page url when url is none\n var url = (el.currentStyle || window.getComputedStyle(el, null)).backgroundImage;\n if (!url || url === 'none') {\n return '';\n }\n var a = document.createElement('a');\n a.href = url.replace(/url\\(\"|\"\\)/g, '');\n return a.href;\n};\n\nutil.copyDom = function (dom) {\n if (dom && dom.nodeType === 1) {\n var back = document.createElement(dom.tagName);\n Array.prototype.forEach.call(dom.attributes, function (node) {\n back.setAttribute(node.name, node.value);\n });\n if (dom.innerHTML) {\n back.innerHTML = dom.innerHTML;\n }\n return back;\n } else {\n return '';\n }\n};\n\nutil.setInterval = function (context, eventName, intervalFunc, frequency) {\n if (!context._interval[eventName]) {\n context._interval[eventName] = setInterval(intervalFunc.bind(context), frequency);\n }\n};\n\nutil.clearInterval = function (context, eventName) {\n clearInterval(context._interval[eventName]);\n context._interval[eventName] = null;\n};\n\nutil.setTimeout = function (context, fun, time) {\n if (!context._timers) {\n context._timers = [];\n }\n var id = setTimeout(function () {\n fun();\n util.clearTimeout(context, id);\n }, time);\n context._timers.push(id);\n return id;\n};\n\nutil.clearTimeout = function (context, id) {\n var _timers = context._timers;\n\n if (util.typeOf(_timers) === 'Array') {\n for (var i = 0; i < _timers.length; i++) {\n if (_timers[i] === id) {\n _timers.splice(i, 1);\n clearTimeout(id);\n break;\n }\n }\n } else {\n clearTimeout(id);\n }\n};\n\nutil.clearAllTimers = function (context) {\n var _timers = context._timers;\n\n if (util.typeOf(_timers) === 'Array') {\n _timers.map(function (item) {\n clearTimeout(item);\n });\n context._timerIds = [];\n }\n};\n\nutil.createImgBtn = function (name, imgUrl, width, height) {\n var btn = util.createDom('xg-' + name, '', {}, 'xgplayer-' + name + '-img');\n btn.style.backgroundImage = 'url(\"' + imgUrl + '\")';\n if (width && height) {\n var w = void 0,\n h = void 0,\n unit = void 0;\n ['px', 'rem', 'em', 'pt', 'dp', 'vw', 'vh', 'vm', '%'].every(function (item) {\n if (width.indexOf(item) > -1 && height.indexOf(item) > -1) {\n w = parseFloat(width.slice(0, width.indexOf(item)).trim());\n h = parseFloat(height.slice(0, height.indexOf(item)).trim());\n unit = item;\n return false;\n } else {\n return true;\n }\n });\n btn.style.width = '' + w + unit;\n btn.style.height = '' + h + unit;\n btn.style.backgroundSize = '' + w + unit + ' ' + h + unit;\n if (name === 'start') {\n btn.style.margin = '-' + h / 2 + unit + ' auto auto -' + w / 2 + unit;\n } else {\n btn.style.margin = 'auto 5px auto 5px';\n }\n }\n return btn;\n};\n\nutil.Hex2RGBA = function (hex, alpha) {\n var rgb = []; // 定义rgb数组\n // eslint-disable-next-line no-useless-escape\n if (/^\\#[0-9A-F]{3}$/i.test(hex)) {\n var sixHex = '#';\n hex.replace(/[0-9A-F]/ig, function (kw) {\n sixHex += kw + kw;\n });\n hex = sixHex;\n }\n if (/^#[0-9A-F]{6}$/i.test(hex)) {\n hex.replace(/[0-9A-F]{2}/ig, function (kw) {\n rgb.push(parseInt(kw, 16));\n });\n return 'rgba(' + rgb.join(',') + ', ' + alpha + ')';\n } else {\n return 'rgba(255, 255, 255, 0.1)';\n }\n};\n\nutil.getFullScreenEl = function () {\n return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement;\n};\n\nutil.checkIsFunction = function (fun) {\n return fun && typeof fun === 'function';\n};\n\nutil.checkIsObject = function (obj) {\n return obj !== null && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object';\n};\n\nutil.hide = function (dom) {\n dom.style.display = 'none';\n};\n\nutil.show = function (dom, display) {\n dom.style.display = display || 'block';\n};\n\nutil.isUndefined = function (val) {\n if (typeof val === 'undefined' || val === null) {\n return true;\n }\n};\n\nutil.setStyleFromCsstext = function (dom, text) {\n var styleArr = text.replace(/\\s+/g, '').split(';');\n styleArr.map(function (item) {\n if (item) {\n var arr = item.split(':');\n if (arr.length > 1) {\n dom.style[arr[0]] = arr[1];\n }\n }\n });\n};\n\nutil.preloadImg = function (url) {\n var onload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};\n var onerror = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n\n var img = new window.Image();\n if (img.complete) {\n // 图片已经加载过了,可以使用图片\n // do something here\n // img = null\n onload && onload();\n } else {\n img.onload = function (e) {\n img = null;\n onload && onload(e);\n };\n img.onerror = function (e) {\n console.log('img.onerror');\n img = null;\n onerror && onerror(e);\n };\n }\n img.src = url;\n};\n\nutil.stopPropagation = function (e) {\n if (e) {\n e.stopPropagation();\n e.cancelable && e.preventDefault();\n }\n};\n\nutil.scrollTop = function () {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n};\n\nutil.scrollLeft = function () {\n return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n};\n\nutil.checkTouchSupport = function () {\n return 'ontouchstart' in window;\n};\n\nexport default util;","import Util from '../utils/util';\nimport EN from './en';\nimport ZH from './zh-cn';\n\nvar XGI18nLang = {};\nvar XGI18nTextKeys = {};\nvar XGI18nLangKeys = [];\n\nfunction updateKeys() {\n Object.keys(XGI18nLang.en).map(function (key) {\n XGI18nTextKeys[key] = key.toLowerCase();\n });\n}\n\nfunction extend(XGI18nText) {\n Object.keys(XGI18nText).map(function (lang) {\n if (!XGI18nLang[lang]) {\n XGI18nLang[lang] = {};\n }\n if (lang === 'zh') {\n Util.deepMerge(XGI18nLang['zh-cn'], XGI18nText[lang]);\n } else {\n Util.deepMerge(XGI18nLang[lang], XGI18nText[lang]);\n }\n });\n updateKeys();\n}\n\nfunction use(data) {\n var lang = data.LANG;\n var texts = data.TEXT || {};\n if (!XGI18nLang[lang]) {\n XGI18nLangKeys.push(lang);\n }\n if (XGI18nLang[lang]) {\n Util.deepMerge(XGI18nLang[lang], texts);\n } else {\n XGI18nLang[lang] = texts;\n }\n if (lang === 'zh-cn') {\n XGI18nLang['zh'] = XGI18nLang['zh-cn'];\n }\n updateKeys();\n}\n\nuse(EN);\nuse(ZH);\n\nexport default {\n get textKeys() {\n return XGI18nTextKeys;\n },\n get langKeys() {\n return XGI18nLangKeys;\n },\n get lang() {\n var ret = {};\n XGI18nLangKeys.map(function (key) {\n ret[key] = XGI18nLang[key];\n });\n ret['zh'] = XGI18nLang['zh-cn'];\n return ret;\n },\n extend: extend,\n use: use\n};","export default {\n LANG: 'en',\n TEXT: {\n HAVE_NOTHING: 'There is no information on whether audio/video is ready',\n HAVE_METADATA: 'Audio/video metadata is ready ',\n HAVE_CURRENT_DATA: 'Data about the current play location is available, but there is not enough data to play the next frame/millisecond',\n HAVE_FUTURE_DATA: 'Current and at least one frame of data is available',\n HAVE_ENOUGH_DATA: 'The available data is sufficient to start playing',\n NETWORK_EMPTY: 'Audio/video has not been initialized',\n NETWORK_IDLE: 'Audio/video is active and has been selected for resources, but no network is used',\n NETWORK_LOADING: 'The browser is downloading the data',\n NETWORK_NO_SOURCE: 'No audio/video source was found',\n MEDIA_ERR_ABORTED: 'The fetch process is aborted by the user',\n MEDIA_ERR_NETWORK: 'An error occurred while downloading',\n MEDIA_ERR_DECODE: 'An error occurred while decoding',\n MEDIA_ERR_SRC_NOT_SUPPORTED: 'Audio/video is not supported',\n REPLAY: 'Replay',\n ERROR: 'Network is offline',\n PLAY_TIPS: 'Play',\n PAUSE_TIPS: 'Pause',\n PLAYNEXT_TIPS: 'Play next',\n DOWNLOAD_TIPS: 'Download',\n ROTATE_TIPS: 'Rotate',\n RELOAD_TIPS: 'Reload',\n FULLSCREEN_TIPS: 'Fullscreen',\n EXITFULLSCREEN_TIPS: 'Exit fullscreen',\n CSSFULLSCREEN_TIPS: 'Cssfullscreen',\n EXITCSSFULLSCREEN_TIPS: 'Exit cssfullscreen',\n TEXTTRACK: 'Caption',\n PIP: 'PIP',\n SCREENSHOT: 'Screenshot',\n LIVE: 'LIVE',\n OFF: 'Off',\n OPEN: 'Open',\n MINI_DRAG: 'Click and hold to drag',\n MINISCREEN: 'Miniscreen',\n REFRESH_TIPS: 'Please Try',\n REFRESH: 'Refresh'\n }\n};","export default {\n LANG: 'zh-cn',\n TEXT: {\n HAVE_NOTHING: '没有关于音频/视频是否就绪的信息',\n HAVE_METADATA: '音频/视频的元数据已就绪',\n HAVE_CURRENT_DATA: '关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧/毫秒',\n HAVE_FUTURE_DATA: '当前及至少下一帧的数据是可用的',\n HAVE_ENOUGH_DATA: '可用数据足以开始播放',\n NETWORK_EMPTY: '音频/视频尚未初始化',\n NETWORK_IDLE: '音频/视频是活动的且已选取资源,但并未使用网络',\n NETWORK_LOADING: '浏览器正在下载数据',\n NETWORK_NO_SOURCE: '未找到音频/视频来源',\n MEDIA_ERR_ABORTED: '取回过程被用户中止',\n MEDIA_ERR_NETWORK: '当下载时发生错误',\n MEDIA_ERR_DECODE: '当解码时发生错误',\n MEDIA_ERR_SRC_NOT_SUPPORTED: '不支持的音频/视频格式',\n REPLAY: '重播',\n ERROR: '网络连接似乎出现了问题',\n PLAY_TIPS: '播放',\n PAUSE_TIPS: '暂停',\n PLAYNEXT_TIPS: '下一集',\n DOWNLOAD_TIPS: '下载',\n ROTATE_TIPS: '旋转',\n RELOAD_TIPS: '重新载入',\n FULLSCREEN_TIPS: '进入全屏',\n EXITFULLSCREEN_TIPS: '退出全屏',\n CSSFULLSCREEN_TIPS: '进入样式全屏',\n EXITCSSFULLSCREEN_TIPS: '退出样式全屏',\n TEXTTRACK: '字幕',\n PIP: '画中画',\n SCREENSHOT: '截图',\n LIVE: '正在直播',\n OFF: '关闭',\n OPEN: '开启',\n MINI_DRAG: '点击按住可拖动视频',\n MINISCREEN: '小屏幕',\n REFRESH_TIPS: '请试试',\n REFRESH: '刷新'\n }\n};","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { hooksDescriptor, Events, Util } from '../../plugin';\nvar ReplaySvg = '';\n\nvar Replay = function (_Plugin) {\n _inherits(Replay, _Plugin);\n\n function Replay() {\n _classCallCheck(this, Replay);\n\n return _possibleConstructorReturn(this, (Replay.__proto__ || Object.getPrototypeOf(Replay)).apply(this, arguments));\n }\n\n _createClass(Replay, [{\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n 'replay': ReplaySvg\n };\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n hooksDescriptor(this);\n Plugin.insert(this.icons.replay, this.root, 0);\n this.__handleReplay = this.hook('replayHandler', function () {\n _this2.player.replay();\n }, {\n pre: function pre(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n\n // this.bind('.xgplayer-replay', ['click', 'touchend'], this.__handleReplay)\n this.bind('svg', ['click', 'touchend'], this.__handleReplay);\n this.bind('.xgplayer-replay-txt', ['click', 'touchend'], this.__handleReplay);\n\n this.on(Events.ENDED, function () {\n if (!_this2.playerConfig.loop) {\n Util.addClass(_this2.player.root, 'replay');\n }\n if (_this2.config.disable) {\n return;\n }\n _this2.show();\n var path = _this2.root.querySelector('path');\n if (path) {\n var transform = window.getComputedStyle(path).getPropertyValue('transform');\n if (typeof transform === 'string' && transform.indexOf('none') > -1) {\n return null;\n } else {\n path.setAttribute('transform', transform);\n }\n }\n });\n\n this.on(Events.PLAY, function () {\n _this2.hide();\n });\n }\n }, {\n key: 'handleReplay',\n value: function handleReplay(e) {\n e.preventDefault();\n e.stopPropagation();\n this.player.replay();\n Util.removeClass(this.player.root, 'replay');\n }\n }, {\n key: 'show',\n value: function show() {\n if (this.config.disable) {\n return;\n }\n this.root.style.display = 'flex';\n }\n }, {\n key: 'enable',\n value: function enable() {\n this.config.disable = false;\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.config.disable = true;\n this.hide();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind('svg', ['click', 'touchend'], this.__handleReplay);\n this.unbind('.xgplayer-replay-txt', ['click', 'touchend'], this.__handleReplay);\n }\n }, {\n key: 'render',\n value: function render() {\n return '\\n ' + (this.i18n.REPLAY || '重播') + '\\n ';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'replay';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n disable: false\n };\n }\n }]);\n\n return Replay;\n}(Plugin);\n\nexport default Replay;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Events, Util } from '../../plugin';\n\nvar Poster = function (_Plugin) {\n _inherits(Poster, _Plugin);\n\n function Poster() {\n _classCallCheck(this, Poster);\n\n return _possibleConstructorReturn(this, (Poster.__proto__ || Object.getPrototypeOf(Poster)).apply(this, arguments));\n }\n\n _createClass(Poster, [{\n key: 'hide',\n value: function hide() {\n Util.addClass(this.root, 'hide');\n }\n }, {\n key: 'show',\n value: function show() {\n Util.removeClass(this.root, 'hide');\n }\n }, {\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.poster === 'string') {\n args.config.poster = args.player.config.poster;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n this.on(Events.ENDED, function () {\n if (!_this2.isEndedShow) {\n Util.addClass(_this2.root, 'hide');\n }\n });\n\n if (this.config.hideCanplay) {\n this.once(Events.TIME_UPDATE, function () {\n _this2.onTimeUpdate();\n });\n this.on(Events.URL_CHANGE, function () {\n Util.removeClass(_this2.root, 'hide');\n Util.addClass(_this2.root, 'xg-showplay');\n _this2.once(Events.TIME_UPDATE, function () {\n _this2.onTimeUpdate();\n });\n });\n } else {\n this.on(Events.PLAY, function () {\n Util.addClass(_this2.root, 'hide');\n });\n }\n }\n }, {\n key: 'onTimeUpdate',\n value: function onTimeUpdate() {\n var _this3 = this;\n\n if (!this.player.currentTime) {\n this.once(Events.TIME_UPDATE, function () {\n _this3.onTimeUpdate();\n });\n } else {\n Util.removeClass(this.root, 'xg-showplay');\n }\n }\n }, {\n key: 'update',\n value: function update(poster) {\n if (!poster) {\n return;\n }\n this.config.poster = poster;\n this.root.style.backgroundImage = 'url(' + poster + ')';\n }\n }, {\n key: 'render',\n value: function render() {\n var _config = this.config,\n poster = _config.poster,\n hideCanplay = _config.hideCanplay;\n\n var style = poster ? 'background-image:url(' + poster + ');' : '';\n return '\\n ';\n }\n }, {\n key: 'isEndedShow',\n set: function set(value) {\n this.config.isEndedShow = value;\n },\n get: function get() {\n return this.config.isEndedShow;\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'poster';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n isEndedShow: true, // 是否在播放结束之后显示\n hideCanplay: false, // cnaplay 时间大于1的时候才隐藏\n poster: '' // 封面图地址\n };\n }\n }]);\n\n return Poster;\n}(Plugin);\n\nexport default Poster;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { hooksDescriptor, Util, Events } from '../../plugin';\nvar PlaySvg = '';\nvar PauseSvg = '';\n\n\nvar AnimateMap = {};\nfunction addAnimate(key, seconds) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { start: null, end: null };\n\n if (AnimateMap[key]) {\n window.clearTimeout(AnimateMap[key].id);\n }\n AnimateMap[key] = {};\n callback.start && callback.start();\n AnimateMap[key].id = window.setTimeout(function () {\n callback.end && callback.end();\n window.clearTimeout(AnimateMap[key].id);\n delete AnimateMap[key];\n }, seconds);\n}\n\nfunction clearAnimation() {\n Object.keys(AnimateMap).map(function (key) {\n window.clearTimeout(AnimateMap[key].id);\n delete AnimateMap[key];\n });\n}\n\nvar Start = function (_Plugin) {\n _inherits(Start, _Plugin);\n\n _createClass(Start, null, [{\n key: 'pluginName',\n get: function get() {\n return 'start';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n isShowPause: false, // 暂停是否常驻\n isShowEnd: false, // 播放结束常驻\n disableAnimate: false, // 禁用点击动画\n mode: 'hide' // 控制模式: hide 常驻: show 跟随:auto\n };\n }\n }]);\n\n function Start(args) {\n _classCallCheck(this, Start);\n\n var _this = _possibleConstructorReturn(this, (Start.__proto__ || Object.getPrototypeOf(Start)).call(this, args));\n\n _this.autoPlayStart = false;\n return _this;\n }\n\n _createClass(Start, [{\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n var player = this.player,\n playerConfig = this.playerConfig;\n\n hooksDescriptor(this);\n\n this.initIcons();\n this.once(Events.READY, function () {\n if (playerConfig) {\n if (playerConfig.lang && playerConfig.lang === 'en') {\n Util.addClass(player.root, 'lang-is-en');\n } else if (playerConfig.lang === 'jp') {\n Util.addClass(player.root, 'lang-is-jp');\n }\n }\n });\n\n this.on(Events.AUTOPLAY_STARTED, function () {\n var className = _this2.config.mode === 'auto' ? 'auto-hide' : 'hide';\n Util.addClass(_this2.root, className);\n _this2.autoPlayStart = true;\n _this2.onPlayPause('play');\n });\n\n if (!playerConfig.autoplay) {\n this.show();\n }\n\n this.on(Events.AUTOPLAY_PREVENTED, function () {\n var className = _this2.config.mode === 'auto' ? 'auto-hide' : 'hide';\n _this2.setAttr('data-state', 'play');\n Util.removeClass(_this2.root, className);\n _this2.show();\n });\n\n this.on(Events.PLAY, function () {\n _this2.onPlayPause('play');\n });\n\n this.on(Events.PAUSE, function () {\n _this2.onPlayPause('pause');\n });\n\n this.clickHandler = this.hook('click', this.switchPausePlay, {\n pre: function pre(e) {\n e.preventDefault();\n e.stopPropagation();\n } });\n\n this.bind(['click', 'touchend'], this.clickHandler);\n }\n }, {\n key: 'preventDefault',\n value: function preventDefault(e) {}\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n startPlay: { icon: PlaySvg, class: 'xg-icon-play' },\n startPause: { icon: PauseSvg, class: 'xg-icon-pause' }\n };\n }\n }, {\n key: 'initIcons',\n value: function initIcons() {\n var icons = this.icons;\n\n this.appendChild(icons.startPlay);\n this.appendChild(icons.startPause);\n }\n }, {\n key: 'hide',\n value: function hide() {\n Util.addClass(this.root, 'hide');\n }\n }, {\n key: 'show',\n value: function show() {\n Util.removeClass(this.root, 'hide');\n }\n }, {\n key: 'focusHide',\n value: function focusHide() {\n Util.addClass(this.root, 'focus-hide');\n }\n }, {\n key: 'recover',\n value: function recover() {\n Util.removeClass(this.root, 'focus-hide');\n }\n }, {\n key: 'switchStatus',\n value: function switchStatus(isAnimate) {\n if (isAnimate) {\n this.setAttr('data-state', !this.player.paused ? 'play' : 'pause');\n } else {\n this.setAttr('data-state', this.player.paused ? 'play' : 'pause');\n }\n }\n }, {\n key: 'animate',\n value: function animate(endShow) {\n var _this3 = this;\n\n addAnimate('pauseplay', 400, {\n start: function start() {\n Util.addClass(_this3.root, 'interact');\n _this3.show();\n _this3.switchStatus(true);\n },\n end: function end() {\n Util.removeClass(_this3.root, 'interact');\n !endShow && _this3.hide();\n }\n });\n }\n }, {\n key: 'switchPausePlay',\n value: function switchPausePlay(e) {\n var player = this.player;\n\n e.preventDefault();\n e.stopPropagation();\n if (!player.isReady) {\n return;\n }\n var paused = this.player.paused;\n if (!paused && player.isPlaying) {\n player.pause();\n } else {\n player.play();\n }\n }\n }, {\n key: 'onPlayPause',\n value: function onPlayPause(status) {\n var config = this.config,\n player = this.player;\n\n if (!player.isPlaying || !this.autoPlayStart) {\n return;\n }\n // 一直显示\n if (config.mode === 'show') {\n this.switchStatus();\n this.show();\n return;\n }\n\n // 跟随播放器的focus状态显示和隐藏\n if (config.mode === 'auto') {\n this.switchStatus();\n return;\n }\n // 暂停/播放结束状态强制显示\n if (config.isShowPause && player.paused && !player.ended || config.isShowEnd && player.ended) {\n this.switchStatus();\n this.show();\n return;\n }\n\n if (config.disableAnimate) {\n this.switchStatus();\n this.hide();\n return;\n }\n\n if (status === 'play') {\n this.autoPlayStart ? this.animate() : this.hide();\n } else {\n if (!this.autoPlayStart) {\n return;\n }\n this.animate();\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.clickHandler);\n clearAnimation();\n }\n }, {\n key: 'render',\n value: function render() {\n var className = this.playerConfig.autoplay ? this.config.mode === 'auto' ? 'auto-hide' : 'hide' : '';\n return '\\n \\n ';\n }\n }]);\n\n return Start;\n}(Plugin);\n\nexport default Start;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Util } from '../../plugin';\n\nvar Enter = function (_Plugin) {\n _inherits(Enter, _Plugin);\n\n function Enter() {\n _classCallCheck(this, Enter);\n\n return _possibleConstructorReturn(this, (Enter.__proto__ || Object.getPrototypeOf(Enter)).apply(this, arguments));\n }\n\n _createClass(Enter, [{\n key: 'render',\n value: function render() {\n var innerHtml = this.config.innerHtml;\n\n var root = Util.createDom('xg-enter', '', {}, 'xgplayer-enter');\n\n if (innerHtml && innerHtml instanceof window.HTMLElement) {\n root.appendChild(innerHtml);\n } else if (innerHtml && typeof innerHtml === 'string') {\n root.innerHTML = innerHtml;\n } else {\n var barStr = '';\n for (var i = 1; i <= 12; i++) {\n barStr += '
';\n }\n root.innerHTML = '
' + barStr + '
';\n }\n return root;\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'enter';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n innerHtml: '',\n logo: ''\n };\n }\n }]);\n\n return Enter;\n}(Plugin);\n\nexport default Enter;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { POSITIONS } from '../../plugin';\n\nvar MiniScreenIcon = function (_Plugin) {\n _inherits(MiniScreenIcon, _Plugin);\n\n function MiniScreenIcon() {\n _classCallCheck(this, MiniScreenIcon);\n\n return _possibleConstructorReturn(this, (MiniScreenIcon.__proto__ || Object.getPrototypeOf(MiniScreenIcon)).apply(this, arguments));\n }\n\n _createClass(MiniScreenIcon, [{\n key: 'afterCreate',\n value: function afterCreate() {\n this.getMini = this.getMini.bind(this);\n this.exitMini = this.exitMini.bind(this);\n this.bind('click', this.getMini);\n }\n }, {\n key: 'getMini',\n value: function getMini() {\n this.config.onClick && this.config.onClick();\n }\n }, {\n key: 'exitMini',\n value: function exitMini() {\n this.config.onClick && this.config.onClick();\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.getMini);\n }\n }, {\n key: 'render',\n value: function render() {\n var langKey = 'MINISCREEN';\n return '\\n \\n
' + this.i18n[langKey] + '
\\n
';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'miniscreenIcon';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 10\n };\n }\n }]);\n\n return MiniScreenIcon;\n}(Plugin);\n\nexport default MiniScreenIcon;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Util, Events } from '../../plugin';\nvar PlayIcon = '';\nvar PauseIcon = '';\n\nimport MiniScreenIcon from './miniScreenIcon';\nimport Draggabilly from '../../utils/draggabilly';\n\nvar MiniScreen = function (_Plugin) {\n _inherits(MiniScreen, _Plugin);\n\n _createClass(MiniScreen, null, [{\n key: 'pluginName',\n get: function get() {\n return 'miniscreen';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n index: 10,\n disable: false,\n width: 300,\n height: 168.75,\n left: -1, // 默认左下角\n top: -1, // 默认左下角\n isShowIcon: false, // 是否显示icon\n isScrollSwitch: false, // 滚动自动切换自动切换\n scrollTop: 0, // 触发滚动的高度\n disableDrag: false // 禁用拖拽\n };\n }\n }]);\n\n function MiniScreen(args) {\n _classCallCheck(this, MiniScreen);\n\n var _this = _possibleConstructorReturn(this, (MiniScreen.__proto__ || Object.getPrototypeOf(MiniScreen)).call(this, args));\n\n _this.onCancelClick = function (e) {\n // e.preventDefault()\n // e.stopPropagation()\n _this.exitMini();\n _this.isClose = true;\n };\n\n _this.onCenterClick = function (e) {\n var player = _this.player;\n\n player.paused ? player.play() : player.pause();\n };\n\n _this.onScroll = function (e) {\n if (!window.scrollY && window.scrollY !== 0 || Math.abs(window.scrollY - _this.pos.scrollY) < 50) {\n return;\n }\n var scrollHeight = parseInt(Util.getCss(_this.player.root, 'height'));\n scrollHeight += _this.config.scrollTop;\n _this.pos.scrollY = window.scrollY;\n if (window.scrollY > scrollHeight + 5) {\n !_this.isMini && !_this.isClose && _this.getMini();\n } else if (window.scrollY <= scrollHeight) {\n _this.isMini && _this.exitMini();\n _this.isClose = false;\n }\n };\n\n _this.isMini = false;\n _this.isClose = false;\n var config = _this.config;\n\n _this.pos = {\n left: config.left < 0 ? window.innerWidth - config.width - 20 : config.left,\n top: config.top < 0 ? window.innerHeight - config.height - 20 : config.top,\n height: _this.config.height,\n width: _this.config.width,\n scrollY: window.scrollY || 0\n };\n _this.lastStyle = null;\n return _this;\n }\n\n _createClass(MiniScreen, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.mini === 'boolean') {\n args.config.isShowIcon = args.player.config.mini;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n this.initIcons();\n this.on(Events.PAUSE, function () {\n _this2.setAttr('data-state', 'pause');\n });\n this.on(Events.PLAY, function () {\n _this2.setAttr('data-state', 'play');\n });\n }\n }, {\n key: 'onPluginsReady',\n value: function onPluginsReady() {\n var _this3 = this;\n\n var player = this.player,\n config = this.config;\n\n if (config.disable) {\n return;\n }\n if (this.config.isShowIcon) {\n var options = {\n config: {\n onClick: function onClick() {\n _this3.getMini();\n }\n }\n };\n player.controls.registerPlugin(MiniScreenIcon, options, MiniScreenIcon.pluginName);\n }\n var eventName = Util.checkTouchSupport() ? 'touchend' : 'click';\n this.bind('.mini-cancel-btn', eventName, this.onCancelClick);\n this.bind('.play-icon', eventName, this.onCenterClick);\n if (!this.config.disableDrag) {\n this._draggabilly = new Draggabilly(this.player.root, {\n handle: this.root\n });\n }\n if (this.config.isScrollSwitch) {\n window.addEventListener('scroll', this.onScroll);\n }\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n play: { icon: PlayIcon, class: 'xg-icon-play' },\n pause: { icon: PauseIcon, class: 'xg-icon-pause' }\n };\n }\n }, {\n key: 'initIcons',\n value: function initIcons() {\n var icons = this.icons;\n\n this.appendChild('.play-icon', icons.play);\n this.appendChild('.play-icon', icons.pause);\n }\n }, {\n key: 'getMini',\n value: function getMini() {\n var _this4 = this;\n\n if (this.isMini) {\n return;\n }\n var player = this.player,\n playerConfig = this.playerConfig;\n\n var target = this.config.target || this.player.root;\n this.lastStyle = {};\n Util.addClass(player.root, 'xgplayer-mini');\n ['width', 'height', 'top', 'left'].map(function (key) {\n _this4.lastStyle[key] = target.style[key];\n target.style[key] = _this4.pos[key] + 'px';\n });\n if (playerConfig.fluid) {\n target.style['padding-top'] = '';\n }\n this.emit(Events.MINI_STATE_CHANGE, true);\n player.isMini = this.isMini = true;\n }\n }, {\n key: 'exitMini',\n value: function exitMini() {\n var _this5 = this;\n\n if (!this.isMini) {\n return false;\n }\n var player = this.player,\n playerConfig = this.playerConfig;\n\n var target = this.config.target || this.player.root;\n Util.removeClass(player.root, 'xgplayer-mini');\n if (this.lastStyle) {\n Object.keys(this.lastStyle).map(function (key) {\n target.style[key] = _this5.lastStyle[key];\n });\n }\n this.lastStyle = null;\n if (playerConfig.fluid) {\n player.root.style['width'] = '100%';\n player.root.style['height'] = '0';\n player.root.style['padding-top'] = playerConfig.height * 100 / playerConfig.width + '%';\n }\n this.emit(Events.MINI_STATE_CHANGE, false);\n this.isMini = player.isMini = false;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n window.removeEventListener('scroll', this.onScroll);\n var eventName = Util.checkTouchSupport() ? 'touchend' : 'click';\n this.unbind('.mini-cancel-btn', eventName, this.onCancelClick);\n this.unbind('.play-icon', eventName, this.onCenterClick);\n this._draggabilly && this._draggabilly.destroy();\n this._draggabilly = null;\n this.exitMini();\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n return '\\n \\n \\n
' + this.i18n.MINI_DRAG + '
\\n
\\n
\\n \\n \\n \\n
\\n
\\n
\\n
';\n }\n }]);\n\n return MiniScreen;\n}(Plugin);\n\nexport { MiniScreen as default, MiniScreenIcon };","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { BasePlugin, Events, Sniffer } from '../../plugin';\nvar MOUSE_EVENTS = {\n mouseenter: 'onMouseEnter',\n mouseleave: 'onMouseLeave',\n mousemove: 'onMouseMove'\n};\n\nvar PCPlugin = function (_BasePlugin) {\n _inherits(PCPlugin, _BasePlugin);\n\n function PCPlugin() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, PCPlugin);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = PCPlugin.__proto__ || Object.getPrototypeOf(PCPlugin)).call.apply(_ref, [this].concat(args))), _this), _this.onMouseMove = function (e) {\n var _this2 = _this,\n player = _this2.player,\n playerConfig = _this2.playerConfig;\n\n if (!player.isActive) {\n _this.emit(Events.PLAYER_FOCUS);\n !playerConfig.closeFocusVideoFocus && player.video.focus();\n }\n }, _this.onMouseEnter = function (e) {\n if (_this.playerConfig.closeDelayBlur) {\n _this.emit(Events.PLAYER_FOCUS, { autoHide: false });\n } else {\n _this.emit(Events.PLAYER_FOCUS);\n }\n }, _this.onMouseLeave = function (e) {\n var _this$playerConfig = _this.playerConfig,\n closePlayerBlur = _this$playerConfig.closePlayerBlur,\n leavePlayerTime = _this$playerConfig.leavePlayerTime;\n\n if (!closePlayerBlur) {\n if (leavePlayerTime) {\n _this.emit(Events.PLAYER_FOCUS, { autoHide: true, delay: leavePlayerTime });\n } else {\n _this.emit(Events.PLAYER_BLUR);\n }\n }\n }, _this.onVideoClick = function (e) {\n var _this3 = _this,\n player = _this3.player,\n playerConfig = _this3.playerConfig;\n\n if (!e.target || e.target !== player.video || playerConfig.closeVideoClick) {\n return;\n }\n e.preventDefault();\n if (!playerConfig.closeVideoStopPropagation) {\n e.stopPropagation();\n }\n if (_this.clickTimer) {\n clearTimeout(_this.clickTimer);\n _this.clickTimer = null;\n }\n var fun = null;\n if (!player.ended) {\n fun = player.paused ? player.play : player.pause;\n } else {\n fun = player.duration !== Infinity && player.duration > 0 ? player.replay : null;\n }\n if (!fun) {\n return;\n }\n _this.clickTimer = setTimeout(function () {\n fun.call(player);\n clearTimeout(_this.clickTimer);\n _this.clickTimer = null;\n }, 200);\n }, _this.onVideoDblClick = function (e) {\n var _this4 = _this,\n player = _this4.player,\n playerConfig = _this4.playerConfig;\n\n if (!e.target || e.target !== player.video || playerConfig.closeVideoDblclick) {\n return;\n }\n if (_this.clickTimer) {\n clearTimeout(_this.clickTimer);\n _this.clickTimer = null;\n }\n e.preventDefault();\n e.stopPropagation();\n player.fullscreen ? player.exitFullscreen() : player.getFullscreen();\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(PCPlugin, [{\n key: 'afterCreate',\n value: function afterCreate() {\n var _playerConfig = this.playerConfig,\n enableContextmenu = _playerConfig.enableContextmenu,\n isMobileSimulateMode = _playerConfig.isMobileSimulateMode;\n\n if (isMobileSimulateMode || Sniffer.device === 'mobile') {\n return;\n }\n this.config.disableContextmenu = !enableContextmenu;\n this.initEvents();\n }\n }, {\n key: 'initEvents',\n value: function initEvents() {\n var _this5 = this;\n\n var _player = this.player,\n video = _player.video,\n root = _player.root;\n\n\n video.addEventListener('click', this.onVideoClick, false);\n video.addEventListener('dblclick', this.onVideoDblClick, false);\n Object.keys(MOUSE_EVENTS).map(function (item) {\n root.addEventListener(item, _this5[MOUSE_EVENTS[item]], false);\n });\n this.config.disableContextmenu && video.addEventListener('contextmenu', this.onContextmenu, false);\n }\n }, {\n key: 'onContextmenu',\n value: function onContextmenu(e) {\n e = e || window.event;\n if (e.preventDefault) {\n e.preventDefault();\n }\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.returnValue = false; // 解决IE8右键弹出\n e.cancelBubble = true;\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this6 = this;\n\n var _player2 = this.player,\n video = _player2.video,\n root = _player2.root;\n\n this.clickTimer && clearTimeout(this.clickTimer);\n video.removeEventListener('click', this.onVideoClick, false);\n video.removeEventListener('dblclick', this.onVideoDblClick, false);\n video.removeEventListener('contextmenu', this.onContextmenu, false);\n Object.keys(MOUSE_EVENTS).map(function (item) {\n root.removeEventListener(item, _this6[MOUSE_EVENTS[item]], false);\n });\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'pc';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n disableContextmenu: true\n };\n }\n }]);\n\n return PCPlugin;\n}(BasePlugin);\n\nexport default PCPlugin;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar EVENTS = {\n PRESS: 'press',\n PRESS_END: 'pressend',\n DOUBlE_CLICK: 'doubleclick',\n CLICK: 'click',\n TOUCH_MOVE: 'touchmove',\n TOUCH_START: 'touchstart',\n TOUCH_END: 'touchend'\n};\n\nvar TOUCHS = {\n start: 'touchstart',\n end: 'touchend',\n move: 'touchmove',\n cancel: 'touchcancel'\n};\n\nvar MOUSES = {\n start: 'mousedown',\n end: 'mouseup',\n move: 'mousemove',\n cancel: 'mouseleave'\n};\n\nfunction getTouch(touches) {\n if (touches && touches.length > 0) {\n return touches[touches.length - 1];\n } else {\n return null;\n }\n}\n\nfunction getDefaultConfig() {\n return {\n pressDelay: 600,\n dbClickDelay: 300,\n disablePress: false,\n disableDbClick: false,\n miniStep: 2\n };\n}\n\nvar Touche = function () {\n function Touche(dom) {\n var _this = this;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { eventType: 'touch' };\n\n _classCallCheck(this, Touche);\n\n this._pos = {\n moving: false,\n start: false,\n x: 0,\n y: 0\n };\n this.config = getDefaultConfig();\n Object.keys(config).map(function (key) {\n _this.config[key] = config[key];\n });\n this.root = dom;\n this.events = config.eventType === 'mouse' ? MOUSES : TOUCHS;\n this.pressIntrvalId = null;\n this.dbIntrvalId = null;\n this.__handlers = {};\n this._initEvent();\n this.timstamp = parseInt(window.performance.now(), 10);\n }\n\n _createClass(Touche, [{\n key: '_initEvent',\n value: function _initEvent() {\n this.onTouchStart = this.onTouchStart.bind(this);\n this.onTouchMove = this.onTouchMove.bind(this);\n this.onTouchEnd = this.onTouchEnd.bind(this);\n this.onTouchCancel = this.onTouchCancel.bind(this);\n // this.root.addEventListener('touchstart', this.onTouchStart)\n this.root.addEventListener(this.events.start, this.onTouchStart);\n }\n }, {\n key: '__stopPropagation',\n value: function __stopPropagation(e) {\n if (e) {\n e.stopPropagation();\n e.cancelable && e.preventDefault();\n }\n }\n }, {\n key: '__setPress',\n value: function __setPress(e) {\n var _this2 = this;\n\n var config = this.config;\n\n if (this.pressIntrvalId) {\n this.__clearPress();\n }\n this.pressIntrvalId = setTimeout(function () {\n _this2.trigger(EVENTS.PRESS, e);\n _this2._pos.press = true;\n _this2.__clearPress();\n }, config.pressDelay);\n }\n }, {\n key: '__clearPress',\n value: function __clearPress() {\n window.clearTimeout(this.pressIntrvalId);\n this.pressIntrvalId = null;\n }\n }, {\n key: '__setDb',\n value: function __setDb(e) {\n var _this3 = this;\n\n var config = this.config;\n\n if (this.dbIntrvalId) {\n // console.log('__clearDb0')\n this.__clearDb();\n this.trigger(EVENTS.DOUBlE_CLICK, e);\n return;\n }\n this.dbIntrvalId = setTimeout(function () {\n // console.log('__clearDb1')\n _this3.__clearDb();\n if (!_this3._pos.start && !_this3._pos.press && !_this3._pos.moving) {\n _this3.trigger(EVENTS.CLICK, e);\n }\n }, config.dbClickDelay);\n }\n }, {\n key: '__clearDb',\n value: function __clearDb() {\n // console.log('__clearDb', this.dbIntrvalId)\n clearTimeout(this.dbIntrvalId);\n this.dbIntrvalId = null;\n }\n }, {\n key: 'on',\n value: function on(event, handler) {\n if (!this.__handlers[event]) {\n this.__handlers[event] = [];\n }\n this.__handlers[event].push(handler);\n }\n }, {\n key: 'off',\n value: function off(event, handler) {\n if (!this.__handlers[event]) {\n return;\n }\n var handlers = this.__handlers[event];\n var index = -1;\n for (var i = 0; i < handlers.length; i++) {\n if (handlers[i] === handler) {\n index = i;\n break;\n }\n }\n if (index >= 0) {\n this.__handlers[event].splice(index, 1);\n }\n }\n }, {\n key: 'offAll',\n value: function offAll() {}\n }, {\n key: 'trigger',\n value: function trigger(event, e) {\n if (!this.__handlers[event]) {\n return;\n }\n this.__handlers[event].map(function (handler) {\n try {\n handler(e);\n } catch (error) {\n console.error('trigger>>:' + event, error);\n }\n });\n }\n }, {\n key: 'onTouchStart',\n value: function onTouchStart(e) {\n var time = parseInt(window.performance.now(), 10);\n console.log('onTouchStart', time - this.timstamp);\n this.timstamp = time;\n var _pos = this._pos,\n root = this.root;\n\n var touch = getTouch(e.touches);\n _pos.x = touch ? parseInt(touch.pageX, 10) : e.pageX;\n _pos.y = touch ? parseInt(touch.pageX, 10) : e.pageX;\n _pos.start = true;\n this.__setPress(e);\n // root.addEventListener('touchend', this.onTouchEnd)\n // root.addEventListener('touchcancel', this.onTouchCancel)\n // root.addEventListener('touchmove', this.onTouchMove)\n root.addEventListener(this.events.end, this.onTouchEnd);\n root.addEventListener(this.events.cancel, this.onTouchCancel);\n root.addEventListener(this.events.move, this.onTouchMove);\n this.trigger(EVENTS.TOUCH_START, e);\n }\n }, {\n key: 'onTouchCancel',\n value: function onTouchCancel(e) {\n var time = parseInt(window.performance.now(), 10);\n console.log('onTouchCancel', time - this.timstamp);\n this.timstamp = time;\n this.onTouchEnd(e);\n }\n }, {\n key: 'onTouchEnd',\n value: function onTouchEnd(e) {\n var _pos = this._pos,\n root = this.root;\n\n this.__clearPress();\n // root.removeEventListener('touchend', this.onTouchEnd)\n // root.removeEventListener('touchmove', this.onTouchMove)\n root.removeEventListener(this.events.cancel, this.onTouchCancel);\n root.removeEventListener(this.events.end, this.onTouchEnd);\n root.removeEventListener(this.events.move, this.onTouchMove);\n e.moving = _pos.moving;\n e.press = _pos.press;\n _pos.press && this.trigger(EVENTS.PRESS_END, e);\n this.trigger(EVENTS.TOUCH_END, e);\n // console.log('onTouchEnd', `press:${_pos.press} moving:${_pos.moving}`)\n var time = parseInt(window.performance.now(), 10);\n console.log('onTouchEnd', time - this.timstamp);\n this.timstamp = time;\n !_pos.press && !_pos.moving && this.__setDb() && console.log('__setDb');\n _pos.press = false;\n _pos.start = false;\n _pos.moving = false;\n }\n }, {\n key: 'onTouchMove',\n value: function onTouchMove(e) {\n console.log('onTouchMove');\n var _pos = this._pos,\n config = this.config;\n\n var touch = getTouch(e.touches);\n var x = touch ? parseInt(touch.pageX, 10) : e.pageX;\n var y = touch ? parseInt(touch.pageY, 10) : e.pageX;\n var diffx = x - _pos.x;\n var diffy = y - _pos.y;\n // console.log(`diffx: ${diffx} diffy:${diffy}`)\n if (Math.abs(diffy) < config.miniStep && Math.abs(diffx) < config.miniStep) {\n return;\n }\n this.__clearPress();\n _pos.press && this.trigger(EVENTS.PRESS_END, e);\n _pos.press = false;\n _pos.moving = true;\n this.trigger(EVENTS.TOUCH_MOVE, e);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this4 = this;\n\n var map = {\n touchend: 'onTouchEnd',\n touchmove: 'onTouchMove',\n touchstart: 'onTouchStart'\n };\n Object.keys(map).map(function (key) {\n _this4.root.removeEventListener('touchend', _this4[map[key]]);\n });\n }\n }]);\n\n return Touche;\n}();\n\nexport default Touche;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Events, Util, Sniffer } from '../../plugin';\nimport Touche from './touch';\nvar SeekTipIcon = '';\n// import BackSvg from './back.svg'\n\nvar ACTIONS = {\n AUTO: 'auto',\n SEEKING: 'seeking',\n PLAYBACK: 'playbackrate',\n LIGHT: ''\n};\n\nvar MobilePlugin = function (_Plugin) {\n _inherits(MobilePlugin, _Plugin);\n\n _createClass(MobilePlugin, null, [{\n key: 'pluginName',\n get: function get() {\n return 'mobile';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n stopPropagation: true, // 是否阻止冒泡\n index: 0,\n disableGesture: false, // 是否禁用手势\n gestureX: true, // 是否启用水平手势\n gestureY: true, // 是否启用垂直手势\n updateGesture: function updateGesture() {}, // 手势处理回调\n onTouchStart: function onTouchStart() {}, // 手势开始移动回调\n onTouchEnd: function onTouchEnd() {}, // 手势移动结束回调\n gradient: 'normal', // 是否启用阴影\n isTouchingSeek: false, // 是否在touchMove的同时更新currentTime\n miniMoveStep: 5, // 最小差异,用于move节流\n miniYPer: 5, // y方向最小位移百分比\n scopeL: 0.25, // 左侧手势范围比例\n scopeR: 0.25, // 右侧手势范围比例\n scopeM: 0.9, // 中间手势范围比例\n pressRate: 2, // 长按快进倍速\n darkness: true, // 是否启用右侧调暗功能\n maxDarkness: 0.8, // 调暗最大暗度,即蒙层最大透明度\n disableActive: false, // 是否禁用时间面板\n disableTimeProgress: false, // 是否禁用时间进度条\n hideControlsActive: false, // 手势拖动的时候是否隐控制栏\n hideControlsEnd: false, // 手势结束的时候隐控制栏\n moveDuration: 60 * 6 * 1000, // 视频区对应的时长\n closedbClick: false, // 是否关闭双击手势\n disablePress: true, // 是否关闭长按手势\n disableSeekIcon: false // 禁用seek按钮\n };\n }\n }]);\n\n function MobilePlugin(options) {\n _classCallCheck(this, MobilePlugin);\n\n var _this = _possibleConstructorReturn(this, (MobilePlugin.__proto__ || Object.getPrototypeOf(MobilePlugin)).call(this, options));\n\n _this.onTouchStart = function (e) {\n var player = _this.player,\n config = _this.config,\n pos = _this.pos,\n playerConfig = _this.playerConfig;\n\n var touche = _this.getTouche(e);\n if (touche && !config.disableGesture && _this.duration > 0 && !player.ended) {\n pos.isStart = true;\n // e.cancelable && e.preventDefault()\n Util.checkIsFunction(playerConfig.disableSwipeHandler) && playerConfig.disableSwipeHandler();\n _this.find('.xg-dur').innerHTML = Util.format(_this.duration);\n // pos.volume = player.volume * 100\n var rect = _this.root.getBoundingClientRect();\n if (player.rotateDeg === 90) {\n pos.top = rect.left;\n pos.left = rect.top;\n pos.width = rect.height;\n pos.height = rect.width;\n } else {\n pos.top = rect.top;\n pos.left = rect.left;\n pos.width = rect.width;\n pos.height = rect.height;\n }\n pos.x = parseInt(touche.pageX - pos.left, 10);\n pos.y = parseInt(touche.pageY - pos.top, 10);\n pos.scopeL = config.scopeL * pos.width;\n pos.scopeR = (1 - config.scopeR) * pos.width;\n pos.scopeM1 = pos.width * (1 - config.scopeM) / 2;\n pos.scopeM2 = pos.width - pos.scopeM1;\n }\n };\n\n _this.onTouchMove = function (e) {\n var touche = _this.getTouche(e);\n var pos = _this.pos,\n config = _this.config,\n player = _this.player;\n\n if (!touche || config.disableGesture || !_this.duration || !pos.isStart) {\n return;\n }\n var miniMoveStep = config.miniMoveStep,\n hideControlsActive = config.hideControlsActive;\n\n var x = parseInt(touche.pageX - pos.left, 10);\n var y = parseInt(touche.pageY - pos.top, 10);\n if (Math.abs(x - pos.x) > miniMoveStep || Math.abs(y - pos.y) > miniMoveStep) {\n var diffx = x - pos.x;\n var diffy = y - pos.y;\n var scope = pos.scope;\n if (scope === -1) {\n scope = _this.checkScope(x, y, diffx, diffy, pos);\n // 手势为快进快退记录起始操作时间\n if (scope === 0) {\n !hideControlsActive ? player.emit(Events.PLAYER_FOCUS, { autoHide: false }) : player.emit(Events.PLAYER_BLUR);\n !pos.time && (pos.time = parseInt(player.currentTime * 1000, 10) + _this.timeOffset * 1000);\n }\n pos.scope = scope;\n }\n if (scope === -1 || scope > 0 && !config.gestureY || scope === 0 && !config.gestureX) {\n return;\n }\n e.cancelable && e.preventDefault();\n _this.executeMove(diffx, diffy, scope, pos.width, pos.height);\n pos.x = x;\n pos.y = y;\n } else {\n // console.log('touche.pageX - pos.x', touche.pageX - pos.x)\n }\n };\n\n _this.onTouchEnd = function (e) {\n var player = _this.player,\n pos = _this.pos,\n playerConfig = _this.playerConfig;\n\n if (!pos.isStart) {\n return;\n }\n if (pos.scope > -1) {\n e.cancelable && e.preventDefault();\n }\n _this.endLastMove(pos.scope);\n setTimeout(function () {\n player.getPlugin('progress') && player.getPlugin('progress').resetSeekState();\n }, 10);\n pos.scope = -1;\n _this.resetPos();\n Util.checkIsFunction(playerConfig.enableSwipeHandler) && playerConfig.enableSwipeHandler();\n _this.changeAction(ACTIONS.AUTO);\n };\n\n _this.onRootTouchMove = function (e) {\n if (_this.config.disableGesture || !_this.config.gestureX) {\n return;\n }\n if (_this.checkIsRootTarget(e)) {\n e.stopPropagation();\n if (!_this.pos.isStart) {\n _this.onTouchStart(e);\n } else {\n _this.onTouchMove(e);\n }\n }\n };\n\n _this.onRootTouchEnd = function (e) {\n if (_this.pos.isStart && _this.checkIsRootTarget(e)) {\n e.stopPropagation();\n _this.onTouchEnd(e);\n var controls = _this.player.controls;\n\n controls && controls.recoverAutoHide();\n }\n };\n\n _this.pos = {\n isStart: false,\n x: 0,\n y: 0,\n time: 0,\n volume: 0,\n rate: 1,\n light: 0,\n width: 0,\n height: 0,\n scopeL: 0,\n scopeR: 0,\n scopeM1: 0,\n scopeM2: 0,\n scope: -1\n };\n _this.timer = null;\n return _this;\n }\n\n _createClass(MobilePlugin, [{\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n seekTipIcon: { icon: SeekTipIcon, class: 'xg-seek-pre' }\n };\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n var playerConfig = this.playerConfig,\n config = this.config,\n player = this.player;\n\n if (playerConfig.closeVideoDblclick === true) {\n config.closedbClick = true;\n }\n this.resetPos();\n if (!Util.isUndefined(playerConfig.disableGesture)) {\n config.disableGesture = !!playerConfig.disableGesture;\n }\n this.appendChild('.xg-seek-icon', this.icons.seekTipIcon);\n\n this.xgMask = Util.createDom('xg-mask', '', {}, 'xgmask');\n player.root.appendChild(this.xgMask);\n\n this.initCustomStyle();\n\n this.registerThumbnail();\n\n var eventType = Sniffer.device !== 'mobile' ? 'mouse' : 'touch';\n this.touch = new Touche(this.root, { eventType: eventType });\n\n this.root.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n\n player.root.addEventListener('touchmove', this.onRootTouchMove, true);\n player.root.addEventListener('touchend', this.onRootTouchEnd, true);\n\n this.on(Events.DURATION_CHANGE, function () {\n var player = _this2.player,\n config = _this2.config;\n\n if (player.duration * 1000 < config.moveDuration) {\n config.moveDuration = player.duration * 1000;\n }\n });\n\n this.on([Events.CANPLAY, Events.ENDED], function () {\n var _pos = _this2.pos,\n time = _pos.time,\n isStart = _pos.isStart;\n\n if (!isStart && time > 0) {\n _this2.pos.time = 0;\n }\n });\n\n var eventsMap = {\n 'touchstart': 'onTouchStart',\n 'touchmove': 'onTouchMove',\n 'touchend': 'onTouchEnd',\n 'press': 'onPress',\n 'pressend': 'onPressEnd',\n 'click': 'onClick',\n 'doubleclick': 'onDbClick'\n };\n\n Object.keys(eventsMap).map(function (key) {\n _this2.touch.on(key, function (e) {\n _this2[eventsMap[key]](e);\n });\n });\n\n if (!config.disableActive) {\n // 添加进度条拖拽事件回调\n var progressPlugin = player.plugins.progress;\n if (progressPlugin) {\n progressPlugin.addCallBack('dragmove', function (data) {\n _this2.activeSeekNote(data.currentTime, data.forward);\n });\n progressPlugin.addCallBack('dragend', function () {\n _this2.changeAction(ACTIONS.AUTO);\n });\n }\n }\n }\n }, {\n key: 'registerThumbnail',\n value: function registerThumbnail() {\n var player = this.player;\n var thumbnail = player.plugins.thumbnail;\n\n if (thumbnail && thumbnail.usable) {\n this.thumbnail = thumbnail.createThumbnail(null, 'mobile-thumbnail');\n var timePreview = this.find('.time-preview');\n timePreview.insertBefore(this.thumbnail, timePreview.children[0]);\n }\n }\n }, {\n key: 'initCustomStyle',\n value: function initCustomStyle() {\n var _ref = this.playerConfig || {},\n commonStyle = _ref.commonStyle;\n\n var playedColor = commonStyle.playedColor,\n progressColor = commonStyle.progressColor;\n\n if (playedColor) {\n this.find('.xg-curbar').style.backgroundColor = playedColor;\n this.find('.xg-cur').style.color = playedColor;\n }\n if (progressColor) {\n this.find('.xg-bar').style.backgroundColor = progressColor;\n this.find('.time-preview').style.color = progressColor;\n }\n this.config.disableTimeProgress && Util.addClass(this.find('.xg-timebar'), 'hide');\n }\n }, {\n key: 'resetPos',\n value: function resetPos() {\n var _this3 = this;\n\n var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n if (this.pos) {\n this.pos.isStart = false;\n this.pos.scope = -1;\n ['x', 'y', 'width', 'height', 'scopeL', 'scopeR', 'scopeM1', 'scopeM2'].map(function (item) {\n _this3.pos[item] = 0;\n });\n } else {\n this.pos = {\n isStart: false,\n x: 0,\n y: 0,\n volume: 0,\n rate: 1,\n light: 0,\n width: 0,\n height: 0,\n scopeL: 0,\n scopeR: 0,\n scopeM1: 0,\n scopeM2: 0,\n scope: -1,\n time: 0\n };\n }\n }\n }, {\n key: 'changeAction',\n value: function changeAction(action) {\n var player = this.player,\n root = this.root;\n\n root.setAttribute('data-xg-action', action);\n var startPlugin = player.plugins.start;\n startPlugin && startPlugin.recover();\n }\n }, {\n key: 'getTouche',\n value: function getTouche(e) {\n var rotateDeg = this.player.rotateDeg;\n var touche = e.touches && e.touches.length > 0 ? e.touches[e.touches.length - 1] : e;\n // if (touches && touches.length > 0) {\n // const touche = touches[touches.length - 1]\n // if (rotateDeg === 0) {\n // return {\n // pageX: touche.pageX,\n // pageY: touche.pageY\n // }\n // } else {\n // return {\n // pageX: touche.pageY,\n // pageY: touche.pageX\n // }\n // }\n // } else {\n // }\n return rotateDeg === 0 ? {\n pageX: touche.pageX,\n pageY: touche.pageY\n } : {\n pageX: touche.pageX,\n pageY: touche.pageY\n };\n }\n /**\n * 校验具体的操作范围\n * @param {number} x 方向位移\n * @param {number} y 方向位移\n * @param {number} diffx 方向位移差\n * @param {number} diffy 方向位移差\n * @param {Object} pos 当前操作区域位置信息 包含{width, height}\n * @return {number} scope 区域 0=>中间x方向滑动 1=>左侧上下滑动 2=>右侧上下滑动\n */\n\n }, {\n key: 'checkScope',\n value: function checkScope(x, y, diffx, diffy, pos) {\n var width = pos.width;\n\n var scope = -1;\n if (x < 0 || x > width) {\n return scope;\n }\n\n var mold = diffy === 0 ? Math.abs(diffx) : Math.abs(diffx / diffy);\n if (Math.abs(diffx) > 0 && mold >= 1.73 && x > pos.scopeM1 && x < pos.scopeM2) {\n scope = 0;\n } else if (Math.abs(diffx) === 0 || mold <= 0.57) {\n scope = x < pos.scopeL ? 1 : x > pos.scopeR ? 2 : 3;\n }\n return scope;\n }\n\n /**\n * 根据位移和操作类型进行对应处理\n * @param {number} diffx x方向位移差\n * @param {number} diffy y方向位移差\n * @param {number} scope scope 区域 0=>中间x方向滑动 1=>左侧上下滑动 2=>右侧上下滑动\n * @param {number} width 总体宽度\n * @param {number} height 总高度\n */\n\n }, {\n key: 'executeMove',\n value: function executeMove(diffx, diffy, scope, width, height) {\n switch (scope) {\n case 0:\n this.updateTime(diffx / width * this.config.scopeM);\n break;\n case 1:\n this.updateBrightness(diffy / height);\n break;\n case 2:\n // ios系统不支持音量调节\n if (!Sniffer.os.isIos) {\n this.updateVolume(diffy / height);\n }\n break;\n default:\n }\n }\n\n /**\n * 结束手势操作\n * @param {number} scope 当前手势类型 区域 0=>中间x方向滑动 1=>左侧上下滑动 2=>右侧上下滑动\n * @param {number} lastScope 上一次手势类型\n */\n\n }, {\n key: 'endLastMove',\n value: function endLastMove(lastScope) {\n var _this4 = this;\n\n var pos = this.pos,\n player = this.player,\n config = this.config;\n\n switch (lastScope) {\n case 0:\n var time = (pos.time - this.timeOffset) / 1000;\n player.seek(Number(time).toFixed(1));\n config.hideControlsEnd ? player.emit(Events.PLAYER_BLUR) : player.emit(Events.PLAYER_FOCUS);\n this.timer = setTimeout(function () {\n _this4.pos.time = 0;\n }, 500);\n break;\n case 1:\n case 2:\n default:\n }\n this.changeAction(ACTIONS.AUTO);\n }\n }, {\n key: 'checkIsRootTarget',\n value: function checkIsRootTarget(e) {\n var plugins = this.player.plugins || {};\n if (plugins.progress && plugins.progress.root.contains(e.target)) {\n return false;\n }\n return plugins.start && plugins.start.root.contains(e.target) || plugins.controls && plugins.controls.root.contains(e.target);\n }\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var player = this.player,\n config = this.config,\n playerConfig = this.playerConfig;\n\n if (!player.isPlaying) {\n !playerConfig.closeVideoClick && player.play();\n return;\n }\n\n if (!config.closedbClick || playerConfig.closeVideoClick) {\n player.isActive ? player.emit(Events.PLAYER_BLUR) : player.emit(Events.PLAYER_FOCUS);\n } else if (!playerConfig.closeVideoClick) {\n player.isActive && this.switchPlayPause();\n player.emit(Events.PLAYER_FOCUS);\n }\n }\n }, {\n key: 'onDbClick',\n value: function onDbClick(e) {\n var config = this.config,\n player = this.player;\n\n if (!config.closedbClick && player.isPlaying) {\n this.switchPlayPause();\n }\n }\n }, {\n key: 'onPress',\n value: function onPress(e) {\n var pos = this.pos,\n config = this.config,\n player = this.player;\n\n if (config.disablePress) {\n return;\n }\n pos.rate = this.player.playbackRate;\n player.playbackRate = config.pressRate;\n this.changeAction(ACTIONS.PLAYBACK);\n }\n }, {\n key: 'onPressEnd',\n value: function onPressEnd(e) {\n var pos = this.pos,\n config = this.config,\n player = this.player;\n\n if (config.disablePress) {\n return;\n }\n player.playbackRate = pos.rate;\n pos.rate = 1;\n this.changeAction(ACTIONS.AUTO);\n }\n }, {\n key: 'updateTime',\n value: function updateTime(percent) {\n var player = this.player,\n config = this.config;\n var duration = this.player.duration;\n\n percent = Number(percent.toFixed(4));\n var time = parseInt(percent * config.moveDuration, 10) + this.timeOffset;\n time += this.pos.time;\n time = time < 0 ? 0 : time > duration * 1000 ? duration * 1000 - 200 : time;\n player.getPlugin('time') && player.getPlugin('time').updateTime(time / 1000);\n player.getPlugin('progress') && player.getPlugin('progress').updatePercent(time / 1000 / this.duration, true);\n this.activeSeekNote(time / 1000, percent > 0);\n // 在滑动的同时实时seek\n if (config.isTouchingSeek) {\n // player.currentTime = time / 1000\n player.seek(Number((time - this.timeOffset) / 1000).toFixed(1));\n }\n this.pos.time = time;\n }\n }, {\n key: 'updateVolume',\n value: function updateVolume(percent) {\n if (this.player.rotateDeg) {\n percent = -percent;\n }\n var player = this.player,\n pos = this.pos;\n\n percent = parseInt(percent * 100, 10);\n pos.volume += percent;\n if (Math.abs(pos.volume) < 10) {\n return;\n }\n var volume = parseInt(player.volume * 10, 10) - parseInt(pos.volume / 10, 10);\n volume = volume > 10 ? 10 : volume < 1 ? 0 : volume;\n player.volume = volume / 10;\n pos.volume = 0;\n }\n }, {\n key: 'updateBrightness',\n value: function updateBrightness(percent) {\n if (this.player.rotateDeg) {\n percent = -percent;\n }\n var pos = this.pos,\n config = this.config,\n xgMask = this.xgMask;\n\n var light = pos.light + 0.8 * percent;\n light = light > config.maxDarkness ? config.maxDarkness : light < 0 ? 0 : light;\n if (xgMask) {\n xgMask.style.backgroundColor = 'rgba(0,0,0,' + light + ')';\n }\n pos.light = light;\n }\n }, {\n key: 'activeSeekNote',\n value: function activeSeekNote(time) {\n var isForward = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var player = this.player,\n config = this.config;\n\n var isLive = !(this.duration !== Infinity && this.duration > 0);\n if (!time || typeof time !== 'number' || isLive || config.disableActive) {\n return;\n }\n if (time < 0) {\n time = 0;\n } else if (time > player.duration) {\n time = player.duration - 0.2;\n }\n this.changeAction(ACTIONS.SEEKING);\n\n var startPlugin = player.plugins.start;\n startPlugin && startPlugin.focusHide();\n\n this.find('.xg-dur').innerHTML = Util.format(this.duration);\n this.find('.xg-cur').innerHTML = Util.format(time);\n this.find('.xg-curbar').style.width = time / this.duration * 100 + '%';\n if (isForward) {\n Util.removeClass(this.find('.xg-seek-show'), 'xg-back');\n } else {\n Util.addClass(this.find('.xg-seek-show'), 'xg-back');\n }\n this.updateThumbnails(time);\n // const {thumbnail} = player.plugins\n // this.thumbnailPlugin && thumbnail.update(time)\n }\n }, {\n key: 'updateThumbnails',\n value: function updateThumbnails(time) {\n var player = this.player;\n var thumbnail = player.plugins.thumbnail;\n\n if (thumbnail && thumbnail.usable) {\n this.thumbnail && thumbnail.update(this.thumbnail, time, 160, 90);\n // this.videothumbnail && thumbnail.update(this.videothumbnail, time, rect.width, rect.height)\n }\n }\n }, {\n key: 'switchPlayPause',\n value: function switchPlayPause() {\n var player = this.player;\n\n if (!player.hasStart) {\n return false;\n } else if (!player.ended) {\n if (player.paused) {\n player.play();\n } else {\n player.pause();\n }\n }\n }\n\n // 动态禁用手势\n\n }, {\n key: 'disableGesture',\n value: function disableGesture() {\n this.config.disableGesture = false;\n }\n\n // 动态启用手势\n\n }, {\n key: 'enableGesture',\n value: function enableGesture() {\n this.config.disableGesture = true;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var player = this.player;\n\n this.timer && clearTimeout(this.timer);\n this.thumbnail = null;\n player.root.removeChild(this.xgMask);\n this.xgMask = null;\n this.touch && this.touch.destroy();\n this.touch = null;\n player.root.removeEventListener('touchmove', this.onRootTouchMove, true);\n player.root.removeEventListener('touchend', this.onRootTouchEnd, true);\n }\n }, {\n key: 'render',\n value: function render() {\n var className = this.config.gradient !== 'normal' ? 'gradient ' + this.config.gradient : 'gradient';\n return '\\n \\n
\\n
\\n
\\n \\n 00:00\\n /\\n 00:00\\n
\\n
\\n
\\n
\\n
\\n
\\n ' + this.config.pressRate + 'X\\u5FEB\\u8FDB\\u4E2D\\n
\\n
\\n ';\n }\n }, {\n key: 'duration',\n get: function get() {\n return this.playerConfig.customDuration || this.player.duration;\n }\n }, {\n key: 'timeOffset',\n get: function get() {\n return this.playerConfig.timeOffset || 0;\n }\n }]);\n\n return MobilePlugin;\n}(Plugin);\n\nexport default MobilePlugin;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { BasePlugin } from '../../plugin';\n\nvar Keyboard = function (_BasePlugin) {\n _inherits(Keyboard, _BasePlugin);\n\n function Keyboard() {\n _classCallCheck(this, Keyboard);\n\n return _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).apply(this, arguments));\n }\n\n _createClass(Keyboard, [{\n key: 'mergekeyCodeMap',\n value: function mergekeyCodeMap() {\n var _this2 = this;\n\n var extendkeyCodeMap = this.config.keyCodeMap;\n if (extendkeyCodeMap) {\n Object.keys(extendkeyCodeMap).map(function (key) {\n if (!_this2.keyCodeMap[key]) {\n _this2.keyCodeMap[key] = extendkeyCodeMap[key];\n } else {\n ['keyCode', 'action', 'disable', 'isBodyTarget'].map(function (key1) {\n extendkeyCodeMap[key][key1] && (_this2.keyCodeMap[key][key1] = extendkeyCodeMap[key][key1]);\n });\n }\n });\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n this.config.disable = !this.playerConfig.keyShortcut;\n var seekStep = typeof this.config.seekStep === 'function' ? this.config.seekStep(this.player) : this.config.seekStep;\n if (!(!seekStep || typeof seekStep !== 'number')) {\n this.seekStep = seekStep;\n }\n this.keyCodeMap = {\n 'space': {\n keyCode: 32,\n action: 'playPause',\n disable: false,\n noBodyTarget: false // 默认在body上触发\n },\n 'up': {\n keyCode: 38,\n action: 'upVolume',\n disable: false,\n noBodyTarget: true // 默认不在body上触发\n },\n 'down': {\n keyCode: 40,\n action: 'downVolume',\n disable: false,\n noBodyTarget: true\n },\n 'left': {\n keyCode: 37,\n action: 'seekBack',\n disable: false\n },\n 'right': {\n keyCode: 39,\n action: 'seek',\n disable: false\n },\n 'esc': {\n keyCode: 27,\n action: 'exitFullscreen',\n disable: false\n }\n };\n this.mergekeyCodeMap();\n this.onKeydown = this.onKeydown.bind(this);\n this.onBodyKeyDown = this.onBodyKeyDown.bind(this);\n this.player.root.addEventListener('keydown', this.onKeydown);\n document.addEventListener('keydown', this.onBodyKeyDown);\n }\n }, {\n key: 'checkIsVisible',\n value: function checkIsVisible() {\n var rec = this.player.root.getBoundingClientRect();\n var height = rec.height,\n top = rec.top,\n bottom = rec.bottom;\n\n var h = window.innerHeight;\n if (top < 0 && top < 0 - height / 10 || bottom > 0 && bottom - h > height / 100) {\n return false;\n }\n return true;\n }\n }, {\n key: 'checkCode',\n value: function checkCode(code, isBodyTarget) {\n var _this3 = this;\n\n var flag = false;\n Object.keys(this.keyCodeMap).map(function (key) {\n if (_this3.keyCodeMap[key] && code === _this3.keyCodeMap[key].keyCode) {\n flag = !isBodyTarget || isBodyTarget && !_this3.keyCodeMap[key].noBodyTarget;\n }\n });\n return flag;\n }\n }, {\n key: 'downVolume',\n value: function downVolume() {\n var player = this.player;\n\n if (player.volume - 0.1 >= 0) {\n player.volume = parseFloat((player.volume - 0.1).toFixed(1));\n } else {\n player.volume = 0;\n }\n }\n }, {\n key: 'upVolume',\n value: function upVolume() {\n var player = this.player;\n\n if (player.volume + 0.1 <= 1) {\n player.volume = parseFloat((player.volume + 0.1).toFixed(1));\n } else {\n player.volume = 1;\n }\n }\n }, {\n key: 'seek',\n value: function seek() {\n var player = this.player;\n\n if (player.currentTime + this.seekStep <= player.duration) {\n player.currentTime += this.seekStep;\n } else {\n player.currentTime = player.duration - 1;\n }\n }\n }, {\n key: 'seekBack',\n value: function seekBack() {\n var player = this.player;\n\n if (player.currentTime - this.seekStep >= 0) {\n player.currentTime -= this.seekStep;\n } else {\n player.currentTime = 0;\n }\n }\n }, {\n key: 'playPause',\n value: function playPause() {\n var player = this.player;\n\n if (player.paused) {\n // eslint-disable-next-line handle-callback-err\n player.play();\n } else {\n player.pause();\n }\n }\n }, {\n key: 'exitFullscreen',\n value: function exitFullscreen() {\n var player = this.player;\n\n if (player.fullscreen) {\n player.exitFullscreen();\n }\n if (player.isCssfullScreen) {\n player.exitCssFullscreen();\n }\n }\n\n // TODO: 多播放器实例存在的情况下,body下的快捷键会触发所有实例的逻辑,需改进\n\n }, {\n key: 'onBodyKeyDown',\n value: function onBodyKeyDown(event) {\n if (this.config.disable || !this.checkIsVisible()) {\n return;\n }\n var e = event || window.event;\n var keyCode = e.keyCode;\n if (e.target === document.body && this.checkCode(keyCode, true)) {\n e.preventDefault();\n e.cancelBubble = true;\n e.returnValue = false;\n this.handleKeyCode(keyCode);\n return false;\n }\n return false;\n }\n }, {\n key: 'onKeydown',\n value: function onKeydown(event) {\n if (this.config.disable) {\n return;\n }\n var player = this.player;\n var e = event || window.event;\n if (e && (e.keyCode === 37 || this.checkCode(e.keyCode)) && (e.target === this.player.root || e.target === this.player.video || e.target === this.player.controls.el)) {\n player.emit('focus');\n e.preventDefault();\n e.cancelBubble = true;\n e.returnValue = false;\n } else {\n return true;\n }\n this.handleKeyCode(e.keyCode);\n }\n }, {\n key: 'handleKeyCode',\n value: function handleKeyCode(keyCode) {\n var _this4 = this;\n\n var player = this.player;\n\n if (keyCode === 40 || keyCode === 38) {\n if (player.controls) {\n // let volumeSlider = player.controls.querySelector('.xgplayer-slider')\n // if (volumeSlider) {\n // if (Util.hasClass(volumeSlider, 'xgplayer-none')) {\n // Util.removeClass(volumeSlider, 'xgplayer-none')\n // }\n // if (player.sliderTimer) {\n // clearTimeout(player.sliderTimer)\n // }\n // player.sliderTimer = setTimeout(function () {\n // Util.addClass(volumeSlider, 'xgplayer-none')\n // }, player.config.inactive)\n // }\n }\n }\n Object.keys(this.keyCodeMap).map(function (key) {\n if (_this4.keyCodeMap[key].keyCode === keyCode && !_this4.keyCodeMap[key].disable) {\n if (typeof _this4.keyCodeMap[key].action === 'function') {\n _this4.keyCodeMap[key].action();\n } else if (typeof _this4.keyCodeMap[key].action === 'string') {\n var funKey = _this4.keyCodeMap[key].action;\n if (typeof _this4[funKey] === 'function') {\n _this4[funKey]();\n }\n }\n }\n });\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.player.root.removeEventListener('keydown', this.onKeydown);\n document.removeEventListener('keydown', this.onBodyKeyDown);\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'keyboard';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n seekStep: 10,\n keyCodeMap: {},\n disable: false\n };\n }\n }]);\n\n return Keyboard;\n}(BasePlugin);\n\nexport default Keyboard;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { POSITIONS } from '../../plugin/plugin';\nvar loadingIcon = '';\n\nvar Loading = function (_Plugin) {\n _inherits(Loading, _Plugin);\n\n function Loading() {\n _classCallCheck(this, Loading);\n\n return _possibleConstructorReturn(this, (Loading.__proto__ || Object.getPrototypeOf(Loading)).apply(this, arguments));\n }\n\n _createClass(Loading, [{\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n 'loadingIcon': loadingIcon\n };\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n this.appendChild(this.icons.loadingIcon);\n }\n }, {\n key: 'render',\n value: function render() {\n return '\\n \\n ';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'loading';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.ROOT\n };\n }\n }]);\n\n return Loading;\n}(Plugin);\n\nexport default Loading;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport { Util } from '../../plugin';\n\nvar TPL = [{ tag: 'xg-cache', className: 'xgplayer-progress-cache', styleKey: 'cachedColor' }, { tag: 'xg-played', className: 'xgplayer-progress-played', styleKey: 'playedColor' }];\n\nvar InnerList = function () {\n function InnerList(args) {\n _classCallCheck(this, InnerList);\n\n this.fragments = args.fragments || [];\n this.focusClass = 'inner-focus';\n this.style = args.style || {\n playedColor: '',\n cachedColor: '',\n progressColor: ''\n };\n this.duration = 0;\n this.cachedIndex = 0;\n this.playedIndex = 0;\n }\n\n _createClass(InnerList, [{\n key: 'updateDuration',\n value: function updateDuration(duration) {\n var _this = this;\n\n this.duration = parseInt(duration * 1000);\n var start = 0;\n var fragments = this.fragments;\n\n this.fragments = fragments.map(function (item) {\n item.start = start;\n item.end = start + item.percent * _this.duration;\n item.duration = item.percent * _this.duration;\n start += item.percent * _this.duration;\n return item;\n });\n }\n }, {\n key: 'updateProgress',\n value: function updateProgress() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'played';\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { newIndex: 0, curIndex: 0, millisecond: 0 };\n var progressList = this.progressList,\n fragments = this.fragments;\n var newIndex = data.newIndex,\n curIndex = data.curIndex,\n millisecond = data.millisecond;\n\n if (newIndex !== curIndex) {\n progressList.map(function (item, index) {\n if (index < newIndex) {\n item[type].style.width = '100%';\n } else if (index > newIndex) {\n item[type].style.width = 0;\n }\n });\n }\n var curPFrag = fragments[newIndex];\n var per = (millisecond - curPFrag.start) / curPFrag.duration;\n progressList[newIndex][type].style.width = per < 0 ? 0 : per * 100 + '%';\n }\n }, {\n key: 'update',\n value: function update() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { cached: 0, played: 0 };\n var duration = arguments[1];\n\n if (!this.duration || parseInt(duration * 1000, 10) !== this.duration) {\n if (!duration) {\n return;\n }\n this.updateDuration(duration);\n }\n\n var playedIndex = this.playedIndex,\n cachedIndex = this.cachedIndex;\n\n if (data.played) {\n var newPIndex = this.findIndex(data.played * 1000, playedIndex);\n this.updateProgress('played', {\n newIndex: newPIndex,\n curIndex: playedIndex,\n millisecond: parseInt(data.played * 1000, 10) });\n this.playedIndex = newPIndex;\n }\n\n if (data.cached) {\n var newCIndex = this.findIndex(data.cached * 1000, cachedIndex);\n this.updateProgress('cached', {\n newIndex: newCIndex,\n curIndex: cachedIndex,\n millisecond: parseInt(data.cached * 1000, 10) });\n this.cachedIndex = newCIndex;\n }\n }\n }, {\n key: 'findIndex',\n value: function findIndex(time, curIndex) {\n var fragments = this.fragments;\n\n if (fragments.length === 1) {\n return 0;\n }\n if (time > fragments[curIndex].start && time < fragments[curIndex].end) {\n return curIndex;\n }\n this.fragments.map(function (item, index) {\n if (time > item.start && time <= item.end) {\n curIndex = index;\n }\n });\n return curIndex;\n }\n }, {\n key: 'findHightLight',\n value: function findHightLight() {\n var children = this.root.children;\n for (var i = 0; i < children.length; i++) {\n if (Util.hasClass(children[i], this.focusClass)) {\n return {\n dom: children[i],\n pos: children[i].getBoundingClientRect()\n };\n }\n }\n }\n\n // 根据索引获取进度条片段\n\n }, {\n key: 'findFragment',\n value: function findFragment(index) {\n var children = this.root.children;\n if (index < 0 || index >= children.length) {\n return null;\n }\n return {\n dom: children[index],\n pos: children[index].getBoundingClientRect()\n };\n }\n }, {\n key: 'unHightLight',\n value: function unHightLight() {\n var children = this.root.children;\n for (var i = 0; i < children.length; i++) {\n Util.removeClass(children[i], this.focusClass);\n }\n }\n }, {\n key: 'setHightLight',\n value: function setHightLight(index) {\n var children = this.root.children;\n if (index < children.length) {\n Util.addClass(children[index], this.focusClass);\n return {\n dom: children[index],\n pos: children[index].getBoundingClientRect()\n };\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.progressList = null;\n this.fragments = null;\n this.root.innerHTML = '';\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var progressColor = this.style.progressColor;\n\n this.root = Util.createDom('xg-inners', '', {}, 'progress-list');\n if (this.fragments) {\n this.progressList = this.fragments.map(function (item) {\n var inner = Util.createDom('xg-inner', '', {\n style: progressColor ? 'background:' + progressColor + '; flex: ' + item.percent : 'flex: ' + item.percent\n }, (item.isFocus ? 'inner-focus' : '') + ' xgplayer-progress-inner');\n\n _this2.root.appendChild(inner);\n\n TPL.map(function (item) {\n inner.appendChild(Util.createDom(item.tag, '', {\n style: item.styleKey ? 'background: ' + _this2.style[item.styleKey] + '; width:0;' : 'width:0;'\n }, item.className));\n });\n\n return {\n cached: inner.children[0],\n played: inner.children[1]\n };\n });\n }\n return this.root;\n }\n }]);\n\n return InnerList;\n}();\n\nexport default InnerList;","var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Events, Util, POSITIONS, Sniffer } from '../../plugin';\nimport InnerList from './innerList';\n\n/**\n * 进度条组件\n */\n\nvar Progress = function (_Plugin) {\n _inherits(Progress, _Plugin);\n\n _createClass(Progress, null, [{\n key: 'pluginName',\n get: function get() {\n return 'progress';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_CENTER,\n index: 0,\n disable: false,\n isDragingSeek: true, // 是否在拖拽的过程中更新currentTime\n closeMoveSeek: false, // 是否关闭滑块seek能力\n isPauseMoving: false, // 是否在move的时候暂停视频内容\n isCloseClickSeek: false, // 是否关闭点击进度条的时候seek\n fragments: [{ percent: 1 }],\n miniMoveStep: 5,\n miniStartStep: 2,\n onMoveStart: function onMoveStart() {}, // 手势开始移动回调\n onMoveEnd: function onMoveEnd() {} // 手势移动结束回调\n };\n }\n }]);\n\n function Progress(args) {\n _classCallCheck(this, Progress);\n\n var _this = _possibleConstructorReturn(this, (Progress.__proto__ || Object.getPrototypeOf(Progress)).call(this, args));\n\n _this.onMoveOnly = function (e) {\n var pos = _this.pos,\n config = _this.config,\n player = _this.player;\n\n Util.event(e);\n var x = player.rotateDeg === 90 ? e.clientY : e.clientX;\n if (pos.moving && Math.abs(pos.x - x) < config.miniMoveStep) {\n return;\n }\n pos.moving = true;\n pos.x = x;\n var ret = _this.computeTime(e);\n _this.triggerCallbacks('dragmove', ret);\n };\n\n _this.onBodyClick = function (e) {\n e.preventDefault();\n e.stopPropagation();\n };\n\n _this.onMouseDown = function (e) {\n var player = _this.player,\n pos = _this.pos,\n config = _this.config,\n playerConfig = _this.playerConfig;\n\n var x = player.rotateDeg === 90 ? e.clientY : e.clientX;\n if (player.isMini || config.closeMoveSeek || !playerConfig.allowSeekAfterEnded && player.ended) {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n _this.focus();\n Util.checkIsFunction(playerConfig.disableSwipeHandler) && playerConfig.disableSwipeHandler();\n Util.checkIsFunction(config.onMoveStart) && config.onMoveStart();\n Util.event(e);\n pos.x = x;\n pos.isDown = true;\n pos.moving = false;\n\n // 交互开始 禁止控制栏的自动隐藏功能\n player.emit(Events.PLAYER_FOCUS, { autoHide: false });\n _this.isProgressMoving = true;\n Util.addClass(_this.progressBtn, 'active');\n\n var ret = _this.computeTime(e);\n _this._state.time = ret.currentTime;\n _this.updateWidth(ret.currentTime, ret.percent, 0);\n\n if (_this.isMobile) {\n _this.bind('touchmove', _this.onMouseMove);\n _this.bind('touchend', _this.onMouseUp);\n } else {\n _this.unbind('mousemove', _this.onMoveOnly);\n\n document.addEventListener('mousemove', _this.onMouseMove, false);\n document.addEventListener('mouseup', _this.onMouseUp, false);\n // 避免触发videoClick 暂停/播放切换\n player.root.addEventListener('click', _this.onBodyClick, false);\n // this.bind('mouseup', this.onMouseUp, false)\n }\n return true;\n };\n\n _this.onMouseUp = function (e) {\n var player = _this.player,\n config = _this.config,\n pos = _this.pos,\n playerConfig = _this.playerConfig,\n _state = _this._state;\n\n e.stopPropagation();\n e.preventDefault();\n Util.checkIsFunction(playerConfig.enableSwipeHandler) && playerConfig.enableSwipeHandler();\n Util.checkIsFunction(config.onMoveEnd) && config.onMoveEnd();\n Util.event(e);\n Util.removeClass(_this.progressBtn, 'active');\n\n var ret = _this.computeTime(e);\n if (pos.moving) {\n _this.updateWidth(ret.currentTime, ret.percent, 2);\n _this.triggerCallbacks('dragend', ret);\n } else {\n _this.updateWidth(ret.currentTime, ret.percent, 2);\n _this.triggerCallbacks('click', ret);\n }\n\n pos.moving = false;\n pos.isDown = false;\n pos.x = 0;\n pos.y = 0;\n _state.time = 0;\n if (_this.isMobile) {\n _this.unbind('touchmove', _this.onMouseMove);\n _this.unbind('touchend', _this.onMouseUp);\n // 交互结束 恢复控制栏的隐藏流程\n _this.blur();\n } else {\n document.removeEventListener('mousemove', _this.onMouseMove, false);\n document.removeEventListener('mouseup', _this.onMouseUp, false);\n player.root.removeEventListener('click', _this.onBodyClick, false);\n if (!pos.isEnter) {\n _this.onMouseLeave(e);\n } else {\n !playerConfig.isMobileSimulateMode && _this.bind('mousemove', _this.onMoveOnly);\n }\n }\n // 延迟复位,状态复位要在dom相关时间回调执行之后\n Util.setTimeout(_this, function () {\n console.log('this.resetSeekState');\n _this.resetSeekState();\n }, 10);\n // 交互结束 恢复控制栏的隐藏流程\n player.emit(Events.PLAYER_FOCUS);\n };\n\n _this.onMouseMove = function (e) {\n var pos = _this.pos,\n player = _this.player,\n config = _this.config,\n _state = _this._state;\n\n if (_this.isMobile) {\n e.stopPropagation();\n e.preventDefault();\n }\n Util.event(e);\n var x = player.rotateDeg === 90 ? e.clientY : e.clientX;\n var diff = Math.abs(pos.x - x);\n if (pos.moving && diff < config.miniMoveStep || !pos.moving && diff < config.miniStartStep) {\n return;\n }\n pos.x = x;\n var ret = _this.computeTime(e);\n if (_state.time < ret.currentTime) {\n ret.forward = true;\n } else {\n ret.forward = false;\n }\n _state.time = ret.currentTime;\n if (pos.isDown && !pos.moving) {\n pos.moving = true;\n config.isPauseMoving && player.pause();\n _this.triggerCallbacks('dragstart', ret);\n }\n _this.updateWidth(ret.currentTime, ret.percent, 1);\n _this.triggerCallbacks('dragmove', ret);\n };\n\n _this.onMouseEnter = function (e) {\n var player = _this.player,\n pos = _this.pos;\n\n if (pos.isDown || pos.isEnter || player.isMini || !player.config.allowSeekAfterEnded && player.ended) {\n return;\n }\n pos.isEnter = true;\n _this.bind('mousemove', _this.onMoveOnly);\n _this.bind('mouseleave', _this.onMouseLeave);\n _this.focus();\n };\n\n _this.onMouseLeave = function (e) {\n var player = _this.player,\n pos = _this.pos;\n\n pos.isEnter = false;\n if (player.isMini) {\n return;\n }\n _this.unbind('mousemove', _this.onMoveOnly);\n if (pos.isDown) {\n _this.unbind('mouseleave', _this.onMouseLeave);\n return;\n }\n _this.blur();\n };\n\n _this.useable = false;\n _this.isProgressMoving = false;\n _this.__dragCallBacks = [];\n _this._state = {\n now: -1,\n direc: 0,\n time: 0\n };\n return _this;\n }\n\n _createClass(Progress, [{\n key: 'changeState',\n value: function changeState() {\n var useable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n this.useable = useable;\n }\n }, {\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.progress === 'boolean') {\n args.config.disable = !args.player.config.progress;\n }\n }\n\n /**\n * @description 创建内部进度条,并挂载到xg-outer上,\n * 并把一些对外API绑定在progress上供外部调用\n *\n */\n\n }, {\n key: 'createInner',\n value: function createInner() {\n var _this2 = this;\n\n this.innerList = new InnerList({\n fragments: this.config.fragments,\n style: this.playerConfig.commonStyle || {}\n });\n this.outer.insertBefore(this.innerList.render(), this.outer.children[0]);\n ['findHightLight', 'unHightLight', 'setHightLight', 'findFragment'].map(function (item) {\n _this2[item] = _this2.innerList[item].bind(_this2.innerList);\n });\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this3 = this;\n\n if (this.config.disable) {\n return;\n }\n this.pos = {\n x: 0, // 水平方向位移\n y: 0, // 垂直方向位移\n moving: false, // 是否正在移动\n isDown: false, // 是否mouseDown\n isEnter: false // 是否触发了mouseEnter\n };\n this.outer = this.find('xg-outer');\n this.createInner();\n if (Sniffer.device === 'mobile') {\n this.config.isDragingSeek = false;\n this.isMobile = true;\n }\n\n this.progressBtn = this.find('.xgplayer-progress-btn');\n\n this.on(Events.TIME_UPDATE, function () {\n _this3.onTimeupdate();\n });\n\n this.on(Events.SEEKED, function () {\n _this3.onTimeupdate();\n _this3.onCacheUpdate();\n });\n\n this.on(Events.PROGRESS, function () {\n _this3.onCacheUpdate();\n });\n\n this.on(Events.ENDED, function () {\n _this3.onCacheUpdate();\n _this3._state.now = 0;\n });\n\n this.bindDomEvents();\n this.initCustomStyle();\n }\n }, {\n key: 'initCustomStyle',\n value: function initCustomStyle() {\n var _ref = this.playerConfig || {},\n commonStyle = _ref.commonStyle;\n\n var sliderBtnStyle = commonStyle.sliderBtnStyle;\n var progressBtn = this.progressBtn;\n\n if (sliderBtnStyle) {\n if (typeof sliderBtnStyle === 'string') {\n progressBtn.style.boxShadow = sliderBtnStyle;\n } else if ((typeof sliderBtnStyle === 'undefined' ? 'undefined' : _typeof(sliderBtnStyle)) === 'object') {\n Object.keys(sliderBtnStyle).map(function (key) {\n progressBtn.style[key] = sliderBtnStyle[key];\n });\n }\n }\n }\n\n /**\n * 触发某一类回调监听\n * @param {*} type 类型 drag/dragend\n * @param {Object} data 具体数据\n */\n\n }, {\n key: 'triggerCallbacks',\n value: function triggerCallbacks(type, data) {\n if (this.__dragCallBacks.length > 0) {\n this.__dragCallBacks.map(function (item) {\n if (item && item.handler && item.type === type) {\n try {\n item.handler(data);\n } catch (error) {\n console.error('[XGPLAYER][triggerCallbacks] ' + item + ' error', error);\n }\n }\n });\n }\n }\n\n /**\n * 供外部插件添加回调\n * @param {String} type 类型 drag/dragend\n * @param {Function} event 回调函数句柄\n */\n\n }, {\n key: 'addCallBack',\n value: function addCallBack(type, event) {\n if (event && typeof event === 'function') {\n this.__dragCallBacks.push({ type: type, handler: event });\n }\n }\n\n /**\n * 供外部插件移除回调\n * @param {String} type 类型 drag/dragend\n * @param {Function} event 回调函数句柄\n */\n\n }, {\n key: 'removeCallBack',\n value: function removeCallBack(type, event) {\n var __dragCallBacks = this.__dragCallBacks;\n\n var _index = -1;\n __dragCallBacks.map(function (item, index) {\n if (item && item.type === type && item.handler === event) {\n _index = index;\n }\n });\n if (_index > -1) {\n __dragCallBacks.splice(_index, 1);\n }\n }\n }, {\n key: 'bindDomEvents',\n value: function bindDomEvents() {\n var _player = this.player,\n controls = _player.controls,\n config = _player.config;\n\n if (this.isMobile) {\n this.bind('touchstart', this.onMouseDown);\n if (controls) {\n controls.root && controls.root.addEventListener('touchmove', Util.stopPropagation);\n controls.center && controls.center.addEventListener('touchend', Util.stopPropagation);\n }\n } else {\n this.bind('mousedown', this.onMouseDown);\n !config.isMobileSimulateMode && this.bind('mouseenter', this.onMouseEnter);\n }\n }\n }, {\n key: 'focus',\n value: function focus() {\n this.player.controls.pauseAutoHide();\n Util.addClass(this.root, 'active');\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.player.controls.recoverAutoHide();\n Util.removeClass(this.root, 'active');\n }\n }, {\n key: 'updateWidth',\n\n\n /**\n * @description 根据currenTime和占用百分比更新进度条\n * @param {Number} currentTime 需要更新到的时间\n * @param {Number} percent 更新时间占比\n * @param {Int} type 触发类型 0-down 1-move 2-up\n */\n value: function updateWidth(currentTime, percent, type) {\n var config = this.config,\n player = this.player;\n\n if (config.isCloseClickSeek && type === 0) {\n return;\n }\n var realTime = currentTime > player.duration ? player.duration - 0.2 : Number(currentTime).toFixed(1);\n // currentTime = currentTime > player.duration ? player.duration - 0.2 : Number(currentTime).toFixed(1)\n this.updatePercent(percent);\n this.updateTime(currentTime);\n if (type === 1 && (!config.isDragingSeek || player.videoConfig.mediaType === 'audio')) {\n return;\n }\n this._state.now = realTime;\n this._state.direc = realTime > player.currentTime ? 0 : 1;\n player.seek(realTime);\n }\n }, {\n key: 'computeTime',\n value: function computeTime(e) {\n var player = this.player;\n\n var _root$getBoundingClie = this.root.getBoundingClientRect(),\n width = _root$getBoundingClie.width,\n height = _root$getBoundingClie.height,\n top = _root$getBoundingClie.top,\n left = _root$getBoundingClie.left;\n\n var rWidth = void 0,\n rLeft = void 0,\n clientX = void 0;\n if (player.rotateDeg === 90) {\n rWidth = height;\n rLeft = top;\n clientX = e.clientY;\n } else {\n rWidth = width;\n rLeft = left;\n clientX = e.clientX;\n }\n var offset = clientX - rLeft;\n offset = offset > rWidth ? rWidth : offset < 0 ? 0 : offset;\n\n var percent = offset / rWidth;\n percent = percent < 0 ? 0 : percent > 1 ? 1 : percent;\n var currentTime = parseInt(percent * this.duration * 1000, 10) / 1000;\n return {\n percent: percent,\n currentTime: currentTime,\n offset: offset,\n width: rWidth,\n left: rLeft,\n e: e\n };\n }\n\n /**\n * @description 更新时间插件,在拖拽状态下要接管时间插件的更新状态\n * 本位置会和time插件交互\n * @param {number} time 根据拖拽距离计算出的时间\n */\n\n }, {\n key: 'updateTime',\n value: function updateTime(time) {\n var player = this.player,\n duration = this.duration;\n\n if (time > duration) {\n time = duration;\n } else if (time < 0) {\n time = 0;\n }\n var timeIcon = player.plugins.time;\n if (timeIcon) {\n timeIcon.updateTime(time);\n }\n }\n\n /**\n * @description 复位正在拖拽状态 ,拖拽的时候要避免timeupdate更新\n */\n\n }, {\n key: 'resetSeekState',\n value: function resetSeekState() {\n this.isProgressMoving = false;\n var timeIcon = this.player.plugins.time;\n timeIcon && timeIcon.resetActive();\n }\n\n /**\n * @description 拖拽过程中更新UI\n * @param {number} percent 小于0的小数\n *\n */\n\n }, {\n key: 'updatePercent',\n value: function updatePercent(percent, notSeek) {\n this.isProgressMoving = true;\n if (this.config.disable) {\n return;\n }\n percent = percent > 1 ? 1 : percent < 0 ? 0 : percent;\n this.progressBtn.style.left = percent * 100 + '%';\n this.innerList.update({ played: percent * this.duration }, this.duration);\n var miniprogress = this.player.plugins.miniprogress;\n\n miniprogress && miniprogress.update({ played: percent * this.duration }, this.duration);\n }\n\n /**\n * @description 播放进度更新\n */\n\n }, {\n key: 'onTimeupdate',\n value: function onTimeupdate() {\n var player = this.player,\n _state = this._state,\n duration = this.duration;\n\n if (player.isSeeking || this.isProgressMoving) {\n return;\n }\n if (_state.now > -1) {\n var abs = parseInt(_state.now * 1000, 10) - parseInt(player.currentTime * 1000, 10);\n if (_state.direc === 0 && abs > 300 || _state.direc === 1 && abs > -300) {\n return;\n } else {\n _state.now = -1;\n }\n }\n var time = this.timeOffset + player.currentTime;\n this.innerList.update({ played: time }, duration);\n this.progressBtn.style.left = time / duration * 100 + '%';\n var miniprogress = this.player.plugins.miniprogress;\n\n miniprogress && miniprogress.update({ played: time }, duration);\n }\n\n /**\n * @description 缓存进度更新\n */\n\n }, {\n key: 'onCacheUpdate',\n value: function onCacheUpdate() {\n var player = this.player,\n duration = this.duration;\n\n var point = player.bufferedPoint;\n this.innerList.update({ cached: point.end }, duration);\n var miniprogress = this.player.plugins.miniprogress;\n\n miniprogress && miniprogress.update({ cached: point.end }, duration);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var player = this.player;\n var controls = player.controls;\n\n this.thumbnailPlugin = null;\n this.innerList.destroy();\n this.innerList = null;\n if (this.isMobile) {\n this.unbind('touchstart', this.onMouseDown);\n this.unbind('touchmove', this.onMouseMove);\n this.unbind('touchend', this.onMouseUp);\n if (controls) {\n controls.root && controls.root.removeEventListener('touchmove', Util.stopPropagation);\n controls.center && controls.center.removeEventListener('touchend', Util.stopPropagation);\n }\n } else {\n this.unbind('mousedown', this.onMouseDown);\n this.unbind('mouseenter', this.onMouseEnter);\n this.unbind('mousemove', this.onMoveOnly);\n document.removeEventListener('mousemove', this.onMouseMove, false);\n document.removeEventListener('mouseup', this.onMouseUp, false);\n player.root.removeEventListener('click', this.onBodyClick, false);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n return '\\n \\n \\n \\n \\n \\n ';\n }\n }, {\n key: 'duration',\n get: function get() {\n return this.playerConfig.customDuration || this.player.duration;\n }\n }, {\n key: 'timeOffset',\n get: function get() {\n return this.playerConfig.timeOffset || 0;\n }\n }]);\n\n return Progress;\n}(Plugin);\n\nexport default Progress;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Events, POSITIONS } from '../../plugin';\nvar PlaySvg = '';\nvar PauseSvg = '';\n\nvar Play = function (_Plugin) {\n _inherits(Play, _Plugin);\n\n function Play() {\n _classCallCheck(this, Play);\n\n return _possibleConstructorReturn(this, (Play.__proto__ || Object.getPrototypeOf(Play)).apply(this, arguments));\n }\n\n _createClass(Play, [{\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n var player = this.player,\n config = this.config;\n\n if (config.disable) {\n return;\n }\n this.initIcons();\n this.btnClick = this.btnClick.bind(this);\n this.bind(['touchend', 'click'], this.btnClick);\n\n this.on(Events.PAUSE, function () {\n _this2.animate(player.paused);\n });\n this.on(Events.PLAY, function () {\n _this2.animate(player.paused);\n });\n this.animate(true);\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n play: { icon: PlaySvg, class: 'xg-icon-play' },\n pause: { icon: PauseSvg, class: 'xg-icon-pause' }\n };\n }\n }, {\n key: 'btnClick',\n value: function btnClick(e) {\n e.preventDefault();\n e.stopPropagation();\n var player = this.player;\n\n if (player.paused) {\n player.play();\n this.animate(false);\n } else {\n player.pause();\n this.animate(true);\n }\n return false;\n }\n }, {\n key: 'initIcons',\n value: function initIcons() {\n var icons = this.icons;\n\n this.appendChild('.xgplayer-icon', icons.play);\n this.appendChild('.xgplayer-icon', icons.pause);\n }\n }, {\n key: 'animate',\n value: function animate(paused) {\n var i18nKeys = this.i18nKeys;\n\n if (paused) {\n this.setAttr('data-state', 'pause');\n this.changeLangTextKey(this.find('.xg-tips'), i18nKeys.PLAY_TIPS);\n } else {\n this.setAttr('data-state', 'play');\n this.changeLangTextKey(this.find('.xg-tips'), i18nKeys.PAUSE_TIPS);\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind(['touchend', 'click'], this.btnClick);\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n return '\\n
\\n
\\n
' + this.i18n.PLAY_TIPS + '
\\n
';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'play';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_LEFT,\n index: 0,\n disable: false\n };\n }\n }]);\n\n return Play;\n}(Plugin);\n\nexport default Play;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { POSITIONS, Util } from '../../plugin';\nvar BackSVG = '';\n\nvar TopBackIcon = function (_Plugin) {\n _inherits(TopBackIcon, _Plugin);\n\n function TopBackIcon() {\n _classCallCheck(this, TopBackIcon);\n\n return _possibleConstructorReturn(this, (TopBackIcon.__proto__ || Object.getPrototypeOf(TopBackIcon)).apply(this, arguments));\n }\n\n _createClass(TopBackIcon, [{\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n this.initIcons();\n this.onClick = function (e) {\n e.preventDefault();\n e.stopPropagation();\n _this2.config.onClick(e);\n };\n\n this.bind(['click', 'touchend'], this.onClick);\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n screenBack: { icon: BackSVG, class: 'xg-fullscreen-back' }\n };\n }\n }, {\n key: 'initIcons',\n value: function initIcons() {\n var icons = this.icons;\n\n this.appendChild(this.root, icons.screenBack);\n }\n }, {\n key: 'show',\n value: function show() {\n Util.addClass(this.root, 'show');\n }\n }, {\n key: 'hide',\n value: function hide() {\n Util.removeClass(this.root, 'show');\n }\n }, {\n key: 'render',\n value: function render() {\n return '\\n ';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'topbackicon';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.ROOT_TOP,\n index: 0\n };\n }\n }]);\n\n return TopBackIcon;\n}(Plugin);\n\nexport default TopBackIcon;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { hooksDescriptor, Events, POSITIONS, Sniffer, STATE_CLASS, Util } from '../../plugin';\nimport TopBackIcon from './backicon';\nvar FullScreenSvg = '';\nvar ExitFullScreenSvg = '';\n\nvar Fullscreen = function (_Plugin) {\n _inherits(Fullscreen, _Plugin);\n\n function Fullscreen() {\n _classCallCheck(this, Fullscreen);\n\n return _possibleConstructorReturn(this, (Fullscreen.__proto__ || Object.getPrototypeOf(Fullscreen)).apply(this, arguments));\n }\n\n _createClass(Fullscreen, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.fullscreen === 'boolean') {\n args.config.disable = !args.player.config.fullscreen;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n hooksDescriptor(this);\n if (this.config.disable) {\n return;\n }\n this.isFullScreen = this.player.isFullScreen;\n this.initIcons();\n\n this.fullSreenHandler = this.hook('fullsreen_change', this.changeFullScreen);\n\n this.bind('.xgplayer-fullscreen', Sniffer.device === 'mobile' ? 'touchend' : 'click', this.fullSreenHandler);\n\n this.on(Events.FULLSCREEN_CHANGE, function (isFullScreen) {\n _this2.changeLangTextKey(_this2.find('.xg-tips'), isFullScreen ? _this2.i18nKeys.EXITFULLSCREEN_TIPS : _this2.i18nKeys.FULLSCREEN_TIPS);\n _this2.animate(isFullScreen);\n });\n if (this.config.needBackIcon) {\n this.topBackIcon = this.player.registerPlugin({\n plugin: TopBackIcon,\n options: {\n config: {\n onClick: function onClick(e) {\n _this2.show();\n _this2.fullSreenHandler(e);\n }\n }\n }\n });\n }\n if (Sniffer.device === 'mobile') {\n window.addEventListener('orientationchange', function () {\n if (_this2.player.fullscreen && _this2.config.rotateFullscreen) {\n if (window.orientation === 90 || window.orientation === -90) {\n _this2.setRotateDeg(0);\n } else {\n _this2.setRotateDeg(90);\n }\n }\n });\n }\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n fullscreen: { icon: FullScreenSvg, class: 'xg-get-fullscreen' },\n exitFullscreen: { icon: ExitFullScreenSvg, class: 'xg-exit-fullscreen' }\n };\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind('.xgplayer-icon', Sniffer.device === 'mobile' ? 'touchend' : 'click', this.fullSreenHandler);\n }\n }, {\n key: 'initIcons',\n value: function initIcons() {\n var icons = this.icons;\n\n this.appendChild('.xgplayer-icon', icons.fullscreen);\n this.appendChild('.xgplayer-icon', icons.exitFullscreen);\n }\n }, {\n key: 'setRotateDeg',\n value: function setRotateDeg(deg) {\n var player = this.player;\n\n if (window.orientation === 90 || window.orientation === -90) {\n player.rotateDeg = 0;\n } else {\n player.rotateDeg = deg;\n }\n }\n }, {\n key: 'getRotateFullscreen',\n value: function getRotateFullscreen() {\n var player = this.player;\n\n if (player.isCssfullScreen) {\n player.exitCssFullscreen();\n }\n if (player.root.getAttribute('style')) {\n this._originCssText = player.root.style.cssText;\n player.root.removeAttribute('style');\n }\n player.addClass(STATE_CLASS.ROTATE_FULLSCREEN);\n player.fullscreen = true;\n this.setRotateDeg(90);\n this.emit(Events.FULLSCREEN_CHANGE, true);\n }\n }, {\n key: 'exitRotateFullscreen',\n value: function exitRotateFullscreen() {\n var player = this.player;\n\n player.removeClass(STATE_CLASS.ROTATE_FULLSCREEN);\n player.fullscreen = false;\n this._originCssText && Util.setStyleFromCsstext(player.root, this._originCssText);\n this._originCssText = '';\n this.setRotateDeg(0);\n this.emit(Events.FULLSCREEN_CHANGE, false);\n }\n }, {\n key: 'changeFullScreen',\n value: function changeFullScreen(e) {\n e.preventDefault();\n e.stopPropagation();\n var player = this.player,\n config = this.config;\n\n var useCssFullscreen = false;\n if (config.useCssFullscreen === true || typeof config.useCssFullscreen === 'function' && config.useCssFullscreen()) {\n useCssFullscreen = true;\n }\n if (useCssFullscreen) {\n if (player.fullscreen) {\n player.fullscreen = false;\n player.exitCssFullscreen();\n this.emit(Events.FULLSCREEN_CHANGE, false);\n } else {\n player.fullscreen = true;\n player.getCssFullscreen();\n this.emit(Events.FULLSCREEN_CHANGE, true);\n }\n this.animate(player.fullscreen);\n } else if (config.rotateFullscreen) {\n if (player.fullscreen) {\n this.exitRotateFullscreen();\n } else {\n this.getRotateFullscreen();\n }\n this.animate(player.fullscreen);\n } else {\n if (config.switchCallback && typeof config.switchCallback === 'function') {\n config.switchCallback(this.isFullScreen);\n this.isFullScreen = !this.isFullScreen;\n return;\n }\n if (player.fullscreen) {\n player.exitFullscreen(config.target);\n } else {\n player.getFullscreen(config.target);\n }\n }\n }\n }, {\n key: 'animate',\n value: function animate(isFullScreen) {\n isFullScreen ? this.setAttr('data-state', 'full') : this.setAttr('data-state', 'normal');\n if (this.topBackIcon) {\n if (isFullScreen) {\n this.topBackIcon.show();\n this.hide();\n } else {\n this.topBackIcon.hide();\n this.show();\n }\n }\n }\n }, {\n key: 'show',\n value: function show() {\n _get(Fullscreen.prototype.__proto__ || Object.getPrototypeOf(Fullscreen.prototype), 'show', this).call(this);\n }\n }, {\n key: 'hide',\n value: function hide() {\n _get(Fullscreen.prototype.__proto__ || Object.getPrototypeOf(Fullscreen.prototype), 'hide', this).call(this);\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n var langKey = 'FULLSCREEN_TIPS';\n return '\\n
\\n
\\n
' + this.i18n[langKey] + '
\\n
';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'fullscreen';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 0,\n useCssFullscreen: false,\n rotateFullscreen: false,\n switchCallback: null,\n target: null,\n disable: false,\n needBackIcon: false\n };\n }\n }]);\n\n return Fullscreen;\n}(Plugin);\n\nexport default Fullscreen;","var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Util, Events, POSITIONS } from '../../plugin';\n\nvar Time = function (_Plugin) {\n _inherits(Time, _Plugin);\n\n _createClass(Time, null, [{\n key: 'pluginName',\n get: function get() {\n return 'time';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_LEFT,\n index: 2,\n disable: false\n };\n }\n }]);\n\n function Time(args) {\n _classCallCheck(this, Time);\n\n var _this = _possibleConstructorReturn(this, (Time.__proto__ || Object.getPrototypeOf(Time)).call(this, args));\n\n _this.isActiving = false;\n return _this;\n }\n\n _createClass(Time, [{\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n var constrolsMode = this.player.controls.config.mode;\n this.mode = constrolsMode === 'flex' ? 'flex' : 'normal';\n if (this.config.disable) {\n return;\n }\n if (this.mode === 'flex') {\n this.createCenterTime();\n this.hide();\n }\n this.durationDom = this.find('.time-duration');\n this.timeDom = this.find('.time-current');\n this.on(Events.DURATION_CHANGE, function () {\n _this2.onTimeUpdate();\n });\n this.on(Events.TIME_UPDATE, function () {\n _this2.onTimeUpdate();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n if (this.mode === 'flex') {\n return;\n }\n _get(Time.prototype.__proto__ || Object.getPrototypeOf(Time.prototype), 'show', this).call(this);\n }\n }, {\n key: 'onTimeUpdate',\n value: function onTimeUpdate() {\n var player = this.player,\n config = this.config;\n\n if (config.disable || this.isActiving) {\n return;\n }\n var current = player.currentTime + this.timeOffset;\n if (this.mode === 'flex') {\n this.centerCurDom.innerHTML = Util.format(current);\n if (this.duration !== Infinity && this.duration > 0) {\n this.centerDurDom.innerHTML = Util.format(this.duration);\n }\n } else {\n this.timeDom.innerHTML = Util.format(current);\n if (this.duration !== Infinity && this.duration > 0) {\n this.durationDom.innerHTML = Util.format(this.duration);\n }\n }\n }\n }, {\n key: 'createCenterTime',\n value: function createCenterTime() {\n var player = this.player;\n\n if (!player.controls || !player.controls.center) {\n return;\n }\n var center = player.controls.center;\n this.centerCurDom = Util.createDom('xg-icon', '00:00', {}, 'xgplayer-time left');\n this.centerDurDom = Util.createDom('xg-icon', '00:00', {}, 'xgplayer-time right');\n center.children.length > 0 ? center.insertBefore(this.centerCurDom, center.children[0]) : center.appendChild(this.centerCurDom);\n center.appendChild(this.centerDurDom);\n }\n }, {\n key: 'afterPlayerInit',\n value: function afterPlayerInit() {\n var config = this.config;\n\n if (this.duration === Infinity || this.playerConfig.isLive) {\n Util.hide(this.durationDom);\n Util.hide(this.timeDom);\n Util.hide(this.find('.time-separator'));\n Util.show(this.find('.time-live-tag'));\n } else {\n Util.hide(this.find('.time-live-tag'));\n }\n if (config.hide) {\n this.hide();\n return;\n }\n this.show();\n }\n }, {\n key: 'changeLiveState',\n value: function changeLiveState(isLive) {\n if (isLive) {\n Util.hide(this.durationDom);\n Util.hide(this.timeDom);\n Util.hide(this.find('.time-separator'));\n Util.show(this.find('.time-live-tag'));\n } else {\n Util.hide(this.find('.time-live-tag'));\n Util.show(this.find('.time-separator'));\n Util.show(this.durationDom);\n Util.show(this.timeDom);\n }\n }\n }, {\n key: 'updateTime',\n value: function updateTime(time) {\n this.isActiving = true;\n if (!time && time !== 0 || time > this.duration) {\n return;\n }\n if (this.mode === 'flex') {\n this.centerCurDom.innerHTML = Util.format(time);\n return;\n }\n this.timeDom.innerHTML = Util.format(time);\n }\n }, {\n key: 'resetActive',\n value: function resetActive() {\n var _this3 = this;\n\n var player = this.player;\n\n var updateState = function updateState() {\n _this3.isActiving = false;\n };\n this.off(Events.SEEKED, updateState);\n if (player.isSeeking) {\n this.once(Events.SEEKED, updateState);\n } else {\n this.isActiving = false;\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var center = this.player.controls.center;\n\n this.centerCurDom && center.removeChild(this.centerCurDom);\n this.centerCurDom = null;\n this.centerDurDom && center.removeChild(this.centerDurDom);\n this.centerDurDom = null;\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n return '\\n 00:00\\n /\\n 00:00\\n \\u76F4\\u64AD\\n ';\n }\n }, {\n key: 'duration',\n get: function get() {\n return this.playerConfig.customDuration || this.player.duration;\n }\n }, {\n key: 'timeOffset',\n get: function get() {\n return this.playerConfig.timeOffset || 0;\n }\n }]);\n\n return Time;\n}(Plugin);\n\nexport default Time;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { hooksDescriptor, Util, Events, Sniffer, POSITIONS } from '../../plugin';\nvar volumeLargeSvg = '';\nvar volumeSmallSvg = '';\nvar volumeMutedSvg = '';\n\nvar Volume = function (_Plugin) {\n _inherits(Volume, _Plugin);\n\n function Volume() {\n _classCallCheck(this, Volume);\n\n return _possibleConstructorReturn(this, (Volume.__proto__ || Object.getPrototypeOf(Volume)).apply(this, arguments));\n }\n\n _createClass(Volume, [{\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n volumeSmall: { icon: volumeSmallSvg, class: 'xg-volume-small' },\n volumeLarge: { icon: volumeLargeSvg, class: 'xg-volume' },\n volumeMuted: { icon: volumeMutedSvg, class: 'xg-volume-mute' }\n };\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n hooksDescriptor(this);\n if (this.config.disable) {\n return;\n }\n\n this.initIcons();\n\n var _playerConfig = this.playerConfig,\n commonStyle = _playerConfig.commonStyle,\n volume = _playerConfig.volume;\n\n if (commonStyle.volumeColor) {\n this.find('.xgplayer-drag').style.backgroundColor = commonStyle.volumeColor;\n }\n this.changeMutedHandler = this.hook('muted_change', function () {\n var player = _this2.player;\n\n player.muted = !player.muted;\n }, {\n pre: function pre(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n });\n this.onBarMousedown = this.onBarMousedown.bind(this);\n this.onMouseenter = this.onMouseenter.bind(this);\n this.onMouseleave = this.onMouseleave.bind(this);\n\n if (!(Sniffer.device === 'mobile') && !this.playerConfig.isMobileSimulateMode) {\n this.bind('mouseenter', this.onMouseenter);\n\n this.bind(['blur', 'mouseleave'], this.onMouseleave);\n\n this.bind('.xgplayer-bar', 'mousedown', this.onBarMousedown);\n }\n\n this.bind('.xgplayer-icon', Sniffer.device === 'mobile' ? 'touchend' : 'click', this.changeMutedHandler);\n\n this.on(Events.VOLUME_CHANGE, this.onVolumeChange.bind(this));\n\n if (Util.typeOf(volume) !== 'Number') {\n this.player.volume = this.config.default;\n }\n\n this.onVolumeChange();\n }\n }, {\n key: 'onBarMousedown',\n value: function onBarMousedown(e) {\n var _this3 = this;\n\n var slider = this.find('.xgplayer-slider');\n var bar = this.find('.xgplayer-bar');\n slider.focus();\n Util.event(e);\n\n var barRect = bar.getBoundingClientRect();\n var pos = { x: e.clientX, y: e.clientY };\n var height = barRect.height - (e.clientY - barRect.top);\n this.updateVolumePos(height);\n\n this.isMoveing = false;\n var onMove = function onMove(e) {\n e.preventDefault();\n e.stopPropagation();\n Util.event(e);\n _this3.isMoveing = true;\n var w = height - e.clientY + pos.y;\n if (w > barRect.height) {\n return;\n }\n _this3.updateVolumePos(w);\n };\n\n var onUp = function onUp(e) {\n e.preventDefault();\n e.stopPropagation();\n Util.event(e);\n window.removeEventListener('mousemove', onMove);\n window.removeEventListener('touchmove', onMove);\n window.removeEventListener('mouseup', onUp);\n window.removeEventListener('touchend', onUp);\n _this3.isMoveing = false;\n };\n window.addEventListener('mousemove', onMove);\n window.addEventListener('touchmove', onMove);\n window.addEventListener('mouseup', onUp);\n window.addEventListener('touchend', onUp);\n return false;\n }\n }, {\n key: 'updateVolumePos',\n value: function updateVolumePos(height) {\n var player = this.player;\n\n var drag = this.find('.xgplayer-drag');\n var bar = this.find('.xgplayer-bar');\n var now = height / bar.getBoundingClientRect().height;\n drag.style.height = height + 'px';\n player.volume = Math.max(Math.min(now, 1), 0);\n player.muted = false;\n }\n }, {\n key: 'onMouseenter',\n value: function onMouseenter(e) {\n Util.addClass(this.root, 'slide-show');\n }\n }, {\n key: 'onMouseleave',\n value: function onMouseleave(e) {\n Util.removeClass(this.root, 'slide-show');\n }\n }, {\n key: 'changeMuted',\n value: function changeMuted(e) {\n // e.preventDefault()\n e.stopPropagation();\n var player = this.player;\n\n player.muted = !player.muted;\n }\n }, {\n key: 'onVolumeChange',\n value: function onVolumeChange() {\n var _player = this.player,\n muted = _player.muted,\n volume = _player.volume;\n\n if (!this.isMoveing) {\n this.find('.xgplayer-drag').style.height = muted || volume === 0 ? '0px' : volume * 100 + '%';\n }\n this.animate(muted, volume);\n }\n }, {\n key: 'animate',\n value: function animate(muted, volume) {\n if (muted || volume === 0) {\n this.setAttr('data-state', 'mute');\n } else if (volume < 0.5 && this.icons.volumeSmall) {\n this.setAttr('data-state', 'small');\n } else {\n this.setAttr('data-state', 'normal');\n }\n }\n }, {\n key: 'initIcons',\n value: function initIcons() {\n var icons = this.icons;\n\n this.appendChild('.xgplayer-icon', icons.volumeSmall);\n this.appendChild('.xgplayer-icon', icons.volumeLarge);\n this.appendChild('.xgplayer-icon', icons.volumeMuted);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind('mouseenter', this.onMouseenter);\n\n this.unbind(['blur', 'mouseleave'], this.onMouseleave);\n\n this.unbind('.xgplayer-bar', 'mousedown', this.onBarMousedown);\n\n this.unbind('.xgplayer-icon', Sniffer.device === 'mobile' ? 'touchend' : 'click', this.changeMutedHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n var volume = this.config.default || this.player.volume;\n return '\\n \\n
\\n
\\n \\n
\\n \\n
\\n
\\n
';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'volume';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT, // [可选]插件挂载的dom\n index: 1, // [可选]插件在播放器中挂载的位置\n disable: false, // [可选]是否禁用插件交互行为\n default: 0.6 // [可选]默认音量\n };\n }\n }]);\n\n return Volume;\n}(Plugin);\n\nexport default Volume;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { POSITIONS, Util } from '../../plugin';\nimport { Events } from '../../plugin/basePlugin';\nvar RotateSvg = '';\n\nvar Rotate = function (_Plugin) {\n _inherits(Rotate, _Plugin);\n\n _createClass(Rotate, null, [{\n key: 'pluginName',\n get: function get() {\n return 'rotate';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 6,\n innerRotate: true, // true为只有画面旋转,false为整个播放器旋转\n clockwise: false,\n rotateDeg: 0, // 初始旋转角度\n disable: false\n };\n }\n }]);\n\n function Rotate(args) {\n _classCallCheck(this, Rotate);\n\n var _this = _possibleConstructorReturn(this, (Rotate.__proto__ || Object.getPrototypeOf(Rotate)).call(this, args));\n\n _this.rotateDeg = _this.config.rotateDeg || 0;\n return _this;\n }\n\n _createClass(Rotate, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.rotate === 'boolean') {\n args.config.disable = !args.player.config.rotate;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n if (this.config.disable) {\n return;\n }\n this.appendChild('.xgplayer-icon', this.icons.rotate);\n this.onBtnClick = this.onBtnClick.bind(this);\n this.bind('.xgplayer-icon', ['click', 'touchend'], this.onBtnClick);\n // 全屏/css全屏/容器宽高发生变化 需要重新计算\n this.on([Events.FULLSCREEN_CHANGE, Events.CSS_FULLSCREEN_CHANGE, Events.VIDEO_RESIZE], function () {\n if (_this2.rotateDeg) {\n Util.setTimeout(_this2, function () {\n _this2.updateRotateDeg(_this2.rotateDeg, _this2.config.innerRotate);\n }, 100);\n }\n });\n if (this.rotateDeg) {\n this.updateRotateDeg(this.rotateDeg, this.config.innerRotate);\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind('.xgplayer-icon', ['click', 'touchend'], this.onBtnClick);\n }\n }, {\n key: 'onBtnClick',\n value: function onBtnClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.rotate(this.config.clockwise, this.config.innerRotate, 1);\n }\n }, {\n key: 'updateRotateDeg',\n value: function updateRotateDeg(rotateDeg, innerRotate) {\n var player = this.player;\n if (!rotateDeg) {\n rotateDeg = 0;\n }\n var _player = this.player,\n root = _player.root,\n innerContainer = _player.innerContainer,\n video = _player.video;\n\n var width = root.offsetWidth;\n var height = innerContainer && innerRotate ? innerContainer.offsetHeight : root.offsetHeight;\n var rWidth = '100%';\n var rHeight = '100%';\n var x = 0;\n var y = 0;\n if (rotateDeg === 0.75 || rotateDeg === 0.25) {\n rWidth = height + 'px';\n rHeight = width + 'px';\n x = -(height - width) / 2;\n y = -(width - height) / 2;\n }\n console.log('rWidth:' + rWidth + ' rHeight:' + rHeight + ' x:' + x + ' y:' + y);\n var _transform = 'translate(' + x + 'px,' + y + 'px) rotate(' + rotateDeg + 'turn)';\n var _styles = {\n transformOrigin: 'center center',\n transform: _transform,\n webKitTransform: _transform,\n height: rHeight,\n width: rWidth\n };\n\n var _target = innerRotate ? video : root;\n var poster = innerRotate ? player.getPlugin('poster') : null;\n Object.keys(_styles).map(function (key) {\n _target.style[key] = _styles[key];\n poster && poster.root && (poster.root.style[key] = _styles[key]);\n });\n }\n }, {\n key: 'rotate',\n value: function rotate() {\n var clockwise = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n var innerRotate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var times = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n var player = this.player;\n if (!this.rotateDeg) {\n this.rotateDeg = 0;\n }\n var factor = clockwise ? 1 : -1;\n\n this.rotateDeg = (this.rotateDeg + 1 + factor * 0.25 * times) % 1;\n console.log('this.rotateDeg', this.rotateDeg);\n this.updateRotateDeg(this.rotateDeg, innerRotate);\n player.emit('rotate', this.rotateDeg * 360);\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n 'rotate': RotateSvg\n };\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n return '\\n \\n
\\n
\\n
\\n ' + this.i18n.ROTATE_TIPS + '\\n
\\n
';\n }\n }]);\n\n return Rotate;\n}(Plugin);\n\nexport default Rotate;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Events, Util, POSITIONS } from '../../plugin';\n\n/**\n * @description picture-in-picture plugin\n * @doc https://www.w3.org/TR/picture-in-picture/\n * @doc https://developer.apple.com/documentation/webkitjs/adding_picture_in_picture_to_your_safari_media_controls\n */\n\nvar PresentationMode = {\n PIP: 'picture-in-picture',\n INLINE: 'inline',\n FULLSCREEN: 'fullscreen'\n};\n\nvar PIP = function (_Plugin) {\n _inherits(PIP, _Plugin);\n\n function PIP() {\n _classCallCheck(this, PIP);\n\n return _possibleConstructorReturn(this, (PIP.__proto__ || Object.getPrototypeOf(PIP)).apply(this, arguments));\n }\n\n _createClass(PIP, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.pip === 'boolean') {\n args.config.showIcon = args.player.config.pip;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n this.pMode = PresentationMode.INLINE;\n this.icons.pipIcon && this.appendChild('.xgplayer-icon', this.icons.pipIcon);\n this.btnClick = function (e) {\n e.preventDefault();\n e.stopPropagation();\n _this2.switchPIP(e);\n };\n // video初始化之后再做判断是否显示\n this.once(Events.COMPLETE, function () {\n if (_this2.config.showIcon && _this2.isPIPAvailable()) {\n _this2.show();\n _this2.bind('click', _this2.btnClick);\n }\n _this2.initPipEvents();\n });\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n 'pipIcon': null\n };\n }\n }, {\n key: 'initPipEvents',\n value: function initPipEvents() {\n var _this3 = this;\n\n var player = this.player;\n\n this.leavePIPCallback = function () {\n // 处理点击x关闭画中画的时候暂停问题\n var paused = player.paused;\n Util.setTimeout(_this3, function () {\n !paused && player.play();\n }, 0);\n !paused && player.play();\n player.emit('pip_change', false);\n };\n\n this.enterPIPCallback = function (e) {\n player.emit('pip_change', true);\n _this3.pipWindow = e.pictureInPictureWindow;\n };\n\n this.onWebkitpresentationmodechanged = function (e) {\n var mode = player.video.webkitPresentationMode;\n // 如果在全屏下进入了该逻辑,调用退出全屏处理\n if (_this3.pMode === PresentationMode.FULLSCREEN && mode !== PresentationMode.FULLSCREEN) {\n player.onFullscreenChange(null, false);\n }\n _this3.pMode = mode;\n if (mode === PresentationMode.PIP) {\n _this3.enterPIPCallback(e);\n } else if (mode === PresentationMode.INLINE) {\n _this3.leavePIPCallback(e);\n }\n };\n\n if (player.video) {\n player.video.addEventListener('enterpictureinpicture', this.enterPIPCallback);\n player.video.addEventListener('leavepictureinpicture', this.leavePIPCallback);\n PIP.checkWebkitSetPresentationMode(player.video) && player.video.addEventListener('webkitpresentationmodechanged', this.onWebkitpresentationmodechanged);\n }\n }\n }, {\n key: 'switchPIP',\n value: function switchPIP() {\n if (!this.isPIPAvailable()) {\n return false;\n }\n this.isPip ? this.exitPIP() : this.requestPIP();\n }\n\n /*\n * 进入画中画\n */\n\n }, {\n key: 'requestPIP',\n value: function requestPIP() {\n var player = this.player,\n playerConfig = this.playerConfig;\n\n if (!this.isPIPAvailable() || this.isPip) {\n return;\n }\n try {\n if (playerConfig.poster) {\n player.video.poster = playerConfig.poster;\n }\n PIP.checkWebkitSetPresentationMode(player.video) ? player.video.webkitSetPresentationMode('picture-in-picture') : player.video.requestPictureInPicture();\n return true;\n } catch (reason) {\n console.error('requestPiP', reason);\n return false;\n }\n }\n\n /**\n * 退出画中画\n */\n\n }, {\n key: 'exitPIP',\n value: function exitPIP() {\n var player = this.player;\n\n try {\n if (this.isPIPAvailable() && this.isPip) {\n PIP.checkWebkitSetPresentationMode(player.video) ? player.video.webkitSetPresentationMode('inline') : document.exitPictureInPicture();\n }\n return true;\n } catch (reason) {\n console.error('exitPIP', reason);\n return false;\n }\n }\n }, {\n key: 'isPIPAvailable',\n value: function isPIPAvailable() {\n var video = this.player.video;\n\n return document.pictureInPictureEnabled && (Util.typeOf(video.disablePictureInPicture) === 'Boolean' && !video.disablePictureInPicture || video.webkitSupportsPresentationMode && Util.typeOf(video.webkitSetPresentationMode) === 'Function');\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var player = this.player;\n\n player.video.removeEventListener('enterpictureinpicture', this.enterPIPCallback);\n player.video.removeEventListener('leavepictureinpicture', this.leavePIPCallback);\n this.exitPIP();\n this.unbind('click', this.btnClick);\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.config.showIcon && this.isPIPAvailable()) {\n return;\n }\n var className = this.icons.pipIcon ? 'xgplayer-icon' : 'xgplayer-icon btn-text';\n return '\\n
\\n ' + (this.icons.pipIcon ? '' : '' + this.i18n.PIP + '') + ' \\n
\\n ' + ('
' + this.i18n.PIP + '
') + '\\n
';\n }\n }, {\n key: 'isPip',\n get: function get() {\n var player = this.player;\n\n return document.pictureInPictureElement && document.pictureInPictureElement === player.video || player.video.webkitPresentationMode === PresentationMode.PIP;\n }\n }], [{\n key: 'checkWebkitSetPresentationMode',\n value: function checkWebkitSetPresentationMode(video) {\n return typeof video.webkitSetPresentationMode === 'function';\n }\n }, {\n key: 'pluginName',\n get: function get() {\n return 'pip';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 6,\n showIcon: false\n };\n }\n }]);\n\n return PIP;\n}(Plugin);\n\nexport default PIP;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * 下一个按钮组件\n */\nimport Plugin, { POSITIONS, Sniffer } from '../../plugin';\nvar Next = '';\n\nvar PlayNextIcon = function (_Plugin) {\n _inherits(PlayNextIcon, _Plugin);\n\n _createClass(PlayNextIcon, null, [{\n key: 'pluginName',\n get: function get() {\n return 'playNext';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_LEFT,\n index: 1,\n url: null,\n urlList: []\n };\n }\n }]);\n\n function PlayNextIcon(options) {\n _classCallCheck(this, PlayNextIcon);\n\n var _this = _possibleConstructorReturn(this, (PlayNextIcon.__proto__ || Object.getPrototypeOf(PlayNextIcon)).call(this, options));\n\n _this.idx = -1;\n return _this;\n }\n\n _createClass(PlayNextIcon, [{\n key: 'afterCreate',\n value: function afterCreate() {\n if (!this.config.urlList || this.config.urlList.length === 0) {\n return;\n }\n this.appendChild('.xgplayer-icon', this.icons.playNext);\n this.initEvents();\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n playNext: Next\n };\n }\n }, {\n key: 'initEvents',\n value: function initEvents() {\n this.playNext = this.playNext.bind(this);\n var event = Sniffer.device === 'mobile' ? 'touchend' : 'click';\n this.bind(event, this.playNext);\n this.show();\n }\n }, {\n key: 'playNext',\n value: function playNext() {\n var player = this.player;\n\n if (this.idx + 1 < this.config.urlList.length) {\n this.idx++;\n player.video.pause();\n player.currentTime = 0;\n player.video.autoplay = true;\n player.src = this.config.urlList[this.idx];\n player.emit('playerNext', this.idx + 1);\n } else {\n player.emit('urlList last');\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind(['touchend', 'click'], this.playNext);\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.config.urlList || this.config.urlList.length === 0) {\n return;\n }\n return '\\n \\n
\\n
\\n
' + this.i18n.PLAYNEXT_TIPS + '
\\n
\\n ';\n }\n }]);\n\n return PlayNextIcon;\n}(Plugin);\n\nexport default PlayNextIcon;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport downloadUtil from 'downloadjs';\nimport Plugin, { POSITIONS } from '../../plugin';\nvar DownloadSvg = '';\n\nvar Download = function (_Plugin) {\n _inherits(Download, _Plugin);\n\n _createClass(Download, null, [{\n key: 'pluginName',\n get: function get() {\n return 'downloadIcon';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 3,\n disable: true\n };\n }\n }]);\n\n function Download(args) {\n _classCallCheck(this, Download);\n\n var _this = _possibleConstructorReturn(this, (Download.__proto__ || Object.getPrototypeOf(Download)).call(this, args));\n\n _this.timer = null;\n _this.isLock = false;\n return _this;\n }\n\n _createClass(Download, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.download === 'boolean') {\n args.config.disable = !args.player.config.download;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n if (this.config.disable) {\n return;\n }\n this.appendChild('.xgplayer-icon', this.icons.download);\n this.download = this.download.bind(this);\n this.bind(['click', 'touchend'], this.download);\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n download: DownloadSvg\n };\n }\n }, {\n key: 'download',\n value: function download() {\n var _this2 = this;\n\n if (this.isLock) {\n return;\n }\n var url = this.getAbsoluteURL(this.player.src);\n downloadUtil(url);\n this.isLock = true;\n this.timer = window.setTimeout(function () {\n _this2.isLock = false;\n window.clearTimeout(_this2.timer);\n _this2.timer = null;\n }, 300);\n }\n }, {\n key: 'getAbsoluteURL',\n value: function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n var div = document.createElement('div');\n div.innerHTML = 'x';\n url = div.firstChild.href;\n }\n return url;\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.download);\n window.clearTimeout(this.timer);\n this.timer = null;\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n return '\\n
\\n
\\n
' + this.i18n.DOWNLOAD_TIPS + '
\\n
';\n }\n }]);\n\n return Download;\n}(Plugin);\n\nexport default Download;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { POSITIONS, Events } from '../../plugin';\n\nvar ScreenShot = function (_Plugin) {\n _inherits(ScreenShot, _Plugin);\n\n function ScreenShot() {\n _classCallCheck(this, ScreenShot);\n\n return _possibleConstructorReturn(this, (ScreenShot.__proto__ || Object.getPrototypeOf(ScreenShot)).apply(this, arguments));\n }\n\n _createClass(ScreenShot, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.screenShot === 'boolean') {\n args.config.disable = !args.player.config.screenShot;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n this.appendChild('.xgplayer-icon', this.icons.screenshotIcon);\n var config = this.config;\n\n this.initSize = function (data) {\n if (config.fitVideo) {\n config.width = data.vWidth;\n config.height = data.vHeight;\n }\n };\n this.once(Events.VIDEO_RESIZE, this.initSize);\n }\n }, {\n key: 'onPluginsReady',\n value: function onPluginsReady() {\n this.show();\n this.onClickBtn = this.onClickBtn.bind(this);\n this.bind(['click', 'touchend'], this.onClickBtn);\n }\n }, {\n key: 'saveScreenShot',\n value: function saveScreenShot(data, filename) {\n var saveLink = document.createElement('a');\n saveLink.href = data;\n saveLink.download = filename;\n var event = document.createEvent('MouseEvents');\n event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);\n saveLink.dispatchEvent(event);\n }\n }, {\n key: 'createCanvans',\n value: function createCanvans(width, height) {\n var canvas = document.createElement('canvas');\n this.canvasCtx = canvas.getContext('2d');\n this.canvas = canvas;\n canvas.width = width || this.config.width;\n canvas.height = height || this.config.height;\n }\n }, {\n key: 'onClickBtn',\n value: function onClickBtn(e) {\n var _this2 = this;\n\n e.preventDefault();\n e.stopPropagation();\n this.shot().then(function (data) {\n _this2.emit('screenShot', data);\n _this2.saveScreenShot(data, _this2.config.name + _this2.config.format);\n });\n }\n }, {\n key: 'shot',\n value: function shot(width, height) {\n var _this3 = this;\n\n var option = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : { quality: 0.92, type: 'image/png' };\n var config = this.config,\n player = this.player;\n\n var quality = option.quality || config.quality;\n var type = option.type || config.type;\n return new Promise(function (resolve, reject) {\n if (!_this3.canvas) {\n _this3.createCanvans(width, height);\n } else {\n _this3.canvas.width = width || config.width;\n _this3.canvas.height = height || config.height;\n }\n _this3.canvasCtx.drawImage(player.video, 0, 0, width || config.width, height || config.height);\n var src = _this3.canvas.toDataURL(type, quality).replace(type, 'image/octet-stream');\n src = src.replace(/^data:image\\/[^;]+/, 'data:application/octet-stream');\n resolve(src);\n });\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n 'screenshotIcon': null\n };\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.onClickBtn);\n this.off(Events.VIDEO_RESIZE, this.initSize);\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n var className = this.icons.screenshotIcon ? 'xgplayer-icon' : 'xgplayer-icon btn-text';\n var langKey = 'SCREENSHOT';\n return '\\n \\n
\\n ' + (this.icons.screenshotIcon ? '' : '' + this.i18n[langKey] + '') + ' \\n
\\n
';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'screenShot';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 5,\n quality: 0.92,\n type: 'image/png',\n format: '.png',\n width: 600,\n height: 337,\n fitVideo: true,\n disable: false,\n name: '截图'\n };\n }\n }]);\n\n return ScreenShot;\n}(Plugin);\n\nexport default ScreenShot;","var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Events, POSITIONS, Util } from '../../plugin';\nimport OptionsIcon from '../common/optionsIcon';\n\nvar DefinitionIcon = function (_OptionsIcon) {\n _inherits(DefinitionIcon, _OptionsIcon);\n\n _createClass(DefinitionIcon, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n var list = args.config.list;\n\n if (Array.isArray(list) && list.length > 0) {\n args.config.list = list.map(function (item) {\n if (!item.text && item.name) {\n item.text = item.name;\n }\n return item;\n });\n }\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'definition';\n }\n\n // 默认配置信息\n\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 3,\n list: [],\n disable: false,\n hidePortrait: false, // 是否在移动端竖屏状态下隐藏\n className: 'xgplayer-definition'\n };\n }\n }]);\n\n function DefinitionIcon(args) {\n _classCallCheck(this, DefinitionIcon);\n\n // 记录切换的时候的播放器状态\n var _this = _possibleConstructorReturn(this, (DefinitionIcon.__proto__ || Object.getPrototypeOf(DefinitionIcon)).call(this, args));\n\n _this.curTime = 0;\n _this.isPaused = true;\n return _this;\n }\n\n _createClass(DefinitionIcon, [{\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n _get(DefinitionIcon.prototype.__proto__ || Object.getPrototypeOf(DefinitionIcon.prototype), 'afterCreate', this).call(this);\n this.on('resourceReady', function (list) {\n _this2.changeDefinitionList(list);\n });\n }\n }, {\n key: 'renderItemList',\n value: function renderItemList() {\n var _this3 = this;\n\n var player = this.player;\n var list = this.config.list;\n\n var currentSrc = player.currentSrc || player.src;\n if (player.switchURL) {\n var curRUL = document.createElement('a');\n ['hlsjs'].every(function (item) {\n if (player[item]) {\n if (player[item].url) {\n curRUL.href = player[item].url;\n }\n if (item === 'hlsjs') {\n curRUL.href = player[item].originUrl || player[item].url;\n }\n currentSrc = curRUL.href;\n return false;\n } else {\n return true;\n }\n });\n curRUL = null;\n }\n var curIndex = 0;\n var items = list.map(function (item, index) {\n var showItem = {\n url: item.url,\n definition: item.definition || '',\n showText: _this3.getTextByLang(item)\n };\n if (item.url === currentSrc || !Util.isUndefined(item.definition) && item.definition === _this3.config.defaultDefinition) {\n showItem.isCurrent = true;\n curIndex = index;\n }\n return showItem;\n });\n _get(DefinitionIcon.prototype.__proto__ || Object.getPrototypeOf(DefinitionIcon.prototype), 'renderItemList', this).call(this, items, curIndex);\n }\n }, {\n key: 'onCanplayChangeDefinition',\n value: function onCanplayChangeDefinition() {\n var player = this.player;\n\n player.currentTime = this.curTime;\n if (!this.isPaused) {\n var playPromise = player.play();\n if (playPromise !== undefined && playPromise) {\n // eslint-disable-next-line handle-callback-err\n playPromise.catch(function (err) {});\n }\n } else {\n player.pause();\n }\n player.emit(Events.AFTER_DEFINITION_CHANGE);\n }\n }, {\n key: 'onTimeupdateChangeDefinition',\n value: function onTimeupdateChangeDefinition() {\n var _this4 = this;\n\n this.once('timeupdate', function () {\n _this4.onCanplayChangeDefinition();\n });\n }\n }, {\n key: 'switchUrl',\n value: function switchUrl(lastATag) {\n var player = this.player;\n\n var curRUL = document.createElement('a');\n ['mp4', 'hls', '__flv__', 'dash', 'hlsjs'].every(function (item) {\n if (player[item]) {\n if (player[item].url) {\n curRUL.href = player[item].url;\n }\n if (item === '__flv__') {\n if (player[item]._options) {\n curRUL.href = player[item]._options.url;\n } else {\n curRUL.href = player[item]._mediaDataSource.url;\n }\n }\n if (item === 'hlsjs') {\n curRUL.href = player[item].originUrl || player[item].url;\n }\n return false;\n } else {\n return true;\n }\n });\n if (lastATag && curRUL.href !== lastATag.url && !player.ended) {\n player.switchURL(lastATag.url);\n }\n curRUL = null;\n }\n\n // 对外暴露 切换清晰度\n\n }, {\n key: 'changeDefinitionList',\n value: function changeDefinitionList(list) {\n if (!Array.isArray(list)) {\n return;\n }\n this.config.list = list.map(function (item) {\n if (!item.text && item.name) {\n item.text = item.name;\n }\n return item;\n });\n this.renderItemList();\n this.show();\n }\n }, {\n key: 'changeDefinition',\n value: function changeDefinition(to) {\n var _this5 = this;\n\n var player = this.player;\n\n if (player.switchURL) {\n this.switchUrl(to);\n } else {\n // TODO: 兼容hls和flv\n if (to.url !== player.currentSrc) {\n this.curTime = player.currentTime;\n this.isPaused = player.paused;\n if (!player.ended) {\n player.src = to.url;\n player.play();\n if (navigator.userAgent.toLowerCase().indexOf('android') > -1) {\n this.once('timeupdate', function () {\n _this5.onTimeupdateChangeDefinition();\n });\n } else {\n this.once('canplay', function () {\n _this5.onCanplayChangeDefinition();\n });\n }\n }\n }\n }\n }\n }, {\n key: 'onItemClick',\n value: function onItemClick(e, data) {\n _get(DefinitionIcon.prototype.__proto__ || Object.getPrototypeOf(DefinitionIcon.prototype), 'onItemClick', this).apply(this, arguments);\n var player = this.player;\n\n var target = e.delegateTarget;\n var url = target.getAttribute('url');\n player.emit(Events.BEFORE_DEFINITION_CHANGE, url);\n this.changeDefinition(data.to);\n player.emit(Events.DEFINITION_CHANGE, { from: data.from, to: data.to });\n }\n }]);\n\n return DefinitionIcon;\n}(OptionsIcon);\n\nexport default DefinitionIcon;","var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport { Events, POSITIONS } from '../../plugin';\nimport OptionsIcon from '../common/optionsIcon';\n\nvar PlaybackRate = function (_OptionsIcon) {\n _inherits(PlaybackRate, _OptionsIcon);\n\n _createClass(PlaybackRate, null, [{\n key: 'pluginName',\n get: function get() {\n return 'playbackRate';\n }\n // 默认配置信息\n\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 4,\n list: [2, 1.5, 1, 0.75, 0.5],\n className: 'xgplayer-playbackrate',\n hidePortrait: false\n };\n }\n }]);\n\n function PlaybackRate(args) {\n _classCallCheck(this, PlaybackRate);\n\n var _this = _possibleConstructorReturn(this, (PlaybackRate.__proto__ || Object.getPrototypeOf(PlaybackRate)).call(this, args));\n\n _this.curRate = 1;\n return _this;\n }\n\n _createClass(PlaybackRate, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n var playbackRate = args.player.config.playbackRate;\n\n var list = !playbackRate ? [] : Array.isArray(playbackRate) ? playbackRate : args.config.list;\n if (Array.isArray(list)) {\n args.config.list = list.map(function (item) {\n if (typeof item === 'number') {\n item = {\n rate: item,\n text: item + 'x'\n };\n } else if (!item.text && item.rate) {\n item.text = item.rate + 'x';\n }\n return item;\n });\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n _get(PlaybackRate.prototype.__proto__ || Object.getPrototypeOf(PlaybackRate.prototype), 'afterCreate', this).call(this);\n this.on(Events.RATE_CHANGE, function () {\n if (_this2.curValue === _this2.player.playbackRate) {\n return;\n }\n _this2.renderItemList();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n if (!this.config.list || this.config.list.length === 0) {\n return;\n }\n _get(PlaybackRate.prototype.__proto__ || Object.getPrototypeOf(PlaybackRate.prototype), 'show', this).call(this);\n }\n }, {\n key: 'onItemClick',\n value: function onItemClick(e, data) {\n _get(PlaybackRate.prototype.__proto__ || Object.getPrototypeOf(PlaybackRate.prototype), 'onItemClick', this).apply(this, arguments);\n var target = e.delegateTarget;\n var rate = target.getAttribute('rate');\n if (Number(rate) === this.curValue) {\n return false;\n }\n this.curValue = Number(rate);\n this.player.playbackRate = Number(rate);\n }\n }, {\n key: 'renderItemList',\n value: function renderItemList() {\n var _this3 = this;\n\n var playbackRate = this.player.playbackRate || 1;\n this.curValue = playbackRate;\n var curIndex = 0;\n var items = this.config.list.map(function (item, index) {\n var itemInfo = {\n rate: item.rate\n };\n if (itemInfo.rate === playbackRate) {\n itemInfo.isCurrent = true;\n curIndex = index;\n }\n itemInfo.showText = _this3.getTextByLang(item);\n return itemInfo;\n });\n _get(PlaybackRate.prototype.__proto__ || Object.getPrototypeOf(PlaybackRate.prototype), 'renderItemList', this).call(this, items, curIndex);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n _get(PlaybackRate.prototype.__proto__ || Object.getPrototypeOf(PlaybackRate.prototype), 'destroy', this).call(this);\n }\n }]);\n\n return PlaybackRate;\n}(OptionsIcon);\n\nexport default PlaybackRate;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { Events, POSITIONS } from '../../plugin';\nvar CssFullSceenSvg = '';\nvar ExitCssFullSceenSvg = '';\n\nvar CssFullScreen = function (_Plugin) {\n _inherits(CssFullScreen, _Plugin);\n\n function CssFullScreen() {\n _classCallCheck(this, CssFullScreen);\n\n return _possibleConstructorReturn(this, (CssFullScreen.__proto__ || Object.getPrototypeOf(CssFullScreen)).apply(this, arguments));\n }\n\n _createClass(CssFullScreen, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n if (typeof args.player.config.cssFullscreen === 'boolean') {\n args.config.disable = !args.player.config.cssFullscreen;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n if (this.config.disable) {\n return;\n }\n this.initIcons();\n this.on(Events.CSS_FULLSCREEN_CHANGE, function (isCssfullScreen) {\n _this2.animate(isCssfullScreen);\n });\n this.btnClick = this.btnClick.bind(this);\n this.bind(['click', 'touchend'], this.btnClick);\n }\n }, {\n key: 'initIcons',\n value: function initIcons() {\n var icons = this.icons;\n\n var contentIcon = this.find('.xgplayer-icon');\n contentIcon.appendChild(icons.cssFullscreen);\n contentIcon.appendChild(icons.exitCssFullscreen);\n }\n }, {\n key: 'btnClick',\n value: function btnClick(e) {\n e.preventDefault();\n e.stopPropagation();\n if (!this.player.isCssfullScreen) {\n this.player.getCssFullscreen();\n } else {\n this.player.exitCssFullscreen();\n }\n }\n }, {\n key: 'animate',\n value: function animate(isFullScreen) {\n if (!this.root) {\n return;\n }\n isFullScreen ? this.setAttr('data-state', 'full') : this.setAttr('data-state', 'normal');\n this.switchTips(isFullScreen);\n }\n }, {\n key: 'switchTips',\n value: function switchTips(isFullScreen) {\n var i18nKeys = this.i18nKeys;\n\n this.changeLangTextKey(this.find('.xg-tips'), isFullScreen ? i18nKeys.EXITCSSFULLSCREEN_TIPS : i18nKeys.CSSFULLSCREEN_TIPS);\n }\n }, {\n key: 'registerIcons',\n value: function registerIcons() {\n return {\n cssFullscreen: { icon: CssFullSceenSvg, class: 'xg-get-cssfull' },\n exitCssFullscreen: { icon: ExitCssFullSceenSvg, class: 'xg-exit-cssfull' }\n };\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind(['click', 'touchend'], this.btnClick);\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.config.disable) {\n return;\n }\n return '\\n
\\n
\\n
' + this.i18n.CSSFULLSCREEN_TIPS + '
\\n
';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'cssFullscreen';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 1,\n disable: false\n };\n }\n }]);\n\n return CssFullScreen;\n}(Plugin);\n\nexport default CssFullScreen;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { hooksDescriptor, Events, Util } from '../../plugin';\n\nvar ErrorPlugin = function (_Plugin) {\n _inherits(ErrorPlugin, _Plugin);\n\n function ErrorPlugin() {\n _classCallCheck(this, ErrorPlugin);\n\n return _possibleConstructorReturn(this, (ErrorPlugin.__proto__ || Object.getPrototypeOf(ErrorPlugin)).apply(this, arguments));\n }\n\n _createClass(ErrorPlugin, [{\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n hooksDescriptor(this);\n\n this.clickHandler = this.hook('errorRetry', this.errorRetry, {\n pre: function pre(e) {\n e.preventDefault();\n e.stopPropagation();\n } });\n\n this.onError = this.hook('errorHandler', this.handleError);\n\n this.bind('.xgplayer-error-refresh', 'click', this.clickHandler);\n this.on(Events.CANPLAY, function () {\n _this2.handleCanPlay();\n });\n\n this.on(Events.ERROR, function (error) {\n _this2.onError(error);\n });\n }\n }, {\n key: 'errorRetry',\n value: function errorRetry() {\n this.player.retry();\n }\n }, {\n key: 'handleCanPlay',\n value: function handleCanPlay() {\n Util.removeClass(this.player.root, 'xgplayer-is-error');\n }\n }, {\n key: 'handleError',\n value: function handleError() {\n var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var player = this.player;\n\n var errorNote = error && error.message ? error.message : player.error;\n this.find('.xgplayer-error-text').innerHTML = errorNote;\n this.find('.xgplayer-error-tips').innerHTML = this.i18n.REFRESH_TIPS + '' + this.i18n.REFRESH + '';\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.unbind('.xgplayer-error-refresh', 'click', this.clickHandler);\n }\n }, {\n key: 'render',\n value: function render() {\n return '\\n
\\n \\n \\n
\\n
';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'error';\n }\n }]);\n\n return ErrorPlugin;\n}(Plugin);\n\nexport default ErrorPlugin;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { STATE_CLASS, Util } from '../../plugin';\n\n/**\n * 消息组件\n */\n\nvar Prompt = function (_Plugin) {\n _inherits(Prompt, _Plugin);\n\n function Prompt() {\n _classCallCheck(this, Prompt);\n\n return _possibleConstructorReturn(this, (Prompt.__proto__ || Object.getPrototypeOf(Prompt)).apply(this, arguments));\n }\n\n _createClass(Prompt, [{\n key: 'afterCreate',\n value: function afterCreate() {\n var _this2 = this;\n\n this.intervalId = 0;\n this.customConfig = null;\n this.bind('.highlight', ['click', 'touchend'], function (e) {\n if (_this2.config.onClick || _this2.customOnClick) {\n e.preventDefault();\n e.stopPropagation();\n _this2.customOnClick ? _this2.customOnClick(e) : _this2.config.onClick(e);\n }\n });\n\n this.player.showPrompt = function () {\n _this2.show.apply(_this2, arguments);\n };\n\n this.player.hidePrompt = function () {\n _this2.hide();\n };\n }\n }, {\n key: 'setStyle',\n value: function setStyle(style) {\n var _this3 = this;\n\n Object.keys(style).map(function (key) {\n _this3.root.style[key] = style[key];\n });\n }\n }, {\n key: 'show',\n value: function show(detail) {\n var _this4 = this;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var onClick = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};\n\n if (!detail) {\n return;\n }\n this.customOnClick = onClick;\n var interval = this.config.interval;\n\n if (this.intervalId) {\n clearTimeout(this.intervalId);\n this.intervalId = null;\n }\n Util.addClass(this.root, 'show');\n config.mode === 'arrow' && Util.addClass(this.root, 'arrow');\n if (typeof detail === 'string') {\n this.find('.xgplayer-prompt-detail').innerHTML = detail;\n } else {\n this.find('.xgplayer-prompt-detail').innerHTML = '' + (detail.text || '') + ('' + (detail.highlight ? '' + detail.highlight + '' : ''));\n }\n\n config.style && this.setStyle(config.style);\n\n var autoHide = typeof config.autoHide === 'boolean' ? config.autoHide : this.config.autoHide;\n if (autoHide) {\n var hideinterval = config.interval || interval;\n this.intervalId = setTimeout(function () {\n _this4.hide();\n }, hideinterval);\n }\n }\n }, {\n key: 'hide',\n value: function hide() {\n Util.removeClass(this.root, 'show');\n Util.removeClass(this.root, 'arrow');\n this.root.removeAttribute('style');\n this.customOnClick = null;\n }\n }, {\n key: 'render',\n value: function render() {\n return '\\n \\u7CBE\\u9009\\u7247\\u6BB5\\u517110s\\n ';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'prompt';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n interval: 3000,\n style: {},\n mode: 'arrow',\n autoHide: true,\n detail: {\n text: '',\n highlight: ''\n },\n onClick: function onClick() {}\n };\n }\n }]);\n\n return Prompt;\n}(Plugin);\n\nexport default Prompt;","import { Util, Events } from '../../plugin';\n\nvar ISPOT = {\n time: 0, // 进度条在此时间戳打点 单位为s\n text: '', // 打点处的自定义文案\n id: 1, // 标记唯一标识,用于删除的时候索引\n duration: 1, // 进度条标识点的时长 默认1s【可选】单位为s\n color: '#fff', // 进度条标识点的显示颜色【可选】\n style: {}, // 指定样式\n width: 6,\n height: 6\n};\n\nfunction mergeISPOT(iSpot) {\n Object.keys(ISPOT).map(function (key) {\n if (iSpot[key] === undefined) {\n iSpot[key] = ISPOT[key];\n }\n });\n}\n\nvar APIS = {\n initDots: function initDots() {\n var _this = this;\n\n this._ispots.map(function (item) {\n _this.createDot(item, false);\n });\n this._ispotsInit = true;\n },\n\n /**\n * 创建一个故事点\n * @param {Object} iSpot\n * @param {boolean} isNew\n */\n createDot: function createDot(iSpot) {\n var isNew = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n if (isNew) {\n mergeISPOT(iSpot);\n this._ispots.push(iSpot);\n }\n if (!this._ispotsInit && isNew) {\n return;\n }\n var ret = this.calcuPosition(iSpot.time, iSpot.duration);\n var style = iSpot.style || {};\n style.left = ret.left + '%';\n style.width = ret.width + '%';\n var className = 'xgspot_' + iSpot.id + ' xgplayer-spot';\n ret.isMini && (className += ' mini');\n var dotDom = Util.createDom('xg-spot', '', {\n 'data-text': iSpot.text,\n 'data-time': iSpot.time,\n 'data-id': iSpot.id\n }, className);\n Object.keys(style).map(function (key) {\n dotDom.style[key] = style[key];\n });\n progress.outer && progress.outer.appendChild(dotDom);\n },\n\n\n /**\n * 根据id查找节点\n * @param {String} id\n */\n findDot: function findDot(id) {\n if (!this.player.plugins.progress) {\n return;\n }\n var ret = this._ispots.filter(function (cur, index) {\n return cur.id === id;\n });\n return ret.length > 0 ? ret[0] : null;\n },\n\n\n /**\n * 更新故事点\n * @param {Object} iSpot\n * @param {Boolean} needShow\n */\n updateDot: function updateDot(iSpot) {\n var needShow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n var dot = this.findDot(iSpot.id);\n if (dot) {\n Object.keys(iSpot).map(function (key) {\n dot[key] = iSpot[key];\n });\n }\n if (!this._ispotsInit) {\n return;\n }\n var dotDom = progress.find('xg-spot[data-id=\"' + iSpot.id + '\"]');\n if (!dotDom) {\n return;\n }\n var ret = this.calcuPosition(iSpot.time, iSpot.duration);\n var style = iSpot.style || {};\n style.left = ret.left + '%';\n style.width = ret.width + '%';\n dotDom.setAttribute('data-text', iSpot.text);\n dotDom.setAttribute('data-time', iSpot.time);\n if (ret.isMini) {\n Util.addClass(dotDom, 'mini');\n } else {\n Util.removeClass(dotDom, 'mini');\n }\n Object.keys(style).map(function (key) {\n dotDom.style[key] = style[key];\n });\n if (needShow) {\n this.showDot(iSpot.id);\n }\n },\n\n\n /**\n * 删除某个故事点\n * @param {String} id\n */\n deleteDot: function deleteDot(id) {\n var _ispots = this._ispots;\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n var del = [];\n for (var i = 0; i < _ispots.length; i++) {\n if (_ispots[i].id === id) {\n del.push(i);\n }\n }\n var len = del.length;\n for (var _i = len - 1; _i >= 0; _i--) {\n _ispots.splice(del[_i], 1);\n if (this._ispotsInit) {\n var dotDom = progress.find('xg-spot[data-id=\"' + id + '\"]');\n dotDom && dotDom.parentElement.removeChild(dotDom);\n }\n }\n },\n\n\n /**\n * 移除所有的故事点\n */\n deleteAllDots: function deleteAllDots() {\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n if (!this._ispotsInit) {\n this._ispots = [];\n return;\n }\n var dotDoms = progress.root.getElementsByTagName('xg-spot');\n for (var i = dotDoms.length - 1; i >= 0; i--) {\n progress.outer.removeChild(dotDoms[i]);\n }\n this._ispots = [];\n },\n\n /**\n * 批量全部更新当前故事点\n * @param {Array} iSpots\n */\n updateAllDots: function updateAllDots() {\n var _this2 = this;\n\n var iSpots = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var progress = this.player.plugins.progress;\n\n if (!progress) {\n return;\n }\n if (!this._ispotsInit) {\n this._ispots = iSpots;\n return;\n }\n this._ispots = [];\n var dotDoms = progress.root.getElementsByTagName('xg-spot');\n var len = dotDoms.length;\n if (len > iSpots.length) {\n for (var i = len - 1; i > iSpots.length - 1; i--) {\n progress.outer.removeChild(dotDoms[i]);\n }\n }\n iSpots.map(function (ispot, index) {\n if (index < len) {\n dotDoms[index].setAttribute('data-id', '' + ispot.id);\n _this2._ispots.push(ispot);\n _this2.updateDot(ispot);\n } else {\n _this2.createDot(ispot);\n }\n });\n }\n};\n\nexport default function initDotsAPI(plugin) {\n var config = plugin.config,\n player = plugin.player;\n\n Object.keys(APIS).map(function (item) {\n plugin[item] = APIS[item].bind(plugin);\n });\n var ispots = player.config.progressDot || config.ispots || [];\n plugin._ispots = ispots.map(function (item) {\n mergeISPOT(item);\n return item;\n });\n plugin._ispotsInit = false;\n player.once(Events.DURATION_CHANGE, function () {\n plugin.initDots();\n });\n}","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin, { hooksDescriptor, Util, Sniffer } from '../../plugin';\nimport initDotsAPI from './dotsApi';\n\nvar CALLBACK_MAP = {\n 'dragmove': 'onProgressMove',\n 'dragstart': 'onProgressDragStart',\n 'dragend': 'onProgressDragEnd'\n};\n\nvar ProgressPreview = function (_Plugin) {\n _inherits(ProgressPreview, _Plugin);\n\n function ProgressPreview(args) {\n _classCallCheck(this, ProgressPreview);\n\n var _this = _possibleConstructorReturn(this, (ProgressPreview.__proto__ || Object.getPrototypeOf(ProgressPreview)).call(this, args));\n\n _this.onMousemove = function (e) {\n if (_this._state.f || Util.hasClass(e.target, 'xg-spot-content')) {\n Util.event(e);\n e.stopPropagation();\n }\n };\n\n _this.onMousedown = function (e) {\n if (_this._state.f || Util.hasClass(e.target, 'xg-spot-content')) {\n Util.event(e);\n e.stopPropagation();\n }\n };\n\n _this._ispots = [];\n _this.videoPreview = null;\n _this.videothumbnail = null;\n _this.thumbnail = null;\n _this._state = {\n now: 0,\n f: false\n };\n return _this;\n }\n\n _createClass(ProgressPreview, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n var progress = args.player.plugins.progress;\n if (progress) {\n args.root = progress.root;\n }\n }\n }, {\n key: 'onPluginsReady',\n value: function onPluginsReady() {\n var player = this.player;\n\n if (!player.plugins.progress) {\n return;\n }\n this.previewLine = this.find('.xg-spot-line');\n this.timePoint = this.find('.xgplayer-progress-point');\n this.timeText = this.find('.xg-spot-time');\n this.tipText = this.find('.spot-inner-text');\n\n this._hasThumnail = false;\n\n this.registerThumbnail();\n initDotsAPI(this);\n\n this.bindEvents();\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n hooksDescriptor(this);\n }\n }, {\n key: 'bindEvents',\n value: function bindEvents() {\n var _this2 = this;\n\n var progress = this.player.plugins.progress;\n\n if (Sniffer.device === 'mobile' || !progress) {\n return;\n }\n Object.keys(CALLBACK_MAP).map(function (key) {\n _this2[CALLBACK_MAP[key]] = _this2[CALLBACK_MAP[key]].bind(_this2);\n progress.addCallBack(key, _this2[CALLBACK_MAP[key]]);\n });\n\n this.bind('.xg-spot-info', 'mousemove', this.onMousemove);\n\n this.bind('.xg-spot-info', 'mousedown', this.onMousedown);\n\n var fun = this.hook('previewClick', function () {\n // console.log('args', args)\n });\n\n this.handlerPreviewClick = function (e) {\n e.stopPropagation();\n fun(parseInt(_this2._state.now * 1000, 10) / 1000, e);\n };\n\n this.bind('.xg-spot-content', 'mouseup', this.handlerPreviewClick);\n }\n }, {\n key: 'onProgressMove',\n value: function onProgressMove(data) {\n this.updatePosition(data.offset, data.width, data.currentTime, data.e);\n }\n }, {\n key: 'onProgressDragStart',\n value: function onProgressDragStart(data) {\n this.isDrag = true;\n this.videoPreview && Util.addClass(this.videoPreview, 'show');\n }\n }, {\n key: 'onProgressDragEnd',\n value: function onProgressDragEnd(data) {\n this.isDrag = false;\n this.videoPreview && Util.removeClass(this.videoPreview, 'show');\n }\n }, {\n key: 'updateLinePos',\n value: function updateLinePos(offset, cwidth) {\n var root = this.root,\n previewLine = this.previewLine,\n timePoint = this.timePoint,\n player = this.player;\n var mode = player.controls.mode;\n\n var isflex = mode === 'flex';\n var lwidth = root.getBoundingClientRect().width;\n var tWidth = timePoint.getBoundingClientRect().width;\n var x = offset - lwidth / 2;\n var _t = void 0,\n _tt = void 0;\n if (x < 0 && !isflex) {\n x = 0;\n _t = offset - lwidth / 2;\n !this.thumbnail && (_tt = offset - lwidth / 2 - tWidth / 2);\n } else if (x > cwidth - lwidth && !isflex) {\n _t = x - (cwidth - lwidth);\n !this.thumbnail && (_tt = x - (cwidth - lwidth) - tWidth / 2);\n x = cwidth - lwidth;\n } else {\n _t = 0;\n !this.thumbnail && (_tt = -tWidth / 2);\n }\n _t !== undefined && (previewLine.style.transform = 'translateX(' + _t + 'px)');\n _tt !== undefined && (timePoint.style.transform = 'translateX(' + _tt + 'px)');\n root.style.transform = 'translateX(' + x + 'px)';\n }\n }, {\n key: 'updateTimeText',\n value: function updateTimeText(timeStr) {\n var timeText = this.timeText,\n timePoint = this.timePoint;\n\n timeText.textContent = timeStr;\n !this.thumbnail && (timePoint.textContent = timeStr);\n }\n }, {\n key: 'updatePosition',\n value: function updatePosition(offset, cwidth, time, e) {\n var root = this.root,\n config = this.config,\n _state = this._state;\n\n if (!root) {\n return;\n }\n\n this.updateLinePos(offset, cwidth);\n // let now = offset / cwidth * player.duration\n // now = now < 0 ? 0 : (now > player.duration ? player.duration : now)\n _state.now = time;\n var timeStr = Util.format(time);\n if (e && e.target && Util.hasClass(e.target, 'xgplayer-spot')) {\n this.showTips(e.target.getAttribute('data-text'), false, timeStr);\n _state.f = true;\n config.isFocusDots && _state.f && (_state.now = parseInt(e.target.getAttribute('data-time'), 10));\n } else if (config.defaultText) {\n _state.f = false;\n this.showTips(config.defaultText, true, timeStr);\n } else {\n _state.f = false;\n this.hideTips('');\n }\n this.updateTimeText(timeStr);\n this.updateThumbnails(_state.now);\n }\n }, {\n key: 'updateThumbnails',\n value: function updateThumbnails(time) {\n var player = this.player,\n videoPreview = this.videoPreview;\n var thumbnail = player.plugins.thumbnail;\n\n if (thumbnail && thumbnail.usable) {\n this.thumbnail && thumbnail.update(this.thumbnail, time, 160, 90);\n var rect = videoPreview && videoPreview.getBoundingClientRect();\n this.videothumbnail && thumbnail.update(this.videothumbnail, time, rect.width, rect.height);\n }\n }\n }, {\n key: 'registerThumbnail',\n value: function registerThumbnail() {\n var thumbnailConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Sniffer.device === 'mobile') {\n return;\n }\n var player = this.player,\n config = this.config;\n\n var thumbnail = player.getPlugin('thumbnail');\n if (thumbnail) {\n Object.keys(thumbnailConfig).map(function (key) {\n thumbnail.config[key] = thumbnailConfig[key];\n });\n }\n if (!thumbnail || !thumbnail.usable || !config.isShowThumbnail) {\n Util.addClass(this.root, 'short-line no-thumbnail');\n return;\n } else {\n Util.removeClass(this.root, 'short-line no-thumbnail');\n }\n this._hasThumnail = true;\n var tRoot = this.find('.xg-spot-thumbnail');\n this.thumbnail = thumbnail.createThumbnail(tRoot, 'progress-thumbnail');\n if (config.isShowCoverPreview) {\n this.videoPreview = Util.createDom('xg-video-preview', '', {}, 'xgvideo-preview');\n player.root.appendChild(this.videoPreview);\n this.videothumbnail = thumbnail.createThumbnail(this.videoPreview, 'xgvideo-thumbnail');\n }\n }\n }, {\n key: 'calcuPosition',\n value: function calcuPosition(time, duration) {\n var progress = this.player.plugins.progress;\n var player = this.player;\n\n var totalWidth = progress.root.getBoundingClientRect().width;\n var widthPerSeconds = player.duration / totalWidth * 6;\n var ret = {};\n if (time + duration > player.duration) {\n duration = player.duration - time;\n }\n ret.left = time / player.duration * 100;\n ret.width = duration / player.duration;\n ret.isMini = widthPerSeconds > duration;\n return {\n left: time / player.duration * 100,\n width: duration / player.duration * 100,\n isMini: duration < widthPerSeconds\n };\n }\n }, {\n key: 'showDot',\n value: function showDot(id) {\n var dot = this.findDot(id);\n if (dot) {\n var rect = this.root.getBoundingClientRect();\n var width = rect.width;\n\n var offset = dot.time / this.player.duration * width;\n this.updatePosition(offset, width, dot.time);\n }\n }\n }, {\n key: 'showTips',\n value: function showTips(text, isDefault) {\n var timeStr = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n\n if (!text) {\n return;\n }\n Util.addClass(this.root, 'no-timepoint');\n Util.addClass(this.find('.xg-spot-content'), 'show-text');\n if (isDefault && this.config.mode === 'production') {\n Util.addClass(this.root, 'product');\n this.tipText.textContent = text;\n } else {\n Util.removeClass(this.root, 'product');\n this.tipText.textContent = this._hasThumnail ? text : timeStr + ' ' + text;\n }\n }\n }, {\n key: 'hideTips',\n value: function hideTips() {\n Util.removeClass(this.root, 'no-timepoint');\n this.tipText.textContent = '';\n Util.removeClass(this.find('.xg-spot-content'), 'show-text');\n Util.removeClass(this.root, 'product');\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n var _this3 = this;\n\n var progress = this.player.plugins.progress;\n\n progress && Object.keys(CALLBACK_MAP).map(function (key) {\n progress.removeCallBack(key, _this3[CALLBACK_MAP[key]]);\n });\n this.videothumbnail = null;\n this.thumbnail = null;\n this.videoPreview && this.player.root.removeChild(this.videoPreview);\n this.unbind('.xg-spot-info', 'mousemove', this.onMousemove);\n this.unbind('.xg-spot-info', 'mousedown', this.onMousedown);\n this.unbind('.xg-spot-content', 'mouseup', this.handlerPreviewClick);\n }\n }, {\n key: 'render',\n value: function render() {\n if (Sniffer.device === 'mobile' || this.playerConfig.isMobileSimulateMode) {\n return '';\n }\n\n return '
\\n
\\n
\\n \\n
\\n
\\n
\\n
00:00
\\n
\\n
';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'progresspreview';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n index: 1,\n miniWidth: 6, // 故事点显示最小宽度\n ispots: [], // 故事点列表\n defaultText: '', // 故事点hover默认文案\n isFocusDots: true, //\n isShowThumbnail: true, // 是否显示预览图\n isShowCoverPreview: false, // 进度条拖动时是否显示播放区域预览图\n mode: '' // short // production\n };\n }\n }]);\n\n return ProgressPreview;\n}(Plugin);\n\nexport default ProgressPreview;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/* eslint-disable camelcase */\nimport BasePlugin, { Util } from '../../plugin';\n\nvar Thumbnail = function (_BasePlugin) {\n _inherits(Thumbnail, _BasePlugin);\n\n _createClass(Thumbnail, null, [{\n key: 'pluginName',\n get: function get() {\n return 'thumbnail';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n isShow: false,\n urls: [], // 有多张大图就多个url就好\n pic_num: 0, // 每张图含有几个雪碧图\n col: 0, // 截图列数\n row: 0, // 截图行数\n height: 90, // 缩略图高度\n width: 160, // 缩略图宽度\n scale: 1, // 缩放\n className: '', // 额外添加在dom上的class\n hidePortrait: false // 是否在竖屏的时候隐藏\n };\n }\n }]);\n\n function Thumbnail(args) {\n _classCallCheck(this, Thumbnail);\n\n var _this = _possibleConstructorReturn(this, (Thumbnail.__proto__ || Object.getPrototypeOf(Thumbnail)).call(this, args));\n\n _this.ratio = 1;\n _this.interval = null;\n _this.preloadMark = {};\n return _this;\n }\n\n _createClass(Thumbnail, [{\n key: 'afterCreate',\n value: function afterCreate() {\n if (this.usable) {\n this.initThumbnail();\n }\n }\n }, {\n key: 'initThumbnail',\n value: function initThumbnail() {\n var _config = this.config,\n width = _config.width,\n height = _config.height,\n pic_num = _config.pic_num,\n interval = _config.interval;\n\n this.ratio = width / height * 100;\n this.interval = interval || Math.round(this.player.duration / pic_num);\n this.preload(0);\n // this.preIndex = new Array(urls.length)\n // this.interval = interval || Math.round(this.player.duration / pic_num)\n // this.ratio = width / height * 100\n // className && Util.addClass(this.root, className)\n // hidePortrait && Util.addClass(this.root, 'portrait')\n // width && (this.root.style.width = `${width}px`)\n // height && (this.root.style.height = `${height}px`)\n // this.root.style.backgroundSize = `${width * col}px auto`\n }\n }, {\n key: 'getUrlByIndex',\n value: function getUrlByIndex(index) {\n return index >= 0 && index < this.config.urls.length ? this.config.urls[index] : '';\n }\n }, {\n key: 'preload',\n value: function preload(index) {\n var _this2 = this;\n\n var urls = this.config.urls;\n\n var len = urls.length;\n var arr = [index - 1, index, index + 1, index + 2];\n arr.map(function (item) {\n if (!_this2.preloadMark[item] && item >= 0 && item < len) {\n Util.preloadImg(urls[item]);\n _this2.preloadMark[item] = true;\n }\n });\n }\n }, {\n key: 'getPosition',\n value: function getPosition(now) {\n var containerWidth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var containerHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var _config2 = this.config,\n pic_num = _config2.pic_num,\n row = _config2.row,\n col = _config2.col,\n width = _config2.width,\n height = _config2.height;\n\n this.interval = Math.round(this.player.duration / pic_num);\n var index = Math.ceil(now / this.interval); // 当前时间对应的图像索引\n index = index > pic_num ? pic_num : index;\n var urlIndex = index < row * col ? 0 : Math.ceil(index / (row * col)) - 1; // 当前图像所在的url索引\n var indexInPage = index - urlIndex * (col * row); // 当前图像在当前url中的索引\n var rowIndex = indexInPage > 0 ? Math.ceil(indexInPage / col) - 1 : 0; // 当前图像在当前url中的行索引\n var colIndex = indexInPage > 0 ? indexInPage - rowIndex * col - 1 : 0; // 当前图像在当前url中的列索引\n var swidth = 0; // containerWidth || width\n var sHeight = 0; // swidth * height / width\n\n // 根据入参的宽高适配样式\n if (containerWidth && containerHeight) {\n var per = containerWidth / containerHeight;\n if (per < width / height) {\n swidth = containerWidth;\n sHeight = swidth / (width / height);\n } else {\n sHeight = containerHeight;\n swidth = sHeight * (width / height);\n }\n } else {\n swidth = containerWidth || width;\n sHeight = swidth / (width / height);\n }\n var url = this.getUrlByIndex(urlIndex);\n return {\n urlIndex: urlIndex,\n rowIndex: rowIndex,\n colIndex: colIndex,\n url: url,\n height: sHeight,\n width: swidth,\n style: {\n backgroundImage: 'url(' + url + ')',\n backgroundSize: swidth * col + 'px auto',\n backgroundPosition: '-' + colIndex * swidth + 'px -' + rowIndex * sHeight + 'px',\n width: swidth + 'px',\n height: sHeight + 'px'\n }\n };\n }\n }, {\n key: 'update',\n value: function update(dom, now) {\n var containerWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var containerHeight = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var customStyle = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '';\n var _config3 = this.config,\n pic_num = _config3.pic_num,\n urls = _config3.urls;\n\n if (pic_num <= 0 || !urls || urls.length === 0) {\n return;\n }\n var pos = this.getPosition(now, containerWidth, containerHeight);\n this.preload(pos.urlIndex);\n\n Object.keys(pos.style).map(function (key) {\n dom.style[key] = pos.style[key];\n });\n Object.keys(customStyle).map(function (key) {\n dom.style[key] = customStyle[key];\n });\n }\n }, {\n key: 'createThumbnail',\n value: function createThumbnail(root, className) {\n var dom = Util.createDom('xg-thumbnail', '', {}, 'thumbnail ' + className);\n root && root.appendChild(dom);\n return dom;\n }\n }, {\n key: 'usable',\n get: function get() {\n var _config4 = this.config,\n urls = _config4.urls,\n pic_num = _config4.pic_num;\n\n return urls && urls.length > 0 && pic_num > 0;\n }\n }]);\n\n return Thumbnail;\n}(BasePlugin);\n\nexport default Thumbnail;","var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport SubTitles from 'xgplayer-subtitles';\nimport { Util, POSITIONS } from '../../plugin';\nimport OptionsIcon from '../common/optionsIcon';\n\nvar DEFAULT_CLOSE_TYPE = 'text-close';\n\nfunction formartList(list) {\n var defaultIndex = -1;\n list.map(function (item, index) {\n if (!item.id && !item.language) {\n item.id = index;\n }\n !item.url && (item.url = item.src);\n !item.text && (item.text = item.label);\n !item.language && (item.language = item.srclang);\n item.isDefault === undefined && (item.isDefault = item.default);\n if (item.isDefault || item.default) {\n defaultIndex = index;\n }\n });\n return defaultIndex;\n}\n\nvar TextTrack = function (_OptionsIcon) {\n _inherits(TextTrack, _OptionsIcon);\n\n _createClass(TextTrack, null, [{\n key: 'pluginName',\n get: function get() {\n return 'texttrack';\n }\n // 默认配置信息\n\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {\n position: POSITIONS.CONTROLS_RIGHT,\n index: 6,\n list: [],\n isDefaultOpen: true,\n style: {\n follow: true, // 是否跟随控制栏调整位置\n mode: 'stroke', // 字体显示模式,默认是描边\n followBottom: 50, // 跟随底部控制栏的高度\n fitVideo: true, // 是否跟随视频自动调整字号\n offsetBottom: 2, // 字幕距离画面底部百分比,默认2%\n baseSizeX: 49, // 横屏视频适配基准字号\n baseSizeY: 28, // 竖屏视频适配基准字号\n minSize: 16, // pc端最小字号\n minMobileSize: 13, // 移动端最小字号\n line: 'double', // 最大显示行数 single/double/three\n fontColor: '#fff' // 字体颜色\n },\n closeText: { text: '不开启', iconText: '字幕' },\n className: 'xgplayer-texttrack',\n hidePortrait: false\n };\n }\n }]);\n\n function TextTrack(args) {\n _classCallCheck(this, TextTrack);\n\n var _this = _possibleConstructorReturn(this, (TextTrack.__proto__ || Object.getPrototypeOf(TextTrack)).call(this, args));\n\n _this.curRate = 1;\n return _this;\n }\n\n _createClass(TextTrack, [{\n key: 'beforeCreate',\n value: function beforeCreate(args) {\n var texttrack = args.player.config.texttrack || args.player.config.textTrack;\n if (Util.typeOf(texttrack) === 'Array') {\n args.config.list = texttrack;\n }\n }\n }, {\n key: 'afterCreate',\n value: function afterCreate() {\n var _config = this.config,\n list = _config.list,\n style = _config.style,\n isDefaultOpen = _config.isDefaultOpen;\n\n if (!list || list.length < 1) {\n return;\n }\n var defaultIndex = formartList(list);\n // 如果配置信息为默认开启,但是没有默认开启的语言,则默认第一个\n if (isDefaultOpen && defaultIndex < 0) {\n list[0].isDefault = true;\n }\n\n _get(TextTrack.prototype.__proto__ || Object.getPrototypeOf(TextTrack.prototype), 'afterCreate', this).call(this);\n\n var config = {\n subTitles: list,\n defaultOpen: isDefaultOpen\n };\n Object.keys(style).map(function (key) {\n config[key] = style[key];\n });\n this.subTitles = new SubTitles(config);\n this.subTitles.attachPlayer(this.player);\n }\n }, {\n key: 'show',\n value: function show() {\n if (!this.config.list || this.config.list.length === 0) {\n return;\n }\n _get(TextTrack.prototype.__proto__ || Object.getPrototypeOf(TextTrack.prototype), 'show', this).call(this);\n }\n\n // 更新字幕信息\n\n }, {\n key: 'updateSubtitles',\n value: function updateSubtitles() {\n var _this2 = this;\n\n var list = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var isDefaultOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var defaultIndex = formartList(list);\n var curLanguage = this.subTitles && this.subTitles.currentText ? this.subTitles.currentText.language : null;\n var cuIndex = null;\n list.map(function (item, index) {\n if (item.language === curLanguage) {\n item.isDefault = true;\n cuIndex = index;\n }\n });\n if (defaultIndex > -1 && defaultIndex !== cuIndex) {\n list[defaultIndex].isDefault = false;\n }\n this.subTitles.destroy();\n var config = {\n subTitles: list,\n defaultOpen: isDefaultOpen\n };\n Object.keys(this.config.style).map(function (key) {\n config[key] = _this2.config.style[key];\n });\n this.subTitles = new SubTitles(config);\n this.subTitles.attachPlayer(this.player);\n this.renderItemList();\n }\n }, {\n key: 'onItemClick',\n value: function onItemClick(e, data) {\n _get(TextTrack.prototype.__proto__ || Object.getPrototypeOf(TextTrack.prototype), 'onItemClick', this).apply(this, arguments);\n var target = e.delegateTarget;\n var language = target.getAttribute('language');\n var id = target.getAttribute('data-id');\n var type = target.getAttribute('data-type');\n if (this.subTitles) {\n if (type === DEFAULT_CLOSE_TYPE) {\n this.subTitles.switchOff();\n } else {\n this.subTitles.switch({ language: language, id: id }).catch(function (error) {\n console.log('onItemClick', error);\n });\n }\n }\n }\n }, {\n key: 'changeCurrentText',\n value: function changeCurrentText() {\n var _config2 = this.config,\n list = _config2.list,\n closeText = _config2.closeText;\n\n var index = this.curIndex;\n if (index - 1 < 0) {\n this.find('.icon-text').innerHTML = this.getTextByLang(closeText, 'iconText');\n } else if (index - 1 < list.length) {\n var curItem = list[index - 1];\n if (!curItem) return;\n this.find('.icon-text').innerHTML = this.getTextByLang(curItem, 'iconText');\n }\n }\n }, {\n key: 'renderItemList',\n value: function renderItemList() {\n var _this3 = this;\n\n var _config3 = this.config,\n list = _config3.list,\n closeText = _config3.closeText;\n\n var curIndex = 0;\n var items = [];\n items.push({\n showText: this.getTextByLang(closeText),\n 'data-type': DEFAULT_CLOSE_TYPE\n });\n list.map(function (item, index) {\n var itemInfo = {\n language: item.language || item.srclang,\n 'data-id': item.id\n };\n if (item.default || item.isDefault) {\n itemInfo.isCurrent = true;\n curIndex = index + 1;\n }\n itemInfo.showText = _this3.getTextByLang(item);\n items.push(itemInfo);\n });\n _get(TextTrack.prototype.__proto__ || Object.getPrototypeOf(TextTrack.prototype), 'renderItemList', this).call(this, items, curIndex);\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n if (this.subTitles) {\n this.subTitles.destroy();\n this.subTitles = null;\n }\n _get(TextTrack.prototype.__proto__ || Object.getPrototypeOf(TextTrack.prototype), 'destroy', this).call(this);\n }\n }]);\n\n return TextTrack;\n}(OptionsIcon);\n\nexport default TextTrack;","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport Plugin from '../../plugin';\n\nvar MiniProgress = function (_Plugin) {\n _inherits(MiniProgress, _Plugin);\n\n function MiniProgress() {\n _classCallCheck(this, MiniProgress);\n\n return _possibleConstructorReturn(this, (MiniProgress.__proto__ || Object.getPrototypeOf(MiniProgress)).apply(this, arguments));\n }\n\n _createClass(MiniProgress, [{\n key: 'afterCreate',\n value: function afterCreate() {}\n }, {\n key: 'update',\n value: function update() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { cached: 0, played: 0 };\n var duration = arguments[1];\n\n if (!duration || !this.root) {\n return;\n }\n if (data.cached) {\n this.find('xg-mini-progress-cache').style.width = data.cached / duration * 100 + '%';\n }\n if (data.played) {\n this.find('xg-mini-progress-played').style.width = data.played / duration * 100 + '%';\n }\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.playerConfig.progress || !this.playerConfig.miniprogress) {\n return;\n }\n return '\\n \\n \\n ';\n }\n }], [{\n key: 'pluginName',\n get: function get() {\n return 'MiniProgress';\n }\n }, {\n key: 'defaultConfig',\n get: function get() {\n return {};\n }\n }]);\n\n return MiniProgress;\n}(Plugin);\n\nexport default MiniProgress;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nimport sniffer from '../utils/sniffer';\n// import Danmu from '../plugins/danmu'\nimport Replay from '../plugins/replay';\nimport Poster from '../plugins/poster';\nimport Start from '../plugins/start';\nimport Enter from '../plugins/enter';\nimport Miniscreen from '../plugins/miniScreen';\nimport PC from '../plugins/pc';\nimport Mobile from '../plugins/mobile';\nimport Keyboard from '../plugins/keyboard';\nimport Loading from '../plugins/loading';\nimport Progress from '../plugins/progress';\nimport PlayIcon from '../plugins/play';\nimport FullScreen from '../plugins/fullscreen';\nimport TimeIcon from '../plugins/time';\nimport Volume from '../plugins/volume';\nimport RotateIcon from '../plugins/rotate';\nimport PIPIcon from '../plugins/pip';\nimport PlayNextIcon from '../plugins/playNext';\nimport DownLoadIcon from '../plugins/download';\nimport ScreenShotIcon from '../plugins/screenShot';\nimport DefinitionIcon from '../plugins/definition';\nimport PlaybackRateIcon from '../plugins/playbackRate';\nimport CssFullScreen from '../plugins/cssFullScreen';\nimport Error from '../plugins/error';\nimport Prompt from '../plugins/prompt';\nimport ProgressPreview from '../plugins/progressPreview';\nimport Thumbnail from '../plugins/common/thumbnail';\nimport TextTrack from '../plugins/track';\nimport MiniProgress from '../plugins/progress/miniProgress';\n\nvar DefaultPreset = function DefaultPreset(options, playerConfig) {\n var _plugins, _plugins2, _plugins3;\n\n _classCallCheck(this, DefaultPreset);\n\n var simulateMode = playerConfig && playerConfig.isMobileSimulateMode;\n var contolsIcons = [Progress, PlayIcon, FullScreen, TimeIcon, RotateIcon, PlayNextIcon, DefinitionIcon, PlaybackRateIcon, DownLoadIcon, ScreenShotIcon, Volume, TextTrack, MiniProgress];\n\n var barIcons = [PIPIcon];\n\n var layers = [Replay, Poster, Start, Loading, Enter, Error, Prompt, Thumbnail, ProgressPreview];\n\n this.plugins = [].concat(contolsIcons, layers);\n var mode = simulateMode ? 'mobile' : sniffer.device;\n switch (mode) {\n case 'pc':\n (_plugins = this.plugins).push.apply(_plugins, [Keyboard, PC, CssFullScreen].concat(barIcons, [Miniscreen]));\n break;\n case 'mobile':\n (_plugins2 = this.plugins).push.apply(_plugins2, [Mobile].concat(barIcons).concat([Miniscreen]));\n break;\n default:\n (_plugins3 = this.plugins).push.apply(_plugins3, [Keyboard, PC, CssFullScreen].concat(barIcons, [Miniscreen]));\n }\n this.ignores = [];\n};\n\nexport default DefaultPreset;","import Player, { Util, Sniffer, Errors, Events, Plugin, BasePlugin, I18N } from './player';\n\nimport defaultPreset from './presets/default';\n\nPlayer.defaultPreset = defaultPreset;\nPlayer.Util = Util;\nPlayer.Sniffer = Sniffer;\nPlayer.Errors = Errors;\nPlayer.Events = Events;\nPlayer.Plugin = Plugin;\nPlayer.BasePlugin = BasePlugin;\nPlayer.I18N = I18N;\n\nexport default Player;","//download.js v4.2, by dandavis; 2008-2016. [MIT] see http://danml.com/download.html for tests/usage\n// v1 landed a FF+Chrome compat way of downloading strings to local un-named files, upgraded to use a hidden frame and optional mime\n// v2 added named files via a[download], msSaveBlob, IE (10+) support, and window.URL support for larger+faster saves than dataURLs\n// v3 added dataURL and Blob Input, bind-toggle arity, and legacy dataURL fallback was improved with force-download mime and base64 support. 3.1 improved safari handling.\n// v4 adds AMD/UMD, commonJS, and plain browser support\n// v4.1 adds url download capability via solo URL argument (same domain/CORS only)\n// v4.2 adds semantic variable names, long (over 2MB) dataURL support, and hidden by default temp anchors\n// https://github.com/rndme/download\n\n(function (root, factory) {\n\tif (typeof define === 'function' && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([], factory);\n\t} else if (typeof exports === 'object') {\n\t\t// Node. Does not work with strict CommonJS, but\n\t\t// only CommonJS-like environments that support module.exports,\n\t\t// like Node.\n\t\tmodule.exports = factory();\n\t} else {\n\t\t// Browser globals (root is window)\n\t\troot.download = factory();\n }\n}(this, function () {\n\n\treturn function download(data, strFileName, strMimeType) {\n\n\t\tvar self = window, // this script is only for browsers anyway...\n\t\t\tdefaultMime = \"application/octet-stream\", // this default mime also triggers iframe downloads\n\t\t\tmimeType = strMimeType || defaultMime,\n\t\t\tpayload = data,\n\t\t\turl = !strFileName && !strMimeType && payload,\n\t\t\tanchor = document.createElement(\"a\"),\n\t\t\ttoString = function(a){return String(a);},\n\t\t\tmyBlob = (self.Blob || self.MozBlob || self.WebKitBlob || toString),\n\t\t\tfileName = strFileName || \"download\",\n\t\t\tblob,\n\t\t\treader;\n\t\t\tmyBlob= myBlob.call ? myBlob.bind(self) : Blob ;\n\t \n\t\tif(String(this)===\"true\"){ //reverse arguments, allowing download.bind(true, \"text/xml\", \"export.xml\") to act as a callback\n\t\t\tpayload=[payload, mimeType];\n\t\t\tmimeType=payload[0];\n\t\t\tpayload=payload[1];\n\t\t}\n\n\n\t\tif(url && url.length< 2048){ // if no filename and no mime, assume a url was passed as the only argument\n\t\t\tfileName = url.split(\"/\").pop().split(\"?\")[0];\n\t\t\tanchor.href = url; // assign href prop to temp anchor\n\t\t \tif(anchor.href.indexOf(url) !== -1){ // if the browser determines that it's a potentially valid url path:\n \t\tvar ajax=new XMLHttpRequest();\n \t\tajax.open( \"GET\", url, true);\n \t\tajax.responseType = 'blob';\n \t\tajax.onload= function(e){ \n\t\t\t\t download(e.target.response, fileName, defaultMime);\n\t\t\t\t};\n \t\tsetTimeout(function(){ ajax.send();}, 0); // allows setting custom ajax headers using the return:\n\t\t\t return ajax;\n\t\t\t} // end if valid url?\n\t\t} // end if url?\n\n\n\t\t//go ahead and download dataURLs right away\n\t\tif(/^data:([\\w+-]+\\/[\\w+.-]+)?[,;]/.test(payload)){\n\t\t\n\t\t\tif(payload.length > (1024*1024*1.999) && myBlob !== toString ){\n\t\t\t\tpayload=dataUrlToBlob(payload);\n\t\t\t\tmimeType=payload.type || defaultMime;\n\t\t\t}else{\t\t\t\n\t\t\t\treturn navigator.msSaveBlob ? // IE10 can't do a[download], only Blobs:\n\t\t\t\t\tnavigator.msSaveBlob(dataUrlToBlob(payload), fileName) :\n\t\t\t\t\tsaver(payload) ; // everyone else can save dataURLs un-processed\n\t\t\t}\n\t\t\t\n\t\t}else{//not data url, is it a string with special needs?\n\t\t\tif(/([\\x80-\\xff])/.test(payload)){\t\t\t \n\t\t\t\tvar i=0, tempUiArr= new Uint8Array(payload.length), mx=tempUiArr.length;\n\t\t\t\tfor(i;i=0&&t=r?r-1:n,e[n].start<=t&&te[i].end&&i+1e[i].end&&i+1>=r)return-1}return-1}function f(t){return Object.prototype.toString.call(t).match(/([^\\s.*]+)(?=]$)/g)[0]}function h(){var t=navigator.userAgent,e=/(?:Windows Phone)/.test(t),n=/(?:SymbianOS)/.test(t)||e,r=/(?:Android)/.test(t),i=/(?:Firefox)/.test(t),o=/(?:iPad|PlayBook)/.test(t)||r&&!/(?:Mobile)/.test(t)||i&&/(?:Tablet)/.test(t);return/(?:iPhone)/.test(t)&&!o||r||n||o}function p(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"\",n=\"\";t.map(function(t){n+=\" \"+e+\" \"+t.key+\" {\"+t.style+\"}\"});var r=document.createElement(\"style\"),i=document.head||document.getElementsByTagName(\"head\")[0];if(r.type=\"text/css\",r.id=\"ssss\",r.styleSheet){var o=function(){try{style.styleSheet.cssText=n}catch(t){}};r.styleSheet.disabled?setTimeout(o,10):o()}else{var a=document.createTextNode(n);r.appendChild(a)}i.appendChild(r)}function d(t,e){Kr||(Kr=new $r),Kr.addObserver(t,e)}function v(t,e){Kr&&Kr.unObserver(t,e)}function y(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={code:Xr[t].code,msg:Xr[t].msg};return an(e).map(function(t){n[t]=e[t]}),n}function g(t){return new rn(function(e,n){t.list&&e(t),new Cn({url:t.url,type:\"text\"}).then(function(r){Un.parse(r.res.response,function(r,i){if(i){var o=y(2,i);console.trace(o),n(o,{format:r.format})}else if(r.format)t.list=r.list,t.format=r.format,t.styles=r.styles,e(t);else{var a=y(3);console.trace(a),n(a)}})}).catch(function(t){var e=y(1,{statusText:t.statusText,status:t.status,type:t.type,message:\"http load error\"});console.trace(e),n(e)})})}function m(t,e){return!!(t.id&&t.id===e.id||t.language&&t.language===e.language)}var _=t(e(function(t,e){e.__esModule=!0,e.default=function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}})),b=e(function(t){var e=t.exports=\"undefined\"!=typeof window&&window.Math==Math?window:\"undefined\"!=typeof self&&self.Math==Math?self:Function(\"return this\")();\"number\"==typeof __g&&(__g=e)}),x=e(function(t){var e=t.exports={version:\"2.6.12\"};\"number\"==typeof __e&&(__e=e)}),k=(x.version,function(t){if(\"function\"!=typeof t)throw TypeError(t+\" is not a function!\");return t}),w=function(t,e,n){if(k(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}},T=function(t){return\"object\"==typeof t?null!==t:\"function\"==typeof t},S=function(t){if(!T(t))throw TypeError(t+\" is not an object!\");return t},O=function(t){try{return!!t()}catch(t){return!0}},j=!O(function(){return 7!=Object.defineProperty({},\"a\",{get:function(){return 7}}).a}),P=b.document,E=T(P)&&T(P.createElement),M=function(t){return E?P.createElement(t):{}},A=!j&&!O(function(){return 7!=Object.defineProperty(M(\"div\"),\"a\",{get:function(){return 7}}).a}),R=function(t,e){if(!T(t))return t;var n,r;if(e&&\"function\"==typeof(n=t.toString)&&!T(r=n.call(t)))return r;if(\"function\"==typeof(n=t.valueOf)&&!T(r=n.call(t)))return r;if(!e&&\"function\"==typeof(n=t.toString)&&!T(r=n.call(t)))return r;throw TypeError(\"Can't convert object to primitive value\")},L=Object.defineProperty,C={f:j?Object.defineProperty:function(t,e,n){if(S(t),e=R(e,!0),S(n),A)try{return L(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw TypeError(\"Accessors not supported!\");return\"value\"in n&&(t[e]=n.value),t}},N=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},I=j?function(t,e,n){return C.f(t,e,N(1,n))}:function(t,e,n){return t[e]=n,t},F={}.hasOwnProperty,z=function(t,e){return F.call(t,e)},B=function(t,e,n){var r,i,o,a=t&B.F,s=t&B.G,c=t&B.S,u=t&B.P,l=t&B.B,f=t&B.W,h=s?x:x[e]||(x[e]={}),p=h.prototype,d=s?b:c?b[e]:(b[e]||{}).prototype;s&&(n=e);for(r in n)(i=!a&&d&&void 0!==d[r])&&z(h,r)||(o=i?d[r]:n[r],h[r]=s&&\"function\"!=typeof d[r]?n[r]:l&&i?w(o,b):f&&d[r]==o?function(t){var e=function(e,n,r){if(this instanceof t){switch(arguments.length){case 0:return new t;case 1:return new t(e);case 2:return new t(e,n)}return new t(e,n,r)}return t.apply(this,arguments)};return e.prototype=t.prototype,e}(o):u&&\"function\"==typeof o?w(Function.call,o):o,u&&((h.virtual||(h.virtual={}))[r]=o,t&B.R&&p&&!p[r]&&I(p,r,o)))};B.F=1,B.G=2,B.S=4,B.P=8,B.B=16,B.W=32,B.U=64,B.R=128;var H=B;H(H.S+H.F*!j,\"Object\",{defineProperty:C.f});var V=x.Object,D=function(t,e,n){return V.defineProperty(t,e,n)},W=e(function(t){t.exports={default:D,__esModule:!0}});t(W);var G=t(e(function(t,e){e.__esModule=!0;var n=function(t){return t&&t.__esModule?t:{default:t}}(W);e.default=function(){function t(t,e){for(var r=0;r0?$:U)(t)},X=function(t){if(void 0==t)throw TypeError(\"Can't call method on \"+t);return t},Y=I,J={},q={}.toString,Z=function(t){return q.call(t).slice(8,-1)},Q=Object(\"z\").propertyIsEnumerable(0)?Object:function(t){return\"String\"==Z(t)?t.split(\"\"):Object(t)},tt=function(t){return Q(X(t))},et=Math.min,nt=function(t){return t>0?et(K(t),9007199254740991):0},rt=Math.max,it=Math.min,ot=function(t,e){return t=K(t),t<0?rt(t+e,0):it(t,e)},at=e(function(t){var e=b[\"__core-js_shared__\"]||(b[\"__core-js_shared__\"]={});(t.exports=function(t,n){return e[t]||(e[t]=void 0!==n?n:{})})(\"versions\",[]).push({version:x.version,mode:\"pure\",copyright:\"© 2020 Denis Pushkarev (zloirock.ru)\"})}),st=0,ct=Math.random(),ut=function(t){return\"Symbol(\".concat(void 0===t?\"\":t,\")_\",(++st+ct).toString(36))},lt=at(\"keys\"),ft=function(t){return lt[t]||(lt[t]=ut(t))},ht=function(t){return function(e,n,r){var i,o=tt(e),a=nt(o.length),s=ot(r,a);if(t&&n!=n){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((t||s in o)&&o[s]===n)return t||s||0;return!t&&-1}}(!1),pt=ft(\"IE_PROTO\"),dt=function(t,e){var n,r=tt(t),i=0,o=[];for(n in r)n!=pt&&z(r,n)&&o.push(n);for(;e.length>i;)z(r,n=e[i++])&&(~ht(o,n)||o.push(n));return o},vt=\"constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf\".split(\",\"),yt=Object.keys||function(t){return dt(t,vt)},gt=j?Object.defineProperties:function(t,e){S(t);for(var n,r=yt(e),i=r.length,o=0;i>o;)C.f(t,n=r[o++],e[n]);return t},mt=b.document,_t=mt&&mt.documentElement,bt=ft(\"IE_PROTO\"),xt=function(){},kt=function(){var t,e=M(\"iframe\"),n=vt.length;for(e.style.display=\"none\",_t.appendChild(e),e.src=\"javascript:\",(t=e.contentWindow.document).open(),t.write(\"