xgplayer 2.32.2 → 2.32.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/controls/danmu.js +3 -1
- package/browser/controls/errorRetry.js +1 -1
- package/browser/controls/nativeTextTrack.js +1 -1
- package/browser/core_player.js +1 -1
- package/browser/core_player.js.map +1 -1
- package/browser/index.js +7 -5
- package/browser/index.js.map +1 -1
- package/browser/simple_player.js +1 -1
- package/browser/simple_player.js.map +1 -1
- package/dist/controls/danmu.js +3 -1
- package/dist/controls/errorRetry.js +1 -1
- package/dist/controls/nativeTextTrack.js +1 -1
- package/dist/core_player.js +6 -7
- package/dist/core_player.js.map +1 -1
- package/dist/index.js +2881 -1887
- package/dist/index.js.map +1 -1
- package/dist/index.min.css +1 -0
- package/dist/index.min.js +2 -0
- package/dist/index.min.js.map +1 -0
- package/dist/simple_player.js +6 -7
- package/dist/simple_player.js.map +1 -1
- package/es/controls/danmu.js +3 -1
- package/es/controls/errorRetry.js +1 -1
- package/es/controls/nativeTextTrack.js +1 -1
- package/es/core_player.js +1 -1
- package/es/core_player.js.map +1 -1
- package/es/index.js +7 -5
- package/es/index.js.map +1 -1
- package/es/simple_player.js +1 -1
- package/es/simple_player.js.map +1 -1
- package/package.json +11 -2
- package/types/index.d.ts +0 -11
- package/postcss.config.js +0 -7
- package/src/bind/airplay.js +0 -10
- package/src/bind/cssFullscreen.js +0 -10
- package/src/bind/danmu.js +0 -10
- package/src/bind/definition.js +0 -10
- package/src/bind/download.js +0 -10
- package/src/bind/enter.js +0 -8
- package/src/bind/error.js +0 -8
- package/src/bind/errorRetry.js +0 -8
- package/src/bind/flex.js +0 -8
- package/src/bind/fullscreen.js +0 -10
- package/src/bind/i18n.js +0 -8
- package/src/bind/keyboard.js +0 -8
- package/src/bind/loading.js +0 -8
- package/src/bind/localPreview.js +0 -10
- package/src/bind/memoryPlay.js +0 -10
- package/src/bind/miniplayer.js +0 -10
- package/src/bind/mobile.js +0 -8
- package/src/bind/nativeTextTrack.js +0 -8
- package/src/bind/pc.js +0 -8
- package/src/bind/pip.js +0 -10
- package/src/bind/play.js +0 -10
- package/src/bind/playNext.js +0 -10
- package/src/bind/playbackRate.js +0 -8
- package/src/bind/poster.js +0 -8
- package/src/bind/progress.js +0 -8
- package/src/bind/reload.js +0 -10
- package/src/bind/replay.js +0 -10
- package/src/bind/rotate.js +0 -10
- package/src/bind/screenShot.js +0 -10
- package/src/bind/stallCheck.js +0 -8
- package/src/bind/start.js +0 -10
- package/src/bind/textTrack.js +0 -8
- package/src/bind/time.js +0 -8
- package/src/bind/volume.js +0 -10
- package/src/controls/airplay.js +0 -20
- package/src/controls/cssFullscreen.js +0 -49
- package/src/controls/danmu.js +0 -75
- package/src/controls/definition.js +0 -13
- package/src/controls/download.js +0 -28
- package/src/controls/errorRetry.js +0 -132
- package/src/controls/fullscreen.js +0 -145
- package/src/controls/keyboard.js +0 -214
- package/src/controls/localPreview.js +0 -32
- package/src/controls/memoryPlay.js +0 -14
- package/src/controls/miniplayer.js +0 -128
- package/src/controls/mobile.js +0 -100
- package/src/controls/pc.js +0 -123
- package/src/controls/pip.js +0 -52
- package/src/controls/play.js +0 -34
- package/src/controls/playNext.js +0 -29
- package/src/controls/reload.js +0 -24
- package/src/controls/replay.js +0 -30
- package/src/controls/rotate.js +0 -99
- package/src/controls/screenShot.js +0 -65
- package/src/controls/stallCheck.js +0 -38
- package/src/controls/start.js +0 -60
- package/src/controls/textTrack.js +0 -182
- package/src/controls/volume.js +0 -178
- package/src/controls.js +0 -36
- package/src/core_player.js +0 -13
- package/src/error.js +0 -74
- package/src/index.js +0 -57
- package/src/player.js +0 -553
- package/src/proxy.js +0 -495
- package/src/simple_player.js +0 -42
- package/src/skin/assets/airplay.svg +0 -1
- package/src/skin/assets/download.svg +0 -14
- package/src/skin/assets/exitCssFull.svg +0 -3
- package/src/skin/assets/exitFull.svg +0 -3
- package/src/skin/assets/loading.svg +0 -3
- package/src/skin/assets/panel.svg +0 -4
- package/src/skin/assets/pause.svg +0 -3
- package/src/skin/assets/play.svg +0 -3
- package/src/skin/assets/playNext.svg +0 -3
- package/src/skin/assets/reload.svg +0 -3
- package/src/skin/assets/replay.svg +0 -3
- package/src/skin/assets/requestCssFull.svg +0 -3
- package/src/skin/assets/requestFull.svg +0 -3
- package/src/skin/assets/rotate.svg +0 -11
- package/src/skin/assets/startPause.svg +0 -3
- package/src/skin/assets/startPlay.svg +0 -3
- package/src/skin/assets/volumeLarge.svg +0 -4
- package/src/skin/assets/volumeMuted.svg +0 -4
- package/src/skin/assets/volumeSmall.svg +0 -4
- package/src/skin/controls/airplay.js +0 -44
- package/src/skin/controls/cssFullscreen.js +0 -36
- package/src/skin/controls/danmu.js +0 -214
- package/src/skin/controls/definition.js +0 -251
- package/src/skin/controls/download.js +0 -29
- package/src/skin/controls/enter.js +0 -21
- package/src/skin/controls/error.js +0 -57
- package/src/skin/controls/flex.js +0 -13
- package/src/skin/controls/fullscreen.js +0 -43
- package/src/skin/controls/i18n.js +0 -168
- package/src/skin/controls/loading.js +0 -17
- package/src/skin/controls/localPreview.js +0 -18
- package/src/skin/controls/memoryPlay.js +0 -39
- package/src/skin/controls/miniplayer.js +0 -26
- package/src/skin/controls/nativeTextTrack.js +0 -153
- package/src/skin/controls/pip.js +0 -26
- package/src/skin/controls/play.js +0 -43
- package/src/skin/controls/playNext.js +0 -41
- package/src/skin/controls/playbackRate.js +0 -141
- package/src/skin/controls/poster.js +0 -18
- package/src/skin/controls/progress.js +0 -407
- package/src/skin/controls/reload.js +0 -29
- package/src/skin/controls/replay.js +0 -56
- package/src/skin/controls/rotate.js +0 -29
- package/src/skin/controls/screenShot.js +0 -27
- package/src/skin/controls/start.js +0 -62
- package/src/skin/controls/textTrack.js +0 -113
- package/src/skin/controls/time.js +0 -40
- package/src/skin/controls/volume.js +0 -63
- package/src/skin/index.js +0 -63
- package/src/skin/style/common/animation.scss +0 -16
- package/src/skin/style/common/svg-url.scss +0 -70
- package/src/skin/style/controls/airplay.scss +0 -35
- package/src/skin/style/controls/controls.scss +0 -40
- package/src/skin/style/controls/cssfullscreen.scss +0 -103
- package/src/skin/style/controls/danmu.scss +0 -333
- package/src/skin/style/controls/definition.scss +0 -76
- package/src/skin/style/controls/download.scss +0 -45
- package/src/skin/style/controls/enter.scss +0 -55
- package/src/skin/style/controls/error.scss +0 -34
- package/src/skin/style/controls/fullscreen.scss +0 -60
- package/src/skin/style/controls/icon.scss +0 -12
- package/src/skin/style/controls/live.scss +0 -9
- package/src/skin/style/controls/loading.scss +0 -44
- package/src/skin/style/controls/memoryPlay.scss +0 -28
- package/src/skin/style/controls/miniplayer.scss +0 -104
- package/src/skin/style/controls/pip.scss +0 -42
- package/src/skin/style/controls/placeholder.scss +0 -7
- package/src/skin/style/controls/play.scss +0 -79
- package/src/skin/style/controls/playNext.scss +0 -44
- package/src/skin/style/controls/playbackRate.scss +0 -82
- package/src/skin/style/controls/poster.scss +0 -19
- package/src/skin/style/controls/progress.scss +0 -182
- package/src/skin/style/controls/reload.scss +0 -43
- package/src/skin/style/controls/replay.scss +0 -46
- package/src/skin/style/controls/rotate.scss +0 -41
- package/src/skin/style/controls/screenShot.scss +0 -42
- package/src/skin/style/controls/start.scss +0 -78
- package/src/skin/style/controls/textTrack.scss +0 -87
- package/src/skin/style/controls/time.scss +0 -24
- package/src/skin/style/controls/tips.scss +0 -24
- package/src/skin/style/controls/videoProxy.scss +0 -6
- package/src/skin/style/controls/volume.scss +0 -143
- package/src/skin/style/index.scss +0 -88
- package/src/utils/sniffer.js +0 -47
- package/src/utils/url.js +0 -10
- package/src/utils/util.js +0 -358
- package/src/utils/xgplayerTimeRange.js +0 -17
- package/src/version.js +0 -7
- package/version.json +0 -3
- package/webpack.config.js +0 -168
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://xgplayer/webpack/universalModuleDefinition","webpack://xgplayer/webpack/bootstrap","webpack://xgplayer/./src/utils/util.js","webpack://xgplayer/./node_modules/css-loader/lib/css-base.js","webpack://xgplayer/./node_modules/style-loader/lib/addStyles.js","webpack://xgplayer/./node_modules/es5-ext/object/is-value.js","webpack://xgplayer/./src/error.js","webpack://xgplayer/./src/utils/sniffer.js","webpack://xgplayer/./node_modules/type/value/is.js","webpack://xgplayer/./src/utils/xgplayerTimeRange.js","webpack://xgplayer/./src/player.js","webpack://xgplayer/./src/skin/controls/i18n.js","webpack://xgplayer/./src/proxy.js","webpack://xgplayer/./node_modules/event-emitter/index.js","webpack://xgplayer/./node_modules/d/index.js","webpack://xgplayer/./node_modules/type/plain-function/is.js","webpack://xgplayer/./node_modules/type/function/is.js","webpack://xgplayer/./node_modules/type/prototype/is.js","webpack://xgplayer/./node_modules/type/object/is.js","webpack://xgplayer/./node_modules/es5-ext/object/assign/index.js","webpack://xgplayer/./node_modules/es5-ext/object/assign/is-implemented.js","webpack://xgplayer/./node_modules/es5-ext/object/assign/shim.js","webpack://xgplayer/./node_modules/es5-ext/object/keys/index.js","webpack://xgplayer/./node_modules/es5-ext/object/keys/is-implemented.js","webpack://xgplayer/./node_modules/es5-ext/object/keys/shim.js","webpack://xgplayer/./node_modules/es5-ext/function/noop.js","webpack://xgplayer/./node_modules/es5-ext/object/valid-value.js","webpack://xgplayer/./node_modules/es5-ext/object/normalize-options.js","webpack://xgplayer/./node_modules/es5-ext/string/#/contains/index.js","webpack://xgplayer/./node_modules/es5-ext/string/#/contains/is-implemented.js","webpack://xgplayer/./node_modules/es5-ext/string/#/contains/shim.js","webpack://xgplayer/./node_modules/es5-ext/object/valid-callable.js","webpack://xgplayer/./node_modules/event-emitter/all-off.js","webpack://xgplayer/./node_modules/es5-ext/object/valid-object.js","webpack://xgplayer/./node_modules/es5-ext/object/is-object.js","webpack://xgplayer/./src/skin/style/index.scss?43d7","webpack://xgplayer/./src/skin/style/index.scss","webpack://xgplayer/./node_modules/style-loader/lib/urls.js","webpack://xgplayer/./src/controls/mobile.js","webpack://xgplayer/./src/controls/pc.js","webpack://xgplayer/./src/controls/start.js","webpack://xgplayer/./src/skin/controls/start.js","webpack://xgplayer/./src/skin/assets/startPlay.svg","webpack://xgplayer/./src/skin/assets/startPause.svg","webpack://xgplayer/./src/skin/style/controls/start.scss?7b40","webpack://xgplayer/./src/skin/style/controls/start.scss","webpack://xgplayer/./src/controls/fullscreen.js","webpack://xgplayer/./src/controls/play.js","webpack://xgplayer/./src/controls/replay.js","webpack://xgplayer/./src/skin/controls/play.js","webpack://xgplayer/./src/skin/assets/play.svg","webpack://xgplayer/./src/skin/assets/pause.svg","webpack://xgplayer/./src/skin/style/controls/play.scss?80f8","webpack://xgplayer/./src/skin/style/controls/play.scss","webpack://xgplayer/./src/skin/controls/poster.js","webpack://xgplayer/./src/skin/style/controls/poster.scss?b40b","webpack://xgplayer/./src/skin/style/controls/poster.scss","webpack://xgplayer/./src/skin/controls/flex.js","webpack://xgplayer/./src/skin/style/controls/placeholder.scss?b5ec","webpack://xgplayer/./src/skin/style/controls/placeholder.scss","webpack://xgplayer/./src/skin/controls/fullscreen.js","webpack://xgplayer/./src/skin/assets/requestFull.svg","webpack://xgplayer/./src/skin/assets/exitFull.svg","webpack://xgplayer/./src/skin/style/controls/fullscreen.scss?66dd","webpack://xgplayer/./src/skin/style/controls/fullscreen.scss","webpack://xgplayer/./src/skin/controls/loading.js","webpack://xgplayer/./src/skin/assets/loading.svg","webpack://xgplayer/./src/skin/style/controls/loading.scss?397a","webpack://xgplayer/./src/skin/style/controls/loading.scss","webpack://xgplayer/./src/skin/controls/progress.js","webpack://xgplayer/./src/skin/style/controls/progress.scss?f0bf","webpack://xgplayer/./src/skin/style/controls/progress.scss","webpack://xgplayer/./src/skin/controls/time.js","webpack://xgplayer/./src/skin/style/controls/time.scss?b72e","webpack://xgplayer/./src/skin/style/controls/time.scss","webpack://xgplayer/./src/skin/controls/replay.js","webpack://xgplayer/./src/skin/assets/replay.svg","webpack://xgplayer/./src/skin/style/controls/replay.scss?a918","webpack://xgplayer/./src/skin/style/controls/replay.scss","webpack://xgplayer/./src/simple_player.js"],"names":["createDom","hasClass","addClass","removeClass","toggleClass","findDom","padStart","format","event","typeOf","deepCopy","getBgImage","copyDom","_setInterval","_clearInterval","createImgBtn","isWeiXin","isUc","computeWatchDur","offInDestroy","on","once","getBuffered2","checkIsBrowser","setStyle","checkWebkitSetPresentationMode","el","tpl","attrs","cname","dom","document","Object","key","value","item","className","reg","sel","charstr","String","len","length","maxlen","Math","chars","r","window","hour","time","minute","second","e","touch","src","dst","url","a","back","Array","node","context","setInterval","intervalFunc","clearInterval","btn","width","w","h","unit","height","Number","name","ua","played","arr","i","begin","end","j","b","watch_dur","object","_fn","fn","maxHoleDuration","buffered","vbuffered","start","diff","buffered_2","buf2len","buf2end","XgplayerTimeRange","style","elem","PresentationMode","PIP","INLINE","FULLSCREEN","video","util","module","exports","useSourceMap","list","toString","map","content","cssWithMappingToString","join","modules","mediaQuery","alreadyImportedModules","id","push","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","source","sourceRoot","concat","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","_undefined","require","val","ErrorTypes","network","code","msg","remark","mse","parse","decoder","runtime","timeout","other","Errors","errd","line","handle","version","errorCode","mediaError","arguments","arg","sniffer","get","navigator","ie","firfox","chrome","opera","safari","isWindowsPhone","isSymbian","isAndroid","isFireFox","isTablet","isPhone","isPc","index","Player","ignores","whitelist","lang","inactive","volume","controls","controlsList","unselectable","onselectstart","type","vid","console","s_i18n","self","fetch","method","headers","Accept","res","obj","evName","evFunc","player","containerSize","setTimeout","playPromise","isDelDom","clearTimeout","classNameList","destroyFunc","_replay","param","defaultUserGestureEventHandler","descriptor","k","controlLst","control","Proxy","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","REPLAY","ERROR","PLAY_TIPS","PAUSE_TIPS","PLAYNEXT_TIPS","DOWNLOAD_TIPS","ROTATE_TIPS","RELOAD_TIPS","FULLSCREEN_TIPS","EXITFULLSCREEN_TIPS","CSSFULLSCREEN_TIPS","EXITCSSFULLSCREEN_TIPS","TEXTTRACK","MINIPLAYER","SCREENSHOT","LIVE","OFF","MINIPLAYER_DRAG","AIRPLAY_TIPS","set","options","autoplay","playsinline","airplay","tabindex","mediaType","textTrackDom","track","styleStr","wrap","XgVideoProxy","trackDoms","lastBuffer","defaultVideoEventHandler","curBuffer","videoEventHandler","range","currentTime","bool","isTrue","isFinite","err","status","en","cn","rate","posterUrl","poster","vol","d","callable","apply","Function","prototype","call","create","defineProperty","defineProperties","hasOwnProperty","configurable","enumerable","writable","off","emit","methods","descriptors","base","listener","__ee__","__eeOnceListener__","listeners","candidate","splice","l","args","slice","o","isValue","isPlainFunction","assign","normalizeOpts","contains","dscr","c","desc","gs","undefined","isFunction","classRe","functionToString","test","isPrototype","error","isObject","constructor","possibleTypes","foo","bar","trzy","keys","max","dest","forEach","TypeError","process","opts1","result","str","indexOf","searchString","emitter","function","css","location","Error","baseUrl","protocol","host","currentDir","pathname","replace","fixedCss","fullMatch","origUrl","unquotedOrigUrl","trim","$1","newUrl","mobile","root","clk","_click_","clickedTime","first","onTouch","pc","fullscreen","onCanPlay","s_start","StartPlayIcon","StartPauseIcon","onPlayerReady","fullscreenEl","mode","fullscreenPromise","play","replay","s_play","playBtn","PlayIcon","PauseIcon","tipsText","tips","s_poster","s_flex","playceholder","s_fullscreen","fullscreenBtn","RequestFullIcon","ExitFullIcon","s_loading","container","Loading","isRotateFullscreen","s_progress","containerWidth","progress","outer","cache","point","thumbnail","dotItem","dot","dotEvent","text","duration","tnailPicNum","tnailWidth","tnailHeight","tnailCol","tnailRow","interval","tnailUrls","coverPreviewContainer","coverPreviewPoint","coverPreviewOuter","onLoadedmetadata","events","isRotate","left","move","now","indexInPage","tnaiRowIndex","tnaiColIndex","up","passive","containerLeft","compute","pointWidth","leave","onTimeupdate","precent","prevPrecent","onCurrentTimeChange","onSrcChange","onCacheUpdate","cacheUpdateEvents","s_time","onTimeChange","s_replay","replayText","ReplayIcon","path","transform","svg","Flex","Fullscreen","S_fullscreen","S_loading","Mobile","Pc","Play","S_play","S_progress","S_poster","S_time","Start","S_start","Replay","S_replay"],"mappings":"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C;;;;;;AC3ED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,EAAQ;;AAE9B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;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","file":"simple_player.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"xgplayer\"] = factory();\n\telse\n\t\troot[\"xgplayer\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 173);\n","import XgplayerTimeRange from './xgplayerTimeRange'\n\nexport function createDom(el = 'div', tpl = '', attrs = {}, cname = '') {\n let dom = document.createElement(el)\n dom.className = cname\n dom.innerHTML = tpl\n Object.keys(attrs).forEach(item => {\n let key = item\n let value = attrs[item]\n if (el === 'video' || el === 'audio') {\n if (value) {\n dom.setAttribute(key, value)\n }\n } else {\n dom.setAttribute(key, value)\n }\n })\n return dom\n}\n\nexport function hasClass(el, className) {\n if (!el) {\n return false;\n }\n\n if (el.classList) {\n return Array.prototype.some.call(el.classList, item => item === className)\n } else if (el.className) {\n return !!el.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n } else {\n return false;\n }\n}\n\nexport function addClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n className.replace(/(^\\s+|\\s+$)/g, '').split(/\\s+/g).forEach(item => {\n item && el.classList.add(item)\n })\n } else if (!hasClass(el, className)) {\n el.className += ' ' + className\n }\n}\n\nexport function removeClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n className.split(/\\s+/g).forEach(item => {\n el.classList.remove(item)\n })\n } else if (hasClass(el, className)) {\n className.split(/\\s+/g).forEach(item => {\n let reg = new RegExp('(\\\\s|^)' + item + '(\\\\s|$)')\n el.className = el.className.replace(reg, ' ')\n })\n }\n}\n\nexport function toggleClass(el, className) {\n if (!el) {\n return;\n }\n\n className.split(/\\s+/g).forEach(item => {\n if (hasClass(el, item)) {\n removeClass(el, item)\n } else {\n addClass(el, item)\n }\n })\n}\n\nexport function findDom(el = document, sel) {\n let dom\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 if (sel.indexOf('#') === 0) {\n dom = el.getElementById(sel.slice(1))\n }\n }\n return dom\n}\n\nexport function padStart(str, length, pad) {\n let charstr = String(pad)\n let len = length >> 0\n let maxlen = Math.ceil(len / charstr.length)\n let chars = []\n let r = String(str)\n while (maxlen--) {\n chars.push(charstr)\n }\n return chars.join('').substring(0, len - r.length) + r\n}\n\nexport function format(time) {\n if (window.isNaN(time)) {\n return ''\n }\n let hour = padStart(Math.floor(time / 3600), 2, 0)\n let minute = padStart(Math.floor((time - hour * 3600) / 60), 2, 0)\n let second = padStart(Math.floor((time - hour * 3600 - minute * 60)), 2, 0)\n return (hour === '00' ? [minute, second] : [hour, minute, second]).join(':')\n}\n\nexport function event(e) {\n if (e.touches) {\n let 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\nexport function typeOf(obj) {\n return Object.prototype.toString.call(obj).match(/([^\\s.*]+)(?=]$)/g)[0]\n}\n\nexport function deepCopy(dst, src) {\n if (typeOf(src) === 'Object' && typeOf(dst) === 'Object') {\n Object.keys(src).forEach(key => {\n if (typeOf(src[key]) === 'Object' && !(src[key] instanceof Node)) {\n if (!dst[key]) {\n dst[key] = src[key]\n } else {\n deepCopy(dst[key], src[key])\n }\n } else if (typeOf(src[key]) === 'Array') {\n dst[key] = 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}\nexport function getBgImage(el) {\n // fix: return current page url when url is none\n let url = (el.currentStyle || window.getComputedStyle(el, null)).backgroundImage\n if (!url || url === 'none') {\n return ''\n }\n let a = document.createElement('a')\n a.href = url.replace(/url\\(\"|\"\\)/g, '')\n return a.href\n}\n\nexport function copyDom(dom) {\n if (dom && dom.nodeType === 1) {\n let back = document.createElement(dom.tagName)\n Array.prototype.forEach.call(dom.attributes, (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\nexport function _setInterval(context, eventName, intervalFunc, frequency) {\n if (!context._interval[eventName]) {\n context._interval[eventName] = setInterval(intervalFunc.bind(context), frequency)\n }\n}\n\nexport function _clearInterval(context, eventName) {\n clearInterval(context._interval[eventName])\n context._interval[eventName] = null\n}\n\nexport function createImgBtn(name, imgUrl, width, height) {\n let btn = createDom(`xg-${name}`, '', {}, `xgplayer-${name}-img`)\n btn.style.backgroundImage = `url(\"${imgUrl}\")`\n if (width && height) {\n let w, h, unit\n ['px', 'rem', 'em', 'pt', 'dp', 'vw', 'vh', 'vm', '%'].every((item) => {\n if (width.indexOf(item) > -1 && height.indexOf(item) > -1) {\n w = Number(width.slice(0, width.indexOf(item)).trim())\n h = Number(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\nexport function isWeiXin() {\n let ua = window.navigator.userAgent.toLowerCase()\n return ua.indexOf('micromessenger') > -1\n}\n\nexport function isUc() {\n let ua = window.navigator.userAgent.toLowerCase()\n return ua.indexOf('ucbrowser') > -1\n}\n\nexport function computeWatchDur(played = []) {\n let arr = []\n for (let i = 0; i < played.length; i++) {\n if(!played[i].end || played[i].begin < 0 || played[i].end < 0 || played[i].end < played[i].begin) {\n continue\n }\n if(arr.length < 1) {\n arr.push({begin: played[i].begin, end: played[i].end})\n } else {\n for (let j = 0; j < arr.length; j++) {\n let begin = played[i].begin\n let end = played[i].end\n if(end < arr[j].begin) {\n arr.splice(j, 0, {begin, end})\n break\n } else if(begin > arr[j].end) {\n if(j > arr.length - 2) {\n arr.push({begin, end})\n break\n }\n } else {\n let b = arr[j].begin\n let e = arr[j].end\n arr[j].begin = Math.min(begin, b)\n arr[j].end = Math.max(end, e)\n break\n }\n }\n }\n }\n let watch_dur = 0\n for (let i = 0; i < arr.length; i++) {\n watch_dur += arr[i].end - arr[i].begin\n }\n return watch_dur\n}\n\nexport function offInDestroy(object, event, fn, offEvent) {\n function onDestroy () {\n object.off(event, fn)\n object.off(offEvent, onDestroy)\n }\n object.once(offEvent, onDestroy)\n}\n\nexport function on(object, event, fn, offEvent) {\n if (offEvent) {\n object.on(event, fn)\n offInDestroy(object, event, fn, offEvent)\n } else {\n let _fn = data => {\n fn(data)\n object.off(event, _fn)\n }\n object.on(event, _fn)\n }\n}\n\nexport function once(object, event, fn, offEvent) {\n if (offEvent) {\n object.once(event, fn)\n offInDestroy(object, event, fn, offEvent)\n } else {\n let _fn = data => {\n fn(data)\n object.off(event, _fn)\n }\n object.once(event, _fn)\n }\n}\n\nexport function getBuffered2(vbuffered, maxHoleDuration = 0.5) { //ref: hls.js\n let buffered = []\n for (let i = 0; i < vbuffered.length; i++) {\n buffered.push({ start: vbuffered.start(i) < 0.5 ? 0 : vbuffered.start(i), end: vbuffered.end(i) });\n }\n buffered.sort(function (a, b) {\n let diff = a.start - b.start;\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n let buffered_2 = []\n if (maxHoleDuration) {\n for (let i = 0; i < buffered.length; i++) {\n let buf2len = buffered_2.length\n if (buf2len) {\n let buf2end = buffered_2[buf2len - 1].end\n if ((buffered[i].start - buf2end) < maxHoleDuration) {\n if (buffered[i].end > buf2end) {\n buffered_2[buf2len - 1].end = buffered[i].end\n }\n } else {\n buffered_2.push(buffered[i])\n }\n } else {\n buffered_2.push(buffered[i])\n }\n }\n } else {\n buffered_2 = buffered\n }\n return new XgplayerTimeRange(buffered_2)\n}\n\nexport function checkIsBrowser() {\n return !(typeof(window) === 'undefined' || typeof(window.document) === 'undefined' || typeof(window.document.createElement) === 'undefined')\n}\n\nexport function setStyle(elem, name, value) {\n let style = elem.style;\n try {\n style[name] = value;\n } catch (error) {\n style.setProperty( name, value );\n }\n}\n\nexport const PresentationMode = {\n PIP: 'picture-in-picture',\n INLINE: 'inline',\n FULLSCREEN: 'fullscreen'\n}\n\nexport function checkWebkitSetPresentationMode (video) {\n return typeof video.webkitSetPresentationMode === 'function'\n}\n\nexport const util = {\n createDom, hasClass, addClass, removeClass, toggleClass, findDom, padStart, format, event, typeOf, \n deepCopy, getBgImage, copyDom, setInterval: _setInterval, clearInterval: _clearInterval, createImgBtn, isWeiXin, isUc, computeWatchDur,\n offInDestroy, on, once, getBuffered2, checkIsBrowser, setStyle\n}\n\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","\"use strict\";\n\nvar _undefined = require(\"../function/noop\")(); // Support ES3 engines\n\nmodule.exports = function (val) { return val !== _undefined && val !== null; };\n","import {version} from '../version.json'\nconst 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\nclass Errors {\n constructor (type, currentTime, duration, networkState, readyState, src, currentSrc,\n ended, errd = {line: '', handle: '', msg: '', version: ''}, errorCode, mediaError) {\n let 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 const arg = arguments[0]\n Object.keys(arg).map(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\n","let sniffer = {}\n\nObject.defineProperty(sniffer, 'device', {\n get: function () {\n let r = sniffer.os\n return r.isPc ? 'pc' : 'mobile'\n // return r.isPc ? 'pc' : r.isTablet ? 'tablet' : 'mobile'\n }\n})\n\nObject.defineProperty(sniffer, 'browser', {\n get: function () {\n let ua = navigator.userAgent.toLowerCase()\n let reg = {\n ie: /rv:([\\d.]+)\\) like gecko/,\n firfox: /firefox\\/([\\d.]+)/,\n chrome: /chrome\\/([\\d.]+)/,\n opera: /opera.([\\d.]+)/,\n safari: /version\\/([\\d.]+).*safari/\n }\n return [].concat(Object.keys(reg).filter(key => reg[key].test(ua)))[0] || ''\n }\n})\n\nObject.defineProperty(sniffer, 'os', {\n get: function () {\n let ua = navigator.userAgent\n let isWindowsPhone = /(?:Windows Phone)/.test(ua)\n let isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone\n let isAndroid = /(?:Android)/.test(ua)\n let isFireFox = /(?:Firefox)/.test(ua)\n let isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua))\n let isPhone = /(?:iPhone)/.test(ua) && !isTablet\n let isPc = !isPhone && !isAndroid && !isSymbian && !isTablet\n return {\n isTablet,\n isPhone,\n isAndroid,\n isPc,\n isSymbian,\n isWindowsPhone,\n isFireFox\n }\n }\n})\n\nexport default sniffer\n","\"use strict\";\n\n// ES3 safe\nvar _undefined = void 0;\n\nmodule.exports = function (value) { return value !== _undefined && value !== null; };\n","export default class XgplayerTimeRange {\n constructor(bufferedList) {\n this.bufferedList = bufferedList\n }\n\n start (index) {\n return this.bufferedList[index].start\n }\n\n end (index) {\n return this.bufferedList[index].end\n }\n\n get length () {\n return this.bufferedList.length\n }\n}\n","import Proxy from './proxy'\nimport { util, deepCopy, findDom, createDom, addClass, typeOf, hasClass, removeClass, checkIsBrowser } from './utils/util'\nimport sniffer from './utils/sniffer'\nimport XgplayerTimeRange from './utils/xgplayerTimeRange'\nimport Errors from './error'\nimport allOff from 'event-emitter/all-off'\nimport s_i18n from './skin/controls/i18n.js'\nimport './skin/style/index.scss'\n\nimport {\n version\n} from '../version.json'\nclass Player extends Proxy {\n constructor (options) {\n super(options)\n this.config = deepCopy({\n width: 600,\n height: 337.5,\n ignores: [],\n whitelist: [],\n lang: (document.documentElement.getAttribute('lang') || navigator.language || 'zh-cn').toLocaleLowerCase(),\n inactive: 3000,\n volume: 0.6,\n controls: true,\n controlsList: ['nodownload']\n }, options)\n this.version = version\n this.userTimer = null\n this.waitTimer = null\n this.history = []\n this.isProgressMoving = false\n this.root = findDom(document, `#${this.config.id}`)\n this.controls = createDom('xg-controls', '', {\n unselectable: 'on',\n onselectstart: 'return false'\n }, 'xgplayer-controls')\n if (this.config.isShowControl) {\n this.controls.style.display = 'none'\n }\n if (!this.root) {\n let el = this.config.el\n if (el && el.nodeType === 1) {\n this.root = el\n } else {\n this.emit('error', new Errors({\n type: 'use',\n errd: {\n line: 45,\n handle: 'Constructor',\n msg: 'container id can\\'t be empty'\n },\n vid: this.config.vid\n }))\n console.error('container id can\\'t be empty')\n return false\n }\n }\n // this.rootBackup = copyDom(this.root)\n addClass(this.root, `xgplayer xgplayer-${sniffer.device} xgplayer-nostart xgplayer-pause ${this.config.controls ? '' : 'xgplayer-no-controls'}`)\n this.root.appendChild(this.controls)\n if (this.config.fluid) {\n this.root.style['max-width'] = '100%'\n this.root.style['width'] = '100%'\n this.root.style['height'] = '0'\n this.root.style['padding-top'] = `${this.config.height * 100 / this.config.width}%`\n\n this.video.style['position'] = 'absolute'\n this.video.style['top'] = '0'\n this.video.style['left'] = '0'\n } else {\n // this.root.style.width = `${this.config.width}px`\n // this.root.style.height = `${this.config.height}px`\n if (this.config.width) {\n if (typeof this.config.width !== 'number') {\n this.root.style.width = this.config.width\n } else {\n this.root.style.width = `${this.config.width}px`\n }\n }\n if (this.config.height) {\n if (typeof this.config.height !== 'number') {\n this.root.style.height = this.config.height\n } else {\n this.root.style.height = `${this.config.height}px`\n }\n }\n }\n if (this.config.execBeforePluginsCall) {\n this.config.execBeforePluginsCall.forEach(item => {\n item.call(this, this)\n })\n }\n if(!this.config.closeI18n) {\n Player.install(s_i18n.name, s_i18n.method)\n }\n if (this.config.controlStyle && typeOf(this.config.controlStyle) === 'String') {\n let self = this\n fetch(self.config.controlStyle, {\n method: 'GET',\n headers: {\n Accept: 'application/json'\n }\n }).then(function (res) {\n if (res.ok) {\n res.json().then(function (obj) {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n self.config[prop] = obj[prop]\n }\n }\n self.pluginsCall()\n })\n }\n }).catch(function (err) {\n console.log('Fetch错误:' + err)\n })\n } else {\n this.pluginsCall()\n }\n if(this.config.controlPlugins) {\n Player.controlsRun(this.config.controlPlugins, this)\n }\n this.ev.forEach((item) => {\n let evName = Object.keys(item)[0]\n let evFunc = this[item[evName]]\n if (evFunc) {\n this.on(evName, evFunc)\n }\n });\n\n ['focus', 'blur'].forEach(item => {\n this.on(item, this['on' + item.charAt(0).toUpperCase() + item.slice(1)])\n })\n let player = this\n this.mousemoveFunc = function () {\n player.emit('focus')\n if (!player.config.closeFocusVideoFocus) {\n player.video.focus()\n }\n }\n this.root.addEventListener('mousemove', this.mousemoveFunc)\n this.playFunc = function () {\n player.emit('focus')\n if (!player.config.closePlayVideoFocus) {\n player.video.focus()\n }\n }\n player.once('play', this.playFunc)\n\n this.getVideoSize = function () {\n if (this.video.videoWidth && this.video.videoHeight) {\n let containerSize = player.root.getBoundingClientRect()\n if (player.config.fitVideoSize === 'auto') {\n if (containerSize.width / containerSize.height > this.video.videoWidth / this.video.videoHeight) {\n player.root.style.height = `${this.video.videoHeight / this.video.videoWidth * containerSize.width}px`\n } else {\n player.root.style.width = `${this.video.videoWidth / this.video.videoHeight * containerSize.height}px`\n }\n } else if (player.config.fitVideoSize === 'fixWidth') {\n player.root.style.height = `${this.video.videoHeight / this.video.videoWidth * containerSize.width}px`\n } else if (player.config.fitVideoSize === 'fixHeight') {\n player.root.style.width = `${this.video.videoWidth / this.video.videoHeight * containerSize.height}px`\n }\n }\n }\n player.once('loadeddata', this.getVideoSize)\n\n setTimeout(() => {\n this.emit('ready')\n this.isReady = true\n }, 0)\n\n if (this.config.videoInit) {\n if (hasClass(this.root, 'xgplayer-nostart')) {\n this.start()\n }\n }\n if (player.config.rotate) {\n player.on('requestFullscreen', this.updateRotateDeg)\n player.on('exitFullscreen', this.updateRotateDeg)\n }\n\n function onDestroy () {\n player.root.removeEventListener('mousemove', player.mousemoveFunc)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n }\n\n attachVideo () {\n if(this.video && this.video.nodeType === 1) {\n this.root.insertBefore(this.video, this.root.firstChild)\n }\n setTimeout(() => {\n this.emit('complete')\n if(this.danmu && typeof this.danmu.resize === 'function') {\n this.danmu.resize()\n }\n }, 1)\n }\n\n start (url = this.config.url) {\n if(!this.video) return\n let player = this\n if (!url || url === '') {\n this.emit('urlNull')\n return\n }\n this.canPlayFunc = function () {\n player.off('canplay', player.canPlayFunc)\n let playPromise = player.video.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.then(function () {\n player.emit('autoplay started')\n }).catch(function () {\n player.emit('autoplay was prevented')\n addClass(player.root, 'xgplayer-is-autoplay')\n })\n }\n }\n if (typeOf(url) !== 'Array') {\n if (typeOf(url) === 'String' && url.indexOf('blob:') > -1 && url === this.video.src) {\n // 在Chromium环境下用mse url给video二次赋值会导致错误\n } else {\n this.video.src = url\n }\n } else {\n url.forEach(item => {\n this.video.appendChild(createDom('source', '', {\n src: `${item.src}`,\n type: `${item.type || ''}`\n }))\n })\n }\n if (this.config.autoplay) {\n if (sniffer.os.isPhone) {\n this.canPlayFunc()\n } else {\n this.on('canplay', this.canPlayFunc)\n }\n }\n if(!this.config.disableStartLoad) {\n this.video.load()\n }\n this.attachVideo()\n }\n\n reload () {\n this.video.load()\n this.reloadFunc = function () {\n // eslint-disable-next-line handle-callback-err\n let playPromise = this.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n }\n this.once('loadeddata', this.reloadFunc)\n }\n\n destroy (isDelDom = true) {\n let player = this\n clearInterval(this.bulletResizeTimer)\n for (let k in this._interval) {\n clearInterval(this._interval[k])\n this._interval[k] = null\n }\n if (this.checkTimer) {\n clearInterval(this.checkTimer)\n }\n if (this.waitTimer) {\n clearTimeout(this.waitTimer)\n }\n this.ev.forEach((item) => {\n let evName = Object.keys(item)[0]\n let evFunc = this[item[evName]]\n if (evFunc) {\n this.off(evName, evFunc)\n }\n });\n if (this.loadeddataFunc) {\n this.off('loadeddata', this.loadeddataFunc)\n }\n if (this.reloadFunc) {\n this.off('loadeddata', this.reloadFunc)\n }\n if (this.replayFunc) {\n this.off('play', this.replayFunc)\n }\n if (this.playFunc) {\n this.off('play', this.playFunc)\n }\n if (this.getVideoSize) {\n this.off('loadeddata', this.getVideoSize)\n };\n ['focus', 'blur'].forEach(item => {\n this.off(item, this['on' + item.charAt(0).toUpperCase() + item.slice(1)])\n })\n if (!this.config.keyShortcut || this.config.keyShortcut === 'on') {\n ['video', 'controls'].forEach(item => {\n if (this[item]) {\n this[item].removeEventListener('keydown', function (e) { player.onKeydown(e, player) })\n }\n })\n }\n\n function destroyFunc () {\n this.emit('destroy')\n // this.root.id = this.root.id + '_del'\n // parentNode.insertBefore(this.rootBackup, this.root)\n\n // fix video destroy https://stackoverflow.com/questions/3258587/how-to-properly-unload-destroy-a-video-element\n this.video.removeAttribute('src') // empty source\n this.video.load()\n if (isDelDom) {\n // parentNode.removeChild(this.root)\n this.root.innerHTML = ''\n let classNameList = this.root.className.split(' ')\n if (classNameList.length > 0) {\n this.root.className = classNameList.filter(name => name.indexOf('xgplayer') < 0).join(' ')\n } else {\n this.root.className = ''\n }\n }\n\n for (let k in this) {\n // if (k !== 'config') {\n delete this[k]\n // }\n }\n allOff(this)\n }\n\n // destroy immediately\n // Don't use the paused property detection, it doesn't use MediaElement.paused, \n // so it's not accurate enough. Destroy after waiting for pause event, this \n // changes the synchronous behavior of destroy api\n destroyFunc.call(this)\n\n super.destroy()\n }\n\n replay () {\n let self = this\n let _replay = this._replay\n // ie9 bugfix\n removeClass(this.root, 'xgplayer-ended')\n if(sniffer.browser.indexOf('ie') > -1) {\n this.emit('play')\n this.emit('playing')\n }\n \n if (_replay && _replay instanceof Function) {\n _replay()\n } else {\n this.currentTime = 0\n // eslint-disable-next-line handle-callback-err\n let playPromise = this.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n }\n }\n\n userGestureTrigEvent (name, param) {\n const defaultUserGestureEventHandler = (name, param) => {\n this.emit(name, param)\n }\n if(this.config.userGestureEventMiddleware && typeof this.config.userGestureEventMiddleware[name] === 'function') {\n this.config.userGestureEventMiddleware[name].call(this, this, name, param, defaultUserGestureEventHandler)\n } else {\n defaultUserGestureEventHandler.call(this, name, param);\n }\n }\n\n pluginsCall () {\n if(Player.plugins['s_i18n']) {\n Player.plugins['s_i18n'].call(this, this)\n }\n let self = this\n if (Player.plugins) {\n let ignores = this.config.ignores\n Object.keys(Player.plugins).forEach(name => {\n let descriptor = Player.plugins[name]\n if(!descriptor || typeof descriptor !== 'function'){\n console.warn('plugin name', name , 'is invalid')\n } else {\n if (!ignores.some(item => name === item || name === 's_' + item) && name !== 's_i18n') {\n if (['pc', 'tablet', 'mobile'].some(type => type === name)) {\n if (name === sniffer.device) {\n setTimeout(() => {\n // if destroyed, skip\n if (!self.video) return;\n descriptor.call(self, self)\n }, 0)\n }\n } else {\n descriptor.call(this, this)\n }\n }\n }\n })\n }\n }\n\n onFocus () {\n let player = this\n if(hasClass(this.root, 'xgplayer-inactive')) {\n player.emit('controlShow')\n }\n removeClass(this.root, 'xgplayer-inactive')\n if (player.userTimer) {\n clearTimeout(player.userTimer)\n }\n player.userTimer = setTimeout(function () {\n player.emit('blur')\n }, player.config.inactive)\n }\n\n onBlur () {\n // this.video.blur()\n if ((this.config.enablePausedInactive || !this.paused) && !this.ended && !this.config.closeInactive) {\n if(!hasClass(this.root, 'xgplayer-inactive')) {\n this.emit('controlHide')\n }\n addClass(this.root, 'xgplayer-inactive')\n }\n }\n\n onPlay () {\n addClass(this.root, 'xgplayer-isloading')\n addClass(this.root, 'xgplayer-playing')\n removeClass(this.root, 'xgplayer-pause')\n }\n\n onPause () {\n addClass(this.root, 'xgplayer-pause')\n if (this.userTimer) {\n clearTimeout(this.userTimer)\n }\n this.emit('focus')\n }\n\n onEnded () {\n addClass(this.root, 'xgplayer-ended')\n removeClass(this.root, 'xgplayer-playing')\n }\n\n onSeeking () {\n this.isSeeking = true\n // 兼容IE下无法触发waiting事件的问题 seeking的时候直接出发waiting\n this.onWaiting()\n // addClass(this.root, 'seeking');\n }\n\n // onTimeupdate () {\n // // for ie,playing fired before waiting\n // if (this.waitTimer) {\n // clearTimeout(this.waitTimer)\n // }\n // removeClass(this.root, 'xgplayer-isloading')\n\n // }\n\n onSeeked () {\n // for ie,playing fired before waiting\n this.once('timeupdate', () => {\n this.isSeeking = false\n })\n if (this.waitTimer) {\n clearTimeout(this.waitTimer)\n }\n removeClass(this.root, 'xgplayer-isloading')\n }\n\n onWaiting () {\n let self = this\n if (self.waitTimer) {\n clearTimeout(self.waitTimer)\n }\n if (self.checkTimer) {\n clearInterval(self.checkTimer)\n self.checkTimer = null\n }\n let time = self.currentTime\n self.waitTimer = setTimeout(function () {\n addClass(self.root, 'xgplayer-isloading')\n self.checkTimer = setInterval(function () {\n if (self.currentTime !== time) {\n removeClass(self.root, 'xgplayer-isloading')\n clearInterval(self.checkTimer)\n self.checkTimer = null\n }\n }, 1000)\n }, 500)\n }\n\n onPlaying () {\n // 兼容safari下无法自动播放会触发该事件的场景\n if (this.paused) {\n return\n }\n this.isSeeking = false\n if (this.waitTimer) {\n clearTimeout(this.waitTimer)\n }\n removeClass(this.root, 'xgplayer-isloading xgplayer-nostart xgplayer-pause xgplayer-ended xgplayer-is-error xgplayer-replay')\n addClass(this.root, 'xgplayer-playing')\n }\n\n static install (name, descriptor) {\n if (!checkIsBrowser()) {\n return\n }\n if (!Player.plugins) {\n Player.plugins = {}\n }\n if (!Player.plugins[name]) {\n Player.plugins[name] = descriptor\n }\n }\n\n static installAll (list) {\n for(let k = 0; k < list.length; k++){\n Player.install(list[k].name, list[k].method)\n }\n }\n\n static use (name, descriptor) {\n if (!Player.plugins) {\n Player.plugins = {}\n }\n Player.plugins[name] = descriptor\n }\n\n static useAll (list) {\n for (let k in list) {\n Player.use(list[k].name, list[k].method)\n }\n }\n\n static controlsRun (controlLst, context) {\n controlLst.forEach(function(control) {\n control.method.call(context)\n })\n }\n}\n\nPlayer.util = util\nPlayer.sniffer = sniffer\nPlayer.Errors = Errors\nPlayer.XgplayerTimeRange = XgplayerTimeRange\n\nexport default Player\n","import { typeOf } from '../../utils/util'\n\nlet s_i18n = function () {\n let player = this; let lang = {};\n lang.en = {\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 MINIPLAYER: 'Miniplayer',\n SCREENSHOT: 'Screenshot',\n LIVE: 'LIVE',\n OFF: 'Off',\n MINIPLAYER_DRAG: 'Click and hold to drag',\n AIRPLAY_TIPS: 'Airplay',\n }\n lang['zh-cn'] = {\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 MINIPLAYER: '迷你播放器',\n SCREENSHOT: '截图',\n LIVE: '正在直播',\n OFF: '关闭',\n MINIPLAYER_DRAG: '点击按住可拖动视频',\n AIRPLAY_TIPS: '隔空播放',\n }\n lang['zh-hk'] = {\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 MINIPLAYER: '迷妳播放器',\n SCREENSHOT: '截圖',\n LIVE: '正在直播',\n OFF: '關閉',\n MINIPLAYER_DRAG: '點擊按住可拖動視頻',\n AIRPLAY_TIPS: '隔空播放',\n }\n lang['jp'] = {\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 MINIPLAYER: 'ミニプレーヤー',\n SCREENSHOT: 'スクリーンショット',\n LIVE: '生放送',\n OFF: 'オフ',\n MINIPLAYER_DRAG: 'ボタンを押して働画をドラッグする',\n AIRPLAY_TIPS: '隔空放送',\n }\n\n Object.defineProperty(player, 'lang', {\n get: function () {\n if (player.config) {\n return lang[player.config.lang] || lang['en']\n } else {\n return lang['en']\n }\n },\n set: function (value) {\n if (typeOf(value) === 'Object') {\n Object.keys(value).forEach(key => {\n lang[key] = value[key]\n })\n }\n }\n })\n\n}\n\nexport default {\n name: 's_i18n',\n method: s_i18n\n}","import EventEmitter from 'event-emitter'\nimport { findDom, createDom, hasClass, removeClass, _clearInterval, _setInterval, on, once, getBuffered2, setStyle } from './utils/util'\nimport Errors from './error'\n\nclass Proxy {\n constructor (options) {\n this._hasStart = false\n this.videoConfig = {\n controls: !!options.isShowControl,\n autoplay: options.autoplay,\n playsinline: options.playsinline,\n 'webkit-playsinline': options.playsinline,\n 'x5-playsinline': options.playsinline,\n 'x5-video-player-type': options['x5-video-player-type'] || options['x5VideoPlayerType'],\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 }\n if (options.muted) {\n this.videoConfig.muted = 'muted'\n }\n if (options.loop) {\n this.videoConfig.loop = 'loop'\n }\n let textTrackDom = ''\n this.textTrackShowDefault = true\n if (options.nativeTextTrack && Array.isArray(options.nativeTextTrack)) {\n if (options.nativeTextTrack.length > 0 && !options.nativeTextTrack.some(track => { return track.default })) {\n options.nativeTextTrack[0].default = true\n this.textTrackShowDefault = false\n }\n options.nativeTextTrack.some(track => {\n if (track.src && track.label && track.default) {\n textTrackDom += `<track src=\"${track.src}\" `\n if (track.kind) {\n textTrackDom += `kind=\"${track.kind}\" `\n }\n textTrackDom += `label=\"${track.label}\" `\n if (track.srclang) {\n textTrackDom += `srclang=\"${track.srclang}\" `\n }\n textTrackDom += `${track.default ? 'default' : ''}>`\n return true\n }\n })\n this.videoConfig.crossorigin = 'anonymous'\n }\n if (options.textTrackStyle) {\n let style = document.createElement('style')\n this.textTrackStyle = style\n document.head.appendChild(style)\n let styleStr = ''\n for (let index in options.textTrackStyle) {\n styleStr += `${index}: ${options.textTrackStyle[index]};`\n }\n let wrap = options.id ? `#${options.id}` : (options.el.id ? `#${options.el.id}` : `.${options.el.className}`)\n if (style.sheet.insertRule) {\n style.sheet.insertRule(`${wrap} video::cue { ${styleStr} }`, 0)\n } else if (style.sheet.addRule) {\n style.sheet.addRule(`${wrap} video::cue`, styleStr)\n }\n }\n let el = options.el ? options.el : findDom(document, `#${options.id}`)\n const XgVideoProxy = this.constructor.XgVideoProxy\n if(XgVideoProxy && this.videoConfig.mediaType === XgVideoProxy.mediaType) {\n this.video = new XgVideoProxy(el, options)\n } else {\n this.video = createDom(this.videoConfig.mediaType, textTrackDom, this.videoConfig, '')\n }\n if (options.videoStyle) {\n Object.keys(options.videoStyle).forEach(key => {\n setStyle(this.video, key, options.videoStyle[key])\n })\n }\n if (!this.textTrackShowDefault && textTrackDom) {\n let trackDoms = this.video.getElementsByTagName('Track')\n trackDoms[0].track.mode = 'hidden'\n }\n if (options.autoplay) {\n this.video.autoplay = true\n if (options.autoplayMuted) {\n this.video.muted = true\n }\n }\n\n this.ev = ['play', 'playing', 'pause', 'ended', 'error', 'seeking', 'seeked', 'progress', \n 'timeupdate', 'waiting', 'canplay', 'canplaythrough', 'durationchange', 'volumechange', 'ratechange', 'loadedmetadata', 'loadeddata', 'loadstart'\n ].map((item) => {\n return {\n [item]: `on${item.charAt(0).toUpperCase()}${item.slice(1)}`\n }\n })\n EventEmitter(this)\n\n this._interval = {}\n let lastBuffer = '0,0'\n let self = this\n\n const defaultVideoEventHandler = name => {\n // fix when video destroy called and video reload\n if (!this) {\n return\n }\n if (name === 'play') {\n this.hasStart = true\n } else if (name === 'canplay') {\n removeClass(this.root, 'xgplayer-is-enter')\n } else if (name === 'waiting') {\n this.inWaitingStart = new Date().getTime()\n } else if (name === 'playing') {\n removeClass(this.root, 'xgplayer-is-enter')\n if (this.inWaitingStart) {\n this.inWaitingStart = undefined\n }\n }\n if (name === 'error') {\n // process the error\n this._onError(name)\n } else {\n this.emit(name, this)\n }\n\n if (this.hasOwnProperty('_interval')) {\n if (['ended', 'error', 'timeupdate'].indexOf(name) < 0) {\n _clearInterval(this, 'bufferedChange')\n _setInterval(this, 'bufferedChange', function () {\n if (this.video && this.video.buffered) {\n let curBuffer = []\n for (let i = 0, len = this.video.buffered.length; i < len; i++) {\n curBuffer.push([this.video.buffered.start(i), this.video.buffered.end(i)])\n }\n if (curBuffer.toString() !== lastBuffer) {\n lastBuffer = curBuffer.toString()\n this.emit('bufferedChange', curBuffer)\n }\n }\n }, 200)\n } else {\n if (name !== 'timeupdate') {\n _clearInterval(this, 'bufferedChange')\n }\n }\n }\n }\n\n const videoEventHandler = name => {\n if(options.videoEventMiddleware && typeof options.videoEventMiddleware[name] === 'function') {\n options.videoEventMiddleware[name].call(this, this, name, defaultVideoEventHandler)\n } else {\n defaultVideoEventHandler.call(this, name);\n }\n }\n\n this.ev.forEach(item => {\n self.evItem = Object.keys(item)[0]\n let name = Object.keys(item)[0]\n self.video.addEventListener(Object.keys(item)[0], videoEventHandler.bind(self, name))\n })\n }\n /**\n * 错误监听处理逻辑抽离\n */\n _onError (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,\n this.ended, {\n line: 162,\n msg: this.error,\n handle: 'Constructor'\n }, this.video.error.code, this.video.error))\n }\n }\n\n get hasStart () {\n return this._hasStart\n }\n set hasStart (bool) {\n if (typeof bool === 'boolean' && bool === true && !this._hasStart) {\n this._hasStart = true\n this.emit('hasstart')\n }\n }\n destroy () {\n if (this.textTrackStyle) {\n this.textTrackStyle.parentNode.removeChild(this.textTrackStyle)\n }\n }\n play () {\n return this.video.play()\n }\n pause () {\n this.video.pause()\n }\n canPlayType (type) {\n return this.video.canPlayType(type)\n }\n getBufferedRange (buffered) {\n let range = [0, 0]\n let video = this.video\n if(!buffered) buffered = video.buffered\n let currentTime = video.currentTime\n if (buffered) {\n for (let 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 proxyOn (event, fn) {\n on(this, event, fn, 'destroy')\n }\n proxyOnce (event, fn) {\n once(this, event, fn, 'destroy')\n }\n set autoplay (isTrue) {\n if(this.video) {\n this.video.autoplay = isTrue\n }\n }\n get autoplay () {\n if(this.video) {\n return this.video.autoplay\n } else {\n return false\n }\n }\n get buffered () {\n if(this.video) {\n return this.video.buffered\n } else {\n return undefined\n }\n }\n get buffered2 () {\n return getBuffered2(this.video.buffered)\n }\n get crossOrigin () {\n if(this.video) {\n return this.video.crossOrigin\n } else {\n return false\n }\n }\n set crossOrigin (isTrue) {\n if(this.video) {\n this.video.crossOrigin = isTrue\n }\n }\n get currentSrc () {\n if(this.video) {\n return this.video.currentSrc\n } else {\n return undefined\n }\n }\n get currentTime () {\n if(this.video) {\n return this.video.currentTime || 0\n } else {\n return 0\n }\n }\n set currentTime (time) {\n if (typeof isFinite === 'function' && !isFinite(time)) return\n if (hasClass(this.root, 'xgplayer-ended')) {\n this.once('playing', () => { this.video.currentTime = time })\n this.replay()\n } else {\n this.video.currentTime = time\n }\n this.emit('currentTimeChange', time)\n }\n get defaultMuted () {\n if(this.video) {\n return this.video.defaultMuted\n } else {\n return false\n }\n }\n set defaultMuted (isTrue) {\n if(this.video) {\n this.video.defaultMuted = isTrue\n }\n }\n get duration () {\n if(this.config.duration) {\n if(this.video) return Math.min(this.config.duration, this.video.duration)\n else return this.config.duration\n }\n if (!this.video) return null\n return this.video.duration\n }\n get ended () {\n if(this.video) {\n return this.video.ended || false\n } else {\n return true\n }\n }\n get error () {\n let err = this.video.error\n if (!err) {\n return null\n }\n let status = [{\n en: 'MEDIA_ERR_ABORTED',\n cn: '取回过程被用户中止'\n }, {\n en: 'MEDIA_ERR_NETWORK',\n cn: '当下载时发生错误'\n }, {\n en: 'MEDIA_ERR_DECODE',\n cn: '当解码时发生错误'\n }, {\n en: 'MEDIA_ERR_SRC_NOT_SUPPORTED',\n cn: '不支持音频/视频'\n }]\n return this.lang ? this.lang[status[err.code - 1].en] : status[err.code - 1].en\n }\n get loop () {\n if(this.video) {\n return this.video.loop\n } else {\n return false\n }\n }\n set loop (isTrue) {\n if(this.video) {\n this.video.loop = isTrue\n }\n }\n get muted () {\n if(this.video) {\n return this.video.muted\n } else {\n return false\n }\n }\n set muted (isTrue) {\n if(this.video) {\n this.video.muted = isTrue\n }\n }\n get networkState () {\n let status = [{\n en: 'NETWORK_EMPTY',\n cn: '音频/视频尚未初始化'\n }, {\n en: 'NETWORK_IDLE',\n cn: '音频/视频是活动的且已选取资源,但并未使用网络'\n }, {\n en: 'NETWORK_LOADING',\n cn: '浏览器正在下载数据'\n }, {\n en: 'NETWORK_NO_SOURCE',\n cn: '未找到音频/视频来源'\n }]\n return this.lang ? this.lang[status[this.video.networkState].en] : status[this.video.networkState].en\n }\n get paused () {\n // if(this.video) {\n // return this.video.paused\n // } else {\n // return false\n // }\n return hasClass(this.root, 'xgplayer-pause')\n }\n get playbackRate () {\n if(this.video) {\n return this.video.playbackRate\n } else {\n return 1\n }\n }\n set playbackRate (rate) {\n if(this.video) {\n this.video.playbackRate = rate\n }\n }\n get played () {\n if(this.video) {\n return this.video.played\n } else {\n return undefined\n }\n }\n get preload () {\n if(this.video) {\n return this.video.preload\n } else {\n return false\n }\n }\n set preload (isTrue) {\n if(this.video) {\n this.video.preload = isTrue\n }\n }\n get readyState () {\n let status = [{\n en: 'HAVE_NOTHING',\n cn: '没有关于音频/视频是否就绪的信息'\n }, {\n en: 'HAVE_METADATA',\n cn: '关于音频/视频就绪的元数据'\n }, {\n en: 'HAVE_CURRENT_DATA',\n cn: '关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧/毫秒'\n }, {\n en: 'HAVE_FUTURE_DATA',\n cn: '当前及至少下一帧的数据是可用的'\n }, {\n en: 'HAVE_ENOUGH_DATA',\n cn: '可用数据足以开始播放'\n }]\n return this.lang ? this.lang[status[this.video.readyState].en] : status[this.video.readyState]\n }\n get seekable () {\n if(this.video) {\n return this.video.seekable\n } else {\n return false\n }\n }\n get seeking () {\n if(this.video) {\n return this.video.seeking\n } else {\n return false\n }\n }\n get src () {\n if(this.video) {\n return this.video.src\n } else {\n return undefined\n }\n }\n set src (url) {\n if (!hasClass(this.root, 'xgplayer-ended')) {\n this.emit('urlchange', this.video.src)\n }\n removeClass(this.root, 'xgplayer-ended xgplayer-is-replay xgplayer-is-error')\n this.video.pause()\n this.emit('pause')\n this.video.src = url\n this.emit('srcChange')\n }\n set poster (posterUrl) {\n let poster = findDom(this.root, '.xgplayer-poster')\n if (poster) {\n poster.style.backgroundImage = `url(${posterUrl})`\n }\n }\n get volume () {\n if(this.video) {\n return this.video.volume\n } else {\n return 1\n }\n }\n set volume (vol) {\n if(this.video) {\n this.video.volume = vol\n }\n }\n get fullscreen () {\n return hasClass(this.root, 'xgplayer-is-fullscreen') || hasClass(this.root, 'xgplayer-fullscreen-active')\n }\n get bullet () {\n return findDom(this.root, 'xg-danmu') ? hasClass(findDom(this.root, 'xg-danmu'), 'xgplayer-has-danmu') : false\n }\n get textTrack () {\n return hasClass(this.root, 'xgplayer-is-textTrack')\n }\n get pip () {\n return hasClass(this.root, 'xgplayer-pip-active')\n }\n get isMiniPlayer () {\n return hasClass(this.root, 'xgplayer-miniplayer-active')\n }\n}\n\nexport default Proxy\n","'use strict';\n\nvar d = require('d')\n , callable = require('es5-ext/object/valid-callable')\n\n , apply = Function.prototype.apply, call = Function.prototype.call\n , create = Object.create, defineProperty = Object.defineProperty\n , defineProperties = Object.defineProperties\n , hasOwnProperty = Object.prototype.hasOwnProperty\n , descriptor = { configurable: true, enumerable: false, writable: true }\n\n , on, once, off, emit, methods, descriptors, base;\n\non = function (type, listener) {\n\tvar data;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\tdata = descriptor.value = create(null);\n\t\tdefineProperty(this, '__ee__', descriptor);\n\t\tdescriptor.value = null;\n\t} else {\n\t\tdata = this.__ee__;\n\t}\n\tif (!data[type]) data[type] = listener;\n\telse if (typeof data[type] === 'object') data[type].push(listener);\n\telse data[type] = [data[type], listener];\n\n\treturn this;\n};\n\nonce = function (type, listener) {\n\tvar once, self;\n\n\tcallable(listener);\n\tself = this;\n\ton.call(this, type, once = function () {\n\t\toff.call(self, type, once);\n\t\tapply.call(listener, this, arguments);\n\t});\n\n\tonce.__eeOnceListener__ = listener;\n\treturn this;\n};\n\noff = function (type, listener) {\n\tvar data, listeners, candidate, i;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\tdata = this.__ee__;\n\tif (!data[type]) return this;\n\tlisteners = data[type];\n\n\tif (typeof listeners === 'object') {\n\t\tfor (i = 0; (candidate = listeners[i]); ++i) {\n\t\t\tif ((candidate === listener) ||\n\t\t\t\t\t(candidate.__eeOnceListener__ === listener)) {\n\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];\n\t\t\t\telse listeners.splice(i, 1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ((listeners === listener) ||\n\t\t\t\t(listeners.__eeOnceListener__ === listener)) {\n\t\t\tdelete data[type];\n\t\t}\n\t}\n\n\treturn this;\n};\n\nemit = function (type) {\n\tvar i, l, listener, listeners, args;\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\tlisteners = this.__ee__[type];\n\tif (!listeners) return;\n\n\tif (typeof listeners === 'object') {\n\t\tl = arguments.length;\n\t\targs = new Array(l - 1);\n\t\tfor (i = 1; i < l; ++i) args[i - 1] = arguments[i];\n\n\t\tlisteners = listeners.slice();\n\t\tfor (i = 0; (listener = listeners[i]); ++i) {\n\t\t\tapply.call(listener, this, args);\n\t\t}\n\t} else {\n\t\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\tcall.call(listeners, this);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}\n\t\t\tapply.call(listeners, this, args);\n\t\t}\n\t}\n};\n\nmethods = {\n\ton: on,\n\tonce: once,\n\toff: off,\n\temit: emit\n};\n\ndescriptors = {\n\ton: d(on),\n\tonce: d(once),\n\toff: d(off),\n\temit: d(emit)\n};\n\nbase = defineProperties({}, descriptors);\n\nmodule.exports = exports = function (o) {\n\treturn (o == null) ? create(base) : defineProperties(Object(o), descriptors);\n};\nexports.methods = methods;\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 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\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","\"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","\"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","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.assign : require(\"./shim\");\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 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","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.keys : require(\"./shim\");\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 keys = Object.keys;\n\nmodule.exports = function (object) { return keys(isValue(object) ? Object(object) : object); };\n","\"use strict\";\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\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","\"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\nmodule.exports = require(\"./is-implemented\")() ? String.prototype.contains : require(\"./shim\");\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\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 = function (fn) {\n\tif (typeof fn !== \"function\") throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\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\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 map = { function: true, object: true };\n\nmodule.exports = function (value) { return (isValue(value) && map[typeof value]) || false; };\n","\nvar content = require(\"!!../../../node_modules/css-loader/index.js??ref--5-1!../../../node_modules/postcss-loader/lib/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./index.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../node_modules/css-loader/index.js??ref--5-1!../../../node_modules/postcss-loader/lib/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./index.scss\", function() {\n\t\tvar newContent = require(\"!!../../../node_modules/css-loader/index.js??ref--5-1!../../../node_modules/postcss-loader/lib/index.js!../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./index.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default{background:#000;width:100%;height:100%;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;-ms-user-select:none}.xgplayer-skin-default *{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.xgplayer-skin-default.xgplayer-rotate-fullscreen{position:absolute;top:0;left:100%;bottom:0;right:0;height:100vw!important;width:100vh!important;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.xgplayer-skin-default.xgplayer-is-fullscreen{width:100%!important;height:100%!important;padding-top:0!important;z-index:9999}.xgplayer-skin-default.xgplayer-is-fullscreen.xgplayer-inactive{cursor:none}.xgplayer-skin-default video{width:100%;height:100%;outline:none}.xgplayer-skin-default .xgplayer-none{display:none}@-webkit-keyframes loadingRotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingRotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loadingDashOffset{0%{stroke-dashoffset:236}to{stroke-dashoffset:0}}@keyframes loadingDashOffset{0%{stroke-dashoffset:236}to{stroke-dashoffset:0}}.xgplayer-skin-default .xgplayer-controls{display:-webkit-flex;display:-moz-box;display:flex;position:absolute;bottom:0;left:0;right:0;height:40px;background-image:linear-gradient(180deg,transparent,rgba(0,0,0,.37),rgba(0,0,0,.75),rgba(0,0,0,.75));z-index:10}.xgplayer-skin-default.xgplayer-inactive .xgplayer-controls,.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-progress,.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-time,.xgplayer-skin-default.xgplayer-no-controls .xgplayer-controls,.xgplayer-skin-default.xgplayer-nostart .xgplayer-controls{display:none}.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-live{display:block}.xgplayer-skin-default .xgplayer-live{display:block;font-size:12px;color:#fff;line-height:40px;-webkit-order:1;-moz-box-ordinal-group:2;order:1}.xgplayer-skin-default .xgplayer-icon{display:block;width:40px;height:40px;overflow:hidden;fill:#fff}.xgplayer-skin-default .xgplayer-icon svg{position:absolute}.xgplayer-skin-default .xgplayer-tips{background:rgba(0,0,0,.54);border-radius:1px;display:none;position:absolute;font-family:PingFangSC-Regular;font-size:11px;color:#fff;padding:2px 4px;text-align:center;top:-30px;left:50%;margin-left:-16px;width:auto;white-space:nowrap}.xgplayer-skin-default.xgplayer-mobile .xgplayer-tips{display:none!important}.xgplayer-skin-default .xgplayer-screen-container{display:block;width:100%}\", \"\"]);\n\n// exports\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","import { hasClass } from '../utils/util'\n\nlet mobile = function () {\n let player = this\n let root = player.root\n let clk = 0; let _click_\n let clickedTime = {\n first: '',\n second: ''\n }\n\n player.onElementTouchend = function (e, element) {\n if(!this.config.closeVideoPreventDefault) {\n e.preventDefault()\n }\n if(!this.config.closeVideoStopPropagation) {\n e.stopPropagation()\n }\n let player = this\n if (hasClass(root, 'xgplayer-inactive')) {\n player.emit('focus')\n } else {\n player.emit('blur')\n }\n if (!player.config.closeVideoTouch && !player.isTouchMove) {\n function onTouch() {\n _click_ = setTimeout(function () {\n if (hasClass(player.root, 'xgplayer-nostart')) {\n return false\n } else if (!player.ended) {\n if (player.paused) {\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n } else {\n player.pause()\n }\n }\n clk = 0\n }, 200)\n }\n if (!player.config.closeVideoClick) {\n clk++\n if (_click_) {\n clearTimeout(_click_)\n }\n if (clk === 1) {\n if(player.config.enableVideoDbltouch) {\n clickedTime.first = new Date()\n } else {\n onTouch()\n }\n } else if (clk === 2) {\n if(player.config.enableVideoDbltouch) {\n clickedTime.second = new Date()\n if (Math.abs(clickedTime.first - clickedTime.second) < 400) {\n // 双击\n onTouch()\n } else {\n clickedTime.first = new Date()\n clk = 1\n }\n } else {\n clk = 0\n }\n } else {\n clk = 0\n }\n }\n }\n }\n\n function onReady (e) {\n player.video.addEventListener('touchend', function (e) {\n player.onElementTouchend(e, player.video)\n })\n player.video.addEventListener('touchstart', () => {\n player.isTouchMove = false\n })\n player.video.addEventListener('touchmove', () => {\n player.isTouchMove = true\n })\n if (player.config.autoplay) {\n player.start()\n }\n }\n player.once('ready', onReady)\n\n function onDestroy () {\n player.off('ready', onReady)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'mobile',\n method: mobile\n}","import { hasClass } from '../utils/util'\n\nlet pc = function () {\n let player = this\n if(!player.controls || !player.video) return\n let controls = player.controls; let root = player.root\n let clk = 0; let _click_\n\n player.onElementClick = function (e, element) {\n if(!this.config.closeVideoPreventDefault) {\n e.preventDefault()\n }\n if(!this.config.closeVideoStopPropagation) {\n e.stopPropagation()\n }\n let player = this\n if (!player.config.closeVideoClick) {\n clk++\n if (_click_) {\n clearTimeout(_click_)\n }\n if (clk === 1) {\n _click_ = setTimeout(function () {\n if (hasClass(player.root, 'xgplayer-nostart')) {\n return false\n } else if (!player.ended) {\n if (player.paused) {\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n } else {\n player.pause()\n }\n }\n clk = 0\n }, 200)\n } else {\n clk = 0\n }\n }\n }\n player.video.addEventListener('click', function (e) { player.onElementClick(e, player.video) }, false)\n\n player.onElementDblclick = function (e, element) {\n if(!this.config.closeVideoPreventDefault) {\n e.preventDefault()\n }\n if(!this.config.closeVideoStopPropagation) {\n e.stopPropagation()\n }\n let player = this\n if (!player.config.closeVideoDblclick) {\n let fullscreen = controls.querySelector('.xgplayer-fullscreen')\n if (fullscreen) {\n let clk\n if (document.createEvent) {\n clk = document.createEvent('Event')\n clk.initEvent('click', true, true)\n } else {\n clk = new Event('click')\n }\n fullscreen.dispatchEvent(clk)\n }\n }\n }\n player.video.addEventListener('dblclick', function (e) { player.onElementDblclick(e, player.video) }, false)\n\n function onMouseEnter () {\n clearTimeout(player.leavePlayerTimer)\n player.emit('focus', player)\n }\n root.addEventListener('mouseenter', onMouseEnter)\n\n function onMouseLeave () {\n if(!player.config.closePlayerBlur) {\n player.leavePlayerTimer = setTimeout(function () {\n player.emit('blur', player)\n }, player.config.leavePlayerTime || 0)\n }\n }\n root.addEventListener('mouseleave', onMouseLeave)\n\n function onControlMouseEnter (e) {\n if (player.userTimer) {\n clearTimeout(player.userTimer)\n }\n }\n controls.addEventListener('mouseenter', onControlMouseEnter)\n\n function onControlMouseLeave (e) {\n if(!player.config.closeControlsBlur) {\n player.emit('focus', player)\n }\n }\n controls.addEventListener('mouseleave', onControlMouseLeave)\n\n function onControlClick (e) {\n e.preventDefault()\n e.stopPropagation()\n }\n controls.addEventListener('click', onControlClick)\n\n function onReady (e) {\n if (player.config.autoplay) {\n player.start()\n }\n }\n player.once('ready', onReady)\n\n function onDestroy () {\n root.removeEventListener('mouseenter', onMouseEnter)\n root.removeEventListener('mouseleave', onMouseLeave)\n player.off('ready', onReady)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'pc',\n method: pc\n}","import { addClass, hasClass, removeClass } from '../utils/util'\n\nlet start = function () {\n let player = this\n let root = player.root\n\n function onCanPlay () {\n player.off('canplay', onCanPlay)\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n }\n\n function onStartBtnClick () {\n if (hasClass(root, 'xgplayer-nostart')) {\n removeClass(root, 'xgplayer-nostart') // for ie quick switch\n addClass(root, 'xgplayer-is-enter')\n\n if(typeof root.contains === 'function') {\n if((player.video && player.video.nodeType === 1 && !root.contains(player.video)) || (player.video && player.video.nodeType !== 1 && player.video.mediaSource === undefined)) {\n player.once('canplay', onCanPlay)\n player.start()\n } else {\n onCanPlay()\n }\n } else {\n if((player.video && player.video.nodeType === 1 && !root.querySelector(this.videoConfig.mediaType)) || (player.video && player.video.nodeType !== 1 && player.video.mediaSource === undefined)) {\n player.once('canplay', onCanPlay)\n player.start()\n } else {\n onCanPlay()\n }\n }\n } else {\n if (player.paused) {\n removeClass(root, 'xgplayer-nostart xgplayer-isloading')\n setTimeout(() => {\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n }, 10)\n }\n }\n }\n player.on('startBtnClick', onStartBtnClick)\n\n function onDestroy () {\n player.off('startBtnClick', onStartBtnClick)\n player.off('canplay', onCanPlay)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'start',\n method: start\n}","import { createDom, addClass, removeClass, isWeiXin, isUc } from '../../utils/util'\nimport StartPlayIcon from '../assets/startPlay.svg'\nimport StartPauseIcon from '../assets/startPause.svg'\nimport '../style/controls/start.scss'\n\nlet s_start = function () {\n let player = this\n let root = player.root\n let btn = createDom('xg-start', `<div class=\"xgplayer-icon-play\">${StartPlayIcon}</div>\n <div class=\"xgplayer-icon-pause\">${StartPauseIcon}</div>`, {}, 'xgplayer-start')\n function onPlayerReady(player) {\n addClass(player.root, 'xgplayer-skin-default')\n if (player.config) {\n player.config.autoplay && !isWeiXin() && !isUc() && addClass(player.root, 'xgplayer-is-enter')\n if (player.config.lang && player.config.lang === 'en') {\n addClass(player.root, 'xgplayer-lang-is-en')\n } else if (player.config.lang === 'jp') {\n addClass(player.root, 'xgplayer-lang-is-jp')\n }\n if(!player.config.enableContextmenu) {\n player.video.addEventListener('contextmenu', e => {\n e.preventDefault()\n e.stopPropagation()\n })\n }\n }\n }\n\n if(player.config && player.config.hideStartBtn) {\n addClass(root, 'xgplayer-start-hide')\n }\n\n if (player.isReady) {\n root.appendChild(btn)\n onPlayerReady(player)\n } else {\n player.once('ready', () => {\n root.appendChild(btn)\n onPlayerReady(player)\n });\n }\n\n player.once('autoplay was prevented', () => {\n removeClass(player.root, 'xgplayer-is-enter')\n addClass(player.root, 'xgplayer-nostart')\n })\n\n player.once('canplay', () => {\n removeClass(player.root, 'xgplayer-is-enter')\n })\n\n btn.onclick = e => {\n e.preventDefault()\n e.stopPropagation()\n player.userGestureTrigEvent('startBtnClick')\n }\n}\n\nexport default {\n name: 's_start',\n method: s_start\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"70\\\" height=\\\"70\\\" viewBox=\\\"0 0 70 70\\\">\\n <path transform=\\\"translate(15,15) scale(0.04,0.04)\\\" d=\\\"M576,363L810,512L576,661zM342,214L576,363L576,661L342,810z\\\"></path>\\n</svg>\\n\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"70\\\" height=\\\"70\\\" viewBox=\\\"0 0 70 70\\\">\\n <path transform=\\\"translate(15,15) scale(0.04 0.04)\\\" d=\\\"M598,214h170v596h-170v-596zM256 810v-596h170v596h-170z\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./start.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./start.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./start.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-start{border-radius:50%;display:inline-block;width:70px;height:70px;background:rgba(0,0,0,.38);overflow:hidden;text-align:center;line-height:70px;vertical-align:middle;position:absolute;left:50%;top:50%;z-index:115;margin:-35px auto auto -35px;cursor:pointer}.xgplayer-skin-default .xgplayer-start div{position:absolute}.xgplayer-skin-default .xgplayer-start div svg{fill:hsla(0,0%,100%,.7)}.xgplayer-skin-default .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default .xgplayer-start .xgplayer-icon-pause{display:none}.xgplayer-skin-default .xgplayer-start:hover{opacity:.85}.xgplayer-skin-default.xgplayer-pause.xgplayer-start-hide .xgplayer-start,.xgplayer-skin-default.xgplayer-playing .xgplayer-start,.xgplayer-skin-default.xgplayer-playing .xgplayer-start .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-start-hide .xgplayer-start{display:none}.xgplayer-skin-default.xgplayer-playing .xgplayer-start .xgplayer-icon-pause{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-start{display:inline-block}.xgplayer-skin-default.xgplayer-pause .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start,.xgplayer-skin-default.xgplayer-pause .xgplayer-start .xgplayer-icon-pause{display:none}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start .xgplayer-icon-pause{display:none}\", \"\"]);\n\n// exports\n","import { hasClass, addClass, removeClass, PresentationMode, checkWebkitSetPresentationMode } from '../utils/util'\n\nlet fullscreen = function () {\n let player = this\n let root = player.root\n\n function onFullscreenBtnClick () {\n if (player.config.rotateFullscreen) {\n if (hasClass(root, 'xgplayer-rotate-fullscreen')) {\n player.exitRotateFullscreen()\n } else {\n player.getRotateFullscreen()\n }\n } else {\n if (hasClass(root, 'xgplayer-is-fullscreen')) {\n player.exitFullscreen(root)\n } else {\n player.getFullscreen(root)\n }\n }\n }\n player.on('fullscreenBtnClick', onFullscreenBtnClick)\n\n function onFullscreenChange () {\n let fullscreenEl = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement\n if (fullscreenEl && fullscreenEl === root) {\n addClass(root, 'xgplayer-is-fullscreen')\n player.emit('requestFullscreen')\n } else if (hasClass(root, 'xgplayer-is-fullscreen')) {\n removeClass(root, 'xgplayer-is-fullscreen')\n player.emit('exitFullscreen')\n }\n if (player.danmu && typeof player.danmu.resize === 'function') {\n player.danmu.resize()\n }\n };\n ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'].forEach(item => {\n document.addEventListener(item, onFullscreenChange)\n })\n\n player.video.addEventListener('webkitbeginfullscreen', function () {\n addClass(root, 'xgplayer-is-fullscreen')\n player.emit('requestFullscreen')\n })\n\n player.video.addEventListener('webkitendfullscreen', function () {\n removeClass(root, 'xgplayer-is-fullscreen')\n player.emit('exitFullscreen')\n })\n\n function onWebkitpresentationmodechanged (e) {\n const mode = player.video.webkitPresentationMode\n // 非全屏模式 退出全屏\n if (mode !== PresentationMode.FULLSCREEN) {\n removeClass(root, 'xgplayer-is-fullscreen')\n player.emit('exitFullscreen')\n }\n }\n\n checkWebkitSetPresentationMode(player.video) &&\n player.video.addEventListener('webkitpresentationmodechanged', onWebkitpresentationmodechanged)\n\n function onDestroy () {\n player.off('fullscreenBtnClick', onFullscreenBtnClick);\n ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'].forEach(item => {\n document.removeEventListener(item, onFullscreenChange)\n })\n\n checkWebkitSetPresentationMode(player.video) &&\n player.video.removeEventListener('webkitpresentationmodechanged', onWebkitpresentationmodechanged)\n\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n\n player.getFullscreen = function (el) {\n let player = this\n if (el.requestFullscreen) {\n let fullscreenPromise = el.requestFullscreen()\n if (fullscreenPromise) {\n fullscreenPromise.catch(function () {\n player.emit('fullscreen error')\n })\n }\n } else if (el.mozRequestFullScreen) {\n el.mozRequestFullScreen()\n } else if (el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen(window.Element.ALLOW_KEYBOARD_INPUT)\n } else if (player.video.webkitSupportsFullscreen) {\n player.video.webkitEnterFullscreen()\n } else if (el.msRequestFullscreen) {\n el.msRequestFullscreen()\n } else {\n addClass(el, 'xgplayer-is-cssfullscreen')\n }\n }\n\n player.exitFullscreen = function (el) {\n if (document.exitFullscreen) {\n document.exitFullscreen()\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen()\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen()\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen()\n }\n removeClass(el, 'xgplayer-is-cssfullscreen')\n }\n\n player.getRotateFullscreen = function () {\n let player = this\n document.documentElement.style.width = '100%'\n document.documentElement.style.height = '100%'\n if (player.config.fluid) {\n player.root.style['padding-top'] = ''\n player.root.style['max-width'] = 'unset'\n }\n if (player.root && !hasClass(player.root, 'xgplayer-rotate-fullscreen')) {\n addClass(player.root, 'xgplayer-rotate-fullscreen')\n }\n player.emit('getRotateFullscreen')\n }\n\n player.exitRotateFullscreen = function () {\n let player = this\n document.documentElement.style.width = 'unset'\n document.documentElement.style.height = 'unset'\n if (player.config.fluid) {\n player.root.style['width'] = '100%'\n player.root.style['height'] = '0'\n player.root.style['padding-top'] = `${player.config.height * 100 / player.config.width}%`\n player.root.style['max-width'] = '100%'\n }\n if (player.root && hasClass(player.root, 'xgplayer-rotate-fullscreen')) {\n removeClass(player.root, 'xgplayer-rotate-fullscreen')\n }\n player.emit('exitRotateFullscreen')\n }\n}\n\nexport default {\n name: 'fullscreen',\n method: fullscreen\n}\n","import { hasClass } from '../utils/util'\n\nlet play = function () {\n let player = this\n\n function onPlayBtnClick () {\n if (!player.config.allowPlayAfterEnded && player.ended) {\n return\n }\n if(hasClass(player.root, 'xgplayer-nostart')) {\n player.start()\n }\n if (player.paused) {\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n } else {\n player.pause()\n }\n }\n player.on('playBtnClick', onPlayBtnClick)\n\n function onDestroy () {\n player.off('playBtnClick', onPlayBtnClick)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'play',\n method: play\n}","import { addClass, removeClass } from '../utils/util'\n\nlet replay = function () {\n let player = this\n let root = player.root\n\n function onReplayBtnClick () {\n removeClass(root, 'xgplayer-is-replay')\n player.replay()\n }\n player.on('replayBtnClick', onReplayBtnClick)\n\n function onEnded () {\n if (!player.config.loop) {\n addClass(root, 'xgplayer-is-replay')\n }\n }\n player.on('ended', onEnded)\n\n function onDestroy () {\n player.off('replayBtnClick', onReplayBtnClick)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'replay',\n method: replay\n}","import { createDom, createImgBtn } from '../../utils/util'\nimport PlayIcon from '../assets/play.svg'\nimport PauseIcon from '../assets/pause.svg'\nimport '../style/controls/play.scss'\n\nlet s_play = function () {\n let player = this\n let playBtn = player.config.playBtn ? player.config.playBtn : {}\n let btn\n if (playBtn.type === 'img') {\n btn = createImgBtn('play', playBtn.url.play, playBtn.width, playBtn.height)\n } else {\n btn = createDom('xg-play', `<xg-icon class=\"xgplayer-icon\">\n <div class=\"xgplayer-icon-play\">${PlayIcon}</div>\n <div class=\"xgplayer-icon-pause\">${PauseIcon}</div>\n </xg-icon>`, {}, 'xgplayer-play')\n }\n\n let tipsText = {}\n tipsText.play = player.lang.PLAY_TIPS\n tipsText.pause = player.lang.PAUSE_TIPS\n let tips = createDom('xg-tips', `<span class=\"xgplayer-tip-play\">${tipsText.play}</span>\n <span class=\"xgplayer-tip-pause\">${tipsText.pause}</span>`, {}, 'xgplayer-tips')\n btn.appendChild(tips)\n player.once('ready', () => {\n if(player.controls) {\n player.controls.appendChild(btn)\n }\n });\n\n ['click', 'touchend'].forEach(item => {\n btn.addEventListener(item, function (e) {\n e.preventDefault()\n e.stopPropagation()\n player.userGestureTrigEvent('playBtnClick')\n })\n })\n}\n\nexport default {\n name: 's_play',\n method: s_play\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\">\\n <path transform=\\\"translate(2,2) scale(0.0320625 0.0320625)\\\" d=\\\"M576,363L810,512L576,661zM342,214L576,363L576,661L342,810z\\\"></path>\\n</svg>\\n\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\">\\n <path transform=\\\"translate(2,2) scale(0.0320625 0.0320625)\\\" d=\\\"M598,214h170v596h-170v-596zM256 810v-596h170v596h-170z\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./play.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./play.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./play.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-play,.xgplayer-skin-default .xgplayer-play-img{width:40px;position:relative;-webkit-order:0;-moz-box-ordinal-group:1;order:0;display:block;cursor:pointer;margin-left:3px}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon,.xgplayer-skin-default .xgplayer-play .xgplayer-icon{margin-top:3px;width:32px}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon div,.xgplayer-skin-default .xgplayer-play .xgplayer-icon div{position:absolute}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default .xgplayer-play .xgplayer-icon .xgplayer-icon-play{display:block}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:none}.xgplayer-skin-default .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:block}.xgplayer-skin-default .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:none}.xgplayer-skin-default .xgplayer-play-img:hover,.xgplayer-skin-default .xgplayer-play:hover{opacity:.85}.xgplayer-skin-default .xgplayer-play-img:hover .xgplayer-tips,.xgplayer-skin-default .xgplayer-play:hover .xgplayer-tips{display:block}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-icon .xgplayer-icon-play{display:none}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:block}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:none}\", \"\"]);\n\n// exports\n","import { createDom } from '../../utils/util'\nimport '../style/controls/poster.scss'\n\nlet s_poster = function () {\n let player = this\n let root = player.root\n if (!player.config.poster) {\n return\n }\n let poster = createDom('xg-poster', '', {}, 'xgplayer-poster')\n poster.style.backgroundImage = `url(${player.config.poster})`\n root.appendChild(poster)\n}\n\nexport default {\n name: 's_poster',\n method: s_poster\n}","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./poster.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./poster.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./poster.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-poster{display:none;position:absolute;left:0;top:0;width:100%;height:100%;z-index:100;background-size:cover;background-position:50%}.xgplayer-skin-default.xgplayer-nostart .xgplayer-poster{display:block}\", \"\"]);\n\n// exports\n","import { createDom } from '../../utils/util'\nimport '../style/controls/placeholder.scss'\n\nlet s_flex = function () {\n let player = this\n let playceholder = createDom('xg-placeholder', '', {}, 'xgplayer-placeholder')\n player.controls.appendChild(playceholder)\n}\n\nexport default {\n name: 's_flex',\n method: s_flex\n}","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./placeholder.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./placeholder.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./placeholder.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-placeholder{-webkit-flex:1;-moz-box-flex:1;flex:1;-webkit-order:3;-moz-box-ordinal-group:4;order:3;display:block}\", \"\"]);\n\n// exports\n","import { createDom, createImgBtn } from '../../utils/util'\nimport RequestFullIcon from '../assets/requestFull.svg'\nimport ExitFullIcon from '../assets/exitFull.svg'\nimport '../style/controls/fullscreen.scss'\n\nlet s_fullscreen = function () {\n let player = this\n let fullscreenBtn = player.config.fullscreenBtn ? player.config.fullscreenBtn : {}\n let btn\n if (fullscreenBtn.type === 'img') {\n btn = createImgBtn('fullscreen', fullscreenBtn.url.request, fullscreenBtn.width, fullscreenBtn.height)\n } else {\n btn = createDom('xg-fullscreen', `<xg-icon class=\"xgplayer-icon\">\n <div class=\"xgplayer-icon-requestfull\">${RequestFullIcon}</div>\n <div class=\"xgplayer-icon-exitfull\">${ExitFullIcon}</div>\n </xg-icon>`, {}, 'xgplayer-fullscreen')\n }\n\n let tipsText = {}\n tipsText.requestfull = player.lang.FULLSCREEN_TIPS\n tipsText.exitfull = player.lang.EXITFULLSCREEN_TIPS\n let tips = createDom('xg-tips', `<span class=\"xgplayer-tip-requestfull\">${tipsText.requestfull}</span>\n <span class=\"xgplayer-tip-exitfull\">${tipsText.exitfull}</span>`, {}, 'xgplayer-tips')\n btn.appendChild(tips)\n player.once('ready', () => {\n if(player.controls) {\n player.controls.appendChild(btn)\n }\n });\n\n ['click', 'touchend'].forEach(item => {\n btn.addEventListener(item, function (e) {\n e.preventDefault()\n e.stopPropagation()\n player.userGestureTrigEvent('fullscreenBtnClick')\n })\n })\n}\n\nexport default {\n name: 's_fullscreen',\n method: s_fullscreen\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\">\\n <path transform=\\\"scale(0.0320625 0.0320625)\\\" d=\\\"M598 214h212v212h-84v-128h-128v-84zM726 726v-128h84v212h-212v-84h128zM214 426v-212h212v84h-128v128h-84zM298 598v128h128v84h-212v-212h84z\\\"></path>\\n</svg>\\n\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\">\\n <path transform=\\\"scale(0.0320625 0.0320625)\\\" d=\\\"M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./fullscreen.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./fullscreen.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./fullscreen.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-fullscreen,.xgplayer-skin-default .xgplayer-fullscreen-img{position:relative;-webkit-order:13;-moz-box-ordinal-group:14;order:13;display:block;cursor:pointer;margin-left:5px;margin-right:3px}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon{margin-top:3px}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon div,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon div{position:absolute}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull{display:block}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull{display:none}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips{position:absolute;right:0;left:auto}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull{display:block}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull{display:none}.xgplayer-skin-default .xgplayer-fullscreen-img:hover,.xgplayer-skin-default .xgplayer-fullscreen:hover{opacity:.85}.xgplayer-skin-default .xgplayer-fullscreen-img:hover .xgplayer-tips,.xgplayer-skin-default .xgplayer-fullscreen:hover .xgplayer-tips{display:block}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull{display:none}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull{display:block}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull{display:none}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull{display:block}\", \"\"]);\n\n// exports\n","import { createDom } from '../../utils/util'\nimport Loading from '../assets/loading.svg'\nimport '../style/controls/loading.scss'\n\nlet s_loading = function () {\n let player = this\n let root = player.root\n let container = createDom('xg-loading', `${Loading}`, {}, 'xgplayer-loading')\n player.once('ready', () => {\n root.appendChild(container)\n })\n}\n\nexport default {\n name: 's_loading',\n method: s_loading\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100\\\" height=\\\"100\\\" viewbox=\\\"0 0 100 100\\\">\\n <path d=\\\"M100,50A50,50,0,1,1,50,0\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./loading.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./loading.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./loading.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-loading{display:none;width:100px;height:100px;overflow:hidden;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);position:absolute;left:50%;top:50%;margin:-50px auto auto -50px}.xgplayer-skin-default .xgplayer-loading svg{border-radius:50%;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-animation:loadingRotate 1s linear infinite;animation:loadingRotate 1s linear infinite}.xgplayer-skin-default .xgplayer-loading svg path{stroke:#ddd;stroke-dasharray:236;-webkit-animation:loadingDashOffset 2s linear infinite;animation:loadingDashOffset 2s linear infinite;animation-direction:alternate-reverse;fill:none;stroke-width:12px}.xgplayer-skin-default.xgplayer-nostart .xgplayer-loading{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-loading{display:none!important}.xgplayer-skin-default.xgplayer-isloading .xgplayer-loading{display:block}\", \"\"]);\n\n// exports\n","import { createDom, addClass, removeClass, hasClass, toggleClass, typeOf, event, format, findDom } from '../../utils/util'\r\nimport sniffer from '../../utils/sniffer'\r\nimport '../style/controls/progress.scss'\r\n\r\nconst isRotateFullscreen = (player) => {\r\n return hasClass(player.root, 'xgplayer-rotate-fullscreen')\r\n}\r\n\r\nlet s_progress = function () {\r\n let player = this\r\n let container = createDom('xg-progress', `<xg-outer class=\"xgplayer-progress-outer\">\r\n <xg-cache class=\"xgplayer-progress-cache\"></xg-cache>\r\n <xg-played class=\"xgplayer-progress-played\">\r\n <xg-progress-btn class=\"xgplayer-progress-btn\"></xg-progress-btn>\r\n <xg-point class=\"xgplayer-progress-point xgplayer-tips\"></xg-point>\r\n <xg-thumbnail class=\"xgplayer-progress-thumbnail xgplayer-tips\"></xg-thumbnail>\r\n </xg-played>\r\n </xg-outer>`, {tabindex: 1}, 'xgplayer-progress')\r\n let containerWidth\r\n player.controls.appendChild(container)\r\n let progress = container.querySelector('.xgplayer-progress-played')\r\n let outer = container.querySelector('.xgplayer-progress-outer')\r\n let cache = container.querySelector('.xgplayer-progress-cache')\r\n let point = container.querySelector('.xgplayer-progress-point')\r\n let thumbnail = container.querySelector('.xgplayer-progress-thumbnail')\r\n player.dotArr = {}\r\n function dotEvent (dotItem, text) {\r\n dotItem.addEventListener('mouseenter', function (e) {\r\n if (text) {\r\n addClass(dotItem, 'xgplayer-progress-dot-show')\r\n addClass(container, 'xgplayer-progress-dot-active')\r\n }\r\n })\r\n dotItem.addEventListener('mouseleave', function (e) {\r\n if (text) {\r\n removeClass(dotItem, 'xgplayer-progress-dot-show')\r\n removeClass(container, 'xgplayer-progress-dot-active')\r\n }\r\n })\r\n dotItem.addEventListener('touchend', function (e) {\r\n // e.preventDefault()\r\n e.stopPropagation()\r\n if (text) {\r\n if (!hasClass(dotItem, 'xgplayer-progress-dot-show')) {\r\n Object.keys(player.dotArr).forEach(function (key) {\r\n if (player.dotArr[key]) {\r\n removeClass(player.dotArr[key], 'xgplayer-progress-dot-show')\r\n }\r\n })\r\n }\r\n toggleClass(dotItem, 'xgplayer-progress-dot-show')\r\n toggleClass(container, 'xgplayer-progress-dot-active')\r\n }\r\n })\r\n }\r\n function onCanplay () {\r\n if (player.config.progressDot && typeOf(player.config.progressDot) === 'Array') {\r\n player.config.progressDot.forEach(item => {\r\n if (item.time >= 0 && item.time <= player.duration) {\r\n let dot = createDom('xg-progress-dot', item.text ? `<span class=\"xgplayer-progress-tip\">${item.text}</span>` : '', {}, 'xgplayer-progress-dot')\r\n dot.style.left = (item.time / player.duration) * 100 + '%'\r\n if (item.duration >= 0) {\r\n dot.style.width = (Math.min(item.duration, player.duration - item.time) / player.duration) * 100 + '%'\r\n }\r\n if(item.style) {\r\n for(let k in item.style) {\r\n dot.style[k] = item.style[k]\r\n }\r\n }\r\n outer.appendChild(dot)\r\n player.dotArr[item.time] = dot\r\n dotEvent(dot, item.text)\r\n }\r\n })\r\n }\r\n }\r\n player.once('canplay', onCanplay)\r\n player.addProgressDot = function (time, text, duration, style) {\r\n if (player.dotArr[time]) {\r\n return\r\n }\r\n if (time >= 0 && time <= player.duration) {\r\n let dot = createDom('xg-progress-dot', text ? `<span class=\"xgplayer-progress-tip\">${text}</span>` : '', {}, 'xgplayer-progress-dot')\r\n dot.style.left = (time / player.duration) * 100 + '%'\r\n if (duration >= 0) {\r\n dot.style.width = (Math.min(duration, player.duration - time) / player.duration) * 100 + '%'\r\n }\r\n if(style) {\r\n for(let k in style) {\r\n dot.style[k] = style[k]\r\n }\r\n }\r\n outer.appendChild(dot)\r\n player.dotArr[time] = dot\r\n dotEvent(dot, text)\r\n }\r\n }\r\n player.removeProgressDot = function (time) {\r\n if (time >= 0 && time <= player.duration && player.dotArr[time]) {\r\n let dot = player.dotArr[time]\r\n dot.parentNode.removeChild(dot)\r\n dot = null\r\n player.dotArr[time] = null\r\n }\r\n }\r\n player.removeAllProgressDot = function () {\r\n Object.keys(player.dotArr).forEach(function (key) {\r\n if (player.dotArr[key]) {\r\n let dot = player.dotArr[key]\r\n dot.parentNode.removeChild(dot)\r\n dot = null\r\n player.dotArr[key] = null\r\n }\r\n })\r\n }\r\n let tnailPicNum = 0\r\n let tnailWidth = 0\r\n let tnailHeight = 0\r\n let tnailCol = 0\r\n let tnailRow = 0\r\n let interval = 0\r\n let tnailUrls = []\r\n let coverPreviewContainer, coverPreviewPoint, coverPreviewOuter\r\n let onLoadedmetadata = function() {\r\n if (player.config.thumbnail) {\r\n if(player.config.thumbnail.isShowCoverPreview && !coverPreviewContainer) {\r\n progress.removeChild(thumbnail)\r\n coverPreviewContainer = createDom('xg-coverpreview', `<xg-outer class=\"xgplayer-coverpreview-outer\">\r\n <xg-thumbnail class=\"xgplayer-coverpreview-thumbnail\"></xg-thumbnail>\r\n <xg-point class=\"xgplayer-coverpreview-point\"></xg-point>\r\n </xg-outer>`, {tabindex: 1}, 'xgplayer-coverpreview')\r\n coverPreviewOuter = coverPreviewContainer.querySelector('.xgplayer-coverpreview-outer')\r\n coverPreviewPoint = coverPreviewContainer.querySelector('.xgplayer-coverpreview-point')\r\n thumbnail = coverPreviewContainer.querySelector('.xgplayer-coverpreview-thumbnail')\r\n player.root.appendChild(coverPreviewContainer)\r\n }\r\n tnailPicNum = player.config.thumbnail.pic_num\r\n tnailWidth = player.config.thumbnail.width\r\n tnailHeight = player.config.thumbnail.height\r\n tnailCol = player.config.thumbnail.col\r\n tnailRow = player.config.thumbnail.row\r\n tnailUrls = player.config.thumbnail.urls\r\n thumbnail.style.width = `${tnailWidth}px`\r\n thumbnail.style.height = `${tnailHeight}px`\r\n };\r\n };\r\n player.on('loadedmetadata', onLoadedmetadata);\r\n\r\n if (typeof player.config.disableSwipeHandler === 'function' && typeof player.config.enableSwipeHandler === 'function') {\r\n player.root.addEventListener('touchmove', e => {\r\n e.preventDefault();\r\n // e.stopPropagation();\r\n if (!player.disableSwipe) {\r\n player.disableSwipe = true\r\n player.config.disableSwipeHandler.call(player);\r\n }\r\n });\r\n player.root.addEventListener('touchstart', e => {\r\n // e.preventDefault();\r\n player.disableSwipe = true\r\n player.config.disableSwipeHandler.call(player);\r\n });\r\n player.root.addEventListener('touchend', e => {\r\n // e.preventDefault();\r\n player.disableSwipe = false\r\n player.config.enableSwipeHandler.call(player);\r\n });\r\n };\r\n let events = ['touchstart', 'mousedown'];\r\n if (sniffer.device === 'mobile') {\r\n // 解决在移动端触发多次seeking问题\r\n events.pop()\r\n }\r\n events.forEach(item => {\r\n container.addEventListener(item, function (e) {\r\n if (player.config.disableProgress) return;\r\n // e.preventDefault()\r\n e.stopPropagation()\r\n event(e)\r\n if (e._target === point || (!player.config.allowSeekAfterEnded && player.ended)) {\r\n return true\r\n }\r\n\r\n container.focus()\r\n let {left} = progress.getBoundingClientRect()\r\n\r\n const isRotate = isRotateFullscreen(player)\r\n if (isRotate) {\r\n left = progress.getBoundingClientRect().top\r\n containerWidth = container.getBoundingClientRect().height\r\n } else {\r\n containerWidth = container.getBoundingClientRect().width\r\n left = progress.getBoundingClientRect().left\r\n }\r\n\r\n let move = function (e) {\r\n // e.preventDefault()\r\n e.stopPropagation()\r\n event(e)\r\n player.isProgressMoving = true\r\n let w = (isRotate ? e.clientY : e.clientX) - left\r\n if (w > containerWidth) {\r\n w = containerWidth\r\n }\r\n let now = w / containerWidth * player.duration\r\n if(now < 0) now = 0\r\n if(player.config.allowSeekPlayed && (Number(now).toFixed(1) > player.maxPlayedTime)) {}\r\n else {\r\n progress.style.width = `${w * 100 / containerWidth}%`\r\n\r\n if (player.videoConfig.mediaType === 'video' && !player.dash && !player.config.closeMoveSeek) {\r\n console.log('trigger touchmove')\r\n player.currentTime = Number(now).toFixed(1)\r\n } else {\r\n let time = findDom(player.controls, '.xgplayer-time')\r\n if (time) {\r\n time.innerHTML = `<span class=\"xgplayer-time-current\">${format(now || 0)}</span><span>${format(player.duration)}</span>`\r\n }\r\n }\r\n }\r\n\r\n if(player.config.thumbnail && player.config.thumbnail.isShowCoverPreview) {\r\n coverPreviewPoint.innerHTML = `<span>${format(now)}</span> / ${format(player.duration || 0)}`\r\n\r\n interval = player.duration / tnailPicNum\r\n let index = Math.floor(now / interval)\r\n thumbnail.style.backgroundImage = `url(${tnailUrls[Math.ceil((index + 1) / (tnailCol * tnailRow)) - 1]})`\r\n let indexInPage = index + 1 - (tnailCol * tnailRow) * (Math.ceil((index + 1) / (tnailCol * tnailRow)) - 1)\r\n let tnaiRowIndex = Math.ceil(indexInPage / tnailRow) - 1\r\n let tnaiColIndex = indexInPage - tnaiRowIndex * tnailRow - 1\r\n thumbnail.style['background-position'] = `-${tnaiColIndex * tnailWidth}px -${tnaiRowIndex * tnailHeight}px`\r\n coverPreviewContainer.style.display = 'block'\r\n }\r\n \r\n player.emit('focus')\r\n }\r\n let up = function (e) {\r\n console.log('up event', e)\r\n // e.preventDefault()\r\n e.stopPropagation()\r\n event(e)\r\n window.removeEventListener('mousemove', move)\r\n window.removeEventListener('touchmove', move, { passive: false })\r\n window.removeEventListener('mouseup', up)\r\n window.removeEventListener('touchend', up)\r\n if(sniffer.browser.indexOf('ie') < 0) {\r\n container.blur()\r\n }\r\n if (!player.isProgressMoving || (player.videoConfig && player.videoConfig.mediaType === 'audio') || player.dash || player.config.closeMoveSeek) {\r\n let w = (isRotate ? e.clientY : e.clientX) - left\r\n if (w > containerWidth) {\r\n w = containerWidth\r\n }\r\n let now = w / containerWidth * player.duration\r\n if(now < 0) now = 0\r\n if(player.config.allowSeekPlayed && (Number(now).toFixed(1) > player.maxPlayedTime)) {}\r\n else {\r\n progress.style.width = `${w * 100 / containerWidth}%`\r\n console.warn('trigger touchup')\r\n player.currentTime = Number(now).toFixed(1)\r\n }\r\n }\r\n if(player.config.thumbnail && player.config.thumbnail.isShowCoverPreview) {\r\n coverPreviewContainer.style.display = 'none'\r\n }\r\n player.emit('focus')\r\n player.isProgressMoving = false\r\n }\r\n // if (item === 'touchstart') {\r\n window.addEventListener('touchmove', move, { passive: false })\r\n window.addEventListener('touchend', up)\r\n // } else {\r\n window.addEventListener('mousemove', move)\r\n // console.warn('add envent mouseup')\r\n window.addEventListener('mouseup', up)\r\n // }\r\n return true\r\n })\r\n })\r\n\r\n container.addEventListener('mouseenter', function (e) {\r\n if (!player.config.allowSeekAfterEnded && player.ended) {\r\n return true\r\n }\r\n const isRotate = isRotateFullscreen(player)\r\n let containerLeft = isRotate ? container.getBoundingClientRect().top : container.getBoundingClientRect().left\r\n let containerWidth = isRotate ? container.getBoundingClientRect().height : container.getBoundingClientRect().width\r\n\r\n let compute = function (e) {\r\n let now = ((isRotate ? e.clientY : e.clientX) - containerLeft) / containerWidth * player.duration\r\n now = now < 0 ? 0 : now\r\n point.textContent = format(now)\r\n let pointWidth = point.getBoundingClientRect().width\r\n if (player.config.thumbnail && !player.config.thumbnail.isShowCoverPreview) {\r\n interval = player.duration / tnailPicNum\r\n let index = Math.floor(now / interval)\r\n thumbnail.style.backgroundImage = `url(${tnailUrls[Math.ceil((index + 1) / (tnailCol * tnailRow)) - 1]})`\r\n let indexInPage = index + 1 - (tnailCol * tnailRow) * (Math.ceil((index + 1) / (tnailCol * tnailRow)) - 1)\r\n let tnaiRowIndex = Math.ceil(indexInPage / tnailRow) - 1\r\n let tnaiColIndex = indexInPage - tnaiRowIndex * tnailRow - 1\r\n thumbnail.style['background-position'] = `-${tnaiColIndex * tnailWidth}px -${tnaiRowIndex * tnailHeight}px`\r\n let left = (isRotate ? e.clientY : e.clientX) - containerLeft - tnailWidth / 2\r\n left = left > 0 ? left : 0\r\n left = left < containerWidth - tnailWidth ? left : containerWidth - tnailWidth\r\n thumbnail.style.left = `${left}px`\r\n thumbnail.style.top = `${-10 - tnailHeight}px`\r\n thumbnail.style.display = 'block'\r\n point.style.left = `${left + tnailWidth / 2 - pointWidth / 2}px`\r\n } else {\r\n let left = e.clientX - containerLeft - pointWidth / 2\r\n left = left > 0 ? left : 0\r\n left = left > containerWidth - pointWidth ? containerWidth - pointWidth : left\r\n point.style.left = `${left}px`\r\n }\r\n if (hasClass(container, 'xgplayer-progress-dot-active')) {\r\n point.style.display = 'none'\r\n } else {\r\n point.style.display = 'block'\r\n }\r\n }\r\n let move = function (e) {\r\n compute(e)\r\n }\r\n let leave = function (e) {\r\n container.removeEventListener('mousemove', move, false)\r\n container.removeEventListener('mouseleave', leave, false)\r\n compute(e)\r\n point.style.display = 'none'\r\n if (player.config.thumbnail && !player.config.thumbnail.isShowCoverPreview) {\r\n thumbnail.style.display = 'none'\r\n }\r\n }\r\n container.addEventListener('mousemove', move, false)\r\n container.addEventListener('mouseleave', leave, false)\r\n compute(e)\r\n }, false)\r\n\r\n // let lastBtnLeft = false\r\n let onTimeupdate = function () {\r\n if(player.maxPlayedTime === undefined) player.maxPlayedTime = 0\r\n if(player.maxPlayedTime < player.currentTime) player.maxPlayedTime = player.currentTime\r\n if (!containerWidth && container) {\r\n containerWidth = container.getBoundingClientRect().width\r\n }\r\n if (!player.isProgressMoving && !player.isSeeking && !player.seeking) {\r\n const precent = player.currentTime / player.duration\r\n const prevPrecent = Number(progress.style.width.replace('%', '') || '0') / Number(container.style.width || '100');\r\n if (Math.abs(precent - prevPrecent) <= 1) {\r\n progress.style.width = `${player.currentTime * 100 / player.duration}%`\r\n }\r\n }\r\n }\r\n player.on('timeupdate', onTimeupdate)\r\n\r\n let onCurrentTimeChange = function (time) {\r\n progress.style.width = `${time * 100 / player.duration}%`\r\n }\r\n player.on('currentTimeChange', onCurrentTimeChange)\r\n\r\n let onSrcChange = function () {\r\n progress.style.width = '0%'\r\n }\r\n player.on('srcChange', onSrcChange)\r\n\r\n let onCacheUpdate = function () {\r\n let buffered = player.buffered\r\n if (buffered && buffered.length > 0) {\r\n let end = buffered.end(buffered.length - 1)\r\n for (let i = 0, len = buffered.length; i < len; i++) {\r\n if (player.currentTime >= buffered.start(i) && player.currentTime <= buffered.end(i)) {\r\n end = buffered.end(i)\r\n for (let j = i + 1; j < buffered.length; j++) {\r\n if (buffered.start(j) - buffered.end(j - 1) >= 2) {\r\n end = buffered.end(j - 1)\r\n break\r\n }\r\n }\r\n break\r\n }\r\n }\r\n cache.style.width = `${end / player.duration * 100}%`\r\n }\r\n }\r\n const cacheUpdateEvents = ['bufferedChange', 'cacheupdate', 'ended', 'timeupdate']\r\n cacheUpdateEvents.forEach(item => {\r\n player.on(item, onCacheUpdate)\r\n })\r\n\r\n function destroyFunc () {\r\n player.removeAllProgressDot()\r\n player.off('canplay', onCanplay)\r\n player.off('timeupdate', onTimeupdate)\r\n player.off('currentTimeChange', onCurrentTimeChange)\r\n player.off('srcChange', onSrcChange)\r\n player.off('loadedmetadata', onLoadedmetadata);\r\n cacheUpdateEvents.forEach(item => {\r\n player.off(item, onCacheUpdate)\r\n })\r\n player.off('destroy', destroyFunc)\r\n }\r\n player.once('destroy', destroyFunc)\r\n}\r\n\r\nexport default {\r\n name: 's_progress',\r\n method: s_progress\r\n}","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./progress.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./progress.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./progress.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-progress{display:block;position:absolute;height:20px;line-height:20px;left:12px;right:12px;outline:none;top:-15px;z-index:35}.xgplayer-skin-default .xgplayer-progress-outer{background:hsla(0,0%,100%,.3);display:block;height:3px;line-height:3px;margin-top:8.5px;width:100%;position:relative;cursor:pointer}.xgplayer-skin-default .xgplayer-progress-cache,.xgplayer-skin-default .xgplayer-progress-played{display:block;height:100%;line-height:1;position:absolute;left:0;top:0}.xgplayer-skin-default .xgplayer-progress-cache{width:0;background:hsla(0,0%,100%,.5)}.xgplayer-skin-default .xgplayer-progress-played{display:block;width:0;background-image:linear-gradient(-90deg,#fa1f41,#e31106);border-radius:0 1.5px 1.5px 0}.xgplayer-skin-default .xgplayer-progress-btn{display:none;position:absolute;left:0;top:-5px;width:13px;height:13px;border-radius:30px;background:#fff;box-shadow:0 0 2px 0 rgba(0,0,0,.26);left:100%;-webkit-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%);z-index:36}.xgplayer-skin-default .xgplayer-progress-point{position:absolute}.xgplayer-skin-default .xgplayer-progress-point.xgplayer-tips{margin-left:0;top:-25px;display:none;z-index:100}.xgplayer-skin-default .xgplayer-progress-dot{display:inline-block;position:absolute;height:3px;width:5px;top:0;background:#fff;border-radius:6px;z-index:16}.xgplayer-skin-default .xgplayer-progress-dot .xgplayer-progress-tip{position:absolute;bottom:200%;right:50%;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);height:auto;line-height:30px;width:auto;background:rgba(0,0,0,.3);border-radius:6px;border:1px solid rgba(0,0,0,.8);cursor:default;white-space:nowrap;display:none}.xgplayer-skin-default .xgplayer-progress-dot-show .xgplayer-progress-tip{display:block}.xgplayer-skin-default .xgplayer-progress-thumbnail{position:absolute;-moz-box-sizing:border-box;box-sizing:border-box}.xgplayer-skin-default .xgplayer-progress-thumbnail.xgplayer-tips{margin-left:0;display:none;z-index:99}.xgplayer-skin-default .xgplayer-coverpreview{position:absolute;width:100%;height:100%;top:0;left:0;display:none}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer{position:absolute;display:block;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-thumbnail{display:block}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-point{display:block;text-align:center;font-family:PingFangSC-Regular;font-size:11px;color:#ccc;padding:2px 4px}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-point span{color:#fff}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-outer,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-outer{height:6px;margin-top:7px}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-dot,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-dot{height:6px}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-btn,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-btn{display:block;top:-3px}.xgplayer-skin-default.xgplayer-definition-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-playbackrate-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-texttrack-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-volume-active .xgplayer-progress{z-index:15}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress-btn{display:block!important}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:focus .xgplayer-progress-outer,.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:hover .xgplayer-progress-outer{height:3px!important;margin-top:8.5px!important}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:focus .xgplayer-progress-btn,.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:hover .xgplayer-progress-btn{display:block!important;top:-5px!important}\", \"\"]);\n\n// exports\n","import { createDom, format } from '../../utils/util'\nimport '../style/controls/time.scss'\n\nlet s_time = function () {\n let player = this\n let container = createDom('xg-time', `<span class=\"xgplayer-time-current\">${player.currentTime || format(0)}</span>\n <span>${player.duration || format(0)}</span>`, {}, 'xgplayer-time')\n player.once('ready', () => {\n if(player.controls) {\n player.controls.appendChild(container)\n }\n })\n let onTimeChange = function () {\n // let liveText = player.lang.LIVE\n // if(player.duration === Infinity) {\n // addClass(player.root, 'xgplayer-is-live')\n // if(!findDom(player.root, '.xgplayer-live')) {\n // const live = createDom('xg-live', liveText, {}, 'xgplayer-live')\n // player.controls.appendChild(live)\n // }\n // }\n if (player.videoConfig.mediaType !== 'audio' || !player.isProgressMoving || !player.dash) {\n container.innerHTML = `<span class=\"xgplayer-time-current\">${format(player.currentTime || 0)}</span>` + `<span>${format(player.duration)}</span>`\n }\n }\n player.on('durationchange', onTimeChange)\n player.on('timeupdate', onTimeChange)\n\n function onDestroy () {\n player.off('durationchange', onTimeChange)\n player.off('timeupdate', onTimeChange)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 's_time',\n method: s_time\n}","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./time.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./time.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./time.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-time{-webkit-order:2;-moz-box-ordinal-group:3;order:2;font-family:ArialMT;font-size:13px;color:#fff;line-height:40px;height:40px;text-align:center;display:inline-block;margin:auto 8px}.xgplayer-skin-default .xgplayer-time span{color:hsla(0,0%,100%,.5)}.xgplayer-skin-default .xgplayer-time .xgplayer-time-current{color:#fff}.xgplayer-skin-default .xgplayer-time .xgplayer-time-current:after{content:\\\"/\\\";display:inline-block;padding:0 3px}\", \"\"]);\n\n// exports\n","import { createDom } from '../../utils/util'\nimport ReplayIcon from '../assets/replay.svg'\nimport '../style/controls/replay.scss'\n\nlet s_replay = function () {\n let player = this\n let root = player.root\n\n let replayText = player.lang.REPLAY\n let btn = createDom('xg-replay', `${ReplayIcon}\n <xg-replay-txt class=\"xgplayer-replay-txt\">${replayText}</xg-replay-txt>\n `, {}, 'xgplayer-replay')\n player.once('ready', () => {\n root.appendChild(btn)\n })\n\n function onEnded () {\n let path = btn.querySelector('path')\n if(path) {\n let transform = window.getComputedStyle(path).getPropertyValue('transform')\n if(typeof transform === 'string' && transform.indexOf('none') > -1) {\n return\n } else {\n path.setAttribute('transform', transform)\n }\n }\n }\n player.on('ended', onEnded)\n\n function onBtnClick (e) {\n e.preventDefault()\n e.stopPropagation()\n }\n btn.addEventListener('click', onBtnClick)\n\n let svg = btn.querySelector('svg');\n\n ['click', 'touchend'].forEach(item => {\n svg.addEventListener(item, function (e) {\n e.preventDefault()\n e.stopPropagation()\n player.userGestureTrigEvent('replayBtnClick')\n })\n })\n\n function destroyFunc () {\n player.off('ended', onEnded)\n player.off('destroy', destroyFunc)\n }\n player.once('destroy', destroyFunc)\n}\n\nexport default {\n name: 's_replay',\n method: s_replay\n}","export default \"<svg class=\\\"xgplayer-replay-svg\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"78\\\" height=\\\"78\\\" viewbox=\\\"0 0 78 78\\\">\\n <path d=\\\"M8.22708362,13.8757234 L11.2677371,12.6472196 C11.7798067,12.4403301 12.3626381,12.6877273 12.5695276,13.1997969 L12.9441342,14.1269807 C13.1510237,14.6390502 12.9036264,15.2218816 12.3915569,15.4287712 L6.8284538,17.6764107 L5.90126995,18.0510173 C5.38920044,18.2579068 4.80636901,18.0105096 4.5994795,17.49844 L1.97723335,11.0081531 C1.77034384,10.4960836 2.0177411,9.91325213 2.52981061,9.70636262 L3.45699446,9.33175602 C3.96906396,9.12486652 4.5518954,9.37226378 4.75878491,9.88433329 L5.67885163,12.1615783 C7.99551726,6.6766934 13.3983951,3 19.5,3 C27.7842712,3 34.5,9.71572875 34.5,18 C34.5,26.2842712 27.7842712,33 19.5,33 C15.4573596,33 11.6658607,31.3912946 8.87004692,28.5831991 C8.28554571,27.9961303 8.28762719,27.0463851 8.87469603,26.4618839 C9.46176488,25.8773827 10.4115101,25.8794641 10.9960113,26.466533 C13.2344327,28.7147875 16.263503,30 19.5,30 C26.127417,30 31.5,24.627417 31.5,18 C31.5,11.372583 26.127417,6 19.5,6 C14.4183772,6 9.94214483,9.18783811 8.22708362,13.8757234 Z\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./replay.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./replay.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../node_modules/css-loader/index.js??ref--5-1!../../../../node_modules/postcss-loader/lib/index.js!../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./replay.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-replay{position:absolute;left:0;top:0;width:100%;height:100%;z-index:105;display:none;-webkit-justify-content:center;-moz-box-pack:center;justify-content:center;-webkit-align-items:center;-moz-box-align:center;align-items:center;background:rgba(0,0,0,.54);-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;flex-direction:column}.xgplayer-skin-default .xgplayer-replay svg{background:rgba(0,0,0,.58);border-radius:100%;cursor:pointer}.xgplayer-skin-default .xgplayer-replay svg path{-webkit-transform:translate(20px,21px);-ms-transform:translate(20px,21px);transform:translate(20px,21px);fill:#ddd}.xgplayer-skin-default .xgplayer-replay svg:hover{background:rgba(0,0,0,.38)}.xgplayer-skin-default .xgplayer-replay svg:hover path{fill:#fff}.xgplayer-skin-default .xgplayer-replay .xgplayer-replay-txt{display:inline-block;font-family:PingFangSC-Regular;font-size:14px;color:#fff;line-height:34px}.xgplayer-skin-default.xgplayer.xgplayer-ended .xgplayer-controls{display:none}.xgplayer-skin-default.xgplayer.xgplayer-ended .xgplayer-replay{display:-webkit-flex;display:-moz-box;display:flex}\", \"\"]);\n\n// exports\n","import Player from './player'\n\nimport Flex from './skin/controls/flex'\nimport Fullscreen from './controls/fullscreen'\nimport S_fullscreen from './skin/controls/fullscreen'\nimport S_loading from './skin/controls/loading'\nimport Mobile from './controls/mobile'\nimport Pc from './controls/pc'\nimport Play from './controls/play'\nimport S_play from './skin/controls/play'\nimport S_progress from './skin/controls/progress'\nimport S_poster from './skin/controls/poster'\nimport S_time from './skin/controls/time'\nimport Start from './controls/start'\nimport S_start from './skin/controls/start'\nimport Replay from './controls/replay'\nimport S_replay from './skin/controls/replay'\n// import Volume from './controls/volume'\n// import S_volume from './skin/controls/volume'\n\nlet controlLst = [\n Flex,\n Fullscreen,\n S_fullscreen,\n S_loading,\n Mobile,\n Pc,\n Play,\n S_play,\n S_progress,\n S_poster,\n S_time,\n Start,\n S_start,\n Replay,\n S_replay\n]\ncontrolLst.forEach(function(control) {\n Player.install(control.name, control.method)\n})\n\nexport default Player\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://xgplayer/webpack/universalModuleDefinition","webpack://xgplayer/webpack/bootstrap","webpack://xgplayer/./src/utils/util.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/css-loader/lib/css-base.js","webpack://xgplayer/./node_modules/style-loader/lib/addStyles.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/is-value.js","webpack://xgplayer/./src/error.js","webpack://xgplayer/./src/utils/sniffer.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/type/value/is.js","webpack://xgplayer/./src/utils/xgplayerTimeRange.js","webpack://xgplayer/./src/player.js","webpack://xgplayer/./src/skin/controls/i18n.js","webpack://xgplayer/./src/proxy.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/event-emitter/index.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/d/index.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/type/plain-function/is.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/type/function/is.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/type/prototype/is.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/type/object/is.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/assign/index.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/assign/is-implemented.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/assign/shim.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/keys/index.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/keys/is-implemented.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/keys/shim.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/function/noop.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/valid-value.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/normalize-options.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/string/#/contains/index.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/string/#/contains/is-implemented.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/string/#/contains/shim.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/valid-callable.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/event-emitter/all-off.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/valid-object.js","webpack://xgplayer//Users/bytedance/Documents/repository/__git__/bytedance/xgplayer/node_modules/es5-ext/object/is-object.js","webpack://xgplayer/./src/skin/style/index.scss?8c1f","webpack://xgplayer/./src/skin/style/index.scss","webpack://xgplayer/./node_modules/style-loader/lib/urls.js","webpack://xgplayer/./src/controls/mobile.js","webpack://xgplayer/./src/controls/pc.js","webpack://xgplayer/./src/controls/start.js","webpack://xgplayer/./src/skin/controls/start.js","webpack://xgplayer/./src/skin/assets/startPlay.svg","webpack://xgplayer/./src/skin/assets/startPause.svg","webpack://xgplayer/./src/skin/style/controls/start.scss?0c41","webpack://xgplayer/./src/skin/style/controls/start.scss","webpack://xgplayer/./src/controls/fullscreen.js","webpack://xgplayer/./src/controls/play.js","webpack://xgplayer/./src/controls/replay.js","webpack://xgplayer/./src/skin/controls/play.js","webpack://xgplayer/./src/skin/assets/play.svg","webpack://xgplayer/./src/skin/assets/pause.svg","webpack://xgplayer/./src/skin/style/controls/play.scss?e857","webpack://xgplayer/./src/skin/style/controls/play.scss","webpack://xgplayer/./src/skin/controls/poster.js","webpack://xgplayer/./src/skin/style/controls/poster.scss?be24","webpack://xgplayer/./src/skin/style/controls/poster.scss","webpack://xgplayer/./src/skin/controls/flex.js","webpack://xgplayer/./src/skin/style/controls/placeholder.scss?564a","webpack://xgplayer/./src/skin/style/controls/placeholder.scss","webpack://xgplayer/./src/skin/controls/fullscreen.js","webpack://xgplayer/./src/skin/assets/requestFull.svg","webpack://xgplayer/./src/skin/assets/exitFull.svg","webpack://xgplayer/./src/skin/style/controls/fullscreen.scss?12bf","webpack://xgplayer/./src/skin/style/controls/fullscreen.scss","webpack://xgplayer/./src/skin/controls/loading.js","webpack://xgplayer/./src/skin/assets/loading.svg","webpack://xgplayer/./src/skin/style/controls/loading.scss?c41a","webpack://xgplayer/./src/skin/style/controls/loading.scss","webpack://xgplayer/./src/skin/controls/progress.js","webpack://xgplayer/./src/skin/style/controls/progress.scss?23f1","webpack://xgplayer/./src/skin/style/controls/progress.scss","webpack://xgplayer/./src/skin/controls/time.js","webpack://xgplayer/./src/skin/style/controls/time.scss?0cc8","webpack://xgplayer/./src/skin/style/controls/time.scss","webpack://xgplayer/./src/skin/controls/replay.js","webpack://xgplayer/./src/skin/assets/replay.svg","webpack://xgplayer/./src/skin/style/controls/replay.scss?041b","webpack://xgplayer/./src/skin/style/controls/replay.scss","webpack://xgplayer/./src/simple_player.js"],"names":["createDom","hasClass","addClass","removeClass","toggleClass","findDom","padStart","format","event","typeOf","deepCopy","getBgImage","copyDom","_setInterval","_clearInterval","createImgBtn","isWeiXin","isUc","computeWatchDur","offInDestroy","on","once","getBuffered2","checkIsBrowser","setStyle","checkWebkitSetPresentationMode","el","tpl","attrs","cname","dom","document","Object","key","value","item","className","reg","sel","charstr","String","len","length","maxlen","Math","chars","r","window","hour","time","minute","second","e","touch","src","dst","url","a","back","Array","node","context","setInterval","intervalFunc","clearInterval","btn","width","w","h","unit","height","Number","name","ua","played","arr","i","begin","end","j","b","watch_dur","object","_fn","fn","maxHoleDuration","buffered","vbuffered","start","diff","buffered_2","buf2len","buf2end","XgplayerTimeRange","style","elem","PresentationMode","PIP","INLINE","FULLSCREEN","video","util","module","exports","useSourceMap","list","toString","map","content","cssWithMappingToString","join","modules","mediaQuery","alreadyImportedModules","id","push","cssMapping","btoa","sourceMapping","toComment","sourceURLs","sources","source","sourceRoot","concat","sourceMap","base64","unescape","encodeURIComponent","JSON","stringify","data","_undefined","require","val","ErrorTypes","network","code","msg","remark","mse","parse","decoder","runtime","timeout","other","Errors","errd","line","handle","version","errorCode","mediaError","arguments","arg","sniffer","get","navigator","ie","firfox","chrome","opera","safari","isWindowsPhone","isSymbian","isAndroid","isFireFox","isTablet","isPhone","isPc","index","Player","ignores","whitelist","lang","inactive","volume","controls","controlsList","unselectable","onselectstart","type","vid","console","s_i18n","self","fetch","method","headers","Accept","res","obj","evName","evFunc","player","containerSize","setTimeout","playPromise","isDelDom","clearTimeout","classNameList","destroyFunc","_replay","param","defaultUserGestureEventHandler","descriptor","k","controlLst","control","Proxy","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","REPLAY","ERROR","PLAY_TIPS","PAUSE_TIPS","PLAYNEXT_TIPS","DOWNLOAD_TIPS","ROTATE_TIPS","RELOAD_TIPS","FULLSCREEN_TIPS","EXITFULLSCREEN_TIPS","CSSFULLSCREEN_TIPS","EXITCSSFULLSCREEN_TIPS","TEXTTRACK","MINIPLAYER","SCREENSHOT","LIVE","OFF","MINIPLAYER_DRAG","AIRPLAY_TIPS","set","options","autoplay","playsinline","airplay","tabindex","mediaType","textTrackDom","track","styleStr","wrap","XgVideoProxy","trackDoms","lastBuffer","defaultVideoEventHandler","curBuffer","videoEventHandler","range","currentTime","bool","isTrue","isFinite","err","status","en","cn","rate","posterUrl","poster","vol","d","callable","apply","Function","prototype","call","create","defineProperty","defineProperties","hasOwnProperty","configurable","enumerable","writable","off","emit","methods","descriptors","base","listener","__ee__","__eeOnceListener__","listeners","candidate","splice","l","args","slice","o","isValue","isPlainFunction","assign","normalizeOpts","contains","dscr","c","desc","gs","undefined","isFunction","classRe","functionToString","test","isPrototype","error","isObject","constructor","possibleTypes","foo","bar","trzy","keys","max","dest","forEach","TypeError","process","opts1","result","str","indexOf","searchString","emitter","function","css","location","Error","baseUrl","protocol","host","currentDir","pathname","replace","fixedCss","fullMatch","origUrl","unquotedOrigUrl","trim","$1","newUrl","mobile","root","clk","_click_","clickedTime","first","onTouch","pc","fullscreen","onCanPlay","s_start","StartPlayIcon","StartPauseIcon","onPlayerReady","fullscreenEl","mode","fullscreenPromise","play","replay","s_play","playBtn","PlayIcon","PauseIcon","tipsText","tips","s_poster","s_flex","playceholder","s_fullscreen","fullscreenBtn","RequestFullIcon","ExitFullIcon","s_loading","container","Loading","isRotateFullscreen","s_progress","containerWidth","progress","outer","cache","point","thumbnail","dotItem","dot","dotEvent","text","duration","tnailPicNum","tnailWidth","tnailHeight","tnailCol","tnailRow","interval","tnailUrls","coverPreviewContainer","coverPreviewPoint","coverPreviewOuter","onLoadedmetadata","events","isRotate","left","move","now","indexInPage","tnaiRowIndex","tnaiColIndex","up","passive","containerLeft","compute","pointWidth","leave","onTimeupdate","precent","prevPrecent","onCurrentTimeChange","onSrcChange","onCacheUpdate","cacheUpdateEvents","s_time","onTimeChange","s_replay","replayText","ReplayIcon","path","transform","svg","Flex","Fullscreen","S_fullscreen","S_loading","Mobile","Pc","Play","S_play","S_progress","S_poster","S_time","Start","S_start","Replay","S_replay"],"mappings":"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C;;;;;;AC3ED;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,EAAQ;;AAE9B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;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","file":"simple_player.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"xgplayer\"] = factory();\n\telse\n\t\troot[\"xgplayer\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 172);\n","import XgplayerTimeRange from './xgplayerTimeRange'\n\nexport function createDom(el = 'div', tpl = '', attrs = {}, cname = '') {\n let dom = document.createElement(el)\n dom.className = cname\n dom.innerHTML = tpl\n Object.keys(attrs).forEach(item => {\n let key = item\n let value = attrs[item]\n if (el === 'video' || el === 'audio') {\n if (value) {\n dom.setAttribute(key, value)\n }\n } else {\n dom.setAttribute(key, value)\n }\n })\n return dom\n}\n\nexport function hasClass(el, className) {\n if (!el) {\n return false;\n }\n\n if (el.classList) {\n return Array.prototype.some.call(el.classList, item => item === className)\n } else if (el.className) {\n return !!el.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n } else {\n return false;\n }\n}\n\nexport function addClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n className.replace(/(^\\s+|\\s+$)/g, '').split(/\\s+/g).forEach(item => {\n item && el.classList.add(item)\n })\n } else if (!hasClass(el, className)) {\n el.className += ' ' + className\n }\n}\n\nexport function removeClass(el, className) {\n if (!el) {\n return;\n }\n\n if (el.classList) {\n className.split(/\\s+/g).forEach(item => {\n el.classList.remove(item)\n })\n } else if (hasClass(el, className)) {\n className.split(/\\s+/g).forEach(item => {\n let reg = new RegExp('(\\\\s|^)' + item + '(\\\\s|$)')\n el.className = el.className.replace(reg, ' ')\n })\n }\n}\n\nexport function toggleClass(el, className) {\n if (!el) {\n return;\n }\n\n className.split(/\\s+/g).forEach(item => {\n if (hasClass(el, item)) {\n removeClass(el, item)\n } else {\n addClass(el, item)\n }\n })\n}\n\nexport function findDom(el = document, sel) {\n let dom\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 if (sel.indexOf('#') === 0) {\n dom = el.getElementById(sel.slice(1))\n }\n }\n return dom\n}\n\nexport function padStart(str, length, pad) {\n let charstr = String(pad)\n let len = length >> 0\n let maxlen = Math.ceil(len / charstr.length)\n let chars = []\n let r = String(str)\n while (maxlen--) {\n chars.push(charstr)\n }\n return chars.join('').substring(0, len - r.length) + r\n}\n\nexport function format(time) {\n if (window.isNaN(time)) {\n return ''\n }\n let hour = padStart(Math.floor(time / 3600), 2, 0)\n let minute = padStart(Math.floor((time - hour * 3600) / 60), 2, 0)\n let second = padStart(Math.floor((time - hour * 3600 - minute * 60)), 2, 0)\n return (hour === '00' ? [minute, second] : [hour, minute, second]).join(':')\n}\n\nexport function event(e) {\n if (e.touches) {\n let 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\nexport function typeOf(obj) {\n return Object.prototype.toString.call(obj).match(/([^\\s.*]+)(?=]$)/g)[0]\n}\n\nexport function deepCopy(dst, src) {\n if (typeOf(src) === 'Object' && typeOf(dst) === 'Object') {\n Object.keys(src).forEach(key => {\n if (typeOf(src[key]) === 'Object' && !(src[key] instanceof Node)) {\n if (!dst[key]) {\n dst[key] = src[key]\n } else {\n deepCopy(dst[key], src[key])\n }\n } else if (typeOf(src[key]) === 'Array') {\n dst[key] = 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}\nexport function getBgImage(el) {\n // fix: return current page url when url is none\n let url = (el.currentStyle || window.getComputedStyle(el, null)).backgroundImage\n if (!url || url === 'none') {\n return ''\n }\n let a = document.createElement('a')\n a.href = url.replace(/url\\(\"|\"\\)/g, '')\n return a.href\n}\n\nexport function copyDom(dom) {\n if (dom && dom.nodeType === 1) {\n let back = document.createElement(dom.tagName)\n Array.prototype.forEach.call(dom.attributes, (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\nexport function _setInterval(context, eventName, intervalFunc, frequency) {\n if (!context._interval[eventName]) {\n context._interval[eventName] = setInterval(intervalFunc.bind(context), frequency)\n }\n}\n\nexport function _clearInterval(context, eventName) {\n clearInterval(context._interval[eventName])\n context._interval[eventName] = null\n}\n\nexport function createImgBtn(name, imgUrl, width, height) {\n let btn = createDom(`xg-${name}`, '', {}, `xgplayer-${name}-img`)\n btn.style.backgroundImage = `url(\"${imgUrl}\")`\n if (width && height) {\n let w, h, unit\n ['px', 'rem', 'em', 'pt', 'dp', 'vw', 'vh', 'vm', '%'].every((item) => {\n if (width.indexOf(item) > -1 && height.indexOf(item) > -1) {\n w = Number(width.slice(0, width.indexOf(item)).trim())\n h = Number(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\nexport function isWeiXin() {\n let ua = window.navigator.userAgent.toLowerCase()\n return ua.indexOf('micromessenger') > -1\n}\n\nexport function isUc() {\n let ua = window.navigator.userAgent.toLowerCase()\n return ua.indexOf('ucbrowser') > -1\n}\n\nexport function computeWatchDur(played = []) {\n let arr = []\n for (let i = 0; i < played.length; i++) {\n if(!played[i].end || played[i].begin < 0 || played[i].end < 0 || played[i].end < played[i].begin) {\n continue\n }\n if(arr.length < 1) {\n arr.push({begin: played[i].begin, end: played[i].end})\n } else {\n for (let j = 0; j < arr.length; j++) {\n let begin = played[i].begin\n let end = played[i].end\n if(end < arr[j].begin) {\n arr.splice(j, 0, {begin, end})\n break\n } else if(begin > arr[j].end) {\n if(j > arr.length - 2) {\n arr.push({begin, end})\n break\n }\n } else {\n let b = arr[j].begin\n let e = arr[j].end\n arr[j].begin = Math.min(begin, b)\n arr[j].end = Math.max(end, e)\n break\n }\n }\n }\n }\n let watch_dur = 0\n for (let i = 0; i < arr.length; i++) {\n watch_dur += arr[i].end - arr[i].begin\n }\n return watch_dur\n}\n\nexport function offInDestroy(object, event, fn, offEvent) {\n function onDestroy () {\n object.off(event, fn)\n object.off(offEvent, onDestroy)\n }\n object.once(offEvent, onDestroy)\n}\n\nexport function on(object, event, fn, offEvent) {\n if (offEvent) {\n object.on(event, fn)\n offInDestroy(object, event, fn, offEvent)\n } else {\n let _fn = data => {\n fn(data)\n object.off(event, _fn)\n }\n object.on(event, _fn)\n }\n}\n\nexport function once(object, event, fn, offEvent) {\n if (offEvent) {\n object.once(event, fn)\n offInDestroy(object, event, fn, offEvent)\n } else {\n let _fn = data => {\n fn(data)\n object.off(event, _fn)\n }\n object.once(event, _fn)\n }\n}\n\nexport function getBuffered2(vbuffered, maxHoleDuration = 0.5) { //ref: hls.js\n let buffered = []\n for (let i = 0; i < vbuffered.length; i++) {\n buffered.push({ start: vbuffered.start(i) < 0.5 ? 0 : vbuffered.start(i), end: vbuffered.end(i) });\n }\n buffered.sort(function (a, b) {\n let diff = a.start - b.start;\n if (diff) {\n return diff;\n } else {\n return b.end - a.end;\n }\n });\n let buffered_2 = []\n if (maxHoleDuration) {\n for (let i = 0; i < buffered.length; i++) {\n let buf2len = buffered_2.length\n if (buf2len) {\n let buf2end = buffered_2[buf2len - 1].end\n if ((buffered[i].start - buf2end) < maxHoleDuration) {\n if (buffered[i].end > buf2end) {\n buffered_2[buf2len - 1].end = buffered[i].end\n }\n } else {\n buffered_2.push(buffered[i])\n }\n } else {\n buffered_2.push(buffered[i])\n }\n }\n } else {\n buffered_2 = buffered\n }\n return new XgplayerTimeRange(buffered_2)\n}\n\nexport function checkIsBrowser() {\n return !(typeof(window) === 'undefined' || typeof(window.document) === 'undefined' || typeof(window.document.createElement) === 'undefined')\n}\n\nexport function setStyle(elem, name, value) {\n let style = elem.style;\n try {\n style[name] = value;\n } catch (error) {\n style.setProperty( name, value );\n }\n}\n\nexport const PresentationMode = {\n PIP: 'picture-in-picture',\n INLINE: 'inline',\n FULLSCREEN: 'fullscreen'\n}\n\nexport function checkWebkitSetPresentationMode (video) {\n return typeof video.webkitSetPresentationMode === 'function'\n}\n\nexport const util = {\n createDom, hasClass, addClass, removeClass, toggleClass, findDom, padStart, format, event, typeOf, \n deepCopy, getBgImage, copyDom, setInterval: _setInterval, clearInterval: _clearInterval, createImgBtn, isWeiXin, isUc, computeWatchDur,\n offInDestroy, on, once, getBuffered2, checkIsBrowser, setStyle\n}\n\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getTarget = function (target) {\n return document.querySelector(target);\n};\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(target) {\n // If passing function in options, then use it for resolve \"head\" element.\n // Useful for Shadow Root style i.e\n // {\n // insertInto: function () { return document.querySelector(\"#foo\").shadowRoot }\n // }\n if (typeof target === 'function') {\n return target();\n }\n if (typeof memo[target] === \"undefined\") {\n\t\t\tvar styleTarget = getTarget.call(this, target);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[target] = styleTarget;\n\t\t}\n\t\treturn memo[target]\n\t};\n})();\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n if (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t result = options.transform(obj.css);\n\n\t if (result) {\n\t \t// If transform returns a value, use that instead of the original css.\n\t \t// This allows running runtime transformations on the css.\n\t \tobj.css = result;\n\t } else {\n\t \t// If the transform function returns a falsy value, don't add this css.\n\t \t// This allows conditional loading of css\n\t \treturn function() {\n\t \t\t// noop\n\t \t};\n\t }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default. Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n","\"use strict\";\n\nvar _undefined = require(\"../function/noop\")(); // Support ES3 engines\n\nmodule.exports = function (val) { return val !== _undefined && val !== null; };\n","import {version} from '../version.json'\nconst 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\nclass Errors {\n constructor (type, currentTime, duration, networkState, readyState, src, currentSrc,\n ended, errd = {line: '', handle: '', msg: '', version: ''}, errorCode, mediaError) {\n let 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 const arg = arguments[0]\n Object.keys(arg).map(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\n","let sniffer = {}\n\nObject.defineProperty(sniffer, 'device', {\n get: function () {\n let r = sniffer.os\n return r.isPc ? 'pc' : 'mobile'\n // return r.isPc ? 'pc' : r.isTablet ? 'tablet' : 'mobile'\n }\n})\n\nObject.defineProperty(sniffer, 'browser', {\n get: function () {\n let ua = navigator.userAgent.toLowerCase()\n let reg = {\n ie: /rv:([\\d.]+)\\) like gecko/,\n firfox: /firefox\\/([\\d.]+)/,\n chrome: /chrome\\/([\\d.]+)/,\n opera: /opera.([\\d.]+)/,\n safari: /version\\/([\\d.]+).*safari/\n }\n return [].concat(Object.keys(reg).filter(key => reg[key].test(ua)))[0] || ''\n }\n})\n\nObject.defineProperty(sniffer, 'os', {\n get: function () {\n let ua = navigator.userAgent\n let isWindowsPhone = /(?:Windows Phone)/.test(ua)\n let isSymbian = /(?:SymbianOS)/.test(ua) || isWindowsPhone\n let isAndroid = /(?:Android)/.test(ua)\n let isFireFox = /(?:Firefox)/.test(ua)\n let isTablet = /(?:iPad|PlayBook)/.test(ua) || (isAndroid && !/(?:Mobile)/.test(ua)) || (isFireFox && /(?:Tablet)/.test(ua))\n let isPhone = /(?:iPhone)/.test(ua) && !isTablet\n let isPc = !isPhone && !isAndroid && !isSymbian && !isTablet\n return {\n isTablet,\n isPhone,\n isAndroid,\n isPc,\n isSymbian,\n isWindowsPhone,\n isFireFox\n }\n }\n})\n\nexport default sniffer\n","\"use strict\";\n\n// ES3 safe\nvar _undefined = void 0;\n\nmodule.exports = function (value) { return value !== _undefined && value !== null; };\n","export default class XgplayerTimeRange {\n constructor(bufferedList) {\n this.bufferedList = bufferedList\n }\n\n start (index) {\n return this.bufferedList[index].start\n }\n\n end (index) {\n return this.bufferedList[index].end\n }\n\n get length () {\n return this.bufferedList.length\n }\n}\n","import Proxy from './proxy'\nimport { util, deepCopy, findDom, createDom, addClass, typeOf, hasClass, removeClass, checkIsBrowser } from './utils/util'\nimport sniffer from './utils/sniffer'\nimport XgplayerTimeRange from './utils/xgplayerTimeRange'\nimport Errors from './error'\nimport allOff from 'event-emitter/all-off'\nimport s_i18n from './skin/controls/i18n.js'\nimport './skin/style/index.scss'\n\nimport {\n version\n} from '../version.json'\nclass Player extends Proxy {\n constructor (options) {\n super(options)\n this.config = deepCopy({\n width: 600,\n height: 337.5,\n ignores: [],\n whitelist: [],\n lang: (document.documentElement.getAttribute('lang') || navigator.language || 'zh-cn').toLocaleLowerCase(),\n inactive: 3000,\n volume: 0.6,\n controls: true,\n controlsList: ['nodownload']\n }, options)\n this.version = version\n this.userTimer = null\n this.waitTimer = null\n this.history = []\n this.isProgressMoving = false\n this.root = findDom(document, `#${this.config.id}`)\n this.controls = createDom('xg-controls', '', {\n unselectable: 'on',\n onselectstart: 'return false'\n }, 'xgplayer-controls')\n if (this.config.isShowControl) {\n this.controls.style.display = 'none'\n }\n if (!this.root) {\n let el = this.config.el\n if (el && el.nodeType === 1) {\n this.root = el\n } else {\n this.emit('error', new Errors({\n type: 'use',\n errd: {\n line: 45,\n handle: 'Constructor',\n msg: 'container id can\\'t be empty'\n },\n vid: this.config.vid\n }))\n console.error('container id can\\'t be empty')\n return false\n }\n }\n // this.rootBackup = copyDom(this.root)\n addClass(this.root, `xgplayer xgplayer-${sniffer.device} xgplayer-nostart xgplayer-pause ${this.config.controls ? '' : 'xgplayer-no-controls'}`)\n this.root.appendChild(this.controls)\n if (this.config.fluid) {\n this.root.style['max-width'] = '100%'\n this.root.style['width'] = '100%'\n this.root.style['height'] = '0'\n this.root.style['padding-top'] = `${this.config.height * 100 / this.config.width}%`\n\n this.video.style['position'] = 'absolute'\n this.video.style['top'] = '0'\n this.video.style['left'] = '0'\n } else {\n // this.root.style.width = `${this.config.width}px`\n // this.root.style.height = `${this.config.height}px`\n if (this.config.width) {\n if (typeof this.config.width !== 'number') {\n this.root.style.width = this.config.width\n } else {\n this.root.style.width = `${this.config.width}px`\n }\n }\n if (this.config.height) {\n if (typeof this.config.height !== 'number') {\n this.root.style.height = this.config.height\n } else {\n this.root.style.height = `${this.config.height}px`\n }\n }\n }\n if (this.config.execBeforePluginsCall) {\n this.config.execBeforePluginsCall.forEach(item => {\n item.call(this, this)\n })\n }\n if(!this.config.closeI18n) {\n Player.install(s_i18n.name, s_i18n.method)\n }\n if (this.config.controlStyle && typeOf(this.config.controlStyle) === 'String') {\n let self = this\n fetch(self.config.controlStyle, {\n method: 'GET',\n headers: {\n Accept: 'application/json'\n }\n }).then(function (res) {\n if (res.ok) {\n res.json().then(function (obj) {\n for (var prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n self.config[prop] = obj[prop]\n }\n }\n self.pluginsCall()\n })\n }\n }).catch(function (err) {\n console.log('Fetch错误:' + err)\n })\n } else {\n this.pluginsCall()\n }\n if(this.config.controlPlugins) {\n Player.controlsRun(this.config.controlPlugins, this)\n }\n this.ev.forEach((item) => {\n let evName = Object.keys(item)[0]\n let evFunc = this[item[evName]]\n if (evFunc) {\n this.on(evName, evFunc)\n }\n });\n\n ['focus', 'blur'].forEach(item => {\n this.on(item, this['on' + item.charAt(0).toUpperCase() + item.slice(1)])\n })\n let player = this\n this.mousemoveFunc = function () {\n player.emit('focus')\n if (!player.config.closeFocusVideoFocus) {\n player.video.focus()\n }\n }\n this.root.addEventListener('mousemove', this.mousemoveFunc)\n this.playFunc = function () {\n player.emit('focus')\n if (!player.config.closePlayVideoFocus) {\n player.video.focus()\n }\n }\n player.once('play', this.playFunc)\n\n this.getVideoSize = function () {\n if (this.video.videoWidth && this.video.videoHeight) {\n let containerSize = player.root.getBoundingClientRect()\n if (player.config.fitVideoSize === 'auto') {\n if (containerSize.width / containerSize.height > this.video.videoWidth / this.video.videoHeight) {\n player.root.style.height = `${this.video.videoHeight / this.video.videoWidth * containerSize.width}px`\n } else {\n player.root.style.width = `${this.video.videoWidth / this.video.videoHeight * containerSize.height}px`\n }\n } else if (player.config.fitVideoSize === 'fixWidth') {\n player.root.style.height = `${this.video.videoHeight / this.video.videoWidth * containerSize.width}px`\n } else if (player.config.fitVideoSize === 'fixHeight') {\n player.root.style.width = `${this.video.videoWidth / this.video.videoHeight * containerSize.height}px`\n }\n }\n }\n player.once('loadeddata', this.getVideoSize)\n\n setTimeout(() => {\n this.emit('ready')\n this.isReady = true\n }, 0)\n\n if (this.config.videoInit) {\n if (hasClass(this.root, 'xgplayer-nostart')) {\n this.start()\n }\n }\n if (player.config.rotate) {\n player.on('requestFullscreen', this.updateRotateDeg)\n player.on('exitFullscreen', this.updateRotateDeg)\n }\n\n function onDestroy () {\n player.root.removeEventListener('mousemove', player.mousemoveFunc)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n }\n\n attachVideo () {\n if(this.video && this.video.nodeType === 1) {\n this.root.insertBefore(this.video, this.root.firstChild)\n }\n setTimeout(() => {\n this.emit('complete')\n if(this.danmu && typeof this.danmu.resize === 'function') {\n this.danmu.resize()\n }\n }, 1)\n }\n\n start (url = this.config.url) {\n if(!this.video) return\n let player = this\n if (!url || url === '') {\n this.emit('urlNull')\n return\n }\n this.canPlayFunc = function () {\n player.off('canplay', player.canPlayFunc)\n let playPromise = player.video.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.then(function () {\n player.emit('autoplay started')\n }).catch(function () {\n player.emit('autoplay was prevented')\n addClass(player.root, 'xgplayer-is-autoplay')\n })\n }\n }\n if (typeOf(url) !== 'Array') {\n if (typeOf(url) === 'String' && url.indexOf('blob:') > -1 && url === this.video.src) {\n // 在Chromium环境下用mse url给video二次赋值会导致错误\n } else {\n this.video.src = url\n }\n } else {\n url.forEach(item => {\n this.video.appendChild(createDom('source', '', {\n src: `${item.src}`,\n type: `${item.type || ''}`\n }))\n })\n }\n if (this.config.autoplay) {\n if (sniffer.os.isPhone) {\n this.canPlayFunc()\n } else {\n this.on('canplay', this.canPlayFunc)\n }\n }\n if(!this.config.disableStartLoad) {\n this.video.load()\n }\n this.attachVideo()\n }\n\n reload () {\n this.video.load()\n this.reloadFunc = function () {\n // eslint-disable-next-line handle-callback-err\n let playPromise = this.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n }\n this.once('loadeddata', this.reloadFunc)\n }\n\n destroy (isDelDom = true) {\n let player = this\n clearInterval(this.bulletResizeTimer)\n for (let k in this._interval) {\n clearInterval(this._interval[k])\n this._interval[k] = null\n }\n if (this.checkTimer) {\n clearInterval(this.checkTimer)\n }\n if (this.waitTimer) {\n clearTimeout(this.waitTimer)\n }\n this.ev.forEach((item) => {\n let evName = Object.keys(item)[0]\n let evFunc = this[item[evName]]\n if (evFunc) {\n this.off(evName, evFunc)\n }\n });\n if (this.loadeddataFunc) {\n this.off('loadeddata', this.loadeddataFunc)\n }\n if (this.reloadFunc) {\n this.off('loadeddata', this.reloadFunc)\n }\n if (this.replayFunc) {\n this.off('play', this.replayFunc)\n }\n if (this.playFunc) {\n this.off('play', this.playFunc)\n }\n if (this.getVideoSize) {\n this.off('loadeddata', this.getVideoSize)\n };\n ['focus', 'blur'].forEach(item => {\n this.off(item, this['on' + item.charAt(0).toUpperCase() + item.slice(1)])\n })\n if (!this.config.keyShortcut || this.config.keyShortcut === 'on') {\n ['video', 'controls'].forEach(item => {\n if (this[item]) {\n this[item].removeEventListener('keydown', function (e) { player.onKeydown(e, player) })\n }\n })\n }\n\n function destroyFunc () {\n this.emit('destroy')\n // this.root.id = this.root.id + '_del'\n // parentNode.insertBefore(this.rootBackup, this.root)\n\n // fix video destroy https://stackoverflow.com/questions/3258587/how-to-properly-unload-destroy-a-video-element\n this.video.removeAttribute('src') // empty source\n this.video.load()\n if (isDelDom) {\n // parentNode.removeChild(this.root)\n this.root.innerHTML = ''\n let classNameList = this.root.className.split(' ')\n if (classNameList.length > 0) {\n this.root.className = classNameList.filter(name => name.indexOf('xgplayer') < 0).join(' ')\n } else {\n this.root.className = ''\n }\n }\n\n for (let k in this) {\n // if (k !== 'config') {\n delete this[k]\n // }\n }\n allOff(this)\n }\n\n // destroy immediately\n // Don't use the paused property detection, it doesn't use MediaElement.paused, \n // so it's not accurate enough. Destroy after waiting for pause event, this \n // changes the synchronous behavior of destroy api\n destroyFunc.call(this)\n\n super.destroy()\n }\n\n replay () {\n let self = this\n let _replay = this._replay\n // ie9 bugfix\n removeClass(this.root, 'xgplayer-ended')\n if(sniffer.browser.indexOf('ie') > -1) {\n this.emit('play')\n this.emit('playing')\n }\n \n if (_replay && _replay instanceof Function) {\n _replay()\n } else {\n this.currentTime = 0\n // eslint-disable-next-line handle-callback-err\n let playPromise = this.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n }\n }\n\n userGestureTrigEvent (name, param) {\n const defaultUserGestureEventHandler = (name, param) => {\n this.emit(name, param)\n }\n if(this.config.userGestureEventMiddleware && typeof this.config.userGestureEventMiddleware[name] === 'function') {\n this.config.userGestureEventMiddleware[name].call(this, this, name, param, defaultUserGestureEventHandler)\n } else {\n defaultUserGestureEventHandler.call(this, name, param);\n }\n }\n\n pluginsCall () {\n if(Player.plugins['s_i18n']) {\n Player.plugins['s_i18n'].call(this, this)\n }\n let self = this\n if (Player.plugins) {\n let ignores = this.config.ignores\n Object.keys(Player.plugins).forEach(name => {\n let descriptor = Player.plugins[name]\n if(!descriptor || typeof descriptor !== 'function'){\n console.warn('plugin name', name , 'is invalid')\n } else {\n if (!ignores.some(item => name === item || name === 's_' + item) && name !== 's_i18n') {\n if (['pc', 'tablet', 'mobile'].some(type => type === name)) {\n if (name === sniffer.device) {\n setTimeout(() => {\n // if destroyed, skip\n if (!self.video) return;\n descriptor.call(self, self)\n }, 0)\n }\n } else {\n descriptor.call(this, this)\n }\n }\n }\n })\n }\n }\n\n onFocus () {\n let player = this\n if(hasClass(this.root, 'xgplayer-inactive')) {\n player.emit('controlShow')\n }\n removeClass(this.root, 'xgplayer-inactive')\n if (player.userTimer) {\n clearTimeout(player.userTimer)\n }\n player.userTimer = setTimeout(function () {\n player.emit('blur')\n }, player.config.inactive)\n }\n\n onBlur () {\n // this.video.blur()\n if ((this.config.enablePausedInactive || !this.paused) && !this.ended && !this.config.closeInactive) {\n if(!hasClass(this.root, 'xgplayer-inactive')) {\n this.emit('controlHide')\n }\n addClass(this.root, 'xgplayer-inactive')\n }\n }\n\n onPlay () {\n addClass(this.root, 'xgplayer-isloading')\n addClass(this.root, 'xgplayer-playing')\n removeClass(this.root, 'xgplayer-pause')\n }\n\n onPause () {\n addClass(this.root, 'xgplayer-pause')\n if (this.userTimer) {\n clearTimeout(this.userTimer)\n }\n this.emit('focus')\n }\n\n onEnded () {\n addClass(this.root, 'xgplayer-ended')\n removeClass(this.root, 'xgplayer-playing')\n }\n\n onSeeking () {\n this.isSeeking = true\n // 兼容IE下无法触发waiting事件的问题 seeking的时候直接出发waiting\n this.onWaiting()\n // addClass(this.root, 'seeking');\n }\n\n // onTimeupdate () {\n // // for ie,playing fired before waiting\n // if (this.waitTimer) {\n // clearTimeout(this.waitTimer)\n // }\n // removeClass(this.root, 'xgplayer-isloading')\n\n // }\n\n onSeeked () {\n // for ie,playing fired before waiting\n this.once('timeupdate', () => {\n this.isSeeking = false\n })\n if (this.waitTimer) {\n clearTimeout(this.waitTimer)\n }\n removeClass(this.root, 'xgplayer-isloading')\n }\n\n onWaiting () {\n let self = this\n if (self.waitTimer) {\n clearTimeout(self.waitTimer)\n }\n if (self.checkTimer) {\n clearInterval(self.checkTimer)\n self.checkTimer = null\n }\n let time = self.currentTime\n self.waitTimer = setTimeout(function () {\n addClass(self.root, 'xgplayer-isloading')\n self.checkTimer = setInterval(function () {\n if (self.currentTime !== time) {\n removeClass(self.root, 'xgplayer-isloading')\n clearInterval(self.checkTimer)\n self.checkTimer = null\n }\n }, 1000)\n }, 500)\n }\n\n onPlaying () {\n // 兼容safari下无法自动播放会触发该事件的场景\n if (this.paused) {\n return\n }\n this.isSeeking = false\n if (this.waitTimer) {\n clearTimeout(this.waitTimer)\n }\n removeClass(this.root, 'xgplayer-isloading xgplayer-nostart xgplayer-pause xgplayer-ended xgplayer-is-error xgplayer-replay')\n addClass(this.root, 'xgplayer-playing')\n }\n\n static install (name, descriptor) {\n if (!checkIsBrowser()) {\n return\n }\n if (!Player.plugins) {\n Player.plugins = {}\n }\n if (!Player.plugins[name]) {\n Player.plugins[name] = descriptor\n }\n }\n\n static installAll (list) {\n for(let k = 0; k < list.length; k++){\n Player.install(list[k].name, list[k].method)\n }\n }\n\n static use (name, descriptor) {\n if (!Player.plugins) {\n Player.plugins = {}\n }\n Player.plugins[name] = descriptor\n }\n\n static useAll (list) {\n for (let k in list) {\n Player.use(list[k].name, list[k].method)\n }\n }\n\n static controlsRun (controlLst, context) {\n controlLst.forEach(function(control) {\n control.method.call(context)\n })\n }\n}\n\nPlayer.util = util\nPlayer.sniffer = sniffer\nPlayer.Errors = Errors\nPlayer.XgplayerTimeRange = XgplayerTimeRange\n\nexport default Player\n","import { typeOf } from '../../utils/util'\n\nlet s_i18n = function () {\n let player = this; let lang = {};\n lang.en = {\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 MINIPLAYER: 'Miniplayer',\n SCREENSHOT: 'Screenshot',\n LIVE: 'LIVE',\n OFF: 'Off',\n MINIPLAYER_DRAG: 'Click and hold to drag',\n AIRPLAY_TIPS: 'Airplay',\n }\n lang['zh-cn'] = {\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 MINIPLAYER: '迷你播放器',\n SCREENSHOT: '截图',\n LIVE: '正在直播',\n OFF: '关闭',\n MINIPLAYER_DRAG: '点击按住可拖动视频',\n AIRPLAY_TIPS: '隔空播放',\n }\n lang['zh-hk'] = {\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 MINIPLAYER: '迷妳播放器',\n SCREENSHOT: '截圖',\n LIVE: '正在直播',\n OFF: '關閉',\n MINIPLAYER_DRAG: '點擊按住可拖動視頻',\n AIRPLAY_TIPS: '隔空播放',\n }\n lang['jp'] = {\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 MINIPLAYER: 'ミニプレーヤー',\n SCREENSHOT: 'スクリーンショット',\n LIVE: '生放送',\n OFF: 'オフ',\n MINIPLAYER_DRAG: 'ボタンを押して働画をドラッグする',\n AIRPLAY_TIPS: '隔空放送',\n }\n\n Object.defineProperty(player, 'lang', {\n get: function () {\n if (player.config) {\n return lang[player.config.lang] || lang['en']\n } else {\n return lang['en']\n }\n },\n set: function (value) {\n if (typeOf(value) === 'Object') {\n Object.keys(value).forEach(key => {\n lang[key] = value[key]\n })\n }\n }\n })\n\n}\n\nexport default {\n name: 's_i18n',\n method: s_i18n\n}","import EventEmitter from 'event-emitter'\nimport { findDom, createDom, hasClass, removeClass, _clearInterval, _setInterval, on, once, getBuffered2, setStyle } from './utils/util'\nimport Errors from './error'\n\nclass Proxy {\n constructor (options) {\n this._hasStart = false\n this.videoConfig = {\n controls: !!options.isShowControl,\n autoplay: options.autoplay,\n playsinline: options.playsinline,\n 'webkit-playsinline': options.playsinline,\n 'x5-playsinline': options.playsinline,\n 'x5-video-player-type': options['x5-video-player-type'] || options['x5VideoPlayerType'],\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 }\n if (options.muted) {\n this.videoConfig.muted = 'muted'\n }\n if (options.loop) {\n this.videoConfig.loop = 'loop'\n }\n let textTrackDom = ''\n this.textTrackShowDefault = true\n if (options.nativeTextTrack && Array.isArray(options.nativeTextTrack)) {\n if (options.nativeTextTrack.length > 0 && !options.nativeTextTrack.some(track => { return track.default })) {\n options.nativeTextTrack[0].default = true\n this.textTrackShowDefault = false\n }\n options.nativeTextTrack.some(track => {\n if (track.src && track.label && track.default) {\n textTrackDom += `<track src=\"${track.src}\" `\n if (track.kind) {\n textTrackDom += `kind=\"${track.kind}\" `\n }\n textTrackDom += `label=\"${track.label}\" `\n if (track.srclang) {\n textTrackDom += `srclang=\"${track.srclang}\" `\n }\n textTrackDom += `${track.default ? 'default' : ''}>`\n return true\n }\n })\n this.videoConfig.crossorigin = 'anonymous'\n }\n if (options.textTrackStyle) {\n let style = document.createElement('style')\n this.textTrackStyle = style\n document.head.appendChild(style)\n let styleStr = ''\n for (let index in options.textTrackStyle) {\n styleStr += `${index}: ${options.textTrackStyle[index]};`\n }\n let wrap = options.id ? `#${options.id}` : (options.el.id ? `#${options.el.id}` : `.${options.el.className}`)\n if (style.sheet.insertRule) {\n style.sheet.insertRule(`${wrap} video::cue { ${styleStr} }`, 0)\n } else if (style.sheet.addRule) {\n style.sheet.addRule(`${wrap} video::cue`, styleStr)\n }\n }\n let el = options.el ? options.el : findDom(document, `#${options.id}`)\n const XgVideoProxy = this.constructor.XgVideoProxy\n if(XgVideoProxy && this.videoConfig.mediaType === XgVideoProxy.mediaType) {\n this.video = new XgVideoProxy(el, options)\n } else {\n this.video = createDom(this.videoConfig.mediaType, textTrackDom, this.videoConfig, '')\n }\n if (options.videoStyle) {\n Object.keys(options.videoStyle).forEach(key => {\n setStyle(this.video, key, options.videoStyle[key])\n })\n }\n if (!this.textTrackShowDefault && textTrackDom) {\n let trackDoms = this.video.getElementsByTagName('Track')\n trackDoms[0].track.mode = 'hidden'\n }\n if (options.autoplay) {\n this.video.autoplay = true\n if (options.autoplayMuted) {\n this.video.muted = true\n }\n }\n\n this.ev = ['play', 'playing', 'pause', 'ended', 'error', 'seeking', 'seeked', 'progress', \n 'timeupdate', 'waiting', 'canplay', 'canplaythrough', 'durationchange', 'volumechange', 'ratechange', 'loadedmetadata', 'loadeddata', 'loadstart'\n ].map((item) => {\n return {\n [item]: `on${item.charAt(0).toUpperCase()}${item.slice(1)}`\n }\n })\n EventEmitter(this)\n\n this._interval = {}\n let lastBuffer = '0,0'\n let self = this\n\n const defaultVideoEventHandler = name => {\n // fix when video destroy called and video reload\n if (!this) {\n return\n }\n if (name === 'play') {\n this.hasStart = true\n } else if (name === 'canplay') {\n removeClass(this.root, 'xgplayer-is-enter')\n } else if (name === 'waiting') {\n this.inWaitingStart = new Date().getTime()\n } else if (name === 'playing') {\n removeClass(this.root, 'xgplayer-is-enter')\n if (this.inWaitingStart) {\n this.inWaitingStart = undefined\n }\n }\n if (name === 'error') {\n // process the error\n this._onError(name)\n } else {\n this.emit(name, this)\n }\n\n if (this.hasOwnProperty('_interval')) {\n if (['ended', 'error', 'timeupdate'].indexOf(name) < 0) {\n _clearInterval(this, 'bufferedChange')\n _setInterval(this, 'bufferedChange', function () {\n if (this.video && this.video.buffered) {\n let curBuffer = []\n for (let i = 0, len = this.video.buffered.length; i < len; i++) {\n curBuffer.push([this.video.buffered.start(i), this.video.buffered.end(i)])\n }\n if (curBuffer.toString() !== lastBuffer) {\n lastBuffer = curBuffer.toString()\n this.emit('bufferedChange', curBuffer)\n }\n }\n }, 200)\n } else {\n if (name !== 'timeupdate') {\n _clearInterval(this, 'bufferedChange')\n }\n }\n }\n }\n\n const videoEventHandler = name => {\n if(options.videoEventMiddleware && typeof options.videoEventMiddleware[name] === 'function') {\n options.videoEventMiddleware[name].call(this, this, name, defaultVideoEventHandler)\n } else {\n defaultVideoEventHandler.call(this, name);\n }\n }\n\n this.ev.forEach(item => {\n self.evItem = Object.keys(item)[0]\n let name = Object.keys(item)[0]\n self.video.addEventListener(Object.keys(item)[0], videoEventHandler.bind(self, name))\n })\n }\n /**\n * 错误监听处理逻辑抽离\n */\n _onError (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,\n this.ended, {\n line: 162,\n msg: this.error,\n handle: 'Constructor'\n }, this.video.error.code, this.video.error))\n }\n }\n\n get hasStart () {\n return this._hasStart\n }\n set hasStart (bool) {\n if (typeof bool === 'boolean' && bool === true && !this._hasStart) {\n this._hasStart = true\n this.emit('hasstart')\n }\n }\n destroy () {\n if (this.textTrackStyle) {\n this.textTrackStyle.parentNode.removeChild(this.textTrackStyle)\n }\n }\n play () {\n return this.video.play()\n }\n pause () {\n this.video.pause()\n }\n canPlayType (type) {\n return this.video.canPlayType(type)\n }\n getBufferedRange (buffered) {\n let range = [0, 0]\n let video = this.video\n if(!buffered) buffered = video.buffered\n let currentTime = video.currentTime\n if (buffered) {\n for (let 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 proxyOn (event, fn) {\n on(this, event, fn, 'destroy')\n }\n proxyOnce (event, fn) {\n once(this, event, fn, 'destroy')\n }\n set autoplay (isTrue) {\n if(this.video) {\n this.video.autoplay = isTrue\n }\n }\n get autoplay () {\n if(this.video) {\n return this.video.autoplay\n } else {\n return false\n }\n }\n get buffered () {\n if(this.video) {\n return this.video.buffered\n } else {\n return undefined\n }\n }\n get buffered2 () {\n return getBuffered2(this.video.buffered)\n }\n get crossOrigin () {\n if(this.video) {\n return this.video.crossOrigin\n } else {\n return false\n }\n }\n set crossOrigin (isTrue) {\n if(this.video) {\n this.video.crossOrigin = isTrue\n }\n }\n get currentSrc () {\n if(this.video) {\n return this.video.currentSrc\n } else {\n return undefined\n }\n }\n get currentTime () {\n if(this.video) {\n return this.video.currentTime || 0\n } else {\n return 0\n }\n }\n set currentTime (time) {\n if (typeof isFinite === 'function' && !isFinite(time)) return\n if (hasClass(this.root, 'xgplayer-ended')) {\n this.once('playing', () => { this.video.currentTime = time })\n this.replay()\n } else {\n this.video.currentTime = time\n }\n this.emit('currentTimeChange', time)\n }\n get defaultMuted () {\n if(this.video) {\n return this.video.defaultMuted\n } else {\n return false\n }\n }\n set defaultMuted (isTrue) {\n if(this.video) {\n this.video.defaultMuted = isTrue\n }\n }\n get duration () {\n if(this.config.duration) {\n if(this.video) return Math.min(this.config.duration, this.video.duration)\n else return this.config.duration\n }\n if (!this.video) return null\n return this.video.duration\n }\n get ended () {\n if(this.video) {\n return this.video.ended || false\n } else {\n return true\n }\n }\n get error () {\n let err = this.video.error\n if (!err) {\n return null\n }\n let status = [{\n en: 'MEDIA_ERR_ABORTED',\n cn: '取回过程被用户中止'\n }, {\n en: 'MEDIA_ERR_NETWORK',\n cn: '当下载时发生错误'\n }, {\n en: 'MEDIA_ERR_DECODE',\n cn: '当解码时发生错误'\n }, {\n en: 'MEDIA_ERR_SRC_NOT_SUPPORTED',\n cn: '不支持音频/视频'\n }]\n return this.lang ? this.lang[status[err.code - 1].en] : status[err.code - 1].en\n }\n get loop () {\n if(this.video) {\n return this.video.loop\n } else {\n return false\n }\n }\n set loop (isTrue) {\n if(this.video) {\n this.video.loop = isTrue\n }\n }\n get muted () {\n if(this.video) {\n return this.video.muted\n } else {\n return false\n }\n }\n set muted (isTrue) {\n if(this.video) {\n this.video.muted = isTrue\n }\n }\n get networkState () {\n let status = [{\n en: 'NETWORK_EMPTY',\n cn: '音频/视频尚未初始化'\n }, {\n en: 'NETWORK_IDLE',\n cn: '音频/视频是活动的且已选取资源,但并未使用网络'\n }, {\n en: 'NETWORK_LOADING',\n cn: '浏览器正在下载数据'\n }, {\n en: 'NETWORK_NO_SOURCE',\n cn: '未找到音频/视频来源'\n }]\n return this.lang ? this.lang[status[this.video.networkState].en] : status[this.video.networkState].en\n }\n get paused () {\n // if(this.video) {\n // return this.video.paused\n // } else {\n // return false\n // }\n return hasClass(this.root, 'xgplayer-pause')\n }\n get playbackRate () {\n if(this.video) {\n return this.video.playbackRate\n } else {\n return 1\n }\n }\n set playbackRate (rate) {\n if(this.video) {\n this.video.playbackRate = rate\n }\n }\n get played () {\n if(this.video) {\n return this.video.played\n } else {\n return undefined\n }\n }\n get preload () {\n if(this.video) {\n return this.video.preload\n } else {\n return false\n }\n }\n set preload (isTrue) {\n if(this.video) {\n this.video.preload = isTrue\n }\n }\n get readyState () {\n let status = [{\n en: 'HAVE_NOTHING',\n cn: '没有关于音频/视频是否就绪的信息'\n }, {\n en: 'HAVE_METADATA',\n cn: '关于音频/视频就绪的元数据'\n }, {\n en: 'HAVE_CURRENT_DATA',\n cn: '关于当前播放位置的数据是可用的,但没有足够的数据来播放下一帧/毫秒'\n }, {\n en: 'HAVE_FUTURE_DATA',\n cn: '当前及至少下一帧的数据是可用的'\n }, {\n en: 'HAVE_ENOUGH_DATA',\n cn: '可用数据足以开始播放'\n }]\n return this.lang ? this.lang[status[this.video.readyState].en] : status[this.video.readyState]\n }\n get seekable () {\n if(this.video) {\n return this.video.seekable\n } else {\n return false\n }\n }\n get seeking () {\n if(this.video) {\n return this.video.seeking\n } else {\n return false\n }\n }\n get src () {\n if(this.video) {\n return this.video.src\n } else {\n return undefined\n }\n }\n set src (url) {\n if (!hasClass(this.root, 'xgplayer-ended')) {\n this.emit('urlchange', this.video.src)\n }\n removeClass(this.root, 'xgplayer-ended xgplayer-is-replay xgplayer-is-error')\n this.video.pause()\n this.emit('pause')\n this.video.src = url\n this.emit('srcChange')\n }\n set poster (posterUrl) {\n let poster = findDom(this.root, '.xgplayer-poster')\n if (poster) {\n poster.style.backgroundImage = `url(${posterUrl})`\n }\n }\n get volume () {\n if(this.video) {\n return this.video.volume\n } else {\n return 1\n }\n }\n set volume (vol) {\n if(this.video) {\n this.video.volume = vol\n }\n }\n get fullscreen () {\n return hasClass(this.root, 'xgplayer-is-fullscreen') || hasClass(this.root, 'xgplayer-fullscreen-active')\n }\n get bullet () {\n return findDom(this.root, 'xg-danmu') ? hasClass(findDom(this.root, 'xg-danmu'), 'xgplayer-has-danmu') : false\n }\n get textTrack () {\n return hasClass(this.root, 'xgplayer-is-textTrack')\n }\n get pip () {\n return hasClass(this.root, 'xgplayer-pip-active')\n }\n get isMiniPlayer () {\n return hasClass(this.root, 'xgplayer-miniplayer-active')\n }\n}\n\nexport default Proxy\n","'use strict';\n\nvar d = require('d')\n , callable = require('es5-ext/object/valid-callable')\n\n , apply = Function.prototype.apply, call = Function.prototype.call\n , create = Object.create, defineProperty = Object.defineProperty\n , defineProperties = Object.defineProperties\n , hasOwnProperty = Object.prototype.hasOwnProperty\n , descriptor = { configurable: true, enumerable: false, writable: true }\n\n , on, once, off, emit, methods, descriptors, base;\n\non = function (type, listener) {\n\tvar data;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) {\n\t\tdata = descriptor.value = create(null);\n\t\tdefineProperty(this, '__ee__', descriptor);\n\t\tdescriptor.value = null;\n\t} else {\n\t\tdata = this.__ee__;\n\t}\n\tif (!data[type]) data[type] = listener;\n\telse if (typeof data[type] === 'object') data[type].push(listener);\n\telse data[type] = [data[type], listener];\n\n\treturn this;\n};\n\nonce = function (type, listener) {\n\tvar once, self;\n\n\tcallable(listener);\n\tself = this;\n\ton.call(this, type, once = function () {\n\t\toff.call(self, type, once);\n\t\tapply.call(listener, this, arguments);\n\t});\n\n\tonce.__eeOnceListener__ = listener;\n\treturn this;\n};\n\noff = function (type, listener) {\n\tvar data, listeners, candidate, i;\n\n\tcallable(listener);\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return this;\n\tdata = this.__ee__;\n\tif (!data[type]) return this;\n\tlisteners = data[type];\n\n\tif (typeof listeners === 'object') {\n\t\tfor (i = 0; (candidate = listeners[i]); ++i) {\n\t\t\tif ((candidate === listener) ||\n\t\t\t\t\t(candidate.__eeOnceListener__ === listener)) {\n\t\t\t\tif (listeners.length === 2) data[type] = listeners[i ? 0 : 1];\n\t\t\t\telse listeners.splice(i, 1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif ((listeners === listener) ||\n\t\t\t\t(listeners.__eeOnceListener__ === listener)) {\n\t\t\tdelete data[type];\n\t\t}\n\t}\n\n\treturn this;\n};\n\nemit = function (type) {\n\tvar i, l, listener, listeners, args;\n\n\tif (!hasOwnProperty.call(this, '__ee__')) return;\n\tlisteners = this.__ee__[type];\n\tif (!listeners) return;\n\n\tif (typeof listeners === 'object') {\n\t\tl = arguments.length;\n\t\targs = new Array(l - 1);\n\t\tfor (i = 1; i < l; ++i) args[i - 1] = arguments[i];\n\n\t\tlisteners = listeners.slice();\n\t\tfor (i = 0; (listener = listeners[i]); ++i) {\n\t\t\tapply.call(listener, this, args);\n\t\t}\n\t} else {\n\t\tswitch (arguments.length) {\n\t\tcase 1:\n\t\t\tcall.call(listeners, this);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tcall.call(listeners, this, arguments[1]);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tcall.call(listeners, this, arguments[1], arguments[2]);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tl = arguments.length;\n\t\t\targs = new Array(l - 1);\n\t\t\tfor (i = 1; i < l; ++i) {\n\t\t\t\targs[i - 1] = arguments[i];\n\t\t\t}\n\t\t\tapply.call(listeners, this, args);\n\t\t}\n\t}\n};\n\nmethods = {\n\ton: on,\n\tonce: once,\n\toff: off,\n\temit: emit\n};\n\ndescriptors = {\n\ton: d(on),\n\tonce: d(once),\n\toff: d(off),\n\temit: d(emit)\n};\n\nbase = defineProperties({}, descriptors);\n\nmodule.exports = exports = function (o) {\n\treturn (o == null) ? create(base) : defineProperties(Object(o), descriptors);\n};\nexports.methods = methods;\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 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\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","\"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","\"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","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.assign : require(\"./shim\");\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 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","\"use strict\";\n\nmodule.exports = require(\"./is-implemented\")() ? Object.keys : require(\"./shim\");\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 keys = Object.keys;\n\nmodule.exports = function (object) { return keys(isValue(object) ? Object(object) : object); };\n","\"use strict\";\n\n// eslint-disable-next-line no-empty-function\nmodule.exports = function () {};\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","\"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\nmodule.exports = require(\"./is-implemented\")() ? String.prototype.contains : require(\"./shim\");\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\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 = function (fn) {\n\tif (typeof fn !== \"function\") throw new TypeError(fn + \" is not a function\");\n\treturn fn;\n};\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\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 map = { function: true, object: true };\n\nmodule.exports = function (value) { return (isValue(value) && map[typeof value]) || false; };\n","\nvar content = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../node_modules/postcss-loader/lib/index.js!../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./index.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../node_modules/postcss-loader/lib/index.js!../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./index.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../node_modules/postcss-loader/lib/index.js!../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./index.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default{background:#000;width:100%;height:100%;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;-ms-user-select:none}.xgplayer-skin-default *{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;white-space:normal;word-wrap:normal}.xgplayer-skin-default.xgplayer-rotate-fullscreen{position:absolute;top:0;left:100%;bottom:0;right:0;height:100vw!important;width:100vh!important;-webkit-transform-origin:top left;-ms-transform-origin:top left;transform-origin:top left;-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.xgplayer-skin-default.xgplayer-is-fullscreen{width:100%!important;height:100%!important;padding-top:0!important;z-index:9999}.xgplayer-skin-default.xgplayer-is-fullscreen.xgplayer-inactive{cursor:none}.xgplayer-skin-default video{width:100%;height:100%;outline:none}.xgplayer-skin-default .xgplayer-none{display:none}@-webkit-keyframes loadingRotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingRotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@-webkit-keyframes loadingDashOffset{0%{stroke-dashoffset:236}to{stroke-dashoffset:0}}@keyframes loadingDashOffset{0%{stroke-dashoffset:236}to{stroke-dashoffset:0}}.xgplayer-skin-default .xgplayer-controls{display:-webkit-flex;display:-moz-box;display:flex;position:absolute;bottom:0;left:0;right:0;height:40px;background-image:linear-gradient(180deg,transparent,rgba(0,0,0,.37),rgba(0,0,0,.75),rgba(0,0,0,.75));z-index:10}.xgplayer-skin-default.xgplayer-inactive .xgplayer-controls,.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-progress,.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-time,.xgplayer-skin-default.xgplayer-no-controls .xgplayer-controls,.xgplayer-skin-default.xgplayer-nostart .xgplayer-controls{display:none}.xgplayer-skin-default.xgplayer-is-live .xgplayer-controls .xgplayer-live{display:block}.xgplayer-skin-default .xgplayer-live{display:block;font-size:12px;color:#fff;line-height:40px;-webkit-order:1;-moz-box-ordinal-group:2;order:1}.xgplayer-skin-default .xgplayer-icon{display:block;width:40px;height:40px;overflow:hidden;fill:#fff}.xgplayer-skin-default .xgplayer-icon svg{position:absolute}.xgplayer-skin-default .xgplayer-tips{background:rgba(0,0,0,.54);border-radius:1px;display:none;position:absolute;font-family:PingFangSC-Regular;font-size:11px;color:#fff;padding:2px 4px;text-align:center;top:-30px;left:50%;margin-left:-16px;width:auto;white-space:nowrap}.xgplayer-skin-default.xgplayer-mobile .xgplayer-tips{display:none!important}.xgplayer-skin-default .xgplayer-screen-container{display:block;width:100%}\", \"\"]);\n\n// exports\n","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n // get current location\n var location = typeof window !== \"undefined\" && window.location;\n\n if (!location) {\n throw new Error(\"fixUrls requires window.location\");\n }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t return css;\n }\n\n var baseUrl = location.protocol + \"//\" + location.host;\n var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\( = Match on the word \"url\" with any whitespace after it and then a parens\n\t ( = Start a capturing group\n\t (?: = Start a non-capturing group\n\t [^)(] = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t (?: = Start another non-capturing groups\n\t [^)(]+ = Match anything that isn't a parentheses\n\t | = OR\n\t \\( = Match a start parentheses\n\t [^)(]* = Match anything that isn't a parentheses\n\t \\) = Match a end parentheses\n\t ) = End Group\n *\\) = Match anything and then a close parens\n ) = Close non-capturing group\n * = Match anything\n ) = Close capturing group\n\t \\) = Match a close parens\n\n\t /gi = Get all matches, not the first. Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/|\\s*$)/i.test(unquotedOrigUrl)) {\n\t\t return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n","import { hasClass } from '../utils/util'\n\nlet mobile = function () {\n let player = this\n let root = player.root\n let clk = 0; let _click_\n let clickedTime = {\n first: '',\n second: ''\n }\n\n player.onElementTouchend = function (e, element) {\n if(!this.config.closeVideoPreventDefault) {\n e.preventDefault()\n }\n if(!this.config.closeVideoStopPropagation) {\n e.stopPropagation()\n }\n let player = this\n if (hasClass(root, 'xgplayer-inactive')) {\n player.emit('focus')\n } else {\n player.emit('blur')\n }\n if (!player.config.closeVideoTouch && !player.isTouchMove) {\n function onTouch() {\n _click_ = setTimeout(function () {\n if (hasClass(player.root, 'xgplayer-nostart')) {\n return false\n } else if (!player.ended) {\n if (player.paused) {\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n } else {\n player.pause()\n }\n }\n clk = 0\n }, 200)\n }\n if (!player.config.closeVideoClick) {\n clk++\n if (_click_) {\n clearTimeout(_click_)\n }\n if (clk === 1) {\n if(player.config.enableVideoDbltouch) {\n clickedTime.first = new Date()\n } else {\n onTouch()\n }\n } else if (clk === 2) {\n if(player.config.enableVideoDbltouch) {\n clickedTime.second = new Date()\n if (Math.abs(clickedTime.first - clickedTime.second) < 400) {\n // 双击\n onTouch()\n } else {\n clickedTime.first = new Date()\n clk = 1\n }\n } else {\n clk = 0\n }\n } else {\n clk = 0\n }\n }\n }\n }\n\n function onReady (e) {\n player.video.addEventListener('touchend', function (e) {\n player.onElementTouchend(e, player.video)\n })\n player.video.addEventListener('touchstart', () => {\n player.isTouchMove = false\n })\n player.video.addEventListener('touchmove', () => {\n player.isTouchMove = true\n })\n if (player.config.autoplay) {\n player.start()\n }\n }\n player.once('ready', onReady)\n\n function onDestroy () {\n player.off('ready', onReady)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'mobile',\n method: mobile\n}","import { hasClass } from '../utils/util'\n\nlet pc = function () {\n let player = this\n if(!player.controls || !player.video) return\n let controls = player.controls; let root = player.root\n let clk = 0; let _click_\n\n player.onElementClick = function (e, element) {\n if(!this.config.closeVideoPreventDefault) {\n e.preventDefault()\n }\n if(!this.config.closeVideoStopPropagation) {\n e.stopPropagation()\n }\n let player = this\n if (!player.config.closeVideoClick) {\n clk++\n if (_click_) {\n clearTimeout(_click_)\n }\n if (clk === 1) {\n _click_ = setTimeout(function () {\n if (hasClass(player.root, 'xgplayer-nostart')) {\n return false\n } else if (!player.ended) {\n if (player.paused) {\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n } else {\n player.pause()\n }\n }\n clk = 0\n }, 200)\n } else {\n clk = 0\n }\n }\n }\n player.video.addEventListener('click', function (e) { player.onElementClick(e, player.video) }, false)\n\n player.onElementDblclick = function (e, element) {\n if(!this.config.closeVideoPreventDefault) {\n e.preventDefault()\n }\n if(!this.config.closeVideoStopPropagation) {\n e.stopPropagation()\n }\n let player = this\n if (!player.config.closeVideoDblclick) {\n let fullscreen = controls.querySelector('.xgplayer-fullscreen')\n if (fullscreen) {\n let clk\n if (document.createEvent) {\n clk = document.createEvent('Event')\n clk.initEvent('click', true, true)\n } else {\n clk = new Event('click')\n }\n fullscreen.dispatchEvent(clk)\n }\n }\n }\n player.video.addEventListener('dblclick', function (e) { player.onElementDblclick(e, player.video) }, false)\n\n function onMouseEnter () {\n clearTimeout(player.leavePlayerTimer)\n player.emit('focus', player)\n }\n root.addEventListener('mouseenter', onMouseEnter)\n\n function onMouseLeave () {\n if(!player.config.closePlayerBlur) {\n player.leavePlayerTimer = setTimeout(function () {\n player.emit('blur', player)\n }, player.config.leavePlayerTime || 0)\n }\n }\n root.addEventListener('mouseleave', onMouseLeave)\n\n function onControlMouseEnter (e) {\n if (player.userTimer) {\n clearTimeout(player.userTimer)\n }\n }\n controls.addEventListener('mouseenter', onControlMouseEnter)\n\n function onControlMouseLeave (e) {\n if(!player.config.closeControlsBlur) {\n player.emit('focus', player)\n }\n }\n controls.addEventListener('mouseleave', onControlMouseLeave)\n\n function onControlClick (e) {\n e.preventDefault()\n e.stopPropagation()\n }\n controls.addEventListener('click', onControlClick)\n\n function onReady (e) {\n if (player.config.autoplay) {\n player.start()\n }\n }\n player.once('ready', onReady)\n\n function onDestroy () {\n root.removeEventListener('mouseenter', onMouseEnter)\n root.removeEventListener('mouseleave', onMouseLeave)\n player.off('ready', onReady)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'pc',\n method: pc\n}","import { addClass, hasClass, removeClass } from '../utils/util'\n\nlet start = function () {\n let player = this\n let root = player.root\n\n function onCanPlay () {\n player.off('canplay', onCanPlay)\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n }\n\n function onStartBtnClick () {\n if (hasClass(root, 'xgplayer-nostart')) {\n removeClass(root, 'xgplayer-nostart') // for ie quick switch\n addClass(root, 'xgplayer-is-enter')\n\n if(typeof root.contains === 'function') {\n if((player.video && player.video.nodeType === 1 && !root.contains(player.video)) || (player.video && player.video.nodeType !== 1 && player.video.mediaSource === undefined)) {\n player.once('canplay', onCanPlay)\n player.start()\n } else {\n onCanPlay()\n }\n } else {\n if((player.video && player.video.nodeType === 1 && !root.querySelector(this.videoConfig.mediaType)) || (player.video && player.video.nodeType !== 1 && player.video.mediaSource === undefined)) {\n player.once('canplay', onCanPlay)\n player.start()\n } else {\n onCanPlay()\n }\n }\n } else {\n if (player.paused) {\n removeClass(root, 'xgplayer-nostart xgplayer-isloading')\n setTimeout(() => {\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n }, 10)\n }\n }\n }\n player.on('startBtnClick', onStartBtnClick)\n\n function onDestroy () {\n player.off('startBtnClick', onStartBtnClick)\n player.off('canplay', onCanPlay)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'start',\n method: start\n}","import { createDom, addClass, removeClass, isWeiXin, isUc } from '../../utils/util'\nimport StartPlayIcon from '../assets/startPlay.svg'\nimport StartPauseIcon from '../assets/startPause.svg'\nimport '../style/controls/start.scss'\n\nlet s_start = function () {\n let player = this\n let root = player.root\n let btn = createDom('xg-start', `<div class=\"xgplayer-icon-play\">${StartPlayIcon}</div>\n <div class=\"xgplayer-icon-pause\">${StartPauseIcon}</div>`, {}, 'xgplayer-start')\n function onPlayerReady(player) {\n addClass(player.root, 'xgplayer-skin-default')\n if (player.config) {\n player.config.autoplay && !isWeiXin() && !isUc() && addClass(player.root, 'xgplayer-is-enter')\n if (player.config.lang && player.config.lang === 'en') {\n addClass(player.root, 'xgplayer-lang-is-en')\n } else if (player.config.lang === 'jp') {\n addClass(player.root, 'xgplayer-lang-is-jp')\n }\n if(!player.config.enableContextmenu) {\n player.video.addEventListener('contextmenu', e => {\n e.preventDefault()\n e.stopPropagation()\n })\n }\n }\n }\n\n if(player.config && player.config.hideStartBtn) {\n addClass(root, 'xgplayer-start-hide')\n }\n\n if (player.isReady) {\n root.appendChild(btn)\n onPlayerReady(player)\n } else {\n player.once('ready', () => {\n root.appendChild(btn)\n onPlayerReady(player)\n });\n }\n\n player.once('autoplay was prevented', () => {\n removeClass(player.root, 'xgplayer-is-enter')\n addClass(player.root, 'xgplayer-nostart')\n })\n\n player.once('canplay', () => {\n removeClass(player.root, 'xgplayer-is-enter')\n })\n\n btn.onclick = e => {\n e.preventDefault()\n e.stopPropagation()\n player.userGestureTrigEvent('startBtnClick')\n }\n}\n\nexport default {\n name: 's_start',\n method: s_start\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"70\\\" height=\\\"70\\\" viewBox=\\\"0 0 70 70\\\">\\n <path transform=\\\"translate(15,15) scale(0.04,0.04)\\\" d=\\\"M576,363L810,512L576,661zM342,214L576,363L576,661L342,810z\\\"></path>\\n</svg>\\n\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"70\\\" height=\\\"70\\\" viewBox=\\\"0 0 70 70\\\">\\n <path transform=\\\"translate(15,15) scale(0.04 0.04)\\\" d=\\\"M598,214h170v596h-170v-596zM256 810v-596h170v596h-170z\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./start.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./start.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./start.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-start{border-radius:50%;display:inline-block;width:70px;height:70px;background:rgba(0,0,0,.38);overflow:hidden;text-align:center;line-height:70px;vertical-align:middle;position:absolute;left:50%;top:50%;z-index:115;margin:-35px auto auto -35px;cursor:pointer}.xgplayer-skin-default .xgplayer-start div{position:absolute}.xgplayer-skin-default .xgplayer-start div svg{fill:hsla(0,0%,100%,.7)}.xgplayer-skin-default .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default .xgplayer-start .xgplayer-icon-pause{display:none}.xgplayer-skin-default .xgplayer-start:hover{opacity:.85}.xgplayer-skin-default.xgplayer-pause.xgplayer-start-hide .xgplayer-start,.xgplayer-skin-default.xgplayer-playing .xgplayer-start,.xgplayer-skin-default.xgplayer-playing .xgplayer-start .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-start-hide .xgplayer-start{display:none}.xgplayer-skin-default.xgplayer-playing .xgplayer-start .xgplayer-icon-pause{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-start{display:inline-block}.xgplayer-skin-default.xgplayer-pause .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start,.xgplayer-skin-default.xgplayer-pause .xgplayer-start .xgplayer-icon-pause{display:none}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start .xgplayer-icon-play{display:block}.xgplayer-skin-default.xgplayer-is-replay .xgplayer-start .xgplayer-icon-pause{display:none}\", \"\"]);\n\n// exports\n","import { hasClass, addClass, removeClass, PresentationMode, checkWebkitSetPresentationMode } from '../utils/util'\n\nlet fullscreen = function () {\n let player = this\n let root = player.root\n\n function onFullscreenBtnClick () {\n if (player.config.rotateFullscreen) {\n if (hasClass(root, 'xgplayer-rotate-fullscreen')) {\n player.exitRotateFullscreen()\n } else {\n player.getRotateFullscreen()\n }\n } else {\n if (hasClass(root, 'xgplayer-is-fullscreen')) {\n player.exitFullscreen(root)\n } else {\n player.getFullscreen(root)\n }\n }\n }\n player.on('fullscreenBtnClick', onFullscreenBtnClick)\n\n function onFullscreenChange () {\n let fullscreenEl = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement\n if (fullscreenEl && fullscreenEl === root) {\n addClass(root, 'xgplayer-is-fullscreen')\n player.emit('requestFullscreen')\n } else if (hasClass(root, 'xgplayer-is-fullscreen')) {\n removeClass(root, 'xgplayer-is-fullscreen')\n player.emit('exitFullscreen')\n }\n if (player.danmu && typeof player.danmu.resize === 'function') {\n player.danmu.resize()\n }\n };\n ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'].forEach(item => {\n document.addEventListener(item, onFullscreenChange)\n })\n\n player.video.addEventListener('webkitbeginfullscreen', function () {\n addClass(root, 'xgplayer-is-fullscreen')\n player.emit('requestFullscreen')\n })\n\n player.video.addEventListener('webkitendfullscreen', function () {\n removeClass(root, 'xgplayer-is-fullscreen')\n player.emit('exitFullscreen')\n })\n\n function onWebkitpresentationmodechanged (e) {\n const mode = player.video.webkitPresentationMode\n // 非全屏模式 退出全屏\n if (mode !== PresentationMode.FULLSCREEN) {\n removeClass(root, 'xgplayer-is-fullscreen')\n player.emit('exitFullscreen')\n }\n }\n\n checkWebkitSetPresentationMode(player.video) &&\n player.video.addEventListener('webkitpresentationmodechanged', onWebkitpresentationmodechanged)\n\n function onDestroy () {\n player.off('fullscreenBtnClick', onFullscreenBtnClick);\n ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'].forEach(item => {\n document.removeEventListener(item, onFullscreenChange)\n })\n\n checkWebkitSetPresentationMode(player.video) &&\n player.video.removeEventListener('webkitpresentationmodechanged', onWebkitpresentationmodechanged)\n\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n\n player.getFullscreen = function (el) {\n let player = this\n if (el.requestFullscreen) {\n let fullscreenPromise = el.requestFullscreen()\n if (fullscreenPromise) {\n fullscreenPromise.catch(function () {\n player.emit('fullscreen error')\n })\n }\n } else if (el.mozRequestFullScreen) {\n el.mozRequestFullScreen()\n } else if (el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen(window.Element.ALLOW_KEYBOARD_INPUT)\n } else if (player.video.webkitSupportsFullscreen) {\n player.video.webkitEnterFullscreen()\n } else if (el.msRequestFullscreen) {\n el.msRequestFullscreen()\n } else {\n addClass(el, 'xgplayer-is-cssfullscreen')\n }\n }\n\n player.exitFullscreen = function (el) {\n if (document.exitFullscreen) {\n document.exitFullscreen()\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen()\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen()\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen()\n }\n removeClass(el, 'xgplayer-is-cssfullscreen')\n }\n\n player.getRotateFullscreen = function () {\n let player = this\n document.documentElement.style.width = '100%'\n document.documentElement.style.height = '100%'\n if (player.config.fluid) {\n player.root.style['padding-top'] = ''\n player.root.style['max-width'] = 'unset'\n }\n if (player.root && !hasClass(player.root, 'xgplayer-rotate-fullscreen')) {\n addClass(player.root, 'xgplayer-rotate-fullscreen')\n }\n player.emit('getRotateFullscreen')\n }\n\n player.exitRotateFullscreen = function () {\n let player = this\n document.documentElement.style.width = 'unset'\n document.documentElement.style.height = 'unset'\n if (player.config.fluid) {\n player.root.style['width'] = '100%'\n player.root.style['height'] = '0'\n player.root.style['padding-top'] = `${player.config.height * 100 / player.config.width}%`\n player.root.style['max-width'] = '100%'\n }\n if (player.root && hasClass(player.root, 'xgplayer-rotate-fullscreen')) {\n removeClass(player.root, 'xgplayer-rotate-fullscreen')\n }\n player.emit('exitRotateFullscreen')\n }\n}\n\nexport default {\n name: 'fullscreen',\n method: fullscreen\n}\n","import { hasClass } from '../utils/util'\n\nlet play = function () {\n let player = this\n\n function onPlayBtnClick () {\n if (!player.config.allowPlayAfterEnded && player.ended) {\n return\n }\n if(hasClass(player.root, 'xgplayer-nostart')) {\n player.start()\n }\n if (player.paused) {\n let playPromise = player.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.catch(err => {})\n }\n } else {\n player.pause()\n }\n }\n player.on('playBtnClick', onPlayBtnClick)\n\n function onDestroy () {\n player.off('playBtnClick', onPlayBtnClick)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'play',\n method: play\n}","import { addClass, removeClass } from '../utils/util'\n\nlet replay = function () {\n let player = this\n let root = player.root\n\n function onReplayBtnClick () {\n removeClass(root, 'xgplayer-is-replay')\n player.replay()\n }\n player.on('replayBtnClick', onReplayBtnClick)\n\n function onEnded () {\n if (!player.config.loop) {\n addClass(root, 'xgplayer-is-replay')\n }\n }\n player.on('ended', onEnded)\n\n function onDestroy () {\n player.off('replayBtnClick', onReplayBtnClick)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 'replay',\n method: replay\n}","import { createDom, createImgBtn } from '../../utils/util'\nimport PlayIcon from '../assets/play.svg'\nimport PauseIcon from '../assets/pause.svg'\nimport '../style/controls/play.scss'\n\nlet s_play = function () {\n let player = this\n let playBtn = player.config.playBtn ? player.config.playBtn : {}\n let btn\n if (playBtn.type === 'img') {\n btn = createImgBtn('play', playBtn.url.play, playBtn.width, playBtn.height)\n } else {\n btn = createDom('xg-play', `<xg-icon class=\"xgplayer-icon\">\n <div class=\"xgplayer-icon-play\">${PlayIcon}</div>\n <div class=\"xgplayer-icon-pause\">${PauseIcon}</div>\n </xg-icon>`, {}, 'xgplayer-play')\n }\n\n let tipsText = {}\n tipsText.play = player.lang.PLAY_TIPS\n tipsText.pause = player.lang.PAUSE_TIPS\n let tips = createDom('xg-tips', `<span class=\"xgplayer-tip-play\">${tipsText.play}</span>\n <span class=\"xgplayer-tip-pause\">${tipsText.pause}</span>`, {}, 'xgplayer-tips')\n btn.appendChild(tips)\n player.once('ready', () => {\n if(player.controls) {\n player.controls.appendChild(btn)\n }\n });\n\n ['click', 'touchend'].forEach(item => {\n btn.addEventListener(item, function (e) {\n e.preventDefault()\n e.stopPropagation()\n player.userGestureTrigEvent('playBtnClick')\n })\n })\n}\n\nexport default {\n name: 's_play',\n method: s_play\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\">\\n <path transform=\\\"translate(2,2) scale(0.0320625 0.0320625)\\\" d=\\\"M576,363L810,512L576,661zM342,214L576,363L576,661L342,810z\\\"></path>\\n</svg>\\n\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\">\\n <path transform=\\\"translate(2,2) scale(0.0320625 0.0320625)\\\" d=\\\"M598,214h170v596h-170v-596zM256 810v-596h170v596h-170z\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./play.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./play.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./play.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-play,.xgplayer-skin-default .xgplayer-play-img{width:40px;position:relative;-webkit-order:0;-moz-box-ordinal-group:1;order:0;display:block;cursor:pointer;margin-left:3px}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon,.xgplayer-skin-default .xgplayer-play .xgplayer-icon{margin-top:3px;width:32px}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon div,.xgplayer-skin-default .xgplayer-play .xgplayer-icon div{position:absolute}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default .xgplayer-play .xgplayer-icon .xgplayer-icon-play{display:block}.xgplayer-skin-default .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:none}.xgplayer-skin-default .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:block}.xgplayer-skin-default .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:none}.xgplayer-skin-default .xgplayer-play-img:hover,.xgplayer-skin-default .xgplayer-play:hover{opacity:.85}.xgplayer-skin-default .xgplayer-play-img:hover .xgplayer-tips,.xgplayer-skin-default .xgplayer-play:hover .xgplayer-tips{display:block}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-icon .xgplayer-icon-play{display:none}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:block}.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-icon .xgplayer-icon-play,.xgplayer-skin-default.xgplayer-playing .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default.xgplayer-playing .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-icon .xgplayer-icon-pause,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-icon .xgplayer-icon-pause{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-tips .xgplayer-tip-play,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-tips .xgplayer-tip-play{display:block}.xgplayer-skin-default.xgplayer-pause .xgplayer-play-img .xgplayer-tips .xgplayer-tip-pause,.xgplayer-skin-default.xgplayer-pause .xgplayer-play .xgplayer-tips .xgplayer-tip-pause{display:none}\", \"\"]);\n\n// exports\n","import { createDom } from '../../utils/util'\nimport '../style/controls/poster.scss'\n\nlet s_poster = function () {\n let player = this\n let root = player.root\n if (!player.config.poster) {\n return\n }\n let poster = createDom('xg-poster', '', {}, 'xgplayer-poster')\n poster.style.backgroundImage = `url(${player.config.poster})`\n root.appendChild(poster)\n}\n\nexport default {\n name: 's_poster',\n method: s_poster\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./poster.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./poster.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./poster.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-poster{display:none;position:absolute;left:0;top:0;width:100%;height:100%;z-index:100;background-size:cover;background-position:50%}.xgplayer-skin-default.xgplayer-nostart .xgplayer-poster{display:block}\", \"\"]);\n\n// exports\n","import { createDom } from '../../utils/util'\nimport '../style/controls/placeholder.scss'\n\nlet s_flex = function () {\n let player = this\n let playceholder = createDom('xg-placeholder', '', {}, 'xgplayer-placeholder')\n player.controls.appendChild(playceholder)\n}\n\nexport default {\n name: 's_flex',\n method: s_flex\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./placeholder.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./placeholder.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./placeholder.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-placeholder{-webkit-flex:1;-moz-box-flex:1;flex:1;-webkit-order:3;-moz-box-ordinal-group:4;order:3;display:block}\", \"\"]);\n\n// exports\n","import { createDom, createImgBtn } from '../../utils/util'\nimport RequestFullIcon from '../assets/requestFull.svg'\nimport ExitFullIcon from '../assets/exitFull.svg'\nimport '../style/controls/fullscreen.scss'\n\nlet s_fullscreen = function () {\n let player = this\n let fullscreenBtn = player.config.fullscreenBtn ? player.config.fullscreenBtn : {}\n let btn\n if (fullscreenBtn.type === 'img') {\n btn = createImgBtn('fullscreen', fullscreenBtn.url.request, fullscreenBtn.width, fullscreenBtn.height)\n } else {\n btn = createDom('xg-fullscreen', `<xg-icon class=\"xgplayer-icon\">\n <div class=\"xgplayer-icon-requestfull\">${RequestFullIcon}</div>\n <div class=\"xgplayer-icon-exitfull\">${ExitFullIcon}</div>\n </xg-icon>`, {}, 'xgplayer-fullscreen')\n }\n\n let tipsText = {}\n tipsText.requestfull = player.lang.FULLSCREEN_TIPS\n tipsText.exitfull = player.lang.EXITFULLSCREEN_TIPS\n let tips = createDom('xg-tips', `<span class=\"xgplayer-tip-requestfull\">${tipsText.requestfull}</span>\n <span class=\"xgplayer-tip-exitfull\">${tipsText.exitfull}</span>`, {}, 'xgplayer-tips')\n btn.appendChild(tips)\n player.once('ready', () => {\n if(player.controls) {\n player.controls.appendChild(btn)\n }\n });\n\n ['click', 'touchend'].forEach(item => {\n btn.addEventListener(item, function (e) {\n e.preventDefault()\n e.stopPropagation()\n player.userGestureTrigEvent('fullscreenBtnClick')\n })\n })\n}\n\nexport default {\n name: 's_fullscreen',\n method: s_fullscreen\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\">\\n <path transform=\\\"scale(0.0320625 0.0320625)\\\" d=\\\"M598 214h212v212h-84v-128h-128v-84zM726 726v-128h84v212h-212v-84h128zM214 426v-212h212v84h-128v128h-84zM298 598v128h128v84h-212v-212h84z\\\"></path>\\n</svg>\\n\"","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\">\\n <path transform=\\\"scale(0.0320625 0.0320625)\\\" d=\\\"M682 342h128v84h-212v-212h84v128zM598 810v-212h212v84h-128v128h-84zM342 342v-128h84v212h-212v-84h128zM214 682v-84h212v212h-84v-128h-128z\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./fullscreen.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./fullscreen.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./fullscreen.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-fullscreen,.xgplayer-skin-default .xgplayer-fullscreen-img{position:relative;-webkit-order:13;-moz-box-ordinal-group:14;order:13;display:block;cursor:pointer;margin-left:5px;margin-right:3px}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon{margin-top:3px}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon div,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon div{position:absolute}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull{display:block}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull{display:none}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips{position:absolute;right:0;left:auto}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull{display:block}.xgplayer-skin-default .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull{display:none}.xgplayer-skin-default .xgplayer-fullscreen-img:hover,.xgplayer-skin-default .xgplayer-fullscreen:hover{opacity:.85}.xgplayer-skin-default .xgplayer-fullscreen-img:hover .xgplayer-tips,.xgplayer-skin-default .xgplayer-fullscreen:hover .xgplayer-tips{display:block}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-requestfull{display:none}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-icon .xgplayer-icon-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-icon .xgplayer-icon-exitfull{display:block}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-requestfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-requestfull{display:none}.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-is-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen-img .xgplayer-tips .xgplayer-tip-exitfull,.xgplayer-skin-default.xgplayer-rotate-fullscreen .xgplayer-fullscreen .xgplayer-tips .xgplayer-tip-exitfull{display:block}\", \"\"]);\n\n// exports\n","import { createDom } from '../../utils/util'\nimport Loading from '../assets/loading.svg'\nimport '../style/controls/loading.scss'\n\nlet s_loading = function () {\n let player = this\n let root = player.root\n let container = createDom('xg-loading', `${Loading}`, {}, 'xgplayer-loading')\n player.once('ready', () => {\n root.appendChild(container)\n })\n}\n\nexport default {\n name: 's_loading',\n method: s_loading\n}","export default \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"100\\\" height=\\\"100\\\" viewbox=\\\"0 0 100 100\\\">\\n <path d=\\\"M100,50A50,50,0,1,1,50,0\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./loading.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./loading.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./loading.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-loading{display:none;width:100px;height:100px;overflow:hidden;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);position:absolute;left:50%;top:50%;margin:-50px auto auto -50px}.xgplayer-skin-default .xgplayer-loading svg{border-radius:50%;-webkit-transform-origin:center;-ms-transform-origin:center;transform-origin:center;-webkit-animation:loadingRotate 1s linear infinite;animation:loadingRotate 1s linear infinite}.xgplayer-skin-default .xgplayer-loading svg path{stroke:#ddd;stroke-dasharray:236;-webkit-animation:loadingDashOffset 2s linear infinite;animation:loadingDashOffset 2s linear infinite;animation-direction:alternate-reverse;fill:none;stroke-width:12px}.xgplayer-skin-default.xgplayer-nostart .xgplayer-loading{display:none}.xgplayer-skin-default.xgplayer-pause .xgplayer-loading{display:none!important}.xgplayer-skin-default.xgplayer-isloading .xgplayer-loading{display:block}\", \"\"]);\n\n// exports\n","import { createDom, addClass, removeClass, hasClass, toggleClass, typeOf, event, format, findDom } from '../../utils/util'\r\nimport sniffer from '../../utils/sniffer'\r\nimport '../style/controls/progress.scss'\r\n\r\nconst isRotateFullscreen = (player) => {\r\n return hasClass(player.root, 'xgplayer-rotate-fullscreen')\r\n}\r\n\r\nlet s_progress = function () {\r\n let player = this\r\n let container = createDom('xg-progress', `<xg-outer class=\"xgplayer-progress-outer\">\r\n <xg-cache class=\"xgplayer-progress-cache\"></xg-cache>\r\n <xg-played class=\"xgplayer-progress-played\">\r\n <xg-progress-btn class=\"xgplayer-progress-btn\"></xg-progress-btn>\r\n <xg-point class=\"xgplayer-progress-point xgplayer-tips\"></xg-point>\r\n <xg-thumbnail class=\"xgplayer-progress-thumbnail xgplayer-tips\"></xg-thumbnail>\r\n </xg-played>\r\n </xg-outer>`, {tabindex: 1}, 'xgplayer-progress')\r\n let containerWidth\r\n player.controls.appendChild(container)\r\n let progress = container.querySelector('.xgplayer-progress-played')\r\n let outer = container.querySelector('.xgplayer-progress-outer')\r\n let cache = container.querySelector('.xgplayer-progress-cache')\r\n let point = container.querySelector('.xgplayer-progress-point')\r\n let thumbnail = container.querySelector('.xgplayer-progress-thumbnail')\r\n player.dotArr = {}\r\n function dotEvent (dotItem, text) {\r\n dotItem.addEventListener('mouseenter', function (e) {\r\n if (text) {\r\n addClass(dotItem, 'xgplayer-progress-dot-show')\r\n addClass(container, 'xgplayer-progress-dot-active')\r\n }\r\n })\r\n dotItem.addEventListener('mouseleave', function (e) {\r\n if (text) {\r\n removeClass(dotItem, 'xgplayer-progress-dot-show')\r\n removeClass(container, 'xgplayer-progress-dot-active')\r\n }\r\n })\r\n dotItem.addEventListener('touchend', function (e) {\r\n // e.preventDefault()\r\n e.stopPropagation()\r\n if (text) {\r\n if (!hasClass(dotItem, 'xgplayer-progress-dot-show')) {\r\n Object.keys(player.dotArr).forEach(function (key) {\r\n if (player.dotArr[key]) {\r\n removeClass(player.dotArr[key], 'xgplayer-progress-dot-show')\r\n }\r\n })\r\n }\r\n toggleClass(dotItem, 'xgplayer-progress-dot-show')\r\n toggleClass(container, 'xgplayer-progress-dot-active')\r\n }\r\n })\r\n }\r\n function onCanplay () {\r\n if (player.config.progressDot && typeOf(player.config.progressDot) === 'Array') {\r\n player.config.progressDot.forEach(item => {\r\n if (item.time >= 0 && item.time <= player.duration) {\r\n let dot = createDom('xg-progress-dot', item.text ? `<span class=\"xgplayer-progress-tip\">${item.text}</span>` : '', {}, 'xgplayer-progress-dot')\r\n dot.style.left = (item.time / player.duration) * 100 + '%'\r\n if (item.duration >= 0) {\r\n dot.style.width = (Math.min(item.duration, player.duration - item.time) / player.duration) * 100 + '%'\r\n }\r\n if(item.style) {\r\n for(let k in item.style) {\r\n dot.style[k] = item.style[k]\r\n }\r\n }\r\n outer.appendChild(dot)\r\n player.dotArr[item.time] = dot\r\n dotEvent(dot, item.text)\r\n }\r\n })\r\n }\r\n }\r\n player.once('canplay', onCanplay)\r\n player.addProgressDot = function (time, text, duration, style) {\r\n if (player.dotArr[time]) {\r\n return\r\n }\r\n if (time >= 0 && time <= player.duration) {\r\n let dot = createDom('xg-progress-dot', text ? `<span class=\"xgplayer-progress-tip\">${text}</span>` : '', {}, 'xgplayer-progress-dot')\r\n dot.style.left = (time / player.duration) * 100 + '%'\r\n if (duration >= 0) {\r\n dot.style.width = (Math.min(duration, player.duration - time) / player.duration) * 100 + '%'\r\n }\r\n if(style) {\r\n for(let k in style) {\r\n dot.style[k] = style[k]\r\n }\r\n }\r\n outer.appendChild(dot)\r\n player.dotArr[time] = dot\r\n dotEvent(dot, text)\r\n }\r\n }\r\n player.removeProgressDot = function (time) {\r\n if (time >= 0 && time <= player.duration && player.dotArr[time]) {\r\n let dot = player.dotArr[time]\r\n dot.parentNode.removeChild(dot)\r\n dot = null\r\n player.dotArr[time] = null\r\n }\r\n }\r\n player.removeAllProgressDot = function () {\r\n Object.keys(player.dotArr).forEach(function (key) {\r\n if (player.dotArr[key]) {\r\n let dot = player.dotArr[key]\r\n dot.parentNode.removeChild(dot)\r\n dot = null\r\n player.dotArr[key] = null\r\n }\r\n })\r\n }\r\n let tnailPicNum = 0\r\n let tnailWidth = 0\r\n let tnailHeight = 0\r\n let tnailCol = 0\r\n let tnailRow = 0\r\n let interval = 0\r\n let tnailUrls = []\r\n let coverPreviewContainer, coverPreviewPoint, coverPreviewOuter\r\n let onLoadedmetadata = function() {\r\n if (player.config.thumbnail) {\r\n if(player.config.thumbnail.isShowCoverPreview && !coverPreviewContainer) {\r\n progress.removeChild(thumbnail)\r\n coverPreviewContainer = createDom('xg-coverpreview', `<xg-outer class=\"xgplayer-coverpreview-outer\">\r\n <xg-thumbnail class=\"xgplayer-coverpreview-thumbnail\"></xg-thumbnail>\r\n <xg-point class=\"xgplayer-coverpreview-point\"></xg-point>\r\n </xg-outer>`, {tabindex: 1}, 'xgplayer-coverpreview')\r\n coverPreviewOuter = coverPreviewContainer.querySelector('.xgplayer-coverpreview-outer')\r\n coverPreviewPoint = coverPreviewContainer.querySelector('.xgplayer-coverpreview-point')\r\n thumbnail = coverPreviewContainer.querySelector('.xgplayer-coverpreview-thumbnail')\r\n player.root.appendChild(coverPreviewContainer)\r\n }\r\n tnailPicNum = player.config.thumbnail.pic_num\r\n tnailWidth = player.config.thumbnail.width\r\n tnailHeight = player.config.thumbnail.height\r\n tnailCol = player.config.thumbnail.col\r\n tnailRow = player.config.thumbnail.row\r\n tnailUrls = player.config.thumbnail.urls\r\n thumbnail.style.width = `${tnailWidth}px`\r\n thumbnail.style.height = `${tnailHeight}px`\r\n };\r\n };\r\n player.on('loadedmetadata', onLoadedmetadata);\r\n\r\n if (typeof player.config.disableSwipeHandler === 'function' && typeof player.config.enableSwipeHandler === 'function') {\r\n player.root.addEventListener('touchmove', e => {\r\n e.preventDefault();\r\n // e.stopPropagation();\r\n if (!player.disableSwipe) {\r\n player.disableSwipe = true\r\n player.config.disableSwipeHandler.call(player);\r\n }\r\n });\r\n player.root.addEventListener('touchstart', e => {\r\n // e.preventDefault();\r\n player.disableSwipe = true\r\n player.config.disableSwipeHandler.call(player);\r\n });\r\n player.root.addEventListener('touchend', e => {\r\n // e.preventDefault();\r\n player.disableSwipe = false\r\n player.config.enableSwipeHandler.call(player);\r\n });\r\n };\r\n let events = ['touchstart', 'mousedown'];\r\n if (sniffer.device === 'mobile') {\r\n // 解决在移动端触发多次seeking问题\r\n events.pop()\r\n }\r\n events.forEach(item => {\r\n container.addEventListener(item, function (e) {\r\n if (player.config.disableProgress) return;\r\n // e.preventDefault()\r\n e.stopPropagation()\r\n event(e)\r\n if (e._target === point || (!player.config.allowSeekAfterEnded && player.ended)) {\r\n return true\r\n }\r\n\r\n container.focus()\r\n let {left} = progress.getBoundingClientRect()\r\n\r\n const isRotate = isRotateFullscreen(player)\r\n if (isRotate) {\r\n left = progress.getBoundingClientRect().top\r\n containerWidth = container.getBoundingClientRect().height\r\n } else {\r\n containerWidth = container.getBoundingClientRect().width\r\n left = progress.getBoundingClientRect().left\r\n }\r\n\r\n let move = function (e) {\r\n // e.preventDefault()\r\n e.stopPropagation()\r\n event(e)\r\n player.isProgressMoving = true\r\n let w = (isRotate ? e.clientY : e.clientX) - left\r\n if (w > containerWidth) {\r\n w = containerWidth\r\n }\r\n let now = w / containerWidth * player.duration\r\n if(now < 0) now = 0\r\n if(player.config.allowSeekPlayed && (Number(now).toFixed(1) > player.maxPlayedTime)) {}\r\n else {\r\n progress.style.width = `${w * 100 / containerWidth}%`\r\n\r\n if (player.videoConfig.mediaType === 'video' && !player.dash && !player.config.closeMoveSeek) {\r\n console.log('trigger touchmove')\r\n player.currentTime = Number(now).toFixed(1)\r\n } else {\r\n let time = findDom(player.controls, '.xgplayer-time')\r\n if (time) {\r\n time.innerHTML = `<span class=\"xgplayer-time-current\">${format(now || 0)}</span><span>${format(player.duration)}</span>`\r\n }\r\n }\r\n }\r\n\r\n if(player.config.thumbnail && player.config.thumbnail.isShowCoverPreview) {\r\n coverPreviewPoint.innerHTML = `<span>${format(now)}</span> / ${format(player.duration || 0)}`\r\n\r\n interval = player.duration / tnailPicNum\r\n let index = Math.floor(now / interval)\r\n thumbnail.style.backgroundImage = `url(${tnailUrls[Math.ceil((index + 1) / (tnailCol * tnailRow)) - 1]})`\r\n let indexInPage = index + 1 - (tnailCol * tnailRow) * (Math.ceil((index + 1) / (tnailCol * tnailRow)) - 1)\r\n let tnaiRowIndex = Math.ceil(indexInPage / tnailRow) - 1\r\n let tnaiColIndex = indexInPage - tnaiRowIndex * tnailRow - 1\r\n thumbnail.style['background-position'] = `-${tnaiColIndex * tnailWidth}px -${tnaiRowIndex * tnailHeight}px`\r\n coverPreviewContainer.style.display = 'block'\r\n }\r\n \r\n player.emit('focus')\r\n }\r\n let up = function (e) {\r\n console.log('up event', e)\r\n // e.preventDefault()\r\n e.stopPropagation()\r\n event(e)\r\n window.removeEventListener('mousemove', move)\r\n window.removeEventListener('touchmove', move, { passive: false })\r\n window.removeEventListener('mouseup', up)\r\n window.removeEventListener('touchend', up)\r\n if(sniffer.browser.indexOf('ie') < 0) {\r\n container.blur()\r\n }\r\n if (!player.isProgressMoving || (player.videoConfig && player.videoConfig.mediaType === 'audio') || player.dash || player.config.closeMoveSeek) {\r\n let w = (isRotate ? e.clientY : e.clientX) - left\r\n if (w > containerWidth) {\r\n w = containerWidth\r\n }\r\n let now = w / containerWidth * player.duration\r\n if(now < 0) now = 0\r\n if(player.config.allowSeekPlayed && (Number(now).toFixed(1) > player.maxPlayedTime)) {}\r\n else {\r\n progress.style.width = `${w * 100 / containerWidth}%`\r\n console.warn('trigger touchup')\r\n player.currentTime = Number(now).toFixed(1)\r\n }\r\n }\r\n if(player.config.thumbnail && player.config.thumbnail.isShowCoverPreview) {\r\n coverPreviewContainer.style.display = 'none'\r\n }\r\n player.emit('focus')\r\n player.isProgressMoving = false\r\n }\r\n // if (item === 'touchstart') {\r\n window.addEventListener('touchmove', move, { passive: false })\r\n window.addEventListener('touchend', up)\r\n // } else {\r\n window.addEventListener('mousemove', move)\r\n // console.warn('add envent mouseup')\r\n window.addEventListener('mouseup', up)\r\n // }\r\n return true\r\n })\r\n })\r\n\r\n container.addEventListener('mouseenter', function (e) {\r\n if (!player.config.allowSeekAfterEnded && player.ended) {\r\n return true\r\n }\r\n const isRotate = isRotateFullscreen(player)\r\n let containerLeft = isRotate ? container.getBoundingClientRect().top : container.getBoundingClientRect().left\r\n let containerWidth = isRotate ? container.getBoundingClientRect().height : container.getBoundingClientRect().width\r\n\r\n let compute = function (e) {\r\n let now = ((isRotate ? e.clientY : e.clientX) - containerLeft) / containerWidth * player.duration\r\n now = now < 0 ? 0 : now\r\n point.textContent = format(now)\r\n let pointWidth = point.getBoundingClientRect().width\r\n if (player.config.thumbnail && !player.config.thumbnail.isShowCoverPreview) {\r\n interval = player.duration / tnailPicNum\r\n let index = Math.floor(now / interval)\r\n thumbnail.style.backgroundImage = `url(${tnailUrls[Math.ceil((index + 1) / (tnailCol * tnailRow)) - 1]})`\r\n let indexInPage = index + 1 - (tnailCol * tnailRow) * (Math.ceil((index + 1) / (tnailCol * tnailRow)) - 1)\r\n let tnaiRowIndex = Math.ceil(indexInPage / tnailRow) - 1\r\n let tnaiColIndex = indexInPage - tnaiRowIndex * tnailRow - 1\r\n thumbnail.style['background-position'] = `-${tnaiColIndex * tnailWidth}px -${tnaiRowIndex * tnailHeight}px`\r\n let left = (isRotate ? e.clientY : e.clientX) - containerLeft - tnailWidth / 2\r\n left = left > 0 ? left : 0\r\n left = left < containerWidth - tnailWidth ? left : containerWidth - tnailWidth\r\n thumbnail.style.left = `${left}px`\r\n thumbnail.style.top = `${-10 - tnailHeight}px`\r\n thumbnail.style.display = 'block'\r\n point.style.left = `${left + tnailWidth / 2 - pointWidth / 2}px`\r\n } else {\r\n let left = e.clientX - containerLeft - pointWidth / 2\r\n left = left > 0 ? left : 0\r\n left = left > containerWidth - pointWidth ? containerWidth - pointWidth : left\r\n point.style.left = `${left}px`\r\n }\r\n if (hasClass(container, 'xgplayer-progress-dot-active')) {\r\n point.style.display = 'none'\r\n } else {\r\n point.style.display = 'block'\r\n }\r\n }\r\n let move = function (e) {\r\n compute(e)\r\n }\r\n let leave = function (e) {\r\n container.removeEventListener('mousemove', move, false)\r\n container.removeEventListener('mouseleave', leave, false)\r\n compute(e)\r\n point.style.display = 'none'\r\n if (player.config.thumbnail && !player.config.thumbnail.isShowCoverPreview) {\r\n thumbnail.style.display = 'none'\r\n }\r\n }\r\n container.addEventListener('mousemove', move, false)\r\n container.addEventListener('mouseleave', leave, false)\r\n compute(e)\r\n }, false)\r\n\r\n // let lastBtnLeft = false\r\n let onTimeupdate = function () {\r\n if(player.maxPlayedTime === undefined) player.maxPlayedTime = 0\r\n if(player.maxPlayedTime < player.currentTime) player.maxPlayedTime = player.currentTime\r\n if (!containerWidth && container) {\r\n containerWidth = container.getBoundingClientRect().width\r\n }\r\n if (!player.isProgressMoving && !player.isSeeking && !player.seeking) {\r\n const precent = player.currentTime / player.duration\r\n const prevPrecent = Number(progress.style.width.replace('%', '') || '0') / Number(container.style.width || '100');\r\n if (Math.abs(precent - prevPrecent) <= 1) {\r\n progress.style.width = `${player.currentTime * 100 / player.duration}%`\r\n }\r\n }\r\n }\r\n player.on('timeupdate', onTimeupdate)\r\n\r\n let onCurrentTimeChange = function (time) {\r\n progress.style.width = `${time * 100 / player.duration}%`\r\n }\r\n player.on('currentTimeChange', onCurrentTimeChange)\r\n\r\n let onSrcChange = function () {\r\n progress.style.width = '0%'\r\n }\r\n player.on('srcChange', onSrcChange)\r\n\r\n let onCacheUpdate = function () {\r\n let buffered = player.buffered\r\n if (buffered && buffered.length > 0) {\r\n let end = buffered.end(buffered.length - 1)\r\n for (let i = 0, len = buffered.length; i < len; i++) {\r\n if (player.currentTime >= buffered.start(i) && player.currentTime <= buffered.end(i)) {\r\n end = buffered.end(i)\r\n for (let j = i + 1; j < buffered.length; j++) {\r\n if (buffered.start(j) - buffered.end(j - 1) >= 2) {\r\n end = buffered.end(j - 1)\r\n break\r\n }\r\n }\r\n break\r\n }\r\n }\r\n cache.style.width = `${end / player.duration * 100}%`\r\n }\r\n }\r\n const cacheUpdateEvents = ['bufferedChange', 'cacheupdate', 'ended', 'timeupdate']\r\n cacheUpdateEvents.forEach(item => {\r\n player.on(item, onCacheUpdate)\r\n })\r\n\r\n function destroyFunc () {\r\n player.removeAllProgressDot()\r\n player.off('canplay', onCanplay)\r\n player.off('timeupdate', onTimeupdate)\r\n player.off('currentTimeChange', onCurrentTimeChange)\r\n player.off('srcChange', onSrcChange)\r\n player.off('loadedmetadata', onLoadedmetadata);\r\n cacheUpdateEvents.forEach(item => {\r\n player.off(item, onCacheUpdate)\r\n })\r\n player.off('destroy', destroyFunc)\r\n }\r\n player.once('destroy', destroyFunc)\r\n}\r\n\r\nexport default {\r\n name: 's_progress',\r\n method: s_progress\r\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./progress.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./progress.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./progress.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-progress{display:block;position:absolute;height:20px;line-height:20px;left:12px;right:12px;outline:none;top:-15px;z-index:35}.xgplayer-skin-default .xgplayer-progress-outer{background:hsla(0,0%,100%,.3);display:block;height:3px;line-height:3px;margin-top:8.5px;width:100%;position:relative;cursor:pointer}.xgplayer-skin-default .xgplayer-progress-cache,.xgplayer-skin-default .xgplayer-progress-played{display:block;height:100%;line-height:1;position:absolute;left:0;top:0}.xgplayer-skin-default .xgplayer-progress-cache{width:0;background:hsla(0,0%,100%,.5)}.xgplayer-skin-default .xgplayer-progress-played{display:block;width:0;background-image:linear-gradient(-90deg,#fa1f41,#e31106);border-radius:0 1.5px 1.5px 0}.xgplayer-skin-default .xgplayer-progress-btn{display:none;position:absolute;left:0;top:-5px;width:13px;height:13px;border-radius:30px;background:#fff;box-shadow:0 0 2px 0 rgba(0,0,0,.26);left:100%;-webkit-transform:translate(-50%);-ms-transform:translate(-50%);transform:translate(-50%);z-index:36}.xgplayer-skin-default .xgplayer-progress-point{position:absolute}.xgplayer-skin-default .xgplayer-progress-point.xgplayer-tips{margin-left:0;top:-25px;display:none;z-index:100}.xgplayer-skin-default .xgplayer-progress-dot{display:inline-block;position:absolute;height:3px;width:5px;top:0;background:#fff;border-radius:6px;z-index:16}.xgplayer-skin-default .xgplayer-progress-dot .xgplayer-progress-tip{position:absolute;bottom:200%;right:50%;-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);height:auto;line-height:30px;width:auto;background:rgba(0,0,0,.3);border-radius:6px;border:1px solid rgba(0,0,0,.8);cursor:default;white-space:nowrap;display:none}.xgplayer-skin-default .xgplayer-progress-dot-show .xgplayer-progress-tip{display:block}.xgplayer-skin-default .xgplayer-progress-thumbnail{position:absolute;-moz-box-sizing:border-box;box-sizing:border-box}.xgplayer-skin-default .xgplayer-progress-thumbnail.xgplayer-tips{margin-left:0;display:none;z-index:99}.xgplayer-skin-default .xgplayer-coverpreview{position:absolute;width:100%;height:100%;top:0;left:0;display:none}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer{position:absolute;display:block;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-thumbnail{display:block}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-point{display:block;text-align:center;font-family:PingFangSC-Regular;font-size:11px;color:#ccc;padding:2px 4px}.xgplayer-skin-default .xgplayer-coverpreview .xgplayer-coverpreview-outer .xgplayer-coverpreview-point span{color:#fff}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-outer,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-outer{height:6px;margin-top:7px}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-dot,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-dot{height:6px}.xgplayer-skin-default .xgplayer-progress:focus .xgplayer-progress-btn,.xgplayer-skin-default .xgplayer-progress:hover .xgplayer-progress-btn{display:block;top:-3px}.xgplayer-skin-default.xgplayer-definition-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-playbackrate-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-texttrack-active .xgplayer-progress,.xgplayer-skin-default.xgplayer-volume-active .xgplayer-progress{z-index:15}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress-btn{display:block!important}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:focus .xgplayer-progress-outer,.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:hover .xgplayer-progress-outer{height:3px!important;margin-top:8.5px!important}.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:focus .xgplayer-progress-btn,.xgplayer-skin-default.xgplayer-mobile .xgplayer-progress:hover .xgplayer-progress-btn{display:block!important;top:-5px!important}\", \"\"]);\n\n// exports\n","import { createDom, format } from '../../utils/util'\nimport '../style/controls/time.scss'\n\nlet s_time = function () {\n let player = this\n let container = createDom('xg-time', `<span class=\"xgplayer-time-current\">${player.currentTime || format(0)}</span>\n <span>${player.duration || format(0)}</span>`, {}, 'xgplayer-time')\n player.once('ready', () => {\n if(player.controls) {\n player.controls.appendChild(container)\n }\n })\n let onTimeChange = function () {\n // let liveText = player.lang.LIVE\n // if(player.duration === Infinity) {\n // addClass(player.root, 'xgplayer-is-live')\n // if(!findDom(player.root, '.xgplayer-live')) {\n // const live = createDom('xg-live', liveText, {}, 'xgplayer-live')\n // player.controls.appendChild(live)\n // }\n // }\n if (player.videoConfig.mediaType !== 'audio' || !player.isProgressMoving || !player.dash) {\n container.innerHTML = `<span class=\"xgplayer-time-current\">${format(player.currentTime || 0)}</span>` + `<span>${format(player.duration)}</span>`\n }\n }\n player.on('durationchange', onTimeChange)\n player.on('timeupdate', onTimeChange)\n\n function onDestroy () {\n player.off('durationchange', onTimeChange)\n player.off('timeupdate', onTimeChange)\n player.off('destroy', onDestroy)\n }\n player.once('destroy', onDestroy)\n}\n\nexport default {\n name: 's_time',\n method: s_time\n}","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./time.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./time.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./time.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-time{-webkit-order:2;-moz-box-ordinal-group:3;order:2;font-family:ArialMT;font-size:13px;color:#fff;line-height:40px;height:40px;text-align:center;display:inline-block;margin:auto 8px}.xgplayer-skin-default .xgplayer-time span{color:hsla(0,0%,100%,.5)}.xgplayer-skin-default .xgplayer-time .xgplayer-time-current{color:#fff}.xgplayer-skin-default .xgplayer-time .xgplayer-time-current:after{content:\\\"/\\\";display:inline-block;padding:0 3px}\", \"\"]);\n\n// exports\n","import { createDom } from '../../utils/util'\nimport ReplayIcon from '../assets/replay.svg'\nimport '../style/controls/replay.scss'\n\nlet s_replay = function () {\n let player = this\n let root = player.root\n\n let replayText = player.lang.REPLAY\n let btn = createDom('xg-replay', `${ReplayIcon}\n <xg-replay-txt class=\"xgplayer-replay-txt\">${replayText}</xg-replay-txt>\n `, {}, 'xgplayer-replay')\n player.once('ready', () => {\n root.appendChild(btn)\n })\n\n function onEnded () {\n let path = btn.querySelector('path')\n if(path) {\n let transform = window.getComputedStyle(path).getPropertyValue('transform')\n if(typeof transform === 'string' && transform.indexOf('none') > -1) {\n return\n } else {\n path.setAttribute('transform', transform)\n }\n }\n }\n player.on('ended', onEnded)\n\n function onBtnClick (e) {\n e.preventDefault()\n e.stopPropagation()\n }\n btn.addEventListener('click', onBtnClick)\n\n let svg = btn.querySelector('svg');\n\n ['click', 'touchend'].forEach(item => {\n svg.addEventListener(item, function (e) {\n e.preventDefault()\n e.stopPropagation()\n player.userGestureTrigEvent('replayBtnClick')\n })\n })\n\n function destroyFunc () {\n player.off('ended', onEnded)\n player.off('destroy', destroyFunc)\n }\n player.once('destroy', destroyFunc)\n}\n\nexport default {\n name: 's_replay',\n method: s_replay\n}","export default \"<svg class=\\\"xgplayer-replay-svg\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"78\\\" height=\\\"78\\\" viewbox=\\\"0 0 78 78\\\">\\n <path d=\\\"M8.22708362,13.8757234 L11.2677371,12.6472196 C11.7798067,12.4403301 12.3626381,12.6877273 12.5695276,13.1997969 L12.9441342,14.1269807 C13.1510237,14.6390502 12.9036264,15.2218816 12.3915569,15.4287712 L6.8284538,17.6764107 L5.90126995,18.0510173 C5.38920044,18.2579068 4.80636901,18.0105096 4.5994795,17.49844 L1.97723335,11.0081531 C1.77034384,10.4960836 2.0177411,9.91325213 2.52981061,9.70636262 L3.45699446,9.33175602 C3.96906396,9.12486652 4.5518954,9.37226378 4.75878491,9.88433329 L5.67885163,12.1615783 C7.99551726,6.6766934 13.3983951,3 19.5,3 C27.7842712,3 34.5,9.71572875 34.5,18 C34.5,26.2842712 27.7842712,33 19.5,33 C15.4573596,33 11.6658607,31.3912946 8.87004692,28.5831991 C8.28554571,27.9961303 8.28762719,27.0463851 8.87469603,26.4618839 C9.46176488,25.8773827 10.4115101,25.8794641 10.9960113,26.466533 C13.2344327,28.7147875 16.263503,30 19.5,30 C26.127417,30 31.5,24.627417 31.5,18 C31.5,11.372583 26.127417,6 19.5,6 C14.4183772,6 9.94214483,9.18783811 8.22708362,13.8757234 Z\\\"></path>\\n</svg>\\n\"","\nvar content = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./replay.scss\");\n\nif(typeof content === 'string') content = [[module.id, content, '']];\n\nvar transform;\nvar insertInto;\n\n\n\nvar options = {\"hmr\":true}\n\noptions.transform = transform\noptions.insertInto = undefined;\n\nvar update = require(\"!../../../../node_modules/style-loader/lib/addStyles.js\")(content, options);\n\nif(content.locals) module.exports = content.locals;\n\nif(module.hot) {\n\tmodule.hot.accept(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./replay.scss\", function() {\n\t\tvar newContent = require(\"!!../../../../../../node_modules/css-loader/index.js??ref--5-1!../../../../../../node_modules/postcss-loader/lib/index.js!../../../../../../node_modules/sass-loader/dist/cjs.js??ref--5-3!./replay.scss\");\n\n\t\tif(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n\n\t\tvar locals = (function(a, b) {\n\t\t\tvar key, idx = 0;\n\n\t\t\tfor(key in a) {\n\t\t\t\tif(!b || a[key] !== b[key]) return false;\n\t\t\t\tidx++;\n\t\t\t}\n\n\t\t\tfor(key in b) idx--;\n\n\t\t\treturn idx === 0;\n\t\t}(content.locals, newContent.locals));\n\n\t\tif(!locals) throw new Error('Aborting CSS HMR due to changed css-modules locals.');\n\n\t\tupdate(newContent);\n\t});\n\n\tmodule.hot.dispose(function() { update(); });\n}","exports = module.exports = require(\"../../../../../../node_modules/css-loader/lib/css-base.js\")(false);\n// imports\n\n\n// module\nexports.push([module.id, \".xgplayer-skin-default .xgplayer-replay{position:absolute;left:0;top:0;width:100%;height:100%;z-index:105;display:none;-webkit-justify-content:center;-moz-box-pack:center;justify-content:center;-webkit-align-items:center;-moz-box-align:center;align-items:center;background:rgba(0,0,0,.54);-webkit-flex-direction:column;-moz-box-orient:vertical;-moz-box-direction:normal;flex-direction:column}.xgplayer-skin-default .xgplayer-replay svg{background:rgba(0,0,0,.58);border-radius:100%;cursor:pointer}.xgplayer-skin-default .xgplayer-replay svg path{-webkit-transform:translate(20px,21px);-ms-transform:translate(20px,21px);transform:translate(20px,21px);fill:#ddd}.xgplayer-skin-default .xgplayer-replay svg:hover{background:rgba(0,0,0,.38)}.xgplayer-skin-default .xgplayer-replay svg:hover path{fill:#fff}.xgplayer-skin-default .xgplayer-replay .xgplayer-replay-txt{display:inline-block;font-family:PingFangSC-Regular;font-size:14px;color:#fff;line-height:34px}.xgplayer-skin-default.xgplayer.xgplayer-ended .xgplayer-controls{display:none}.xgplayer-skin-default.xgplayer.xgplayer-ended .xgplayer-replay{display:-webkit-flex;display:-moz-box;display:flex}\", \"\"]);\n\n// exports\n","import Player from './player'\n\nimport Flex from './skin/controls/flex'\nimport Fullscreen from './controls/fullscreen'\nimport S_fullscreen from './skin/controls/fullscreen'\nimport S_loading from './skin/controls/loading'\nimport Mobile from './controls/mobile'\nimport Pc from './controls/pc'\nimport Play from './controls/play'\nimport S_play from './skin/controls/play'\nimport S_progress from './skin/controls/progress'\nimport S_poster from './skin/controls/poster'\nimport S_time from './skin/controls/time'\nimport Start from './controls/start'\nimport S_start from './skin/controls/start'\nimport Replay from './controls/replay'\nimport S_replay from './skin/controls/replay'\n// import Volume from './controls/volume'\n// import S_volume from './skin/controls/volume'\n\nlet controlLst = [\n Flex,\n Fullscreen,\n S_fullscreen,\n S_loading,\n Mobile,\n Pc,\n Play,\n S_play,\n S_progress,\n S_poster,\n S_time,\n Start,\n S_start,\n Replay,\n S_replay\n]\ncontrolLst.forEach(function(control) {\n Player.install(control.name, control.method)\n})\n\nexport default Player\n"],"sourceRoot":""}
|