diff --git a/docs/css/artplayer.css b/docs/css/artplayer.css index c282bee83..46a0aef09 100644 --- a/docs/css/artplayer.css +++ b/docs/css/artplayer.css @@ -1,11 +1,12 @@ -.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;pointer-events:none}.artplayer-video-player .artplayer-subtitle p{margin:5px 0} .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-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{display:inline-block}.artplayer-video-player .art-icon svg{fill:#fff} +.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;pointer-events:none}.artplayer-video-player .artplayer-subtitle p{margin:5px 0} .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-mask{display:none;position:absolute;z-index:40;left:0;top:0;right:0;bottom:0;width:100%;height:100%;cursor:pointer}.artplayer-video-player .artplayer-mask .art-icon-playBig{position:absolute;right:30px;bottom:65px;opacity:.6} .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-layers .art-layer{position:absolute} +.artplayer-video-player .artplayer-mask{display:none;position:absolute;z-index:40;left:0;top:0;right:0;bottom:0;width:100%;height:100%;cursor:pointer}.artplayer-video-player .artplayer-mask .art-icon-playBig{position:absolute;right:30px;bottom:65px;opacity:.6} .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-notice{display:none;font-size:14px;position:absolute;z-index:60;left:0;top:0;padding:10px;width:100%}.artplayer-video-player .artplayer-notice .artplayer-notice-inner{display:inline-block;padding:5px 10px;color:#fff;background:rgba(0,0,0,.6);border-radius:3px} .artplayer-video-player .artplayer-bottom{position:absolute;z-index:50;left:0;right:0;bottom:0;height:100px;padding:60px 10px 0;opacity:0;visibility:hidden;transition:all .2s ease-in-out;pointer-events:none;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==) repeat-x bottom}.artplayer-video-player .artplayer-bottom .artplayer-progress{position:relative;pointer-events:all}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress{position:relative;height:5px;padding:1px 0;cursor:pointer}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner{position:relative;height:100%;background:hsla(0,0%,100%,.2)}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-loaded{position:absolute;z-index:10;left:0;top:0;right:0;bottom:0;height:100%;width:0;background:hsla(0,0%,100%,.4)}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-played{position:absolute;z-index:20;left:0;top:0;right:0;bottom:0;height:100%;width:0}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-highlight{position:absolute;z-index:30;left:0;top:0;right:0;bottom:0;height:0}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-highlight span{display:inline-block;position:absolute;left:0;top:0;width:7px;height:3px;background:#fff;border-radius:3px}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-indicator{display:none;position:absolute;z-index:40;top:-5px;left:-6.5px;width:13px;height:13px;border-radius:50%}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-indicator.show-indicator{display:block}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress .art-control-progress-inner .art-progress-tip{display:none;position:absolute;z-index:50;top:-25px;left:0;height:20px;padding:0 5px;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 .artplayer-progress .art-control-progress:hover .art-progress-indicator,.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-progress:hover .art-progress-tip{display:block}.artplayer-video-player .artplayer-bottom .artplayer-progress .art-control-thumbnails{display:none;position:absolute;bottom:8px;left:0;pointer-events:none;background-color:rgba(0,0,0,.7)}.artplayer-video-player .artplayer-bottom .artplayer-controls{position:relative;pointer-events:all;display:flex;align-items:center;justify-content:space-between;height:36px}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control{float:left;font-size:12px;height:36px;cursor:pointer}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control .art-icon{display:flex;align-items:center;justify-content:center;float:left;height:36px;width:36px;padding:7px}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control-volume .art-volume-panel{position:relative;float:left;width:0;height:100%;transition:margin .2s cubic-bezier(.4,0,1,1),width .2s cubic-bezier(.4,0,1,1);overflow:hidden}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control-volume .art-volume-panel .art-volume-slider-handle{position:absolute;top:50%;left:0;width:12px;height:12px;border-radius:12px;margin-top:-6px;background:#fff}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control-volume .art-volume-panel .art-volume-slider-handle:before{left:-54px;background:#fff}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control-volume .art-volume-panel .art-volume-slider-handle:after{left:6px;background:hsla(0,0%,100%,.2)}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control-volume .art-volume-panel .art-volume-slider-handle:after,.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control-volume .art-volume-panel .art-volume-slider-handle:before{content:"";position:absolute;display:block;top:50%;height:3px;margin-top:-2px;width:60px}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control-volume .art-volume-panel.art-volume-panel-hover{width:60px}.artplayer-video-player .artplayer-bottom .artplayer-controls .art-control-time{line-height:36px;padding:0 10px}.artplayer-video-player.controls-show .artplayer-bottom,.artplayer-video-player:hover .artplayer-bottom{opacity:1;visibility:visible}.artplayer-video-player.artplayer-error .art-progress-indicator,.artplayer-video-player.artplayer-error .art-progress-tip{display:none!important} -.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 .art-menu{cursor:pointer;font-size:13px;display:block;color:#fff;padding:7px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 2px rgba(0,0,0,.5)}.artplayer-video-player .artplayer-contextmenu .art-menu a{color:#fff;text-decoration:none}.artplayer-video-player .artplayer-contextmenu .art-menu:hover{background-color:hsla(0,0%,100%,.1)} .artplayer-video-player .artplayer-info{display:none;position:absolute;left:10px;top:10px;z-index:80;width:350px;min-height:150px;padding:10px;color:#fff;font-size:12px;font-family:Noto Sans CJK SC DemiLight,Roboto,Segoe UI,Tahoma,Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased;background:rgba(0,0,0,.7)}.artplayer-video-player .artplayer-info .art-info-item{display:flex;margin-bottom:5px}.artplayer-video-player .artplayer-info .art-info-item .art-info-title{width:100px;text-align:right}.artplayer-video-player .artplayer-info .art-info-item .art-info-content{flex:1;padding-left:5px}.artplayer-video-player .artplayer-info .artplayer-info-close{position:absolute;top:5px;right:5px;cursor:pointer} +.artplayer-video-player .artplayer-contextmenu{position:absolute;z-index:70;left:0;top:0;min-width:200px;padding:5px 0;background:rgba(0,0,0,.8);border-radius:3px}.artplayer-video-player .artplayer-contextmenu .art-menu{cursor:pointer;font-size:13px;display:block;color:#fff;padding:7px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 2px rgba(0,0,0,.5);border-bottom:1px solid hsla(0,0%,100%,.1)}.artplayer-video-player .artplayer-contextmenu .art-menu a{color:#fff;text-decoration:none}.artplayer-video-player .artplayer-contextmenu .art-menu span{display:inline-block;padding:0 7px}.artplayer-video-player .artplayer-contextmenu .art-menu span.current,.artplayer-video-player .artplayer-contextmenu .art-menu span:hover{color:#00c9ff}.artplayer-video-player .artplayer-contextmenu .art-menu:hover{background-color:hsla(0,0%,100%,.1)}.artplayer-video-player .artplayer-contextmenu .art-menu:last-child{border-bottom:none} +.artplayer-video-player[data-aspect-ratio] video{box-sizing:content-box;-o-object-fit:fill;object-fit:fill} 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/js/artplayer.js b/docs/js/artplayer.js index d4b24c644..77df73540 100644 --- a/docs/js/artplayer.js +++ b/docs/js/artplayer.js @@ -458,6 +458,12 @@ autoplay: { type: 'boolean' }, + playbackRate: { + type: 'boolean' + }, + aspectRatio: { + type: 'boolean' + }, loop: { type: 'boolean' }, @@ -744,7 +750,10 @@ 'Reconnect': '重新连接', 'Hide subtitle': '隐藏字幕', 'Show subtitle': '显示字幕', - 'Screenshot': '截图' + 'Screenshot': '截图', + 'Play speed': '播放速度', + 'Aspect ratio': '画面比例', + 'Default': '默认' }, 'zh-tw': { 'About author': '關於作者', @@ -759,7 +768,10 @@ 'Reconnect': '重新連接', 'Hide subtitle': '隱藏字幕', 'Show subtitle': '顯示字幕', - 'Screenshot': '截圖' + 'Screenshot': '截圖', + 'Play speed': '播放速度', + 'Aspect ratio': '畫面比例', + 'Default': '默認' } }; @@ -805,7 +817,7 @@ this.art = art; this.init(); this.eventBind(); - this.firstLoad = false; + this.firstCanplay = false; this.reconnectTime = 0; this.maxReconnectTime = 5; } @@ -857,10 +869,10 @@ _this.art.loading.show(); }); this.art.on('video:canplay', function () { - if (!_this.firstLoad) { - _this.firstLoad = true; + if (!_this.firstCanplay) { + _this.firstCanplay = true; - _this.art.emit('video:firstload'); + _this.art.emit('player:firstCanplay'); } _this.art.controls.show(); @@ -1011,14 +1023,43 @@ key: "playbackRate", value: function playbackRate(rate) { var _this$art7 = this.art, - $video = _this$art7.refs.$video, + _this$art7$refs = _this$art7.refs, + $video = _this$art7$refs.$video, + $player = _this$art7$refs.$player, i18n = _this$art7.i18n, notice = _this$art7.notice; var newRate = clamp(rate, 0.1, 10); $video.playbackRate = newRate; + $player.dataset.playbackRate = newRate; notice.show("".concat(i18n.get('Rate'), ": ").concat(newRate, "x")); this.art.emit('playbackRate', newRate); } + }, { + key: "aspectRatio", + value: function aspectRatio(ratio) { + var _this$art8 = this.art, + _this$art8$refs = _this$art8.refs, + $video = _this$art8$refs.$video, + $player = _this$art8$refs.$player, + i18n = _this$art8.i18n, + notice = _this$art8.notice; + + if (ratio.length === 2) { + var rate = Number(ratio[0]) / Number(ratio[1]); + $video.style.width = "".concat(100 / rate, "%"); + $video.style.height = '100%'; + $video.style.padding = "0 ".concat(($player.clientWidth - $player.clientWidth / rate) / 2, "px"); + } else { + $video.style.width = null; + $video.style.height = null; + $video.style.padding = null; + } + + var ratioName = ratio.length === 2 ? "".concat(ratio[0], ":").concat(ratio[1]) : ratio[0]; + $player.dataset.aspectRatio = ratioName; + notice.show("".concat(i18n.get('Aspect ratio'), ": ").concat(ratioName)); + this.art.emit('aspectRatio', ratio); + } }]); return Player; @@ -1772,7 +1813,7 @@ this.art = art; this.$map = {}; - this.art.on('video:firstload', function () { + this.art.on('player:firstCanplay', function () { _this.init(); _this.mount(); @@ -1949,19 +1990,61 @@ var _this$art = this.art, option = _this$art.option, + player = _this$art.player, i18n = _this$art.i18n, refs = _this$art.refs, proxy = _this$art.events.proxy; option.contextmenu.push({ + disable: !option.playbackRate, + name: 'playbackRate', + html: "".concat(i18n.get('Play speed'), ": 0.50.751.01.251.52.0"), + click: function click(art, event) { + var target = event.target; + var rate = Number(target.innerText); + + if (rate && typeof rate === 'number') { + player.playbackRate(rate); + var sublings = Array.from(target.parentElement.querySelectorAll('span')).filter(function (item) { + return item !== target; + }); + sublings.forEach(function (item) { + return item.classList.remove('current'); + }); + target.classList.add('current'); + } + } + }, { + disable: !option.aspectRatio, + name: 'aspectRatio', + html: "".concat(i18n.get('Aspect ratio'), ": ").concat(i18n.get('Default'), "4:316:9"), + click: function click(art, event) { + var target = event.target; + var ratio = target.innerText; + + if (ratio) { + player.aspectRatio(ratio.split(':')); + var sublings = Array.from(target.parentElement.querySelectorAll('span')).filter(function (item) { + return item !== target; + }); + sublings.forEach(function (item) { + return item.classList.remove('current'); + }); + target.classList.add('current'); + } + } + }, { + disable: false, name: 'info', html: i18n.get('Video info'), click: function click() { _this.art.info.show(); } }, { + disable: false, name: 'version', html: 'ArtPlayer 1.0.0' }, { + disable: false, name: 'close', html: i18n.get('Close'), click: function click() { @@ -1997,7 +2080,9 @@ proxy = _this$art2.events.proxy; refs.$contextmenu = document.createElement('div'); refs.$contextmenu.classList.add('artplayer-contextmenu'); - option.contextmenu.forEach(function (item) { + option.contextmenu.filter(function (item) { + return !item.disable; + }).forEach(function (item) { id$1++; var $menu = document.createElement('div'); $menu.setAttribute('data-art-menu-id', id$1); @@ -2155,20 +2240,26 @@ }); }); } + }, { + key: "readInfo", + value: function readInfo() { + var _this$art$refs2 = this.art.refs, + $infoPanel = _this$art$refs2.$infoPanel, + $video = _this$art$refs2.$video; + var types = Array.from($infoPanel.querySelectorAll('[data-video]')); + types.forEach(function (item) { + var value = $video[item.dataset.video]; + item.innerHTML = value !== undefined ? value : 'unknown'; + }); + } }, { key: "loop", value: function loop() { var _this2 = this; - var _this$art$refs2 = this.art.refs, - $infoPanel = _this$art$refs2.$infoPanel, - $video = _this$art$refs2.$video; + this.readInfo(); this.timer = setTimeout(function () { - var types = Array.from($infoPanel.querySelectorAll('[data-video]')); - types.forEach(function (item) { - var value = $video[item.dataset.video]; - item.innerHTML = value !== undefined ? value : 'unknown'; - }); + _this2.readInfo(); _this2.loop(); }, 1000); @@ -2725,6 +2816,8 @@ }, screenshot: true, autoplay: false, + playbackRate: true, + aspectRatio: true, loop: false, type: '', mimeCodec: '', diff --git a/docs/js/artplayer.js.map b/docs/js/artplayer.js.map index 41db6c82a..a8a8734d2 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/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../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/inherits.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/index.js","../../src/verification/scheme.js","../../src/verification/index.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/controls/danmu.js","../../src/controls/fullscreen.js","../../src/controls/pip.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/icons/index.js","../../src/controls/playAndPause.js","../../src/controls/progress.js","../../src/controls/subtitle.js","../../src/controls/time.js","../../src/controls/volume.js","../../src/controls/setting.js","../../src/controls/thumbnails.js","../../src/controls/screenshot.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmu.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/index.js"],"sourcesContent":["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 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;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","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;","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 _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","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 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\nexport function errorHandle(condition, msg) {\n const isFun = typeof condition === 'function';\n if (isFun ? !isFun() : !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.lastElementChild;\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\nexport function deepMerge(...sources) {\n const isObject = value => value !== null && typeof value === 'object';\n let returnValue = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n } else if (isObject(source)) {\n if (source instanceof Element) {\n return source;\n }\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n let value = source[key];\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n }\n }\n }\n return returnValue;\n}\n\nexport function getStorage(key) {\n const storage = JSON.parse(localStorage.getItem('artplayer_settings')) || {};\n return key ? storage[key] : storage;\n}\n\nexport function setStorage(key, value) {\n const storage = Object.assign({}, getStorage(), {\n [key]: value\n });\n localStorage.setItem('artplayer_settings', JSON.stringify(storage));\n}\n\nexport function getType(val) {\n const { toString } = Object.prototype;\n const type = toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, '');\n return type;\n}\n\nexport function tooltip(target, msg, pos = 'up') {\n target.setAttribute('data-balloon', msg);\n target.setAttribute('data-balloon-pos', pos);\n}\n\nexport function sleep(ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","const validElement = (key, value, type, path) => {\n let handle = false;\n let msg = `${path.join('.')}.${key} require 'string' or 'Element' type, but got '${type}'`;\n\n if (type === 'string') {\n if (value.trim() === '') {\n handle = false;\n msg = `${path.join('.')}.${key} can not be empty'`;\n } else {\n handle = true;\n }\n }\n\n if (value instanceof Element) {\n handle = true;\n }\n\n return {\n handle: handle,\n msg: msg\n };\n};\n\nexport default {\n container: {\n validator: validElement\n },\n url: {\n type: 'string',\n required: true\n },\n poster: {\n type: 'string'\n },\n volume: {\n type: 'number'\n },\n thumbnails: {\n type: 'object',\n child: {\n url: {\n type: 'string'\n },\n number: {\n type: 'number'\n },\n width: {\n type: 'number'\n },\n height: {\n type: 'number'\n },\n column: {\n type: 'number'\n }\n }\n },\n screenshot: {\n type: 'boolean'\n },\n autoplay: {\n type: 'boolean'\n },\n loop: {\n type: 'boolean'\n },\n type: {\n type: 'string'\n },\n mimeCodec: {\n type: 'string'\n },\n layers: {\n type: 'array',\n child: {\n name: {\n type: 'string'\n },\n index: {\n type: 'number'\n },\n html: {\n validator: validElement\n },\n style: {\n type: 'object'\n }\n }\n },\n contextmenu: {\n type: 'array',\n child: {\n name: {\n type: 'string'\n },\n html: {\n validator: validElement\n },\n click: {\n type: 'function'\n }\n }\n },\n loading: {\n type: 'string'\n },\n theme: {\n type: 'string'\n },\n hotkey: {\n type: 'boolean'\n },\n subtitle: {\n type: 'object',\n child: {\n url: {\n type: 'string'\n },\n style: {\n type: 'object'\n }\n }\n },\n controls: {\n type: 'array',\n child: {\n option: {\n disable: {\n type: 'boolean'\n },\n position: {\n type: 'string'\n },\n index: {\n type: 'number'\n }\n }\n }\n },\n highlight: {\n type: 'array',\n child: {\n time: {\n type: 'number'\n },\n text: {\n type: 'string'\n }\n }\n },\n moreVideoAttr: {\n type: 'object'\n },\n lang: {\n type: 'string'\n }\n};\n","import { errorHandle, getType } from '../utils';\nimport scheme from './scheme';\n\nexport default function validOption(option, param = scheme, path = ['option']) {\n Object.keys(option).some(key => {\n const paramObj = param[key];\n\n if (!paramObj) {\n return true;\n }\n\n const value = option[key];\n const type = getType(value);\n const paramType = paramObj.type;\n const paramRequired = paramObj.required;\n const paramChild = paramObj.child;\n const paramValidator = paramObj.validator;\n\n if (type === 'object' && paramChild) {\n validOption(value, paramChild, path.concat(key));\n }\n\n if (type === 'array' && paramChild) {\n value.forEach((item, index) => {\n validOption(item, paramChild, path.concat(`${key}[${index}]`));\n });\n }\n\n if (paramValidator) {\n const result = paramValidator(key, value, type, path);\n errorHandle(result.handle, result.msg);\n } else {\n errorHandle(!paramRequired || value, `'${path.join('.')}.${key}' is required`);\n errorHandle(paramType === type, `'${path.join('.')}.${key}' require '${paramType}' type, but got '${type}'`);\n }\n\n return false;\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
\n
\n
[x]
\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.$noticeInner = refs.$container.querySelector('.artplayer-notice-inner');\n refs.$mask = refs.$container.querySelector('.artplayer-mask');\n refs.$info = refs.$container.querySelector('.artplayer-info');\n refs.$infoPanel = refs.$container.querySelector('.artplayer-info-panel');\n refs.$infoClose = refs.$container.querySelector('.artplayer-info-close');\n }\n}\n","let i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭',\n 'Video load failed': '视频加载失败',\n 'Volume': '音量',\n 'Play': '播放',\n 'Pause': '暂停',\n 'Rate': '速度',\n 'Mute': '静音',\n 'Reconnect': '重新连接',\n 'Hide subtitle': '隐藏字幕',\n 'Show subtitle': '显示字幕',\n 'Screenshot': '截图'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉',\n 'Video load failed': '影片載入失敗',\n 'Volume': '音量',\n 'Play': '播放',\n 'Pause': '暫停',\n 'Rate': '速度',\n 'Mute': '靜音',\n 'Reconnect': '重新連接',\n 'Hide subtitle': '隱藏字幕',\n 'Show subtitle': '顯示字幕',\n 'Screenshot': '截圖'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.option = option;\n this.init();\n }\n\n init() {\n this.language = i18nMap[this.option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n\n update(callback) {\n i18nMap = callback(i18nMap);\n this.init();\n }\n}\n","import { clamp, secondToTime, setStorage, sleep } 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 this.firstLoad = false;\n this.reconnectTime = 0;\n this.maxReconnectTime = 5;\n }\n\n init() {\n const { option, refs: { $video } } = this.art;\n Object.keys(option.moreVideoAttr).forEach(key => {\n const value = option.moreVideoAttr[key];\n $video[key] = value;\n });\n $video.volume = clamp(option.volume, 0, 1);\n $video.poster = option.poster;\n $video.autoplay = option.autoplay;\n\n // TODO\n $video.src = option.url;\n }\n\n eventBind() {\n const { option, events: { proxy }, refs: { $player, $video }, i18n, notice } = 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:waiting', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:seeking', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:canplay', () => {\n if (!this.firstLoad) {\n this.firstLoad = true;\n this.art.emit('video:firstload');\n }\n\n this.art.controls.show();\n this.art.mask.show();\n this.art.loading.hide();\n if (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 if (option.loop) {\n this.seek(0);\n this.play();\n }\n });\n\n this.art.on('video:error', () => {\n if (this.reconnectTime < this.maxReconnectTime) {\n sleep(1000).then(() => {\n this.reconnectTime++;\n $video.src = option.url;\n notice.show(`${i18n.get('Reconnect')}: ${this.reconnectTime}`);\n });\n } else {\n this.art.isError = true;\n this.art.isPlaying = false;\n this.art.loading.hide();\n this.art.controls.hide();\n $player.classList.add('artplayer-error');\n notice.show(i18n.get('Video load failed'), false);\n this.art.destroy();\n }\n });\n }\n\n play() {\n const { refs: { $video }, i18n, notice } = this.art;\n const promise = $video.play();\n notice.show(i18n.get('Play'));\n this.art.emit('play', $video);\n return promise;\n }\n\n pause() {\n const { refs: { $video }, i18n, notice } = this.art;\n $video.pause();\n notice.show(i18n.get('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 { refs: { $video }, notice } = this.art;\n let newTime = Math.max(time, 0);\n if ($video.duration) {\n newTime = Math.min(newTime, $video.duration);\n }\n $video.currentTime = newTime;\n notice.show(`${secondToTime(newTime)} / ${secondToTime($video.duration)}`);\n this.art.emit('seek', newTime);\n }\n\n volume(percentage) {\n const { refs: { $video }, i18n, notice } = this.art;\n if (percentage !== undefined) {\n $video.volume = clamp(percentage, 0, 1);\n notice.show(`${i18n.get('Volume')}: ${parseInt($video.volume * 100)}`);\n if ($video.volume !== 0) {\n setStorage('volume', $video.volume);\n }\n this.art.emit('volume', $video.volume);\n }\n return $video.volume || 0;\n }\n\n currentTime() {\n return this.art.refs.$video.currentTime || 0;\n }\n\n duration() {\n return this.art.refs.$video.duration || 0;\n }\n\n playbackRate(rate) {\n const { refs: { $video }, i18n, notice } = this.art;\n const newRate = clamp(rate, 0.1, 10);\n $video.playbackRate = newRate;\n notice.show(`${i18n.get('Rate')}: ${newRate}x`);\n this.art.emit('playbackRate', newRate);\n }\n}\n","export default class Danmu {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Fullscreen {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Pip {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\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 loading from './loading.svg';\nimport playBig from './play-big.svg';\nimport play from './play.svg';\nimport pause from './pause.svg';\nimport volume from './volume.svg';\nimport volumeClose from './volume-close.svg';\nimport subtitle from './subtitle.svg';\nimport subtitleClose from './subtitle-close.svg';\nimport screenshot from './screenshot.svg';\n\nconst icons = {\n loading,\n playBig,\n play,\n pause,\n volume,\n volumeClose,\n subtitle,\n subtitleClose,\n screenshot\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 { append, tooltip } from '../utils';\nimport icons from '../icons';\n\nexport default class PlayAndPause {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n const { events: { proxy }, player, i18n } = art;\n this.$play = append(this.option.$control, icons.play);\n this.$pause = append(this.option.$control, icons.pause);\n tooltip(this.$play, i18n.get('Play'));\n tooltip(this.$pause, i18n.get('Pause'));\n this.$pause.style.display = 'none';\n\n proxy(this.$play, 'click', () => {\n player.play();\n });\n\n proxy(this.$pause, 'click', () => {\n player.pause();\n });\n\n art.on('video:playing', () => {\n this.$play.style.display = 'none';\n this.$pause.style.display = 'block';\n });\n\n art.on('video:pause', () => {\n this.$play.style.display = 'block';\n this.$pause.style.display = 'none';\n });\n }\n}\n","import { append, clamp, secondToTime } from '../utils';\n\nexport default class Progress {\n constructor(option) {\n this.option = option;\n this.isDroging = false;\n this.getLoaded = this.getLoaded.bind(this);\n this.getPlayed = this.getPlayed.bind(this);\n this.set = this.set.bind(this);\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n option: { highlight, theme },\n events: { proxy },\n refs: { $video },\n player\n } = this.art;\n\n append(\n this.option.$control,\n `\n
\n
\n
\n
\n
\n
\n
\n `\n );\n\n this.$loaded = this.option.$control.querySelector('.art-progress-loaded');\n this.$played = this.option.$control.querySelector('.art-progress-played');\n this.$highlight = this.option.$control.querySelector('.art-progress-highlight');\n this.$indicator = this.option.$control.querySelector('.art-progress-indicator');\n this.$tip = this.option.$control.querySelector('.art-progress-tip');\n\n this.set('loaded', this.getLoaded());\n highlight.forEach(item => {\n const left = Number(item.time) / $video.duration;\n append(this.$highlight, `\n \n `\n );\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.$control, 'mousemove', event => {\n this.$tip.style.display = 'block';\n if (event.path.indexOf(this.$highlight) > -1) {\n this.showHighlight(event);\n } else {\n this.showTime(event);\n }\n });\n\n proxy(this.option.$control, 'mouseout', () => {\n this.$tip.style.display = 'none';\n });\n\n proxy(this.option.$control, 'click', event => {\n if (event.target !== this.$indicator) {\n const { second, percentage } = this.getPosFromEvent(event);\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\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.getPosFromEvent(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 showHighlight(event) {\n const { $video } = this.art.refs;\n const { text, time } = event.target.dataset;\n this.$tip.innerHTML = text;\n const left =\n Number(time) / $video.duration * this.option.$control.clientWidth +\n event.target.clientWidth / 2 -\n this.$tip.clientWidth / 2;\n this.$tip.style.left = `${left}px`;\n }\n\n showTime(event) {\n const { width, time } = this.getPosFromEvent(event);\n const tipWidth = this.$tip.clientWidth;\n this.$tip.innerHTML = time;\n if (width <= tipWidth / 2) {\n this.$tip.style.left = 0;\n } else if (width > this.option.$control.clientWidth - tipWidth / 2) {\n this.$tip.style.left = `${this.option.$control.clientWidth - tipWidth}px`;\n } else {\n this.$tip.style.left = `${width - tipWidth / 2}px`;\n }\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\n ? $video.buffered.end($video.buffered.length - 1) / $video.duration\n : 0;\n }\n\n getPosFromEvent(event) {\n const { $video, $progress } = this.art.refs;\n const { left } = $progress.getBoundingClientRect();\n const width = clamp(event.x - left, 0, $progress.clientWidth);\n const second = width / $progress.clientWidth * $video.duration;\n const time = secondToTime(second);\n const percentage = clamp(width / $progress.clientWidth, 0, 1);\n return { second, time, width, percentage };\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","import { append, tooltip } from '../utils';\nimport icons from '../icons';\n\nexport default class Subtitle {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n const { events: { proxy }, subtitle, i18n } = art;\n this.$subtitle = append(this.option.$control, icons.subtitle);\n this.$subtitleClose = append(this.option.$control, icons.subtitleClose);\n tooltip(this.$subtitle, i18n.get('Hide subtitle'));\n tooltip(this.$subtitleClose, i18n.get('Show subtitle'));\n this.$subtitleClose.style.display = 'none';\n\n proxy(this.$subtitle, 'click', () => {\n subtitle.hide();\n this.$subtitle.style.display = 'none';\n this.$subtitleClose.style.display = 'block';\n });\n\n proxy(this.$subtitleClose, 'click', () => {\n subtitle.show();\n this.$subtitle.style.display = 'block';\n this.$subtitleClose.style.display = 'none';\n });\n }\n}\n","import { secondToTime } from '../utils';\n\nexport default class Time {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n this.option.$control.innerHTML = '00:00 / 00:00';\n\n this.art.on('video:canplay', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n\n this.art.on('video:timeupdate', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n\n this.art.on('video:seeking', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n }\n\n getTime() {\n const { player } = this.art;\n return `${secondToTime(player.currentTime())} / ${secondToTime(player.duration())}`;\n }\n}\n","import { append, getStorage, clamp, tooltip } from '../utils';\nimport icons from '../icons';\n\nexport default class Volume {\n constructor(option) {\n this.option = option;\n this.isDroging = false;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { events: { proxy }, player, i18n } = this.art;\n this.$volume = append(this.option.$control, icons.volume);\n this.$volumeClose = append(this.option.$control, icons.volumeClose);\n this.$volumePanel = append(this.option.$control, '
');\n this.$volumeHandle = append(this.$volumePanel, '
');\n tooltip(this.$volume, i18n.get('Mute'));\n this.$volumeClose.style.display = 'none';\n\n const volume = getStorage('volume');\n this.setVolumeHandle(volume);\n player.volume(volume);\n\n proxy(this.$volume, 'click', () => {\n this.$volume.style.display = 'none';\n this.$volumeClose.style.display = 'block';\n player.volume(0);\n });\n\n proxy(this.$volumeClose, 'click', () => {\n this.$volume.style.display = 'block';\n this.$volumeClose.style.display = 'none';\n player.volume(getStorage('volume'));\n });\n\n proxy(this.option.$control, 'mouseenter', () => {\n this.$volumePanel.classList.add('art-volume-panel-hover');\n\n // TODO\n setTimeout(() => {\n this.setVolumeHandle(player.volume());\n }, 200);\n });\n\n proxy(this.option.$control, 'mouseleave', () => {\n this.$volumePanel.classList.remove('art-volume-panel-hover');\n });\n\n proxy(this.$volumePanel, 'click', event => {\n this.volumeChangeFromEvent(event);\n });\n\n proxy(this.$volumeHandle, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(this.$volumeHandle, 'mousemove', event => {\n if (this.isDroging) {\n this.volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n }\n });\n\n this.art.on('video:volumechange', () => {\n const percentage = player.volume();\n this.setVolumeHandle(percentage);\n if (percentage === 0) {\n this.$volume.style.display = 'none';\n this.$volumeClose.style.display = 'block';\n } else {\n this.$volume.style.display = 'block';\n this.$volumeClose.style.display = 'none';\n }\n });\n }\n\n volumeChangeFromEvent(event) {\n const { player } = this.art;\n const { left: panelLeft, width: panelWidth } = this.$volumePanel.getBoundingClientRect();\n const { width: handleWidth } = this.$volumeHandle.getBoundingClientRect();\n const percentage = clamp(event.x - panelLeft - handleWidth / 2, 0, panelWidth - handleWidth / 2) / (panelWidth - handleWidth);\n player.volume(percentage);\n }\n\n setVolumeHandle(percentage = 0.7) {\n const { width: panelWidth } = this.$volumePanel.getBoundingClientRect();\n const { width: handleWidth } = this.$volumeHandle.getBoundingClientRect();\n const width = handleWidth / 2 + (panelWidth - handleWidth) * percentage - handleWidth / 2;\n this.$volumeHandle.style.left = `${width}px`;\n }\n}\n","export default class Setting {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","import { errorHandle } from '../utils';\n\nexport default class Thumbnails {\n constructor(option) {\n this.option = option;\n this.loading = false;\n this.isLoad = false;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n refs: { $progress },\n events: { proxy }\n } = this.art;\n\n proxy($progress, 'mousemove', event => {\n if (!this.loading) {\n this.loading = true;\n this.load(this.art.option.thumbnails.url).then(() => {\n this.isLoad = true;\n });\n }\n\n if (this.isLoad) {\n this.option.$control.style.display = 'block';\n this.showThumbnails(event);\n }\n });\n\n proxy($progress, 'mouseout', () => {\n this.option.$control.style.display = 'none';\n });\n }\n\n load(url) {\n const { proxy } = this.art.events;\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.src = url;\n\n if (image.complete) {\n return resolve(image);\n }\n\n proxy(image, 'load', () => resolve(image));\n\n proxy(image, 'error', () => reject(image));\n });\n }\n\n showThumbnails(event) {\n const { refs: { $progress }, controls } = this.art;\n errorHandle(controls.progress, '\\'thumbnails\\' control dependent on \\'progress\\' control');\n const { width: posWidth } = controls.progress.getPosFromEvent(event);\n const { url, height, width, number, column } = this.art.option.thumbnails;\n const perWidth = $progress.clientWidth / number;\n const perIndex = Math.ceil(posWidth / perWidth);\n let yIndex = Math.ceil(perIndex / column);\n let xIndex = perIndex % column || column;\n\n this.option.$control.style.backgroundImage = `url(${url})`;\n this.option.$control.style.height = `${height}px`;\n this.option.$control.style.width = `${width}px`;\n this.option.$control.style.backgroundPosition = `-${--xIndex * width}px -${--yIndex * height}px`;\n\n if (posWidth <= width / 2) {\n this.option.$control.style.left = 0;\n } else if (posWidth > $progress.clientWidth - width / 2) {\n this.option.$control.style.left = `${$progress.clientWidth - width}px`;\n } else {\n this.option.$control.style.left = `${posWidth - width / 2}px`;\n }\n }\n}\n","import { append, tooltip, secondToTime } from '../utils';\nimport icons from '../icons';\n\nexport default class Screenshot {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n const { events: { proxy }, i18n, notice } = this.art;\n this.$screenshot = append(this.option.$control, icons.screenshot);\n tooltip(this.$screenshot, i18n.get('Screenshot'));\n proxy(this.$screenshot, 'click', () => {\n try {\n this.captureFrame();\n } catch (error) {\n notice.show(error);\n }\n });\n }\n\n captureFrame() {\n const { $video } = this.art.refs;\n const canvas = document.createElement('canvas');\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n canvas.getContext('2d').drawImage($video, 0, 0);\n const dataUri = canvas.toDataURL('image/png');\n const elink = document.createElement('a');\n elink.style.display = 'none';\n elink.href = dataUri;\n elink.download = `${secondToTime($video.currentTime)}.png`;\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n }\n}\n","import Danmu from './danmu';\nimport Fullscreen from './fullscreen';\nimport Pip from './pip';\nimport PlayAndPause from './playAndPause';\nimport Progress from './progress';\nimport Subtitle from './subtitle';\nimport Time from './time';\nimport Volume from './volume';\nimport Setting from './setting';\nimport Thumbnails from './thumbnails';\nimport Screenshot from './screenshot';\n\nlet id = 0;\nexport default class Controls {\n constructor(art) {\n this.art = art;\n this.$map = {};\n this.art.on('video:firstload', () => {\n this.init();\n this.mount();\n });\n }\n\n init() {\n this.add(new Progress({\n disable: false,\n position: 'top',\n index: 10\n }));\n\n this.add(new Thumbnails({\n disable: !this.art.option.thumbnails.url,\n position: 'top',\n index: 20\n }));\n\n this.add(new PlayAndPause({\n disable: false,\n position: 'left',\n index: 10\n }));\n\n this.add(new Volume({\n disable: false,\n position: 'left',\n index: 20\n }));\n\n this.add(new Time({\n disable: false,\n position: 'left',\n index: 30\n }));\n\n this.add(new Danmu({\n disable: false,\n position: 'right',\n index: 10\n }));\n\n this.add(new Screenshot({\n disable: !this.art.option.screenshot,\n position: 'right',\n index: 20\n }));\n\n this.add(new Subtitle({\n disable: !this.art.option.subtitle.url,\n position: 'right',\n index: 30\n }));\n\n this.add(new Setting({\n disable: false,\n position: 'right',\n index: 40\n }));\n\n this.add(new Pip({\n disable: false,\n position: 'right',\n index: 50\n }));\n\n this.add(new Fullscreen({\n disable: false,\n position: 'right',\n index: 60\n }));\n\n this.art.option.controls.forEach(item => {\n this.add(item);\n });\n }\n\n add(control) {\n const { option } = control;\n if (option && !option.disable) {\n id++;\n const name = control.constructor.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 option.$control = $control;\n this.commonMethod(control);\n (this.$map[option.position] || (this.$map[option.position] = [])).push($control);\n control.apply && control.apply(this.art);\n this[name] = 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(control) {\n Object.defineProperty(control, 'hide', {\n value: () => {\n control.option.$control.style.display = 'none';\n this.art.emit('control:hide', control.option.$control);\n }\n });\n\n Object.defineProperty(control, 'show', {\n value: () => {\n control.option.$control.style.display = 'block';\n this.art.emit('control:show', control.option.$control);\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, setStyle } from './utils';\n\nlet id = 0;\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 name: 'info',\n html: i18n.get('Video info'),\n click: () => {\n this.art.info.show();\n }\n },\n {\n name: 'version',\n html: 'ArtPlayer __VERSION__'\n },\n {\n name: 'close',\n html: 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 id++;\n const $menu = document.createElement('div');\n $menu.setAttribute('data-art-menu-id', id);\n $menu.setAttribute('class', `art-menu art-menu-${item.name || id}`);\n append($menu, item.html);\n setStyle($menu, item.style || {});\n if (item.click) {\n proxy($menu, 'click', event => {\n event.preventDefault();\n item.click(this.art, event);\n this.hide();\n this.art.emit('contextmenu:click', $menu);\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","import { append } from './utils';\n\nexport default class Info {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { refs: { $infoClose }, events: { proxy } } = this.art;\n proxy($infoClose, 'click', () => {\n this.hide();\n });\n }\n\n show() {\n const { $info, $infoPanel } = this.art.refs;\n $info.style.display = 'block';\n if (!$infoPanel.innerHTML) {\n append($infoPanel, this.creatInfo());\n this.getHeader();\n }\n clearTimeout(this.timer);\n this.loop();\n this.art.emit('info:show', $info);\n }\n\n creatInfo() {\n const infoHtml = [];\n\n infoHtml.push(`\n
\n
Player version:
\n
__VERSION__
\n
\n `);\n\n infoHtml.push(`\n
\n
Video url:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video type:
\n
loading...
\n
\n `);\n\n infoHtml.push(`\n
\n
Video size:
\n
loading...
\n
\n `);\n\n infoHtml.push(`\n
\n
Video volume:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video time:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video duration:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video resolution:
\n
\n x \n
\n
\n `);\n\n return infoHtml.join('');\n }\n\n getHeader() {\n const { option: { url }, refs: { $infoPanel } } = this.art;\n const types = Array.from($infoPanel.querySelectorAll('[data-head]'));\n fetch(url, {\n method: 'HEAD'\n }).then(data => {\n types.forEach(item => {\n const value = data.headers.get(item.dataset.head);\n item.innerHTML = value !== undefined ? value : 'unknown';\n });\n }).catch(() => {\n types.forEach(item => {\n item.innerHTML = 'unknown';\n });\n });\n }\n\n loop() {\n const { $infoPanel, $video } = this.art.refs;\n this.timer = setTimeout(() => {\n const types = Array.from($infoPanel.querySelectorAll('[data-video]'));\n types.forEach(item => {\n const value = $video[item.dataset.video];\n item.innerHTML = value !== undefined ? value : 'unknown';\n });\n this.loop();\n }, 1000);\n }\n\n hide() {\n const { $info } = this.art.refs;\n $info.style.display = 'none';\n clearTimeout(this.timer);\n this.art.emit('info:hide', $info);\n }\n}\n","import { errorHandle, getExt, setStyle } from './utils';\n\nexport default class Subtitle {\n constructor(art) {\n this.art = art;\n\n const { url } = this.art.option.subtitle;\n if (url) {\n this.checkExt(url);\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\n this.load(subtitle.url).then(data => {\n $track.src = data;\n $video.appendChild($track);\n this.art.refs.$track = $track;\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\n load(url) {\n let type;\n return fetch(url)\n .then(response => {\n type = response.headers.get('Content-Type');\n return response.text();\n })\n .then(text => {\n if ((/x-subrip/gi).test(type)) {\n return this.srtToVtt(text);\n }\n return url;\n })\n .catch(err => {\n throw err;\n });\n }\n\n srtToVtt(text) {\n const vttText = 'WEBVTT \\r\\n\\r\\n'.concat(\n text\n .replace(/\\{\\\\([ibu])\\}/g, '')\n .replace(/\\{\\\\([ibu])1\\}/g, '<$1>')\n .replace(/\\{([ibu])\\}/g, '<$1>')\n .replace(/\\{\\/([ibu])\\}/g, '')\n .replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2')\n .concat('\\r\\n\\r\\n')\n );\n return URL.createObjectURL(\n new Blob([vttText], {\n type: 'text/vtt'\n })\n );\n }\n\n checkExt(url) {\n const ext = getExt(url);\n errorHandle(\n ext === 'vtt' || ext === 'srt',\n `'subtitle.url' option require 'vtt' or 'srt' format, but got '${ext}'.`\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 this.checkExt(url);\n errorHandle($track, 'You need to initialize the subtitle option first.');\n this.load(url).then(data => {\n if (url !== data) {\n $track.src = data;\n this.art.emit('subtitle:switch', url);\n }\n });\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 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 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 switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n break;\n case 38:\n event.preventDefault();\n player.volume(player.volume() + 0.05);\n break;\n case 40:\n event.preventDefault();\n player.volume(player.volume() - 0.05);\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.filter(item => item.disable === false).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 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 = true, time = 1000) {\n const { $notice, $noticeInner } = this.art.refs;\n $notice.style.display = 'block';\n $noticeInner.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n if (autoHide) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.hide();\n }, time);\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 refs,\n events: { proxy }\n } = this.art;\n\n append(refs.$mask, icons.playBig);\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 = 'block';\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';\nimport 'balloon-css/balloon.min.css';\nimport { deepMerge } from './utils';\nimport validOption from './verification';\nimport config from './config';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\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 = deepMerge({}, 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 thumbnails: {\n url: '',\n number: 60,\n width: 160,\n height: 90,\n column: 10\n },\n screenshot: true,\n autoplay: false,\n loop: false,\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 highlight: [],\n moreVideoAttr: {\n 'controls': false,\n 'preload': 'auto',\n 'webkit-playsinline': true,\n 'playsinline': true\n },\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(Plugin) {\n const name = Plugin.name.toLowerCase();\n const installedPlugins = this.plugins || (this.plugins = {});\n if (!installedPlugins[name]) {\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n installedPlugins[name] = new Plugin(...args);\n this.prototype.emit('use', Plugin);\n }\n return this;\n }\n\n init() {\n this.isError = false;\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.notice = new Notice(this);\n this.events = new Events(this);\n this.player = new Player(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.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(removeHtml = false) {\n this.events.destroy();\n instances.splice(instances.indexOf(this), 1);\n if (removeHtml) {\n this.refs.$container.innerHTML = '';\n }\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","isFun","clamp","num","a","b","Math","max","min","getExt","url","includes","split","trim","toLowerCase","pop","append","parent","child","Element","appendChild","insertAdjacentHTML","lastElementChild","setStyle","element","styles","Object","keys","forEach","key","style","secondToTime","second","add0","String","hour","floor","sec","map","join","deepMerge","isObject","value","returnValue","sources","source","Array","isArray","hasOwnProperty","getStorage","storage","JSON","parse","localStorage","getItem","setStorage","assign","setItem","stringify","getType","val","toString","prototype","type","call","slice","replace","tooltip","target","pos","setAttribute","sleep","ms","Promise","resolve","setTimeout","validElement","path","handle","container","validator","required","poster","volume","thumbnails","number","width","height","column","screenshot","autoplay","loop","mimeCodec","layers","index","html","contextmenu","click","loading","theme","hotkey","subtitle","controls","option","disable","position","highlight","time","text","moreVideoAttr","lang","validOption","param","scheme","some","paramObj","paramType","paramRequired","paramChild","paramValidator","concat","item","result","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","$noticeInner","$mask","$info","$infoPanel","$infoClose","i18nMap","I18n","language","callback","Player","eventBind","firstLoad","reconnectTime","maxReconnectTime","src","proxy","i18n","notice","config","eventName","event","emit","on","show","hide","mask","promise","play","undefined","then","catch","err","console","warn","isPlaying","seek","get","isError","classList","add","destroy","pause","newTime","duration","currentTime","percentage","parseInt","rate","newRate","playbackRate","Danmu","Fullscreen","Pip","icons","playBig","volumeClose","subtitleClose","creatDomFromSvg","tmp","document","createElement","childNodes","PlayAndPause","player","$play","$control","$pause","display","Progress","isDroging","getLoaded","bind","getPlayed","set","$loaded","$played","$highlight","$indicator","$tip","left","Number","indexOf","showHighlight","showTime","getPosFromEvent","remove","dataset","clientWidth","tipWidth","buffered","length","end","getBoundingClientRect","x","Subtitle","$subtitleClose","Time","getTime","Volume","$volume","$volumeClose","$volumePanel","$volumeHandle","setVolumeHandle","volumeChangeFromEvent","panelLeft","panelWidth","handleWidth","Setting","Thumbnails","isLoad","load","showThumbnails","reject","image","Image","complete","progress","posWidth","perWidth","perIndex","ceil","yIndex","xIndex","backgroundImage","backgroundPosition","Screenshot","$screenshot","captureFrame","error","canvas","videoWidth","videoHeight","getContext","drawImage","dataUri","toDataURL","elink","href","download","body","removeChild","id","Controls","$map","mount","control","commonMethod","push","apply","sort","controlIndex","defineProperty","Contextmenu","info","preventDefault","isFocus","$contextmenu","creatMenu","setPos","$menu","mouseX","clientX","mouseY","clientY","cHeight","cWidth","cLeft","cTop","top","mHeight","mWidth","menuLeft","menuTop","Info","creatInfo","getHeader","clearTimeout","timer","infoHtml","types","from","querySelectorAll","fetch","method","data","headers","head","checkExt","$track","default","kind","textTracks","track","activeCues","cue","template","getCueAsHTML","response","test","srtToVtt","vttText","URL","createObjectURL","Blob","ext","Events","destroyEvents","addEventListener","removeEventListener","Hotkey","window","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","toggle","Layers","filter","$layer","zIndex","Loading","Notice","autoHide","Mask","instances","Artplayer","DEFAULTS","danmu","removeHtml","splice","Plugin","installedPlugins","plugins","args","arguments","unshift","navigator","Emitter"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"artplayer.js","sources":["../../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/construct.js","../../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../../node_modules/@babel/runtime/helpers/iterableToArray.js","../../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../../node_modules/@babel/runtime/helpers/toConsumableArray.js","../../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/inherits.js","../../node_modules/@babel/runtime/helpers/defineProperty.js","../../node_modules/@babel/runtime/helpers/objectSpread.js","../../node_modules/@babel/runtime/helpers/isNativeFunction.js","../../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../../src/utils/index.js","../../src/verification/scheme.js","../../src/verification/index.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/controls/danmu.js","../../src/controls/fullscreen.js","../../src/controls/pip.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/icons/index.js","../../src/controls/playAndPause.js","../../src/controls/progress.js","../../src/controls/subtitle.js","../../src/controls/time.js","../../src/controls/volume.js","../../src/controls/setting.js","../../src/controls/thumbnails.js","../../src/controls/screenshot.js","../../src/controls/index.js","../../src/contextmenu.js","../../src/danmu.js","../../src/info.js","../../src/subtitle.js","../../src/events.js","../../src/hotkey.js","../../src/layers.js","../../src/loading.js","../../src/notice.js","../../src/mask.js","../../src/index.js"],"sourcesContent":["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 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;","function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nmodule.exports = _nonIterableSpread;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","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;","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 _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction;","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 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\nexport function errorHandle(condition, msg) {\n const isFun = typeof condition === 'function';\n if (isFun ? !isFun() : !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.lastElementChild;\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\nexport function deepMerge(...sources) {\n const isObject = value => value !== null && typeof value === 'object';\n let returnValue = {};\n for (const source of sources) {\n if (Array.isArray(source)) {\n if (!Array.isArray(returnValue)) {\n returnValue = [];\n }\n returnValue = [...returnValue, ...source];\n } else if (isObject(source)) {\n if (source instanceof Element) {\n return source;\n }\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n let value = source[key];\n if (isObject(value) && key in returnValue) {\n value = deepMerge(returnValue[key], value);\n }\n returnValue = { ...returnValue, [key]: value };\n }\n }\n }\n }\n return returnValue;\n}\n\nexport function getStorage(key) {\n const storage = JSON.parse(localStorage.getItem('artplayer_settings')) || {};\n return key ? storage[key] : storage;\n}\n\nexport function setStorage(key, value) {\n const storage = Object.assign({}, getStorage(), {\n [key]: value\n });\n localStorage.setItem('artplayer_settings', JSON.stringify(storage));\n}\n\nexport function getType(val) {\n const { toString } = Object.prototype;\n const type = toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, '');\n return type;\n}\n\nexport function tooltip(target, msg, pos = 'up') {\n target.setAttribute('data-balloon', msg);\n target.setAttribute('data-balloon-pos', pos);\n}\n\nexport function sleep(ms = 0) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n","const validElement = (key, value, type, path) => {\n let handle = false;\n let msg = `${path.join('.')}.${key} require 'string' or 'Element' type, but got '${type}'`;\n\n if (type === 'string') {\n if (value.trim() === '') {\n handle = false;\n msg = `${path.join('.')}.${key} can not be empty'`;\n } else {\n handle = true;\n }\n }\n\n if (value instanceof Element) {\n handle = true;\n }\n\n return {\n handle: handle,\n msg: msg\n };\n};\n\nexport default {\n container: {\n validator: validElement\n },\n url: {\n type: 'string',\n required: true\n },\n poster: {\n type: 'string'\n },\n volume: {\n type: 'number'\n },\n thumbnails: {\n type: 'object',\n child: {\n url: {\n type: 'string'\n },\n number: {\n type: 'number'\n },\n width: {\n type: 'number'\n },\n height: {\n type: 'number'\n },\n column: {\n type: 'number'\n }\n }\n },\n screenshot: {\n type: 'boolean'\n },\n autoplay: {\n type: 'boolean'\n },\n playbackRate: {\n type: 'boolean'\n },\n aspectRatio: {\n type: 'boolean'\n },\n loop: {\n type: 'boolean'\n },\n type: {\n type: 'string'\n },\n mimeCodec: {\n type: 'string'\n },\n layers: {\n type: 'array',\n child: {\n name: {\n type: 'string'\n },\n index: {\n type: 'number'\n },\n html: {\n validator: validElement\n },\n style: {\n type: 'object'\n }\n }\n },\n contextmenu: {\n type: 'array',\n child: {\n name: {\n type: 'string'\n },\n html: {\n validator: validElement\n },\n click: {\n type: 'function'\n }\n }\n },\n loading: {\n type: 'string'\n },\n theme: {\n type: 'string'\n },\n hotkey: {\n type: 'boolean'\n },\n subtitle: {\n type: 'object',\n child: {\n url: {\n type: 'string'\n },\n style: {\n type: 'object'\n }\n }\n },\n controls: {\n type: 'array',\n child: {\n option: {\n disable: {\n type: 'boolean'\n },\n position: {\n type: 'string'\n },\n index: {\n type: 'number'\n }\n }\n }\n },\n highlight: {\n type: 'array',\n child: {\n time: {\n type: 'number'\n },\n text: {\n type: 'string'\n }\n }\n },\n moreVideoAttr: {\n type: 'object'\n },\n lang: {\n type: 'string'\n }\n};\n","import { errorHandle, getType } from '../utils';\nimport scheme from './scheme';\n\nexport default function validOption(option, param = scheme, path = ['option']) {\n Object.keys(option).some(key => {\n const paramObj = param[key];\n\n if (!paramObj) {\n return true;\n }\n\n const value = option[key];\n const type = getType(value);\n const paramType = paramObj.type;\n const paramRequired = paramObj.required;\n const paramChild = paramObj.child;\n const paramValidator = paramObj.validator;\n\n if (type === 'object' && paramChild) {\n validOption(value, paramChild, path.concat(key));\n }\n\n if (type === 'array' && paramChild) {\n value.forEach((item, index) => {\n validOption(item, paramChild, path.concat(`${key}[${index}]`));\n });\n }\n\n if (paramValidator) {\n const result = paramValidator(key, value, type, path);\n errorHandle(result.handle, result.msg);\n } else {\n errorHandle(!paramRequired || value, `'${path.join('.')}.${key}' is required`);\n errorHandle(paramType === type, `'${path.join('.')}.${key}' require '${paramType}' type, but got '${type}'`);\n }\n\n return false;\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
\n
\n
[x]
\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.$noticeInner = refs.$container.querySelector('.artplayer-notice-inner');\n refs.$mask = refs.$container.querySelector('.artplayer-mask');\n refs.$info = refs.$container.querySelector('.artplayer-info');\n refs.$infoPanel = refs.$container.querySelector('.artplayer-info-panel');\n refs.$infoClose = refs.$container.querySelector('.artplayer-info-close');\n }\n}\n","let i18nMap = {\n 'zh-cn': {\n 'About author': '关于作者',\n 'Video info': '视频统计信息',\n 'Close': '关闭',\n 'Video load failed': '视频加载失败',\n 'Volume': '音量',\n 'Play': '播放',\n 'Pause': '暂停',\n 'Rate': '速度',\n 'Mute': '静音',\n 'Reconnect': '重新连接',\n 'Hide subtitle': '隐藏字幕',\n 'Show subtitle': '显示字幕',\n 'Screenshot': '截图',\n 'Play speed': '播放速度',\n 'Aspect ratio': '画面比例',\n 'Default': '默认'\n },\n 'zh-tw': {\n 'About author': '關於作者',\n 'Video info': '影片統計訊息',\n 'Close': '關閉',\n 'Video load failed': '影片載入失敗',\n 'Volume': '音量',\n 'Play': '播放',\n 'Pause': '暫停',\n 'Rate': '速度',\n 'Mute': '靜音',\n 'Reconnect': '重新連接',\n 'Hide subtitle': '隱藏字幕',\n 'Show subtitle': '顯示字幕',\n 'Screenshot': '截圖',\n 'Play speed': '播放速度',\n 'Aspect ratio': '畫面比例',\n 'Default': '默認'\n }\n};\n\nexport default class I18n {\n constructor({ option }) {\n this.option = option;\n this.init();\n }\n\n init() {\n this.language = i18nMap[this.option.lang.toLowerCase()] || {};\n }\n\n get(key) {\n return this.language[key] || key;\n }\n\n update(callback) {\n i18nMap = callback(i18nMap);\n this.init();\n }\n}\n","import { clamp, secondToTime, setStorage, sleep } 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 this.firstCanplay = false;\n this.reconnectTime = 0;\n this.maxReconnectTime = 5;\n }\n\n init() {\n const { option, refs: { $video } } = this.art;\n Object.keys(option.moreVideoAttr).forEach(key => {\n const value = option.moreVideoAttr[key];\n $video[key] = value;\n });\n $video.volume = clamp(option.volume, 0, 1);\n $video.poster = option.poster;\n $video.autoplay = option.autoplay;\n\n // TODO\n $video.src = option.url;\n }\n\n eventBind() {\n const { option, events: { proxy }, refs: { $player, $video }, i18n, notice } = 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:waiting', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:seeking', () => {\n this.art.loading.show();\n });\n\n this.art.on('video:canplay', () => {\n if (!this.firstCanplay) {\n this.firstCanplay = true;\n this.art.emit('player:firstCanplay');\n }\n\n this.art.controls.show();\n this.art.mask.show();\n this.art.loading.hide();\n if (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 if (option.loop) {\n this.seek(0);\n this.play();\n }\n });\n\n this.art.on('video:error', () => {\n if (this.reconnectTime < this.maxReconnectTime) {\n sleep(1000).then(() => {\n this.reconnectTime++;\n $video.src = option.url;\n notice.show(`${i18n.get('Reconnect')}: ${this.reconnectTime}`);\n });\n } else {\n this.art.isError = true;\n this.art.isPlaying = false;\n this.art.loading.hide();\n this.art.controls.hide();\n $player.classList.add('artplayer-error');\n notice.show(i18n.get('Video load failed'), false);\n this.art.destroy();\n }\n });\n }\n\n play() {\n const { refs: { $video }, i18n, notice } = this.art;\n const promise = $video.play();\n notice.show(i18n.get('Play'));\n this.art.emit('play', $video);\n return promise;\n }\n\n pause() {\n const { refs: { $video }, i18n, notice } = this.art;\n $video.pause();\n notice.show(i18n.get('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 { refs: { $video }, notice } = this.art;\n let newTime = Math.max(time, 0);\n if ($video.duration) {\n newTime = Math.min(newTime, $video.duration);\n }\n $video.currentTime = newTime;\n notice.show(`${secondToTime(newTime)} / ${secondToTime($video.duration)}`);\n this.art.emit('seek', newTime);\n }\n\n volume(percentage) {\n const { refs: { $video }, i18n, notice } = this.art;\n if (percentage !== undefined) {\n $video.volume = clamp(percentage, 0, 1);\n notice.show(`${i18n.get('Volume')}: ${parseInt($video.volume * 100)}`);\n if ($video.volume !== 0) {\n setStorage('volume', $video.volume);\n }\n this.art.emit('volume', $video.volume);\n }\n return $video.volume || 0;\n }\n\n currentTime() {\n return this.art.refs.$video.currentTime || 0;\n }\n\n duration() {\n return this.art.refs.$video.duration || 0;\n }\n\n playbackRate(rate) {\n const { refs: { $video, $player }, i18n, notice } = this.art;\n const newRate = clamp(rate, 0.1, 10);\n $video.playbackRate = newRate;\n $player.dataset.playbackRate = newRate;\n notice.show(`${i18n.get('Rate')}: ${newRate}x`);\n this.art.emit('playbackRate', newRate);\n }\n\n aspectRatio(ratio) {\n const { refs: { $video, $player }, i18n, notice } = this.art;\n if (ratio.length === 2) {\n const rate = Number(ratio[0]) / Number(ratio[1]);\n $video.style.width = `${100 / rate}%`;\n $video.style.height = '100%';\n $video.style.padding = `0 ${($player.clientWidth - $player.clientWidth / rate) / 2}px`;\n } else {\n $video.style.width = null;\n $video.style.height = null;\n $video.style.padding = null;\n }\n\n const ratioName = ratio.length === 2 ? `${ratio[0]}:${ratio[1]}` : ratio[0];\n $player.dataset.aspectRatio = ratioName;\n notice.show(`${i18n.get('Aspect ratio')}: ${ratioName}`);\n this.art.emit('aspectRatio', ratio);\n }\n}\n","export default class Danmu {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Fullscreen {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","export default class Pip {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\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 loading from './loading.svg';\nimport playBig from './play-big.svg';\nimport play from './play.svg';\nimport pause from './pause.svg';\nimport volume from './volume.svg';\nimport volumeClose from './volume-close.svg';\nimport subtitle from './subtitle.svg';\nimport subtitleClose from './subtitle-close.svg';\nimport screenshot from './screenshot.svg';\n\nconst icons = {\n loading,\n playBig,\n play,\n pause,\n volume,\n volumeClose,\n subtitle,\n subtitleClose,\n screenshot\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 { append, tooltip } from '../utils';\nimport icons from '../icons';\n\nexport default class PlayAndPause {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n const { events: { proxy }, player, i18n } = art;\n this.$play = append(this.option.$control, icons.play);\n this.$pause = append(this.option.$control, icons.pause);\n tooltip(this.$play, i18n.get('Play'));\n tooltip(this.$pause, i18n.get('Pause'));\n this.$pause.style.display = 'none';\n\n proxy(this.$play, 'click', () => {\n player.play();\n });\n\n proxy(this.$pause, 'click', () => {\n player.pause();\n });\n\n art.on('video:playing', () => {\n this.$play.style.display = 'none';\n this.$pause.style.display = 'block';\n });\n\n art.on('video:pause', () => {\n this.$play.style.display = 'block';\n this.$pause.style.display = 'none';\n });\n }\n}\n","import { append, clamp, secondToTime } from '../utils';\n\nexport default class Progress {\n constructor(option) {\n this.option = option;\n this.isDroging = false;\n this.getLoaded = this.getLoaded.bind(this);\n this.getPlayed = this.getPlayed.bind(this);\n this.set = this.set.bind(this);\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n option: { highlight, theme },\n events: { proxy },\n refs: { $video },\n player\n } = this.art;\n\n append(\n this.option.$control,\n `\n
\n
\n
\n
\n
\n
\n
\n `\n );\n\n this.$loaded = this.option.$control.querySelector('.art-progress-loaded');\n this.$played = this.option.$control.querySelector('.art-progress-played');\n this.$highlight = this.option.$control.querySelector('.art-progress-highlight');\n this.$indicator = this.option.$control.querySelector('.art-progress-indicator');\n this.$tip = this.option.$control.querySelector('.art-progress-tip');\n\n this.set('loaded', this.getLoaded());\n highlight.forEach(item => {\n const left = Number(item.time) / $video.duration;\n append(this.$highlight, `\n \n `\n );\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.$control, 'mousemove', event => {\n this.$tip.style.display = 'block';\n if (event.path.indexOf(this.$highlight) > -1) {\n this.showHighlight(event);\n } else {\n this.showTime(event);\n }\n });\n\n proxy(this.option.$control, 'mouseout', () => {\n this.$tip.style.display = 'none';\n });\n\n proxy(this.option.$control, 'click', event => {\n if (event.target !== this.$indicator) {\n const { second, percentage } = this.getPosFromEvent(event);\n this.set('played', percentage);\n player.seek(second);\n }\n });\n\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.getPosFromEvent(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 showHighlight(event) {\n const { $video } = this.art.refs;\n const { text, time } = event.target.dataset;\n this.$tip.innerHTML = text;\n const left =\n Number(time) / $video.duration * this.option.$control.clientWidth +\n event.target.clientWidth / 2 -\n this.$tip.clientWidth / 2;\n this.$tip.style.left = `${left}px`;\n }\n\n showTime(event) {\n const { width, time } = this.getPosFromEvent(event);\n const tipWidth = this.$tip.clientWidth;\n this.$tip.innerHTML = time;\n if (width <= tipWidth / 2) {\n this.$tip.style.left = 0;\n } else if (width > this.option.$control.clientWidth - tipWidth / 2) {\n this.$tip.style.left = `${this.option.$control.clientWidth - tipWidth}px`;\n } else {\n this.$tip.style.left = `${width - tipWidth / 2}px`;\n }\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\n ? $video.buffered.end($video.buffered.length - 1) / $video.duration\n : 0;\n }\n\n getPosFromEvent(event) {\n const { $video, $progress } = this.art.refs;\n const { left } = $progress.getBoundingClientRect();\n const width = clamp(event.x - left, 0, $progress.clientWidth);\n const second = width / $progress.clientWidth * $video.duration;\n const time = secondToTime(second);\n const percentage = clamp(width / $progress.clientWidth, 0, 1);\n return { second, time, width, percentage };\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","import { append, tooltip } from '../utils';\nimport icons from '../icons';\n\nexport default class Subtitle {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n const { events: { proxy }, subtitle, i18n } = art;\n this.$subtitle = append(this.option.$control, icons.subtitle);\n this.$subtitleClose = append(this.option.$control, icons.subtitleClose);\n tooltip(this.$subtitle, i18n.get('Hide subtitle'));\n tooltip(this.$subtitleClose, i18n.get('Show subtitle'));\n this.$subtitleClose.style.display = 'none';\n\n proxy(this.$subtitle, 'click', () => {\n subtitle.hide();\n this.$subtitle.style.display = 'none';\n this.$subtitleClose.style.display = 'block';\n });\n\n proxy(this.$subtitleClose, 'click', () => {\n subtitle.show();\n this.$subtitle.style.display = 'block';\n this.$subtitleClose.style.display = 'none';\n });\n }\n}\n","import { secondToTime } from '../utils';\n\nexport default class Time {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n this.option.$control.innerHTML = '00:00 / 00:00';\n\n this.art.on('video:canplay', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n\n this.art.on('video:timeupdate', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n\n this.art.on('video:seeking', () => {\n this.option.$control.innerHTML = this.getTime();\n });\n }\n\n getTime() {\n const { player } = this.art;\n return `${secondToTime(player.currentTime())} / ${secondToTime(player.duration())}`;\n }\n}\n","import { append, getStorage, clamp, tooltip } from '../utils';\nimport icons from '../icons';\n\nexport default class Volume {\n constructor(option) {\n this.option = option;\n this.isDroging = false;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { events: { proxy }, player, i18n } = this.art;\n this.$volume = append(this.option.$control, icons.volume);\n this.$volumeClose = append(this.option.$control, icons.volumeClose);\n this.$volumePanel = append(this.option.$control, '
');\n this.$volumeHandle = append(this.$volumePanel, '
');\n tooltip(this.$volume, i18n.get('Mute'));\n this.$volumeClose.style.display = 'none';\n\n const volume = getStorage('volume');\n this.setVolumeHandle(volume);\n player.volume(volume);\n\n proxy(this.$volume, 'click', () => {\n this.$volume.style.display = 'none';\n this.$volumeClose.style.display = 'block';\n player.volume(0);\n });\n\n proxy(this.$volumeClose, 'click', () => {\n this.$volume.style.display = 'block';\n this.$volumeClose.style.display = 'none';\n player.volume(getStorage('volume'));\n });\n\n proxy(this.option.$control, 'mouseenter', () => {\n this.$volumePanel.classList.add('art-volume-panel-hover');\n\n // TODO\n setTimeout(() => {\n this.setVolumeHandle(player.volume());\n }, 200);\n });\n\n proxy(this.option.$control, 'mouseleave', () => {\n this.$volumePanel.classList.remove('art-volume-panel-hover');\n });\n\n proxy(this.$volumePanel, 'click', event => {\n this.volumeChangeFromEvent(event);\n });\n\n proxy(this.$volumeHandle, 'mousedown', () => {\n this.isDroging = true;\n });\n\n proxy(this.$volumeHandle, 'mousemove', event => {\n if (this.isDroging) {\n this.volumeChangeFromEvent(event);\n }\n });\n\n proxy(document, 'mouseup', () => {\n if (this.isDroging) {\n this.isDroging = false;\n }\n });\n\n this.art.on('video:volumechange', () => {\n const percentage = player.volume();\n this.setVolumeHandle(percentage);\n if (percentage === 0) {\n this.$volume.style.display = 'none';\n this.$volumeClose.style.display = 'block';\n } else {\n this.$volume.style.display = 'block';\n this.$volumeClose.style.display = 'none';\n }\n });\n }\n\n volumeChangeFromEvent(event) {\n const { player } = this.art;\n const { left: panelLeft, width: panelWidth } = this.$volumePanel.getBoundingClientRect();\n const { width: handleWidth } = this.$volumeHandle.getBoundingClientRect();\n const percentage = clamp(event.x - panelLeft - handleWidth / 2, 0, panelWidth - handleWidth / 2) / (panelWidth - handleWidth);\n player.volume(percentage);\n }\n\n setVolumeHandle(percentage = 0.7) {\n const { width: panelWidth } = this.$volumePanel.getBoundingClientRect();\n const { width: handleWidth } = this.$volumeHandle.getBoundingClientRect();\n const width = handleWidth / 2 + (panelWidth - handleWidth) * percentage - handleWidth / 2;\n this.$volumeHandle.style.left = `${width}px`;\n }\n}\n","export default class Setting {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n }\n}\n","import { errorHandle } from '../utils';\n\nexport default class Thumbnails {\n constructor(option) {\n this.option = option;\n this.loading = false;\n this.isLoad = false;\n }\n\n apply(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n refs: { $progress },\n events: { proxy }\n } = this.art;\n\n proxy($progress, 'mousemove', event => {\n if (!this.loading) {\n this.loading = true;\n this.load(this.art.option.thumbnails.url).then(() => {\n this.isLoad = true;\n });\n }\n\n if (this.isLoad) {\n this.option.$control.style.display = 'block';\n this.showThumbnails(event);\n }\n });\n\n proxy($progress, 'mouseout', () => {\n this.option.$control.style.display = 'none';\n });\n }\n\n load(url) {\n const { proxy } = this.art.events;\n return new Promise((resolve, reject) => {\n const image = new Image();\n image.src = url;\n\n if (image.complete) {\n return resolve(image);\n }\n\n proxy(image, 'load', () => resolve(image));\n\n proxy(image, 'error', () => reject(image));\n });\n }\n\n showThumbnails(event) {\n const { refs: { $progress }, controls } = this.art;\n errorHandle(controls.progress, '\\'thumbnails\\' control dependent on \\'progress\\' control');\n const { width: posWidth } = controls.progress.getPosFromEvent(event);\n const { url, height, width, number, column } = this.art.option.thumbnails;\n const perWidth = $progress.clientWidth / number;\n const perIndex = Math.ceil(posWidth / perWidth);\n let yIndex = Math.ceil(perIndex / column);\n let xIndex = perIndex % column || column;\n\n this.option.$control.style.backgroundImage = `url(${url})`;\n this.option.$control.style.height = `${height}px`;\n this.option.$control.style.width = `${width}px`;\n this.option.$control.style.backgroundPosition = `-${--xIndex * width}px -${--yIndex * height}px`;\n\n if (posWidth <= width / 2) {\n this.option.$control.style.left = 0;\n } else if (posWidth > $progress.clientWidth - width / 2) {\n this.option.$control.style.left = `${$progress.clientWidth - width}px`;\n } else {\n this.option.$control.style.left = `${posWidth - width / 2}px`;\n }\n }\n}\n","import { append, tooltip, secondToTime } from '../utils';\nimport icons from '../icons';\n\nexport default class Screenshot {\n constructor(option) {\n this.option = option;\n }\n\n apply(art) {\n this.art = art;\n const { events: { proxy }, i18n, notice } = this.art;\n this.$screenshot = append(this.option.$control, icons.screenshot);\n tooltip(this.$screenshot, i18n.get('Screenshot'));\n proxy(this.$screenshot, 'click', () => {\n try {\n this.captureFrame();\n } catch (error) {\n notice.show(error);\n }\n });\n }\n\n captureFrame() {\n const { $video } = this.art.refs;\n const canvas = document.createElement('canvas');\n canvas.width = $video.videoWidth;\n canvas.height = $video.videoHeight;\n canvas.getContext('2d').drawImage($video, 0, 0);\n const dataUri = canvas.toDataURL('image/png');\n const elink = document.createElement('a');\n elink.style.display = 'none';\n elink.href = dataUri;\n elink.download = `${secondToTime($video.currentTime)}.png`;\n document.body.appendChild(elink);\n elink.click();\n document.body.removeChild(elink);\n }\n}\n","import Danmu from './danmu';\nimport Fullscreen from './fullscreen';\nimport Pip from './pip';\nimport PlayAndPause from './playAndPause';\nimport Progress from './progress';\nimport Subtitle from './subtitle';\nimport Time from './time';\nimport Volume from './volume';\nimport Setting from './setting';\nimport Thumbnails from './thumbnails';\nimport Screenshot from './screenshot';\n\nlet id = 0;\nexport default class Controls {\n constructor(art) {\n this.art = art;\n this.$map = {};\n this.art.on('player:firstCanplay', () => {\n this.init();\n this.mount();\n });\n }\n\n init() {\n this.add(new Progress({\n disable: false,\n position: 'top',\n index: 10\n }));\n\n this.add(new Thumbnails({\n disable: !this.art.option.thumbnails.url,\n position: 'top',\n index: 20\n }));\n\n this.add(new PlayAndPause({\n disable: false,\n position: 'left',\n index: 10\n }));\n\n this.add(new Volume({\n disable: false,\n position: 'left',\n index: 20\n }));\n\n this.add(new Time({\n disable: false,\n position: 'left',\n index: 30\n }));\n\n this.add(new Danmu({\n disable: false,\n position: 'right',\n index: 10\n }));\n\n this.add(new Screenshot({\n disable: !this.art.option.screenshot,\n position: 'right',\n index: 20\n }));\n\n this.add(new Subtitle({\n disable: !this.art.option.subtitle.url,\n position: 'right',\n index: 30\n }));\n\n this.add(new Setting({\n disable: false,\n position: 'right',\n index: 40\n }));\n\n this.add(new Pip({\n disable: false,\n position: 'right',\n index: 50\n }));\n\n this.add(new Fullscreen({\n disable: false,\n position: 'right',\n index: 60\n }));\n\n this.art.option.controls.forEach(item => {\n this.add(item);\n });\n }\n\n add(control) {\n const { option } = control;\n if (option && !option.disable) {\n id++;\n const name = control.constructor.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 option.$control = $control;\n this.commonMethod(control);\n (this.$map[option.position] || (this.$map[option.position] = [])).push($control);\n control.apply && control.apply(this.art);\n this[name] = 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(control) {\n Object.defineProperty(control, 'hide', {\n value: () => {\n control.option.$control.style.display = 'none';\n this.art.emit('control:hide', control.option.$control);\n }\n });\n\n Object.defineProperty(control, 'show', {\n value: () => {\n control.option.$control.style.display = 'block';\n this.art.emit('control:show', control.option.$control);\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, setStyle } from './utils';\n\nlet id = 0;\nexport default class Contextmenu {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { option, player, i18n, refs, events: { proxy } } = this.art;\n\n option.contextmenu.push(\n {\n disable: !option.playbackRate,\n name: 'playbackRate',\n html: `${i18n.get('Play speed')}: 0.50.751.01.251.52.0`,\n click: (art, event) => {\n const { target } = event;\n const rate = Number(target.innerText);\n if (rate && typeof rate === 'number') {\n player.playbackRate(rate);\n const sublings = Array.from(target.parentElement.querySelectorAll('span')).filter(item => item !== target);\n sublings.forEach(item => item.classList.remove('current'));\n target.classList.add('current');\n }\n }\n },\n {\n disable: !option.aspectRatio,\n name: 'aspectRatio',\n html: `${i18n.get('Aspect ratio')}: ${i18n.get('Default')}4:316:9`,\n click: (art, event) => {\n const { target } = event;\n const ratio = target.innerText;\n if (ratio) {\n player.aspectRatio(ratio.split(':'));\n const sublings = Array.from(target.parentElement.querySelectorAll('span')).filter(item => item !== target);\n sublings.forEach(item => item.classList.remove('current'));\n target.classList.add('current');\n }\n }\n },\n {\n disable: false,\n name: 'info',\n html: i18n.get('Video info'),\n click: () => {\n this.art.info.show();\n }\n },\n {\n disable: false,\n name: 'version',\n html: 'ArtPlayer __VERSION__'\n },\n {\n disable: false,\n name: 'close',\n html: 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 { option, refs, events: { proxy } } = this.art;\n refs.$contextmenu = document.createElement('div');\n refs.$contextmenu.classList.add('artplayer-contextmenu');\n option.contextmenu\n .filter(item => !item.disable)\n .forEach(item => {\n id++;\n const $menu = document.createElement('div');\n $menu.setAttribute('data-art-menu-id', id);\n $menu.setAttribute('class', `art-menu art-menu-${item.name || id}`);\n append($menu, item.html);\n setStyle($menu, item.style || {});\n if (item.click) {\n proxy($menu, 'click', event => {\n event.preventDefault();\n item.click(this.art, event);\n this.hide();\n this.art.emit('contextmenu:click', $menu);\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","import { append } from './utils';\n\nexport default class Info {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { refs: { $infoClose }, events: { proxy } } = this.art;\n proxy($infoClose, 'click', () => {\n this.hide();\n });\n }\n\n show() {\n const { $info, $infoPanel } = this.art.refs;\n $info.style.display = 'block';\n if (!$infoPanel.innerHTML) {\n append($infoPanel, this.creatInfo());\n this.getHeader();\n }\n clearTimeout(this.timer);\n this.loop();\n this.art.emit('info:show', $info);\n }\n\n creatInfo() {\n const infoHtml = [];\n\n infoHtml.push(`\n
\n
Player version:
\n
__VERSION__
\n
\n `);\n\n infoHtml.push(`\n
\n
Video url:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video type:
\n
loading...
\n
\n `);\n\n infoHtml.push(`\n
\n
Video size:
\n
loading...
\n
\n `);\n\n infoHtml.push(`\n
\n
Video volume:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video time:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video duration:
\n
\n
\n `);\n\n infoHtml.push(`\n
\n
Video resolution:
\n
\n x \n
\n
\n `);\n\n return infoHtml.join('');\n }\n\n getHeader() {\n const { option: { url }, refs: { $infoPanel } } = this.art;\n const types = Array.from($infoPanel.querySelectorAll('[data-head]'));\n fetch(url, {\n method: 'HEAD'\n }).then(data => {\n types.forEach(item => {\n const value = data.headers.get(item.dataset.head);\n item.innerHTML = value !== undefined ? value : 'unknown';\n });\n }).catch(() => {\n types.forEach(item => {\n item.innerHTML = 'unknown';\n });\n });\n }\n\n readInfo() {\n const { $infoPanel, $video } = this.art.refs;\n const types = Array.from($infoPanel.querySelectorAll('[data-video]'));\n types.forEach(item => {\n const value = $video[item.dataset.video];\n item.innerHTML = value !== undefined ? value : 'unknown';\n });\n }\n\n loop() {\n this.readInfo();\n this.timer = setTimeout(() => {\n this.readInfo();\n this.loop();\n }, 1000);\n }\n\n hide() {\n const { $info } = this.art.refs;\n $info.style.display = 'none';\n clearTimeout(this.timer);\n this.art.emit('info:hide', $info);\n }\n}\n","import { errorHandle, getExt, setStyle } from './utils';\n\nexport default class Subtitle {\n constructor(art) {\n this.art = art;\n\n const { url } = this.art.option.subtitle;\n if (url) {\n this.checkExt(url);\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\n this.load(subtitle.url).then(data => {\n $track.src = data;\n $video.appendChild($track);\n this.art.refs.$track = $track;\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\n load(url) {\n let type;\n return fetch(url)\n .then(response => {\n type = response.headers.get('Content-Type');\n return response.text();\n })\n .then(text => {\n if ((/x-subrip/gi).test(type)) {\n return this.srtToVtt(text);\n }\n return url;\n })\n .catch(err => {\n throw err;\n });\n }\n\n srtToVtt(text) {\n const vttText = 'WEBVTT \\r\\n\\r\\n'.concat(\n text\n .replace(/\\{\\\\([ibu])\\}/g, '')\n .replace(/\\{\\\\([ibu])1\\}/g, '<$1>')\n .replace(/\\{([ibu])\\}/g, '<$1>')\n .replace(/\\{\\/([ibu])\\}/g, '')\n .replace(/(\\d\\d:\\d\\d:\\d\\d),(\\d\\d\\d)/g, '$1.$2')\n .concat('\\r\\n\\r\\n')\n );\n return URL.createObjectURL(\n new Blob([vttText], {\n type: 'text/vtt'\n })\n );\n }\n\n checkExt(url) {\n const ext = getExt(url);\n errorHandle(\n ext === 'vtt' || ext === 'srt',\n `'subtitle.url' option require 'vtt' or 'srt' format, but got '${ext}'.`\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 this.checkExt(url);\n errorHandle($track, 'You need to initialize the subtitle option first.');\n this.load(url).then(data => {\n if (url !== data) {\n $track.src = data;\n this.art.emit('subtitle:switch', url);\n }\n });\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 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 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 switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n break;\n case 38:\n event.preventDefault();\n player.volume(player.volume() + 0.05);\n break;\n case 40:\n event.preventDefault();\n player.volume(player.volume() - 0.05);\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.filter(item => item.disable === false).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 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 = true, time = 1000) {\n const { $notice, $noticeInner } = this.art.refs;\n $notice.style.display = 'block';\n $noticeInner.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n if (autoHide) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.hide();\n }, time);\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 refs,\n events: { proxy }\n } = this.art;\n\n append(refs.$mask, icons.playBig);\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 = 'block';\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';\nimport 'balloon-css/balloon.min.css';\nimport { deepMerge } from './utils';\nimport validOption from './verification';\nimport config from './config';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\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 = deepMerge({}, 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 thumbnails: {\n url: '',\n number: 60,\n width: 160,\n height: 90,\n column: 10\n },\n screenshot: true,\n autoplay: false,\n playbackRate: true,\n aspectRatio: true,\n loop: false,\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 highlight: [],\n moreVideoAttr: {\n 'controls': false,\n 'preload': 'auto',\n 'webkit-playsinline': true,\n 'playsinline': true\n },\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(Plugin) {\n const name = Plugin.name.toLowerCase();\n const installedPlugins = this.plugins || (this.plugins = {});\n if (!installedPlugins[name]) {\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n installedPlugins[name] = new Plugin(...args);\n this.prototype.emit('use', Plugin);\n }\n return this;\n }\n\n init() {\n this.isError = false;\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.notice = new Notice(this);\n this.events = new Events(this);\n this.player = new Player(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.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(removeHtml = false) {\n this.events.destroy();\n instances.splice(instances.indexOf(this), 1);\n if (removeHtml) {\n this.refs.$container.innerHTML = '';\n }\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","isFun","clamp","num","a","b","Math","max","min","getExt","url","includes","split","trim","toLowerCase","pop","append","parent","child","Element","appendChild","insertAdjacentHTML","lastElementChild","setStyle","element","styles","Object","keys","forEach","key","style","secondToTime","second","add0","String","hour","floor","sec","map","join","deepMerge","isObject","value","returnValue","sources","source","Array","isArray","hasOwnProperty","getStorage","storage","JSON","parse","localStorage","getItem","setStorage","assign","setItem","stringify","getType","val","toString","prototype","type","call","slice","replace","tooltip","target","pos","setAttribute","sleep","ms","Promise","resolve","setTimeout","validElement","path","handle","container","validator","required","poster","volume","thumbnails","number","width","height","column","screenshot","autoplay","playbackRate","aspectRatio","loop","mimeCodec","layers","index","html","contextmenu","click","loading","theme","hotkey","subtitle","controls","option","disable","position","highlight","time","text","moreVideoAttr","lang","validOption","param","scheme","some","paramObj","paramType","paramRequired","paramChild","paramValidator","concat","item","result","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","$noticeInner","$mask","$info","$infoPanel","$infoClose","i18nMap","I18n","language","callback","Player","eventBind","firstCanplay","reconnectTime","maxReconnectTime","src","proxy","i18n","notice","config","eventName","event","emit","on","show","hide","mask","promise","play","undefined","then","catch","err","console","warn","isPlaying","seek","get","isError","classList","add","destroy","pause","newTime","duration","currentTime","percentage","parseInt","rate","newRate","dataset","ratio","length","Number","padding","clientWidth","ratioName","Danmu","Fullscreen","Pip","icons","playBig","volumeClose","subtitleClose","creatDomFromSvg","tmp","document","createElement","childNodes","PlayAndPause","player","$play","$control","$pause","display","Progress","isDroging","getLoaded","bind","getPlayed","set","$loaded","$played","$highlight","$indicator","$tip","left","indexOf","showHighlight","showTime","getPosFromEvent","remove","tipWidth","buffered","end","getBoundingClientRect","x","Subtitle","$subtitleClose","Time","getTime","Volume","$volume","$volumeClose","$volumePanel","$volumeHandle","setVolumeHandle","volumeChangeFromEvent","panelLeft","panelWidth","handleWidth","Setting","Thumbnails","isLoad","load","showThumbnails","reject","image","Image","complete","progress","posWidth","perWidth","perIndex","ceil","yIndex","xIndex","backgroundImage","backgroundPosition","Screenshot","$screenshot","captureFrame","error","canvas","videoWidth","videoHeight","getContext","drawImage","dataUri","toDataURL","elink","href","download","body","removeChild","id","Controls","$map","mount","control","commonMethod","push","apply","sort","controlIndex","defineProperty","Contextmenu","innerText","sublings","from","parentElement","querySelectorAll","filter","info","preventDefault","isFocus","$contextmenu","creatMenu","setPos","$menu","mouseX","clientX","mouseY","clientY","cHeight","cWidth","cLeft","cTop","top","mHeight","mWidth","menuLeft","menuTop","Info","creatInfo","getHeader","clearTimeout","timer","infoHtml","types","fetch","method","data","headers","head","readInfo","checkExt","$track","default","kind","textTracks","track","activeCues","cue","template","getCueAsHTML","response","test","srtToVtt","vttText","URL","createObjectURL","Blob","ext","Events","destroyEvents","addEventListener","removeEventListener","Hotkey","window","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","toggle","Layers","$layer","zIndex","Loading","Notice","autoHide","Mask","instances","Artplayer","DEFAULTS","danmu","removeHtml","splice","Plugin","installedPlugins","plugins","args","arguments","unshift","navigator","Emitter"],"mappings":"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"} \ No newline at end of file diff --git a/src/contextmenu.js b/src/contextmenu.js index 11bb67c7a..cce97314c 100644 --- a/src/contextmenu.js +++ b/src/contextmenu.js @@ -8,15 +8,41 @@ export default class Contextmenu { } init() { - const { - option, - i18n, - refs, - events: { proxy } - } = this.art; + const { option, player, i18n, refs, events: { proxy } } = this.art; option.contextmenu.push( { + disable: !option.playbackRate, + name: 'playbackRate', + html: `${i18n.get('Play speed')}: 0.50.751.01.251.52.0`, + click: (art, event) => { + const { target } = event; + const rate = Number(target.innerText); + if (rate && typeof rate === 'number') { + player.playbackRate(rate); + const sublings = Array.from(target.parentElement.querySelectorAll('span')).filter(item => item !== target); + sublings.forEach(item => item.classList.remove('current')); + target.classList.add('current'); + } + } + }, + { + disable: !option.aspectRatio, + name: 'aspectRatio', + html: `${i18n.get('Aspect ratio')}: ${i18n.get('Default')}4:316:9`, + click: (art, event) => { + const { target } = event; + const ratio = target.innerText; + if (ratio) { + player.aspectRatio(ratio.split(':')); + const sublings = Array.from(target.parentElement.querySelectorAll('span')).filter(item => item !== target); + sublings.forEach(item => item.classList.remove('current')); + target.classList.add('current'); + } + } + }, + { + disable: false, name: 'info', html: i18n.get('Video info'), click: () => { @@ -24,10 +50,12 @@ export default class Contextmenu { } }, { + disable: false, name: 'version', html: 'ArtPlayer __VERSION__' }, { + disable: false, name: 'close', html: i18n.get('Close'), click: () => { @@ -54,30 +82,28 @@ export default class Contextmenu { } creatMenu() { - const { - option, - refs, - events: { proxy } - } = this.art; + const { option, refs, events: { proxy } } = this.art; refs.$contextmenu = document.createElement('div'); refs.$contextmenu.classList.add('artplayer-contextmenu'); - option.contextmenu.forEach(item => { - id++; - const $menu = document.createElement('div'); - $menu.setAttribute('data-art-menu-id', id); - $menu.setAttribute('class', `art-menu art-menu-${item.name || id}`); - append($menu, item.html); - setStyle($menu, item.style || {}); - if (item.click) { - proxy($menu, 'click', event => { - event.preventDefault(); - item.click(this.art, event); - this.hide(); - this.art.emit('contextmenu:click', $menu); - }); - } - append(refs.$contextmenu, $menu); - }); + option.contextmenu + .filter(item => !item.disable) + .forEach(item => { + id++; + const $menu = document.createElement('div'); + $menu.setAttribute('data-art-menu-id', id); + $menu.setAttribute('class', `art-menu art-menu-${item.name || id}`); + append($menu, item.html); + setStyle($menu, item.style || {}); + if (item.click) { + proxy($menu, 'click', event => { + event.preventDefault(); + item.click(this.art, event); + this.hide(); + this.art.emit('contextmenu:click', $menu); + }); + } + append(refs.$contextmenu, $menu); + }); append(refs.$player, refs.$contextmenu); } diff --git a/src/controls/index.js b/src/controls/index.js index 469d51209..a38143b57 100644 --- a/src/controls/index.js +++ b/src/controls/index.js @@ -15,7 +15,7 @@ export default class Controls { constructor(art) { this.art = art; this.$map = {}; - this.art.on('video:firstload', () => { + this.art.on('player:firstCanplay', () => { this.init(); this.mount(); }); diff --git a/src/i18n.js b/src/i18n.js index 75063fb97..226e40e69 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -12,7 +12,10 @@ let i18nMap = { 'Reconnect': '重新连接', 'Hide subtitle': '隐藏字幕', 'Show subtitle': '显示字幕', - 'Screenshot': '截图' + 'Screenshot': '截图', + 'Play speed': '播放速度', + 'Aspect ratio': '画面比例', + 'Default': '默认' }, 'zh-tw': { 'About author': '關於作者', @@ -27,7 +30,10 @@ let i18nMap = { 'Reconnect': '重新連接', 'Hide subtitle': '隱藏字幕', 'Show subtitle': '顯示字幕', - 'Screenshot': '截圖' + 'Screenshot': '截圖', + 'Play speed': '播放速度', + 'Aspect ratio': '畫面比例', + 'Default': '默認' } }; diff --git a/src/index.js b/src/index.js index cc4dc8141..2b23162a2 100644 --- a/src/index.js +++ b/src/index.js @@ -55,6 +55,8 @@ class Artplayer extends Emitter { }, screenshot: true, autoplay: false, + playbackRate: true, + aspectRatio: true, loop: false, type: '', mimeCodec: '', diff --git a/src/info.js b/src/info.js index c2bd73f8d..626664eb5 100644 --- a/src/info.js +++ b/src/info.js @@ -106,14 +106,19 @@ export default class Info { }); } - loop() { + readInfo() { const { $infoPanel, $video } = this.art.refs; + const types = Array.from($infoPanel.querySelectorAll('[data-video]')); + types.forEach(item => { + const value = $video[item.dataset.video]; + item.innerHTML = value !== undefined ? value : 'unknown'; + }); + } + + loop() { + this.readInfo(); this.timer = setTimeout(() => { - const types = Array.from($infoPanel.querySelectorAll('[data-video]')); - types.forEach(item => { - const value = $video[item.dataset.video]; - item.innerHTML = value !== undefined ? value : 'unknown'; - }); + this.readInfo(); this.loop(); }, 1000); } diff --git a/src/player.js b/src/player.js index bd1e21ffa..d06b69a26 100644 --- a/src/player.js +++ b/src/player.js @@ -6,7 +6,7 @@ export default class Player { this.art = art; this.init(); this.eventBind(); - this.firstLoad = false; + this.firstCanplay = false; this.reconnectTime = 0; this.maxReconnectTime = 5; } @@ -51,9 +51,9 @@ export default class Player { }); this.art.on('video:canplay', () => { - if (!this.firstLoad) { - this.firstLoad = true; - this.art.emit('video:firstload'); + if (!this.firstCanplay) { + this.firstCanplay = true; + this.art.emit('player:firstCanplay'); } this.art.controls.show(); @@ -166,10 +166,30 @@ export default class Player { } playbackRate(rate) { - const { refs: { $video }, i18n, notice } = this.art; + const { refs: { $video, $player }, i18n, notice } = this.art; const newRate = clamp(rate, 0.1, 10); $video.playbackRate = newRate; + $player.dataset.playbackRate = newRate; notice.show(`${i18n.get('Rate')}: ${newRate}x`); this.art.emit('playbackRate', newRate); } + + aspectRatio(ratio) { + const { refs: { $video, $player }, i18n, notice } = this.art; + if (ratio.length === 2) { + const rate = Number(ratio[0]) / Number(ratio[1]); + $video.style.width = `${100 / rate}%`; + $video.style.height = '100%'; + $video.style.padding = `0 ${($player.clientWidth - $player.clientWidth / rate) / 2}px`; + } else { + $video.style.width = null; + $video.style.height = null; + $video.style.padding = null; + } + + const ratioName = ratio.length === 2 ? `${ratio[0]}:${ratio[1]}` : ratio[0]; + $player.dataset.aspectRatio = ratioName; + notice.show(`${i18n.get('Aspect ratio')}: ${ratioName}`); + this.art.emit('aspectRatio', ratio); + } } diff --git a/src/style/aspectRatio.scss b/src/style/aspectRatio.scss new file mode 100644 index 000000000..873deed43 --- /dev/null +++ b/src/style/aspectRatio.scss @@ -0,0 +1,8 @@ +.artplayer-video-player { + &[data-aspect-ratio] { + video { + box-sizing: content-box; + object-fit: fill; + } + } +} diff --git a/src/style/contextmenu.scss b/src/style/contextmenu.scss index e2c63b3d1..6fd56f5f0 100644 --- a/src/style/contextmenu.scss +++ b/src/style/contextmenu.scss @@ -4,9 +4,11 @@ z-index: 70; left: 0; top: 0; - width: 200px; + min-width: 200px; padding: 5px 0; background:rgba(0, 0, 0, 0.8); + border-radius: 3px; + .art-menu { cursor: pointer; font-size: 13px; @@ -17,16 +19,28 @@ text-overflow: ellipsis; white-space: nowrap; text-shadow: 0 0 2px rgba(0, 0, 0, 0.5); + border-bottom: 1px solid rgba(255,255,255,.1); a { color: #fff; text-decoration: none; } + span { + display: inline-block; + padding: 0 7px; + &:hover, &.current { + color: #00c9ff; + } + } + &:hover { background-color: rgba(255,255,255,.1); } + + &:last-child { + border-bottom: none; + } } } - } diff --git a/src/style/index.js b/src/style/index.js index 50c6caa96..30996adb1 100644 --- a/src/style/index.js +++ b/src/style/index.js @@ -8,3 +8,4 @@ import './bottom.scss'; import './notice.scss'; import './contextmenu.scss'; import './info.scss'; +import './aspectRatio.scss'; diff --git a/src/verification/scheme.js b/src/verification/scheme.js index 4b314c47d..8d5088700 100644 --- a/src/verification/scheme.js +++ b/src/verification/scheme.js @@ -61,6 +61,12 @@ export default { autoplay: { type: 'boolean' }, + playbackRate: { + type: 'boolean' + }, + aspectRatio: { + type: 'boolean' + }, loop: { type: 'boolean' },