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

${item}

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

${item}

`)\n .join('');\n }\n this.art.emit('subtitle:update', $subtitle);\n });\n }\n }\n\n show() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'block';\n this.art.emit('subtitle:show', $subtitle);\n }\n\n hide() {\n const { $subtitle } = this.art.refs;\n $subtitle.style.display = 'none';\n this.art.emit('subtitle:hide', $subtitle);\n }\n\n switch(url) {\n const { $track } = this.art.refs;\n errorHandle(\n getExt(url) === 'vtt',\n `'url' option require 'vtt' format, but got '${getExt(url)}'.`\n );\n errorHandle(\n $track,\n 'You need to initialize the subtitle option first.'\n );\n $track.src = url;\n this.art.emit('subtitle:switch', url);\n }\n}\n","export default class Events {\n constructor(art) {\n this.art = art;\n this.destroyEvents = [];\n this.proxy = this.proxy.bind(this);\n }\n\n proxy(target, name, callback, option = {}) {\n if (Array.isArray(name)) {\n name.forEach(item => this.proxy(target, item, callback, option));\n }\n\n target.addEventListener(name, callback, option);\n\n const destroy = () => {\n target.removeEventListener(name, callback, option);\n };\n\n this.destroyEvents.push(destroy);\n\n return destroy;\n }\n\n destroy() {\n this.destroyEvents.forEach(event => event());\n }\n}\n","export default class Hotkey {\n constructor(art) {\n this.art = art;\n if (this.art.option.hotkey) {\n this.init();\n }\n }\n\n init() {\n const {\n player,\n notice,\n i18n,\n refs: { $player },\n events: { proxy }\n } = this.art;\n\n proxy(document, 'click', event => {\n this.art.isFocus = event.path.indexOf($player) > -1;\n });\n\n proxy(window, 'keydown', event => {\n if (this.art.isFocus) {\n const tag = document.activeElement.tagName.toUpperCase();\n const editable = document.activeElement.getAttribute('contenteditable');\n if (\n tag !== 'INPUT' &&\n tag !== 'TEXTAREA' &&\n editable !== '' &&\n editable !== 'true'\n ) {\n let percentage;\n switch (event.keyCode) {\n case 39:\n event.preventDefault();\n player.seek(player.currentTime() + 10);\n notice.show(i18n.get('Fast forward 10 seconds'), true);\n break;\n case 37:\n event.preventDefault();\n player.seek(player.currentTime() - 10);\n notice.show(i18n.get('Rewind 10 seconds'), true);\n break;\n case 38:\n event.preventDefault();\n percentage = player.volume() + 0.1;\n player.volume(percentage);\n notice.show(i18n.get('10% increase in volume'), true);\n break;\n case 40:\n event.preventDefault();\n percentage = player.volume() - 0.1;\n player.volume(percentage);\n notice.show(i18n.get('10% reduction in volume'), true);\n break;\n case 32:\n event.preventDefault();\n player.toggle();\n break;\n default:\n break;\n }\n }\n }\n });\n }\n}\n","import { append, setStyle } from './utils';\n\nlet id = 0;\nexport default class Layers {\n constructor(art) {\n this.art = art;\n this.add = this.add.bind(this);\n this.art.option.layers.forEach(this.add);\n this.init();\n }\n\n init() {\n const { refs, player, events: { proxy } } = this.art;\n proxy(refs.$layers, 'click', event => {\n if (event.path[0] === refs.$layers) {\n player.pause();\n }\n });\n }\n\n add(option, callback) {\n const { refs } = this.art;\n id++;\n\n const $layer = document.createElement('div');\n $layer.setAttribute('data-art-layer-id', id);\n $layer.setAttribute('class', `art-layer art-layer-${option.name || id}`);\n $layer.style.zIndex = option.index || id;\n append($layer, option.html);\n setStyle($layer, option.style || {});\n refs.$layers.appendChild($layer);\n this.art.emit('layers:add', $layer);\n callback && callback($layer);\n }\n\n show() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'block';\n this.art.emit('layers:show', $layers);\n }\n\n hide() {\n const { $layers } = this.art.refs;\n $layers.style.display = 'none';\n this.art.emit('layers:hide', $layers);\n }\n}\n","import loading from './loading.svg';\nimport play from './play.svg';\n\nconst icons = {\n loading,\n play\n};\n\nfunction creatDomFromSvg(map) {\n const result = {};\n Object.keys(map).forEach(name => {\n const tmp = document.createElement('div');\n tmp.innerHTML = `${map[name]}`;\n [result[name]] = tmp.childNodes;\n });\n return result;\n}\n\nexport default creatDomFromSvg(icons);\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Loading {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const { option, refs: { $loading } } = this.art;\n append($loading, option.loading || icons.loading);\n }\n\n hide() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'none';\n this.art.emit('loading:hide', $loading);\n }\n\n show() {\n const { $loading } = this.art.refs;\n $loading.style.display = 'flex';\n this.art.emit('loading:show', $loading);\n }\n}\n","export default class Notice {\n constructor(art) {\n this.art = art;\n this.timer = null;\n }\n\n show(msg, autoHide) {\n const { $notice } = this.art.refs;\n $notice.style.display = 'block';\n $notice.innerHTML = msg instanceof Error ? msg.message.trim() : msg;\n if (autoHide) {\n clearTimeout(this.timer);\n this.timer = setTimeout(() => {\n this.hide();\n }, 1000);\n }\n this.art.emit('notice:show', $notice);\n }\n\n hide() {\n const { $notice } = this.art.refs;\n $notice.style.display = 'none';\n this.art.emit('notice:hide', $notice);\n }\n}\n","import icons from './icons';\nimport { append } from './utils';\n\nexport default class Mask {\n constructor(art) {\n this.art = art;\n this.init();\n }\n\n init() {\n const {\n player,\n option,\n refs,\n events: { proxy }\n } = this.art;\n\n const playClone = icons.play.cloneNode(true);\n playClone.style.backgroundColor = option.theme;\n append(refs.$mask, playClone);\n\n proxy(refs.$mask, 'click', () => {\n player.play();\n this.hide();\n });\n }\n\n show() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'flex';\n this.art.emit('mask:show', $mask);\n }\n\n hide() {\n const { $mask } = this.art.refs;\n $mask.style.display = 'none';\n this.art.emit('mask:show', $mask);\n }\n}\n","import './style/index.scss';\nimport 'balloon-css/balloon.min.css';\nimport validOption from './verification/player';\nimport config from './config';\nimport Emitter from 'tiny-emitter';\nimport Template from './template';\nimport I18n from './i18n';\nimport Player from './player';\nimport Mse from './mse';\nimport Controls from './controls';\nimport Contextmenu from './contextmenu';\nimport Danmu from './danmu';\nimport Info from './info';\nimport Subtitle from './subtitle';\nimport Events from './events';\nimport Hotkey from './hotkey';\nimport Layers from './layers';\nimport Loading from './loading';\nimport Notice from './notice';\nimport Mask from './mask';\n\nlet id = 0;\nexport const instances = [];\n\nclass Artplayer extends Emitter {\n constructor(option) {\n super();\n this.emit('init:start');\n this.option = Object.assign({}, Artplayer.DEFAULTS, option);\n validOption(this.option);\n this.init();\n this.emit('init:end');\n }\n\n static get version() {\n return '__VERSION__';\n }\n\n static get config() {\n return config;\n }\n\n static get DEFAULTS() {\n return {\n container: '.artplayer',\n url: '',\n poster: '',\n thumbnails: {\n url: '',\n number: 100,\n width: 160,\n height: 90\n },\n volume: 0.7,\n autoplay: false,\n preload: 'auto',\n type: '',\n mimeCodec: '',\n layers: [],\n contextmenu: [],\n loading: '',\n theme: '#f00',\n hotkey: true,\n subtitle: {\n url: '',\n style: {}\n },\n controls: [],\n highlight: [],\n lang: navigator.language.toLowerCase()\n };\n }\n\n static use(plugin) {\n const installedPlugins = this.plugins || (this.plugins = []);\n if (installedPlugins.indexOf(plugin) > -1) {\n return this;\n }\n\n const args = Array.from(arguments).slice(1);\n args.unshift(this);\n if (typeof plugin.install === 'function') {\n plugin.install.apply(plugin, args);\n } else if (typeof plugin === 'function') {\n plugin.apply(null, args);\n }\n installedPlugins.push(plugin);\n return this;\n }\n\n init() {\n this.isFocus = false;\n this.isPlaying = false;\n this.refs = {};\n\n if (this.option.container instanceof Element) {\n this.refs.$container = this.option.container;\n } else {\n this.refs.$container = document.querySelector(this.option.container);\n }\n\n this.template = new Template(this);\n this.i18n = new I18n(this);\n this.events = new Events(this);\n this.player = new Player(this);\n // this.mse = new Mse(this);\n this.layers = new Layers(this);\n this.controls = new Controls(this);\n this.contextmenu = new Contextmenu(this);\n this.danmu = new Danmu(this);\n this.subtitle = new Subtitle(this);\n this.info = new Info(this);\n this.loading = new Loading(this);\n this.notice = new Notice(this);\n this.hotkey = new Hotkey(this);\n this.mask = new Mask(this);\n\n this.id = id++;\n instances.push(this);\n return this;\n }\n\n destroy() {\n this.events.destroy();\n this.refs.$container.innerHTML = '';\n instances.splice(instances.indexOf(this), 1);\n this.emit('destroy');\n }\n}\n\nwindow.Artplayer = Artplayer;\nexport default Artplayer;\n"],"names":["_typeof","ArtPlayerError","message","context","Error","captureStackTrace","constructor","name","errorHandle","condition","msg","clamp","num","a","b","Math","max","min","getExt","url","includes","split","trim","toLowerCase","pop","append","parent","child","Element","appendChild","insertAdjacentHTML","setStyle","element","styles","Object","keys","forEach","key","style","secondToTime","second","add0","String","hour","floor","sec","map","join","validOption","option","container","poster","prototype","toString","call","thumbnails","volume","autoplay","indexOf","preload","lang","type","mimeCodec","Array","isArray","layers","contextmenu","loading","theme","hotkey","subtitle","controls","highlight","mp4","webm","ts","mediaSource","propertys","methods","events","sourceBuffer","sourceBufferList","mse","video","Template","art","init","refs","$container","innerHTML","$player","querySelector","$video","$subtitle","$bottom","$progress","$controls","$controlsLeft","$controlsRight","$layers","$loading","$notice","$mask","i18nMap","I18n","language","Player","eventBind","src","proxy","config","eventName","event","emit","on","show","hide","mask","promise","play","undefined","then","catch","err","console","warn","isPlaying","pause","time","newTime","duration","currentTime","percentage","rate","playbackRate","Mse","setMimeCodec","eventStart","repeat","maxRepeat","MediaSource","isTypeSupported","URL","createObjectURL","destroyEvents","push","revokeObjectURL","sourceBuffers","activeSourceBuffers","addSourceBuffer","endOfStream","fetchUrl","notice","i18n","request","response","appendBuffer","get","fetch","arrayBuffer","validControl","control","disable","position","index","Danmu","Fullscreen","Pip","PlayAndPause","Progress","isDroging","getLoaded","bind","getPlayed","getPos","set","player","ref","$loaded","$played","$highlight","$thumbnails","$indicator","$tip","item","left","Number","text","display","path","showHighlight","showTime","showThumbnails","target","seek","document","classList","add","remove","dataset","clientWidth","width","tipWidth","posWidth","height","number","backgroundImage","perWidth","ceil","backgroundPosition","getBoundingClientRect","x","buffered","length","end","Subtitle","Time","Volume","Setting","id","Controls","$map","top","right","mount","tooltip","$control","createElement","setAttribute","commonMethod","sort","controlIndex","defineProperty","value","menus","log","Contextmenu","click","info","link","preventDefault","isFocus","$contextmenu","creatMenu","setPos","$menu","href","mouseX","clientX","mouseY","clientY","cHeight","cWidth","cLeft","cTop","mHeight","mWidth","menuLeft","menuTop","Info","$track","default","kind","textTracks","track","activeCues","cue","template","getCueAsHTML","Events","callback","addEventListener","destroy","removeEventListener","Hotkey","window","tag","activeElement","tagName","toUpperCase","editable","getAttribute","keyCode","toggle","Layers","$layer","zIndex","html","icons","creatDomFromSvg","result","tmp","childNodes","Loading","Notice","timer","autoHide","clearTimeout","setTimeout","Mask","playClone","cloneNode","backgroundColor","instances","Artplayer","assign","DEFAULTS","danmu","splice","plugin","installedPlugins","plugins","args","from","arguments","slice","unshift","install","apply","navigator","Emitter"],"mappings":"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"} \ No newline at end of file diff --git a/src/controls/progress.js b/src/controls/progress.js index ddcd31d51..5d2c9a3f7 100644 --- a/src/controls/progress.js +++ b/src/controls/progress.js @@ -27,7 +27,7 @@ export default class Progress {
-
+
@@ -37,9 +37,7 @@ export default class Progress { this.$loaded = this.option.ref.querySelector('.art-progress-loaded'); this.$played = this.option.ref.querySelector('.art-progress-played'); this.$highlight = this.option.ref.querySelector('.art-progress-highlight'); - this.$screenshot = this.option.ref.querySelector( - '.art-progress-screenshot' - ); + this.$thumbnails = this.option.ref.querySelector('.art-progress-thumbnails'); this.$indicator = this.option.ref.querySelector('.art-progress-indicator'); this.$tip = this.option.ref.querySelector('.art-progress-tip'); @@ -73,10 +71,18 @@ export default class Progress { } else { this.showTime(event); } + + if (this.art.option.thumbnails.url) { + this.$thumbnails.style.display = 'block'; + this.showThumbnails(event); + } }); proxy(this.option.ref, 'mouseout', () => { this.$tip.style.display = 'none'; + if (this.art.option.thumbnails.url) { + this.$thumbnails.style.display = 'none'; + } }); proxy(this.option.ref, 'click', event => { @@ -121,18 +127,35 @@ export default class Progress { showTime(event) { const { width, time } = this.getPos(event); + const tipWidth = this.$tip.clientWidth; this.$tip.innerHTML = time; - if (width <= 20) { + if (width <= tipWidth / 2) { this.$tip.style.left = 0; - } else if (width > this.option.ref.clientWidth - 20) { - this.$tip.style.left = `${this.option.ref.clientWidth - 40}px`; + } else if (width > this.option.ref.clientWidth - tipWidth / 2) { + this.$tip.style.left = `${this.option.ref.clientWidth - tipWidth}px`; } else { - this.$tip.style.left = `${width - 20}px`; + this.$tip.style.left = `${width - tipWidth / 2}px`; } } - showScreenshot() { - // + showThumbnails(event) { + const { width: posWidth } = this.getPos(event); + const { url, height, width, number } = this.art.option.thumbnails; + this.$thumbnails.style.backgroundImage = `url(${url})`; + this.$thumbnails.style.height = `${height}px`; + this.$thumbnails.style.width = `${width}px`; + + if (posWidth <= width / 2) { + this.$thumbnails.style.left = 0; + } else if (posWidth > this.option.ref.clientWidth - width / 2) { + this.$thumbnails.style.left = `${this.option.ref.clientWidth - width}px`; + } else { + this.$thumbnails.style.left = `${posWidth - width / 2}px`; + } + + const perWidth = this.option.ref.clientWidth / number; + const index = Math.ceil(posWidth / perWidth); + this.$thumbnails.style.backgroundPosition = `-${index * width}px 0`; } getPos(event) { diff --git a/src/index.js b/src/index.js index f979cc669..f38fa7980 100644 --- a/src/index.js +++ b/src/index.js @@ -45,6 +45,12 @@ class Artplayer extends Emitter { container: '.artplayer', url: '', poster: '', + thumbnails: { + url: '', + number: 100, + width: 160, + height: 90 + }, volume: 0.7, autoplay: false, preload: 'auto', diff --git a/src/style/index.scss b/src/style/index.scss index d311c232f..c248c46a4 100644 --- a/src/style/index.scss +++ b/src/style/index.scss @@ -171,6 +171,16 @@ border-radius: 3px; } } + + .art-progress-thumbnails { + // display: none; + position: absolute; + z-index: 50; + top: -95px; + left: 0; + pointer-events: none; + background-color: rgba(0,0,0,.7); + } .art-progress-indicator { display: none; diff --git a/src/verification/player.js b/src/verification/player.js index d9c312ee8..8d8dd59e9 100644 --- a/src/verification/player.js +++ b/src/verification/player.js @@ -26,6 +26,11 @@ export default function validOption(option) { `'poster' option require 'string' type, but got '${typeof option.poster}'.` ); + errorHandle( + Object.prototype.toString.call(option.thumbnails) === '[object Object]', + `'thumbnails' option require 'object' type, but got '${typeof option.thumbnails}'.` + ); + errorHandle( typeof option.volume === 'number', `'volume' option require 'number' type, but got '${typeof option.volume}'.`