xgplayer 2.31.4 → 2.32.0
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/README.md +1 -1
- package/bin/xgplayer.js +0 -0
- package/browser/controls/danmu.js +1 -1
- package/browser/controls/definition.js +1 -1
- package/browser/controls/errorRetry.js +1 -1
- package/browser/controls/memoryPlay.js +1 -1
- package/browser/controls/miniplayer.js +4 -4
- package/browser/controls/nativeTextTrack.js +1 -1
- package/browser/controls/pip.js +1 -1
- package/browser/controls/progress.js +1 -1
- package/browser/core_player.js +1 -1
- package/browser/core_player.js.map +1 -1
- package/browser/index.js +5 -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 +1 -1
- package/dist/controls/definition.js +1 -1
- package/dist/controls/errorRetry.js +1 -1
- package/dist/controls/memoryPlay.js +1 -1
- package/dist/controls/miniplayer.js +4 -4
- package/dist/controls/nativeTextTrack.js +1 -1
- package/dist/controls/pip.js +1 -1
- package/dist/controls/progress.js +1 -1
- package/dist/core_player.js +12 -7
- package/dist/core_player.js.map +1 -1
- package/dist/index.js +583 -524
- package/dist/index.js.map +1 -1
- package/dist/simple_player.js +27 -11
- package/dist/simple_player.js.map +1 -1
- package/es/controls/danmu.js +1 -1
- package/es/controls/definition.js +1 -1
- package/es/controls/errorRetry.js +1 -1
- package/es/controls/memoryPlay.js +1 -1
- package/es/controls/miniplayer.js +4 -4
- package/es/controls/nativeTextTrack.js +1 -1
- package/es/controls/pip.js +1 -1
- package/es/controls/progress.js +1 -1
- package/es/core_player.js +1 -1
- package/es/core_player.js.map +1 -1
- package/es/index.js +7 -7
- 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 +2 -2
- package/src/controls/memoryPlay.js +4 -1
- package/src/controls/pip.js +3 -1
- package/src/player.js +6 -6
- package/src/proxy.js +3 -0
- package/src/skin/controls/definition.js +1 -0
- package/src/skin/controls/memoryPlay.js +1 -1
- package/src/skin/controls/playNext.js +1 -1
- package/src/skin/controls/progress.js +17 -6
- package/version.json +1 -1
- package/browser/controls.js.map +0 -1
- package/browser/player.js.map +0 -1
- package/dist/controls.js.map +0 -1
- package/dist/player.js.map +0 -1
package/browser/player.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://Player/webpack/bootstrap","webpack://Player/./src/player.js","webpack://Player/./node_modules/css-loader/lib/css-base.js","webpack://Player/./node_modules/style-loader/lib/addStyles.js","webpack://Player/./node_modules/es5-ext/object/is-value.js","webpack://Player/./src/utils/util.js","webpack://Player/./node_modules/type/value/is.js","webpack://Player/./src/utils/intervalTimer.js","webpack://Player/./src/utils/xgplayerTimeRange.js","webpack://Player/./src/error.js","webpack://Player/./src/utils/sniffer.js","webpack://Player/./src/style/index.scss?6a19","webpack://Player/./src/proxy.js","webpack://Player/./node_modules/event-emitter/index.js","webpack://Player/./node_modules/d/index.js","webpack://Player/./node_modules/type/plain-function/is.js","webpack://Player/./node_modules/type/function/is.js","webpack://Player/./node_modules/type/prototype/is.js","webpack://Player/./node_modules/type/object/is.js","webpack://Player/./node_modules/es5-ext/object/assign/index.js","webpack://Player/./node_modules/es5-ext/object/assign/is-implemented.js","webpack://Player/./node_modules/es5-ext/object/assign/shim.js","webpack://Player/./node_modules/es5-ext/object/keys/index.js","webpack://Player/./node_modules/es5-ext/object/keys/is-implemented.js","webpack://Player/./node_modules/es5-ext/object/keys/shim.js","webpack://Player/./node_modules/es5-ext/function/noop.js","webpack://Player/./node_modules/es5-ext/object/valid-value.js","webpack://Player/./node_modules/es5-ext/object/normalize-options.js","webpack://Player/./node_modules/es5-ext/string/#/contains/index.js","webpack://Player/./node_modules/es5-ext/string/#/contains/is-implemented.js","webpack://Player/./node_modules/es5-ext/string/#/contains/shim.js","webpack://Player/./node_modules/es5-ext/object/valid-callable.js","webpack://Player/./src/utils/database.js","webpack://Player/./node_modules/draggabilly/draggabilly.js","webpack://Player/./node_modules/get-size/get-size.js","webpack://Player/./node_modules/unidragger/unidragger.js","webpack://Player/./node_modules/unipointer/unipointer.js","webpack://Player/./node_modules/ev-emitter/ev-emitter.js","webpack://Player/./src/style/index.scss","webpack://Player/./node_modules/style-loader/lib/urls.js","webpack://Player/./src/playerEvents.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","getDefault","getModuleExports","object","property","prototype","hasOwnProperty","p","s","Player","options","self","config","util","deepCopy","width","height","ignores","whitelist","lang","document","documentElement","getAttribute","navigator","language","toLocaleLowerCase","inactive","volume","controls","controlsList","version","userTimer","waitTimer","database","Database","history","isProgressMoving","root","findDom","id","createDom","unselectable","onselectstart","el","nodeType","emit","Errors","vid","line","handle","msg","addClass","sniffer","device","appendChild","fluid","style","video","execBeforePluginsCall","forEach","item","controlStyle","typeOf","window","fetch","method","headers","Accept","then","res","ok","json","obj","prop","pluginsCall","catch","err","console","log","controlPlugins","controlsRun","ev","evName","keys","evFunc","on","charAt","toUpperCase","slice","player","mousemoveFunc","closeFocusVideoFocus","focus","addEventListener","playFunc","closePlayVideoFocus","once","setTimeout","videoInit","hasClass","start","removeEventListener","Proxy","isSupportMP4","url","this","canPlayFunc","playPromise","play","undefined","removeClass","e","setMediaSrc","indexOf","src","length","type","autoplay","load","querySelector","insertBefore","firstChild","beforeStartRun","time","ended","replay","currentTime","reloadFunc","k","isDelDom","clearInterval","bulletResizeTimer","_interval","destroyFunc","removeAttribute","innerHTML","className","off","danmu","destroy","clearTimeout","sliderTimer","paused","pause","_replay","Function","plugins","descriptor","some","ro","getBoundingClientRect","Top","top","Left","left","dragLay","dragHandle","tabindex","Draggabilly","right","bottom","preventDefault","stopPropagation","exitPIP","isLoading","isSeeking","checkBuffer","_handleResumeFromWating","clearWaitTimer","_hasStart","onWaiting","PLAYER_EVENTS","PLAYER_WAITING","PLAYER_RESUME","buffered","len","end","controlLst","context","control","IntervalTimer","XgplayerTimeRange","useSourceMap","list","toString","map","content","cssWithMappingToString","cssMapping","btoa","sourceMapping","toComment","sourceMap","unescape","encodeURIComponent","JSON","stringify","sourceURLs","sources","source","sourceRoot","concat","join","mediaQuery","alreadyImportedModules","push","stylesInDom","isOldIE","fn","memo","apply","arguments","memoize","all","atob","getElement","target","styleTarget","HTMLIFrameElement","contentDocument","head","singleton","singletonCounter","stylesInsertedAtTop","fixUrls","addStylesToDom","styles","domStyle","refs","j","parts","addStyle","listToStyles","newStyles","base","part","css","media","insertStyleElement","insertInto","Error","lastStyleElementInsertedAtTop","insertAt","nextSibling","before","removeStyleElement","parentNode","removeChild","idx","splice","createStyleElement","createElement","attrs","addAttrs","setAttribute","styleIndex","update","remove","transform","result","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","createLinkElement","link","rel","updateLink","autoFixUrls","convertToAbsoluteUrls","blob","oldSrc","href","applyToTag","styleSheet","cssText","createTextNode","updateStyle","newObj","DEBUG","newList","mayRemove","replaceText","textStore","index","replacement","filter","Boolean","cssNode","childNodes","_undefined","require","val","tpl","cname","dom","classList","Array","match","RegExp","replace","split","add","reg","sel","startsWith","getElementById","str","pad","charstr","String","maxlen","Math","ceil","chars","substring","isNaN","hour","padStart","floor","minute","second","touch","touches","changedTouches","clientX","clientY","offsetX","pageX","offsetLeft","offsetY","pageY","offsetTop","_target","srcElement","dst","Node","currentStyle","getComputedStyle","backgroundImage","a","back","tagName","attributes","node","eventName","intervalFunc","frequency","setInterval","imgUrl","w","h","unit","btn","every","parseFloat","trim","backgroundSize","margin","hex","alpha","rgb","sixHex","test","kw","eval","ua","userAgent","toLowerCase","browser","exec","appVersion","isChrome","isTrident","isSupport","mime","canPlayType","webkitDecodedFrameCount","webkitDroppedFrameCount","frameRateInterval","currentFrameRate","currentDecodedFrameCount","frameRateTimer","clear","repeat","currentDroppedFrameCount","event","offEvent","onDestroy","offInDestroy","_fn","data","vbuffered","maxHoleDuration","sort","b","diff","buffered_2","buf2end","buf2len","timeID","func","ms","bufferedList","ErrorTypes","network","code","remark","mse","parse","format","decoder","runtime","timeout","other","duration","networkState","readyState","currentSrc","errd","playerVersion","errorType","ex","domain","os","isPc","ie","firfox","chrome","opera","safari","isWindowsPhone","isSymbian","isAndroid","isFireFox","isTablet","isPhone","locals","_seekingTimer","videoConfig","playsinline","airplay","mediaType","loop","crossorigin","textTrackDom","textTrack","isArray","track","label","default","kind","srclang","textTrackStyle","styleStr","wrap","sheet","insertRule","addRule","XgVideoProxy","constructor","autoplayMuted","muted","lastBuffer","evItem","hasStart","inWaitingStart","Date","getTime","_onError","curBuffer","error","message","errorCode","range","bool","isTrue","getBuffered2","crossOrigin","isFinite","defaultMuted","min","status","en","cn","playbackRate","rate","played","preload","seekable","seeking","location","vol","callable","defineProperties","configurable","writable","listener","__ee__","__eeOnceListener__","listeners","candidate","args","methods","descriptors","isValue","isPlainFunction","assign","normalizeOpts","contains","dscr","desc","gs","set","isFunction","classRe","functionToString","isPrototype","isObject","possibleTypes","foo","bar","trzy","max","dest","TypeError","process","opts1","searchString","INDEXDB","mydb","db","ojstore","keypath","indexedDB","webkitindexedDB","IDBKeyRange","webkitIDBKeyRange","myDB","callback","request","open","onerror","onsuccess","onupgradeneeded","transaction","objectStoreNames","createObjectStore","keyPath","deleteDatabase","close","storename","store","objectStore","put","delete","factory","define","getSize","Unidragger","extend","jQuery","element","$element","defaults","option","_create","proto","opts","positionValues","relative","absolute","fixed","applyGrid","grid","position","_getPosition","startPoint","x","y","dragPoint","startPosition","onPointerMove","onPointerUp","enable","setHandles","handles","querySelectorAll","bindHandles","dispatchEvent","emitArgs","emitEvent","dispatchJQueryEvent","jquery","$event","Event","trigger","_getPositionCoord","_addTransformPosition","styleSide","measure","parseInt","parentSize","matrixValues","xIndex","translateX","translateY","onPointerDown","pointer","pointerDown","okayPointerDown","isEnabled","pointerDownPointer","pointerDownBlur","_bindPostStartEvents","_pointerReset","dragStart","measureContainment","setLeftTop","animate","elemSize","containerSize","elemRect","borderSizeX","container","getContainer","containerRect","borderLeftWidth","borderRightWidth","borderSizeY","borderTopWidth","borderBottomWidth","relativeStartPosition","containSize","containment","HTMLElement","moveVector","dragMove","gridX","gridY","dragX","dragY","containDrag","axis","drag","dragEnd","_this","isDragging","positionDrag","requestAnimationFrame","animateFrame","staticClick","setPosition","disable","unbindHandles","removeData","_init","noop","bridget","getStyleSize","num","isValid","logError","measurements","measurementsLength","getZeroSize","size","innerWidth","innerHeight","outerWidth","outerHeight","measurement","getStyle","elem","isSetup","isBoxSizeOuter","setup","div","padding","borderStyle","borderWidth","boxSizing","body","round","display","offsetWidth","offsetHeight","isBorderBox","paddingWidth","paddingLeft","paddingRight","paddingHeight","paddingTop","paddingBottom","marginWidth","marginLeft","marginRight","marginHeight","marginTop","marginBottom","borderHeight","isBorderBoxSizeOuter","styleWidth","styleHeight","Unipointer","_bindHandles","isAdd","bindMethod","touchAction","_touchActionValue","_bindStartEvent","PointerEvent","cursorNodes","TEXTAREA","INPUT","SELECT","OPTION","clickTypes","radio","checkbox","button","submit","image","file","isCursorNode","nodeName","isClickType","isOkay","focused","activeElement","blur","pointerMove","_dragPointerMove","_dragMove","hasDragStarted","_dragStart","abs","pointerUp","_dragPointerUp","_dragEnd","_staticClick","isPreventingClicks","onclick","isIgnoringMouseUp","getPointerPoint","EvEmitter","bindStartEvent","unbindStartEvent","startEvent","handleEvent","getTouch","identifier","pointerIdentifier","onmousedown","_pointerDown","ontouchstart","onpointerdown","isPointerDown","pointerId","postStartEvents","mousedown","touchstart","pointerdown","events","_boundPointerEvents","_unbindPostStartEvents","onmousemove","_pointerMove","onpointermove","ontouchmove","onmouseup","_pointerUp","onpointerup","ontouchend","_pointerDone","pointerDone","onpointercancel","_pointerCancel","ontouchcancel","pointerCancel","_events","onceEvents","_onceEvents","onceListeners","isOnce","allOff","baseUrl","protocol","host","currentDir","pathname","fullMatch","origUrl","unquotedOrigUrl","$1","newUrl"],"mappings":"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","file":"player.js","sourcesContent":[" \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 = 115);\n","import Proxy from './proxy'\nimport util from './utils/util'\nimport Database from './utils/database'\nimport sniffer from './utils/sniffer'\nimport XgplayerTimeRange from './utils/xgplayerTimeRange'\nimport IntervalTimer from './utils/intervalTimer'\nimport Errors from './error'\nimport Draggabilly from 'draggabilly'\nimport './style/index.scss'\nimport {\n version\n} from '../package.json'\nimport {PLAYER_EVENTS} from './playerEvents'\nclass Player extends Proxy {\n static isSupportMP4 () {\n return util.isSupportMP4()\n }\n constructor (options) {\n super(options)\n this.config = util.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.database = new Database()\n this.history = []\n this.isProgressMoving = false\n this.root = util.findDom(document, `#${this.config.id}`)\n this.controls = util.createDom('xg-controls', '', {\n unselectable: 'on',\n onselectstart: 'return false'\n }, 'xgplayer-controls')\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('use', this.config.vid, {\n line: 32,\n handle: 'Constructor',\n msg: 'container id can\\'t be empty'\n }))\n return false\n }\n }\n // this.rootBackup = util.copyDom(this.root)\n util.addClass(this.root, `xgplayer xgplayer-${sniffer.device} xgplayer-nostart ${this.config.controls ? '' : '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 if (sniffer.device === 'pc' || options.width || options.height) {\n this.root.style.width = `${this.config.width}px`\n this.root.style.height = `${this.config.height}px`\n }\n }\n if (this.config.execBeforePluginsCall) {\n this.config.execBeforePluginsCall.forEach(item => {\n item.call(this, this)\n })\n }\n if (this.config.controlStyle && util.typeOf(this.config.controlStyle) === 'String') {\n let self = this\n window.fetch && window.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 util.on(this, evName, evFunc, 'destroy')\n }\n });\n ['focus', 'blur'].forEach(item => {\n util.on(this, item, this['on' + item.charAt(0).toUpperCase() + item.slice(1)], 'destroy')\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 util.once(player, 'play', this.playFunc)\n\n setTimeout(() => {\n this.emit('ready')\n }, 0)\n if (this.config.videoInit) {\n if (util.hasClass(this.root, 'xgplayer-nostart')) {\n this.start()\n }\n }\n\n util.once(player, 'destroy', () => {\n player.root.removeEventListener('mousemove', player.mousemoveFunc)\n })\n }\n\n start (url = this.config.url) {\n let root = this.root\n let player = this\n if (!url) {\n this.emit('urlNull')\n }\n this.canPlayFunc = () => {\n let playPromise = player.video.play()\n if (playPromise !== undefined && playPromise) {\n playPromise.then(function () {\n util.removeClass(player.root, 'xgplayer-nostart')\n player.emit('autoplay started')\n }).catch(function (e) {\n if (e.name === 'NotAllowedError') {\n player.emit('autoplay was prevented')\n Player.util.addClass(player.root, 'xgplayer-is-autoplay')\n } \n })\n }\n }\n const setMediaSrc = url => {\n if (util.typeOf(url) !== 'Array') {\n if (util.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 if(url && url.length > 0) {\n url.forEach(item => {\n this.video.appendChild(util.createDom('source', '', {\n src: `${item.src}`,\n type: `${item.type || ''}`\n }))\n })\n }\n if (this.config.autoplay) {\n util.on(this, 'canplay', this.canPlayFunc)\n }\n this.video.load()\n if(!root.querySelector('video') && this.video && this.video.nodeType === 1) {\n root.insertBefore(this.video, root.firstChild)\n }\n setTimeout(() => {\n this.emit('complete')\n }, 1)\n }\n if(typeof player.config.beforeStartRun === 'function') {\n player.config.beforeStartRun().then(() => {\n setMediaSrc(url)\n })\n } else {\n setMediaSrc(url)\n }\n }\n\n seek (time) {\n if(this.ended && typeof this.replay === 'function') {\n this.replay(time)\n } else {\n this.currentTime = time\n }\n }\n\n reload () {\n this.video.load()\n this.reloadFunc = () => {\n this.play().catch(err => {})\n }\n util.once(this, 'loadeddata', this.reloadFunc)\n }\n\n destroy (isDelDom = true) {\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.danmu) {\n this.danmu.destroy()\n }\n clearTimeout(this.userTimer)\n clearTimeout(this.waitTimer)\n clearTimeout(this.sliderTimer)\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 this.root.className = ''\n }\n for (let k in this) {\n // if (k !== 'config') {\n delete this[k]\n // }\n }\n this.off('pause', destroyFunc)\n this.emit('destroyEnd')\n }\n\n if (!this.paused) {\n this.pause()\n this.once('pause', destroyFunc)\n } else {\n destroyFunc.call(this)\n }\n super.destroy()\n }\n\n replay (currentTime = 0) {\n let self = this\n let _replay = this._replay\n // ie9 bugfix\n util.removeClass(this.root, 'xgplayer-ended')\n if (_replay && _replay instanceof Function) {\n _replay(currentTime)\n } else {\n this.currentTime = currentTime\n this.play().catch(err => {})\n }\n }\n\n pluginsCall () {\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 (!ignores.some(item => name === item)) {\n if (['pc', 'tablet', 'mobile'].some(type => type === name)) {\n if (name === sniffer.device) {\n setTimeout(() => {\n descriptor.call(self, self)\n }, 0)\n }\n } else {\n descriptor.call(this, this)\n }\n }\n })\n }\n }\n\n getPIP (width = 320, height = 180) {\n let ro = this.root.getBoundingClientRect()\n let Top = ro.top\n let Left = ro.left\n let dragLay = util.createDom('xg-pip-lay', '<div></div>', {}, 'xgplayer-pip-lay')\n this.root.appendChild(dragLay)\n let dragHandle = util.createDom('xg-pip-drag', '<div class=\"drag-handle\"><span>点击按住可拖动视频</span></div>', {tabindex: 9}, 'xgplayer-pip-drag')\n this.root.appendChild(dragHandle)\n let draggie = new Draggabilly('.xgplayer', {\n handle: '.drag-handle'\n })\n util.addClass(this.root, 'xgplayer-pip-active')\n\n this.root.style.width = `${width}px`\n this.root.style.height = `${height}px`\n\n this.root.style.right = 0\n this.root.style.bottom = '200px'\n this.root.style.top = ''\n this.root.style.left = ''\n if (this.config.fluid) {\n this.root.style['padding-top'] = ''\n }\n let player = this;\n ['click', 'touchstart'].forEach(item => {\n dragLay.addEventListener(item, function (e) {\n e.preventDefault()\n e.stopPropagation()\n player.exitPIP()\n player.root.style.top = `${Top}px`\n player.root.style.left = `${Left}px`\n })\n })\n }\n\n exitPIP () {\n util.removeClass(this.root, 'xgplayer-pip-active')\n this.root.style.right = ''\n this.root.style.bottom = ''\n this.root.style.top = ''\n this.root.style.left = ''\n\n if (this.config.fluid) {\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 } else {\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 }\n\n clearWaitTimer () {\n if (!this.waitTimer) {\n return\n }\n window.clearTimeout(this.waitTimer)\n this.waitTimer = null\n }\n\n onFocus () {\n let player = this\n if(util.hasClass(this.root, 'xgplayer-inactive')) {\n player.emit('controlShow')\n }\n util.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.paused && !this.ended) {\n if(!util.hasClass(this.root, 'xgplayer-inactive')) {\n this.emit('controlHide')\n }\n util.addClass(this.root, 'xgplayer-inactive')\n }\n }\n\n onPlay () {\n util.addClass(this.root, 'xgplayer-playing')\n util.removeClass(this.root, 'xgplayer-pause')\n }\n\n onPause () {\n util.addClass(this.root, 'xgplayer-pause')\n if (this.userTimer) {\n clearTimeout(this.userTimer)\n }\n this.emit('focus')\n }\n\n onEnded () {\n util.addClass(this.root, 'xgplayer-ended')\n util.removeClass(this.root, 'xgplayer-playing')\n util.removeClass(this.root, 'xgplayer-isloading')\n }\n\n onTimeupdate () {\n // loading状态下必须有足够的播放buffer才清楚loading\n if (this.isLoading || (this.waitTimer && !this.isSeeking)) {\n if (this.checkBuffer()) {\n this._handleResumeFromWating();\n this.clearWaitTimer()\n util.removeClass(this.root, 'xgplayer-isloading')\n this.isLoading = false\n }\n }\n // 在没有开始播放且当前是暂停状态 不去除xgplayer-nostart, 兼容safari下无法自动播放但是设置了currentTime的情况\n if (!this._hasStart && this.paused) {\n util.removeClass(this.root, 'xgplayer-is-enter xgplayer-start-appear')\n } else {\n util.removeClass(this.root, 'xgplayer-is-enter xgplayer-nostart xgplayer-start-appear')\n }\n }\n\n onSeeking () {\n this.isSeeking = true\n this.onWaiting()\n }\n\n onSeeked () {\n this._handleResumeFromWating()\n this.isSeeking = false\n this.isLoading = false\n // for ie,playing trigger before waiting\n if (this.waitTimer) {\n this.clearWaitTimer()\n }\n util.removeClass(this.root, 'xgplayer-isloading')\n }\n\n onWaiting () {\n // 未开始播放且暂停状态不显示loading\n if (!this._hasStart && this.paused) {\n return\n }\n let self = this\n if (self.waitTimer) {\n this.clearWaitTimer()\n this.isLoading = false\n }\n self.waitTimer = setTimeout(function () {\n util.addClass(self.root, 'xgplayer-isloading')\n self.emit(PLAYER_EVENTS.PLAYER_WAITING)\n self.isLoading = true\n self.clearWaitTimer()\n }, 800)\n }\n\n _handleResumeFromWating(){\n if(this.isLoading){\n this.emit(PLAYER_EVENTS.PLAYER_RESUME)\n }\n }\n\n onPlaying () {\n this._handleResumeFromWating()\n this.isSeeking = false\n this.isLoading = false\n if (this.waitTimer) {\n this.clearWaitTimer()\n }\n util.removeClass(this.root, 'xgplayer-isloading xgplayer-pause xgplayer-ended xgplayer-is-error xgplayer-replay')\n util.addClass(this.root, 'xgplayer-playing')\n }\n\n /**\n * 检查当前缓存是否足够播放currenTime\n */\n checkBuffer () {\n const buffered = this.video.buffered\n const currentTime = this.currentTime\n const len = buffered.length\n for (let i = 0; i < len; i++) {\n if (buffered.start(i) <= currentTime && buffered.end(i) > currentTime) {\n return true\n }\n }\n return false\n }\n\n static install (name, descriptor) {\n if (!Player.plugins) {\n Player.plugins = {}\n }\n Player.plugins[name] = descriptor\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.IntervalTimer = IntervalTimer\nPlayer.sniffer = sniffer\nPlayer.Errors = Errors\nPlayer.PLAYER_EVENTS = PLAYER_EVENTS\nPlayer.XgplayerTimeRange = XgplayerTimeRange\nexport default Player\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 IntervalTimer from './intervalTimer'\nimport XgplayerTimeRange from './xgplayerTimeRange'\n\nlet util = {}\n\nutil.createDom = function (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\nutil.hasClass = function (el, className) {\n if (!el) return null\n if (el.classList) {\n return Array.prototype.some.call(el.classList, item => item === className)\n } else {\n return !!el.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n }\n}\n\nutil.addClass = function (el, className) {\n if (!el) return null\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 (!util.hasClass(el, className)) {\n el.className += ' ' + className\n }\n}\n\nutil.removeClass = function (el, className) {\n if (!el) return null\n if (el.classList) {\n className.split(/\\s+/g).forEach(item => {\n el.classList.remove(item)\n })\n } else if (util.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\nutil.toggleClass = function (el, className) {\n if (!el) return null\n className.split(/\\s+/g).forEach(item => {\n if (util.hasClass(el, item)) {\n util.removeClass(el, item)\n } else {\n util.addClass(el, item)\n }\n })\n}\n\nutil.findDom = function (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.startsWith('#')) {\n dom = el.getElementById(sel.slice(1))\n }\n }\n return dom\n}\n\nutil.padStart = function (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\nutil.format = function (time) {\n if (window.isNaN(time)) {\n return ''\n }\n let hour = util.padStart(Math.floor(time / 3600), 2, 0)\n let minute = util.padStart(Math.floor((time - hour * 3600) / 60), 2, 0)\n let second = util.padStart(Math.floor((time - hour * 3600 - minute * 60)), 2, 0)\n return (hour === '00' ? [minute, second] : [hour, minute, second]).join(':')\n}\n\nutil.event = function (e) {\n if (e.touches) {\n 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\nutil.typeOf = function (obj) {\n return Object.prototype.toString.call(obj).match(/([^\\s.*]+)(?=]$)/g)[0]\n}\n\nutil.deepCopy = function (dst, src) {\n if (util.typeOf(src) === 'Object' && util.typeOf(dst) === 'Object') {\n Object.keys(src).forEach(key => {\n if (util.typeOf(src[key]) === 'Object' && !(src[key] instanceof Node)) {\n if (!dst[key]) {\n dst[key] = src[key]\n } else {\n util.deepCopy(dst[key], src[key])\n }\n } else if (util.typeOf(src[key]) === 'Array') {\n dst[key] = util.typeOf(dst[key]) === 'Array' ? dst[key].concat(src[key]) : src[key]\n } else {\n dst[key] = src[key]\n }\n })\n return dst\n }\n}\nutil.getBgImage = function (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\nutil.copyDom = function (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\nutil.setInterval = function (context, eventName, intervalFunc, frequency) {\n if (!context._interval[eventName]) {\n context._interval[eventName] = setInterval(intervalFunc.bind(context), frequency)\n }\n}\n\nutil.clearInterval = function (context, eventName) {\n clearInterval(context._interval[eventName])\n context._interval[eventName] = null\n}\n\nutil.createImgBtn = function (name, imgUrl, width, height) {\n let btn = util.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 = parseFloat(width.slice(0, width.indexOf(item)).trim())\n h = parseFloat(height.slice(0, height.indexOf(item)).trim())\n unit = item\n return false\n } else {\n return true\n }\n })\n btn.style.width = `${w}${unit}`\n btn.style.height = `${h}${unit}`\n btn.style.backgroundSize = `${w}${unit} ${h}${unit}`\n if (name === 'start') {\n btn.style.margin = `-${h / 2}${unit} auto auto -${w / 2}${unit}`\n } else {\n btn.style.margin = 'auto 5px auto 5px'\n }\n }\n return btn\n}\n\nutil.Hex2RGBA = function (hex, alpha) {\n let rgb = [] // 定义rgb数组\n if (/^\\#[0-9A-F]{3}$/i.test(hex)) {\n let sixHex = '#'\n hex.replace(/[0-9A-F]/ig, function (kw) {\n sixHex += kw + kw\n })\n hex = sixHex\n }\n if (/^#[0-9A-F]{6}$/i.test(hex)) {\n hex.replace(/[0-9A-F]{2}/ig, function (kw) {\n rgb.push(eval('0x' + kw))\n })\n return `rgba(${rgb.join(',')}, ${alpha})`\n } else {\n return 'rgba(255, 255, 255, 0.1)'\n }\n}\n\nutil.isSupportMP4 = function () {\n const RegExp = [{\n key: 'Trident',\n reg: /(rv:)([\\d.]+)/\n },\n {\n key: 'Trident',\n reg: /(msie)\\s*([\\d.]+)/\n }, {\n key: 'Chrome',\n reg: /(chrome)\\/([\\d.]+)/\n }]\n const ua = navigator.userAgent.toLowerCase()\n let match = null\n const browser = {}\n for (const key in RegExp) {\n match = RegExp[key].reg.exec(ua)\n if (match) {\n const name = RegExp[key].key\n browser[`is${name}`] = name\n browser.name = name\n browser.appVersion = match.length > 2 ? match[2] : ''\n break\n }\n }\n\n if (!(browser.isChrome && (browser.appVersion === '77.0.3835.0' || browser.appVersion === '76.0.3790.0')) && !browser.isTrident) {\n return true\n }\n const H264_MIMETYPES = [\n 'avc1.42E01E, mp4a.40.2',\n 'avc1.58A01E, mp4a.40.2',\n 'avc1.4D401E, mp4a.40.2',\n 'avc1.64001E, mp4a.40.2',\n 'avc1.42E01E',\n 'mp4v.20.8',\n 'mp4v.20.240',\n 'avc1.42E01E, mp4a.40.2',\n 'avc1.58A01E, mp4a.40.2',\n 'avc1.4D401E, mp4a.40.2',\n 'avc1.64001E, mp4a.40.2',\n 'mp4v.20.8, mp4a.40.2',\n 'mp4v.20.240, mp4a.40.2'\n ]\n let a = document.createElement('video')\n let result = {\n isSupport: false,\n mime: ''\n }\n if (typeof a.canPlayType === 'function') {\n H264_MIMETYPES.map(key => {\n if (a.canPlayType(`video/mp4; codecs=\"${key}\"`) === 'probably') {\n result.isSupport = true\n result.mime += `||${key}`\n }\n })\n return result.isSupport\n }\n a = null\n return result.isSupport\n}\n\nutil.calcFrameRate = function (player) {\n if (!player || !player.video || player.video.webkitDecodedFrameCount === undefined || player.video.webkitDroppedFrameCount === undefined) return false\n\n let frameRateInterval = player.config.frameRateInterval || 1000\n\n player.currentFrameRate = 0\n player.currentDecodedFrameCount = 0\n\n if (player.frameRateTimer) {\n player.frameRateTimer.clear()\n player.frameRateTimer = null\n }\n\n player.frameRateTimer = new IntervalTimer()\n player.frameRateTimer.repeat(() => {\n player.currentFrameRate = (player.video.webkitDecodedFrameCount - player.currentDecodedFrameCount) / frameRateInterval * 1000\n player.currentDecodedFrameCount = player.video.webkitDecodedFrameCount\n player.currentDroppedFrameCount = player.video.webkitDroppedFrameCount\n }, frameRateInterval)\n\n function destroyFunc () {\n if (player.frameRateTimer) {\n player.frameRateTimer.clear()\n player.frameRateTimer = null\n }\n player.off('destroy', destroyFunc)\n }\n player.once('destroy', destroyFunc)\n\n return true\n}\n\nutil.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\nutil.on = (object, event, fn, offEvent) => {\n if (offEvent) {\n object.on(event, fn)\n util.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\nutil.once = (object, event, fn, offEvent) => {\n if (offEvent) {\n object.once(event, fn)\n util.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\nutil.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), 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 default util\n","\"use strict\";\n\n// ES3 safe\nvar _undefined = void 0;\n\nmodule.exports = function (value) { return value !== _undefined && value !== null; };\n","// 替代setInterval\nclass IntervalTimer {\n constructor () {\n this.timeID = null\n this.func = null\n }\n\n repeat (func, ms) {\n if (this.func === null) {\n this.func = func\n }\n\n if (this.func !== func) {\n return\n }\n\n this.timeID = setTimeout(() => {\n func()\n this.repeat(func, ms)\n }, ms)\n }\n\n clear () {\n clearTimeout(this.timeID)\n }\n}\n\nexport default IntervalTimer\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}","import {version} from '../package.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 static get ErrorTypes() {\n return ErrorTypes\n }\n constructor (type, currentTime, duration, networkState, readyState, src, currentSrc,\n ended, errd = {line: '', handle: '', msg: '', version: ''}) {\n let r = {}\n if (arguments.length >= 3 && arguments.length < 5) {\n r.playerVersion = version // 播放器版本\n r.errorType = arguments[0]\n r.code = arguments[1]\n r.errd = arguments[2] || {}// 错误详情\n r.ex = (r.errd || {}).msg // 补充信息\n r.domain = document.domain // domain\n } else {\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.code = r.errd.code\n }\n \n return r\n }\n}\n\nexport default Errors","let sniffer = {\n get device () {\n let r = sniffer.os\n return r.isPc ? 'pc' : 'mobile'\n // return r.isPc ? 'pc' : r.isTablet ? 'tablet' : 'mobile'\n },\n get browser () {\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 get os () {\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","\nvar content = require(\"!!../../node_modules/css-loader/index.js??ref--5-1!../../node_modules/postcss-loader/lib/index.js!../../node_modules/sass-loader/lib/loader.js!./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/lib/loader.js!./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/lib/loader.js!./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}","import EventEmitter from 'event-emitter'\nimport util from './utils/util'\nimport Errors from './error'\nconst ua = navigator.userAgent\nconst IS_SAFARI = ua.indexOf('Safari') > -1 && ua.indexOf('mac') > -1\n// import allOff from 'event-emitter/all-off'\nclass Proxy {\n constructor (options) {\n this._hasStart = false\n this._seekingTimer = null\n this.videoConfig = {\n controls: false,\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'],\n 'x5-video-player-fullscreen': options['x5-video-player-fullscreen'],\n 'x5-video-orientation': options['x5-video-orientation'],\n airplay: options['airplay'],\n 'webkit-airplay': options['airplay'],\n tabindex: 2,\n mediaType: options.mediaType || 'video'\n }\n if (options.loop) {\n this.videoConfig.loop = 'loop'\n }\n if (options.crossorigin) {\n this.videoConfig.crossorigin = 'anonymous'\n }\n let textTrackDom = ''\n if (options.textTrack && Array.isArray(options.textTrack)) {\n options.textTrack.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 : util.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 = util.createDom(this.videoConfig.mediaType, textTrackDom, this.videoConfig, '')\n }\n if (options.autoplay) {\n // this.video.autoplay = true\n if (options.autoplayMuted) {\n this.video.muted = true\n }\n }\n this.ev = ['play', 'playing', 'pause', 'ended', 'error', 'seeking', 'seeked',\n 'timeupdate', 'waiting', 'canplay', 'canplaythrough', 'durationchange', 'volumechange', 'loadeddata', 'loadedmetadata', '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 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], function () {\n // fix when video destroy called and video reload\n if (!self.src) {\n return\n }\n if (name === 'play') {\n self.hasStart = true\n } else if (name === 'waiting') {\n self.inWaitingStart = new Date().getTime()\n } else if (name === 'playing') {\n if (self.inWaitingStart) {\n self.inWaitingStart = undefined\n }\n }\n if (name === 'error') {\n self._onError()\n } else {\n self.emit(name, self)\n }\n\n if (self.hasOwnProperty('_interval')) {\n if (['ended', 'error', 'timeupdate'].indexOf(name) < 0) {\n clearInterval(self._interval['bufferedChange'])\n util.setInterval(self, 'bufferedChange', function () {\n let curBuffer = []\n for (let i = 0, len = self.video.buffered.length; i < len; i++) {\n curBuffer.push([self.video.buffered.start(i), self.video.buffered.end(i)])\n }\n if (curBuffer.toString() !== lastBuffer) {\n lastBuffer = curBuffer.toString()\n self.emit('bufferedChange', curBuffer)\n }\n }, 200)\n } else {\n if (name !== 'timeupdate') {\n util.clearInterval(self, 'bufferedChange')\n }\n }\n }\n }, false)\n })\n }\n\n _onError () {\n const self = this\n if (self.video.error) {\n if (self.video.error.message && self.video.error.message.indexOf('Empty src attribute') > -1) {\n return\n }\n self.emit('error', new Errors('other', self.currentTime, self.duration, self.networkState, self.readyState, self.currentSrc, self.src,\n self.ended, {\n line: 41,\n msg: self.error,\n handle: 'Constructor',\n code: self.errorCode\n }))\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 // allOff(this)\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 () {\n this.video.canPlayType()\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 set autoplay (isTrue) {\n if (!this.video) return\n this.video.autoplay = isTrue\n }\n get autoplay () {\n if (!this.video) return null\n return this.video.autoplay\n }\n get buffered () {\n if (!this.video) return null\n return this.video.buffered\n }\n get buffered2 () {\n return util.getBuffered2(this.video.buffered)\n }\n get crossOrigin () {\n if (!this.video) return null\n return this.video.crossOrigin\n }\n set crossOrigin (isTrue) {\n if (!this.video) return\n this.video.crossOrigin = isTrue\n }\n get currentSrc () {\n if (!this.video) return null\n return this.video.currentSrc\n }\n set currentSrc (src) {\n if (!this.video) return\n this.video.currentSrc = src\n }\n get currentTime () {\n if (!this.video) return null\n return this.video.currentTime\n }\n set currentTime (time) {\n if (typeof isFinite === 'function' && !isFinite(time)) return\n if (this.video) {\n this.video.currentTime = time\n this.emit('currentTimeChange')\n }\n }\n get defaultMuted () {\n if (!this.video) return null\n return this.video.defaultMuted\n }\n set defaultMuted (isTrue) {\n if (!this.video) return\n this.video.defaultMuted = isTrue\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) return null\n return this.video.ended\n }\n get error () {\n if (!this.video) return null\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 errorCode () {\n if (!this.video) return null\n let err = this.video.error || {}\n return err.code\n }\n get loop () {\n if (!this.video) return null\n return this.video.loop\n }\n set loop (isTrue) {\n if (!this.video) return\n this.video.loop = isTrue\n }\n get muted () {\n if (!this.video) return null\n return this.video.muted\n }\n set muted (isTrue) {\n if (!this.video) return\n this.video.muted = isTrue\n }\n get networkState () {\n if (!this.video) return null\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) return null\n return this.video.paused\n }\n get playbackRate () {\n if (!this.video) return null\n return this.video.playbackRate\n }\n set playbackRate (rate) {\n if (!this.video) return\n this.video.playbackRate = rate\n }\n get played () {\n if (!this.video) return null\n return this.video.played\n }\n get preload () {\n if (!this.video) return null\n return this.video.preload\n }\n set preload (isTrue) {\n if (!this.video) return\n this.video.preload = isTrue\n }\n get readyState () {\n if (!this.video) return null\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) return null\n return this.video.seekable\n }\n get seeking () {\n if (!this.video) return null\n return this.video.seeking\n }\n get src () {\n if (!this.video || !this.video.src || this.video.src === location.href) return null\n return this.video.src\n }\n set src (url) {\n if (!this.video) return\n this.video.pause()\n if(typeof this.config.beforeStartRun === 'function') {\n this.config.beforeStartRun().then(() => {\n this.video.src = url\n this.emit('srcChange')\n })\n } else {\n this.video.src = url\n this.emit('srcChange')\n }\n }\n get volume () {\n if (!this.video) return null\n return this.video.volume\n }\n set volume (vol) {\n if (typeof isFinite === 'function' && !isFinite(vol)) return\n if (!this.video) return\n this.video.volume = vol\n }\n get fullscreen () {\n return util.hasClass(this.root, 'xgplayer-is-fullscreen') || util.hasClass(this.root, 'xgplayer-fullscreen-active')\n }\n get bullet () {\n return util.findDom(this.root, 'xg-bullet') ? util.hasClass(util.findDom(this.root, 'xg-bullet'), 'xgplayer-has-bullet') : false\n }\n get textTrack () {\n return util.hasClass(this.root, 'xgplayer-is-textTrack')\n }\n get pip () {\n return util.hasClass(this.root, 'xgplayer-pip-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","class INDEXDB {\n constructor (mydb = {name: 'xgplayer', version: 1, db: null, ojstore: {name: 'xg-m4a', keypath: 'vid'}}) {\n this.indexedDB = window.indexedDB || window.webkitindexedDB\n this.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange // 键范围\n this.myDB = mydb\n }\n\n openDB (callback) {\n // 建立或打开数据库,建立对象存储空间(ObjectStore)\n let self = this\n let version = this.myDB.version || 1\n let request = self.indexedDB.open(self.myDB.name, version)\n request.onerror = function (e) {\n // console.log('e.currentTarget.error.message')\n }\n request.onsuccess = e => {\n this.myDB.db = e.target.result\n // console.log('成功建立并打开数据库:' + this.myDB.name + ' version' + this.myDB.version)\n callback.call(self)\n }\n request.onupgradeneeded = e => {\n let db = e.target.result\n let transaction = e.target.transaction\n let store\n if (!db.objectStoreNames.contains(self.myDB.ojstore.name)) {\n // 没有该对象空间时创建该对象空间\n store = db.createObjectStore(self.myDB.ojstore.name, {keyPath: self.myDB.ojstore.keypath})\n // console.log('成功建立对象存储空间:' + this.myDB.ojstore.name)\n }\n }\n }\n\n deletedb () {\n // 删除数据库\n let self = this\n self.indexedDB.deleteDatabase(this.myDB.name)\n // console.log(this.myDB.name + '数据库已删除')\n }\n\n closeDB () {\n // 关闭数据库\n this.myDB.db.close()\n // console.log('数据库已关闭')\n }\n\n addData (storename, data) {\n // 添加数据,重复添加会报错\n let store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename)\n let request\n for (let i = 0; i < data.length; i++) {\n request = store.add(data[i])\n request.onerror = function () {\n // console.error('add添加数据库中已有该数据')\n }\n request.onsuccess = function () {\n // console.log('add添加数据已存入数据库')\n }\n }\n }\n\n putData (storename, data) {\n // 添加数据,重复添加会更新原有数据\n let store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename)\n let request\n for (let i = 0; i < data.length; i++) {\n request = store.put(data[i])\n request.onerror = function () {\n // console.error('put添加数据库中已有该数据')\n }\n request.onsuccess = function () {\n // console.log('put添加数据已存入数据库')\n }\n }\n }\n\n getDataByKey (storename, key, callback) {\n let self = this\n // 根据存储空间的键找到对应数据\n let store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename)\n let request = store.get(key)\n request.onerror = function () {\n // console.error('getDataByKey error')\n callback.call(self, null)\n }\n request.onsuccess = function (e) {\n let result = e.target.result\n // console.log('查找数据成功')\n callback.call(self, result)\n }\n }\n\n deleteData (storename, key) {\n // 删除某一条记录\n let store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename)\n store.delete(key)\n // console.log('已删除存储空间' + storename + '中' + key + '记录')\n }\n\n clearData (storename) {\n // 删除存储空间全部记录\n let store = this.myDB.db.transaction(storename, 'readwrite').objectStore(storename)\n store.clear()\n // console.log('已删除存储空间' + storename + '全部记录')\n }\n}\n\nexport default INDEXDB\n","/*!\n * Draggabilly v2.3.0\n * Make that shiz draggable\n * https://draggabilly.desandro.com\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'get-size/get-size',\n 'unidragger/unidragger',\n ],\n function( getSize, Unidragger ) {\n return factory( window, getSize, Unidragger );\n } );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('get-size'),\n require('unidragger')\n );\n } else {\n // browser global\n window.Draggabilly = factory(\n window,\n window.getSize,\n window.Unidragger\n );\n }\n\n}( window, function factory( window, getSize, Unidragger ) {\n\n// -------------------------- helpers & variables -------------------------- //\n\n// extend objects\nfunction extend( a, b ) {\n for ( var prop in b ) {\n a[ prop ] = b[ prop ];\n }\n return a;\n}\n\nfunction noop() {}\n\nvar jQuery = window.jQuery;\n\n// -------------------------- -------------------------- //\n\nfunction Draggabilly( element, options ) {\n // querySelector if string\n this.element = typeof element == 'string' ?\n document.querySelector( element ) : element;\n\n if ( jQuery ) {\n this.$element = jQuery( this.element );\n }\n\n // options\n this.options = extend( {}, this.constructor.defaults );\n this.option( options );\n\n this._create();\n}\n\n// inherit Unidragger methods\nvar proto = Draggabilly.prototype = Object.create( Unidragger.prototype );\n\nDraggabilly.defaults = {\n};\n\n/**\n * set options\n * @param {Object} opts\n */\nproto.option = function( opts ) {\n extend( this.options, opts );\n};\n\n// css position values that don't need to be set\nvar positionValues = {\n relative: true,\n absolute: true,\n fixed: true,\n};\n\nproto._create = function() {\n // properties\n this.position = {};\n this._getPosition();\n\n this.startPoint = { x: 0, y: 0 };\n this.dragPoint = { x: 0, y: 0 };\n\n this.startPosition = extend( {}, this.position );\n\n // set relative positioning\n var style = getComputedStyle( this.element );\n if ( !positionValues[ style.position ] ) {\n this.element.style.position = 'relative';\n }\n\n // events, bridge jQuery events from vanilla\n this.on( 'pointerMove', this.onPointerMove );\n this.on( 'pointerUp', this.onPointerUp );\n\n this.enable();\n this.setHandles();\n};\n\n/**\n * set this.handles and bind start events to 'em\n */\nproto.setHandles = function() {\n this.handles = this.options.handle ?\n this.element.querySelectorAll( this.options.handle ) : [ this.element ];\n\n this.bindHandles();\n};\n\n/**\n * emits events via EvEmitter and jQuery events\n * @param {String} type - name of event\n * @param {Event} event - original event\n * @param {Array} args - extra arguments\n */\nproto.dispatchEvent = function( type, event, args ) {\n var emitArgs = [ event ].concat( args );\n this.emitEvent( type, emitArgs );\n this.dispatchJQueryEvent( type, event, args );\n};\n\nproto.dispatchJQueryEvent = function( type, event, args ) {\n var jquery = window.jQuery;\n // trigger jQuery event\n if ( !jquery || !this.$element ) {\n return;\n }\n // create jQuery event\n /* eslint-disable-next-line new-cap */\n var $event = jquery.Event( event );\n $event.type = type;\n this.$element.trigger( $event, args );\n};\n\n// -------------------------- position -------------------------- //\n\n// get x/y position from style\nproto._getPosition = function() {\n var style = getComputedStyle( this.element );\n var x = this._getPositionCoord( style.left, 'width' );\n var y = this._getPositionCoord( style.top, 'height' );\n // clean up 'auto' or other non-integer values\n this.position.x = isNaN( x ) ? 0 : x;\n this.position.y = isNaN( y ) ? 0 : y;\n\n this._addTransformPosition( style );\n};\n\nproto._getPositionCoord = function( styleSide, measure ) {\n if ( styleSide.indexOf('%') != -1 ) {\n // convert percent into pixel for Safari, #75\n var parentSize = getSize( this.element.parentNode );\n // prevent not-in-DOM element throwing bug, #131\n return !parentSize ? 0 :\n ( parseFloat( styleSide ) / 100 ) * parentSize[ measure ];\n }\n return parseInt( styleSide, 10 );\n};\n\n// add transform: translate( x, y ) to position\nproto._addTransformPosition = function( style ) {\n var transform = style.transform;\n // bail out if value is 'none'\n if ( transform.indexOf('matrix') !== 0 ) {\n return;\n }\n // split matrix(1, 0, 0, 1, x, y)\n var matrixValues = transform.split(',');\n // translate X value is in 12th or 4th position\n var xIndex = transform.indexOf('matrix3d') === 0 ? 12 : 4;\n var translateX = parseInt( matrixValues[ xIndex ], 10 );\n // translate Y value is in 13th or 5th position\n var translateY = parseInt( matrixValues[ xIndex + 1 ], 10 );\n this.position.x += translateX;\n this.position.y += translateY;\n};\n\n// -------------------------- events -------------------------- //\n\nproto.onPointerDown = function( event, pointer ) {\n this.element.classList.add('is-pointer-down');\n this.dispatchJQueryEvent( 'pointerDown', event, [ pointer ] );\n};\n\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay || !this.isEnabled ) {\n this._pointerReset();\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.element.classList.add('is-pointer-down');\n this.dispatchEvent( 'pointerDown', event, [ pointer ] );\n};\n\n/**\n * drag start\n * @param {Event} event\n * @param {[Event, Touch]} pointer\n */\nproto.dragStart = function( event, pointer ) {\n if ( !this.isEnabled ) {\n return;\n }\n this._getPosition();\n this.measureContainment();\n // position _when_ drag began\n this.startPosition.x = this.position.x;\n this.startPosition.y = this.position.y;\n // reset left/top style\n this.setLeftTop();\n\n this.dragPoint.x = 0;\n this.dragPoint.y = 0;\n\n this.element.classList.add('is-dragging');\n this.dispatchEvent( 'dragStart', event, [ pointer ] );\n // start animation\n this.animate();\n};\n\nproto.measureContainment = function() {\n var container = this.getContainer();\n if ( !container ) {\n return;\n }\n\n var elemSize = getSize( this.element );\n var containerSize = getSize( container );\n var elemRect = this.element.getBoundingClientRect();\n var containerRect = container.getBoundingClientRect();\n\n var borderSizeX = containerSize.borderLeftWidth + containerSize.borderRightWidth;\n var borderSizeY = containerSize.borderTopWidth + containerSize.borderBottomWidth;\n\n var position = this.relativeStartPosition = {\n x: elemRect.left - ( containerRect.left + containerSize.borderLeftWidth ),\n y: elemRect.top - ( containerRect.top + containerSize.borderTopWidth ),\n };\n\n this.containSize = {\n width: ( containerSize.width - borderSizeX ) - position.x - elemSize.width,\n height: ( containerSize.height - borderSizeY ) - position.y - elemSize.height,\n };\n};\n\nproto.getContainer = function() {\n var containment = this.options.containment;\n if ( !containment ) {\n return;\n }\n var isElement = containment instanceof HTMLElement;\n // use as element\n if ( isElement ) {\n return containment;\n }\n // querySelector if string\n if ( typeof containment == 'string' ) {\n return document.querySelector( containment );\n }\n // fallback to parent element\n return this.element.parentNode;\n};\n\n// ----- move event ----- //\n\nproto.onPointerMove = function( event, pointer, moveVector ) {\n this.dispatchJQueryEvent( 'pointerMove', event, [ pointer, moveVector ] );\n};\n\n/**\n * drag move\n * @param {Event} event\n * @param {[Event, Touch]} pointer\n * @param {Object} moveVector - x and y coordinates\n */\nproto.dragMove = function( event, pointer, moveVector ) {\n if ( !this.isEnabled ) {\n return;\n }\n var dragX = moveVector.x;\n var dragY = moveVector.y;\n\n var grid = this.options.grid;\n var gridX = grid && grid[0];\n var gridY = grid && grid[1];\n\n dragX = applyGrid( dragX, gridX );\n dragY = applyGrid( dragY, gridY );\n\n dragX = this.containDrag( 'x', dragX, gridX );\n dragY = this.containDrag( 'y', dragY, gridY );\n\n // constrain to axis\n dragX = this.options.axis == 'y' ? 0 : dragX;\n dragY = this.options.axis == 'x' ? 0 : dragY;\n\n this.position.x = this.startPosition.x + dragX;\n this.position.y = this.startPosition.y + dragY;\n // set dragPoint properties\n this.dragPoint.x = dragX;\n this.dragPoint.y = dragY;\n\n this.dispatchEvent( 'dragMove', event, [ pointer, moveVector ] );\n};\n\nfunction applyGrid( value, grid, method ) {\n method = method || 'round';\n return grid ? Math[ method ]( value/grid ) * grid : value;\n}\n\nproto.containDrag = function( axis, drag, grid ) {\n if ( !this.options.containment ) {\n return drag;\n }\n var measure = axis == 'x' ? 'width' : 'height';\n\n var rel = this.relativeStartPosition[ axis ];\n var min = applyGrid( -rel, grid, 'ceil' );\n var max = this.containSize[ measure ];\n max = applyGrid( max, grid, 'floor' );\n return Math.max( min, Math.min( max, drag ) );\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {[Event, Touch]} pointer\n */\nproto.onPointerUp = function( event, pointer ) {\n this.element.classList.remove('is-pointer-down');\n this.dispatchJQueryEvent( 'pointerUp', event, [ pointer ] );\n};\n\n/**\n * drag end\n * @param {Event} event\n * @param {[Event, Touch]} pointer\n */\nproto.dragEnd = function( event, pointer ) {\n if ( !this.isEnabled ) {\n return;\n }\n // use top left position when complete\n this.element.style.transform = '';\n this.setLeftTop();\n this.element.classList.remove('is-dragging');\n this.dispatchEvent( 'dragEnd', event, [ pointer ] );\n};\n\n// -------------------------- animation -------------------------- //\n\nproto.animate = function() {\n // only render and animate if dragging\n if ( !this.isDragging ) {\n return;\n }\n\n this.positionDrag();\n\n var _this = this;\n requestAnimationFrame( function animateFrame() {\n _this.animate();\n } );\n\n};\n\n// left/top positioning\nproto.setLeftTop = function() {\n this.element.style.left = this.position.x + 'px';\n this.element.style.top = this.position.y + 'px';\n};\n\nproto.positionDrag = function() {\n this.element.style.transform = 'translate3d( ' + this.dragPoint.x +\n 'px, ' + this.dragPoint.y + 'px, 0)';\n};\n\n// ----- staticClick ----- //\n\nproto.staticClick = function( event, pointer ) {\n this.dispatchEvent( 'staticClick', event, [ pointer ] );\n};\n\n// ----- methods ----- //\n\n/**\n * @param {Number} x\n * @param {Number} y\n */\nproto.setPosition = function( x, y ) {\n this.position.x = x;\n this.position.y = y;\n this.setLeftTop();\n};\n\nproto.enable = function() {\n this.isEnabled = true;\n};\n\nproto.disable = function() {\n this.isEnabled = false;\n if ( this.isDragging ) {\n this.dragEnd();\n }\n};\n\nproto.destroy = function() {\n this.disable();\n // reset styles\n this.element.style.transform = '';\n this.element.style.left = '';\n this.element.style.top = '';\n this.element.style.position = '';\n // unbind handles\n this.unbindHandles();\n // remove jQuery data\n if ( this.$element ) {\n this.$element.removeData('draggabilly');\n }\n};\n\n// ----- jQuery bridget ----- //\n\n// required for jQuery bridget\nproto._init = noop;\n\nif ( jQuery && jQuery.bridget ) {\n jQuery.bridget( 'draggabilly', Draggabilly );\n}\n\n// ----- ----- //\n\nreturn Draggabilly;\n\n} ) );\n","/*!\n * getSize v2.0.3\n * measure size of elements\n * MIT license\n */\n\n/* jshint browser: true, strict: true, undef: true, unused: true */\n/* globals console: false */\n\n( function( window, factory ) {\n /* jshint strict: false */ /* globals define, module */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory();\n } else {\n // browser global\n window.getSize = factory();\n }\n\n})( window, function factory() {\n'use strict';\n\n// -------------------------- helpers -------------------------- //\n\n// get a number from a string, not a percentage\nfunction getStyleSize( value ) {\n var num = parseFloat( value );\n // not a percent like '100%', and a number\n var isValid = value.indexOf('%') == -1 && !isNaN( num );\n return isValid && num;\n}\n\nfunction noop() {}\n\nvar logError = typeof console == 'undefined' ? noop :\n function( message ) {\n console.error( message );\n };\n\n// -------------------------- measurements -------------------------- //\n\nvar measurements = [\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'paddingBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'marginBottom',\n 'borderLeftWidth',\n 'borderRightWidth',\n 'borderTopWidth',\n 'borderBottomWidth'\n];\n\nvar measurementsLength = measurements.length;\n\nfunction getZeroSize() {\n var size = {\n width: 0,\n height: 0,\n innerWidth: 0,\n innerHeight: 0,\n outerWidth: 0,\n outerHeight: 0\n };\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n size[ measurement ] = 0;\n }\n return size;\n}\n\n// -------------------------- getStyle -------------------------- //\n\n/**\n * getStyle, get style of element, check for Firefox bug\n * https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\nfunction getStyle( elem ) {\n var style = getComputedStyle( elem );\n if ( !style ) {\n logError( 'Style returned ' + style +\n '. Are you running this code in a hidden iframe on Firefox? ' +\n 'See https://bit.ly/getsizebug1' );\n }\n return style;\n}\n\n// -------------------------- setup -------------------------- //\n\nvar isSetup = false;\n\nvar isBoxSizeOuter;\n\n/**\n * setup\n * check isBoxSizerOuter\n * do on first getSize() rather than on page load for Firefox bug\n */\nfunction setup() {\n // setup once\n if ( isSetup ) {\n return;\n }\n isSetup = true;\n\n // -------------------------- box sizing -------------------------- //\n\n /**\n * Chrome & Safari measure the outer-width on style.width on border-box elems\n * IE11 & Firefox<29 measures the inner-width\n */\n var div = document.createElement('div');\n div.style.width = '200px';\n div.style.padding = '1px 2px 3px 4px';\n div.style.borderStyle = 'solid';\n div.style.borderWidth = '1px 2px 3px 4px';\n div.style.boxSizing = 'border-box';\n\n var body = document.body || document.documentElement;\n body.appendChild( div );\n var style = getStyle( div );\n // round value for browser zoom. desandro/masonry#928\n isBoxSizeOuter = Math.round( getStyleSize( style.width ) ) == 200;\n getSize.isBoxSizeOuter = isBoxSizeOuter;\n\n body.removeChild( div );\n}\n\n// -------------------------- getSize -------------------------- //\n\nfunction getSize( elem ) {\n setup();\n\n // use querySeletor if elem is string\n if ( typeof elem == 'string' ) {\n elem = document.querySelector( elem );\n }\n\n // do not proceed on non-objects\n if ( !elem || typeof elem != 'object' || !elem.nodeType ) {\n return;\n }\n\n var style = getStyle( elem );\n\n // if hidden, everything is 0\n if ( style.display == 'none' ) {\n return getZeroSize();\n }\n\n var size = {};\n size.width = elem.offsetWidth;\n size.height = elem.offsetHeight;\n\n var isBorderBox = size.isBorderBox = style.boxSizing == 'border-box';\n\n // get all measurements\n for ( var i=0; i < measurementsLength; i++ ) {\n var measurement = measurements[i];\n var value = style[ measurement ];\n var num = parseFloat( value );\n // any 'auto', 'medium' value will be 0\n size[ measurement ] = !isNaN( num ) ? num : 0;\n }\n\n var paddingWidth = size.paddingLeft + size.paddingRight;\n var paddingHeight = size.paddingTop + size.paddingBottom;\n var marginWidth = size.marginLeft + size.marginRight;\n var marginHeight = size.marginTop + size.marginBottom;\n var borderWidth = size.borderLeftWidth + size.borderRightWidth;\n var borderHeight = size.borderTopWidth + size.borderBottomWidth;\n\n var isBorderBoxSizeOuter = isBorderBox && isBoxSizeOuter;\n\n // overwrite width and height if we can get it from style\n var styleWidth = getStyleSize( style.width );\n if ( styleWidth !== false ) {\n size.width = styleWidth +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingWidth + borderWidth );\n }\n\n var styleHeight = getStyleSize( style.height );\n if ( styleHeight !== false ) {\n size.height = styleHeight +\n // add padding and border unless it's already including it\n ( isBorderBoxSizeOuter ? 0 : paddingHeight + borderHeight );\n }\n\n size.innerWidth = size.width - ( paddingWidth + borderWidth );\n size.innerHeight = size.height - ( paddingHeight + borderHeight );\n\n size.outerWidth = size.width + marginWidth;\n size.outerHeight = size.height + marginHeight;\n\n return size;\n}\n\nreturn getSize;\n\n});\n","/*!\n * Unidragger v2.3.1\n * Draggable base class\n * MIT license\n */\n\n/*jshint browser: true, unused: true, undef: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /*jshint strict: false */ /*globals define, module, require */\n\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'unipointer/unipointer'\n ], function( Unipointer ) {\n return factory( window, Unipointer );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('unipointer')\n );\n } else {\n // browser global\n window.Unidragger = factory(\n window,\n window.Unipointer\n );\n }\n\n}( window, function factory( window, Unipointer ) {\n\n'use strict';\n\n// -------------------------- Unidragger -------------------------- //\n\nfunction Unidragger() {}\n\n// inherit Unipointer & EvEmitter\nvar proto = Unidragger.prototype = Object.create( Unipointer.prototype );\n\n// ----- bind start ----- //\n\nproto.bindHandles = function() {\n this._bindHandles( true );\n};\n\nproto.unbindHandles = function() {\n this._bindHandles( false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd\n */\nproto._bindHandles = function( isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n // bind each handle\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n var touchAction = isAdd ? this._touchActionValue : '';\n for ( var i=0; i < this.handles.length; i++ ) {\n var handle = this.handles[i];\n this._bindStartEvent( handle, isAdd );\n handle[ bindMethod ]( 'click', this );\n // touch-action: none to override browser touch gestures. metafizzy/flickity#540\n if ( window.PointerEvent ) {\n handle.style.touchAction = touchAction;\n }\n }\n};\n\n// prototype so it can be overwriteable by Flickity\nproto._touchActionValue = 'none';\n\n// ----- start event ----- //\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerDown = function( event, pointer ) {\n var isOkay = this.okayPointerDown( event );\n if ( !isOkay ) {\n return;\n }\n // track start event position\n // Safari 9 overrides pageX and pageY. These values needs to be copied. flickity#842\n this.pointerDownPointer = {\n pageX: pointer.pageX,\n pageY: pointer.pageY,\n };\n\n event.preventDefault();\n this.pointerDownBlur();\n // bind move and end events\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// nodes that have text fields\nvar cursorNodes = {\n TEXTAREA: true,\n INPUT: true,\n SELECT: true,\n OPTION: true,\n};\n\n// input types that do not have text fields\nvar clickTypes = {\n radio: true,\n checkbox: true,\n button: true,\n submit: true,\n image: true,\n file: true,\n};\n\n// dismiss inputs with text fields. flickity#403, flickity#404\nproto.okayPointerDown = function( event ) {\n var isCursorNode = cursorNodes[ event.target.nodeName ];\n var isClickType = clickTypes[ event.target.type ];\n var isOkay = !isCursorNode || isClickType;\n if ( !isOkay ) {\n this._pointerReset();\n }\n return isOkay;\n};\n\n// kludge to blur previously focused input\nproto.pointerDownBlur = function() {\n var focused = document.activeElement;\n // do not blur body for IE10, metafizzy/flickity#117\n var canBlur = focused && focused.blur && focused != document.body;\n if ( canBlur ) {\n focused.blur();\n }\n};\n\n// ----- move event ----- //\n\n/**\n * drag move\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerMove = function( event, pointer ) {\n var moveVector = this._dragPointerMove( event, pointer );\n this.emitEvent( 'pointerMove', [ event, pointer, moveVector ] );\n this._dragMove( event, pointer, moveVector );\n};\n\n// base pointer move logic\nproto._dragPointerMove = function( event, pointer ) {\n var moveVector = {\n x: pointer.pageX - this.pointerDownPointer.pageX,\n y: pointer.pageY - this.pointerDownPointer.pageY\n };\n // start drag if pointer has moved far enough to start drag\n if ( !this.isDragging && this.hasDragStarted( moveVector ) ) {\n this._dragStart( event, pointer );\n }\n return moveVector;\n};\n\n// condition if pointer has moved far enough to start drag\nproto.hasDragStarted = function( moveVector ) {\n return Math.abs( moveVector.x ) > 3 || Math.abs( moveVector.y ) > 3;\n};\n\n// ----- end event ----- //\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n this._dragPointerUp( event, pointer );\n};\n\nproto._dragPointerUp = function( event, pointer ) {\n if ( this.isDragging ) {\n this._dragEnd( event, pointer );\n } else {\n // pointer didn't move enough for drag to start\n this._staticClick( event, pointer );\n }\n};\n\n// -------------------------- drag -------------------------- //\n\n// dragStart\nproto._dragStart = function( event, pointer ) {\n this.isDragging = true;\n // prevent clicks\n this.isPreventingClicks = true;\n this.dragStart( event, pointer );\n};\n\nproto.dragStart = function( event, pointer ) {\n this.emitEvent( 'dragStart', [ event, pointer ] );\n};\n\n// dragMove\nproto._dragMove = function( event, pointer, moveVector ) {\n // do not drag if not dragging yet\n if ( !this.isDragging ) {\n return;\n }\n\n this.dragMove( event, pointer, moveVector );\n};\n\nproto.dragMove = function( event, pointer, moveVector ) {\n event.preventDefault();\n this.emitEvent( 'dragMove', [ event, pointer, moveVector ] );\n};\n\n// dragEnd\nproto._dragEnd = function( event, pointer ) {\n // set flags\n this.isDragging = false;\n // re-enable clicking async\n setTimeout( function() {\n delete this.isPreventingClicks;\n }.bind( this ) );\n\n this.dragEnd( event, pointer );\n};\n\nproto.dragEnd = function( event, pointer ) {\n this.emitEvent( 'dragEnd', [ event, pointer ] );\n};\n\n// ----- onclick ----- //\n\n// handle all clicks and prevent clicks when dragging\nproto.onclick = function( event ) {\n if ( this.isPreventingClicks ) {\n event.preventDefault();\n }\n};\n\n// ----- staticClick ----- //\n\n// triggered after pointer down & up with no/tiny movement\nproto._staticClick = function( event, pointer ) {\n // ignore emulated mouse up clicks\n if ( this.isIgnoringMouseUp && event.type == 'mouseup' ) {\n return;\n }\n\n this.staticClick( event, pointer );\n\n // set flag for emulated clicks 300ms after touchend\n if ( event.type != 'mouseup' ) {\n this.isIgnoringMouseUp = true;\n // reset flag after 300ms\n setTimeout( function() {\n delete this.isIgnoringMouseUp;\n }.bind( this ), 400 );\n }\n};\n\nproto.staticClick = function( event, pointer ) {\n this.emitEvent( 'staticClick', [ event, pointer ] );\n};\n\n// ----- utils ----- //\n\nUnidragger.getPointerPoint = Unipointer.getPointerPoint;\n\n// ----- ----- //\n\nreturn Unidragger;\n\n}));\n","/*!\n * Unipointer v2.3.0\n * base class for doing one thing with pointer event\n * MIT license\n */\n\n/*jshint browser: true, undef: true, unused: true, strict: true */\n\n( function( window, factory ) {\n // universal module definition\n /* jshint strict: false */ /*global define, module, require */\n if ( typeof define == 'function' && define.amd ) {\n // AMD\n define( [\n 'ev-emitter/ev-emitter'\n ], function( EvEmitter ) {\n return factory( window, EvEmitter );\n });\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS\n module.exports = factory(\n window,\n require('ev-emitter')\n );\n } else {\n // browser global\n window.Unipointer = factory(\n window,\n window.EvEmitter\n );\n }\n\n}( window, function factory( window, EvEmitter ) {\n\n'use strict';\n\nfunction noop() {}\n\nfunction Unipointer() {}\n\n// inherit EvEmitter\nvar proto = Unipointer.prototype = Object.create( EvEmitter.prototype );\n\nproto.bindStartEvent = function( elem ) {\n this._bindStartEvent( elem, true );\n};\n\nproto.unbindStartEvent = function( elem ) {\n this._bindStartEvent( elem, false );\n};\n\n/**\n * Add or remove start event\n * @param {Boolean} isAdd - remove if falsey\n */\nproto._bindStartEvent = function( elem, isAdd ) {\n // munge isAdd, default to true\n isAdd = isAdd === undefined ? true : isAdd;\n var bindMethod = isAdd ? 'addEventListener' : 'removeEventListener';\n\n // default to mouse events\n var startEvent = 'mousedown';\n if ( window.PointerEvent ) {\n // Pointer Events\n startEvent = 'pointerdown';\n } else if ( 'ontouchstart' in window ) {\n // Touch Events. iOS Safari\n startEvent = 'touchstart';\n }\n elem[ bindMethod ]( startEvent, this );\n};\n\n// trigger handler methods for events\nproto.handleEvent = function( event ) {\n var method = 'on' + event.type;\n if ( this[ method ] ) {\n this[ method ]( event );\n }\n};\n\n// returns the touch that we're keeping track of\nproto.getTouch = function( touches ) {\n for ( var i=0; i < touches.length; i++ ) {\n var touch = touches[i];\n if ( touch.identifier == this.pointerIdentifier ) {\n return touch;\n }\n }\n};\n\n// ----- start event ----- //\n\nproto.onmousedown = function( event ) {\n // dismiss clicks from right or middle buttons\n var button = event.button;\n if ( button && ( button !== 0 && button !== 1 ) ) {\n return;\n }\n this._pointerDown( event, event );\n};\n\nproto.ontouchstart = function( event ) {\n this._pointerDown( event, event.changedTouches[0] );\n};\n\nproto.onpointerdown = function( event ) {\n this._pointerDown( event, event );\n};\n\n/**\n * pointer start\n * @param {Event} event\n * @param {Event or Touch} pointer\n */\nproto._pointerDown = function( event, pointer ) {\n // dismiss right click and other pointers\n // button = 0 is okay, 1-4 not\n if ( event.button || this.isPointerDown ) {\n return;\n }\n\n this.isPointerDown = true;\n // save pointer identifier to match up touch events\n this.pointerIdentifier = pointer.pointerId !== undefined ?\n // pointerId for pointer events, touch.indentifier for touch events\n pointer.pointerId : pointer.identifier;\n\n this.pointerDown( event, pointer );\n};\n\nproto.pointerDown = function( event, pointer ) {\n this._bindPostStartEvents( event );\n this.emitEvent( 'pointerDown', [ event, pointer ] );\n};\n\n// hash of events to be bound after start event\nvar postStartEvents = {\n mousedown: [ 'mousemove', 'mouseup' ],\n touchstart: [ 'touchmove', 'touchend', 'touchcancel' ],\n pointerdown: [ 'pointermove', 'pointerup', 'pointercancel' ],\n};\n\nproto._bindPostStartEvents = function( event ) {\n if ( !event ) {\n return;\n }\n // get proper events to match start event\n var events = postStartEvents[ event.type ];\n // bind events to node\n events.forEach( function( eventName ) {\n window.addEventListener( eventName, this );\n }, this );\n // save these arguments\n this._boundPointerEvents = events;\n};\n\nproto._unbindPostStartEvents = function() {\n // check for _boundEvents, in case dragEnd triggered twice (old IE8 bug)\n if ( !this._boundPointerEvents ) {\n return;\n }\n this._boundPointerEvents.forEach( function( eventName ) {\n window.removeEventListener( eventName, this );\n }, this );\n\n delete this._boundPointerEvents;\n};\n\n// ----- move event ----- //\n\nproto.onmousemove = function( event ) {\n this._pointerMove( event, event );\n};\n\nproto.onpointermove = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerMove( event, event );\n }\n};\n\nproto.ontouchmove = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerMove( event, touch );\n }\n};\n\n/**\n * pointer move\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerMove = function( event, pointer ) {\n this.pointerMove( event, pointer );\n};\n\n// public\nproto.pointerMove = function( event, pointer ) {\n this.emitEvent( 'pointerMove', [ event, pointer ] );\n};\n\n// ----- end event ----- //\n\n\nproto.onmouseup = function( event ) {\n this._pointerUp( event, event );\n};\n\nproto.onpointerup = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerUp( event, event );\n }\n};\n\nproto.ontouchend = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerUp( event, touch );\n }\n};\n\n/**\n * pointer up\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerUp = function( event, pointer ) {\n this._pointerDone();\n this.pointerUp( event, pointer );\n};\n\n// public\nproto.pointerUp = function( event, pointer ) {\n this.emitEvent( 'pointerUp', [ event, pointer ] );\n};\n\n// ----- pointer done ----- //\n\n// triggered on pointer up & pointer cancel\nproto._pointerDone = function() {\n this._pointerReset();\n this._unbindPostStartEvents();\n this.pointerDone();\n};\n\nproto._pointerReset = function() {\n // reset properties\n this.isPointerDown = false;\n delete this.pointerIdentifier;\n};\n\nproto.pointerDone = noop;\n\n// ----- pointer cancel ----- //\n\nproto.onpointercancel = function( event ) {\n if ( event.pointerId == this.pointerIdentifier ) {\n this._pointerCancel( event, event );\n }\n};\n\nproto.ontouchcancel = function( event ) {\n var touch = this.getTouch( event.changedTouches );\n if ( touch ) {\n this._pointerCancel( event, touch );\n }\n};\n\n/**\n * pointer cancel\n * @param {Event} event\n * @param {Event or Touch} pointer\n * @private\n */\nproto._pointerCancel = function( event, pointer ) {\n this._pointerDone();\n this.pointerCancel( event, pointer );\n};\n\n// public\nproto.pointerCancel = function( event, pointer ) {\n this.emitEvent( 'pointerCancel', [ event, pointer ] );\n};\n\n// ----- ----- //\n\n// utility function for getting x/y coords from event\nUnipointer.getPointerPoint = function( pointer ) {\n return {\n x: pointer.pageX,\n y: pointer.pageY\n };\n};\n\n// ----- ----- //\n\nreturn Unipointer;\n\n}));\n","/**\n * EvEmitter v1.1.0\n * Lil' event emitter\n * MIT License\n */\n\n/* jshint unused: true, undef: true, strict: true */\n\n( function( global, factory ) {\n // universal module definition\n /* jshint strict: false */ /* globals define, module, window */\n if ( typeof define == 'function' && define.amd ) {\n // AMD - RequireJS\n define( factory );\n } else if ( typeof module == 'object' && module.exports ) {\n // CommonJS - Browserify, Webpack\n module.exports = factory();\n } else {\n // Browser globals\n global.EvEmitter = factory();\n }\n\n}( typeof window != 'undefined' ? window : this, function() {\n\n\"use strict\";\n\nfunction EvEmitter() {}\n\nvar proto = EvEmitter.prototype;\n\nproto.on = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // set events hash\n var events = this._events = this._events || {};\n // set listeners array\n var listeners = events[ eventName ] = events[ eventName ] || [];\n // only add once\n if ( listeners.indexOf( listener ) == -1 ) {\n listeners.push( listener );\n }\n\n return this;\n};\n\nproto.once = function( eventName, listener ) {\n if ( !eventName || !listener ) {\n return;\n }\n // add event\n this.on( eventName, listener );\n // set once flag\n // set onceEvents hash\n var onceEvents = this._onceEvents = this._onceEvents || {};\n // set onceListeners object\n var onceListeners = onceEvents[ eventName ] = onceEvents[ eventName ] || {};\n // set flag\n onceListeners[ listener ] = true;\n\n return this;\n};\n\nproto.off = function( eventName, listener ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n var index = listeners.indexOf( listener );\n if ( index != -1 ) {\n listeners.splice( index, 1 );\n }\n\n return this;\n};\n\nproto.emitEvent = function( eventName, args ) {\n var listeners = this._events && this._events[ eventName ];\n if ( !listeners || !listeners.length ) {\n return;\n }\n // copy over to avoid interference if .off() in listener\n listeners = listeners.slice(0);\n args = args || [];\n // once stuff\n var onceListeners = this._onceEvents && this._onceEvents[ eventName ];\n\n for ( var i=0; i < listeners.length; i++ ) {\n var listener = listeners[i]\n var isOnce = onceListeners && onceListeners[ listener ];\n if ( isOnce ) {\n // remove listener\n // remove before trigger to prevent recursion\n this.off( eventName, listener );\n // unset once flag\n delete onceListeners[ listener ];\n }\n // trigger listener\n listener.apply( this, args );\n }\n\n return this;\n};\n\nproto.allOff = function() {\n delete this._events;\n delete this._onceEvents;\n};\n\nreturn EvEmitter;\n\n}));\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{background:#000;width:100%;height:100%;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;-ms-user-select:none}.xgplayer *{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}.xgplayer.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.xgplayer-is-fullscreen{width:100%!important;height:100%!important;padding-top:0!important;z-index:9999}.xgplayer.xgplayer-is-fullscreen.xgplayer-inactive{cursor:none}.xgplayer video{width:100%;height:100%;outline:none}.xgplayer-icon{display:block;width:40px;height:40px;overflow:hidden;fill:#fff}.xgplayer-live{display:block;font-size:12px;color:#fff;line-height:40px;-webkit-order:1;-moz-box-ordinal-group:2;order:1}.xgplayer .xgplayer-none{display:none}@-webkit-keyframes playPause{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}99%{-webkit-transform:scale(1.3);transform:scale(1.3);opacity:0}to{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@-webkit-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}}@-webkit-keyframes enterTips{0%{opacity:0;left:0;width:3px}50%{opacity:1;left:50%;width:5px}to{opacity:0;left:100%;width:3px}}.xgplayer-controls{display:-webkit-flex;display:-moz-box;display:flex;position:absolute;bottom:0;left:0;right:0;height:40px;background-image:linear-gradient(-1deg,rgba(0,0,0,.3),transparent);z-index:10}.xgplayer-nostart .xgplayer-controls{display:none}.no-controls .xgplayer-controls{display:none!important}.xgplayer-inactive .xgplayer-controls,.xgplayer-is-live .xgplayer-controls>*{display:none}.xgplayer-is-live .xgplayer-controls .xgplayer-fullscreen,.xgplayer-is-live .xgplayer-controls .xgplayer-live,.xgplayer-is-live .xgplayer-controls .xgplayer-placeholder,.xgplayer-is-live .xgplayer-controls .xgplayer-play,.xgplayer-is-live .xgplayer-controls .xgplayer-play-img,.xgplayer-is-live .xgplayer-controls .xgplayer-volume{display:block}.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-placeholder{-webkit-flex:1;-moz-box-flex:1;flex:1;-webkit-order:3;-moz-box-ordinal-group:4;order:3;display:block}.xgplayer-start{display:none;border-radius:50%;width:70px;height:70px;background:hsla(0,0%,100%,.3);overflow:hidden;text-align:center;line-height:70px;vertical-align:middle;position:absolute;left:50%;top:50%;z-index:1000;margin:-55px auto auto -35px;cursor:pointer}.xgplayer-nostart .xgplayer-start,.xgplayer-start-appear .xgplayer-start{margin:-35px auto auto -35px;display:inline-block}.xgplayer-inactive .xgplayer-start{margin:-35px auto auto -35px}.xgplayer-start svg{fill:hsla(0,0%,100%,.7);margin:14px}.xgplayer-start.xgplayer-start-interact{-webkit-animation:playPause .4s ease-out forwards;animation:playPause .4s ease-out forwards}.xgplayer-start:hover{background:hsla(0,0%,100%,.5)}.xgplayer-start:hover svg{fill:hsla(0,0%,100%,.6)}.xgplayer-start-img{display:none;position:absolute;left:50%;top:50%;z-index:1000;cursor:pointer}.xgplayer-nostart .xgplayer-start-img{display:block}.xgplayer-start-img.xgplayer-start-interact{-webkit-animation:playPause .4s ease-out forwards;animation:playPause .4s ease-out forwards}.xgplayer-start-img:hover{opacity:.85}@keyframes playPause{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}99%{-webkit-transform:scale(1.3);transform:scale(1.3);opacity:0}to{-webkit-transform:scale(0);transform:scale(0);opacity:0}}@keyframes loadingRotate{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loadingDashOffset{0%{stroke-dashoffset:236}to{stroke-dashoffset:0}}@keyframes enterTips{0%{opacity:0;left:0;width:3px}50%{opacity:1;left:50%;width:5px}to{opacity:0;left:100%;width:3px}}.xgplayer-enter{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background:#000 url(\\\"//lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/byted-player-images/1.0.3/xg-bg.svg\\\") no-repeat 50%/102%;z-index:1100}.xgplayer-enter .xgplayer-enter-logo{display:block;position:absolute;left:50%;top:50%;height:82px;width:242px;background-size:242px 82px;margin:-71px auto auto -121px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAWUAAAB4CAYAAAAquuNKAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNi4wLWMwMDIgNzkuMTY0NDYwLCAyMDIwLzA1LzEyLTE2OjA0OjE3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMiAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjAtMDgtMjBUMTQ6Mjg6NTYrMDg6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIwLTA4LTIwVDE0OjMwOjMyKzA4OjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIwLTA4LTIwVDE0OjMwOjMyKzA4OjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjAwYTAwMjI3LTA0Y2Yt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)}.xgplayer-enter .xgplayer-enter-tips{display:none;position:absolute;left:50%;top:50%;width:198px;margin:20px auto auto -77px;height:1px;background:linear-gradient(90deg,#000,red,red,red,#000)}.xgplayer-enter .xgplayer-enter-tips:before{content:\\\" \\\";display:block;width:5px;height:1px;border-radius:50%;position:absolute;left:0;top:0;-webkit-animation:enterTips 1.6s linear infinite;animation:enterTips 1.6s linear infinite;background:#fff}.xgplayer-is-enter .xgplayer-enter,.xgplayer-is-enter .xgplayer-enter .xgplayer-enter-tips{display:block}.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","export const PLAYER_EVENTS = {\n PLAYER_WAITING:'PLAYER_WAITING',\n PLAYER_RESUME:'PLAYER_RESUME'\n}"],"sourceRoot":""}
|