From e988f00cf8647dc3a705410a88ca45a04190d06a Mon Sep 17 00:00:00 2001 From: Harvey Zack Date: Fri, 19 Oct 2018 16:57:31 +0800 Subject: [PATCH] add bar --- .eslintrc | 2 +- docs/css/artplayer.css | 2 +- docs/index.html | 70 ++++++------ docs/js/artplayer.js | 240 ++++++++++++++++++++++++++++++++------- docs/js/artplayer.js.map | 2 +- src/contextmenu.js | 10 +- src/controls/index.js | 14 +-- src/controls/progress.js | 110 ++++++++++++++++++ src/events.js | 13 ++- src/hotkey.js | 6 +- src/index.js | 8 +- src/player.js | 19 +++- src/style/index.scss | 142 +++++++++++++++++++---- src/template.js | 25 ++-- src/utils/index.js | 15 ++- 15 files changed, 538 insertions(+), 140 deletions(-) diff --git a/.eslintrc b/.eslintrc index b0cccffd0..5759b99ad 100644 --- a/.eslintrc +++ b/.eslintrc @@ -193,7 +193,7 @@ "constructor-super": 2, "generator-star-spacing": 1, "no-class-assign": 2, - "no-confusing-arrow": 2, + "no-confusing-arrow": 0, "no-const-assign": 2, "no-dupe-class-members": 2, "no-duplicate-imports": 2, diff --git a/docs/css/artplayer.css b/docs/css/artplayer.css index b0d2123a7..e58129449 100644 --- a/docs/css/artplayer.css +++ b/docs/css/artplayer.css @@ -1,2 +1,2 @@ -.artplayer-container{position:relative;text-align:left;overflow:hidden;font-family:Roboto,Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.artplayer-container .art-icon svg{fill:#fff}.artplayer-container .artplayer-video{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;width:100%;height:100%}.artplayer-container .artplayer-subtitle{position:absolute;z-index:20;bottom:40px;width:100%;padding:0 20px;text-align:center;color:#fff;text-shadow:.5px .5px .5px rgba(0,0,0,.5);font-size:20px;box-sizing:border-box}.artplayer-container .artplayer-layers{position:absolute;z-index:30;left:0;top:0;right:0;bottom:0;width:100%;height:100%}.artplayer-container .artplayer-mask{display:none;position:absolute;z-index:40;left:0;top:0;right:0;bottom:0;width:100%;height:100%;align-items:center;justify-content:center;cursor:pointer}.artplayer-container .artplayer-mask .art-icon-play{opacity:.8;display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:50px}.artplayer-container .artplayer-bottom{position:absolute;z-index:40;left:0;right:0;bottom:0;height:100px;opacity:0;visibility:hidden;transition:all .2s ease-in-out;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom}.artplayer-container.controls-show .artplayer-bottom,.artplayer-container:hover .artplayer-bottom{opacity:1;visibility:visible}.artplayer-container .artplayer-loading{display:none;position:absolute;z-index:50;left:0;top:0;right:0;bottom:0;width:100%;height:100%;align-items:center;justify-content:center}.artplayer-container .artplayer-notice{display:none;font-size:13px;position:absolute;z-index:60;left:10px;top:10px;height:30px;line-height:30px;padding:0 10px;color:#fff;background:rgba(0,0,0,.6)}.artplayer-container .artplayer-contextmenu{position:absolute;z-index:70;left:0;top:0;width:200px;padding:5px 0;background:rgba(0,0,0,.8)}.artplayer-container .artplayer-contextmenu a{font-size:13px;display:block;color:#fff;padding:7px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;text-shadow:0 0 2px rgba(0,0,0,.5)}.artplayer-container .artplayer-contextmenu a:hover{background-color:hsla(0,0%,100%,.1)} +.artplayer-video-player{position:relative;width:100%;height:100%;overflow:hidden;outline:0;font-family:Roboto,Arial,Helvetica,sans-serif;color:#eee;text-align:left;direction:ltr;font-size:14px;line-height:1.3;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:manipulation;-ms-high-contrast-adjust:none}.artplayer-video-player *{box-sizing:border-box}.artplayer-video-player .art-icon svg{fill:#fff}.artplayer-video-player .artplayer-video{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;width:100%;height:100%;background-color:#000;outline:0}.artplayer-video-player .artplayer-subtitle{position:absolute;z-index:20;bottom:40px;width:100%;padding:0 20px;text-align:center;color:#fff;text-shadow:.5px .5px .5px rgba(0,0,0,.5);font-size:20px;box-sizing:border-box}.artplayer-video-player .artplayer-layers{position:absolute;z-index:30;left:0;top:0;right:0;bottom:0;width:100%;height:100%}.artplayer-video-player .artplayer-mask{display:none;position:absolute;z-index:40;left:0;top:0;right:0;bottom:0;width:100%;height:100%;align-items:center;justify-content:center;cursor:pointer}.artplayer-video-player .artplayer-mask .art-icon-play{opacity:.8;display:flex;align-items:center;justify-content:center;width:50px;height:50px;border-radius:50px}.artplayer-video-player .artplayer-loading{display:none;position:absolute;z-index:40;left:0;top:0;right:0;bottom:0;width:100%;height:100%;align-items:center;justify-content:center}.artplayer-video-player .artplayer-bottom{position:absolute;z-index:50;left:0;right:0;bottom:0;height:100px;padding:50px 10px 0;opacity:0;visibility:hidden;transition:all .2s ease-in-out;box-sizing:border-box;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom}.artplayer-video-player .artplayer-bottom .art-control-progress{position:relative;height:5px;padding:1px 0;cursor:pointer;box-sizing:border-box}.artplayer-video-player .artplayer-bottom .art-control-progress .art-control-progress-inner{position:relative;height:100%;background:hsla(0,0%,100%,.2)}.artplayer-video-player .artplayer-bottom .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;z-index:1;left:0;top:0;right:0;bottom:0;height:100%;width:0;background:hsla(0,0%,100%,.4);-webkit-transform-origin:0 0;transform-origin:0 0}.artplayer-video-player .artplayer-bottom .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;z-index:2;left:0;top:0;right:0;bottom:0;height:100%;width:0;-webkit-transform-origin:0 0;transform-origin:0 0}.artplayer-video-player .artplayer-bottom .art-control-progress .art-control-progress-inner .art-progress-indicator{display:none;position:absolute;z-index:3;top:-5px;left:-6.5px;width:13px;height:13px;border-radius:50%}.artplayer-video-player .artplayer-bottom .art-control-progress .art-control-progress-inner .art-progress-indicator.show-indicator{display:block}.artplayer-video-player .artplayer-bottom .art-control-progress .art-control-progress-inner .art-progress-timer{display:none;position:absolute;z-index:4;top:-25px;left:0;width:40px;height:20px;line-height:20px;color:#fff;font-size:12px;text-align:center;background:rgba(0,0,0,.7);border-radius:3px;font-weight:700}.artplayer-video-player .artplayer-bottom .art-control-progress:hover .art-progress-indicator,.artplayer-video-player .artplayer-bottom .art-control-progress:hover .art-progress-timer{display:block}.artplayer-video-player.controls-show .artplayer-bottom,.artplayer-video-player:hover .artplayer-bottom{opacity:1;visibility:visible}.artplayer-video-player .artplayer-notice{display:none;font-size:13px;position:absolute;z-index:60;left:10px;top:10px;height:30px;line-height:30px;padding:0 10px;color:#fff;background:rgba(0,0,0,.6)}.artplayer-video-player .artplayer-contextmenu{position:absolute;z-index:70;left:0;top:0;width:200px;padding:5px 0;background:rgba(0,0,0,.8)}.artplayer-video-player .artplayer-contextmenu a{font-size:13px;display:block;color:#fff;padding:7px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration:none;text-shadow:0 0 2px rgba(0,0,0,.5)}.artplayer-video-player .artplayer-contextmenu a:hover{background-color:hsla(0,0%,100%,.1)} button[data-balloon]{overflow:visible}[data-balloon]{position:relative;cursor:pointer}[data-balloon]:after{font-family:sans-serif!important;font-weight:400!important;font-style:normal!important;text-shadow:none!important;font-size:12px!important;background:rgba(17,17,17,.9);border-radius:4px;color:#fff;content:attr(data-balloon);padding:.5em 1em;white-space:nowrap}[data-balloon]:after,[data-balloon]:before{filter:alpha(opactiy=0);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";-moz-opacity:0;-khtml-opacity:0;opacity:0;pointer-events:none;transition:all .18s ease-out .18s;position:absolute;z-index:10}[data-balloon]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17,17,17,0.9)' d='M2.658 0h32.004c-6 0-11.627 12.002-16.002 12.002C14.285 12.002 8.594 0 2.658 0z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;content:""}[data-balloon]:hover:after,[data-balloon]:hover:before,[data-balloon][data-balloon-visible]:after,[data-balloon][data-balloon-visible]:before{filter:alpha(opactiy=100);-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";-moz-opacity:1;-khtml-opacity:1;opacity:1;pointer-events:auto}[data-balloon].font-awesome:after{font-family:FontAwesome}[data-balloon][data-balloon-break]:after{white-space:pre}[data-balloon][data-balloon-blunt]:after,[data-balloon][data-balloon-blunt]:before{transition:none}[data-balloon][data-balloon-pos=up]:after{margin-bottom:11px}[data-balloon][data-balloon-pos=up]:after,[data-balloon][data-balloon-pos=up]:before{bottom:100%;left:50%;-webkit-transform:translate(-50%,10px);transform:translate(-50%,10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up]:before{margin-bottom:5px}[data-balloon][data-balloon-pos=up]:hover:after,[data-balloon][data-balloon-pos=up]:hover:before,[data-balloon][data-balloon-pos=up][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up][data-balloon-visible]:before{-webkit-transform:translate(-50%);transform:translate(-50%)}[data-balloon][data-balloon-pos=up-left]:after{left:0;margin-bottom:11px}[data-balloon][data-balloon-pos=up-left]:after,[data-balloon][data-balloon-pos=up-left]:before{bottom:100%;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up-left]:before{left:5px;margin-bottom:5px}[data-balloon][data-balloon-pos=up-left]:hover:after,[data-balloon][data-balloon-pos=up-left]:hover:before,[data-balloon][data-balloon-pos=up-left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up-left][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=up-right]:after{right:0;margin-bottom:11px}[data-balloon][data-balloon-pos=up-right]:after,[data-balloon][data-balloon-pos=up-right]:before{bottom:100%;-webkit-transform:translateY(10px);transform:translateY(10px);-webkit-transform-origin:top;transform-origin:top}[data-balloon][data-balloon-pos=up-right]:before{right:5px;margin-bottom:5px}[data-balloon][data-balloon-pos=up-right]:hover:after,[data-balloon][data-balloon-pos=up-right]:hover:before,[data-balloon][data-balloon-pos=up-right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=up-right][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=down]:after{margin-top:11px}[data-balloon][data-balloon-pos=down]:after,[data-balloon][data-balloon-pos=down]:before{left:50%;top:100%;-webkit-transform:translate(-50%,-10px);transform:translate(-50%,-10px)}[data-balloon][data-balloon-pos=down]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17,17,17,0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;margin-top:5px}[data-balloon][data-balloon-pos=down]:hover:after,[data-balloon][data-balloon-pos=down]:hover:before,[data-balloon][data-balloon-pos=down][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down][data-balloon-visible]:before{-webkit-transform:translate(-50%);transform:translate(-50%)}[data-balloon][data-balloon-pos=down-left]:after{left:0;margin-top:11px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-left]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17,17,17,0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;left:5px;margin-top:5px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-left]:hover:after,[data-balloon][data-balloon-pos=down-left]:hover:before,[data-balloon][data-balloon-pos=down-left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down-left][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=down-right]:after{right:0;margin-top:11px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-right]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='12'%3E%3Cpath fill='rgba(17,17,17,0.9)' d='M33.342 12H1.338c6 0 11.627-12.002 16.002-12.002C21.715-.002 27.406 12 33.342 12z'/%3E%3C/svg%3E");background-size:100% auto;width:18px;height:6px;right:5px;margin-top:5px;top:100%;-webkit-transform:translateY(-10px);transform:translateY(-10px)}[data-balloon][data-balloon-pos=down-right]:hover:after,[data-balloon][data-balloon-pos=down-right]:hover:before,[data-balloon][data-balloon-pos=down-right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=down-right][data-balloon-visible]:before{-webkit-transform:translate(0);transform:translate(0)}[data-balloon][data-balloon-pos=left]:after{margin-right:11px;right:100%;top:50%;-webkit-transform:translate(10px,-50%);transform:translate(10px,-50%)}[data-balloon][data-balloon-pos=left]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17,17,17,0.9)' d='M0 33.342V1.338c0 6 12.002 11.627 12.002 16.002C12.002 21.715 0 27.406 0 33.342z'/%3E%3C/svg%3E");background-size:100% auto;width:6px;height:18px;margin-right:5px;right:100%;top:50%;-webkit-transform:translate(10px,-50%);transform:translate(10px,-50%)}[data-balloon][data-balloon-pos=left]:hover:after,[data-balloon][data-balloon-pos=left]:hover:before,[data-balloon][data-balloon-pos=left][data-balloon-visible]:after,[data-balloon][data-balloon-pos=left][data-balloon-visible]:before{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-balloon][data-balloon-pos=right]:after{left:100%;margin-left:11px;top:50%;-webkit-transform:translate(-10px,-50%);transform:translate(-10px,-50%)}[data-balloon][data-balloon-pos=right]:before{background:no-repeat url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='36'%3E%3Cpath fill='rgba(17,17,17,0.9)' d='M12 2.658v32.004c0-6-12.002-11.627-12.002-16.002C-.002 14.285 12 8.594 12 2.658z'/%3E%3C/svg%3E");background-size:100% auto;width:6px;height:18px;left:100%;margin-left:5px;top:50%;-webkit-transform:translate(-10px,-50%);transform:translate(-10px,-50%)}[data-balloon][data-balloon-pos=right]:hover:after,[data-balloon][data-balloon-pos=right]:hover:before,[data-balloon][data-balloon-pos=right][data-balloon-visible]:after,[data-balloon][data-balloon-pos=right][data-balloon-visible]:before{-webkit-transform:translateY(-50%);transform:translateY(-50%)}[data-balloon][data-balloon-length=small]:after{white-space:normal;width:80px}[data-balloon][data-balloon-length=medium]:after{white-space:normal;width:150px}[data-balloon][data-balloon-length=large]:after{white-space:normal;width:260px}[data-balloon][data-balloon-length=xlarge]:after{white-space:normal;width:380px}@media screen and (max-width:768px){[data-balloon][data-balloon-length=xlarge]:after{white-space:normal;width:90vw}}[data-balloon][data-balloon-length=fit]:after{white-space:normal;width:100%} \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index e7d3ba083..474d6a2c9 100644 --- a/docs/index.html +++ b/docs/index.html @@ -34,47 +34,47 @@ } }); - player.layers.add({ - html: '23333', - index: 999, - name: 'test', - style: { - 'color': 'red' - } - }, dom => { - console.log(dom) - }); + // player.layers.add({ + // html: '23333', + // index: 999, + // name: 'test', + // style: { + // 'color': 'red' + // } + // }, dom => { + // console.log(dom) + // }); - console.dir(Artplayer); + // console.dir(Artplayer); - console.log(player); + // console.log(player); - Artplayer.config.video.events.forEach(item => { - player.on('video:' + item, event => { - console.log('video', event); - }); - }); + // Artplayer.config.video.events.forEach(item => { + // player.on('video:' + item, event => { + // console.log('video', event); + // }); + // }); - Artplayer.config.mse.mediaSource.events.forEach(item => { - player.on('mediaSource:' + item, event => { - console.log('mediaSource', event); - }); - }); + // Artplayer.config.mse.mediaSource.events.forEach(item => { + // player.on('mediaSource:' + item, event => { + // console.log('mediaSource', event); + // }); + // }); - Artplayer.config.mse.sourceBufferList.events.forEach(item => { - player.on('sourceBuffers:' + item, event => { - console.log('sourceBuffers', event); - }); - player.on('activeSourceBuffers:' + item, event => { - console.log('activeSourceBuffers', event); - }); - }); + // Artplayer.config.mse.sourceBufferList.events.forEach(item => { + // player.on('sourceBuffers:' + item, event => { + // console.log('sourceBuffers', event); + // }); + // player.on('activeSourceBuffers:' + item, event => { + // console.log('activeSourceBuffers', event); + // }); + // }); - Artplayer.config.mse.sourceBuffer.events.forEach(item => { - player.on('sourceBuffer:' + item, event => { - console.log('sourceBuffer', event); - }); - }); + // Artplayer.config.mse.sourceBuffer.events.forEach(item => { + // player.on('sourceBuffer:' + item, event => { + // console.log('sourceBuffer', event); + // }); + // }); diff --git a/docs/js/artplayer.js b/docs/js/artplayer.js index 1d25f4c99..a8fcfffa5 100644 --- a/docs/js/artplayer.js +++ b/docs/js/artplayer.js @@ -229,13 +229,17 @@ return getExt(url.split('?')[0]); } + if (url.includes('#')) { + return getExt(url.split('#')[0]); + } + return url.trim().toLowerCase().split('.').pop(); } function append(parent, child) { if (child instanceof Element) { parent.appendChild(child); } else { - parent.innerHTML = child; + parent.insertAdjacentHTML('beforeend', child); } return parent; @@ -246,6 +250,16 @@ }); return element; } + function secondToTime(second) { + var add0 = function add0(num) { + return num < 10 ? "0".concat(num) : String(num); + }; + + var hour = Math.floor(second / 3600); + var min = Math.floor((second - hour * 3600) / 60); + var sec = Math.floor(second - hour * 3600 - min * 60); + return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':'); + } function validOption(option) { errorHandle(option.container, '\'container\' option is required.'); @@ -383,7 +397,8 @@ key: "init", value: function init() { var refs = this.art.refs; - refs.$container.innerHTML = "\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n "; + refs.$container.innerHTML = "\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n "; + refs.$player = refs.$container.querySelector('.artplayer-video-player'); refs.$video = refs.$container.querySelector('.artplayer-video'); refs.$subtitle = refs.$container.querySelector('.artplayer-subtitle'); refs.$bottom = refs.$container.querySelector('.artplayer-bottom'); @@ -461,7 +476,7 @@ value: function init() { var option = this.art.option; var $video = this.art.refs.$video; - $video.controls = true; + $video.controls = false; $video.poster = option.poster; $video.volume = clamp(option.volume, 0, 1); $video.autoplay = option.autoplay; @@ -487,11 +502,16 @@ this.art.on('video:loadeddata', function () { _this.art.loading.hide(); }); + this.art.on('video:seeking', function () { + _this.art.loading.show(); + }); this.art.on('video:canplay', function () { _this.art.controls.show(); _this.art.mask.show(); + _this.art.loading.hide(); + if (_this.art.option.autoplay) { var promise = _this.play(); @@ -503,26 +523,29 @@ } }); this.art.on('video:playing', function () { - _this.art.playing = true; + _this.art.isPlaying = true; _this.art.controls.hide(); _this.art.mask.hide(); }); this.art.on('video:pause', function () { - _this.art.playing = false; + _this.art.isPlaying = false; _this.art.controls.show(); _this.art.mask.show(); }); this.art.on('video:ended', function () { - _this.art.playing = false; + _this.art.isPlaying = false; _this.art.controls.show(); _this.art.mask.show(); }); + this.art.on('video:error', function () { + _this.art.isPlaying = false; + }); } }, { key: "play", @@ -542,7 +565,7 @@ }, { key: "toggle", value: function toggle() { - if (this.art.playing) { + if (this.art.isPlaying) { this.pause(); } else { this.play(); @@ -778,12 +801,142 @@ this.option = option; }; - var Progress = function Progress(art, option) { - classCallCheck(this, Progress); + var Progress = + /*#__PURE__*/ + function () { + function Progress(art, option) { + classCallCheck(this, Progress); - this.art = art; - this.option = option; - }; + this.art = art; + this.option = option; + this.getLoaded = this.getLoaded.bind(this); + this.getPlayed = this.getPlayed.bind(this); + this.getPos = this.getPos.bind(this); + this.set = this.set.bind(this); + this.init(); + } + + createClass(Progress, [{ + key: "init", + value: function init() { + var _this = this; + + var _this$art = this.art, + theme = _this$art.option.theme, + proxy = _this$art.events.proxy, + player = _this$art.player; + append(this.option.ref, "\n
\n
\n
\n
\n
00:00
\n
\n ")); + this.$loaded = this.option.ref.querySelector('.art-progress-loaded'); + this.$played = this.option.ref.querySelector('.art-progress-played'); + this.$indicator = this.option.ref.querySelector('.art-progress-indicator'); + this.$timer = this.option.ref.querySelector('.art-progress-timer'); + this.art.on('video:canplay', function () { + _this.set('loaded', _this.getLoaded()); + }); + this.art.on('video:progress', function () { + _this.set('loaded', _this.getLoaded()); + }); + this.art.on('video:timeupdate', function () { + _this.set('played', _this.getPlayed()); + }); + this.art.on('video:ended', function () { + _this.set('played', 1); + }); + proxy(this.option.ref, 'mousemove', function (event) { + var _this$getPos = _this.getPos(event), + width = _this$getPos.width, + time = _this$getPos.time; + + if (width <= 20) { + _this.$timer.style.left = 0; + } else if (width > _this.option.ref.clientWidth - 20) { + _this.$timer.style.left = "".concat(_this.option.ref.clientWidth - 40, "px"); + } else { + _this.$timer.style.left = "".concat(width - 20, "px"); + } + + _this.$timer.innerHTML = time; + }); + proxy(this.option.ref, 'click', function (event) { + if (event.target !== _this.$indicator) { + var _this$getPos2 = _this.getPos(event), + second = _this$getPos2.second, + percentage = _this$getPos2.percentage; + + _this.set('played', percentage); + + player.seek(second); + } + }); + this.isDroging = false; + proxy(this.$indicator, 'mousedown', function () { + _this.isDroging = true; + }); + proxy(document, 'mousemove', function (event) { + if (_this.isDroging) { + var _this$getPos3 = _this.getPos(event), + second = _this$getPos3.second, + percentage = _this$getPos3.percentage; + + _this.$indicator.classList.add('show-indicator'); + + _this.set('played', percentage); + + player.seek(second); + } + }); + proxy(document, 'mouseup', function () { + if (_this.isDroging) { + _this.isDroging = false; + + _this.$indicator.classList.remove('show-indicator'); + } + }); + } + }, { + key: "getPos", + value: function getPos(event) { + var $video = this.art.refs.$video; + + var _this$option$ref$getB = this.option.ref.getBoundingClientRect(), + left = _this$option$ref$getB.left; + + var width = event.x - left; + var second = width / this.option.ref.clientWidth * $video.duration; + var time = secondToTime(second); + var percentage = clamp(width / this.option.ref.clientWidth, 0, 1); + return { + second: second, + time: time, + width: width, + percentage: percentage + }; + } + }, { + key: "getPlayed", + value: function getPlayed() { + var $video = this.art.refs.$video; + return $video.currentTime / $video.duration; + } + }, { + key: "getLoaded", + value: function getLoaded() { + var $video = this.art.refs.$video; + return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) / $video.duration : 0; + } + }, { + key: "set", + value: function set(type, percentage) { + this["$".concat(type)].style.width = "".concat(percentage * 100, "%"); + + if (type === 'played') { + this.$indicator.style.left = "calc(".concat(percentage * 100, "% - 6.5px)"); + } + } + }]); + + return Progress; + }(); var Screenshot = function Screenshot(art, option) { classCallCheck(this, Screenshot); @@ -846,21 +999,21 @@ this.add({ control: Progress, disable: false, - html: 'Progress', + html: '', position: 'top', index: 10 }); this.add({ control: Highlight, disable: false, - html: 'Highlight', + html: '
', position: 'top', index: 20 }); this.add({ control: Screenshot, disable: false, - html: 'Screenshot', + html: '
', position: 'top', index: 30 }); @@ -1011,14 +1164,14 @@ }, { key: "show", value: function show() { - var $container = this.art.refs.$container; - $container.classList.add('controls-show'); + var $player = this.art.refs.$player; + $player.classList.add('controls-show'); } }, { key: "hide", value: function hide() { - var $container = this.art.refs.$container; - $container.classList.remove('controls-show'); + var $player = this.art.refs.$player; + $player.classList.remove('controls-show'); } }]); @@ -1062,9 +1215,9 @@ _this.hide(); } }); - proxy(refs.$container, 'contextmenu', function (event) { + proxy(refs.$player, 'contextmenu', function (event) { event.preventDefault(); - _this.art.focus = true; + _this.art.isFocus = true; if (!refs.$contextmenu) { _this.creatMenu(); @@ -1074,7 +1227,7 @@ _this.setPos(event); }); - proxy(refs.$container, 'click', function (event) { + proxy(refs.$player, 'click', function (event) { if (refs.$contextmenu && !event.path.includes(refs.$contextmenu)) { _this.hide(); } @@ -1111,7 +1264,7 @@ append(refs.$contextmenu, $menu); }); - append(refs.$container, refs.$contextmenu); + append(refs.$player, refs.$contextmenu); } }, { key: "setPos", @@ -1120,11 +1273,11 @@ var mouseX = event.clientX; var mouseY = event.clientY; - var _refs$$container$getB = refs.$container.getBoundingClientRect(), - cHeight = _refs$$container$getB.height, - cWidth = _refs$$container$getB.width, - cLeft = _refs$$container$getB.left, - cTop = _refs$$container$getB.top; + var _refs$$player$getBoun = refs.$player.getBoundingClientRect(), + cHeight = _refs$$player$getBoun.height, + cWidth = _refs$$player$getBoun.width, + cLeft = _refs$$player$getBoun.left, + cTop = _refs$$player$getBoun.top; var _refs$$contextmenu$ge = refs.$contextmenu.getBoundingClientRect(), mHeight = _refs$$contextmenu$ge.height, @@ -1342,11 +1495,24 @@ createClass(Events, [{ key: "proxy", value: function proxy(target, name, callback) { + var _this = this; + var option = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + + if (Array.isArray(name)) { + name.forEach(function (item) { + return _this.proxy(target, item, callback, option); + }); + } + target.addEventListener(name, callback, option); - this.destroyEvents.push(function () { + + var destroy = function destroy() { target.removeEventListener(name, callback, option); - }); + }; + + this.destroyEvents.push(destroy); + return destroy; } }, { key: "destroy", @@ -1382,13 +1548,13 @@ player = _this$art.player, notice = _this$art.notice, i18n = _this$art.i18n, - $container = _this$art.refs.$container, + $player = _this$art.refs.$player, proxy = _this$art.events.proxy; proxy(document, 'click', function (event) { - _this.art.focus = event.path.indexOf($container) > -1; + _this.art.isFocus = event.path.indexOf($player) > -1; }); proxy(window, 'keydown', function (event) { - if (_this.art.focus) { + if (_this.art.isFocus) { var tag = document.activeElement.tagName.toUpperCase(); var editable = document.activeElement.getAttribute('contenteditable'); @@ -1678,8 +1844,8 @@ createClass(Artplayer, [{ key: "init", value: function init() { - this.focus = false; - this.playing = false; + this.isFocus = false; + this.isPlaying = false; this.refs = {}; if (this.option.container instanceof Element) { @@ -1688,7 +1854,6 @@ this.refs.$container = document.querySelector(this.option.container); } - this.refs.$container.classList.add('artplayer-container'); this.template = new Template(this); this.i18n = new I18n(this); this.events = new Events(this); @@ -1712,7 +1877,6 @@ key: "destroy", value: function destroy() { this.events.destroy(); - this.refs.$container.classList.remove('artplayer-container'); this.refs.$container.innerHTML = ''; instances.splice(instances.indexOf(this), 1); this.emit('destroy'); @@ -1763,7 +1927,7 @@ layers: [], contextmenu: [], loading: '', - theme: '#1aafff', + theme: '#f00', hotkey: true, subtitle: { url: '', diff --git a/docs/js/artplayer.js.map b/docs/js/artplayer.js.map index 67a9818c8..018609a8f 100644 --- a/docs/js/artplayer.js.map +++ b/docs/js/artplayer.js.map @@ -1 +1 @@ -{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/ArtPlayerError.js","../../src/utils/index.js","../../src/verification/player.js","../../src/config/mimeCodec.js","../../src/config/mse.js","../../src/config/video.js","../../src/config/index.js","../../node_modules/tiny-emitter/index.js","../../src/template.js","../../src/i18n.js","../../src/player.js","../../src/mse.js","../../src/verification/control.js","../../src/controls/danmu.js","../../src/controls/fullscreen.js","../../src/controls/highlight.js","../../src/controls/pip.js","../../src/controls/playAndPause.js","../../src/controls/progress.js","../../src/controls/screenshot.js","../../src/controls/subtitle.js","../../src/controls/time.js","../../src/controls/volume.js","../../src/controls/setting.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmu.js","../../src/info.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/icons/index.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","export default class ArtPlayerError extends Error {\n constructor(message, context) {\n super(message);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, context || this.constructor);\n }\n this.name = 'ArtPlayerError';\n }\n}\n","import ArtPlayerError from './ArtPlayerError';\n\nexport function errorHandle(condition, msg) {\n if (!condition) {\n throw new ArtPlayerError(msg);\n }\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function getExt(url) {\n if (url.includes('?')) {\n return getExt(url.split('?')[0]);\n }\n\n return url\n .trim()\n .toLowerCase()\n .split('.')\n .pop();\n}\n\n\nexport function append(parent, child) {\n if (child instanceof Element) {\n parent.appendChild(child);\n } else {\n parent.innerHTML = child;\n }\n return parent;\n}\n\nexport function setStyle(element, styles) {\n Object.keys(styles).forEach(key => {\n element.style[key] = styles[key];\n });\n return element;\n}\n","import { errorHandle } from '../utils';\n\nexport default function validOption(option) {\n errorHandle(\n option.container,\n '\\'container\\' option is required.'\n );\n\n errorHandle(\n option.url,\n '\\'url\\' option is required.'\n );\n\n errorHandle(\n typeof option.container === 'string' || option.container instanceof Element,\n `'container' option require 'string' or 'Element' type, but got '${typeof option.container}'.`\n );\n\n errorHandle(\n typeof option.url === 'string',\n `'url' option require 'string' type, but got '${typeof option.url}'.`\n );\n\n errorHandle(\n typeof option.poster === 'string',\n `'poster' option require 'string' type, but got '${typeof option.poster}'.`\n );\n\n errorHandle(\n typeof option.volume === 'number',\n `'volume' option require 'number' type, but got '${typeof option.volume}'.`\n );\n\n errorHandle(\n typeof option.autoplay === 'boolean',\n `'autoplay' option require 'boolean' type, but got '${typeof option.autoplay}'.`\n );\n\n errorHandle(\n ['none', 'metadata', 'auto'].indexOf(option.preload) > -1,\n `'preload' option require one of 'none、metadata、auto', but got '${option.preload}.`\n );\n\n errorHandle(\n typeof option.lang === 'string',\n `'lang' option require 'string' type, but got '${typeof option.lang}'.`\n );\n\n errorHandle(\n typeof option.type === 'string',\n `'type' option require 'string' type, but got '${typeof option.type}'.`\n );\n\n errorHandle(\n typeof option.mimeCodec === 'string',\n `'mimeCodec' option require 'string' type, but got '${typeof option.mimeCodec}'.`\n );\n\n errorHandle(\n Array.isArray(option.layers),\n `'layers' option require 'array' type, but got '${typeof option.layers}'.`\n );\n\n errorHandle(\n Array.isArray(option.contextmenu),\n `'contextmenu' option require 'array' type, but got '${typeof option.contextmenu}'.`\n );\n\n errorHandle(\n typeof option.loading === 'string' || option.loading instanceof Element,\n `'loading' option require 'string' type, but got '${typeof option.loading}'.`\n );\n\n errorHandle(\n typeof option.theme === 'string',\n `'theme' option require 'string' type, but got '${typeof option.theme}'.`\n );\n\n errorHandle(\n typeof option.hotkey === 'boolean',\n `'hotkey' option require 'boolean' type, but got '${typeof option.hotkey}'.`\n );\n\n errorHandle(\n Object.prototype.toString.call(option.subtitle) === '[object Object]',\n `'subtitle' option require 'object' type, but got '${typeof option.subtitle}'.`\n );\n\n errorHandle(\n Array.isArray(option.controls),\n `'controls' option require 'array' type, but got '${typeof option.controls}'.`\n );\n}\n","export default {\n mp4: 'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"',\n webm: 'video/webm; codecs=\"vorbis, vp8\"',\n ts: 'video/mp2t; codecs=\"avc1.42E01E, mp4a.40.2\"'\n};\n","export default {\n mediaSource: {\n propertys: [\n 'activeSourceBuffers',\n 'duration',\n 'readyState',\n 'sourceBuffers'\n ],\n methods: [\n 'addSourceBuffer',\n 'endOfStream',\n 'removeSourceBuffer',\n 'clearLiveSeekableRange',\n 'setLiveSeekableRange'\n ],\n events: [\n 'sourceclose',\n 'sourceended',\n 'sourceopen'\n ]\n },\n sourceBuffer: {\n propertys: [\n 'mode',\n 'updating',\n 'buffered',\n 'timestampOffset',\n 'audioTracks',\n 'videoTracks',\n 'textTracks',\n 'appendWindowStart',\n 'appendWindowEnd',\n 'trackDefaults'\n ],\n methods: [\n 'appendBuffer',\n 'appendStream',\n 'abort',\n 'remove'\n ],\n events: [\n 'abort',\n 'error',\n 'update',\n 'updateend',\n 'updatestart'\n ]\n },\n sourceBufferList: {\n propertys: [\n 'length'\n ],\n events: [\n 'addsourcebuffer',\n 'removesourcebuffer'\n ]\n }\n};\n","export default {\n propertys: [\n 'audioTracks',\n 'autoplay',\n 'buffered',\n 'controller',\n 'controls',\n 'crossOrigin',\n 'currentSrc',\n 'currentTime',\n 'defaultMuted',\n 'defaultPlaybackRate',\n 'duration',\n 'ended',\n 'error',\n 'loop',\n 'mediaGroup',\n 'muted',\n 'networkState',\n 'paused',\n 'playbackRate',\n 'played',\n 'preload',\n 'readyState',\n 'seekable',\n 'seeking',\n 'src',\n 'startDate',\n 'textTracks',\n 'videoTracks',\n 'volume'\n ],\n methods: [\n 'addTextTrack',\n 'canPlayType',\n 'load',\n 'play',\n 'pause'\n ],\n events: [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting'\n ]\n};\n","import mimeCodec from './mimeCodec';\nimport mse from './mse';\nimport video from './video';\n\nexport default {\n mimeCodec,\n mse,\n video\n};\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","export default class Template {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { refs } = this.art;\n refs.$container.innerHTML = `\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `;\n refs.$video = refs.$container.querySelector('.artplayer-video');\n refs.$subtitle = refs.$container.querySelector('.artplayer-subtitle');\n refs.$bottom = refs.$container.querySelector('.artplayer-bottom');\n refs.$progress = refs.$container.querySelector('.artplayer-progress');\n refs.$controls = refs.$container.querySelector('.artplayer-controls');\n refs.$controlsLeft = refs.$container.querySelector('.artplayer-controls-left');\n refs.$controlsRight = refs.$container.querySelector('.artplayer-controls-right');\n refs.$layers = refs.$container.querySelector('.artplayer-layers');\n refs.$loading = refs.$container.querySelector('.artplayer-loading');\n refs.$notice = refs.$container.querySelector('.artplayer-notice');\n refs.$mask = refs.$container.querySelector('.artplayer-mask');\n }\n}\n","const i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭',\n 'Video load failed': '视频加载失败',\n 'Fast forward 10 seconds': '快进10秒',\n 'Rewind 10 seconds': '快退10秒',\n '10% increase in volume': '音量增加10%',\n '10% reduction in volume': '音量减少10%'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉',\n 'Video load failed': '影片載入失敗',\n 'Fast forward 10 seconds': '快進10秒',\n 'Rewind 10 seconds': '快退10秒',\n '10% increase in volume': '音量增加10%',\n '10% reduction in volume': '音量減少10%'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.language = i18nMap[option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n}\n","import { clamp } from './utils';\nimport config from './config';\n\nexport default class Player {\n constructor(art) {\n this.art = art;\n this.init();\n this.eventBind();\n }\n\n init() {\n const { option } = this.art;\n const { $video } = this.art.refs;\n $video.controls = true;\n $video.poster = option.poster;\n $video.volume = clamp(option.volume, 0, 1);\n $video.autoplay = option.autoplay;\n $video.preload = option.preload;\n $video.src = option.url;\n }\n\n eventBind() {\n const { events: { proxy }, refs: { $video } } = this.art;\n\n config.video.events.forEach(eventName => {\n proxy($video, eventName, event => {\n this.art.emit(`video:${event.type}`, event);\n });\n });\n\n this.art.on('video:loadstart', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:loadeddata', () => {\n this.art.loading.hide();\n });\n\n this.art.on('video:canplay', () => {\n this.art.controls.show();\n this.art.mask.show();\n if (this.art.option.autoplay) {\n const promise = this.play();\n if (promise !== undefined) {\n promise.then().catch(err => {\n console.warn(err);\n });\n }\n }\n });\n\n this.art.on('video:playing', () => {\n this.art.playing = true;\n this.art.controls.hide();\n this.art.mask.hide();\n });\n\n this.art.on('video:pause', () => {\n this.art.playing = false;\n this.art.controls.show();\n this.art.mask.show();\n });\n\n this.art.on('video:ended', () => {\n this.art.playing = false;\n this.art.controls.show();\n this.art.mask.show();\n });\n }\n\n play() {\n const { $video } = this.art.refs;\n const promise = $video.play();\n this.art.emit('play', $video);\n return promise;\n }\n\n pause() {\n const { $video } = this.art.refs;\n $video.pause();\n this.art.emit('pause', $video);\n }\n\n toggle() {\n if (this.art.playing) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n seek(time) {\n const { $video } = this.art.refs;\n let newTime = Math.max(time, 0);\n if ($video.duration) {\n newTime = Math.min(newTime, $video.duration);\n }\n\n $video.currentTime = newTime;\n this.art.emit('seek', newTime);\n }\n\n currentTime() {\n return this.art.refs.$video.currentTime;\n }\n\n volume(percentage) {\n const { $video } = this.art.refs;\n if (percentage) {\n $video.volume = clamp(percentage, 0, 1);\n }\n this.art.emit('volume', $video.volume);\n }\n\n switchVolumeIcon() {\n //\n }\n\n switchVideo() {\n //\n }\n\n switchQuality() {\n //\n }\n\n resize() {\n //\n }\n\n speed(rate) {\n const { $video } = this.art.refs;\n $video.playbackRate = rate;\n this.art.emit('speed', rate);\n }\n}\n","import ArtPlayerError from './utils/ArtPlayerError';\nimport { errorHandle, getExt } from './utils';\nimport config from './config';\n\nexport default class Mse {\n constructor(art) {\n this.art = art;\n this.setMimeCodec();\n this.init();\n this.eventBind();\n this.eventStart();\n this.repeat = 0;\n this.maxRepeat = 5;\n }\n\n setMimeCodec() {\n const { option } = this.art;\n if (!option.type) {\n const type = getExt(option.url);\n errorHandle(\n Object.keys(config.mimeCodec).includes(type),\n `Can't find video's type '${type}' from '${option.url}'`\n );\n option.type = type;\n }\n\n if (!option.mimeCodec) {\n const mimeCodec = config.mimeCodec[option.type];\n errorHandle(\n mimeCodec,\n `Can't find video's mimeCodec from ${option.type}`\n );\n option.mimeCodec = mimeCodec;\n }\n }\n\n init() {\n const {\n option,\n refs: { $video }\n } = this.art;\n errorHandle(\n MediaSource.isTypeSupported(option.mimeCodec),\n `Unsupported MIME type or codec: ${option.mimeCodec}`\n );\n this.mediaSource = new MediaSource();\n $video.src = URL.createObjectURL(this.mediaSource);\n this.art.events.destroyEvents.push(() => {\n URL.revokeObjectURL($video.src);\n });\n }\n\n eventBind() {\n const { proxy } = this.art.events;\n const { mediaSource, sourceBufferList } = config.mse;\n\n mediaSource.events.forEach(eventName => {\n proxy(this.mediaSource, eventName, event => {\n this.art.emit(`mediaSource:${event.type}`, event);\n });\n });\n\n sourceBufferList.events.forEach(eventName => {\n proxy(this.mediaSource.sourceBuffers, eventName, event => {\n this.art.emit(`sourceBuffers:${event.type}`, event);\n });\n proxy(this.mediaSource.activeSourceBuffers, eventName, event => {\n this.art.emit(`activeSourceBuffers:${event.type}`, event);\n });\n });\n }\n\n eventStart() {\n const { option } = this.art;\n const { proxy } = this.art.events;\n const { sourceBuffer } = config.mse;\n\n this.art.on('mediaSource:sourceopen', () => {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(option.mimeCodec);\n sourceBuffer.events.forEach(eventName => {\n proxy(this.sourceBuffer, eventName, event => {\n this.art.emit(`sourceBuffer:${event.type}`, event);\n });\n });\n });\n\n this.art.on('sourceBuffer:updateend', () => {\n this.mediaSource.endOfStream();\n });\n\n this.fetchUrl();\n }\n\n fetchUrl() {\n const { option: { url }, notice, i18n, loading } = this.art;\n this.art.emit('player:fetch:start', url);\n this.request(url)\n .then(response => {\n this.sourceBuffer.appendBuffer(response);\n this.art.emit('player:fetch:success', url);\n })\n .catch(err => {\n if (this.repeat++ < this.maxRepeat) {\n this.fetchUrl();\n } else {\n notice.show(i18n.get('Video load failed'));\n console.warn(err);\n loading.hide();\n this.art.emit('player:fetch:failure', url);\n }\n });\n }\n\n request(url) {\n return fetch(url)\n .then(response => response.arrayBuffer())\n .catch(err => {\n throw new ArtPlayerError(err.message);\n });\n }\n}\n","import { errorHandle } from '../utils';\n\nexport default function validControl(option) {\n errorHandle(\n typeof option.control === 'function',\n `'control' option require 'function' type, but got '${typeof option.control}'.`\n );\n\n errorHandle(\n typeof option.disable === 'boolean',\n `'disable' option require 'boolean' type, but got '${typeof option.disable}'.`\n );\n\n errorHandle(\n typeof option.html === 'string' || option.html instanceof Element,\n `'html' option require 'string' or 'Element' type, but got '${typeof option.html}'.`\n );\n\n errorHandle(\n ['top', 'left', 'right'].indexOf(option.position) > -1,\n `'position' option require one of 'top、left、right', but got '${option.position}'.`\n );\n\n errorHandle(\n typeof option.index === 'number',\n `'index' option require 'number' type, but got '${typeof option.index}'.`\n );\n}\n","export default class Danmu {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Fullscreen {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Highlight {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Pip {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class PlayAndPause {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Progress {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Screenshot {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Subtitle {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Time {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Volume {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Setting {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","import { append, setStyle } from '../utils';\nimport validControl from '../verification/control';\nimport Danmu from './danmu';\nimport Fullscreen from './fullscreen';\nimport Highlight from './highlight';\nimport Pip from './pip';\nimport PlayAndPause from './playAndPause';\nimport Progress from './progress';\nimport Screenshot from './screenshot';\nimport Subtitle from './subtitle';\nimport Time from './time';\nimport Volume from './volume';\nimport Setting from './setting';\n\nlet id = 0;\nexport default class Controls {\n constructor(art) {\n this.art = art;\n this.$map = {\n top: [],\n left: [],\n right: []\n };\n this.init();\n this.mount();\n }\n\n init() {\n this.add({\n control: Progress,\n disable: false,\n html: 'Progress',\n position: 'top',\n index: 10\n });\n\n this.add({\n control: Highlight,\n disable: false,\n html: 'Highlight',\n position: 'top',\n index: 20\n });\n\n this.add({\n control: Screenshot,\n disable: false,\n html: 'Screenshot',\n position: 'top',\n index: 30\n });\n\n this.add({\n control: PlayAndPause,\n disable: false,\n html: 'PlayAndPause',\n tooltip: 'PlayAndPause',\n position: 'left',\n index: 10\n });\n\n this.add({\n control: Volume,\n disable: false,\n html: 'Volume',\n tooltip: 'Volume',\n position: 'left',\n index: 20\n });\n\n this.add({\n control: Time,\n disable: false,\n html: 'Time',\n tooltip: 'Volume',\n position: 'left',\n index: 30\n });\n\n this.add({\n control: Danmu,\n disable: false,\n html: 'Danmu',\n tooltip: 'Danmu',\n position: 'right',\n index: 10\n });\n\n this.add({\n control: Subtitle,\n disable: false,\n html: 'Subtitle',\n tooltip: 'Subtitle',\n position: 'right',\n index: 20\n });\n\n this.add({\n control: Setting,\n disable: false,\n html: 'Setting',\n tooltip: 'Setting',\n position: 'right',\n index: 30\n });\n\n this.add({\n control: Pip,\n disable: false,\n html: 'Pip',\n tooltip: 'Pip',\n position: 'right',\n index: 40\n });\n\n this.add({\n control: Fullscreen,\n disable: false,\n html: 'Fullscreen',\n tooltip: 'Fullscreen',\n position: 'right',\n index: 50\n });\n\n this.art.option.controls.forEach(item => {\n this.add(item);\n });\n }\n\n add(option) {\n validControl(option);\n if (!option.disable) {\n id++;\n const name = option.control.name.toLowerCase() || `control${id}`;\n const $control = document.createElement('div');\n $control.setAttribute('class', `art-control art-control-${name}`);\n $control.setAttribute('data-control-index', String(option.index) || id);\n setStyle($control, option.style || {});\n append($control, option.html);\n option.ref = $control;\n this.commonMethod(option);\n this[name] = new option.control(this.art, option);\n this.$map[option.position].push($control);\n }\n }\n\n mount() {\n const { $progress, $controlsLeft, $controlsRight } = this.art.refs;\n Object.keys(this.$map).forEach(key => {\n this.$map[key]\n .sort(\n (a, b) =>\n Number(a.dataset.controlIndex) - Number(b.dataset.controlIndex)\n )\n .forEach($control => {\n switch (key) {\n case 'top':\n $progress.appendChild($control);\n break;\n case 'left':\n $controlsLeft.appendChild($control);\n break;\n case 'right':\n $controlsRight.appendChild($control);\n break;\n default:\n break;\n }\n });\n });\n }\n\n commonMethod(option) {\n Object.defineProperty(option.control.prototype, 'hide', {\n value: () => {\n option.ref.style.display = 'none';\n this.art.emit('control:hide', option.ref);\n }\n });\n\n Object.defineProperty(option.control.prototype, 'show', {\n value: () => {\n option.ref.style.display =\n option.position === 'top' ? 'block' : 'inline-block';\n this.art.emit('control:show', option.ref);\n }\n });\n\n Object.defineProperty(option.control.prototype, 'addMenu', {\n value: menus => {\n console.log(menus);\n }\n });\n }\n\n show() {\n const { $container } = this.art.refs;\n $container.classList.add('controls-show');\n }\n\n hide() {\n const { $container } = this.art.refs;\n $container.classList.remove('controls-show');\n }\n}\n","import { append } from './utils';\n\nexport default class Contextmenu {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n option,\n i18n,\n refs,\n events: { proxy }\n } = this.art;\n\n option.contextmenu.push(\n {\n text: i18n.get('Video info'),\n click: () => {\n this.art.info.show();\n }\n },\n {\n text: i18n.get('About author'),\n link: 'https://github.com/zhw2590582'\n },\n {\n text: 'ArtPlayer __VERSION__',\n link: 'https://github.com/zhw2590582/artplayer'\n },\n {\n text: i18n.get('Close'),\n click: () => {\n this.hide();\n }\n }\n );\n\n proxy(refs.$container, 'contextmenu', event => {\n event.preventDefault();\n this.art.focus = true;\n if (!refs.$contextmenu) {\n this.creatMenu();\n }\n this.show();\n this.setPos(event);\n });\n\n proxy(refs.$container, 'click', event => {\n if (refs.$contextmenu && !event.path.includes(refs.$contextmenu)) {\n this.hide();\n }\n });\n }\n\n creatMenu() {\n const {\n option,\n refs,\n events: { proxy }\n } = this.art;\n refs.$contextmenu = document.createElement('div');\n refs.$contextmenu.classList.add('artplayer-contextmenu');\n option.contextmenu.forEach(item => {\n const $menu = document.createElement('a');\n $menu.innerHTML = item.text;\n $menu.classList.add('art-menu');\n if (item.link) {\n $menu.target = '_blank';\n $menu.href = item.link;\n } else if (item.click) {\n $menu.href = '#';\n proxy($menu, 'click', event => {\n event.preventDefault();\n item.click(this.art, event);\n this.hide();\n });\n }\n append(refs.$contextmenu, $menu);\n });\n append(refs.$container, refs.$contextmenu);\n }\n\n setPos(event) {\n const { refs } = this.art;\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = refs.$container.getBoundingClientRect();\n const { height: mHeight, width: mWidth } = refs.$contextmenu.getBoundingClientRect();\n let menuLeft = mouseX - cLeft;\n let menuTop = mouseY - cTop;\n\n if (mouseX + mWidth > cLeft + cWidth) {\n menuLeft = cWidth - mWidth;\n }\n\n if (mouseY + mHeight > cTop + cHeight) {\n menuTop = cHeight - mHeight;\n }\n\n refs.$contextmenu.style.left = `${menuLeft}px`;\n refs.$contextmenu.style.top = `${menuTop}px`;\n }\n\n hide() {\n const { refs: { $contextmenu } } = this.art;\n if ($contextmenu) {\n $contextmenu.style.display = 'none';\n this.art.emit('contextmenu:hide', $contextmenu);\n }\n }\n\n show() {\n const { refs: { $contextmenu } } = this.art;\n if ($contextmenu) {\n $contextmenu.style.display = 'block';\n this.art.emit('contextmenu:show', $contextmenu);\n }\n }\n}\n","export default class Danmu {\n constructor(art) {\n this.art = art;\n }\n}\n","export default class Info {\n constructor(art) {\n this.art = art;\n }\n\n show() {\n console.log('info show');\n }\n\n hide() {\n console.log('info hide');\n }\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","import { errorHandle, getExt, setStyle } from './utils';\n\nexport default class Subtitle {\n constructor(art) {\n this.art = art;\n if (this.art.option.subtitle) {\n errorHandle(\n getExt(this.art.option.subtitle.url) === 'vtt',\n `'url' option require 'vtt' format, but got '${getExt(this.art.option.subtitle.url)}'.`\n );\n this.init();\n }\n }\n\n init() {\n const {\n events: { proxy },\n option: { subtitle },\n refs: { $video, $subtitle }\n } = this.art;\n\n setStyle($subtitle, subtitle.style || {});\n const $track = document.createElement('track');\n $track.default = true;\n $track.kind = 'metadata';\n $track.src = subtitle.url;\n $video.appendChild($track);\n this.art.refs.$track = $track;\n\n if ($video.textTracks && $video.textTracks[0]) {\n const [track] = $video.textTracks;\n proxy(track, 'cuechange', () => {\n const [cue] = track.activeCues;\n $subtitle.innerHTML = '';\n if (cue) {\n const template = document.createElement('div');\n template.appendChild(cue.getCueAsHTML());\n $subtitle.innerHTML = template.innerHTML\n .split(/\\r?\\n/)\n .map(item => `

${item}

`)\n .join('');\n }\n this.art.emit('subtitle:update', $subtitle);\n });\n }\n }\n\n show() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'block';\n this.art.emit('subtitle:show', $subtitle);\n }\n\n hide() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'none';\n this.art.emit('subtitle:hide', $subtitle);\n }\n\n switch(url) {\n const { $track } = this.art.refs;\n errorHandle(\n getExt(url) === 'vtt',\n `'url' option require 'vtt' format, but got '${getExt(url)}'.`\n );\n errorHandle(\n $track,\n 'You need to initialize the subtitle option first.'\n );\n $track.src = url;\n this.art.emit('subtitle:switch', url);\n }\n}\n","export default class Events {\n constructor(art) {\n this.art = art;\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n }\n\n proxy(target, name, callback, option = {}) {\n target.addEventListener(name, callback, option);\n this.destroyEvents.push(() => {\n target.removeEventListener(name, callback, option);\n });\n }\n\n destroy() {\n this.destroyEvents.forEach(event => event());\n }\n}\n","export default class Hotkey {\n constructor(art) {\n this.art = art;\n if (this.art.option.hotkey) {\n this.init();\n }\n }\n\n init() {\n const {\n player,\n notice,\n i18n,\n refs: { $container },\n events: { proxy }\n } = this.art;\n\n proxy(document, 'click', event => {\n this.art.focus = event.path.indexOf($container) > -1;\n });\n\n proxy(window, 'keydown', event => {\n if (this.art.focus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (\n tag !== 'INPUT' &&\n tag !== 'TEXTAREA' &&\n editable !== '' &&\n editable !== 'true'\n ) {\n let percentage;\n switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n notice.show(i18n.get('Fast forward 10 seconds'), true);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n notice.show(i18n.get('Rewind 10 seconds'), true);\n break;\n case 38:\n event.preventDefault();\n percentage = player.volume() + 0.1;\n player.volume(percentage);\n notice.show(i18n.get('10% increase in volume'), true);\n break;\n case 40:\n event.preventDefault();\n percentage = player.volume() - 0.1;\n player.volume(percentage);\n notice.show(i18n.get('10% reduction in volume'), true);\n break;\n case 32:\n event.preventDefault();\n player.toggle();\n break;\n default:\n break;\n }\n }\n }\n });\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Layers {\n constructor(art) {\n this.art = art;\n this.add = this.add.bind(this);\n this.art.option.layers.forEach(this.add);\n this.init();\n }\n\n init() {\n const { refs, player, events: { proxy } } = this.art;\n proxy(refs.$layers, 'click', event => {\n if (event.path[0] === refs.$layers) {\n player.pause();\n }\n });\n }\n\n add(option, callback) {\n const { refs } = this.art;\n id++;\n\n const $layer = document.createElement('div');\n $layer.setAttribute('data-art-layer-id', id);\n $layer.setAttribute('class', `art-layer art-layer-${option.name || id}`);\n $layer.style.zIndex = option.index || id;\n append($layer, option.html);\n setStyle($layer, option.style || {});\n refs.$layers.appendChild($layer);\n this.art.emit('layers:add', $layer);\n callback && callback($layer);\n }\n\n show() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'block';\n this.art.emit('layers:show', $layers);\n }\n\n hide() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'none';\n this.art.emit('layers:hide', $layers);\n }\n}\n","import loading from './loading.svg';\nimport play from './play.svg';\n\nconst icons = {\n loading,\n play\n};\n\nfunction creatDomFromSvg(map) {\n const result = {};\n Object.keys(map).forEach(name => {\n const tmp = document.createElement('div');\n tmp.innerHTML = `${map[name]}`;\n [result[name]] = tmp.childNodes;\n });\n return result;\n}\n\nexport default creatDomFromSvg(icons);\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Loading {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { option, refs: { $loading } } = this.art;\n append($loading, option.loading || icons.loading);\n }\n\n hide() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'none';\n this.art.emit('loading:hide', $loading);\n }\n\n show() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'flex';\n this.art.emit('loading:show', $loading);\n }\n}\n","export default class Notice {\n constructor(art) {\n this.art = art;\n this.timer = null;\n }\n\n show(msg, autoHide) {\n const { $notice } = this.art.refs;\n $notice.style.display = 'block';\n $notice.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n if (autoHide) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.hide();\n }, 1000);\n }\n this.art.emit('notice:show', $notice);\n }\n\n hide() {\n const { $notice } = this.art.refs;\n $notice.style.display = 'none';\n this.art.emit('notice:hide', $notice);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Mask {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n player,\n option,\n refs,\n events: { proxy }\n } = this.art;\n\n icons.play.style.backgroundColor = option.theme;\n append(refs.$mask, icons.play);\n\n proxy(refs.$mask, 'click', () => {\n player.play();\n this.hide();\n });\n }\n\n show() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'flex';\n this.art.emit('mask:show', $mask);\n }\n\n hide() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'none';\n this.art.emit('mask:show', $mask);\n }\n}\n","import './style/index.scss';\nimport 'balloon-css/balloon.min.css';\nimport validOption from './verification/player';\nimport config from './config';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\nimport Mse from './mse';\nimport Controls from './controls';\nimport Contextmenu from './contextmenu';\nimport Danmu from './danmu';\nimport Info from './info';\nimport Subtitle from './subtitle';\nimport Events from './events';\nimport Hotkey from './hotkey';\nimport Layers from './layers';\nimport Loading from './loading';\nimport Notice from './notice';\nimport Mask from './mask';\n\nlet id = 0;\nexport const instances = [];\n\nclass Artplayer extends Emitter {\n constructor(option) {\n super();\n this.emit('init:start');\n this.option = Object.assign({}, Artplayer.DEFAULTS, option);\n validOption(this.option);\n this.init();\n this.emit('init:end');\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get config() {\n return config;\n }\n\n static get DEFAULTS() {\n return {\n container: '.artplayer',\n url: '',\n poster: '',\n volume: 0.7,\n autoplay: false,\n preload: 'auto',\n type: '',\n mimeCodec: '',\n layers: [],\n contextmenu: [],\n loading: '',\n theme: '#1aafff',\n hotkey: true,\n subtitle: {\n url: '',\n style: {}\n },\n controls: [],\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(plugin) {\n const installedPlugins = this.plugins || (this.plugins = []);\n if (installedPlugins.indexOf(plugin) > -1) {\n return this;\n }\n\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this;\n }\n\n init() {\n this.focus = false;\n this.playing = false;\n this.refs = {};\n\n if (this.option.container instanceof Element) {\n this.refs.$container = this.option.container;\n } else {\n this.refs.$container = document.querySelector(this.option.container);\n }\n this.refs.$container.classList.add('artplayer-container');\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.events = new Events(this);\n this.player = new Player(this);\n // this.mse = new Mse(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmu = new Danmu(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.loading = new Loading(this);\n this.notice = new Notice(this);\n this.hotkey = new Hotkey(this);\n this.mask = new Mask(this);\n\n this.id = id++;\n instances.push(this);\n return this;\n }\n\n destroy() {\n this.events.destroy();\n this.refs.$container.classList.remove('artplayer-container');\n this.refs.$container.innerHTML = '';\n instances.splice(instances.indexOf(this), 1);\n this.emit('destroy');\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","clamp","num","a","b","Math","max","min","getExt","url","includes","split","trim","toLowerCase","pop","append","parent","child","Element","appendChild","innerHTML","setStyle","element","styles","Object","keys","forEach","key","style","validOption","option","container","poster","volume","autoplay","indexOf","preload","lang","type","mimeCodec","Array","isArray","layers","contextmenu","loading","theme","hotkey","prototype","toString","call","subtitle","controls","mp4","webm","ts","mediaSource","propertys","methods","events","sourceBuffer","sourceBufferList","mse","video","Template","art","init","refs","$container","$video","querySelector","$subtitle","$bottom","$progress","$controls","$controlsLeft","$controlsRight","$layers","$loading","$notice","$mask","i18nMap","I18n","language","Player","eventBind","src","proxy","config","eventName","event","emit","on","show","hide","mask","promise","play","undefined","then","catch","err","console","warn","playing","pause","time","newTime","duration","currentTime","percentage","rate","playbackRate","Mse","setMimeCodec","eventStart","repeat","maxRepeat","MediaSource","isTypeSupported","URL","createObjectURL","destroyEvents","push","revokeObjectURL","sourceBuffers","activeSourceBuffers","addSourceBuffer","endOfStream","fetchUrl","notice","i18n","request","response","appendBuffer","get","fetch","arrayBuffer","validControl","control","disable","html","position","index","Danmu","Fullscreen","Highlight","Pip","PlayAndPause","Progress","Screenshot","Subtitle","Time","Volume","Setting","id","Controls","$map","top","left","right","mount","add","tooltip","item","$control","document","createElement","setAttribute","String","ref","commonMethod","sort","Number","dataset","controlIndex","defineProperty","value","display","menus","log","classList","remove","Contextmenu","text","click","info","link","preventDefault","focus","$contextmenu","creatMenu","setPos","path","$menu","target","href","mouseX","clientX","mouseY","clientY","getBoundingClientRect","cHeight","height","cWidth","width","cLeft","cTop","mHeight","mWidth","menuLeft","menuTop","Info","$track","default","kind","textTracks","track","activeCues","cue","template","getCueAsHTML","map","join","Events","bind","callback","addEventListener","removeEventListener","Hotkey","player","window","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","seek","toggle","Layers","$layer","zIndex","icons","creatDomFromSvg","result","tmp","childNodes","Loading","Notice","timer","autoHide","clearTimeout","setTimeout","Mask","backgroundColor","instances","Artplayer","assign","DEFAULTS","danmu","destroy","splice","plugin","installedPlugins","plugins","args","from","arguments","slice","unshift","install","apply","navigator","Emitter"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/classCallCheck.js","../../node_modules/@babel/runtime/helpers/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/inherits.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/ArtPlayerError.js","../../src/utils/index.js","../../src/verification/player.js","../../src/config/mimeCodec.js","../../src/config/mse.js","../../src/config/video.js","../../src/config/index.js","../../node_modules/tiny-emitter/index.js","../../src/template.js","../../src/i18n.js","../../src/player.js","../../src/mse.js","../../src/verification/control.js","../../src/controls/danmu.js","../../src/controls/fullscreen.js","../../src/controls/highlight.js","../../src/controls/pip.js","../../src/controls/playAndPause.js","../../src/controls/progress.js","../../src/controls/screenshot.js","../../src/controls/subtitle.js","../../src/controls/time.js","../../src/controls/volume.js","../../src/controls/setting.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmu.js","../../src/info.js","../../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../../node_modules/@babel/runtime/helpers/nonIterableRest.js","../../node_modules/@babel/runtime/helpers/slicedToArray.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/icons/index.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/index.js"],"sourcesContent":["function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;","function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && _typeof2(Symbol.iterator) === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return _typeof2(obj);\n };\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : _typeof2(obj);\n };\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf\");\n\nvar isNativeFunction = require(\"./isNativeFunction\");\n\nvar construct = require(\"./construct\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper;","export default class ArtPlayerError extends Error {\n constructor(message, context) {\n super(message);\n if (typeof Error.captureStackTrace === 'function') {\n Error.captureStackTrace(this, context || this.constructor);\n }\n this.name = 'ArtPlayerError';\n }\n}\n","import ArtPlayerError from './ArtPlayerError';\n\nexport function errorHandle(condition, msg) {\n if (!condition) {\n throw new ArtPlayerError(msg);\n }\n}\n\nexport function clamp(num, a, b) {\n return Math.max(Math.min(num, Math.max(a, b)), Math.min(a, b));\n}\n\nexport function getExt(url) {\n if (url.includes('?')) {\n return getExt(url.split('?')[0]);\n }\n\n if (url.includes('#')) {\n return getExt(url.split('#')[0]);\n }\n\n return url\n .trim()\n .toLowerCase()\n .split('.')\n .pop();\n}\n\nexport function append(parent, child) {\n if (child instanceof Element) {\n parent.appendChild(child);\n } else {\n parent.insertAdjacentHTML('beforeend', child);\n }\n return parent;\n}\n\nexport function setStyle(element, styles) {\n Object.keys(styles).forEach(key => {\n element.style[key] = styles[key];\n });\n return element;\n}\n\nexport function secondToTime(second) {\n const add0 = num => num < 10 ? `0${num}` : String(num);\n const hour = Math.floor(second / 3600);\n const min = Math.floor((second - hour * 3600) / 60);\n const sec = Math.floor(second - hour * 3600 - min * 60);\n return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':');\n}\n","import { errorHandle } from '../utils';\n\nexport default function validOption(option) {\n errorHandle(\n option.container,\n '\\'container\\' option is required.'\n );\n\n errorHandle(\n option.url,\n '\\'url\\' option is required.'\n );\n\n errorHandle(\n typeof option.container === 'string' || option.container instanceof Element,\n `'container' option require 'string' or 'Element' type, but got '${typeof option.container}'.`\n );\n\n errorHandle(\n typeof option.url === 'string',\n `'url' option require 'string' type, but got '${typeof option.url}'.`\n );\n\n errorHandle(\n typeof option.poster === 'string',\n `'poster' option require 'string' type, but got '${typeof option.poster}'.`\n );\n\n errorHandle(\n typeof option.volume === 'number',\n `'volume' option require 'number' type, but got '${typeof option.volume}'.`\n );\n\n errorHandle(\n typeof option.autoplay === 'boolean',\n `'autoplay' option require 'boolean' type, but got '${typeof option.autoplay}'.`\n );\n\n errorHandle(\n ['none', 'metadata', 'auto'].indexOf(option.preload) > -1,\n `'preload' option require one of 'none、metadata、auto', but got '${option.preload}.`\n );\n\n errorHandle(\n typeof option.lang === 'string',\n `'lang' option require 'string' type, but got '${typeof option.lang}'.`\n );\n\n errorHandle(\n typeof option.type === 'string',\n `'type' option require 'string' type, but got '${typeof option.type}'.`\n );\n\n errorHandle(\n typeof option.mimeCodec === 'string',\n `'mimeCodec' option require 'string' type, but got '${typeof option.mimeCodec}'.`\n );\n\n errorHandle(\n Array.isArray(option.layers),\n `'layers' option require 'array' type, but got '${typeof option.layers}'.`\n );\n\n errorHandle(\n Array.isArray(option.contextmenu),\n `'contextmenu' option require 'array' type, but got '${typeof option.contextmenu}'.`\n );\n\n errorHandle(\n typeof option.loading === 'string' || option.loading instanceof Element,\n `'loading' option require 'string' type, but got '${typeof option.loading}'.`\n );\n\n errorHandle(\n typeof option.theme === 'string',\n `'theme' option require 'string' type, but got '${typeof option.theme}'.`\n );\n\n errorHandle(\n typeof option.hotkey === 'boolean',\n `'hotkey' option require 'boolean' type, but got '${typeof option.hotkey}'.`\n );\n\n errorHandle(\n Object.prototype.toString.call(option.subtitle) === '[object Object]',\n `'subtitle' option require 'object' type, but got '${typeof option.subtitle}'.`\n );\n\n errorHandle(\n Array.isArray(option.controls),\n `'controls' option require 'array' type, but got '${typeof option.controls}'.`\n );\n}\n","export default {\n mp4: 'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"',\n webm: 'video/webm; codecs=\"vorbis, vp8\"',\n ts: 'video/mp2t; codecs=\"avc1.42E01E, mp4a.40.2\"'\n};\n","export default {\n mediaSource: {\n propertys: [\n 'activeSourceBuffers',\n 'duration',\n 'readyState',\n 'sourceBuffers'\n ],\n methods: [\n 'addSourceBuffer',\n 'endOfStream',\n 'removeSourceBuffer',\n 'clearLiveSeekableRange',\n 'setLiveSeekableRange'\n ],\n events: [\n 'sourceclose',\n 'sourceended',\n 'sourceopen'\n ]\n },\n sourceBuffer: {\n propertys: [\n 'mode',\n 'updating',\n 'buffered',\n 'timestampOffset',\n 'audioTracks',\n 'videoTracks',\n 'textTracks',\n 'appendWindowStart',\n 'appendWindowEnd',\n 'trackDefaults'\n ],\n methods: [\n 'appendBuffer',\n 'appendStream',\n 'abort',\n 'remove'\n ],\n events: [\n 'abort',\n 'error',\n 'update',\n 'updateend',\n 'updatestart'\n ]\n },\n sourceBufferList: {\n propertys: [\n 'length'\n ],\n events: [\n 'addsourcebuffer',\n 'removesourcebuffer'\n ]\n }\n};\n","export default {\n propertys: [\n 'audioTracks',\n 'autoplay',\n 'buffered',\n 'controller',\n 'controls',\n 'crossOrigin',\n 'currentSrc',\n 'currentTime',\n 'defaultMuted',\n 'defaultPlaybackRate',\n 'duration',\n 'ended',\n 'error',\n 'loop',\n 'mediaGroup',\n 'muted',\n 'networkState',\n 'paused',\n 'playbackRate',\n 'played',\n 'preload',\n 'readyState',\n 'seekable',\n 'seeking',\n 'src',\n 'startDate',\n 'textTracks',\n 'videoTracks',\n 'volume'\n ],\n methods: [\n 'addTextTrack',\n 'canPlayType',\n 'load',\n 'play',\n 'pause'\n ],\n events: [\n 'abort',\n 'canplay',\n 'canplaythrough',\n 'durationchange',\n 'emptied',\n 'ended',\n 'error',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'pause',\n 'play',\n 'playing',\n 'progress',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'volumechange',\n 'waiting'\n ]\n};\n","import mimeCodec from './mimeCodec';\nimport mse from './mse';\nimport video from './video';\n\nexport default {\n mimeCodec,\n mse,\n video\n};\n","function E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n","export default class Template {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { refs } = this.art;\n refs.$container.innerHTML = `\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n `;\n refs.$player = refs.$container.querySelector('.artplayer-video-player');\n refs.$video = refs.$container.querySelector('.artplayer-video');\n refs.$subtitle = refs.$container.querySelector('.artplayer-subtitle');\n refs.$bottom = refs.$container.querySelector('.artplayer-bottom');\n refs.$progress = refs.$container.querySelector('.artplayer-progress');\n refs.$controls = refs.$container.querySelector('.artplayer-controls');\n refs.$controlsLeft = refs.$container.querySelector('.artplayer-controls-left');\n refs.$controlsRight = refs.$container.querySelector('.artplayer-controls-right');\n refs.$layers = refs.$container.querySelector('.artplayer-layers');\n refs.$loading = refs.$container.querySelector('.artplayer-loading');\n refs.$notice = refs.$container.querySelector('.artplayer-notice');\n refs.$mask = refs.$container.querySelector('.artplayer-mask');\n }\n}\n","const i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭',\n 'Video load failed': '视频加载失败',\n 'Fast forward 10 seconds': '快进10秒',\n 'Rewind 10 seconds': '快退10秒',\n '10% increase in volume': '音量增加10%',\n '10% reduction in volume': '音量减少10%'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉',\n 'Video load failed': '影片載入失敗',\n 'Fast forward 10 seconds': '快進10秒',\n 'Rewind 10 seconds': '快退10秒',\n '10% increase in volume': '音量增加10%',\n '10% reduction in volume': '音量減少10%'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.language = i18nMap[option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n}\n","import { clamp } from './utils';\nimport config from './config';\n\nexport default class Player {\n constructor(art) {\n this.art = art;\n this.init();\n this.eventBind();\n }\n\n init() {\n const { option } = this.art;\n const { $video } = this.art.refs;\n $video.controls = false;\n $video.poster = option.poster;\n $video.volume = clamp(option.volume, 0, 1);\n $video.autoplay = option.autoplay;\n $video.preload = option.preload;\n $video.src = option.url;\n }\n\n eventBind() {\n const { events: { proxy }, refs: { $video } } = this.art;\n\n config.video.events.forEach(eventName => {\n proxy($video, eventName, event => {\n this.art.emit(`video:${event.type}`, event);\n });\n });\n\n this.art.on('video:loadstart', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:loadeddata', () => {\n this.art.loading.hide();\n });\n\n this.art.on('video:seeking', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:canplay', () => {\n this.art.controls.show();\n this.art.mask.show();\n this.art.loading.hide();\n if (this.art.option.autoplay) {\n const promise = this.play();\n if (promise !== undefined) {\n promise.then().catch(err => {\n console.warn(err);\n });\n }\n }\n });\n\n this.art.on('video:playing', () => {\n this.art.isPlaying = true;\n this.art.controls.hide();\n this.art.mask.hide();\n });\n\n this.art.on('video:pause', () => {\n this.art.isPlaying = false;\n this.art.controls.show();\n this.art.mask.show();\n });\n\n this.art.on('video:ended', () => {\n this.art.isPlaying = false;\n this.art.controls.show();\n this.art.mask.show();\n });\n\n this.art.on('video:error', () => {\n this.art.isPlaying = false;\n });\n }\n\n play() {\n const { $video } = this.art.refs;\n const promise = $video.play();\n this.art.emit('play', $video);\n return promise;\n }\n\n pause() {\n const { $video } = this.art.refs;\n $video.pause();\n this.art.emit('pause', $video);\n }\n\n toggle() {\n if (this.art.isPlaying) {\n this.pause();\n } else {\n this.play();\n }\n }\n\n seek(time) {\n const { $video } = this.art.refs;\n let newTime = Math.max(time, 0);\n if ($video.duration) {\n newTime = Math.min(newTime, $video.duration);\n }\n\n $video.currentTime = newTime;\n this.art.emit('seek', newTime);\n }\n\n currentTime() {\n return this.art.refs.$video.currentTime;\n }\n\n volume(percentage) {\n const { $video } = this.art.refs;\n if (percentage) {\n $video.volume = clamp(percentage, 0, 1);\n }\n this.art.emit('volume', $video.volume);\n }\n\n switchVolumeIcon() {\n //\n }\n\n switchVideo() {\n //\n }\n\n switchQuality() {\n //\n }\n\n resize() {\n //\n }\n\n speed(rate) {\n const { $video } = this.art.refs;\n $video.playbackRate = rate;\n this.art.emit('speed', rate);\n }\n}\n","import ArtPlayerError from './utils/ArtPlayerError';\nimport { errorHandle, getExt } from './utils';\nimport config from './config';\n\nexport default class Mse {\n constructor(art) {\n this.art = art;\n this.setMimeCodec();\n this.init();\n this.eventBind();\n this.eventStart();\n this.repeat = 0;\n this.maxRepeat = 5;\n }\n\n setMimeCodec() {\n const { option } = this.art;\n if (!option.type) {\n const type = getExt(option.url);\n errorHandle(\n Object.keys(config.mimeCodec).includes(type),\n `Can't find video's type '${type}' from '${option.url}'`\n );\n option.type = type;\n }\n\n if (!option.mimeCodec) {\n const mimeCodec = config.mimeCodec[option.type];\n errorHandle(\n mimeCodec,\n `Can't find video's mimeCodec from ${option.type}`\n );\n option.mimeCodec = mimeCodec;\n }\n }\n\n init() {\n const {\n option,\n refs: { $video }\n } = this.art;\n errorHandle(\n MediaSource.isTypeSupported(option.mimeCodec),\n `Unsupported MIME type or codec: ${option.mimeCodec}`\n );\n this.mediaSource = new MediaSource();\n $video.src = URL.createObjectURL(this.mediaSource);\n this.art.events.destroyEvents.push(() => {\n URL.revokeObjectURL($video.src);\n });\n }\n\n eventBind() {\n const { proxy } = this.art.events;\n const { mediaSource, sourceBufferList } = config.mse;\n\n mediaSource.events.forEach(eventName => {\n proxy(this.mediaSource, eventName, event => {\n this.art.emit(`mediaSource:${event.type}`, event);\n });\n });\n\n sourceBufferList.events.forEach(eventName => {\n proxy(this.mediaSource.sourceBuffers, eventName, event => {\n this.art.emit(`sourceBuffers:${event.type}`, event);\n });\n proxy(this.mediaSource.activeSourceBuffers, eventName, event => {\n this.art.emit(`activeSourceBuffers:${event.type}`, event);\n });\n });\n }\n\n eventStart() {\n const { option } = this.art;\n const { proxy } = this.art.events;\n const { sourceBuffer } = config.mse;\n\n this.art.on('mediaSource:sourceopen', () => {\n this.sourceBuffer = this.mediaSource.addSourceBuffer(option.mimeCodec);\n sourceBuffer.events.forEach(eventName => {\n proxy(this.sourceBuffer, eventName, event => {\n this.art.emit(`sourceBuffer:${event.type}`, event);\n });\n });\n });\n\n this.art.on('sourceBuffer:updateend', () => {\n this.mediaSource.endOfStream();\n });\n\n this.fetchUrl();\n }\n\n fetchUrl() {\n const { option: { url }, notice, i18n, loading } = this.art;\n this.art.emit('player:fetch:start', url);\n this.request(url)\n .then(response => {\n this.sourceBuffer.appendBuffer(response);\n this.art.emit('player:fetch:success', url);\n })\n .catch(err => {\n if (this.repeat++ < this.maxRepeat) {\n this.fetchUrl();\n } else {\n notice.show(i18n.get('Video load failed'));\n console.warn(err);\n loading.hide();\n this.art.emit('player:fetch:failure', url);\n }\n });\n }\n\n request(url) {\n return fetch(url)\n .then(response => response.arrayBuffer())\n .catch(err => {\n throw new ArtPlayerError(err.message);\n });\n }\n}\n","import { errorHandle } from '../utils';\n\nexport default function validControl(option) {\n errorHandle(\n typeof option.control === 'function',\n `'control' option require 'function' type, but got '${typeof option.control}'.`\n );\n\n errorHandle(\n typeof option.disable === 'boolean',\n `'disable' option require 'boolean' type, but got '${typeof option.disable}'.`\n );\n\n errorHandle(\n typeof option.html === 'string' || option.html instanceof Element,\n `'html' option require 'string' or 'Element' type, but got '${typeof option.html}'.`\n );\n\n errorHandle(\n ['top', 'left', 'right'].indexOf(option.position) > -1,\n `'position' option require one of 'top、left、right', but got '${option.position}'.`\n );\n\n errorHandle(\n typeof option.index === 'number',\n `'index' option require 'number' type, but got '${typeof option.index}'.`\n );\n}\n","export default class Danmu {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Fullscreen {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Highlight {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Pip {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class PlayAndPause {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","import { append, secondToTime, clamp } from '../utils';\n\nexport default class Progress {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n this.getLoaded = this.getLoaded.bind(this);\n this.getPlayed = this.getPlayed.bind(this);\n this.getPos = this.getPos.bind(this);\n this.set = this.set.bind(this);\n this.init();\n }\n\n init() {\n const { option: { theme }, events: { proxy }, player } = this.art;\n\n append(this.option.ref, `\n
\n
\n
\n
\n
00:00
\n
\n `);\n\n this.$loaded = this.option.ref.querySelector('.art-progress-loaded');\n this.$played = this.option.ref.querySelector('.art-progress-played');\n this.$indicator = this.option.ref.querySelector('.art-progress-indicator');\n this.$timer = this.option.ref.querySelector('.art-progress-timer');\n\n this.art.on('video:canplay', () => {\n this.set('loaded', this.getLoaded());\n });\n\n this.art.on('video:progress', () => {\n this.set('loaded', this.getLoaded());\n });\n\n this.art.on('video:timeupdate', () => {\n this.set('played', this.getPlayed());\n });\n\n this.art.on('video:ended', () => {\n this.set('played', 1);\n });\n\n proxy(this.option.ref, 'mousemove', event => {\n const { width, time } = this.getPos(event);\n if (width <= 20) {\n this.$timer.style.left = 0;\n } else if (width > this.option.ref.clientWidth - 20) {\n this.$timer.style.left = `${this.option.ref.clientWidth - 40}px`;\n } else {\n this.$timer.style.left = `${width - 20}px`;\n }\n this.$timer.innerHTML = time;\n });\n\n proxy(this.option.ref, 'click', event => {\n if (event.target !== this.$indicator) {\n const { second, percentage } = this.getPos(event);\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n this.isDroging = false;\n proxy(this.$indicator, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(document, 'mousemove', event => {\n if (this.isDroging) {\n const { second, percentage } = this.getPos(event);\n this.$indicator.classList.add('show-indicator');\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n this.$indicator.classList.remove('show-indicator');\n }\n });\n }\n\n getPos(event) {\n const { $video } = this.art.refs;\n const { left } = this.option.ref.getBoundingClientRect();\n const width = event.x - left;\n const second = width / this.option.ref.clientWidth * $video.duration;\n const time = secondToTime(second);\n const percentage = clamp(width / this.option.ref.clientWidth, 0, 1);\n return { second, time, width, percentage };\n }\n\n getPlayed() {\n const { $video } = this.art.refs;\n return $video.currentTime / $video.duration;\n }\n\n getLoaded() {\n const { $video } = this.art.refs;\n return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) / $video.duration : 0;\n }\n\n set(type, percentage) {\n this[`$${type}`].style.width = `${percentage * 100}%`;\n if (type === 'played') {\n this.$indicator.style.left = `calc(${percentage * 100}% - 6.5px)`;\n }\n }\n}\n\n","export default class Screenshot {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Subtitle {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Time {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Volume {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","export default class Setting {\n constructor(art, option) {\n this.art = art;\n this.option = option;\n }\n}\n","import { append, setStyle } from '../utils';\nimport validControl from '../verification/control';\nimport Danmu from './danmu';\nimport Fullscreen from './fullscreen';\nimport Highlight from './highlight';\nimport Pip from './pip';\nimport PlayAndPause from './playAndPause';\nimport Progress from './progress';\nimport Screenshot from './screenshot';\nimport Subtitle from './subtitle';\nimport Time from './time';\nimport Volume from './volume';\nimport Setting from './setting';\n\nlet id = 0;\nexport default class Controls {\n constructor(art) {\n this.art = art;\n this.$map = {\n top: [],\n left: [],\n right: []\n };\n this.init();\n this.mount();\n }\n\n init() {\n this.add({\n control: Progress,\n disable: false,\n html: '',\n position: 'top',\n index: 10\n });\n\n this.add({\n control: Highlight,\n disable: false,\n html: '
',\n position: 'top',\n index: 20\n });\n\n this.add({\n control: Screenshot,\n disable: false,\n html: '
',\n position: 'top',\n index: 30\n });\n\n this.add({\n control: PlayAndPause,\n disable: false,\n html: 'PlayAndPause',\n tooltip: 'PlayAndPause',\n position: 'left',\n index: 10\n });\n\n this.add({\n control: Volume,\n disable: false,\n html: 'Volume',\n tooltip: 'Volume',\n position: 'left',\n index: 20\n });\n\n this.add({\n control: Time,\n disable: false,\n html: 'Time',\n tooltip: 'Volume',\n position: 'left',\n index: 30\n });\n\n this.add({\n control: Danmu,\n disable: false,\n html: 'Danmu',\n tooltip: 'Danmu',\n position: 'right',\n index: 10\n });\n\n this.add({\n control: Subtitle,\n disable: false,\n html: 'Subtitle',\n tooltip: 'Subtitle',\n position: 'right',\n index: 20\n });\n\n this.add({\n control: Setting,\n disable: false,\n html: 'Setting',\n tooltip: 'Setting',\n position: 'right',\n index: 30\n });\n\n this.add({\n control: Pip,\n disable: false,\n html: 'Pip',\n tooltip: 'Pip',\n position: 'right',\n index: 40\n });\n\n this.add({\n control: Fullscreen,\n disable: false,\n html: 'Fullscreen',\n tooltip: 'Fullscreen',\n position: 'right',\n index: 50\n });\n\n this.art.option.controls.forEach(item => {\n this.add(item);\n });\n }\n\n add(option) {\n validControl(option);\n if (!option.disable) {\n id++;\n const name = option.control.name.toLowerCase() || `control${id}`;\n const $control = document.createElement('div');\n $control.setAttribute('class', `art-control art-control-${name}`);\n $control.setAttribute('data-control-index', String(option.index) || id);\n setStyle($control, option.style || {});\n append($control, option.html);\n option.ref = $control;\n this.commonMethod(option);\n this[name] = new option.control(this.art, option);\n this.$map[option.position].push($control);\n }\n }\n\n mount() {\n const { $progress, $controlsLeft, $controlsRight } = this.art.refs;\n Object.keys(this.$map).forEach(key => {\n this.$map[key]\n .sort(\n (a, b) =>\n Number(a.dataset.controlIndex) - Number(b.dataset.controlIndex)\n )\n .forEach($control => {\n switch (key) {\n case 'top':\n $progress.appendChild($control);\n break;\n case 'left':\n $controlsLeft.appendChild($control);\n break;\n case 'right':\n $controlsRight.appendChild($control);\n break;\n default:\n break;\n }\n });\n });\n }\n\n commonMethod(option) {\n Object.defineProperty(option.control.prototype, 'hide', {\n value: () => {\n option.ref.style.display = 'none';\n this.art.emit('control:hide', option.ref);\n }\n });\n\n Object.defineProperty(option.control.prototype, 'show', {\n value: () => {\n option.ref.style.display =\n option.position === 'top' ? 'block' : 'inline-block';\n this.art.emit('control:show', option.ref);\n }\n });\n\n Object.defineProperty(option.control.prototype, 'addMenu', {\n value: menus => {\n console.log(menus);\n }\n });\n }\n\n show() {\n const { $player } = this.art.refs;\n $player.classList.add('controls-show');\n }\n\n hide() {\n const { $player } = this.art.refs;\n $player.classList.remove('controls-show');\n }\n}\n","import { append } from './utils';\n\nexport default class Contextmenu {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n option,\n i18n,\n refs,\n events: { proxy }\n } = this.art;\n\n option.contextmenu.push(\n {\n text: i18n.get('Video info'),\n click: () => {\n this.art.info.show();\n }\n },\n {\n text: i18n.get('About author'),\n link: 'https://github.com/zhw2590582'\n },\n {\n text: 'ArtPlayer __VERSION__',\n link: 'https://github.com/zhw2590582/artplayer'\n },\n {\n text: i18n.get('Close'),\n click: () => {\n this.hide();\n }\n }\n );\n\n proxy(refs.$player, 'contextmenu', event => {\n event.preventDefault();\n this.art.isFocus = true;\n if (!refs.$contextmenu) {\n this.creatMenu();\n }\n this.show();\n this.setPos(event);\n });\n\n proxy(refs.$player, 'click', event => {\n if (refs.$contextmenu && !event.path.includes(refs.$contextmenu)) {\n this.hide();\n }\n });\n }\n\n creatMenu() {\n const {\n option,\n refs,\n events: { proxy }\n } = this.art;\n refs.$contextmenu = document.createElement('div');\n refs.$contextmenu.classList.add('artplayer-contextmenu');\n option.contextmenu.forEach(item => {\n const $menu = document.createElement('a');\n $menu.innerHTML = item.text;\n $menu.classList.add('art-menu');\n if (item.link) {\n $menu.target = '_blank';\n $menu.href = item.link;\n } else if (item.click) {\n $menu.href = '#';\n proxy($menu, 'click', event => {\n event.preventDefault();\n item.click(this.art, event);\n this.hide();\n });\n }\n append(refs.$contextmenu, $menu);\n });\n append(refs.$player, refs.$contextmenu);\n }\n\n setPos(event) {\n const { refs } = this.art;\n const mouseX = event.clientX;\n const mouseY = event.clientY;\n const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = refs.$player.getBoundingClientRect();\n const { height: mHeight, width: mWidth } = refs.$contextmenu.getBoundingClientRect();\n let menuLeft = mouseX - cLeft;\n let menuTop = mouseY - cTop;\n\n if (mouseX + mWidth > cLeft + cWidth) {\n menuLeft = cWidth - mWidth;\n }\n\n if (mouseY + mHeight > cTop + cHeight) {\n menuTop = cHeight - mHeight;\n }\n\n refs.$contextmenu.style.left = `${menuLeft}px`;\n refs.$contextmenu.style.top = `${menuTop}px`;\n }\n\n hide() {\n const { refs: { $contextmenu } } = this.art;\n if ($contextmenu) {\n $contextmenu.style.display = 'none';\n this.art.emit('contextmenu:hide', $contextmenu);\n }\n }\n\n show() {\n const { refs: { $contextmenu } } = this.art;\n if ($contextmenu) {\n $contextmenu.style.display = 'block';\n this.art.emit('contextmenu:show', $contextmenu);\n }\n }\n}\n","export default class Danmu {\n constructor(art) {\n this.art = art;\n }\n}\n","export default class Info {\n constructor(art) {\n this.art = art;\n }\n\n show() {\n console.log('info show');\n }\n\n hide() {\n console.log('info hide');\n }\n}\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","import { errorHandle, getExt, setStyle } from './utils';\n\nexport default class Subtitle {\n constructor(art) {\n this.art = art;\n if (this.art.option.subtitle) {\n errorHandle(\n getExt(this.art.option.subtitle.url) === 'vtt',\n `'url' option require 'vtt' format, but got '${getExt(this.art.option.subtitle.url)}'.`\n );\n this.init();\n }\n }\n\n init() {\n const {\n events: { proxy },\n option: { subtitle },\n refs: { $video, $subtitle }\n } = this.art;\n\n setStyle($subtitle, subtitle.style || {});\n const $track = document.createElement('track');\n $track.default = true;\n $track.kind = 'metadata';\n $track.src = subtitle.url;\n $video.appendChild($track);\n this.art.refs.$track = $track;\n\n if ($video.textTracks && $video.textTracks[0]) {\n const [track] = $video.textTracks;\n proxy(track, 'cuechange', () => {\n const [cue] = track.activeCues;\n $subtitle.innerHTML = '';\n if (cue) {\n const template = document.createElement('div');\n template.appendChild(cue.getCueAsHTML());\n $subtitle.innerHTML = template.innerHTML\n .split(/\\r?\\n/)\n .map(item => `

${item}

`)\n .join('');\n }\n this.art.emit('subtitle:update', $subtitle);\n });\n }\n }\n\n show() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'block';\n this.art.emit('subtitle:show', $subtitle);\n }\n\n hide() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'none';\n this.art.emit('subtitle:hide', $subtitle);\n }\n\n switch(url) {\n const { $track } = this.art.refs;\n errorHandle(\n getExt(url) === 'vtt',\n `'url' option require 'vtt' format, but got '${getExt(url)}'.`\n );\n errorHandle(\n $track,\n 'You need to initialize the subtitle option first.'\n );\n $track.src = url;\n this.art.emit('subtitle:switch', url);\n }\n}\n","export default class Events {\n constructor(art) {\n this.art = art;\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n }\n\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) {\n name.forEach(item => this.proxy(target, item, callback, option));\n }\n\n target.addEventListener(name, callback, option);\n\n const destroy = () => {\n target.removeEventListener(name, callback, option);\n };\n\n this.destroyEvents.push(destroy);\n\n return destroy;\n }\n\n destroy() {\n this.destroyEvents.forEach(event => event());\n }\n}\n","export default class Hotkey {\n constructor(art) {\n this.art = art;\n if (this.art.option.hotkey) {\n this.init();\n }\n }\n\n init() {\n const {\n player,\n notice,\n i18n,\n refs: { $player },\n events: { proxy }\n } = this.art;\n\n proxy(document, 'click', event => {\n this.art.isFocus = event.path.indexOf($player) > -1;\n });\n\n proxy(window, 'keydown', event => {\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (\n tag !== 'INPUT' &&\n tag !== 'TEXTAREA' &&\n editable !== '' &&\n editable !== 'true'\n ) {\n let percentage;\n switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n notice.show(i18n.get('Fast forward 10 seconds'), true);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n notice.show(i18n.get('Rewind 10 seconds'), true);\n break;\n case 38:\n event.preventDefault();\n percentage = player.volume() + 0.1;\n player.volume(percentage);\n notice.show(i18n.get('10% increase in volume'), true);\n break;\n case 40:\n event.preventDefault();\n percentage = player.volume() - 0.1;\n player.volume(percentage);\n notice.show(i18n.get('10% reduction in volume'), true);\n break;\n case 32:\n event.preventDefault();\n player.toggle();\n break;\n default:\n break;\n }\n }\n }\n });\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Layers {\n constructor(art) {\n this.art = art;\n this.add = this.add.bind(this);\n this.art.option.layers.forEach(this.add);\n this.init();\n }\n\n init() {\n const { refs, player, events: { proxy } } = this.art;\n proxy(refs.$layers, 'click', event => {\n if (event.path[0] === refs.$layers) {\n player.pause();\n }\n });\n }\n\n add(option, callback) {\n const { refs } = this.art;\n id++;\n\n const $layer = document.createElement('div');\n $layer.setAttribute('data-art-layer-id', id);\n $layer.setAttribute('class', `art-layer art-layer-${option.name || id}`);\n $layer.style.zIndex = option.index || id;\n append($layer, option.html);\n setStyle($layer, option.style || {});\n refs.$layers.appendChild($layer);\n this.art.emit('layers:add', $layer);\n callback && callback($layer);\n }\n\n show() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'block';\n this.art.emit('layers:show', $layers);\n }\n\n hide() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'none';\n this.art.emit('layers:hide', $layers);\n }\n}\n","import loading from './loading.svg';\nimport play from './play.svg';\n\nconst icons = {\n loading,\n play\n};\n\nfunction creatDomFromSvg(map) {\n const result = {};\n Object.keys(map).forEach(name => {\n const tmp = document.createElement('div');\n tmp.innerHTML = `${map[name]}`;\n [result[name]] = tmp.childNodes;\n });\n return result;\n}\n\nexport default creatDomFromSvg(icons);\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Loading {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { option, refs: { $loading } } = this.art;\n append($loading, option.loading || icons.loading);\n }\n\n hide() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'none';\n this.art.emit('loading:hide', $loading);\n }\n\n show() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'flex';\n this.art.emit('loading:show', $loading);\n }\n}\n","export default class Notice {\n constructor(art) {\n this.art = art;\n this.timer = null;\n }\n\n show(msg, autoHide) {\n const { $notice } = this.art.refs;\n $notice.style.display = 'block';\n $notice.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n if (autoHide) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.hide();\n }, 1000);\n }\n this.art.emit('notice:show', $notice);\n }\n\n hide() {\n const { $notice } = this.art.refs;\n $notice.style.display = 'none';\n this.art.emit('notice:hide', $notice);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Mask {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n player,\n option,\n refs,\n events: { proxy }\n } = this.art;\n\n icons.play.style.backgroundColor = option.theme;\n append(refs.$mask, icons.play);\n\n proxy(refs.$mask, 'click', () => {\n player.play();\n this.hide();\n });\n }\n\n show() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'flex';\n this.art.emit('mask:show', $mask);\n }\n\n hide() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'none';\n this.art.emit('mask:show', $mask);\n }\n}\n","import './style/index.scss';\nimport 'balloon-css/balloon.min.css';\nimport validOption from './verification/player';\nimport config from './config';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\nimport Mse from './mse';\nimport Controls from './controls';\nimport Contextmenu from './contextmenu';\nimport Danmu from './danmu';\nimport Info from './info';\nimport Subtitle from './subtitle';\nimport Events from './events';\nimport Hotkey from './hotkey';\nimport Layers from './layers';\nimport Loading from './loading';\nimport Notice from './notice';\nimport Mask from './mask';\n\nlet id = 0;\nexport const instances = [];\n\nclass Artplayer extends Emitter {\n constructor(option) {\n super();\n this.emit('init:start');\n this.option = Object.assign({}, Artplayer.DEFAULTS, option);\n validOption(this.option);\n this.init();\n this.emit('init:end');\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get config() {\n return config;\n }\n\n static get DEFAULTS() {\n return {\n container: '.artplayer',\n url: '',\n poster: '',\n volume: 0.7,\n autoplay: false,\n preload: 'auto',\n type: '',\n mimeCodec: '',\n layers: [],\n contextmenu: [],\n loading: '',\n theme: '#f00',\n hotkey: true,\n subtitle: {\n url: '',\n style: {}\n },\n controls: [],\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(plugin) {\n const installedPlugins = this.plugins || (this.plugins = []);\n if (installedPlugins.indexOf(plugin) > -1) {\n return this;\n }\n\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this;\n }\n\n init() {\n this.isFocus = false;\n this.isPlaying = false;\n this.refs = {};\n\n if (this.option.container instanceof Element) {\n this.refs.$container = this.option.container;\n } else {\n this.refs.$container = document.querySelector(this.option.container);\n }\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.events = new Events(this);\n this.player = new Player(this);\n // this.mse = new Mse(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmu = new Danmu(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.loading = new Loading(this);\n this.notice = new Notice(this);\n this.hotkey = new Hotkey(this);\n this.mask = new Mask(this);\n\n this.id = id++;\n instances.push(this);\n return this;\n }\n\n destroy() {\n this.events.destroy();\n this.refs.$container.innerHTML = '';\n instances.splice(instances.indexOf(this), 1);\n this.emit('destroy');\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","clamp","num","a","b","Math","max","min","getExt","url","includes","split","trim","toLowerCase","pop","append","parent","child","Element","appendChild","insertAdjacentHTML","setStyle","element","styles","Object","keys","forEach","key","style","secondToTime","second","add0","String","hour","floor","sec","map","join","validOption","option","container","poster","volume","autoplay","indexOf","preload","lang","type","mimeCodec","Array","isArray","layers","contextmenu","loading","theme","hotkey","prototype","toString","call","subtitle","controls","mp4","webm","ts","mediaSource","propertys","methods","events","sourceBuffer","sourceBufferList","mse","video","Template","art","init","refs","$container","innerHTML","$player","querySelector","$video","$subtitle","$bottom","$progress","$controls","$controlsLeft","$controlsRight","$layers","$loading","$notice","$mask","i18nMap","I18n","language","Player","eventBind","src","proxy","config","eventName","event","emit","on","show","hide","mask","promise","play","undefined","then","catch","err","console","warn","isPlaying","pause","time","newTime","duration","currentTime","percentage","rate","playbackRate","Mse","setMimeCodec","eventStart","repeat","maxRepeat","MediaSource","isTypeSupported","URL","createObjectURL","destroyEvents","push","revokeObjectURL","sourceBuffers","activeSourceBuffers","addSourceBuffer","endOfStream","fetchUrl","notice","i18n","request","response","appendBuffer","get","fetch","arrayBuffer","validControl","control","disable","html","position","index","Danmu","Fullscreen","Highlight","Pip","PlayAndPause","Progress","getLoaded","bind","getPlayed","getPos","set","player","ref","$loaded","$played","$indicator","$timer","width","left","clientWidth","target","seek","isDroging","document","classList","add","remove","getBoundingClientRect","x","buffered","length","end","Screenshot","Subtitle","Time","Volume","Setting","id","Controls","$map","top","right","mount","tooltip","item","$control","createElement","setAttribute","commonMethod","sort","Number","dataset","controlIndex","defineProperty","value","display","menus","log","Contextmenu","text","click","info","link","preventDefault","isFocus","$contextmenu","creatMenu","setPos","path","$menu","href","mouseX","clientX","mouseY","clientY","cHeight","height","cWidth","cLeft","cTop","mHeight","mWidth","menuLeft","menuTop","Info","$track","default","kind","textTracks","track","activeCues","cue","template","getCueAsHTML","Events","callback","addEventListener","destroy","removeEventListener","Hotkey","window","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","toggle","Layers","$layer","zIndex","icons","creatDomFromSvg","result","tmp","childNodes","Loading","Notice","timer","autoHide","clearTimeout","setTimeout","Mask","backgroundColor","instances","Artplayer","assign","DEFAULTS","danmu","splice","plugin","installedPlugins","plugins","args","from","arguments","slice","unshift","install","apply","navigator","Emitter"],"mappings":"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"} \ No newline at end of file diff --git a/src/contextmenu.js b/src/contextmenu.js index 48a745b38..9cb4d4c6e 100644 --- a/src/contextmenu.js +++ b/src/contextmenu.js @@ -37,9 +37,9 @@ export default class Contextmenu { } ); - proxy(refs.$container, 'contextmenu', event => { + proxy(refs.$player, 'contextmenu', event => { event.preventDefault(); - this.art.focus = true; + this.art.isFocus = true; if (!refs.$contextmenu) { this.creatMenu(); } @@ -47,7 +47,7 @@ export default class Contextmenu { this.setPos(event); }); - proxy(refs.$container, 'click', event => { + proxy(refs.$player, 'click', event => { if (refs.$contextmenu && !event.path.includes(refs.$contextmenu)) { this.hide(); } @@ -79,14 +79,14 @@ export default class Contextmenu { } append(refs.$contextmenu, $menu); }); - append(refs.$container, refs.$contextmenu); + append(refs.$player, refs.$contextmenu); } setPos(event) { const { refs } = this.art; const mouseX = event.clientX; const mouseY = event.clientY; - const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = refs.$container.getBoundingClientRect(); + const { height: cHeight, width: cWidth, left: cLeft, top: cTop } = refs.$player.getBoundingClientRect(); const { height: mHeight, width: mWidth } = refs.$contextmenu.getBoundingClientRect(); let menuLeft = mouseX - cLeft; let menuTop = mouseY - cTop; diff --git a/src/controls/index.js b/src/controls/index.js index d3f58211e..a5d36d1f7 100644 --- a/src/controls/index.js +++ b/src/controls/index.js @@ -29,7 +29,7 @@ export default class Controls { this.add({ control: Progress, disable: false, - html: 'Progress', + html: '', position: 'top', index: 10 }); @@ -37,7 +37,7 @@ export default class Controls { this.add({ control: Highlight, disable: false, - html: 'Highlight', + html: '
', position: 'top', index: 20 }); @@ -45,7 +45,7 @@ export default class Controls { this.add({ control: Screenshot, disable: false, - html: 'Screenshot', + html: '
', position: 'top', index: 30 }); @@ -194,12 +194,12 @@ export default class Controls { } show() { - const { $container } = this.art.refs; - $container.classList.add('controls-show'); + const { $player } = this.art.refs; + $player.classList.add('controls-show'); } hide() { - const { $container } = this.art.refs; - $container.classList.remove('controls-show'); + const { $player } = this.art.refs; + $player.classList.remove('controls-show'); } } diff --git a/src/controls/progress.js b/src/controls/progress.js index 96b111199..56c53ddaa 100644 --- a/src/controls/progress.js +++ b/src/controls/progress.js @@ -1,6 +1,116 @@ +import { append, secondToTime, clamp } from '../utils'; + export default class Progress { constructor(art, option) { this.art = art; this.option = option; + this.getLoaded = this.getLoaded.bind(this); + this.getPlayed = this.getPlayed.bind(this); + this.getPos = this.getPos.bind(this); + this.set = this.set.bind(this); + this.init(); + } + + init() { + const { option: { theme }, events: { proxy }, player } = this.art; + + append(this.option.ref, ` +
+
+
+
+
00:00
+
+ `); + + this.$loaded = this.option.ref.querySelector('.art-progress-loaded'); + this.$played = this.option.ref.querySelector('.art-progress-played'); + this.$indicator = this.option.ref.querySelector('.art-progress-indicator'); + this.$timer = this.option.ref.querySelector('.art-progress-timer'); + + this.art.on('video:canplay', () => { + this.set('loaded', this.getLoaded()); + }); + + this.art.on('video:progress', () => { + this.set('loaded', this.getLoaded()); + }); + + this.art.on('video:timeupdate', () => { + this.set('played', this.getPlayed()); + }); + + this.art.on('video:ended', () => { + this.set('played', 1); + }); + + proxy(this.option.ref, 'mousemove', event => { + const { width, time } = this.getPos(event); + if (width <= 20) { + this.$timer.style.left = 0; + } else if (width > this.option.ref.clientWidth - 20) { + this.$timer.style.left = `${this.option.ref.clientWidth - 40}px`; + } else { + this.$timer.style.left = `${width - 20}px`; + } + this.$timer.innerHTML = time; + }); + + proxy(this.option.ref, 'click', event => { + if (event.target !== this.$indicator) { + const { second, percentage } = this.getPos(event); + this.set('played', percentage); + player.seek(second); + } + }); + + this.isDroging = false; + proxy(this.$indicator, 'mousedown', () => { + this.isDroging = true; + }); + + proxy(document, 'mousemove', event => { + if (this.isDroging) { + const { second, percentage } = this.getPos(event); + this.$indicator.classList.add('show-indicator'); + this.set('played', percentage); + player.seek(second); + } + }); + + proxy(document, 'mouseup', () => { + if (this.isDroging) { + this.isDroging = false; + this.$indicator.classList.remove('show-indicator'); + } + }); + } + + getPos(event) { + const { $video } = this.art.refs; + const { left } = this.option.ref.getBoundingClientRect(); + const width = event.x - left; + const second = width / this.option.ref.clientWidth * $video.duration; + const time = secondToTime(second); + const percentage = clamp(width / this.option.ref.clientWidth, 0, 1); + return { second, time, width, percentage }; + } + + getPlayed() { + const { $video } = this.art.refs; + return $video.currentTime / $video.duration; + } + + getLoaded() { + const { $video } = this.art.refs; + return $video.buffered.length ? $video.buffered.end($video.buffered.length - 1) / $video.duration : 0; + } + + set(type, percentage) { + this[`$${type}`].style.width = `${percentage * 100}%`; + if (type === 'played') { + this.$indicator.style.left = `calc(${percentage * 100}% - 6.5px)`; + } } } + diff --git a/src/events.js b/src/events.js index ce186eb4b..b45bdf426 100644 --- a/src/events.js +++ b/src/events.js @@ -6,10 +6,19 @@ export default class Events { } proxy(target, name, callback, option = {}) { + if (Array.isArray(name)) { + name.forEach(item => this.proxy(target, item, callback, option)); + } + target.addEventListener(name, callback, option); - this.destroyEvents.push(() => { + + const destroy = () => { target.removeEventListener(name, callback, option); - }); + }; + + this.destroyEvents.push(destroy); + + return destroy; } destroy() { diff --git a/src/hotkey.js b/src/hotkey.js index 3636d6ca5..3a078ae69 100644 --- a/src/hotkey.js +++ b/src/hotkey.js @@ -11,16 +11,16 @@ export default class Hotkey { player, notice, i18n, - refs: { $container }, + refs: { $player }, events: { proxy } } = this.art; proxy(document, 'click', event => { - this.art.focus = event.path.indexOf($container) > -1; + this.art.isFocus = event.path.indexOf($player) > -1; }); proxy(window, 'keydown', event => { - if (this.art.focus) { + if (this.art.isFocus) { const tag = document.activeElement.tagName.toUpperCase(); const editable = document.activeElement.getAttribute('contenteditable'); if ( diff --git a/src/index.js b/src/index.js index 3a2725eb7..7afdf9f47 100644 --- a/src/index.js +++ b/src/index.js @@ -53,7 +53,7 @@ class Artplayer extends Emitter { layers: [], contextmenu: [], loading: '', - theme: '#1aafff', + theme: '#f00', hotkey: true, subtitle: { url: '', @@ -82,8 +82,8 @@ class Artplayer extends Emitter { } init() { - this.focus = false; - this.playing = false; + this.isFocus = false; + this.isPlaying = false; this.refs = {}; if (this.option.container instanceof Element) { @@ -91,7 +91,6 @@ class Artplayer extends Emitter { } else { this.refs.$container = document.querySelector(this.option.container); } - this.refs.$container.classList.add('artplayer-container'); this.template = new Template(this); this.i18n = new I18n(this); @@ -116,7 +115,6 @@ class Artplayer extends Emitter { destroy() { this.events.destroy(); - this.refs.$container.classList.remove('artplayer-container'); this.refs.$container.innerHTML = ''; instances.splice(instances.indexOf(this), 1); this.emit('destroy'); diff --git a/src/player.js b/src/player.js index 3e16e555a..9ce030b27 100644 --- a/src/player.js +++ b/src/player.js @@ -11,7 +11,7 @@ export default class Player { init() { const { option } = this.art; const { $video } = this.art.refs; - $video.controls = true; + $video.controls = false; $video.poster = option.poster; $video.volume = clamp(option.volume, 0, 1); $video.autoplay = option.autoplay; @@ -36,9 +36,14 @@ export default class Player { this.art.loading.hide(); }); + this.art.on('video:seeking', () => { + this.art.loading.show(); + }); + this.art.on('video:canplay', () => { this.art.controls.show(); this.art.mask.show(); + this.art.loading.hide(); if (this.art.option.autoplay) { const promise = this.play(); if (promise !== undefined) { @@ -50,22 +55,26 @@ export default class Player { }); this.art.on('video:playing', () => { - this.art.playing = true; + this.art.isPlaying = true; this.art.controls.hide(); this.art.mask.hide(); }); this.art.on('video:pause', () => { - this.art.playing = false; + this.art.isPlaying = false; this.art.controls.show(); this.art.mask.show(); }); this.art.on('video:ended', () => { - this.art.playing = false; + this.art.isPlaying = false; this.art.controls.show(); this.art.mask.show(); }); + + this.art.on('video:error', () => { + this.art.isPlaying = false; + }); } play() { @@ -82,7 +91,7 @@ export default class Player { } toggle() { - if (this.art.playing) { + if (this.art.isPlaying) { this.pause(); } else { this.play(); diff --git a/src/style/index.scss b/src/style/index.scss index 80106aea0..89f876fc5 100644 --- a/src/style/index.scss +++ b/src/style/index.scss @@ -1,12 +1,26 @@ @charset "UTF-8"; -.artplayer-container { +.artplayer-video-player { position: relative; - text-align: left; + width: 100%; + height: 100%; overflow: hidden; + outline: 0; font-family: Roboto,Arial,Helvetica,sans-serif; - -webkit-font-smoothing: antialiased; + color: #eee; + text-align: left; + direction: ltr; + font-size: 14px; + line-height: 1.3; user-select: none; + -webkit-font-smoothing: antialiased; + -webkit-tap-highlight-color: rgba(0,0,0,0); + touch-action: manipulation; + -ms-high-contrast-adjust: none; + + * { + box-sizing: border-box; + } .art-icon { svg { @@ -23,6 +37,8 @@ bottom: 0; width: 100%; height: 100%; + background-color: #000; + outline: 0; } .artplayer-subtitle { @@ -74,30 +90,10 @@ } } - .artplayer-bottom { - position: absolute; - z-index: 40; - left: 0; - right: 0; - bottom: 0; - height: 100px; - opacity: 0; - visibility: hidden; - transition: all .2s ease-in-out; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom; - } - - &.controls-show, &:hover { - .artplayer-bottom { - opacity: 1; - visibility: visible; - } - } - .artplayer-loading { display: none; position: absolute; - z-index: 50; + z-index: 40; left: 0; top: 0; right: 0; @@ -108,6 +104,104 @@ justify-content: center; } + .artplayer-bottom { + position: absolute; + z-index: 50; + left: 0; + right: 0; + bottom: 0; + height: 100px; + padding: 50px 10px 0; + opacity: 0; + visibility: hidden; + transition: all .2s ease-in-out; + box-sizing: border-box; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom; + + .art-control-progress { + position: relative; + height: 5px; + padding: 1px 0; + cursor: pointer; + box-sizing: border-box; + + .art-control-progress-inner { + position: relative; + height: 100%; + background: rgba(255,255,255,.2); + .art-progress-loaded { + position: absolute; + z-index: 1; + left: 0; + top: 0; + right: 0; + bottom: 0; + height: 100%; + width: 0; + background: rgba(255,255,255,.4); + transform-origin: 0 0; + } + + .art-progress-played { + position: absolute; + z-index: 2; + left: 0; + top: 0; + right: 0; + bottom: 0; + height: 100%; + width: 0; + transform-origin: 0 0; + } + + .art-progress-indicator { + display: none; + position: absolute; + z-index: 3; + top: -5px; + left: -6.5px; + width: 13px; + height: 13px; + border-radius: 50%; + + &.show-indicator { + display: block; + } + } + + .art-progress-timer { + display: none; + position: absolute; + z-index: 4; + top: -25px; + left: 0; + width: 40px; + height: 20px; + line-height: 20px; + color: #fff; + font-size: 12px; + text-align: center; + background: rgba(0,0,0,.7); + border-radius: 3px; + font-weight: bold; + } + } + + &:hover { + .art-progress-indicator, .art-progress-timer { + display: block; + } + } + } + } + + &.controls-show, &:hover { + .artplayer-bottom { + opacity: 1; + visibility: visible; + } + } + .artplayer-notice { display: none; font-size: 13px; diff --git a/src/template.js b/src/template.js index 8eddd6e32..c36eabf3c 100644 --- a/src/template.js +++ b/src/template.js @@ -7,20 +7,23 @@ export default class Template { init() { const { refs } = this.art; refs.$container.innerHTML = ` - -
-
-
-
-
-
-
-
+
+ +
+
+
+
+
+
+
+
+
+
+
-
-
`; + refs.$player = refs.$container.querySelector('.artplayer-video-player'); refs.$video = refs.$container.querySelector('.artplayer-video'); refs.$subtitle = refs.$container.querySelector('.artplayer-subtitle'); refs.$bottom = refs.$container.querySelector('.artplayer-bottom'); diff --git a/src/utils/index.js b/src/utils/index.js index 5f8b95317..96d391f21 100644 --- a/src/utils/index.js +++ b/src/utils/index.js @@ -15,6 +15,10 @@ export function getExt(url) { return getExt(url.split('?')[0]); } + if (url.includes('#')) { + return getExt(url.split('#')[0]); + } + return url .trim() .toLowerCase() @@ -22,12 +26,11 @@ export function getExt(url) { .pop(); } - export function append(parent, child) { if (child instanceof Element) { parent.appendChild(child); } else { - parent.innerHTML = child; + parent.insertAdjacentHTML('beforeend', child); } return parent; } @@ -38,3 +41,11 @@ export function setStyle(element, styles) { }); return element; } + +export function secondToTime(second) { + const add0 = num => num < 10 ? `0${num}` : String(num); + const hour = Math.floor(second / 3600); + const min = Math.floor((second - hour * 3600) / 60); + const sec = Math.floor(second - hour * 3600 - min * 60); + return (hour > 0 ? [hour, min, sec] : [min, sec]).map(add0).join(':'); +}